Python Levenshtein(两个文本比较,两个字符串比较)
生活随笔
收集整理的這篇文章主要介紹了
Python Levenshtein(两个文本比较,两个字符串比较)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
安裝:
- ?pip3 install python-Levenshtein==0.12.0
實(shí)例一:
#! /usr/bin/python # -*- coding: utf8 -*- # @Time : 2018/8/30 10:11 # @Author : yukangfrom Levenshtein import *# 個(gè)人總結(jié)的 關(guān)于 Levenshtein 所有函數(shù)的用法 和 注釋 apply_edit() #根據(jù)第一個(gè)參數(shù)editops()給出的操作權(quán)重,對第一個(gè)字符串基于第二個(gè)字符串進(jìn)行相對于權(quán)重的操作distance() #計(jì)算2個(gè)字符串之間需要操作的絕對距離editops() #找到將一個(gè)字符串轉(zhuǎn)換成另外一個(gè)字符串的所有編輯操作序列hamming() #計(jì)算2個(gè)字符串不同字符的個(gè)數(shù),這2個(gè)字符串長度必須相同inverse() #用于反轉(zhuǎn)所有的編輯操作序列jaro() #計(jì)算2個(gè)字符串的相識度,這個(gè)給與相同的字符更高的權(quán)重指數(shù)jaro_winkler() #計(jì)算2個(gè)字符串的相識度,相對于jaro 他給相識的字符串添加了更高的權(quán)重指數(shù),所以得出的結(jié)果會(huì)相對jaro更大(%百分比比更大)matching_blocks() #找到他們不同的塊和相同的塊,從第六個(gè)開始相同,那么返回截止5-5不相同的1,第8個(gè)后面也開始相同所以返回8-8-1,相同后面進(jìn)行對比不同,最后2個(gè)對比相同返回0median() #找到一個(gè)列表中所有字符串中相同的元素,并且將這些元素整合,找到最接近這些元素的值,可以不是字符串中的值。median_improve() #通過擾動(dòng)來改進(jìn)近似的廣義中值字符串。opcodes() #給出所有第一個(gè)字符串轉(zhuǎn)換成第二個(gè)字符串需要權(quán)重的操作和操作詳情會(huì)給出一個(gè)列表,列表的值為元祖,每個(gè)元祖中有5個(gè)值#[('delete', 0, 1, 0, 0), ('equal', 1, 3, 0, 2), ('insert', 3, 3, 2, 3), ('replace', 3, 4, 3, 4)]#第一個(gè)值是需要修改的權(quán)重,例如第一個(gè)元祖是要?jiǎng)h除的操作,2和3是第一個(gè)字符串需要改變的切片起始位和結(jié)束位,例如第一個(gè)元祖是刪除第一字符串的0-1這個(gè)下標(biāo)的元素#4和5是第二個(gè)字符串需要改變的切片起始位和結(jié)束位,例如第一個(gè)元祖是刪除第一字符串的0-0這個(gè)下標(biāo)的元素,所以第二個(gè)不需要?jiǎng)h除quickmedian() #最快的速度找到最相近元素出現(xiàn)最多從新匹配出的一個(gè)新的字符串ratio() #計(jì)算2個(gè)字符串的相似度,它是基于最小編輯距離seqratio() #計(jì)算兩個(gè)字符串序列的相似率。setmedian() #找到一個(gè)字符串集的中位數(shù)(作為序列傳遞)。 取最接近的一個(gè)字符串進(jìn)行傳遞,這個(gè)字符串必須是最接近所有字符串,并且返回的字符串始終是序列中的字符串之一。setratio() #計(jì)算兩個(gè)字符串集的相似率(作為序列傳遞)。subtract_edit() #從序列中減去一個(gè)編輯子序列。看例子這個(gè)比較主要的還是可以將第一個(gè)源字符串進(jìn)行改變,并且是基于第二個(gè)字符串的改變,最終目的是改變成和第二個(gè)字符串更相似甚至一樣# print(hamming('Hello world!', 'Holly world!')) # print(jaro_winkler("yukangrtyu",'yukangrtyn')) # fixme = ['Levnhtein', 'Leveshein', 'Leenshten', 'Leveshtei', 'Lenshtein', 'Lvenstein', 'Levenhtin', 'evenshtei'] # print(opcodes('spam', 'park')) # print(ratio('spam', 'spark')) # print(jaro_winkler('spam', 'spark')) # print(jaro('spam', 'spark')) # print(seqratio('spam', 'spark')) # print(seqratio(['newspaper', 'litter bin', 'tinny', 'antelope'],['caribou', 'sausage', 'gorn', 'woody'])) # print(setratio(['newspaper', 'litter bin', 'tinny', 'antelope'],['caribou', 'sausage', 'gorn', 'woody'])) # e = editops('man', 'scotsman') # e1 = e[:3] # bastard = apply_edit(e1, 'man', 'scotsman') # print(e) # print(e1) # print(bastard) # print(subtract_edit(e, e1)) # print(apply_edit(subtract_edit(e, e1), bastard, 'scotsman'))def acquaintance(a,b):for i in a:item = {}for j in b:if ratio(u"%s"%i,u"%s"%j):item[ratio(u"%s"%i,u"%s"%j)] = (i,j)d = item[max(list(item.keys()))]c = '"%s"和"%s"-最相似---匹配度為:%f'%(d[0],d[1],max(list(item.keys())))print(c)a = ["你好",'hello,world','計(jì)算偏差大不大啊?','文本可以嗎','請看這里'] b = ['helloworld',"你好嗎?",'可以嗎','請這里','計(jì)算偏差大不大'] acquaintance(a,b)實(shí)例二:
ratio_threshold=0.9 ratio = Levenshtein.ratio(page404.content, r.content) if ratio > ratio_threshold:return False return True?
總結(jié)
以上是生活随笔為你收集整理的Python Levenshtein(两个文本比较,两个字符串比较)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python获取当前目录
- 下一篇: C# 获取绝对值