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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage