我有多個PDF轉換成文本文件,我想搜索可能在文件中的某個短語。我的問題是,PDF和文本文件之間的轉換並不完美,所以有時會出現文本錯誤(例如字之間缺失空格; i,l,1之間的混淆等)如何匹配可能的拼寫錯誤的字符串?
I想知道是否有任何共同的技術給我一個「軟」的搜索,例如看看兩個詞之間的漢明距離。
if 'word' in sentence:
VS
if my_search('word',sentence, tolerance):
我有多個PDF轉換成文本文件,我想搜索可能在文件中的某個短語。我的問題是,PDF和文本文件之間的轉換並不完美,所以有時會出現文本錯誤(例如字之間缺失空格; i,l,1之間的混淆等)如何匹配可能的拼寫錯誤的字符串?
I想知道是否有任何共同的技術給我一個「軟」的搜索,例如看看兩個詞之間的漢明距離。
if 'word' in sentence:
VS
if my_search('word',sentence, tolerance):
你可以使用這樣的事情:
from difflib import SequenceMatcher
text = """there are
some 3rrors in my text
but I cannot find them"""
def fuzzy_search(search_key, text, strictness):
lines = text.split("\n")
for i, line in enumerate(lines):
words = line.split()
for word in words:
similarity = SequenceMatcher(None, word, search_key)
if similarity.ratio() > strictness:
return " '{}' matches: '{}' in line {}".format(search_key, word, i+1)
print fuzzy_search('errors', text, 0.8)
這應該輸出這樣的:
'errors' matches: '3rrors' in line 2
這工作,謝謝! – kkawabat
因爲你的字符串長度可能不同,你應該使用Levenshtein距離,而不是漢明距離。我沒有用它個人,但這個包可能是有用的:
https://pypi.python.org/pypi/python-Levenshtein
由於這是一個自然語言處理的問題,我肯定會考慮NLTK。本教程似乎是適當的:
http://streamhacker.com/2011/10/31/fuzzy-string-matching-python/
fuzzywuzzy看起來像它可能爲你工作:https://github.com/seatgeek/fuzzywuzzy
這裏有一個叫做dista的圖書館nce:https://pypi.python.org/pypi/Distance/0.1 – dagrha
嘗試谷歌搜索字符串距離算法 – user853710