gpt4 book ai didi

python - 使用Python将字数统计文件转换为稀疏矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:17 24 4
gpt4 key购买 nike

我有一系列文件,每个文件都包含字数。每个文件可以有不同的词。这是一个例子:

文件A

word1,20
word2,10
word3,2

文件B:

word1,10
word4,50
word3,5

大约有 20k 个文件,每个文件可能有数万个单词。

我最终想构建一个稀疏矩阵,其中每一行代表一个文件的单词分布,就像您从 scikit's CountVectorizer 中得到的一样.

如果 word1、word2、word3、word4 是列,而 FileA 和 FileB 是行,那么我希望得到:

[[20,10,2,0],[10,0,5,50]]

我怎样才能做到这一点?如果可能的话,我还希望能够只包含出现在至少 N 个文件中的单词。

最佳答案

您可以使用一些词典将单词映射到它们出现的频率,并将文件名映射到这些文件中的单词计数。

files = ["file1", "file2"]
all_words = collections.defaultdict(int)
all_files = collections.defaultdict(dict)

for filename in files:
with open(filename) as f:
for line in f:
word, count = line.split(",")
all_files[filename][word] = int(count)
all_words[word] += 1

然后您可以使用嵌套列表理解中的那些来创建稀疏矩阵:

>>> [[all_files[f].get(w, 0) for w in sorted(all_words)] for f in files]
[[20, 10, 2, 0], [10, 0, 5, 50]]

或者按最小字数过滤:

>>> [[all_files[f].get(w, 0) for w in sorted(all_words) if all_words[w] > 1] for f in files]
[[20, 2], [10, 5]]

关于python - 使用Python将字数统计文件转换为稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29633423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com