我有一个列表,其中包含以下内容:
我该如何获得两个最相似的列表?在这种情况下,它们是第一个和第二个列表,因为它们都有单词“test”。
我尝试通过查找每两个列表之间的交集并跟踪共同单词最多的组合来解决此问题。然而,这种方法对于100,000个列表等数据量似乎效率低下。我认为需要(100,000 choose 2)种组合方式。有没有更快的方法呢?
以下是我的代码尝试:
我的程序的输出结果和我预期的一样,但是在更大的测试案例中速度非常慢。
输出结果:
我有一个列表,其中包含以下内容:
[["This", "is","a", "test"], ["test","something", "here"], ["cat", "dog", "fish"]]
我该如何获得两个最相似的列表?在这种情况下,它们是第一个和第二个列表,因为它们都有单词“test”。
我尝试通过查找每两个列表之间的交集并跟踪共同单词最多的组合来解决此问题。然而,这种方法对于100,000个列表等数据量似乎效率低下。我认为需要(100,000 choose 2)种组合方式。有没有更快的方法呢?
以下是我的代码尝试:
from itertools import combinations
a = [["This", "is","a", "test"], ["test","something", "here"], ["cat", "dog", "fish"]]
c= combinations(a,2)
max = 0
for pair in c:
intersection = set(pair[0]).intersection(pair[1])
if len(intersection) > max:
max = len(intersection)
mostsimilar = pair
print mostsimilar
我的程序的输出结果和我预期的一样,但是在更大的测试案例中速度非常慢。
输出结果:
(['This', 'is', 'a', 'test'], ['test', 'something', 'here'])
['a', 'b', 'b']
是否与['b']
相比较而言更相似,还是与['a', 'b']
相同? - blhsing['a', 'b', 'b']
和['a', 'b']
有2个共同元素(a和b),因此这些应该是结果。 - yzx7243list
长度会有多长? - gmds