簡體   English   中英

如何衡量2個字符串的相似度

[英]How to measure the level of similarity of 2 strings

我需要創建一些算法來計算兩個大小相等的字符串的相似度。

例如,我們有一個大小為 10 的字符串。我們應該測量幾個大小為 10 的字符串。

第一個有 9 個符號相似的一部分(10 中的 9)

第二個有 7 和 2 個符號的兩個部分

第三部分有 (4, 3, 1) 符號的 3 個部分

第 4 8 個符號

第 5 部分有 6 個符號

我需要一些算法來確定所有這些字符串的相似度。 據我了解,一部分越長,字符串就越相似。 但是例如,有 8 個元素的一個部分或 7 個和 2 個元素的兩個部分更好。 包含 6 個元素的零件或包含 4、3、1 段的 3 個零件,總共有 8 個符號。 有什么建議嗎?

PS伙計們,我不需要算法如何比較字符串,我需要算法如何計算差異,如果我已經在兩個字符串中有幾個共同部分,如何定義相似性。

初始字符串“我喜歡蘋果”

  1. “我喜歡的蘋果”(我喜歡的蘋果)
  2. “我喜歡 appel”(我喜歡 app le)
  3. “我喜歡紙”(我喜歡蘋果)
  4. “我喜歡懇求”(我喜歡蘋果)
  5. “我喜歡芒果”(我喜歡一個)

應該是一些數學計算字符串的一般長度,“覆蓋”初始字符串的部分長度以及一些附加參數(如果部分更少 - 比相似性更好!也許!!)

您需要將第一個字符串的每個字符與第二個字符串的每個字符都與類似的東西進行比較,將字符串添加到字典中並用一個整數來求和相似度。

stringToCompare = 'ABCDE'
String1 = 'ABCDE'
String2 = 'ABCDF'
String3 = 'ABCKJ'
String4 = 'ABLMN'
if __name__== '__main__':
    Dict1 = {'string': String1, 'similarity': 0}
    Dict4 = {'string': String2, 'similarity': 0}
    Dict2 = {'string': String3, 'similarity': 0}
    Dict3 = {'string': String4, 'similarity': 0}
    dictList = [Dict4, Dict3, Dict2, Dict1]

    for N, dict in enumerate(dictList):
        for stringChar in dict['string']:
            for mainChar in stringToCompare:
                if stringChar == mainChar:
                    dict['similarity']+=1

    SORTED = sorted(dictList, key=lambda d: d['similarity'], reverse=True)

    print(SORTED)

在 SORTED 上,您有按“相似性”鍵排序的字典列表

我不知道您的字符串是如何格式化的,您需要自動創建“dictList”以避免手動操作。

希望能幫助到你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM