In Situationen, in denen Sie eine in einem Pandas-Datenrahmen gespeicherte Spalte mit 1 Satz pro Zeile markieren möchten, verwenden die meisten Implementierungen auf SO die Methode apply
%Vor%Die NLTK-Dokumentation empfiehlt die Verwendung von pos_tag_sents () zur effizienten Kennzeichnung von mehr als ein Satz.
Gilt das für dieses Beispiel und wenn ja, wäre der Code so einfach wie das Ändern von pso_tag
in pos_tag_sents
oder bedeutet NLTK Textquellen von Absätzen
Wie in den Kommentaren erwähnt, versucht pos_tag_sents()
das Laden des Präzeptors jedes Mal zu reduzieren aber das Problem ist, wie man das macht und trotzdem eine Spalte in einem Pandas-Dataframe erzeugt?
Eingabe
%Vor%TL; DR
%Vor%In Lang:
Zuerst können Sie die Spalte Text
in eine Liste von Zeichenfolgen extrahieren:
Dann können Sie die Funktion word_tokenize
anwenden:
Beachten Sie, dass @ Bouds Vorschlag mit df.apply
fast identisch ist:
Dann legen Sie den in Token geschriebenen Text in eine Liste der String-Liste:
%Vor% Dann können Sie pos_tag_sents
:
Dann fügen Sie die Spalte zurück zum DataFrame:
%Vor% Durch Anwenden von pos_tag
auf jede Zeile wird das Perceptron-Modell jedes Mal geladen (kostspieliger Vorgang, da es eine Beize von der Platte liest).
Wenn Sie stattdessen alle Zeilen erhalten und sie an pos_tag_sents
senden (was list(list(str))
benötigt), wird das Modell einmal geladen und für alle verwendet.
Siehe die Quelle .
Tags und Links python python-3.x nltk pandas pos-tagger