Aufteilung in Sentences nach Satzzeichen auch innerhalb von Entities?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufteilung in Sentences nach Satzzeichen auch innerhalb von Entities?
Hallo, ein weiteres Problem das mir in der Abschlussphase meines Berichts aufgefallen ist: die Aufteilung in sentences nach Satzzeichen (z.B. “.”, aber auch andere Symbole) trennt manchmal auch innerhalb einer multi-token-entity. Ich gehe davon aus, dass flair diese entity dann nicht mehr erkennen kann. (Ist das korrekt?) Außerdem vermute ich, dass der Zweck eines sentence vermutlich darin besteht, das Ende eines Kontexts darzustellen, und eine sentence border innerhalb einer entity deshalb ebenfalls schlecht ist. (Weiß das jemand genauer? Ich habe leider nichts konkretes zum Daseinszweck von Sentences in flair finden können.) Deshalb habe ich die Aufteilung innerhalb einer entity verhindert.

Im Nachhinein kam dir man dann aber die Frage, ob damit nicht das Modell lernen könnte, dass Satzzeichen innerhalb eines sentence ein klarer Hinweis auf eine entity sind? D.h. ich würde damit teilweise dem Modell Informationen aus dem gold standard verraten.

Welche Alternativen gäbe es denn sonst? Oder sollte man lieber die Zerteilung mancher multi-token-entities auf 2 sentences hinnehmen?

EDIT: betrifft nur sehr wenige entities → Problem wenig relevant


Das Problem mit diesen sentences und den neuen Zeilen ist die Reihenfolge deiner Implementierung…
Wenn du die biluo/bliou Daten in [m]bilou_for_flair(…)[/m] vorbereitest, solltest du die leeren Zeilen erst NACH der Umwandlung in einen (CSV-)String einfügen. Wenn du nämlich hingegen die Tokens in dem dataframe veränderst und danach erst in einen (CSV-)String umwandelst, dann wird dein ‘.NEUE-ZEILE’ bei der Umwandlung escapet mittels Anführungsstriche. Somit hast du dann keinen neuen sentence in der Datei, sondern einfach einen Token der hinten noch ein [m]newline[/m] enthält.

Sieht dann vermutlich z.B. so aus:

".
" O

Bzw. so wenn du die Predicted-Spalte beibehälst:

".
" O O

Nee, das war schon passend implementiert. Ich habe da einer Hilfsfunktion zum CSV-Export eines Dataframes einen StringIO Buffer als Filehandle / file-like object übergeben und dort mittels write() reingeschrieben, und im Falle eines Satzzeichens noch einen weiteren Zeilenumbruch hinterhergeschrieben.