我的问题与我刚刚开始从事的项目有关,这是一个ChatBot。
我想建造的机器人任务很简单。它必须使购买电影票的过程自动化。这是相当接近的领域和机器人有所有所需的访问电影院数据库。当然,如果用户消息与订购电影票的过程无关,机器人可以回答“我不知道”。
我已经创建了一个简单的演示,只是为了向一些人展示,看看他们是否对这样的产品感兴趣。该演示使用简单的DFA方法和一些简单的文本匹配与词干。我在一天内黑了它,结果发现用户对他们能够成功地订购他们想要的票印象深刻。(演示使用到电影院数据库的连接,为用户提供所有需要的信息,以订购他们想要的门票)。
我目前的目标是创建下一个版本,一个更高级的版本,特别是在理解自然语言方面。例如,演示版本要求用户在一条消息中只提供一个信息,并且不识别他们是否提供了更相关的信息(例如电影标题和时间)。我在这里读到一种有用的技术叫做“框架和插槽语义”,它看起来很有希望,但是我还没有找到关于如何使用这种方法的任何细节。
此外,我不知道哪种方法是提高自然语言理解的最佳方法。在大多数情况下,我认为:
哪一种方法最适合我的目标?
您知道在哪里可以找到更多关于“框架和插槽语义”如何详细工作的资源吗?--我在谈论框架和插槽方法时是指这个来自斯坦福的PDF。
发布于 2016-06-08 07:42:40
这个问题相当广泛,但是这里有一些想法和实用的建议,基于NLP和基于文本的机器学习在类似的问题领域的经验。
我假设虽然这是你的聊天机器人的“更高级”版本,但它的工作范围是非常有限的。在我看来,这是一个非常重要的因素,因为不同的方法在数量和类型的手工工作所需的工作,和最先进的技术可能在很大程度上是遥不可及的。
一般来说,考虑的两种主要方法是基于规则的和统计的。第一种方法传统上更侧重于模式匹配,在您描述的设置中(可以投入有限的精力),将涉及手动处理规则和/或模式。这种方法的一个例子是使用一组封闭的(但很大)的模板来匹配用户输入(例如使用正则表达式)。这种方法在性能上通常有一个“玻璃天花板”,但可以相对较快地得到很好的结果。
统计方法更多的是给一些ML算法一堆数据,让它从中提取规律,集中手工收集和标注一个好的训练集。在我看来,为了获得“足够好”的结果,您需要的数据量可能会大得令人望而却步,除非您能够想出一种方法轻松地收集大量至少部分标记的数据。
实际上是,我建议在这里考虑一种混合方法。使用一些基于ML的统计通用工具从用户输入中提取信息,然后应用手工构建的规则/模板。例如,您可以使用Google的帕西McParseface进行语法分析,然后对结果应用一些规则引擎,例如将动词与一系列可能的动作相匹配,例如“购买”、使用提取的语法关系来为电影名称寻找候选词等。这将使您很快获得相当好的结果,因为语法解析器的强大功能将使您能够“理解”甚至是复杂且可能令人困惑的句子。
我还建议推迟一些您想要做的元素,比如拼写更正,甚至是词干和同义词DB --因为问题相对来说是封闭的,您在投资于规则/模板时可能会有更好的ROI --框架和手动规则创建。此建议也适用于会话流的显式建模。
https://stackoverflow.com/questions/37661101
复制相似问题