За склонение, извини Чужак?Честно скажу, что не совсем твоего сообщения, пока я вроде описываю алгоритм, а язык программирования, вроде не обсуждается. А тему я смотрел, и твое сообщение не проигнорировал.
Сообщение отредактировано: St@senk@ -
--------------------
Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький. Конфуций
St@senk@, но более важен, на мой взгляд, не язык программирования, а логико-семантическая структурированность самой модели
Я видел этот пост и я с ним согласен. Но сразу сказал, что разработка такой модели - занятие аццки сложное. Есть у кого-нибудь конкретные предложения по поводу структуры этой БД? В ней должно храниться множество различных понятий, и каждое понятие само по себе будет представлять очень сложную структуру.
Хранение этой БД действительно проблеммма, также проблемммой является её заполнение. Моя идея: Сделать 1 БД где будет стоять Id номер, слово (в его начальной форме), и сделать вторую БД, где будут стоять последовательности номеров, где каждая последовательность это первый элемент - первая вершина ребра, последняя - вторая вершина ребра, а все остальное - параметры ребра. и третья база - синонимы.
--------------------
Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький. Конфуций
Сделать 1 БД где будет стоять Id номер, слово (в его начальной форме), и сделать вторую БД, где будут стоять последовательности номеров, где каждая последовательность это первый элемент - первая вершина ребра, последняя - вторая вершина ребра, а все остальное - параметры ребра.
Маловато данных получается...
Для каждого "понятия" надо хранить: 1 Id - ну, без него ни куда 2 Слово во всех формах (падежах и тд) или информацию, чтобы формы можно было получать с помощью какого-либо алгоритма. Это нужно, чтобы программа могла грамотно употреблять слово, определяющее данное понятие. 3 Характеристики "понятия". Это самое сложное. Здесь должна храниться система параметров, которые полностью определяют место данного "понятия" в системе бытия (во как завернул ). Помните, как я про стол писал? Вот то самое оно и есть... 4 Связи. Как это "понятие" связано с другими. И типы связей тоже надо указать.
Все равно сливаться Не будем. Вижу расхождение (Мое-и Ваше) в основополагающих принципах и методах. Все эти рассуждения о ребрах, графах... Решение Своей вижу задачи через логику человека, а не компьютера. Все это многообразие понятий-оно ведь для человека не проблема-он ими просто пользуется. Моя задача - не ИС, у меня человек взаимодействует с программой по своей, человеческой логике. Обратили внимание, что моя программа простая, НО на вроде бы простой вопрос: "Объект большой или маленький?" НЕ два (большой/маленький), а ШЕСТЬ вариантов ответа. Логика построения такая-1,2- Выбор большой или маленький? 3-Включение-и большой, и маленький, 4-Исключение-не большой, не маленький, 5,6-Предпочтение-Скорее большой, Скорее маленький- и Выбирает пользователь. И это логика-не компьютера и не языка программирования.
--------------------
Смысл откроется тебе. Красками играя Жизнь предстанет как поток без конца и края.
В этом мире поройразбиваютсямечты Но чтобы он стал другойВдруг в него приходишь ТЫ...
После странствий и скитаний настают другие времена. Старая волна уходит и приходит новая волна.
Ребята, не забываем, что на уровне 3-4 года договорились писать и обдумывать! Кто примерно знает, сколько слов знает малышь в эти года? smile.gif blum.gif
Сложность не только в количестве слов, но, в первую очередь, в структуре БД.
Цитата
А можно пример привести? Как это описывать ты хочешь в коде?
Вот в коде записать это все как раз и проблематично.
Во первых, Id байтом не обойдется, минимум word. Во вторых, пункты 2-3 вряд ли реализуются простым массивом, тут надо свои структуры придумывать, сложные. В третьих, со связями как раз проще всего... Как ты граф реализуешь? Вот так и связи. Плюс у каждого "ребра" свои параметры, как писал St@senk@.
Хорошо,давайте точно обговорим кто учавствует! Распределим обязанности. Я допустим готов взять с кем-то БД а другой копит слова и т.д? Переодически будем писаться (ударение на а! ) здесь..
Было бы странно, если бы я не учавствовал Согласен, что надо разделиться. Но пока учавствует не очень много народа, поэтому возможно будем делать все одной групой, ступенчато.
--------------------
Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький. Конфуций
Поэтому я предлагаю сделать граф существительных, и к каждому существительному будет идти ребро, весом которого является набор характеристик. (Заяц - длинные, белые, смешные...->уши)
Не совсем, но близко к тому... Здесь введены уже предложения, как я понял, а я хочу чтобы, по словам и карте их зависимости лингвистический анализатор сам конструировал предложение, которое будет служить ответом на данный запрос.
--------------------
Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький. Конфуций
Ладно,попробую начать конструировать БД. Ст@сенк@ предоставь полный план того,как должна быть устроена БД по пунктикам. Какие детали в ней будут..Надеюсь Archon тоже присоединится!
Если бы я еще знал как ее сконгструировать... Как я понял идей как представить это в коде нет не только у меня, но и у Archon, либо он скрывает, что знает как это реализовать. Что у нас есть: Существетильное Описательное (Глаголы, Наречия ...) Вершины графа - существительные, а веса ребер - массивы Описательных наверное
--------------------
Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький. Конфуций
Archon не присоединится. Я пол года потратил на обдумывание полностью аналогичной идеи, и до реализации дело так и не дошло.
Но по поводу некоторых общих вопросов могу высказать свои идеи. Для начала... что должно быть:
1 "База Знаний" (здесь и далее названия в кавычках - условные термины). Это та самая БД что мы обсуждали. В ней хранятся "понятия" (определяются существительными), "действия" (определяются глаголами), и тд. Таким образом это совокупность нескольких БД. В какой форме хранить все эти "понятия", "действия" и прочее - один из основных вопросов написания этой программы. Некоторые мысли по поводу хранения "понятий" я писал выше.
2 "Память". В ней хранится информация об известных программе "событиях".
3 "Блок обработки текстовых сообщений". Обеспечивает семантический анализ предложений и осуществляет связанные с этим действия. Например, если предложение повествовательное - строит модель "события", записывает ее в "память" и, по возможности, пополняет "БЗ", если вопросительное - ищет ответ и тд.
Пример разбора предложения: 'Мама мыла раму'
Предложение повествовательное, значит нужно строить модель. Два существительных, значит в модели создаем два "объекта": один "объект" на базе понятия "мама" (описание понятия хранится в "Базе знаний"), и один на базе понятия "рама". В предложении есть глагол ("действие"). Исходя из грамматики делаем вывод что объект "мама" совершал в прошлом над объектом "рама" действие "мыть". Вот и готова модель "события". Ее можно сохранить в "памяти" в примерно таком виде: во время <время_и_дата> была получена информация о том, что в прошлом (относительно времени получения информации) совершалось действие определенное моделью <id модели>. Кроме того из этого предложения программа получит информацию, что объект "мама" в принципе может совершать над объектом "рама" действие "мыть", и таким образом пополнит "Базу Знаний" (посредством создания новых "связей" между этими "понятиями").
4 "Набор определяющих поведение динамик". Если реализовать только пункты 1 - 3, программа сможет понимать то что пользователь ей набирает, и таким образом накапливать знания. Но это как собака, которая все понимает, но сказать не может, скучно... Чтобы программа смогла не только отвечать на вопросы, но и самостоятельно произносить фразы и поддерживать разговор, нужно задать смысл этим ее действиям. Для этого ей нужно сделать потребности. Так как на окружающий мир программа влиять не может и никаких физических потребностей у нее тоже нет, потребности должны быть интеллектуальные. Например - сбор информации. Но просто бессистемный сбор информации - это тоже не интересно, поэтому стремления программы можно поделить на "управляющие динамики". Например у программы может быть динамика, заставляющая ее интересоваться всем, что связано с биологией. Или можно вложить в программу стремление найти ответ на какой-либо вопрос...
5 "Характер" Те же динамики, но их цель - сделать поведение программы более человечным, изобразить чувства, что ли..
6 "Настроение" Тоже самое, что и 5, но меняющееся в зависимости от обстоятельств.
Все что я выше написал, получилось весьма общим и, местами, невнятным. ;) Так что задавайте вопросы (если, конечно, мои мысли показались вам интересными), я дам разъяснения.
PS Интересно, найдется кто-нибудь, кто все это прочитает? ;)
PS Интересно, найдется кто-нибудь, кто все это прочитает? ;)
Я прочитал, мне понравилось. Вообще, если даже не сможете создать Искуств. Собеседника, то ваша тема-неплохой полигон для отработки идей, которые могут использоваться в экспертных системах.
--------------------
Смысл откроется тебе. Красками играя Жизнь предстанет как поток без конца и края.
В этом мире поройразбиваютсямечты Но чтобы он стал другойВдруг в него приходишь ТЫ...
После странствий и скитаний настают другие времена. Старая волна уходит и приходит новая волна.
Наверно я отсоединяюсь.Вы должны меня понять,народу мало,у самого времени на все это нет..Дело даже не в сложности..Успехов!(если будет много народу на проект,то я вернусь,а пока...)
Archon , идея классная, в совокупности с моей идей, наверное, можно сделать что-то, способное имитировать нормального человека. Жалко, что пока я остаюсь один, но трудности меня не страшат. Начну пытаться реализовывать. Пока не буду браться за лингвистический анализ, пока сделаю просто обработчик запросов. Буду отписываться тут, но надеюсь, что кто-то присоединится к реализации этой программы.
--------------------
Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький. Конфуций
Благородное дело. Молодец! Думаю начать следует вот с чего... Сделай сперва программу, реализующую разбор предложений типа "Мама мыла раму". В ней должны быть реализованы "База знаний" и "Память" на минимальном необходимом для работы программы уровне. Эта задача не очень сложная. А потом развивай эту программу так: придумываешь пример предложения, которое твоя программа еще не может корректно обработать и дополняешь ее, чтоб могла. И так, шаг за шагом, глядишь что нибудь и выйдет.
Ребята, не забываем, что на уровне 3-4 года договорились писать и обдумывать! Кто примерно знает, сколько слов знает малышь в эти года?
Около 1000-2000 слов. Грамматически связанные предложения. Почитать можно тут Но имейте в виду, что дети пользуются шаблонами в разговоре. Только не путайте с устойчивыми словоформами, хотя и это тоже стоит учесть. И из тех 2000 слов что они знают, активно используется лишь 10 часть в лучшем случае. ЗЫ: Я пас. В проекте не участвую.
--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!