文本消息相似性识别算法

6
我正在寻找一种算法,可以比较两个文本消息(比如论坛帖子)并以百分比的形式确定它们的相似度。
为此,最有效的解决方案是什么?
这个算法的想法是识别论坛上使用超过两个昵称的用户,他们假扮成不同的人。
我将编写一个程序,读取他们发布的所有帖子,并将第一个账户的每篇帖子与第二个账户的帖子进行比较,以确定它们是否真正是两个不同的人或者只是单个用户的两个注册。

我认为有一些很好的字符串比较算法。我个人以前使用过这个,它有一个非常简单的API,可以快速地完成工作。 - Evan L
2
这很大程度上取决于你所说的“相似”和“最佳”的含义。有快速方法可以做得不错,也有慢速方法可以做得非常好,还有很多中间空间。你可能会对语义相似性感兴趣,或者你可能会对文体学感兴趣,即确定特定文本是否可能是由特定人写的。就你提出的问题而言,它太广泛了,无法引出一个好的答案。 - Jim Mischel
2个回答

1

我脑海中首先想到的是Levenshtein Distance, 但它更专注于单词相似性。

你可以使用tf-idf, 但如果你的语料库只包含两个文档,那么它可能效果不佳。

另一种选择是使用向量空间模型来表示文档(帖子),例如:

(w_0, w_1, ..., w_k)

其中

  • k 是您的文档中术语(单词)的总数
  • w_i 是第 i 个术语(单词)。

然后计算汉明距离,它基本上比较两个向量(数组)并计算它们不同的位置。您可以先丢弃停用词(如介词等单词)

请注意,用户可能会更改某些单词,使用同义词等。有很多模型可用于表示文档,计算它们之间的相似度。其中一些考虑了单词依赖性,这使得过程更具语义性,而其他模型则没有考虑。


1
汉明距离在这里无法使用,因为它是逐个比较向量的单元格。如果其中一个文档仅移动了一个单词,汉明距离将会很高。 - Warlord
@Warlord 您是正确的。也许,在仅比较两个文档时,diff算法(像vimdiff、Beyond Compare等使用的那样)更适合。 - Oscar Mederos

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接