2017-04-22 100 views
1

我首先想說我正在使用tweepy。我找到了一種過濾出相同字符串的方法,但我很難過濾出類似的字符串。如何比較python中兩個相似的句子字符串?

我有我需要比較兩個句子串(Tweepy關鍵字= 「特朗普」)

串1: 「特朗普總局駁回衛生局局長維韋克穆爾蒂(HTTP)PUGheO7BuT5LUEtHDcgm」

字符串2: 「特朗普政府解僱外科醫生將軍Vivek Murthy(http)avGqdhRVOO」

正如你所看到的,他們是相似的,但不一樣。我需要找到一種方法來比較兩者,並獲得一個數字值,以決定是否應將第二條推文添加到第一條推文。當我使用SequenceMatcher()時,我認爲我有解決方案,但總是打印出0.0。我期待它大於0.5。然而,序列匹配器似乎只適用於一個字符串(糾正我,如果我錯了)

現在你可能會想,「只是拼接的http部分」。這不會起作用,因爲它不會爲@cars這樣的人發微博名稱:'xyz zyx'和@trucks:'xyz zyx'

是否有某種方法可以比較兩個文本?它應該很簡單,但由於某種原因,解決方案無法解決。我剛剛在一週前學會了python。仍然覺得使用縮進來辨別函數中的什麼與否是奇怪的。

+0

有在[水母(https://github.com/jamesturk/jellyfish)包一噸的工具。 (我不屬於那個項目。) –

回答

0

我猜你已經使用.ratio(),即:

from difflib import SequenceMatcher 
a = "Dump Administration Dismisses Surgeon General Vivek Murthy (http)PUGheO7BuT5LUEtHDcgm" 
b = "Dump Administration Dismisses Surgeon General Vivek Murthy (http)avGqdhRVOO" 
ratio = SequenceMatcher(None, a, b).ratio() 
print(ratio) 
# 0.85 

Demo

+0

我忘了在SequenceMatcher()函數中放置「None」部分!感謝您幫助我迅速看到這一點。我在這裏坐了2-3個小時,試圖弄清楚我做錯了什麼。 – LuxLunae

+0

非常歡迎你@LuxLunae –

0

您在這裏找的是兩個字符串之間的編輯距離。編輯距離意味着一個字符串需要的替換,刪除和插入的最小數目以獲得另一個字符串。這通常使用動態編程來實現。這實際上是一個很酷的面試問題/項目來測試你的編程技能。

以下是幾個implementations in python以及一些描述。

用戶aryamccarthy已經提到jellyfish庫已經實現了這個功能(Levenshtein距離),並且有更多有趣的工具來處理匹配的字符串。絕對值得一看。

0

[.split()]功能打破了句子的話

您可能需要這respo

包括這個庫到你的項目做一個字符串比較,你是好去

+0

**只有鏈接**答案將**過時**如果鏈接變成'404',請避開它​​們。 –