база вопросов -> база ответов
если грамотно разрулить, все ваши нейросети пролетают.
Если так, то это скучно))))) Надо что-то более глобальное))))))
Цитата:
Сообщение от supernewbie
причем тут какая граматика
При том, что это основа любого языка, и если хотите чтобы генерировались хотя бы правильно построенные фразы, то все начинается именно с посторения предложения, а не с какого-то там восприятия мира... А построение предложенния возможно только на основе грамматики... То бишь нужно сначала научиться генерить фразы, хотя бы не осмысленные, но как минимум правильно построенные... А потом уже дальше всякие анализаторы добавлять...
Хотя если действильно нужно банальные несколько десятков-сотен фраз, то это не стоит того))))
Последний раз редактировалось Aries, 05.04.2011 в 14:22.
При том, что это основа любого языка, и если хотите чтобы генерировались хотя бы правильно построенные фразы, то все начинается именно с посторения предложения, а не с какого-то там восприятия мира... А построение предложенния возможно только на основе грамматики... То бишь нужно сначала научиться генерить фразы, хотя бы не осмысленные, но как минимум правильно построенные... А потом уже дальше всякие анализаторы добавлять...
Хотя если действильно нужно банальные несколько десятков-сотен фраз, то это не стоит того))))
как он будет генерировать фразы не зная значения слов, граматика будет складыватся сама, по логике значения слов, воообщем уже дня 2 размышляю над этим, сегодня\завтра буду начинать 100%
как он будет генерировать фразы не зная значения слов
А вот это уже должен быть второй или третий шаг построения)))
Цитата:
Сообщение от supernewbie
граматика будет складыватся сама
грамматика сама не сложится, если ты ее не опишешь...
Ты когда-нибудь пытался писать компилятор, интерператор или что-нить такое? Если да, то принцип построения будет аналогичным...
То бишь порядок такой: сначала мы составляем список слов, выбираем синтаксические категории и соответсвующие им слова... Описываем грамматику, т.е. принцип построения фраз в языке, а потом уже на основе этого например через конечные автоматы или любым другим способ начинается разбор фраз, разбитием на лексемы и т.д... Потом уже строится синтаксический анализатор, в котором и должны быть все мозги, которые будут заставлять понимать его текст...
Ок)
1 - все понятно, проблем нет)
2 - Если не нужна пунктуация, то ее можно и опустить... Хотя правильнее сделать на уровне описания правил, что-то типо
предложение -> фраза
предложение -> фраза!
предложение -> фраза.
предложение -> фраза?
3. Повторюсь. Я пока говорю о первом этапе, т.е. описание грамматики. Т.е. смысловая законченность, это уже дело синтаксического анализатора, который надо строить после описания грамматики. Про него, предлагаю говорить уже потом, т.к. там все куда более сложно) Ну а про интонацию... Тут я хз))) Если уж так глубоко копать и все это реализовать, то смело можно нобелевскую премию получать)))))
4. См. последнее предложенияпункта 3)
ЗЫ и вообще я всего лишь стал объяснять как правильно было бы строить язык... Но если бы все было настолько просто, то я хз чем бы ща занимались разработчики искуственного интеллекта и робототехники))))
ЗЫЫ готового решения у мну тож нет, есть только идеи, но и то не продуманные до конца... Т.е. первый шаг построения грамматики - легко, затем лексический анализатор - сложнее (хотя если конечные автоматы подойдут, то все отл, а если нет, то надо искать или придумывать свой механизм сравнения фразы с правилами грамматики), затем синтаксический анализатор (это вообще ипануться,т.к. тут идет уже не просто разбор, а осмысление фраз, тут я пока даж не пытался думать о реализации, есть только общее представление)
Последний раз редактировалось Aries, 05.04.2011 в 15:57.
Таааакс… Маленький фейл с моей стороны))))
Хотел все показать на конкретном программном примере, но понял, что даже для простейшего случае надо не так уж мало времени, как показалось….
В общем начну сначала (т.е. с лингвистики по сути), с кодом если повезет все же потом доделаю, но пока чисто покажу простейшее описание грамматики языка, построенное по принципу описания грамматики языка программирования… Кто занимался теорией компиляторов, думаю, и сам сможет разобраться как на основе этого описания строить анализаторы.
Для начала по теории… По сути грамматика состоит из 4 элементов:
- входной алфавит
- нетерминальные символы
- начальный символ (из нетерминальных)
- правила применения
Т.к. простейший, то словарный запас маленький, и описание языка тоже минимальное… Но дальнейшее усложнение – чисто дело техники, т.к. в плане понимания вопроса ничего не изменит уже.
Теперь правила:
Фраза – > Гл., Гр. Сущ.
Гр. Сущ. – > Прил., Сущ
Гр. Сущ. – > Гр. Сущ., Предл., Гр. Сущ.
Гл. – > положить/взять
Сущ. – > стул/стол
Предл. – > в/на/под
Прил. – > синий/желтый
На основе данной грамматики можно в принципе строить фразы любой сложности, т.к. есть рекурсия вида Гр. Сущ. – > Гр. Сущ., Предл., Гр. Сущ.
Про осмысленные фразы конечно пока не говорим, но с точки зрения грамматики фразы будут построены правильно
Например:
«Взять синий стол»
«Положить желтый стул под синий стол»
Конечно на моем примере много не построишь, надо куда больше правил (при этом если брать случай синтаксического анализатора, на правила применения накладываются дополнительные ограничения применения).
Дальше делается на основе конечных автоматов:
считывается строка по словам и на основе правил грамматики ее нужно свернуть к начальному символу. В случае если строка не свернулась, то с точки зрения грамматики строка заведомо неверная и разбор ее смысла уже не имеет значения.
А если свернулась, то надо переходить к синтаксическому анализу…
ЗЫ все это описываю в большей степени для supernewbie, чтобы не занимался всякой фигней и понял, что проще сделать конечный набор фраз))) Ну или хотя бы, чтобы попробовал понять, что без определения начальной грамматики языка все равно в итоге ничего хорошего не выйдет, если создавать бота хотя бы умеющего понимать не сложные, но уже более-менее естественные фразы.
ЗЫЫ если уж не понять настолько базовый момент, то про генерацию фраз я вообще молчу...