我在网上找聊天机器人。只是好玩而已。但是现在,我非常喜欢这个话题,所以我想发展我自己的聊天机器人。
但第一件事是寻找一个好的方法来管理我的聊天机器人的“大脑”。我认为这是保存XML文件中所有内容的最佳解决方案,不是吗?
所以文件类型是清楚的。当我有一个名词,例如树时,不同名词之间的关系。如果一棵树有叶子、树枝和树根,我该如何保存它呢?一棵树需要水和阳光才能生存?
我应该那样保存它吗?
对于这个树,这将是我的XML -示例:
<nouns>
<noun id="noun_0">
<name>tree</name>
<relationship>
<has>noun_1</has>
<has>noun_2</has>
<has>noun_3</has>
<need>noun_4</need>
<need>noun_5</need>
</relationship>
</noun>
<noun id="noun_1">
<name>root</name>
</noun>
<noun id="noun_2">
<name>branch</name>
<relationship>
<has>noun_3</has>
</relationship>
</noun>
<noun id="noun_3">
<name>leaf</name>
</noun>
<noun id="noun_4">
<name>water</name>
</noun>
<noun id="noun_5">
<name>light</name>
</noun>
. . .
</nouns>发布于 2011-09-16 21:40:19
数据存储选择:它依赖于
简单的、非学习的机器人: XML是很好的
看起来您已经有了一个基本的XML结构。刚开始的时候,我想说这很好,特别是对于AI支持-聊天式的机器人(if userMsg.contains('lega') then print('TOS & Copyright...')。
当然,切换到任何新的格式都需要时间和开销。
学习,复杂的机器人:数据库!
如果您想做更大的事情,特别是考虑到CleverBot,我认为您将需要一个数据库。这是因为当你的文件。是一个文件,是一个巨大的文件,试图将其保存在内存中是资源密集型的。对于这种项目,我推荐一个数据库。
为什么?英语是复杂的
一段时间前,我写了一个垃圾邮件分类器。它花了大约10,000块垃圾邮件以7%的准确率对其进行“训练”,这需要6小时和1.5GB的RAM才能将数据存储在内存中。这是很多数据。英语是很难的,也不可能真的被破解成if 'pony' then 'saddle',所以对于一个机器人来说,要“学习”最好的回答,你的数据库将会变得庞大而迅速。
发布于 2011-09-20 08:44:01
我认为我们可以将这些信息建模为一个本体。您可以在关系、属性、级别等方面对更丰富的信息进行编码。您可以使用RDF、OWL等格式,并且几乎所有语言都支持这些格式。
最重要的是,如果您使用本体编辑器,管理数据将是很容易的,我会推荐Protege (http://protege.stanford.edu/),看看它。
发布于 2012-12-06 03:57:30
您还可以尝试类似Freebase使用的图形数据库来存储不同实体之间的关系。基本上,它是一个节点和边的图,每个节点都有这些属性的属性和值。边缘还具有类似于节点的属性,连接两个节点的边定义了它们之间的关系。
https://stackoverflow.com/questions/7450560
复制相似问题