私は、余分なデータと一緒に使用できるPythonでTerm Document Matrixを構築する効果的な方法を探しています。Pythonのテキスト処理:NLTKとpandas
いくつかの属性を持つテキストデータがあります。私はテキストを分析したいと思います。テキストから抽出したフィーチャ(個々の単語トークンやLDAトピックなど)を他の属性と関連付けることができます。
私の計画は、パンダのデータフレームとしてデータをロードし、各応答はドキュメントを表します。残念ながら、私はこの問題に遭遇した:両方のケースでは、テキストは、このような方法で処理されたことを
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
注意をそのスペース、文字だけのものと、。?! (簡単のために)削除されました。
pandasフィールドが文字列に変換されていることがわかるように、一致が少なくなり、文字列の長さも短くなります。
上記のコードを改善する方法はありますか?
また、str(x)
はコメントのうち1つの大きな文字列を作成し、[str(x) for x in txt_data.comment]
は単語の袋に分割できないリストオブジェクトを作成します。ドキュメントインデックスを保持するnltk.Text
オブジェクトを作成する最良の方法は何ですか?言い換えれば、私はTerm Document Matrix、TermDocumentMatrix()
と同等のRをtm
パッケージから作成する方法を探しています。
多くのありがとうございます。
あなたの質問は確かではありませんが、パターン、textblob、C&Cのようなライブラリ、あなたのために役立つかもしれないNLP用の他のライブラリがあります。他の人よりも自分自身の優位性。 – mid
ありがとう@mid、私はgensimを認識していますが、以前はtextblobについて聞いたことがありません。私はPythonの新機能です(私は通常Rで働いています)。パッケージがどれほど普及しているかを考えれば、NLTKで行き詰まっていることに本当に疑問を抱きます。 – IVR