草庐IT

相似性

全部标签

python - 使用 NLTK 比较术语/表达式的相似性?

我正在尝试比较语义相关(或不相关)的术语/表达——这些不是完整的句子,也不一定是单个单词;例如-“社交网络服务”和“社交网络”显然密切相关,但如何使用nltk对其进行量化?显然我遗漏了一些东西,甚至是代码:w1=wordnet.synsets('socialnetwork')返回一个空列表。关于如何解决这个问题有什么建议吗? 最佳答案 有一些语义相关性或相似性的度量,但据我所知,它们最好针对wordnet词典中的单个单词或单个表达式定义-而不是针对wordnet词汇条目的复合词。这是许多基于wordnet的相似性度量的一个很好的we

python - 如何规范化来自 Wordnet 的相似性度量

我正在尝试计算两个词之间的语义相似度。我正在使用基于Wordnet的相似性度量,即Resnik度量(RES)、Lin度量(LIN)、Jiang和Conrath度量(JNC)以及Banerjee和Pederson度量(BNP)。为此,我使用nltk和Wordnet3.0。接下来,我想组合从不同度量中获得的相似度值。为此,我需要对相似度值进行归一化,因为某些度量给出的值介于0和1之间,而其他度量给出的值大于1。所以,我的问题是如何对从不同度量中获得的相似性值进行归一化。额外的细节关于我实际想做的事情:我有一套词。我计算单词之间的成对相似度。并删除与集合中其他词不强相关的词。

python - 如何计算未出现在WordNet中的英文单词的相似度?

一种特殊的自然语言实践是使用WordNet计算两个词之间的相似度。我用以下python代码开始我的问题:fromnltk.corpusimportwordnetsport=wordnet.synsets("sport")[0]badminton=wordnet.synsets("badminton")[0]print(sport.wup_similarity(badminton))我们将得到0.8421现在如果我按如下方式查找“haha”和“lol”怎么办:haha=wordnet.synsets("haha")lol=wordnet.synsets("lol")print(haha)

java - 如何高效计算数百万字符串之间的余弦相似度

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我需要计算列表中字符串之间的余弦相似度。例如,我有一个超过1000万个字符串的列表,每个字符串都必须确定自己与列表中每个其他字符串之间的相似性。我可以用来高效快速地完成此类任务的最佳算法是什么?分而治之算法是否适用?编辑我想确定哪些字符串与给定字符串最相似,并能够获得与相似性相关联的度量/分数。我认为我想做的事情符合最初不知道集群数量的集群。

python - 按相似性对行和列进行排序的算法

我跌倒了aspreadsheet这解释了一种对包含二进制数据的矩阵的行和列进行排序的方法,以便最小化连续行和列之间的更改次数。例如,开始于:在电子表格的选项卡中描述的15个手动步骤后,获得下表:我想知道:这个算法或方法的通用名称是什么?如何将它应用到更大的表(其中2^n会溢出...)如何将其推广到非二进制数据,例如使用Levenshtein距离?如果有任何指向代码(ExcelVBA、Python等)的链接已经实现了这个(否则我会写它...)谢谢! 最佳答案 可以用一个向量L=[1,1,0,...1]表示每一行,然后定义两行之间的距离

python - 如何在 Python 中快速计算大量向量的余弦相似度?

我有一组100,000向量,我需要根据余弦相似度检索前25个最接近的向量。Scipy和Sklearn有计算余弦距离/相似度2向量的实现,但我需要计算100kX100k大小的CosineSim,然后取出前25个。有没有pythoncompute的快速实现?根据@Silmathoron的建议,这就是我正在做的-#vectorsisalistofvectorsofsize:100Kx400i.e.100Kvectorseachofdimenions400vectors=numpy.array(vectors)similarity=numpy.dot(vectors,vectors.T)#sq

python - 在 Python 中计算 Jaccard 相似度

我有20,000个文档要为其计算真正的Jaccard相似度,以便我稍后可以检查MinWise哈希对其进行近似的准确度。每个文档都表示为numpy矩阵中的一列,其中每一行都是一个出现在文档中(entry=1)或不出现(entry=0)的词。大约有600个单词(行)。例如,第1列将是[100000100010],这意味着单词1、7、11出现在其中,没有其他单词出现。除了我的逐元素比较方法之外,还有更有效的方法来计算相似度吗?我看不出如何使用集合来提高速度,因为集合刚刚变为(0,1),但就目前而言,代码慢得不可思议。importnumpyasnp#loadfileintopythonrawd

用于字符串相似性的 Python 摘要/哈希

我正在寻找一种算法,它可以从较长的字符串生成短的(fx16个字符(不重要)哈希码/摘要。主要要求是几乎相同的字符串应该产生相同的摘要。Fx2几乎相同的邮件:嗨,马丁。这里有一些......垃圾邮件给你。问候XYZ。=>AAAAAAAAAAAAAAAA嗨波。这里有一些......垃圾邮件给你。问候EFG。=>AAAAAAAAAAAAAAAA返回相同的摘要(或几乎相同),其中作为不同的邮件:你好芬恩。这是一封测试邮件。=>CCCCCCCCCCCCCCCC将返回不同的摘要。此算法将成为垃圾邮件过滤器的一部分。过滤器将记住来自确定为垃圾邮件的邮件的摘要。如果相同的摘要出现在有疑问的邮件中,则相

python - 使用 python nltk 查找两个网页之间的相似性?

我想找出两个网页是否相似。有人可以建议具有wordnet相似函数的pythonnltk是否有帮助以及如何?在这种情况下使用的最佳相似度函数是什么? 最佳答案 spotsigsjoyceschan提到的论文解决了内容重复检测问题,其中包含大量值得深思的内容。如果您正在寻找关键术语的快速比较,nltk标准函数可能就足够了。使用nltk,您可以通过查找包含在WordNet中的synsets来提取术语的同义词>>>fromnltk.corpusimportwordnet>>>wordnet.synsets('donation')[Synse

python - TF-IDF 查找新文档和数据集之间的余弦相似度

我有一个产品数据集的TF-IDF矩阵:tfidf=TfidfVectorizer().fit_transform(words)其中words是描述列表。这会产生一个69258x22024矩阵。现在我想找出新产品与矩阵中的产品之间的余弦相似度,因为我需要找到与其最相似的10个产品。我使用与上面相同的方法对其进行矢量化。但是,我无法将矩阵相乘,因为它们的大小不同(新矩阵可能有6个字,所以是1x6矩阵),所以我需要制作一个列数与原始列数相同的TFIDFVectorizer。我该怎么做? 最佳答案 我已经找到了它的工作方式。您需要先将新文档