LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

怎么判斷字符串相似度

admin
2023年3月22日 17:58 本文熱度 1338

一直不理解,為什么要計(jì)算兩個(gè)字符串的相似度呢。什么叫做兩個(gè)字符串的相似度。經(jīng)常看別人的博客,碰到比較牛的人,然后就翻了翻,終于找到了比較全面的答案和為什么要計(jì)算字符串相似度的解釋。因?yàn)樗阉饕嬉淹ㄟ^爬蟲抓取的頁面給記錄下來,那么除了通過記錄url是否被訪問過之外,還可以這樣,比較兩個(gè)頁面的相似度,因?yàn)椴煌膗rl中可能記錄著相同的內(nèi)容,這樣,就不必再次記錄到搜索引擎的存儲空間中去了。還有,大家畢業(yè)的時(shí)候都寫過論文吧,我們論文的查重系統(tǒng)相信也會采用計(jì)算兩個(gè)字符串相似度這個(gè)概念。
以下敘述摘自編程之美一書:
許多程序會大量使用字符串。對于不同的字符串,我們希望能夠有辦法判斷其相似程序。我們定義一套操作方法來把兩個(gè)不相同的字符串變得相同,具體的操作方法為:
1.修改一個(gè)字符(如把“a”替換為“b”);  
2.增加一個(gè)字符(如把“abdd”變?yōu)椤癮ebdd”);
3.刪除一個(gè)字符(如把“travelling”變?yōu)椤皌raveling”);
比如,對于“abcdefg”和“abcdef”兩個(gè)字符串來說,我們認(rèn)為可以通過增加/減少一個(gè)“g”的方式來達(dá)到目的。上面的兩種方案,都僅需要一 次 。把這個(gè)操作所需要的次數(shù)定義為兩個(gè)字符串的距離,而相似度等于“距離+1”的倒數(shù)。也就是說,“abcdefg”和“abcdef”的距離為1,相似度 為1/2=0.5。
給定任意兩個(gè)字符串,你是否能寫出一個(gè)算法來計(jì)算它們的相似度呢?
原文的分析與解法
不難看出,兩個(gè)字符串的距離肯定不超過它們的長度之和(我們可以通過刪除操作把兩個(gè)串都轉(zhuǎn)化為空串)。雖然這個(gè)結(jié)論對結(jié)果沒有幫助,但至少可以知道,任意兩個(gè)字符串的距離都是有限的。我們還是就住集中考慮如何才能把這個(gè)問題轉(zhuǎn)化成規(guī)模較小的同樣的子問題。如果有兩個(gè)串A=xabcdae和B=xfdfa,它們的第一個(gè)字符是 相同的,只要計(jì)算A[2,...,7]=abcdae和B[2,...,5]=fdfa的距離就可以了。但是如果兩個(gè)串的第一個(gè)字符不相同,那么可以進(jìn)行 如下的操作(lenA和lenB分別是A串和B串的長度)。
1.刪除A串的第一個(gè)字符,然后計(jì)算A[2,...,lenA]和B[1,...,lenB]的距離。
2.刪除B串的第一個(gè)字符,然后計(jì)算A[1,...,lenA]和B[2,...,lenB]的距離。
3.修改A串的第一個(gè)字符為B串的第一個(gè)字符,然后計(jì)算A[2,...,lenA]和B[2,...,lenB]的距離。
4.修改B串的第一個(gè)字符為A串的第一個(gè)字符,然后計(jì)算A[2,...,lenA]和B[2,...,lenB]的距離。
5.增加B串的第一個(gè)字符到A串的第一個(gè)字符之前,然后計(jì)算A[1,...,lenA]和B[2,...,lenB]的距離。
6.增加A串的第一個(gè)字符到B串的第一個(gè)字符之前,然后計(jì)算A[2,...,lenA]和B[1,...,lenB]的距離。
在這個(gè)題目中,我們并不在乎兩個(gè)字符串變得相等之后的字符串是怎樣的。所以,可以將上面的6個(gè)操作合并為:
1.一步操作之后,再將A[2,...,lenA]和B[1,...,lenB]變成相字符串。
2.一步操作之后,再將A[2,...,lenA]和B[2,...,lenB]變成相字符串。
3.一步操作之后,再將A[1,...,lenA]和B[2,...,lenB]變成相字符串。

通過以上1和6,2和5,3和4的結(jié)合操作,最后兩個(gè)字符串每個(gè)對應(yīng)的字符會相同,但是這三種操作產(chǎn)生的最終的兩個(gè)字符串是不一樣的。我們不知道通過上述的三種結(jié)合那種使用的操作次數(shù)是最少的。所以我們要比較操作次數(shù)來求得最小值。


該文章在 2023/3/22 17:58:31 編輯過

全部評論1

admin
2023年3月22日 18:0

很有意思的課題。不過既然是相似,就是模糊匹配,就沒有標(biāo)準(zhǔn),如果定義了嚴(yán)格的標(biāo)準(zhǔn),那就是偽命題,只能說達(dá)到某種程度的相似要求,而不能稱標(biāo)準(zhǔn),只要實(shí)現(xiàn)你的需求就是合理的。

相似度匹配問題涉及幾個(gè)方面
1、長度相似
2、大小寫相似(這個(gè)簡單)
3、字符或詞組并集數(shù)量。

我相信根據(jù)以上三點(diǎn)你應(yīng)該有想法了。

我的判斷方式是,定義一個(gè)統(tǒng)計(jì)匹配次數(shù)的變量(完全相等不在下面處理流程考慮范圍之內(nèi)),每個(gè)測試項(xiàng)目都記做一分,即計(jì)數(shù)變量加一。

預(yù)處理:取長度較長的串定義為原串,將較短的定義為測試串。將原串和測試串全部轉(zhuǎn)為大寫或小寫。
1、如果兩串長度在70%以上則看做相似(這個(gè)值根據(jù)需要可調(diào)),+1
2、將被測試串與原串做包含測試(str.indexof(test)),如果命中+1
3、將原串和被測試串分別分割為三個(gè)子串,將它們各自的左中右子串做包含測試,每命中一個(gè) +2。
4、將被測試串循環(huán)位移若干字符(可調(diào)),重復(fù)3#操作,重復(fù)次數(shù)根據(jù)移動字符數(shù)計(jì)算。

你可以選擇選取以上幾個(gè)條件進(jìn)行判斷,你也可以加入其它測試條件,組成10分制,達(dá)到6分看做相似。你也可以簡單地單獨(dú)采用一種方式判斷,比如長度接近的情況下,選取第3個(gè)測試方法,將串分三部分,分別做包含測試,出現(xiàn)2次匹配就看做相似。


該評論在 2023/3/22 18:04:44 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲精品嫩草研究院久久 | 亚洲中文字幕永远在线 | 中文字幕亚洲欧美 | 亚洲青青青在线视频 | 亚洲精品最新自产拍在线观看 | 婷婷综合缴情综免费观看 |