我在互联网上寻找 chatbots 。这很有趣。但是现在,我非常喜欢这个主题,所以我想开发自己的聊天机器人 但首先要寻找一种管理聊天机器人“大脑”的好方法。我认为这是将所有内容保存在XML文件中的最佳解决方案,不是吗? 所以文件类型很清楚。来自不同名词之间的关系等。当我有一个名词,例如一颗树。如何最好地保存树的叶子,树枝和树根。那棵树需要水和阳光才能生存? 我应该这样保存吗?
这将是我的树 -example:
的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>
答案 0 :(得分:3)
数据存储选择:它取决于
简单的非学习机器人:XML很好
看起来您已经有了基本的XML结构。刚刚开始,我会说这很好,特别是对于AI支持 - 聊天机器人(if userMsg.contains('lega') then print('TOS & Copyright...'
)。
当然,切换到任何新格式都需要时间和开销。
学习,复杂的机器人:数据库!
如果你想做更大的事情,特别是考虑到CleverBot,我认为你需要一个数据库。这是因为当你的文件..是一个文件并且是巨大的并且试图保持它在内存中的所有可用时是资源密集的。对于这种项目,我建议使用数据库。
<强>为什么呢?英语很复杂
前段时间我写了一个nieve bayes垃圾邮件分类器。它需要大约10,000件垃圾邮件才能以7%的准确率对其进行“训练”,这需要大约6小时和1.5GB的RAM来将数据保存在内存中。这是很多数据。英语非常难,不能真正被分解为if 'pony' then 'saddle'
,所以对于机器人来说“学习”最好的答案,你的数据库将变得庞大而且非常迅速。
答案 1 :(得分:2)
我认为我们可以将这些信息建模为本体。您可以根据关系,属性,级别等对更丰富的信息进行编码。您可以使用RDF,OWL等格式,几乎所有语言都支持这些格式。
最重要的是,如果你使用本体编辑器管理数据会很容易,我会推荐Protege(http://protege.stanford.edu/),看看它。
答案 2 :(得分:0)
您可能正在查看数据库。任何严肃的NLP系统都会使用一个,除非你有一个基于规则的东西,它运行在一小组规则上。想想你是否想要编写一段处理5 MB xml文件的C代码。我绝对不会。如果您对语言方面感兴趣,Stanford大学会举办一个很好的演示。
答案 3 :(得分:0)
您还可以尝试使用Freebase用于存储各种实体之间关系的graphdb。基本上,它是节点和边的图,每个节点都具有这些属性的属性和值。边缘也具有与节点类似的属性,连接两个节点的边缘定义了它们之间的关系。