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

在 C# 中計算兩個字符串之間的相似度

admin
2023年3月22日 17:15 本文熱度 931

本文說明了在 C# 中計算兩個字符串之間相似度的不同技術。

我們可以使用 編輯距離算法 確定 C# 中兩個字符串之間的相似性。編輯距離算法通過找到將一個字符串轉換為另一個字符串所需的最少移動次數(添加、刪除、插入)來告訴我們兩個字符串之間的差異程度。我們甚至可以使用 Jaro-Winkler 距離算法來代替編輯距離。

以下代碼提供了編輯距離算法的 C# 實現,并使用它來查找兩個給定字符串之間的相似性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
 
public class Example
{
    public static int getEditDistance(string X, string Y)
    {
        int m = X.Length;
        int n = Y.Length;
 
        int[][] T = new int[m + 1][];
        for (int i = 0; i < m + 1; ++i) {
            T[i] = new int[n + 1];
        }
 
        for (int i = 1; i <= m; i++) {
            T[i][0] = i;
        }
        for (int j = 1; j <= n; j++) {
            T[0][j] = j;
        }
 
        int cost;
        for (int i = 1; i <= m; i++) {
            for (int j = 1; j <= n; j++) {
                cost = X[i - 1] == Y[j - 1] ? 0: 1;
                T[i][j] = Math.Min(Math.Min(T[i - 1][j] + 1, T[i][j - 1] + 1),
                        T[i - 1][j - 1] + cost);
            }
        }
 
        return T[m][n];
    }
 
    public static double findSimilarity(string x, string y) {
        if (x == null || y == null) {
            throw new ArgumentException("Strings must not be null");
        }
 
        double maxLength = Math.Max(x.Length, y.Length);
        if (maxLength > 0) {
            // 如果需要,可以選擇忽略大小寫
            return (maxLength - getEditDistance(x, y)) / maxLength;
        }
        return 1.0;
    }
 
 
    public static void Main()
    {
        string s1 = "Techie Delight";
        string s2 = "Tech Delight";
 
        double similarity = findSimilarity(s1, s2);
 
        Console.WriteLine(similarity);        // 0.8571428571428571
    }
}

上面的代碼計算兩個字符串在封閉范圍內的相似度 [0, 1],我們可以很容易地修改返回值 findSimilarity() 例程以百分比計算相似度(返回值 x 100)。

這就是計算 C# 中兩個字符串之間的相似度。


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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
在线看片免费人成影片 | 亚洲欧美偷国产精品三区 | 日韩欧美亚洲中文字幕2021 | 亚洲国内精品自在线影院 | 伊人依成久久人综合网 | 中出国产丝袜熟女 |