4

我在网上寻找聊天机器人。这很有趣。但是现在,我非常喜欢这个主题,以至于我想开发自己的聊天机器人。
但首先要寻找一种管理聊天机器人“大脑”的好方法。我认为将所有内容保存在 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>
4

4 回答 4

4

数据存储选择:视情况而定

简单的非学习机器人: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',所以要让机器人“学习”最好的回答,你的数据库将很快变得庞大。

于 2011-09-16T21:40:19.997 回答
2

我认为我们可以将这些信息建模为本体。您可以编码更丰富的信息,包括关系、属性、级别等。您可以使用 RDF、OWL 等格式,并且几乎所有语言都支持这些格式。

最重要的是,如果您使用本体编辑器,管理数据会很容易,我会推荐 Protege (http://protege.stanford.edu/),看看它。

于 2011-09-20T08:44:01.000 回答
1

您还可以尝试使用 Freebase 用于存储各种实体之间关系的 graphdb 之类的东西。基本上,它是节点和边的图,每个节点都有属性和这些属性的值。边也具有类似于节点的属性,连接两个节点的边定义了它们之间的关系。

于 2012-12-06T03:57:30.513 回答
0

您可能正在查看数据库。任何严肃的 NLP 系统都会使用一个,除非你有一个基于规则的东西,它在一小部分规则上运行。考虑一下您是否想编写一段处理 5 MB xml 文件的 C 代码。我绝对不会。如果您对它的语言方面感兴趣,斯坦福大学会举办一个很好的演示。

于 2011-09-17T00:38:33.363 回答