计算原始文件中的词频并映射它们
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]
【讨论】:
以上是关于计算原始文件中的词频并映射它们的主要内容,如果未能解决你的问题,请参考以下文章