使用ChatBot订购电影票

pka*_*zak 5 nlp machine-learning text-mining chatbot

我的问题与我刚刚开始研究的项目有关,而且它是一个ChatBot.

我想要构建的机器人有一个非常简单的任务.它必须自动化购买电影票的过程.这是非常接近的域,并且机器人具有对影院数据库的所有必需访问权.当然,如果用户消息与订购电影票的过程无关,那么机器人可以像"我不知道"那样回答.

我已经创建了一个简单的演示,只是为了向少数人展示它,看看他们是否对这样的产品感兴趣.该演示使用简单的DFA方法和一些简单的文本匹配与词干.我在一天内入侵了它,结果发现用户对他们能够成功订购他们想要的门票感到印象深刻.(该演示使用与影院数据库的连接,为用户提供所需的所有信息,以便订购他们想要的门票).

我目前的目标是创建下一个版本,一个更高级的版本,特别是在自然语言理解方面.例如,演示版本要求用户在单个消息中仅提供一个信息,并且无法识别他们是否提供了更多相关信息(例如电影标题和时间).我读到这里有用的技术被称为"帧和插槽语义",它似乎很有希望,但我还没有找到有关如何使用这种方法的任何细节.

而且,我不知道哪种方法最适合改善自然语言理解.在大多数情况下,我考虑:

  1. 使用"标准"NLP技术以更好地理解用户消息.例如,同义词数据库,拼写纠正,词性标签,训练一些基于统计的分类器来捕捉相似性和单词之间的其他关系(如果可能的话,在整个句子之间?)等.
  2. 使用AIML为会话流建模.我不确定在这样一个封闭的领域中使用AIML是否是个好主意.我从来没有用过它,所以这就是我要问的原因.
  3. 使用更"现代"的方法并使用神经网络训练用于用户消息分类的分类器.但是,它可能需要大量标记数据
  4. 我不知道的任何其他方法?

哪种方法最适合我的目标?

你知道在哪里可以找到更多有关"框架和插槽语义"如何工作的资源吗?在谈到框架和插槽方法时,我指的是斯坦福的PDF.

eto*_*tov 0

这个问题相当广泛,但这里有一些想法和实用建议,基于类似问题领域的 NLP 和基于文本的机器学习的经验。

我假设虽然这是聊天机器人的“更高级”版本,但实际上可以进行的工作范围非常有限。在我看来,这是一个非常重要的因素,因为不同的方法在工作所需的手动工作量和类型上存在很大差异,而且最先进的技术在这里可能基本上无法实现。

一般来说,要考虑的两种主要方法是基于规则的方法和统计方法。第一个传统上更关注模式匹配,并且在您描述的设置中(可以投入有限的精力),将涉及手动处理规则和/或模式。此方法的一个示例是使用一组封闭(但较大)的模板来匹配用户输入(例如使用正则表达式)。这种方法在性能方面通常存在“玻璃天花板”,但可以相对较快地产生相当好的结果。

统计方法更多地是为某些机器学习算法提供一堆数据,并让它从中提取规律,将手动工作集中在收集和标记良好的训练集上。在我看来,为了获得“足够好”的结果,您需要的数据量可能会非常大,除非您能想出一种方法来轻松收集大量至少部分标记的数据。

实际上,我建议在这里考虑采用混合方法。使用一些基于机器学习的统计通用工具从用户输入中提取信息,然后应用手动构建的规则/模板。例如,您可以使用 Google 的Parsey McParseface进行句法解析,然后对结果应用一些规则引擎,例如将动词与可能的操作列表(如“购买”)进行匹配,使用提取的语法关系来查找电影名称的候选者,这应该会让你很快得到很好的结果,因为句法解析器的强大功能将允许“理解”甚至是复杂的和可能令人困惑的句子。

我还建议推迟您考虑做的一些元素,例如拼写纠正,甚至词干和同义词数据库 - 因为问题相对封闭,您可能会通过投资规则/模板框架获得更好的投资回报率手动规则创建。该建议也适用于对话流的显式建模。