我已经创建了一个非常简单的聊天机器人基于RASA NLU。在本例中,我手动创建一些示例输入文本,并创建一个模型,用于针对未知输入源使用它。暂时没问题。
作为我下一步的学习,我想使用一个大的文档网作为我的聊天机器人的来源。
我应该做什么步骤,使程序培训自动在文档网络文本语料库上,并能够回答基于用户的查询?我想避免手工训练。
对于这个NLU问题陈述,我可以使用哪些库?
几乎所有的互联网资源都在谈论SQuaD模型。它们与自定义域培训的关系如何?
任何博客,教程,lib,可以帮助我这样做将是有用的。
发布于 2018-07-04 12:05:55
似乎你的问题是某种形式的常见问题匹配。用户提出一个问题,NLU部分将此问题与您的文件中的相关答案相匹配。
在培训方面,你可以做两件事:
您只需在输入和不同的输出之间使用一个字符串匹配距离(如Levenshtein ),并返回最接近的输出。这样你就不需要训练你的模特了。由于这是一种K近邻的形式与一个邻居,学习发生在推理过程中。这样做的好处是,如果您的文件更改,或者您有更多的答案,您将不必更改任何东西。
这就是你所说的自学。
这个博客解释了如何使用fuzzywuzzy (一个计算这些距离的Python包):https://marcobonzanini.com/2015/02/25/fuzzy-string-matching-in-python/
显然,简单的距离测量可能不是很好,也可能不是很好。您的另一个选择是将此视为分类问题。您的类是您与文件不同的答案,您的输入是用户输入。这将需要对用户输入进行标记。
这就是你所说的手工训练。
上面提到的一切都是假设你有一个已知的可能答案列表。如果你想要的是让你的机器人“查询”你的文本文件,自己找出答案,这将是一个复杂得多的任务。开放文本问答是一个复杂的研究领域。想想谷歌吧。它有时能回答简单的问题,比如“谁?”,“什么时候?”等等,但它还不能很好地给出简洁的回答复杂的查询。
https://datascience.stackexchange.com/questions/33974
复制相似问题