Python短文本相似度比較

2021-10-07 14:49:56 字數 2173 閱讀 1637

對python內建庫difflibfuzzywuzzy進行比較

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...