SoMeWeTa icon indicating copy to clipboard operation
SoMeWeTa copied to clipboard

Normalisierung der Tokens vor dem Taggen

Open AndreasBlombach opened this issue 4 years ago • 1 comments

Insbesondere in Daten aus sozialen Medien findet man häufig Wörter und ganze Sätze, die allein über Unicode-Zeichen in einer anderen Schriftart oder einem anderen Schriftstil dargestellt werden: 𝖋𝖗𝖊𝖎𝖍𝖊𝖎𝖙, 𝕴𝖒𝖕𝖋𝖆𝖚𝖘𝖜𝖊𝖎𝖘, 𝘔𝘢𝘴𝘬𝘦𝘯𝘱𝘧𝘭𝘪𝘤𝘩𝘵 u.ä.

SoMeWeTa taggt diese Tokens i.d.R. nicht korrekt, was sich vmtl. mit NKFC-Normalisierung ändern ließe:

import unicodedata unicodedata.normalize("NFKC", "𝕴𝖒𝖕𝖋𝖆𝖚𝖘𝖜𝖊𝖎𝖘") Out[2]: 'Impfausweis'

Da Kompatibilitätsäquivalenz leider nicht bloß solche Fälle betrifft, sollte das wahrscheinlich optional sein.

AndreasBlombach avatar Jul 22 '21 18:07 AndreasBlombach

Der Konstruktor hat jetzt die Option use_nfkc und die Kommandozeilenschnittstelle die Option --use-nfkc. Damit wird der Input für die interne Repräsentation nach NFKC normalisiert. Für die Ausgabe werden die originalen Eingabetokens verwendet, d.h. „𝕴𝖒𝖕𝖋𝖆𝖚𝖘𝖜𝖊𝖎𝖘“ wird intern zu „Impfausweis“, aber in der Ausgabe steht nach wie vor „𝕴𝖒𝖕𝖋𝖆𝖚𝖘𝖜𝖊𝖎𝖘“.

Theoretisch kann das die Performance von Modellen, die auf nicht-NFKC-normalisiertem Input trainiert wurden, negativ beeinflussen. Für die deutschen Modelle sollte das aber kein Problem sein. Die einzigen beiden Zeichen in den Trainingsdaten, bei denen das eine Rolle spielen würde, sind „…“ und „´“, wobei „…“ zu drei Punkten normalisiert wird („...“), was ebenfalls in den Trainingsdaten vorkommt.

tsproisl avatar Aug 03 '21 07:08 tsproisl