Multilingual NLTK für POS Tagging und Lemmatizer

8

Kürzlich habe ich mich an das NLP gewandt und versucht, NLTK und TextBlob zum Analysieren von Texten. Ich möchte eine App entwickeln, die Bewertungen von Reisenden analysiert und so viele Texte in verschiedenen Sprachen verwalten muss. Ich muss zwei Hauptoperationen durchführen: POS Tagging und Lemmatisierung. Ich habe gesehen, dass es in NLTK eine Möglichkeit gibt, die richtige Sprache für Satz-Tokenisierung wie folgt zu wählen:

%Vor%

Ich habe noch nicht den richtigen Weg gefunden, die Sprache für POS-Tagging und Lemmatisierer in verschiedenen Sprachen zu setzen. Wie kann ich die korrekten Korpora / Wörterbücher für nicht-englische Texte wie Italienisch, Französisch, Spanisch oder Deutsch einstellen? Ich sehe auch, dass es eine Möglichkeit gibt, die Module "TreeBank" oder "WordNet" zu importieren, aber ich verstehe nicht, wie ich sie benutzen kann. Wo finde ich sonst die Korpora?

Können Sie mir einen Vorschlag oder eine Referenz geben? Bitte achten Sie darauf, dass ich kein Experte von NLTK bin.

Vielen Dank.

    
Alessio Schiavelli 23.09.2015, 13:29
quelle

2 Antworten

4

Es gibt keine Option, die Sie an die POSTagging- und Lemmatizierungsfunktionen von NLTK übergeben können, um andere Sprachen zu verarbeiten.

Eine Lösung wäre, ein Trainingskorpus für jede Sprache zu bekommen und Ihre eigenen POS-Tagger mit NLTK zu trainieren, und dann eine Lemmatisierungslösung, vielleicht diktionär, für jede Sprache zu finden.

Das könnte aber zu viel werden, da es für beide Aufgaben bereits eine Lösung auf Italienisch, Französisch, Spanisch und Deutsch (und viele andere Sprachen) gibt: TreeTagger . Es ist nicht so State-of-the-Art wie die POS-Tagger und Lemmatizer in Englisch, aber es macht immer noch einen guten Job.

Sie möchten TreeTagger auf Ihrem System installieren und es von Python aus aufrufen können. Hier ist ein GitHub-Repo von miotto , mit dem du genau das machen kannst.

Das folgende Snippet zeigt Ihnen, wie Sie testen, ob Sie alles richtig eingerichtet haben. Wie Sie sehen können, bin ich in der Lage, in einem Funktionsaufruf POS-taggen und lemmatizieren, und ich kann es genauso leicht in Englisch und Französisch machen.

%Vor%

Da diese Frage sehr oft gestellt wird (und da der Installationsprozess nicht gerade unkompliziert ist, IMO), werde ich einen Blogbeitrag schreiben und diese Antwort mit einem Link aktualisieren, sobald es fertig ist .

BEARBEITEN: Hier ist die oben genannten Blogpost.

    
HugoMailhot 06.10.2015 20:15
quelle
4

Wenn Sie nach einem anderen mehrsprachigen POS-Tagger suchen, sollten Sie RDRPOSTagger ausprobieren: ein robustes, einfach zu bedienendes und Sprachunabhängiges Toolkit für POS und morphologisches Tagging. In diesem Dokument finden Sie die experimentellen Ergebnisse, einschließlich der Leistungsgeschwindigkeit und der Genauigkeit der Tagging-Funktion in 13 Sprachen. RDRPOSTagger unterstützt jetzt vortrainierte POS- und morphologische Tagging-Modelle für Bulgarisch, Tschechisch, Niederländisch, Englisch, Französisch, Deutsch, Hindi, Italienisch, Portugiesisch, Spanisch, Schwedisch, Thai und Vietnamesisch. RDRPOSTagger unterstützt auch die vortrainierten Universal POS-Tagging-Modelle für 40 Sprachen.

In Python können Sie die vortrainierten Modelle zum Markieren eines unmarkierten Rohtextkorpus verwenden:

python RDRPOSTagger.py tag PATH-TO-PRETRAINED-MODEL PATH-TO-LEXICON PATH-TO-RAW-TEXT-CORPUS

Beispiel: python RDRPOSTagger.py tag ../Models/POS/German.RDR ../Models/POS/German.DICT ../data/GermanRawTest

Wenn Sie mit RDRPOSTagger programmieren möchten, folgen Sie den Codezeilen 92-98 in RDRPOSTagger.py module in pSCRDRTagger package. Hier ist ein Beispiel:

%Vor%     
NQD 22.11.2015 04:01
quelle