我有兩個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