文本相似度算法

Eug*_*neP 14 java text nlp similarity levenshtein-distance

我有两个字幕文件.我需要一个函数来告诉它们是代表相同的文本还是相似的文本

有时只有一个文件中有"风正在吹......音乐在播放"的评论.但80%的内容都是一样的.该函数必须返回TRUE(文件代表相同的文本).有时会出现像1而不是l(1 - L)这样的拼写错误: 她只能放行李.当然,这意味着函数必须返回TRUE.

我的评论:
该函数应返回文本相似度的百分比 - 同意

"所有人都很开心"和"所有人都不开心" - 这里被认为是拼写错误,因此被视为同一文本.确切地说,函数返回的百分比将更低,但足够高以表示短语是相似的

请考虑是否要在整个文件或搜索字符串上应用Levenshtein - 不确定Levenshtein,但算法必须作为一个整体应用于文件.不过,这将是一个很长的字符串.

bco*_*sca 11

Levenshtein算法:http://en.wikipedia.org/wiki/Levenshtein_distance

除零结果之外的任何内容都意味着文本不是"相同"."相似"衡量它们的距离/附近.结果是一个整数.

  • +1:整数结果需要规范化以确定整个文件的相似性.例如,相似度= Levenshtein距离/ Num.字符.我还建议在应用此算法之前预处理文件以纠正拼写错误. (2认同)
  • @Fabian:它是PHP中的内置函数:http://php.net/manual/en/function.levenshtein.php (2认同)

Yon*_*tan 5

对于您所描述的问题(即编译大字符串),您可以使用余弦相似度,它根据术语频率向量返回0(完全不同)到1(相同)之间的数字.

您可能希望查看此处描述的几个实现:Cosine Similarity