文本相似性算法

我有两个字幕文件。我需要一个函数来判断它们是表示相同的文本,还是表示相似的文本

有时会有评论说“风在吹......音乐正在播放“仅在一个文件中。但80%的内容将是相同的。该函数必须返回 TRUE(文件表示相同的文本)。有时有拼写错误,如1而不是l(一 - L),如这里:她1eft包袱。当然,这意味着函数必须返回 TRUE。

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

“所有的人都很高兴”和“所有的人都不快乐” - 在这里,这将被认为是拼写错误,所以这将被视为相同的文本。确切地说,函数返回的百分比会更低,但足够高,足以说明短语是相似的。

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


答案 1

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

除零结果以外的任何内容都意味着文本不是“相同的”。“相似”是衡量它们距离/距离的指标。结果为整数。


答案 2

对于您描述的问题(即合并大字符串),您可以使用余弦相似性,它基于术语频率向量返回0(完全不同)到1(相同)之间的数字。

您可能希望查看此处描述的几个实现:余弦相似性