繁体   English   中英

从大型语料库创建 DTM

[英]Create a DTM from large corpus

我有一组包含在列表中的文本,我是从 csv 文件加载的

texts=['this is text1', 'this would be text2', 'here we have text3']

我想通过使用词干来创建一个文档术语矩阵。 我还阻止了他们:

[['text1'], ['would', 'text2'], ['text3']]

我想要做的是创建一个计算所有词干的 DTM(然后我需要对行进行一些操作)。

对于涉及非词干文本的内容,我可以使用此处报告的函数 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 上的词干文本,但它没有正确编码。 对于大量数据,我可能需要处理 DataFrames。 你会给我什么建议?

- - - 更新

使用 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())

你为什么不使用sklearn CountVectorizer()方法将文本文档集合转换为标记计数矩阵 更重要的是,它使用scipy给出了计数的稀疏表示。

您可以将原始条目提供给该方法,也可以按照您的方式对其进行预处理(词干提取 + 停用词)。

看看这个: CountVectorizer()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM