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

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

怎么判斷字符串相似度

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

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


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

全部評論1

admin
2023年3月22日 18:0

很有意思的課題。不過既然是相似,就是模糊匹配,就沒有標準,如果定義了嚴格的標準,那就是偽命題,只能說達到某種程度的相似要求,而不能稱標準,只要實現你的需求就是合理的。

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

我相信根據以上三點你應該有想法了。

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

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

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


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