测试类似的字符串内容

我正在编写一个机器人,它将分析post并使用数据库中含糊的相关字符串进行回复。 我的目标不是为了保持连贯性,只是为了模糊的相似性,可能会因为某人对主题一无所知(但知识足以尝试回复)。 有哪些方法可以帮助我选择正确的答案?

我想到的一件事是创建一个词汇表,检查列表中的哪些元素在post中,并根据这些结果从数据库中获得回复。 这种原始方法在大约10%的时间内成功(基于对随机post的100个回复)。 我可能会用更多的单词扩展列表,但这种方法有其局限性。 还有更好的吗?

(PS数据库相当大 – 约500 000条回复)

首先,我认为除非你准备编写大量代码,否则你所希望的最好的答案率是50%左右。

如果您愿意接受一些统计数据,请查看术语频率 – 反向文档频率 。 基本上,您将使用不常用单词的频率来确定哪些关键字对文档至关重要,并将其用作tf-idf算法的输入,以使用相同的关键字提取其他回复。

然后,您可以将此进一步与白名单和黑名单技术相结合,以忽略常用字词并确定某些关键字的优先级。 然后,您可以继续调整这些列表,以便在您看到它工作时增强算法。

您还可以使用更简单的字符串指标来测试基本相似性。 看一下这个字符串指标列表 。

您可能希望研究矢量空间映射和相似性。 “模糊相关”的问题最有可能通过相似性统计分析来处理。

看看这种新颖的相似用法:

http://www.cromwell-intl.com/security/attack-study/

有一个名为“similar_text()”的PHP函数,(例如:$ percent_similar = similar_text($ str1,$ str2);)这个效果相当不错,但我没有在C#中提出类似的东西。 如果你能掌握PHP函数的源代码,你可能会尝试翻译它。 我想也可能有Java版本。