1

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

  1. 我从 x 到 y 需要多少钱?

    答:它会花费你 26 美元

  2. x 离 z 多远?

    答:25英里

  3. 用户可以添加最喜欢的路线,这样他们就可以简单地输入,添加最喜欢的路线,然后将要求用户输入 f 路线。

    Ans:您是否要求在您最喜欢的路线中添加一个条目?

    用户:是的。

    Ans: 请输入您喜欢的路线。

  4. 显示我的常用路线。

    Ans:您的常用路线是 x、y 和 z。

因此,正在搜索的数据可能特定于用户,因此可能必须使用数据库。一些外部数据可能会引发谷歌地图查询距离。有些问题可能只需要聊天机器人的回应。

那么我应该在用户输入时做什么?标记它,阻止它,解析它?

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

有没有类似的项目文章?

4

1 回答 1

1

这是一个非常困难的问题。如果您将输入限制在一个非常小的空间内,那么它是可行的。在这一点上,虽然您只是使用一个词汇表并且对每个可能的查询都有基本的命令。

有几种方法可以区分查询类型:1) 解析并尝试使用所有信息 2) 部分解析/pos 标记 - 查找动词 3) 机器学习/分类方法,使用 pos 作为特征、距离、单词/结构,例如“到”/“从”

...然后您可以在正确分类查询后尝试提取查询参数。

在您非常确定它是哪种查询之前,我会避免进行解析 - 分类方法是最好的第一步,并且对于弄乱该 NLTK 非常有用。

于 2012-05-31T17:14:42.117 回答