Как лучше всего хранить данные для чат-бота? - PullRequest
3 голосов
/ 17 сентября 2011

Я искал в интернете чат-ботов .Это было только весело.Но сейчас я так сильно люблю эту тему, что хочу разработать своего собственного чат-бота.
Но прежде всего нужно найти хороший способ управления «мозгом» моего чат-бота.Я думаю, что это лучшее решение для сохранения всего в файл 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 ]

3 голосов
/ 17 сентября 2011

Варианты хранения данных: Зависит от

Простые, не обучающиеся боты: XML в порядке

Похоже, у вас уже есть базовая XML-структура. Для начала я бы сказал, что это нормально, особенно для ботов, поддерживающих искусственный интеллект (if userMsg.contains('lega') then print('TOS & Copyright...').

Конечно, переключение на любой новый формат потребует времени и затрат.

Обучение, Сложные боты: база данных!

Если вы хотите сделать что-то гораздо большее, особенно если вы имеете в виду CleverBot , я думаю, вам понадобится база данных. Это потому, что когда ваш файл .. является файлом и гигантским, и попытка сохранить все это доступным в памяти требует больших ресурсов. Для такого проекта я бы порекомендовал базу данных.

Почему? Сложный английский

Некоторое время назад я написал сортировщик спама Nieve Bayes. Потребовалось около 10000 спама, чтобы «обучить» его с точностью 7%, что заняло около 6 часов и 1,5 ГБ ОЗУ для хранения данных в памяти. Это много данных. Английский очень сложен и не может быть действительно разбит на if 'pony' then 'saddle', поэтому для того, чтобы бот "выучил" лучшие ответы, ваша база данных станет массовой и очень быстрой.

2 голосов
/ 20 сентября 2011

Я думаю, что мы можем смоделировать эту информацию как онтологию.Вы можете закодировать гораздо более богатую информацию с точки зрения отношений, атрибутов, уровней и т. Д. Существуют форматы, такие как RDF, OWL и т. Д., Которые можно использовать и которые поддерживаются практически всеми языками.

И самое главное, управлять данными было бы легко, если бы вы использовали редактор онтологий, я бы порекомендовал Protege (http://protege.stanford.edu/), взгляните на это.

0 голосов
/ 06 декабря 2012

Вы также можете попробовать что-то вроде graphdb, который Freebase использует для хранения отношений между различными сущностями.По сути, это граф узлов и ребер, и каждый узел имеет атрибуты и значения для этих атрибутов.Ребра также имеют атрибуты, подобные узлам, и ребро, соединяющее два узла, определяет отношения между ними.

0 голосов
/ 17 сентября 2011

Вы, вероятно, просматриваете базу данных. Любая серьезная система НЛП будет использовать ее, если только у вас нет основанной на правилах вещи, которая работает на небольшом наборе правил. Подумайте, хотите ли вы написать фрагмент кода C, который обрабатывает 5 МБ XML-файл. Я бы определенно не. Стэнфордский университет организует отличную демонстрацию, если вам интересна лингвистическая сторона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...