2010-04-10 55 views
1

我想为我的AI类做一个谜题AI聊天机器人。 所以我figgured输入到聊天机器人将是:单词特征标签

喜欢的东西: “这是蓝色的,它是,但它不是天花板”

翻译:

<Object X> 
    <blue> 
    <up> 
    <!ceiling> 
</Object X> 

(答案:天?)

所以输入是一组特征(现有的\不存在于对象中),输出是一个匹配的,最有可能的对象。

的域名将被限制在一个数量的对象,我可以输入所有属性,不过我在想:

我怎么能编程的特点建立一个数据库,一个字? 有没有这样的数据库可用?我怎么能标记一个词,我怎么能编程方式找到它的所有属性?我正在考虑爬行维基百科,或一些论坛,但我看不到它建立任何可靠的文字标签数据库。

关于如何实现这样的事情的任何想法?关于这个问题的一些文献的任何想法?

谢谢

+0

每当我看到一个支持AND,OR和NOT两个但不是全部三个(也包括括号)的搜索函数时,我会担心。 – Oddthinking 2010-04-10 16:29:21

回答

2

这听起来像是一个基本的分类问题。你基本上在问:给定N个特征(颜色=蓝色,位置=向上等),M分类中哪一个最可能?有很多算法可以完成这个任务(朴素贝叶斯,最大熵,支持向量机),但是你必须研究哪一个是最准确和最容易实现的。最大的挑战是通常需要获取准确的培训数据,但如果您愿意将其限制为手动输入示例列表,则应该简化您的实施。

你的例子表明,你选择的算法将不得不支持稀疏数据。换句话说,如果您已经在300个功能上训练了系统,则无需输入全部300个功能即可获得答案。它还会使您的培训和测试文件变得更小,因为您将忽略与某些对象无关的功能。例如

sky | color:blue,location:up 
tree | has_bark:true,has_leaves:true,is_an_organism=true 
cat | has_fur:true,eats_mice:true,is_an_animal=true,is_an_organism=true 

它可能不是非常有帮助的,因为它是私有的,而是一个商业应用,它类似于你想实现什么是网站20q.net,尽管该系统提出的问题,而不是用户。有趣的是,它是基于用户输入“在线”训练的。

维基百科确实拥有大量数据,但您可能会发现为您的程序提取数据将非常困难。 Cyc的数据更加标准化,但其API具有巨大的学习曲线。另一种选择是语义字典项目Wordnet。它为几乎所有的编程语言都有合理的直观API,以及数千个单词的广泛的上下文模型(例如,猫是一种猫科动物/哺乳动物/动物/生物体/物体)。

2

Cyc项目具有非常相似的目标:我相信它包含的两个推理引擎来执行AI,以及关于常识的知识(如天空的颜色)的事实数据库。

+0

谢谢,看起来很有趣,我一定会尝试一下 – 2010-04-10 16:26:15

相关问题