我有两个python列表(nltk同义词集)。对于第一个列表中的每个项目,我想迭代第二个列表中的所有项目,并输出一个值,该值将方法应用于第一个列表,使用第二个列表的项目作为方法的参数。
示例:
l1 = [wn.synset('i.n.03'), wn.synset('need.v.03'), wn.synset('aid.n.01')]
l2 = [wn.synset('help.v.01'), wn.synset('girl.n.01')]
对于l1中的每个项目,我想计算l2中每个项目的相似性得分,得到一个3x2矩阵,其中包含每个可能的双向组合的相似性得分,其中包含来自l1的一个值和来自l2的一个值。
我可以按如下方式计算矩阵的第一行:
fwrd= l1[0]
frow= np.asfarray([fwrd.path_similarity(i) for i in l2])
导致frow的值为
array([ nan, 0.06666667])
此数组中的第一个值是wn.synset(' i.n.03')和wn.synset(' help.v.01')之间的相似度得分 第二个值是两者之间的相似度得分 wn.synset(' i.n.03')和wn.synset(' girl.n.01')
数组中的第二行将包含l1中第二项与l2中的两项之间的相似性分数等。
我尝试了一些笨拙的方法,没有任何运气。谢谢你的帮助。另外,我真的想了解代码解决方案的 方式,所以任何引用都会有所帮助。
答案 0 :(得分:0)
嵌套列表理解应该提供您正在寻找的输出:
[[fwrd.path_similarity(i) for i in l2] for fwrd in l1]
将其传递给np.ndarray()
。