⑴ 終於知道怎麼判斷字元串相似度了
一直不理解,為什麼要計算兩個字元串的相似度呢。什麼叫做兩個字元串的相似度。經常看別人的博客,碰到比較牛的人,然後就翻了翻,終於找到了比較全面的答案和為什麼要計算字元串相似度的解釋。因為搜索引擎要把通過爬蟲抓取的頁面給記錄下來,那麼除了通過記錄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的結合操作,最後兩個字元串每個對應的字元會相同,但是這三種操作產生的最終的兩個字元串是不一樣的。我們不知道通過上述的三種結合那種使用的操作次數是最少的。所以我們要比較操作次數來求得最小值。
⑵ excel中通過相似度進行模糊匹配兩列數據
需要用VBA,
供參考
For i = 1 To Sheet5.UsedRange.Rows.Count 'B 欄數據
Bstr = Trim(Sheet5.Range("B" & i).Value)
num = Len(Bstr)
For j = 1 To Sheet5.UsedRange.Rows.Count 'A 欄數據
astr = Trim(Sheet5.Range("A" & j).Value)
If num = 1 Then
If InStr(astr, Bstr) >= 1 Then
m = m + 1
End If
ElseIf num > 1 Then
For k = 1 To num
aaa = Mid(Bstr, k, 1)
If InStr(astr, Mid(Bstr, k, 1)) >= 1 Then
m = m + 1
End If
Next k
End If
Dim rate As Double
rate = m / num
If rate >= 0.5 Then
Sheet5.Range("C" & i).Value = Bstr
End If
Next j
Next i
⑶ 相似度計算
你是求一個相似度演算法:
如果一個公司真實排名為x1,
而你的打分排名是
x2,
怎麼搞一個合理的評分數呢?
對差值的絕對值進行打分
|x1-x2|=0
得14分(28的一半)
|x1-x2|>=14
得
0分
就是:|差值|>14
得0分,|差值|<=14,得
14-|差值|
滿分
14x28
分,
這樣對28個排名,就可以算出得分了
相似度=得分/(14x28)
x
100
(%)
用c語言編個計算小程序很簡單。
⑷ paperpass相似度22%,知網的相似度會是多少,不知道能不能通過知網復寫率小於15%檢測
不確定。
因為paperpass跟知網收錄的論文庫是有差別的,有可能paperpass未收錄的論文,在知網卻被收錄了,這種情況是很常見的,有很多同學在paperpass查重得到的數據是低於20%,而在知網上卻大於60%,這些都是常事。
paperpass是以句子為單位,而且不能識別目錄、標題、參考文獻,會通通標紅,並且的確會如你所說,出現你根本沒有抄過的、無關的文章;知網是以段落為單位,目錄、標題、參考文獻可以自動識別。兩者演算法也不同。因此,paperpass的重復率一定是高於知網的。
也就是說paperpass比知網嚴格。用paperpass測出來18%,學校用知網要求20%,肯定能過的。即使沒有把參考文獻貼進去。因為知網不會把參考文獻作為抄襲率。
(4)標題相似度匹配演算法擴展閱讀:
由於存在引注格式不統一、參考文獻格式不規范、虛假引用等問題,PaperPass為了給用戶提供最嚴格、最負責的檢測結果,將不再區分「相似」和「引用」。PaperPass檢測系統是在論文修改環節為用戶提供修改依據的工具,系統所顯示的相似部分(紅字)是否屬於正常引用將保留給用戶自行審定。
另外PaperPass也是全國最大的論文檢測技術提供商,已經為眾多的機構和檢測系統提供技術方案。所以通過PaperPass的檢測後,可以通過其它檢測系統的檢測。
⑸ 中文短句相似度匹配方法
一、原始落後的VSM
網上搜索關鍵詞「短文本 相似度」,出來的結果基本上都是以BOW(Bag of words)的VSM方案,大致流程如下:
分詞 —> 提取關鍵詞 —> 計算tf或if-idf,以向量的形式替換原文本 —> 文本相似度的問題轉變為計算向量相似度
一開始這樣的一個思路,很清晰明了,而且網上相應的資料也很多,然後就開搞吧。
1、把所有短文本去掉標點符號,用jieba分詞分好詞,去除停用詞,得到分好的文本;
2、按一定規則抽取特徵詞彙,作為後期向量的每一維;
3、用sklearn庫中的原生方法CountVectorizer、TfidfVectorizer等得到矩陣;
4、每個短文本計算對應得到的向量,採用K-Means聚類的方法進行非監督學習。
文本分類的大致思路基本上就如上所述,具體的細節調整就視實際情況而定。然而,想法是美好的,現實是殘酷的,全部分好詞的文本,抽取的特徵詞較多,即向量的維度較大,且向量是稀疏的,在使用K-Means時,會出現有個別cluster下的文本數量特別大;
⑹ 如何用wordnet計算 文本相似度 演算法實現
1.信息檢索中的重要發明TF-IDF
1.1TF
Term frequency即關鍵詞詞頻,是指一篇文章中關鍵詞出現的頻率,比如在一篇M個詞的文章中有N個該關鍵詞,則
(公式1.1-1)
為該關鍵詞在這篇文章中的詞頻。
1.2IDF
Inverse document frequency指逆向文本頻率,是用於衡量關鍵詞權重的指數,由公式
(公式1.2-1)
計算而得,其中D為文章總數,Dw為關鍵詞出現過的文章數。
2.基於空間向量的餘弦演算法
2.1演算法步驟
預處理→文本特徵項選擇→加權→生成向量空間模型後計算餘弦。
2.2步驟簡介
2.2.1預處理
預處理主要是進行中文分詞和去停用詞,分詞的開源代碼有:ICTCLAS。
然後按照停用詞表中的詞語將語料中對文本內容識別意義不大但出現頻率很高的詞、符號、標點及亂碼等去掉。如「這,的,和,會,為」等詞幾乎出現在任何一篇中文文本中,但是它們對這個文本所表達的意思幾乎沒有任何貢獻。使用停用詞列表來剔除停用詞的過程很簡單,就是一個查詢過程:對每一個詞條,看其是否位於停用詞列表中,如果是則將其從詞條串中刪除。
⑺ 兩個十萬級的「0-1」字元串,求他們的相似度用什麼演算法比較好
圖像識別怎麼能這么來干?可能是我孤陋寡聞了,但是不考慮前景、背景、焦點等能代表一張圖像的特徵,僅僅拿圖像的二進制串來比較,這種方法我覺得沒意義啊。
圖像處理過程中有一種將圖像從像域(像素)轉變為頻域的方法,改變之後的頻域依然是一個類似的矩陣,但是越靠近左上角的數值所具有的能量就越高,說白了就是,你如果把(0,0)的點更改了,整張圖就變了,但如果你把(n,n)的改了,對像域內的改變肉眼是無法識別出來的,因此通常將對角線右下的所有數值置0之後,即可以不對原圖作大的改變(從人眼識別的角度,與原圖相似度極高),又可以有效地降低一個圖像的大小(至少可以砍一半)
⑻ 相似度的計算 用哪個演算法 協同過濾 演算法
SIM = Structural SIMilarity(結構相似性),這是一種用來評測圖像質量的一種方法。由於人類視覺很容易從圖像中抽取出結構信息,因此計算兩幅圖像結構信息的相似性就可以用來作為一種檢測圖像質量的好壞.
首先結構信息不應該受到照明的影響,因此在計算結構信息時需要去掉亮度信息,即需要減掉圖像的均值;其次結構信息不應該受到圖像對比度的影響,因此計算結構信息時需要歸一化圖像的方差;最後我們就可以對圖像求取結構信息了,通常我們可以簡單地計算一下這兩幅處理後的圖像的相關系數.
然而圖像質量的好壞也受到亮度信息和對比度信息的制約,因此在計算圖像質量好壞時,在考慮結構信息的同時也需要考慮這兩者的影響.通常使用的計算方法如下,其中C1,C2,C3用來增加計算結果的穩定性:
2u(x)u(y) + C1
L(X,Y) = ------------------------ ,u(x), u(y)為圖像的均值
u(x)^2 + u(y)^2 + C1
2d(x)d(y) + C2
C(X,Y) = ------------------------,d(x),d(y)為圖像的方差
d(x)^2 + d(y)^2 + C2
d(x,y) + C3
S(X,Y) = ----------------------,d(x,y)為圖像x,y的協方差
d(x)d(y) + C3
而圖像質量Q = [L(X,Y)^a] x [C(X,Y)^b] x [S(X,Y)^c],其中a,b,c分別用來控制三個要素的重要性,為了計算方便可以均選擇為1,C1,C2,C3為比較小的數值,通常C1=(K1 x L)^2, C2=(K2 xL)^2, C3 = C2/2, K1
⑼ 如何實現兩個聲音相似度匹配演算法
作為自然語言理解的一項基礎工作,詞語語義相似度度量一直是研究的重點。語義相似度度量本身是一個中間任務,它是大多數自然語言處理任務中一個必不可少的中間層次,在自然語言處理中有著廣泛的應用,如詞義消歧、信息檢索以及機器翻譯等。 本文的核心內容是漢語詞語語義相似度演算法研究以及如何將其應用於跨語言信息檢索(Cross-Language Information Retrieval, CLIR)領域。首先對語義相似度度量演算法進行綜述,然後重點描述基於HowNet的語義相似度度量演算法,提出根據知識詞典描述語言(Knowledge Dictionary Mark-up Language, KDML)的結構特性將詞語語義相似度分為三部分進行計算,每部分採用最大匹配的演算法,同時加入義原深度信息以區別對待不同信息含量的義原。較以往同類演算法,其計算結果具有區分度,更加符合人的主觀感覺。 本文嘗試將所建立的漢語語義相似度度量模式應用於跨語言信息檢索系統。跨語言信息檢索結合傳統文本信息檢索技術和機器翻譯技術,在多方面涉及到語義問題,是語義相似度良好的切入點。兩者的結合主要體現在兩方面:(1)將語義相似度度量應用於查詢翻譯,利用語義相似度對查詢關鍵詞進行消歧翻譯,提高翻譯質量;(2)將語義相似度應用於查詢擴展,使擴展內容與原查詢具有更高相關性,以提高檢索的召回率和准確率。 本文提出相對客觀的評價標准,如為單獨衡量詞義消歧的性能,而使用第三屆詞義消歧系統評價會議(The 3rd Evaluating Word Sense Disambiguation Systems, SENSEVAL-3)語料進行測試;為衡量應用語義相似度於跨語言檢索後的性能,又使用第九屆文本檢索會議(The 9th Text Retrieval Conference, TREC-9) CLIR評價任務的查詢集、語料庫和結果集進行評估。這使得我們的實驗結果相對公正客觀,具有一定可比性。本文對原有英漢跨語言信息檢索系統進行一定程度的改進,使得各種相關演算法都可方便地在系統中進行集成,成為一個研究跨語言信息檢索的實驗平台,其系統的設計思想充分體現模塊化和擴展性。 綜上,本文通過綜合分析主流的語義相似度演算法,而提出一種新的基於HowNet的漢語語義相似度演算法,並給出其在英漢跨語言信息檢索中的嘗試性應用,希望能給相關領域的研究者有所借鑒。
⑽ 如何在Excel中如何進行相似度最高的匹配
操作方法如下:
1、假設這兩個表沒有在一個excel裡面,把它們移動到同一個表中。
2、Vlookup函數的語法:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
lookup_value:要查找的值,數值、引用或文本字元串
table_array:要查找的區域,數據表區域
col_index_num:返回數據在區域的第幾列數,正整數
range_lookup:模糊匹配,TRUE(或不填) /FALSE
3、找出兩列相同的數據:
用的公式是=VLOOKUP(A2,Sheet2!A:B,1,0)
公式的含義是在sheet2工作表的A:B區域的首列中查找等於a2的值,找到後,返回該區域第1列(即E列)的同行的值。最後的參數0表示精確查找。
4、找出兩列所對應的數據:
用的公式是=VLOOKUP(A2,Sheet2!$A$2:B150,2,0)
公式的含義是在sheet2工作表的A2:B150區域中查找符合條件顯示B列的值,找到後,返回該區域第2列(即F列)的同行的值。最後的參數0表示精確查找。
5、完成上面四步以後,最後一步比較簡單,直接拉填充柄填充下面的空白處即可,查找到對應的數據會直接顯示,如果沒有找到剛顯示#N/A。