Ich habe eine TXT-Datei von einem dänischen WordNet. Gibt es eine Möglichkeit, dies mit einer NLP-Bibliothek für Python wie NLTK zu verwenden? Wenn nicht, wie könnten Sie in einer Sprache, die von einer bestimmten Bibliothek nicht unterstützt wird, in natürlicher Sprache arbeiten? Sagen Sie auch, dass Sie die Erkennung von benannten Entitäten in einer anderen Sprache als Englisch oder Niederländisch in einer Bibliothek wie SpaCy durchführen möchten. Gibt es eine Möglichkeit, dies zu tun?Ist es möglich, ein eigenes WordNet zu einer Bibliothek hinzuzufügen?
Antwort
Gibt es eine Möglichkeit, dies mit einer NLP-Bibliothek für Python wie NLTK zu verwenden?
Sie können dies mit NLTK tun, obwohl es ein wenig peinlich ist.
Sie müssen Ihren WordNet-Korpus in das Format Open Multilingual Wordnet konvertieren, das ein einfaches tabulatorgetrenntes Format ist. Beachten Sie, dass sie bereits ein dänisches WordNet haben.
Dann sollten Sie die WordNet und Open Multilingual Wordnet Korpora in NLTK installieren, wenn Sie dies noch nicht getan haben. Dadurch wird ein Verzeichnis wie ~/nltk_data/corpora/omw/
mit einem Unterverzeichnis für jede Sprachdatei erstellt. Sie müssen Ihre corpus hinzufügen, indem Sie ein Verzeichnis für das Erstellen und die Dateien wie folgt zu benennen:
~/nltk_data/corpora/omw/xxx/wn-data-xxx.tab
xxx
kann alles sein, aber es müssen gleich in beiden Orten sein. Dieses Dateinamensmuster ist fest in NLTK here codiert.
Danach können Sie Ihr WordNet verwenden, indem Sie xxx
als lang
Parameter angeben. Hier ist ein Beispiel from the documentation:
>>> wn.synset('dog.n.01').lemma_names('ita') # change 'ita' to 'xxx'
['cane', 'Canis_familiaris']
Wie können Sie die Verarbeitung gehen über die natürliche Sprache in einer Sprache, die nicht von einer bestimmten Bibliothek unterstützt wird?
Ich habe dies häufig mit Japanisch gemacht.
Einige Techniken schauen in Ihre Tokens - das heißt, sie überprüfen, ob ein Wort wörtlich "sagen" oder "sein" oder so ähnlich ist. Dies ist üblich bei Stemmern und Lemmatizern aus offensichtlichen Gründen. Einige Systeme verwenden Regeln basierend auf Annahmen darüber, wie Teile der Sprache in einer bestimmten Sprache interagieren (in der Regel Englisch). Sie möglicherweise in der Lage, diese Erwartungen in Ihre Sprache zu übersetzen, aber in der Regel Sie können einfach nicht diese verwenden.
Allerdings schauen viele nützliche Techniken nicht in Ihre Token überhaupt - sie egal, ob zwei Tokens gleich sind oder nicht. Diese basieren normalerweise hauptsächlich auf Features wie Labels oder Kollokationsdaten. Sie müssen möglicherweise Ihre Daten vor-Tokenizing, und Sie möchten vielleicht ein generisches Sprachmodell auf Wikipedia in der Sprache trainieren, aber das ist es. Wortvektoren, NER, Dokumentähnlichkeit sind Beispiele Probleme, bei denen die mangelnde Sprachunterstützung normalerweise kein Problem ist.
Auch sagen Sie möchten Sie benannte Entity-Erkennung in einer anderen Sprache als Englisch oder Niederländisch in einer Bibliothek wie SpaCy tun. Gibt es eine Möglichkeit, dies zu tun?
SpaCy bietet eine custom labelling für NER.Verwenden Sie es mit einer ansonsten nicht unterstützten Sprache ist nicht dokumentiert und wäre ein bisschen schwierig. Da Sie jedoch kein vollständiges Sprachmodell für NER benötigen, können Sie ein NER spezifisches Tool mit beschrifteten Beispielen verwenden.
Hier einige Beispiele Trainingsdaten für CRF++ basierend auf das CoNLL Format:
He PRP B-NP
reckons VBZ B-VP
the DT B-NP
current JJ I-NP
account NN I-NP
deficit NN I-NP
will MD B-VP
narrow VB I-VP
to TO B-PP
only RB B-NP
# # I-NP
1.8 CD I-NP
billion CD I-NP
in IN B-PP
September NNP B-NP
. . O
He PRP B-NP
reckons VBZ B-VP
..
Diese Art von Format, das von mehreren CRF oder anderen NER-Tool unterstützt wird. CRFSuite ist eins mit Python wrapper.
Für diese Art von Daten interessiert sich der Algorithmus nicht wirklich dafür, was in der ersten Spalte steht. Daher ist die Sprachunterstützung kein Problem.
Hoffe, dass hilft!
- 1. Ist es möglich, Wordnet Lemmizer zu beschleunigen?
- 2. Ist es möglich, ein eigenes benutzerdefiniertes Gebietsschema zu erstellen
- 3. Ist es möglich, ein Text-Overlay hinzuzufügen?
- 4. Ist es möglich, ein Benutzersteuerelement zu einem Composite-Steuerelement hinzuzufügen?
- 5. Ist es möglich, Terraform Code hinzuzufügen
- 6. Ist es möglich, Beobachter zu TableView.contentOffset hinzuzufügen?
- 7. Ist es möglich, PostGIS zu PipelineDB hinzuzufügen?
- 8. Ist es möglich, ein benutzerdefiniertes Icon zu hta hinzuzufügen
- 9. Ist es möglich, ein benutzerdefiniertes Suchfeld zu Google Kontakte hinzuzufügen?
- 10. Ist es möglich, zu einer vorhandenen Doctrine Query hinzuzufügen?
- 11. Ist es möglich, Kommentare zu einer csproj-Datei hinzuzufügen?
- 12. Ist es möglich, einen OnClick Listener zu einer QCheckBox hinzuzufügen?
- 13. Ist es möglich, eine Schaltfläche zu einer Bildlaufansicht hinzuzufügen?
- 14. Ist es möglich, einen C++ - Namespace zu allen Symbolen aus einer C-Bibliothek hinzuzufügen?
- 15. Ist es möglich, ein BLOB Wide Memo-Feld mithilfe einer Abfrage zu einer nexusdb-Tabelle hinzuzufügen?
- 16. Ist es möglich, einen Systemaufruf über ein LKM hinzuzufügen?
- 17. Ist es möglich, Inhaltselemente Klassen hinzuzufügen?
- 18. Ist es möglich, einer Eigenschaft der dynamischen Objektlaufzeit Attribute hinzuzufügen?
- 19. Ist es möglich, Abhängigkeiten in einer pom.xml-Datei hinzuzufügen?
- 20. Ist es möglich, Request Header einer iframe src Anfrage hinzuzufügen?
- 21. Ist es möglich, einem Stil ein benutzerdefiniertes Rechtschreibwörterbuch hinzuzufügen?
- 22. Ist es möglich, CMFCToolBar einem Dialog hinzuzufügen?
- 23. Ist es möglich, mehrere SetExpressions innerhalb einer IF-Anweisung hinzuzufügen?
- 24. Ist es möglich, ein View-Modell auf _layout.cshtml hinzuzufügen?
- 25. Ist es möglich, einer ServiceStack Redis-Nachricht benutzerdefinierte Header hinzuzufügen?
- 26. Es ist möglich, eine importierte Bibliothek zu target_link_libraries hinzuzufügen, die sich auch um Include-Verzeichnisse kümmert?
- 27. Ist es möglich, ein Symbol in den Bootstrap-Navigationsregisterkarten hinzuzufügen?
- 28. Ist es möglich, Pixel zu einem 'Auto'-Wert hinzuzufügen?
- 29. ist es möglich, einer Struktur eine Liste hinzuzufügen?
- 30. Ist es möglich, Flags standardmäßig zu Docker hinzuzufügen run
Kurze Antwort: Sie können nicht. Eine API unterstützt nur das, was sie unterstützt (und das ist einer der größten Nachteile von spaCy). Die lange Antwort ist, wenn Sie wirklich wissen, was Sie tun, könnten Sie möglicherweise die Quelle selbst bearbeiten. – spicypumpkin
@Posh_Pumpkin, das ist nicht korrekt. Es ist möglich, die API zu erweitern, da es sich um ein Open Source-Projekt handelt, siehe https://github.com/nltk/nltk/pull/1621. Sogar für "spacy" glaube ich @honnibal und @ines ermutigen Beiträge: https://github.com/explosion/spaCy/blob/master/CONTRIBUTING.md – alvas
@alvas Nun, ja. Zählt das nicht als Bearbeiten der Quelle? Ich bin mir ziemlich sicher, dass das nicht genau das ist, was das OP will. – spicypumpkin