❶ 真心求“字符串相似度算法”,要真实可用。输出相似度百分比,最好用C#编写。C或C++亦可,不要java版。
testEMptyagain和
testagain
我觉得真要是比较字符的个数 得到9/14的就没有研究了。
这个算相似度的问题我刚才想想倒是有种不健全的方案可以试试, 比较 出一个完全相同的字母后,比较下一个看是否紧接着上一个字母 ,比如 t 相同 e紧接相同,这个时候初始化一定的加权比重,比如总相似度的分值为+10分
即使根据两个单词的间距算出来一个比重,如果间隔分别1 ,0 ,比如单词 tae于te,当比较e的时候就得到了间距为(1,0)可以将其当成一个二位的坐标,或者说是一个向量,根据这个值乘以一个总的分值得到所需要加的总相熟度。
这样 比如 taes 和tes 得到的相似度可能是99.5 绝对小于 tes于tes的相似度100,如果按照你原来的说法纯比较两个结果一样。
综合自己的需求,然后设计一个数学的公式出来。我想应该能得到满意的结果。
这个算法没有名字呢,ms我原创了哦~
❷ 如何进行相似度的计算,主要用什么方式
如何计算句子的语义相似度,很容易想到的是向量空间模型(VSM)和编辑距离的方法,比如A:“我爸是李刚”,B:“我儿子是李刚”,利用VSM方法A(我,爸,是,李刚)B(我,儿子,是,李刚),计算两个向量的夹角余弦值,不赘述;编辑距离就更好说了将“爸”,“儿子”分别替换掉,D(A,B)= replace_cost;
这是两种相当呆的方法,属于baseline中的baseline,换两个例子看一下就知道A:“楼房如何建造?”,B:“高尔夫球怎么打?”,C:“房子怎么盖?”,如果用VSM算很明显由于B,C中有共同的词“怎么”,所以BC相似度高于AC;编辑距离同理;
解决这种问题方法也不难,只要通过同义词词典对所有句子进行扩展,“如何”、“怎么”,“楼房”、“房子”都是同义词或者近义词,扩展后再算vsm或者edit distance对这一问题即可正解.这种方法一定程度上解决了召回率低的问题,但是扩展后引入噪声在所难免,尤其若原句中含有多义词时.例如:“打酱油”、“打毛衣”.在汉字中有些单字词表达了相当多的意义,在董振东先生的知网(hownet)中对这种类型汉字有很好的语义关系解释,通过hownet中词语到义元的树状结构可以对对词语粒度的形似度进行度量.
问题到这里似乎得到了不错的解答,但实际中远远不够.VSM的方法把句子中的词语看做相互独立的特征,忽略了句子序列关系、位置关系对句子语义的影响;Edit Distance考虑了句子中词语顺序关系,但是这种关系是机械的置换、移动、删除、添加,实际中每个词语表达了不同的信息量,同样的词语在不同词语组合中包含的信息量或者说表达的语义信息大不相同.What about 句法分析,计算句法树的相似度?这个比前两种方法更靠谱些,因为句法树很好的描述了词语在句子中的地位.实际效果要待实验证实.
对了,还有一种方法translation model,IBM在机器翻译领域的一大创举,需要有大量的语料库进行训练才能得到理想的翻译结果.当然包括中间词语对齐结果,如果能够利用web资源建立一个高质量的语料库对两两相似句对通过EM迭代词语对齐,由词语对齐生成句子相似度,这个.想想还是不错的方法!
❸ 计算两个概念的相似度,用什么算法比较好
本体映射可以用来解决本体异构问题,也是本体结盟、本体集成、本体合并、本体翻译等的技术基础。本文针对目前本体映射中概念相似度计算所存在的问题,提出了一种综合的相似度计算方法。首先根据两个概念名称相似性过滤出最相关的概念,减少相似度的计算;然后基于概念实例、基于概念属性、基于概念关系计算概念相似度,并进行综合;最后对其性能进行了简单分析。...
❹ 多边形相似度算法(数学+程序设计)
先别考虑多边形,就拿三角形说吧,如何定义相似度?相似形和非相似形?
把人的观测抽象出来,对比较的边和角度设定一个模糊范围……
(从没想过这样的问题,打扰了~)
❺ 如何计算网站网页相似度
据统计,网页上的大部分相同的页面占29%,而主体内容完全相同的占22%,这些重复网页有的是没有一点改动的拷贝,有的在内容上稍作修改,比如同一文章的不同版本,一个新一点,一个老一点,有的则仅仅是网页的格式不同(如 HTML, Postscript),文献[Models and Algorithms for Duplicate Document Detection 1999年]将内容重复归结为以下四个类型:
1.如果2篇文档内容和格式上毫无差别,则这种重复叫做full-layout plicate。
2.如果2篇文档内容相同,但是格式不同,则叫做full-content plicates
3.如果2篇文档有部分重要的内容相同,并且格式相同,则称为partial-layout plicates
4.如果2篇文档有部分重要的内容相同,但是格式不同,则称为partial-content plicates
网页去重的任务就是去掉网页中主题内容重复的部分。它和网页净化(noise rection),反作弊(antispam) 是搜索引擎的3大门神
去重在我看来起码有四好处:减少存储;增强检索效率;增强用户的体验;死链的另一种解决方案。
目前从网络的搜索结果来看,去重工作做的不是很完善,一方面可能是技术难度(precision和recall都超过90%还是很难的);另一方面可能是重复的界定,比如转载算不算重复?所以另一项附属的工作是对个人可写的页面(PWP)进行特殊的处理,那么随之而来的工作就是识别PWP页面。^_^这里就不扯远呢。
问题如何解决?
网页的deplication,我们的算法应该是从最简单的开始,最朴素的算法当然是
对文档进行两两比较,如果A和B比较,如果相似就去掉其中一个
然而这个朴素的算法,存在几个没有解决的问题:
0.要解决问题是什么?full-layout?full-content?partial-layout还是partial-content?
1. 怎么度量A 和 B的相似程度
2. 去掉A还是去掉B,如果A ~B(~表相似,!~表示不相似),B~C 但是 A!~C,去掉B的话,C就去不掉。另一个更深入的问题是,算法的复杂度是多少?假设文档数为n,文档平均长度为m,如果相似度计算复杂度为m的某一个复杂度函数:T=T(m),文档两两比较的复杂度是O(n^2),合起来是O(n^2 * T(m)) . 这个复杂度是相当高的,想搜索引擎这样处理海量数据的系统,这样的复杂度是完全不能接受的,所有,另外三个问题是:
3. 如何降低相似度计算的复杂化度
4. 如何减少文档比较的复杂度
5. 超大数据集该如何处理
第0个问题是,我们要解决的关键,不同的问题有不同的解决方法,从网页的角度来看,结构的重复并不能代表是重复,比如产品展示页面,不同的产品展示页面就有相同的文档结构。内容来看,复制网站会拷贝其他网站的主要内容,然后加些广告或做些修改。所以,解决的问题是,partial-content deplication,那么首先要抽取网页的主体内容。算法变成:
抽取文档主体内容,两两比较内容的相似性,如果A和B相似,去掉其中一个
其次,问题2依赖于问题1的相似度度量,如果度量函数具有传递性,那么问题2就不存在了,如果没有传递性,我们的方法是什么呢?哦,那就找一个关系,把相似关系传递开嘛,简单,聚类嘛,我们的框架可以改成:
抽取文档主体内容,两两比较内容的相似性,如果A和B相似,把他们聚类在一起,最后一个类里保留一个page
最后,归纳为几个步骤
第一步:识别页面的主题内容,网页净化的一部分,以后讨论
第二步:计算相似度
第三步:聚类算法,计算出文档那些文档是相似的,归类。
核心的问题是,“如何计算相似度?”这里很容易想到的是
1. 计算内容的编辑距离edit distance(方法很有名,但是复杂度太高)
2. 把内容分成一个个的token,然后用集合的jaccard度量(好主意,但是页面内容太多,能不能减少啊?)
好吧,但是,当然可以减少集合的个数呢,采样,抽取满足性质的token就可以啦,如满足 mod m =0 的token,比如有实词?比如stopwords。真是绝妙的注意.在把所有的idea放一起前,突然灵光一现,啊哈,
3. 计算内容的信息指纹,参考google研究员吴军的数学之美系列。
把他们放在一起:
第一步:识别页面的主题内容,网页净化的一部分,以后讨论
第二步:提取页面的特征。将文章切分为重合和或不重合的几个结合,hash out
第三步:用相似度度量来计算集合的相似性,包括用信息指纹,Jaccard集合相似度量,random projection等。
第四步:聚类算法,计算出文档那些文档是相似的,归类。
方法分类:
按照利用的信息,现有方法可以分为以下三类
1.只是利用内容计算相似
2.结合内容和链接关系计算相似
3.结合内容,链接关系以及url文字进行相似计算
一般为内容重复的去重,实际上有些网页是
按照特征提取的粒度现有方法可以分为以下三类
1.按照单词这个级别的粒度进行特征提取.
2.按照SHINGLE这个级别的粒度进行特征提取.SHNGLE是若干个连续出现的单词,级别处于文档和单词之间,比文档粒度小,比单词粒度大.
3.按照整个文档这个级别的粒度进行特征提取
算法-具体见真知
1. I-Match
2. Shingling
3. Locality Sensitive Hashing.(SimHash)
4. SpotSigs
5. Combined
❻ 数组相似度计算
你是求一个相似度算法:
如果一个公司真实排名为x1, 而你的打分排名是 x2,
怎么搞一个合理的评分数呢?
对差值的绝对值进行打分
|x1-x2|=0 得14分(28的一半)
|x1-x2|>=14 得 0分
就是:|差值|>14 得0分,|差值|<=14,得 14-|差值|
满分 14X28 分, 这样对28个排名,就可以算出得分了
相似度=得分/(14x28) X 100 (%)
用C语言编个计算小程序很简单。
❼ 相似度的计算 用哪个算法 协同过滤 算法
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
❽ 如何计算两组数据的相似度
数据文件:x和group,8个个案。x的取值为4.5 5.6 7.9 5.2 4.6 5.4 6.4 6.2,group的取值为 1=A组,2=B组。
操作:菜单选择
Analyze
Compare Means
Independent-Samples T Test
把x放入Test Variable(s)栏中,把group放入Grouping Variable,单击Define Groups,分别输入1,2,单击Continue按钮返回,单击OK按钮运行。
得t=0.178,P=0.865>0.05,2组数据间无差异。