狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

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

怎么判斷字符串相似度

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

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

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

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

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

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

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


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