我有一个目录中的文本文件列表。
我想创建一个矩阵,其中包含整个语料库中每个单词在每个文件中的频率。(语料库是目录中每个文件中的每个唯一单词。)
示例:
File 1 - "aaa", "xyz", "cccc", "dddd", "aaa"
File 2 - "abc", "aaa"
Corpus - "aaa", "abc", "cccc", "dddd", "xyz"
输出矩阵:
[[2, 0, 1, 1, 1],
[1, 1, 0, 0, 0]]
我的解决方案是使用
collections.Counter
统计每个文件中的单词数量,得到一个字典,然后初始化一个大小为n × m(n 是文件数,m 是语料库中唯一单词数)的列表。接下来,我再次遍历每个文件,查看对象中每个单词的频率,并将其填入每个列表中。有没有更好的方法来解决这个问题?也许可以在单次遍历中使用
collections.Counter
?
set()
而不是Counter()
。如果你只是想建立语料库,那么你不需要Counter
。无论如何,我强烈建议你考虑使用像scipy.sparse.csr_matrix
这样的稀疏矩阵实现。 - Igor Raush