Ich habe das NER-System unter Verwendung des CRF-Algorithmus mit meinen handgefertigten Funktionen implementiert, die ziemlich gute Ergebnisse lieferten. Die Sache ist, dass ich viele verschiedene Funktionen verwendet habe, einschließlich POS-Tags und Lemmas.
Jetzt möchte ich das gleiche NER für verschiedene Sprachen erstellen. Das Problem hier ist, dass ich keine POS-Tags und Lemmas verwenden kann. Ich fing an, Artikel über Deep Learning und unbeaufsichtigtes Feature-Learning zu lesen.
Meine Frage ist:
Ist es möglich, Methoden für unbeaufsichtigtes Lernen von Funktionen mit dem CRF-Algorithmus zu verwenden? Hat jemand dies versucht und ein gutes Ergebnis erzielt? Gibt es einen Artikel oder ein Tutorial zu diesem Thema?
Ich verstehe diese Art der Feature-Erstellung immer noch nicht vollständig, daher möchte ich nicht zu viel Zeit für etwas aufwenden, das nicht funktioniert. Jede Information wäre also wirklich hilfreich. Ein ganzes NER-System basierend auf Deep Learning zu erstellen, ist vorerst etwas zu viel.
quelle
In diesem 2014 erschienenen Artikel ( GitHub ) verglichen die Autoren mehrere Strategien zur Integration von Worteinbettungen in ein CRF-basiertes NER-System, einschließlich dichter Einbettung, binerisierter Einbettung, Cluster-Einbettung und einer neuartigen Prototypmethode . Die direkte Verwendung dichter Vektoren, wie von vlad vorgeschlagen, ist der einfachste Weg, aber auch der am wenigsten wirksame bei Mehrfachauswertungen.
Ich habe die Prototyp-Idee in meinem domänenspezifischen NER-Projekt implementiert und sie funktioniert für mich ziemlich gut.
quelle
Ich bin nur 5 Monate zu spät, aber mit CRFSuite können Sie diese Float-Funktionen tatsächlich als Zahlen und nicht als Zeichenfolgen verwenden. Dazu müssen Sie nur eine eindeutige Beschriftung für jede Dimension erfinden und dann ein ":" gefolgt vom Wert hinzufügen.
Zum Beispiel wird ein Wort "Dschungel" in 5 Dimensionen dargestellt: 0,1 0,4 0,8 0,2 0,9
Dann würde CRFSuite dieses Wort + Feature wie folgt annehmen:
ETIKETT f1: 0,1 f2: 0,4 f3: 0,8 f4: 0,2 f5: 0,9
Dabei ersetzen Sie natürlich "LABEL" durch eine tatsächliche Zeichenfolge und trennen alle Leerzeichen durch Tabulatoren (das ist das Format für CRFSuite).
Ich bin mir jedoch nicht sicher für andere Pakete.
quelle