【发布时间】:2016-10-09 00:43:33
【问题描述】:
我有一组包含在列表中的文本,我从 csv 文件中加载了这些文本
texts=['this is text1', 'this would be text2', 'here we have text3']
我想通过使用词干创建一个文档术语矩阵。 我还阻止了他们:
[['text1'], ['would', 'text2'], ['text3']]
我想做的是创建一个计算所有词干的 DTM(然后我需要对行进行一些操作)。
对于未提取文本的问题,我可以使用报告here 的函数 fn_tdm_df 为短文本制作 DTM。 不过,对我来说更实用的是制作词干的 DTM。为了更清楚,我应用“fn_tdm_df”的输出:
be have here is text1 text2 text3 this we would
0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1 1.0 1.0
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1 0.0 0.0
首先,我不知道为什么我只有两行,而不是三行。其次,我想要的输出是这样的:
text1 would text2 text3
0 1 0 0 0
1 0 1 1 0
2 0 0 0 1
我很抱歉,但我对这个输出真的很绝望。我还尝试在 R 上导出和重新导入词干文本,但它没有正确编码。对于大量数据,我可能需要处理 DataFrame。你有什么建议?
----- 更新
使用 CountVectorizer 我并不完全满意,因为我没有得到一个易于处理的矩阵,我可以在其中轻松地对行/列进行归一化和求和。
这是我正在使用的代码,但它阻塞了 Python(数据集太大)。如何高效运行?
vect = CountVectorizer(min_df=0., max_df=1.0)
X = vect.fit_transform(texts)
print(pd.DataFrame(X.A, columns=vect.get_feature_names()).to_string())
df = pd.DataFrame(X.toarray().transpose(), index = vect.get_feature_names())
【问题讨论】:
标签: python pandas scikit-learn nltk