`

简单的字符串相似度计算

J# 
阅读更多

计算Levenshtein 距离,再和较长字符串求比率

    /// <summary>
    /// Levenshtein Distance
    /// </summary>
    static class StringExt
    {
        /// <summary>
        /// 计算两个字符串的差异距离
        /// </summary>
        /// <param name="source">来源字符串</param>
        /// <param name="target">目标字符串</param>
        /// <returns>字符串差距</returns>
        public static int CalcDistance(this string source, string target)
        {
            int n = source.Length;
            int m = target.Length;
            if (m == 0) return n;
            if (n == 0) return m;
            var matrix = new int[n + 1, m + 1];
            for (int i = 1; i <= n; i++)
            {
                matrix[i, 0] = i;
            }
            for (int i = 1; i <= m; i++)
            {
                matrix[0, i] = i;
            }

            for (int i = 1; i <= n; i++)
            {
                var si = source[i - 1];
                for (int j = 1; j <= m; j++)
                {
                    var tj = target[j - 1];

                    int cost;
                    if (si == tj)
                        cost = 0;
                    else
                        cost = 1;

                    int above = matrix[i - 1, j] + 1;
                    int left = matrix[i, j - 1] + 1;
                    int diag = matrix[i - 1, j - 1] + cost;
                    matrix[i, j] = Math.Min(above, Math.Min(left, diag));
                }
            }
            return matrix[n, m];
        }

        /// <summary>
        /// 计算两个字符串的相似度
        /// </summary>
        /// <param name="source">来源字符串</param>
        /// <param name="target">目标字符串</param>
        /// <returns>相似度</returns>
        public static double CalcSimilarity(this string source, string target)
        {
            int n = source.Length;
            int m = target.Length;
            if (n == 0 || m == 0)
                return 0;
            int distance = source.CalcDistance(target);
            int max = Math.Max(n, m);
            return 1.0 * (max - distance) / max;
        }
    }
 
分享到:
评论

相关推荐

    mysql 计算字符串相似度

    ### MySQL 计算字符串相似度 #### 背景与需求 在许多应用场景中,我们需要对两个字符串进行相似度比较,比如搜索引擎中的关键词匹配、文本分析中的近义词识别等。MySQL 提供了多种方法来实现字符串相似度的计算,...

    DELPHI Levenshtein算法 字符串相似度计算(附源码)

    开发者可以通过查看源代码学习如何在DELPHI中实现这个算法,也可以直接使用提供的可执行文件进行快速的字符串相似度计算。在实际应用中,这样的工具对于文本分析、搜索引擎优化、拼写检查等领域都具有很高的价值。

    Delphi计算字符串的相似度

    字符串相似度计算通常用于找出两个字符串之间的相似程度,这在许多场景下都非常有用,例如拼写检查、搜索引擎排名、推荐系统等。有多种算法可以用来衡量字符串的相似性,包括但不限于: 1. **Levenshtein距离**:也...

    delphi计算两个字符串相似度源码 Levenshtein算法版

    《使用Delphi实现Levenshtein算法:计算字符串相似度》 在信息技术领域,字符串处理是常见的任务之一,其中计算两个字符串的相似度是尤为重要的一个环节。Levenshtein算法,也称为编辑距离算法,就是用于衡量两个...

    字符串相似度算法

    在"WebApplication1"这个项目中,可能包含了一个简单的示例程序,演示了如何实现这些字符串相似度算法并进行模糊匹配。通过学习和理解这些算法,开发者可以构建出能够处理各种模糊查询和相似性比较的应用,提升用户...

    DELPHI 计算两个字符串相似度 LCS算法(附源代码)

    在IT行业中,字符串的相似度计算是一个常见的任务,特别是在文本处理、信息检索和自然语言处理等领域。本篇文章将深入探讨如何使用DELPHI编程语言实现LCS(最长公共子序列)算法来衡量两个字符串的相似度。LCS算法是...

    基于Hadoop的文本相似度计算

    基于Hadoop的文本相似度计算是一个重要的应用,常用于信息检索、推荐系统和文档分类等场景。在这个项目中,我们利用TF-IDF(词频-逆文档频率)和向量空间模型来计算文本之间的相似性,同时采用IKAnalyzer作为中文...

    字符串相似度比较T-2021-7-1.rar

    字符串相似度比较的目标是量化两个字符串之间的相似性,这通常通过计算它们的差异程度来实现。常见的方法有以下几种: 1. **编辑距离(Levenshtein Distance)**:编辑距离是指将一个字符串转换成另一个字符串所需...

    字符串相似度算法 levenshtein distance 编辑距离算法

    在信息技术和计算机科学领域,字符串相似度计算是一个重要的概念,特别是在文本处理、搜索引擎优化、数据校验和生物信息学等多个场景中。Levenshtein Distance,也被称为编辑距离,是衡量两个字符串之间差异的一种...

    java字符串相似度算法

    Java字符串相似度算法是用于衡量两个字符串之间相似程度的一种计算方法。在文本处理、信息检索、数据清洗等领域中,这种算法具有重要的应用价值。这里主要介绍了一种基于Levenshtein距离的Java实现。 Levenshtein...

    Java 推荐系统 字符串 余弦相似度 算法

    在推荐系统领域,为了衡量两个字符串之间的相似性,通常会采用多种算法,其中余弦相似度算法因其简单高效而被广泛采用。该算法的核心思想是通过计算两个向量的夹角余弦值来评估它们之间的相似性。当两个向量的夹角越...

    计算字符串相似度(支持中英文,编辑距离算法,余弦,繁体转简体)

    在IT领域,字符串相似度计算是一项重要的技术,广泛应用于文本分析、信息检索、自然语言处理等多个方面。本项目提供了一个简单易用的demo,支持中英文字符串的相似度比较,采用了编辑距离算法和余弦相似度这两种经典...

    编辑长求字符串相似度Delphi源代码

    在提供的压缩包文件中,"编辑长求字符串相似度"可能是包含一个或多个Delphi源代码文件,它们可能实现了上述提到的某一种或多种字符串相似度计算方法。为了具体了解这些代码的工作原理和使用方式,你需要解压文件并...

    字符串识别,相似度匹配

    除此之外,还有一些专门为文本处理和字符串相似度匹配设计的库: - **Boost**: 提供了`boost::algorithm`库,包含字符串算法如`find_similar()`用于模糊匹配。 - **SeqAn**: 一个专门针对生物信息学序列处理的高...

    易语言快速计算文本相似度

    在这个特定的案例中,易语言被用来编写算法,用于计算两个文本字符串之间的相似度。计算文本相似度通常是为了找出两段文本之间的共同部分,或者确定它们有多接近。这在信息匹配、文本分类、抄袭检测等方面有着广泛的...

    使用PHP similar text计算两个字符串相似度

    - `similar_text()`函数并不总是最精确的方法来计算字符串相似度,特别是在处理多字节字符(如中文字符)时,由于字符编码的原因,结果可能不完全准确。 - `levenshtein()`函数虽然速度较快,但可能不如`similar_...

    使用Java实现的计算两字符串相似度+最长公共子序列.zip

    在文本分析或信息检索中,字符串相似度是指两个字符串之间的相似程度,通常通过某种距离度量(如Levenshtein距离、Jaccard相似度等)或者比较它们的共同部分来衡量。在这个项目中,我们关注的是基于LCS的相似度计算...

    C# 对比两个字符串的相似度.zip

    字符串相似度比较通常用于文本处理、信息检索、数据清洗等场景,例如在搜索引擎中找出用户输入关键词与文档内容的匹配程度,或者在用户输入纠错时识别出可能的正确拼写。C#提供了多种方法来实现这一功能,其中最常用...

    PHP中计算字符串相似度的函数代码

    在PHP中,计算字符串相似度有多种方法,其中最常用的两个函数是`similar_text`和`levenshtein`。这两个函数可以帮助开发者评估两个字符串之间的相似程度,特别是在文本处理、搜索优化或者数据清洗等场景中非常有用。...

    C语言中符号串相似度的计算方法.pdf

    本文确定相似度计算方法的一个原则是,计算方法不能过于复杂,应比较简单、容易计算,并且能够大抵反映出字符串相比较之后的相似情况。 一种比较简单的相似度计算方法是,将书写串与关键词比较,看相同子串在整个串...

Global site tag (gtag.js) - Google Analytics