【问题标题】:Testing for similar string content测试相似的字符串内容
【发布时间】:2011-03-17 19:59:13
【问题描述】:

我正在编写一个机器人,它将分析帖子并使用来自数据库的模糊相关字符串进行回复。我的目标不是连贯性,只是为了模糊的相似性,可能会被认为是对这个话题一无所知的人(但知识渊博,可以尝试回复)。有哪些方法可以帮助我选择正确的回复?

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

(P. S. 数据库很大——大约有 500 000 条回复)

【问题讨论】:

    标签: c# string artificial-intelligence


    【解决方案1】:

    首先,除非你准备好编写大量代码,否则我认为你能期望的最好结果将是大约 50% 的回答率。

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

    然后,您可以将其与白名单和黑名单技术进一步结合,以忽略常用词并优先考虑某些关键字。然后,您可以继续调整这些列表以增强算法,因为您认为它有效。

    您还可以使用更简单的字符串指标来测试基本相似度。看看这个list of string metrics

    【讨论】:

    • 嗯,这可能会成为我的论文计划,所以我可能正在寻找大量更高准确性的代码。
    • 我认为字符串度量是一个很棒的(和相关的)论文主题。自然语言处理目前仍处于软件研究的最前沿,所以你在这一切上都是对的。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-16
        • 2021-05-06
        • 2012-10-19
        • 2014-07-15
        • 2017-12-28
        • 2018-11-20
        • 1970-01-01
        • 2013-11-24
        相关资源
        最近更新 更多