最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

每日热讯!计算两个字符串的相似度

来源:博客园

第1种:相似度计算公式相似度=Kq*q/(Kq*q+Kr*r+Ks*s) (Kq > 0 , Kr>=0,Ka>=0)


(资料图片)

q 是字符串1和字符串2中都存在的单词的总数

s 是字符串1 比 q 多的单词总数

r 是字符串2 比q 多的单词总数

Kq,Kr和ka 分别是q,r,s的权重(非常重要)

根据实际的计算情况,我们设Kq=2,Kr=Ks=1

///         /// 获取两个字符串的相似度        ///         /// 第一个字符串        /// 第二个字符串        ///         static decimal GetSimilarityWith(string str1, string str2)        {            decimal Kq = 2;            decimal Kr = 1;            decimal Ks = 1;            char[] ss = str1.ToCharArray();            char[] st = str2.ToCharArray();            //获取交集数量            int q = ss.Intersect(st).Count();            int s = ss.Length - q;            int r = st.Length - q;            return Kq * q / (Kq * q + Kr * r + Ks * s);        }

例如:

string str1="第十一届成像技术及其在原子分子物理中的应用学术研讨会";

string str2=str1;

var r= GetSimilarityWith(str1,str2);

Console.WriteLine(r); //输出如下

说明:即使肉眼看起一样,但是也会因为权重的设置比例问题,不会输出到 1,也就是说不会有100%相似度。

原文地址:C#计算两个字符串的相似度 - 建站教程 (jiuaidu.com)

第二种:莱文斯坦距离算法

static double ComputeTextSame(string str1, string str2) // 计算文本相似度函数(适用于短文本)        {            int textSameLength = 0;            double maxLength = Math.Max(str1.Length, str2.Length);            if (maxLength <= 0)            {                return 1.0;            }            try            {                int m = str1.Length;                int n = str2.Length;                int[,] d = new int[m + 1, n + 1];                for (int i = 0; i <= m; i++)                    d[i, 0] = i;                for (int i = 0; i <= n; i++)                    d[0, i] = i;                for (int i = 1; i <= m; i++)                {                    for (int j = 1; j <= n; j++)                    {                        d[i, j] = d[i - 1, j - 1] + (str1[i - 1] == str2[j - 1] ? 0 : 1);                        //修改一个字符                        d[i, j] = Math.Min(d[i, j], d[i - 1, j] + 1);                        // 插入一个字符串                         d[i, j] = Math.Min(d[i, j], d[i, j - 1] + 1);                        //删除一个字符                     }                }                textSameLength = d[m, n];            }            catch //出错返回一个很大值            {                textSameLength = 10000;            }            return (maxLength - textSameLength) / maxLength;                  }

例如:

string str1="第十一届成像技术及其在原子分子物理中的应用学术研讨会";

string str2=str1;

var r= ComputeTextSame(str1,str2);

Console.WriteLine(r); //输出如下

原文地址:C#计算字符串相似性的方法 - phpStudy (xp.cn)

关键词: 成像技术 计算公式 非常重要