- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设你有一个列表:
L1 = [milk, butter, bread, shampoo, dog food]
并且您想知道这个列表与另一个列表的相似程度
L2 = [milk, butter, shampoo, dog food, coffee]
即获取两个列表的并集:
Result = L1 U L2
结果是
[Milk, butter, dog food]
现在,我知道我可以遍历这些并找到并集。但是给定一个大小为 m 的列表和一个大小为 n 的列表。您将至少迭代 min(n, m) 次。给定 x 个列表,您有 x^min(n,m) 次迭代,这可能会变得很昂贵。
我在想哈希可能是一种方式,但我不确定。
但如果有一种方法可以将列表最小化为一个字符串并将其与另一个字符串进行比较。
也就是说 H(L1) U H(L2) 有 x% 的共同点?
请注意,我实际上不需要知道这些项目的共同点是什么。只是他们在两者之间分享了一个百分比。
最佳答案
如果您在两个列表中没有重复项,您可以改用集合,它在内部使用散列 -
>>> L1 = {'milk', 'butter', 'bread', 'shampoo', 'dog food'}
>>> L2 = {'milk', 'butter', 'shampoo', 'dog food', 'coffee'}
>>> L1 & L2
{'dog food', 'butter', 'shampoo', 'milk'}
如果您确实需要处理重复项,Python 有一个 collections.Counter
形式的多重集。 ,它的交集操作符合您的预期:
>>> from collections import Counter
>>> Counter(L1) & Counter(L2)
Counter({'butter': 1, 'milk': 1, 'shampoo': 1, 'dog food': 1})
要获得“x% in common”字符串,您需要将交集中的元素总数与开始时的元素数进行比较。集合以与列表相同的方式支持 len()
,因此如果您没有重复项,则获取共同项的数量只是 len(L1 & L2)
。取一个计数器的长度只会给你distinct元素的数量 - 当 L1 和 L2 是计数器时,要得到元素的数量以达到它们的重数,你可以这样做:
common = L1 & L2
num_in_common = sum(common.values())
关于python - 使用哈希比较列表中的相似性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926122/
我需要在基于 Java 的应用程序中使用 Wordnet。我想: 搜索同义词集 找到同义词集之间的相似性/相关性 我的应用程序使用 RDF 图,我知道 Wordnet 有 SPARQL 端点,但我想最
假设我们有一个 IEnumerable Collection,其中包含 20 000 人 对象项。那么假设我们创建了另一个 Person 对象。 我们想列出所有与这个人相似的人。这意味着,例如,如果姓
我使用 JAWS 作为普通的 wordnet 来查找单词之间的相似性。 我安装了 wordnet 2.1 并添加了 jar 文件:edu.mit.jwi_2.1.4.jar 和 edu.sussex.
我用这段代码做了一个词嵌入: with open("text.txt",'r') as longFile: sentences = [] single= []
我正在尝试找出确定各种对象或数组之间的共性或相似性的最佳方法,并且有兴趣获得社区的意见。我目前正在用 javascript 构建一个早期研究原型(prototype),我需要采用一种巧妙的方式来比较对
我在将 Flash 游戏转换为 C# 时遇到问题。在 Flash 中我会使用这种语法: public function doMove() { eaze(this).to(actionTime,
我有一批形状为 (bs, m, n) 的向量(即维度为 mxn 的 bs 向量)。对于每个批处理,我想计算第一个向量与其余 (m-1) 个向量的 Jaccard 相似度 例子: a = [ [
如何使用 Whoosh 获取文档的相似性度量? 我想创建一个“相关”特征,对与文档具有高度相似性的其他先前编入索引的文档进行排名。 我是否将文档作为长查询字符串输入?我是否将文档添加到索引并以某种方式
我编写了一个 Python 函数,它接受两个列表,使用 Levenshtein 比较它们并将足够相似的单词合并到一个名为“merged”的列表中。 我如何为超过 6 个列表执行此操作?确保将每个列表与
请原谅我对 Go 的了解非常有限。我有这样的定义 type ErrorVal int const ( LEV_ERROR ErrorVal = iota LEV_WARNING
我正在从事文本分析项目,一次比较两个不同的报告并将结果保存到 pandas 数据框中。 我能够得到 cosine 和 jacard 的相似性,但需要确保我得到正确的度量。作为参数,我使用位于给定文件夹
我是一名优秀的程序员,十分优秀!