【问题标题】:How do I compare two sentence strings for a similarity in python?如何在python中比较两个句子字符串的相似性?
【发布时间】:2023-03-31 20:17:02
【问题描述】:

首先我想说我正在使用 tweepy。我找到了一种过滤掉相同字符串的方法,但我很难过滤掉类似的字符串。

我需要比较两个句子字符串(Tweepy 关键字 ="Donald Trump")

字符串 1:"Trump Administration Dismisses Surgeon General Vivek Murthy (http)PUGheO7BuT5LUEtHDcgm"

字符串 2:"Trump Administration Dismisses Surgeon General Vivek Murthy (http)avGqdhRVOO"

如您所见,它们相似但不相同。我需要找到一种方法来比较两者并获得一个数值来决定是否应该将第二条推文添加到第一条推文中。当我使用SequenceMatcher() 时,我以为我有解决方案,但它总是打印出0.0。我期待它大于0.5。然而,Sequence Matcher 似乎只适用于一个单词字符串(如果我错了,请纠正我)。

现在您可能在想,“只需拼接 http 部分”。这也行不通,因为它不考虑人们的推文名称,例如@cars:xyz zyx 和@trucks:xyz zyx

有什么方法可以比较这两个文本吗?它应该很简单,但由于某种原因,我无法解决这个问题。我一周前刚学了python。使用缩进来区分函数中的内容仍然感觉很奇怪。

【问题讨论】:

标签: python string twitter comparison tweepy


【解决方案1】:

您可以从difflib 使用SequenceMatcher().ratio(),即:

from difflib import SequenceMatcher

a = "I love Coding"
b = "I love Codiing"

ratio = SequenceMatcher(None, a, b).ratio()
# 0.9629629629629629

Demo

【讨论】:

  • 我忘了把“None”部分放在SequenceMatcher()函数中!!!感谢您帮助我快速看到这一点,哈哈。我在这里坐了 2-3 个小时,试图弄清楚我做错了什么。
【解决方案2】:

您在这里寻找的是两个字符串之间的编辑距离。编辑距离是指在一个字符串上获得另一个字符串所需的最小替换、删除和插入次数。这通常使用动态编程来实现。这实际上是一个非常酷的面试问题/项目来测试你的编程技能。

这里有一些implementations in python 以及一些描述。

用户aryamccarthy 已经提到了jellyfish 库,它已经实现了这个功能(Levenshtein Distance)并且有更多有趣的工具来处理匹配的字符串。绝对值得一看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 2013-05-26
    • 2010-10-31
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多