對python內建庫difflib
和fuzzywuzzy
進行比較
difflib
:基於ratcliff-obershelp演算法(格式塔模式匹配)
fuzzywuzzy
:基於萊文斯坦距離(需要安裝python-levenshtein)
pip install python-levenshtein
pip install fuzzywuzzy
內容接近的文字:
你公司在哪
你公司位址在**
我不知道
from fuzzywuzzy import fuzz
from difflib import sequencematcher
s1 =
"你公司在哪"
s2 =
"你公司位址在**"
s3 =
"我不知道"
# difflib
sequencematcher = sequencematcher(
)sequencematcher.set_seqs(s1, s1)
print
(sequencematcher.ratio())
# 1.0
sequencematcher.set_seqs(s1, s2)
print
(sequencematcher.ratio())
# 0.7692307692307693
sequencematcher.set_seqs(s1, s3)
print
(sequencematcher.ratio())
# 0.0
# fuzzywuzzy
print
(fuzz.ratio(s1, s1)
)# 100
print
(fuzz.ratio(s1, s2)
)# 77
print
(fuzz.ratio(s1, s3)
)# 0
相似度
s1s2
s3s1
10077
0含義接近的文字:
**怎麼樣
怎麼賣的
from fuzzywuzzy import fuzz
from difflib import sequencematcher
s1 =
"**怎麼樣"
s2 =
"怎麼賣的"
# difflib
print
(sequencematcher(
none
, s1, s2)
.ratio())
# 0.4444444444444444
# fuzzywuzzy
print
(fuzz.ratio(s1, s2)
)# 44
相似度
s2s1
44extractone()
:最佳匹配
extract()
:匹配多個
from fuzzywuzzy import process
choices =
["我在北京"
,"北京天安門"
,"去北京玩"
,"上海"
,"北平"
,"北京人"
,"北京地鐵"
]print
(process.extractone(
"北京"
, choices)
)# ('我在北京', 90)
print
(process.extract(
"北京"
, choices, limit=2)
)# [('我在北京', 90), ('北京天安門', 90)]
python 比較短文本相似性(difflib、fuzzywuzzy)
difflib
fuzzywuzzy
使用fuzzywuzzy進行字串匹配-是使用levenshtein距離還是使用ratcliff / obershelp模式匹配演算法?
計算中文文字相似度有哪些好用的演算法?
短文本相似度計算
短文本的相似度計算方法可以分為兩大類 基於深度學習的方法和基於非深度學習的方法。科研方面基本都是從深度學習方面入手,但個人覺得想把單語言的短文本相似度計算給做出花來比較難,相對而言基於深度學習的跨語言相似度計算稍微好點。工程方面多半不用深度學習的方法,主要是獲取帶標記的語比較難的 除非公司花錢找人標...
大文字相似度比較
這個月一直在做文字匹配研究,大到一篇文章,現在小到乙個字段。處於自由散漫的探索,而且時間較短,所以可能較為膚淺,感興趣的可以一起交流。1.查詢一篇重複文字。前一段時間做過測試,google的simhash演算法效果還是不錯的,文字長度與一篇 長度差不多。步驟為 a.給整篇文件分詞 term 分詞用的...
Python TF IDF 比較文字相似度
部分 coding utf 8 import codecs import jieba.posseg as pseg from gensim import corpora,models,similarities from hotelmatcher.constant import class tfidf...