2012-05-31 52 views
1

您好我在AI做了一个短期课程,我们设计了一个基于AIML和python的聊天机器人。我有一个新的任务来设计某种形式的语义搜索引擎。我希望人们能够浏览数据或搜索问题,并给他们结果。最初它将用于特定主题,例如运输和地理。从用户的一些样本输入:语义搜索引擎和导航器

  1. 花费会是多少,我从X到Y得到什么?

    答:你要花费26 $

  2. 多远是从x Z'

    答:这是25英里

  3. 用户可以添加facourite路由,以便他们可以简单地输入,添加自己喜欢的roAnd那么用户将被要求输入的F路线。

    答:你问添加到您最喜爱的路线的入口?

    用户:是的。

    答案:请输入喜欢的路线。

  4. 显示我的常用路线。

    答:您的共同路线是x,y和z。

所以被搜索的数据可能是特定于用户的,因此可能必须使用数据库。有些数据是外部的,可能会启用Google地图来查询距离。有些问题可能只需要聊天机器人的回应。

那么我应该怎么做用户输入? Tokenize它,干掉它,解析它?

我希望的地方使用AIML但文章我读http://knytetrypper.proboards.com/index.cgi?board=gbot&action=print&thread=285。 AIML说只适合模式匹配。有人请指出正确的方向。我下载了NLTK,它似乎很有用,但我不知道它是否可以按我的要求做。

任何类似项目的文章?

回答

1

这是一个非常难的问题。如果将输入限制在一个非常小的空间内,它可以做到。在这一点上,尽管你只是使用一个词汇表,并且对每个可能的查询都有基本的命令。

有几种方式查询类型的区分: 1)解析,并尝试使用所有信息 2)部分解析/ POS标签 - 找到动词 3)机器学习/分类方法,使用POS机的功能,距离,语言/结构像“到” /“从”

...然后你可以尝试拉出查询参数一旦你正确分类查询。

我会避免做一个解析,直到你很肯定这是 - 什么样的查询的分类方法是最好的第一步,并与NLTK梅辛是非常有用的。

+0

非常感谢您的回复。所以我会首先尝试做分类寻找像/从,成本,距离的文字。不过,我的理解是,这只会给我一个问题的主题,但不是真正的问题,因此我认为你提到我应该尝试解析它。所以基本上这个分类就是将搜索空间缩小到一个更加精细的空间? – sqwale