我不知道该如何解决这个问题。
我有3个带有单词,标签和出现在文档上的数字的列表:
v1 = [['be', 'VSIS3S0', 1], ['scott', 'NP00000', 2], ['north', 'NCMS000', 1], ['revolution', 'NP00000', 1], ['name', 'VMP00SM', 1]]
v2 = [['mechanic', 'NCMS000', 1], ['be', 'VSIS3S0', 1], ['tool', 'AQ0CS0', 1], ['sam', 'NP00000', 1], ['frida', 'NP00000', 1]]
v3 = [['be', 'VSIP3S0', 1], ['scott', 'NP00000', 1], ['who', 'NP00000', 1]]
我如何构建一个接收这些列表的功能,将每个单词进行比较,例如,单词be
inv1
在三个列表中出现一次,在这种情况下,将其附加到结果列表中(1 * log(3/3))
,其中1->出现的最大值(即子列表的第三元件),日志分子3 - >恒定,日志分母3 - >因为这个词出现在v1
,v2
和v3
。
接下来,我们有scott
->在这种情况下,在结果列表上追加(2 * log(3/2))
2->单词的最大出现值,对数分子3->常数,对数分母2->因为单词'scott'出现在v1
和上v2
。
接下来,我们有north
->在这种情况下,在结果列表上附加(1 * log(3/1))
1->单词的最大出现值,对数分子3->常数,对数分母1->,因为仅出现单词'north' v1
。
接下来,我们有revolution
->在这种情况下,在结果列表上附加(1 * log(3/1))
1->单词的最大出现值,对数分子3->常数,对数分母1->,因为仅出现单词'north' v1
。
接下来,我们有name
->在这种情况下,在结果列表上追加(1 * log(3/1))
1->单词的最大出现值,对数分子3->常数,对数分母1->因为单词'name'仅出现v1
。
此外,我们必须做同样的v2
比较mechanic
,be
,tool
等用的。换句话说,计算出现的最大值和multuplying它w/ log(3/?)
取决于如果词出现或不v1
和v3
。
这是我的尝试v1
:
def f1(v1, v2, v3):
res =[]
for e in v1:
if e != 0:
if e in v2 and e in v3:
res.append(0)
elif e in v2:
res.append(e * math.log(3/2))
else:
res.append(e * math.log(3))
return res
返回: [0, 2.1972245773362196, 0, 0, 0, 0]
这显然不是结果
它应该返回如下内容:
[['be', 0.47], ['scott', 0.35 ], ['north', 0.47], ['revolution', 0.47], ['north', 0.47]]
根据您的描述,我得到了
import math
v1 = [['be', 'VSIS3S0', 1], ['scott', 'NP00000', 2], ['north', 'NCMS000', 1], ['revolution', 'NP00000', 1], ['name', 'VMP00SM', 1]]
v2 = [['mechanic', 'NCMS000', 1], ['be', 'VSIS3S0', 1], ['tool', 'AQ0CS0', 1], ['sam', 'NP00000', 1], ['frida', 'NP00000', 1]]
v3 = [['be', 'VSIP3S0', 1], ['scott', 'NP00000', 1], ['who', 'NP00000', 1]]
v = [v1,v2,v3]
countdict = {}
for vi in v:
for e in vi:
countdict[e[0]] = countdict.get(e[0],0) + 1
scoredict = {}
for vi in v:
for e in vi:
scoredict[e[0]] = scoredict.get(e[0],0) + (e[2] * math.log10(3.0/countdict[e[0]]))
print scoredict
我将输出另存为dict,它是:
{'be': 0.0, 'revolution': 0.47712125471966244, 'north': 0.47712125471966244, 'name': 0.47712125471966244, 'sam': 0.47712125471966244, 'tool': 0.47712125471966244, 'who': 0.47712125471966244, 'scott': 0.5282737771670437, 'mechanic': 0.47712125471966244, 'frida': 0.47712125471966244}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句