匹配同一主题的句子的算法

时间:2014-03-28 12:51:14

标签: regex algorithm similarity levenshtein-distance hamming-distance

我一直在研究不同的算法,但我们找不到我正在寻找的东西。

汉明距离(仅适用于相同长度的琴弦) Levenstein距离(找到像小猫和坐着的类似的单词)

我正在寻找的东西可以找到关于同一个想法的句子。

例如:

Sentence 1: Josh got hurt while playing in the park.
Sentence 2: Josh fell off the slide and got hurt at the park.
Sentence 3: Be careful at the park, your kids could get hurt.
Sentence 4: Josh likes to go shopping.

我正在寻找的是

关于主题的

sentence 1 and 2,但不是 sentence 3 or 4

我想我可以尝试比较句子中的每个单词吗?

我非常感谢能指出正确方向的人。

3 个答案:

答案 0 :(得分:3)

通常,您需要使用一些自然语言处理(NLP)。如果您不熟悉该主题,我建议您查看nltk。它是一个python库,包含各种NLP问题的工具。他们还有一本免费的书,您可以查看,以便快速查看您可能需要的工具。

www.nltk.org/book/

我希望它有所帮助

答案 1 :(得分:1)

查看http://en.wikipedia.org/wiki/Topic_model,了解人们如何根据隐藏的"主题"他们分享。提到了一些常见的模型和算法。通常,您正在寻找主题模型。如果你正在寻找比维基上的更高级的东西,一些谷歌搜索应该找到论文。

答案 2 :(得分:0)

Levenshtein和汉明距离非常关注地方层面的差异。如果你想查找句子背后的主题,最好一起考虑句子中的所有单词。

简单的整句方法是tf-idf。如果您将每个句子视为文档,则计算术语(单词)在句子中出现的次数,并除以该术语出现的文档数量,您将获得句子中每个不同术语的数字。同一个词的数字相似的句子很可能是同一个主题。

您可以使用一种简单的方法,然后尝试不同的lemmatization或其他分组方案,如果您需要更好的性能。

与每个句子相关的数字的简单比较是cosine similarity