我正在为 C# 中的软件工程课程编写聊天机器人。
我使用马尔可夫链生成文本,使用维基百科文章作为语料库。我希望它根据用户的输入以(至少稍微)智能的方式响应用户输入,但我不知道该怎么做。
我目前的想法是尝试从用户输入中提取关键字,然后使用这些关键字来指导句子生成。但是由于马尔可夫属性,关键字必须是句子中的第一个单词,这可能看起来很傻。同样,对于n
订单链,我每次都必须从用户那里准确提取关键字。 n
生成器的数据是一个字典,其中键是单词列表,值是单词列表以及权重,这取决于单词在键中单词之后出现的频率。就像:
{[word 1 , word 2 , ..., word n ]: [(word, weight), (word, weight), ...]}
它在命令行测试程序中工作,但我只是为n
它生成的每一位文本提供一个单词种子。
我希望有某种方法可以使链更喜欢用户使用的附近单词,而不是使用n
输入中的第一个/最后一个单词或n
关键字或其他任何单词来播种。有没有办法做到这一点?