如何在Python中比较两个句子字符串的相似性?

2024-05-15 23:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想先说我在用特威比。我找到了一种过滤相同字符串的方法,但我很难过滤出类似的字符串。

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

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

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

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

现在您可能在想,“只需剪接http部分”。这也不起作用,因为它不能解释像@cars:xyz zyx和@trucks:xyz zyx这样的人在tweet上的名字

有没有办法比较这两篇课文?这应该很简单,但不知为什么我找不到解决办法。我一周前刚学过Python。使用缩进来区分函数中的内容还是很奇怪的。


Tags: 方法字符串http句子tweetgeneralxyztweepy
2条回答

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

下面是一些implementations in python和一些描述。

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

您可以使用^{}中的^{},即:

from difflib import SequenceMatcher

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

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

Demo

相关问题 更多 >