我有两个python列表(nltk synsets)。对于第一个列表中的每个项目,我想迭代第二个列表的所有项目,并输出一个值,该值将第二个列表的项目作为该方法的参数应用于第一个列表。对于列表中的每个项目,迭代另一个列表中的所有其他项目,输出一个数组-python
实施例:
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的每个项目,从而在包括含有一个值的每个可能的2路组合的相似性得分3×2矩阵从l1和l2的一个值。
我可以计算矩阵的第一行如下:
fwrd= l1[0]
frow= np.asfarray([fwrd.path_similarity(i) for i in l2])
在FROW的值所得到的作为
array([ nan, 0.06666667])
此数组中的第一个值是wn.synset之间的相似性得分('in03')和wn.synset('help.v.01') 第二个值是 wn.synset('in03')和wn.synset('girl.n.01')之间的相似度分数。 )
数组中的第二行将包含l1中的第二项与l2中的两项之间的相似性分数。
我试过几种笨拙的方法,没有任何运气。谢谢你的帮助。另外,我真的很想了解代码解决方案如何工作,所以任何引用也会有所帮助。
谢谢。我想我会需要itertools,但不知道哪个功能。对于那些可能试图做类似的事情的人来说,这是一点点改进。为了得到所提到的数组,我实际上使用了:'np.asfarray([i.path_similarity(j)for itertools.product(l1,l2)]中的i,j)reshape(len(l1),len(l2)) ' – RosieMB