计算原始文件中的词频并映射它们

Posted

技术标签:

【中文标题】计算原始文件中的词频并映射它们【英文标题】:Counting word frequency in original file and mapping them 【发布时间】:2021-10-20 06:26:54 【问题描述】:

我正在尝试使用计数矢量化器的修改版本来适应系列。 然后我得到单元格中所有值的总和。 例如:这是我正在拟合计数矢量化器的系列。

["dog cat mouse", " cat mouse", "mouse mouse cat"]

最终结果应该类似于:

[1+3+4, 3+4, 4+4+3]

我尝试过使用Counter,但在这种情况下它并没有真正起作用。 到目前为止,我只成功地获得了一个稀疏矩阵,但这会打印出单元格中的元素总数。但是我想将计数映射到整个系列。

【问题讨论】:

【参考方案1】:

计数器列表的项只能以字符串的形式存储,以后可以使用eval()对字符串进行求值

代码:

lst = ["dog cat mouse", " cat mouse", "mouse mouse cat"]
res = 
res2 = []
for i in lst:
    for j in i.split(' '):
        if j not in res.keys():
            res[j] = 1
        else:
            res[j] += 1

for i in lst:
    res2.append('+'.join([str(res[j]) for j in i.split(' ')]))

print(res2)

结果 (res2) 应该类似于 ['1+3+4', '3+4', '4+4+3']

我想这就是你想要的......

【讨论】:

我猜OP希望每个单词的出现而不是每个单词的长度。 我编辑了代码,现在检查它是否适合你 谢谢。我最终使用了此代码的修改版本。我最终没有定义新字典,而是使用了cv.vocabulary_。其余代码与您的相同。【参考方案2】:

另一个提议,Counter:

from collections import Counter

strings = ["dog cat mouse", " cat mouse", "mouse mouse cat"]
words_lists = [string.split() for string in strings]
counts = Counter([word for lst in words_lists for word in lst])
result = [sum(counts[word] for word in lst) for lst in words_lists]

结果:

counts: Counter('mouse': 4, 'cat': 3, 'dog': 1)
result: [8, 7, 11]

【讨论】:

以上是关于计算原始文件中的词频并映射它们的主要内容,如果未能解决你的问题,请参考以下文章

个人作业——词频统计

201671010432词频统计软件项目报告

07 Spark RDD编程 综合实例 英文词频统计

如何从表列计算词频 GoogleSQL Bigquery

如何用python和jieba分词,统计词频?

python bs4怎么抓豆瓣评论做词频表