Python-Textverarbeitung: NLTK und Pandas
Ich suche nach einer effektiven Möglichkeit, eine Term Document Matrix in Python zu erstellen, die zusammen mit zusätzlichen Daten verwendet werden kann.
Ich habe einige Textdaten mit einigen anderen Attributen. Ich möchte einige Analysen zum Text durchführen und aus dem Text extrahierte Features (wie einzelne Wort-Tokens oder LDA-Themen) mit den anderen Attributen korrelieren können.
Mein Plan war, die Daten als Pandadatenrahmen zu laden, und dann repräsentiert jede Antwort ein Dokument. Leider bin ich auf ein Problem gestoßen:
import pandas as pd
import nltk
pd.options.display.max_colwidth = 10000
txt_data = pd.read_csv("data_file.csv",sep="|")
txt = str(txt_data.comment)
len(txt)
Out[7]: 71581
txt = nltk.word_tokenize(txt)
txt = nltk.Text(txt)
txt.count("the")
Out[10]: 45
txt_lines = []
f = open("txt_lines_only.txt")
for line in f:
txt_lines.append(line)
txt = str(txt_lines)
len(txt)
Out[14]: 1668813
txt = nltk.word_tokenize(txt)
txt = nltk.Text(txt)
txt.count("the")
Out[17]: 10086
Beachten Sie, dass in beiden Fällen der Text so verarbeitet wurde, dass nur die Leerzeichen, Buchstaben und.?! wurde (der Einfachheit halber) entfernt.
Wie Sie sehen können, gibt ein in eine Zeichenfolge konvertiertes Pandas-Feld weniger Übereinstimmungen zurück und die Länge der Zeichenfolge ist auch kürzer.
Gibt es eine Möglichkeit, den obigen Code zu verbessern?
Ebenfalls,str(x)
erzeugt eine große Zeichenkette aus den Kommentaren, während[str(x) for x in txt_data.comment]
erstellt ein Listenobjekt, das nicht in mehrere Wörter aufgeteilt werden kann. Was ist der beste Weg, um ein @ zu produziernltk.Text
Objekt, das Dokumentindizes behält? Mit anderen Worten, ich suche nach einer Möglichkeit, eine Term Document Matrix zu erstellen, Rs Äquivalent zuTermDocumentMatrix()
vontm
package.
Danke vielmals