【问题标题】:Is it possible to guide a Markov chain toward certain keywords?是否可以将马尔可夫链引导至某些关键字?
【发布时间】:2012-11-04 05:37:33
【问题描述】:

我正在为 C# 软件工程课程编写聊天机器人。

我使用马尔可夫链生成文本,使用维基百科文章作为语料库。我希望它根据用户的输入以(至少稍微)智能的方式响应用户输入,但我不知道该怎么做。

我目前的想法是尝试从用户输入中提取关键字,然后使用这些关键字来指导句子生成。但是由于马尔可夫属性,关键字必须是句子中的第一个单词,这可能看起来很傻。同样,对于n 订单链,我每次都必须完全从用户那里提取n 关键字。

生成器的数据是一个字典,其中的键是单词列表,值是单词列表,权重取决于单词在键中单词之后出现的频率。比如:

{[word1, word2, ..., wordn]: [(word, weight), (word,重量),...]}

它在命令行测试程序中工作,但我只是为它生成的每一位文本提供一个n 单词种子。

我希望有某种方法可以使链更喜欢用户使用的附近单词,而不是使用输入中的第一个/最后一个 n 单词或 n 关键字来播种它,或者任何。有没有办法做到这一点?

【问题讨论】:

    标签: c# algorithm artificial-intelligence markov-chains


    【解决方案1】:

    让您的聊天更智能的一种方法是从用户的输入中识别主题。假设你的马尔可夫大脑也适应不同的主题。然后要构建你的答案,你可以参考下面的字典:

    {([word1, word2, ..., wordn], topic): [(word, weight), (word, weight), ...]}

    要查找主题,您可以从WikipediaMiner 开始。比如下面是wikifyapi针对句子找到的主题及其对应的权重:

    统计太难了。有适合初学者的概率论教程吗?

    [{'id': 23542, 'title': 'Probability theory', 'weight': 0.9257584778725553},
     {'id': 30746, 'title': 'Theory', 'weight': 0.7408577501980528},
     {'id': 22934, 'title': 'Probability', 'weight': 0.7089442931022307},
     {'id': 26685, 'title': 'Statistics', 'weight': 0.7024251356953044}]
    

    可能那些已识别的关键字也可以被视为种子。 然而,问答并不是那么简单。这种基于马尔可夫的句子生成根本没有理解问题的能力。它所能做的最好的就是提供相关的内容。只是我的2美分。

    【讨论】:

    • 好主意!我希望这也适用于一篇文章(基于标题等)。
    • 本网站已停止服务。
    • 更新为指向其 github 页面。不过,您必须启动自己的服务器才能看到前端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    相关资源
    最近更新 更多