【问题标题】:String similarity (semantic meaning) in pythonpython中的字符串相似度(语义)
【发布时间】:2015-10-19 19:59:30
【问题描述】:

如何计算两个字符串之间的字符串相似度(语义)?

例如,如果我有 2 个字符串,例如“Display”和“Screen”,则字符串相似度必须接近 100%

如果我有“Display”和“Color”,屏幕相似度必须接近 0%

我正在用 Python 编写我的脚本...我的问题是是否存在一些库或框架来做这种或思考...或者有人可以建议我一个好的方法吗?

【问题讨论】:

  • @DTing:实例是相似性的反义词,而且这是语义相似性。 WordNet 可能是一个很好的起点。
  • 我明白了。误读了问题。
  • 您需要一个语义网或数据库来关联相对大量单词的含义。然后可以查询两个输入词的相似度。它的操作将使用相似性的传递性来计算尚未存储的对的相似性。

标签: python string semantics similarity


【解决方案1】:

您要解决的是 NLP 问题;如果您不熟悉,可能会很麻烦。最流行的库是NTLK,它有很多人工智能工具。快速搜索一下您要查找的内容会产生语义逻辑:http://www.nltk.org/book/ch10.html

这是一个计算量很大的过程,因为它涉及加载整个英语语言的字典。如果您有一小部分示例,您最好自己创建一个映射。

【讨论】:

    【解决方案2】:

    根据您的示例,我认为您正在寻找语义相似性。例如,您可以使用 WordNet 来执行此操作,但您必须添加例如您正在使用 名词 并可能迭代单词的不同 含义 .该链接显示了两个根据各种实现计算相似度的示例。

    然而,大多数实现在计算上都很昂贵:它们使用大量文本来计算两个单词彼此接近的频率等。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      查看在 Gensim 库中实现的 word2vec。它的功能之一是计算单词相似度。

      https://radimrehurek.com/gensim/models/word2vec.html

      更多细节和演示可以在here找到。

      我相信这是目前最先进的技术。

      【讨论】:

        【解决方案5】:

        我不擅长NPL,但我认为Levenshtein距离算法可以帮助你解决这个问题。因为我使用这个算法来计算字符串之间的相似度。而且表现还不错。 以下是我的CPP代码,点击链接,或许你可以把代码转换成Python。稍后我会贴出Python代码。 如果你了解动态编程,我想你可以理解它。 enter link description here

        【讨论】:

        • 我认为 OP 正在寻找 semantical 相似性,而不是 syntax 相似性。 Levenshtein 距离仅计算将一个字符串转换为另一个字符串的最小插入、删除和修改次数。
        猜你喜欢
        • 2013-06-06
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        • 2019-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-01
        相关资源
        最近更新 更多