【问题标题】:semantic search engine and navigator语义搜索引擎和导航器
【发布时间】:2012-06-05 13:09:13
【问题描述】:

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

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

    Ans: 这将花费你 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,它似乎很有用,但我不知道它本身是否可以满足我的要求。

有没有类似的项目文章?

【问题讨论】:

    标签: text nlp semantics nltk aiml


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢您的回复。所以我会首先尝试进行分类,寻找像 to/from、cost、distance 这样的词。但是我的理解是,这只会给我一个关于问题是什么的话题,而不是真正被问到的问题,因此我认为你提到我应该在之后尝试解析它。所以基本上分类是把搜索空间缩小为更精细的空间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多