Это как-то реализовано, хотя-бы в виде пруф оф концепт?
Изложенное в статье мне кажется верным, но большая гибкость языка (анафоры, кореференции, даже омнимия) приведёт либо к генерации огромного количества вариантов распознавания для внесения в базу, либо неоднозначные варианты будут просто отбрасываться. Грамотный поисковый запрос — сам по себе фильтр, поэтому количество вариантов возможного понимания одного и того же текста в базе — не проблема для качества поиска, а только техническая проблема объёмов.
Есть прототип (пошлю вам ссылку в личном сообщении).
Огромного количества вариантов распознавания не образуется, работает ряд ограничений. Во-первых, формирование узлов — многоступенчатый процесс. Узлообразующие объекты имеют разный приоритет, сначала формируются узлы с более высоким приоритетом, потом остальные, и приоритетные узлы могут войти в узлы с низким приоритетом. Во-вторых, в большинстве случаев, формирующие узел объекты должны в тексте прилегать друг к другу. В-третьих, среди образованных узлов на каждом этапе остаются только лучшие (которые покрывают наибольшее количество объектов и удовлетворяют синтаксическим условиям).
Согласен, что неправильные узлы, приводящие к неверной семантической интерпретации омонимов — это не самая большая проблема, но бороться с этим надо, и быть готовым ко всем запросам, а не только "грамотным".
В ближайшее время планирую написать подробную статью именно про методику преобразования текста в семантическое представление.
Идея семантического поиска не нова, но я ни разу не видел хорошей полноценной реализации. Семантический поиск в Comperno так же завязан на онтологиях и жестко заданном списке отношений (их там более шестисот, кажется), поэтому хорошо работает на хороших текстах, т.е. эту технологию легко заточить под коропоративный поиск, внедрить в документооборот, но говорить о семантическом поисковом движке не приходится (несмотря на заявленный ими Findo): скорость индексации около предложения в секунду. А в целом согласен с комментарием Сергея — омонимия не даст жить спокойно, даже при успешно реализованной кореференции и анафоре. Мое мнение — онтологиями и списком связей (фреймов) эту задачу не решить, нужны другие алгоритмы, автоматически определяющие семантическую близость структур.
Согласен, что у этого подхода есть ограничения. Семантический поисковый движок, основанный на ручных онтологиях, вполне может хорошо работать при относительно небольшом количестве анализируемых текстов и при не очень большом количестве объектов, из-за необходимости для каждого объекта знать семантические связи. Построение масштабной семантической системы требует применения технологий машинного обучения, но в ее основе все равно должен лежать онтологический подход. Именно комбинация обоих подходов может привести к успеху.
В данной статье под "Базой знаний" подразумевается совокупность сформированных при обработке текстов смысловых узлов (типа "продажа — кто? Газпром, что? газ, куда? Европа"). Т.е. система семантических связей объектов друг с другом.
Хорошо.
Тогда могли бы Вы показать "смысловые узлы" на примере следующего предложения: "Запах вкуса видит слух"?
Очень интересно, откуда появляются в процессе обработки текста "семантические связи объектов друг с другом".
Эта система предназначена для обработки предложений, имеющих ясный информационный смысл, который отсутствует в предложенном Вами примере. Можно придумать еще много примеров, которые система в принципе "не поймет". Но это и не надо, поскольку она не претендует на полную универсальность, а предназначена для определенной области практического применения.
Семантические связи объектов друг с другом в тексте фактически формируются при построении узлов, когда парсер находит объекты, которые могут подойти на те или иные семантические роли для смыслового уточнения узлообразующего объекта.
Чтобы ПОНЯТЬ, что Графема (слово) является таковой, она СРАВНИВАЕТСЯ с Базой Графем (базой слов), являющейся, по существу, Базой Данных (БД) по своему формату.
Чтобы ПОНЯТЬ, что две Графемы имеют между собой Синтаксическую связь, такая связка (словосочетание) СРАВНИВАЕТСЯ с Базой синтаксических связок, также являющейся БД по своему формату.
Чтобы ПОНЯТЬ, что две и большее количество Графем, имеющих между собою синтаксические связи, имеют также и Семантическую связь, должна быть создана эталонная База семантических связок, являющейся уже принципиальной иной Базой по своему формату, так как, во-первых, она уже больше чем двумерный "синтаксический узел" и, во-вторых, она уже должна называться Базой Знаний или, по крайней мере, Базой Семантисов.
Поскольку, такой базы ещё в природе не существует, то семантические связи задают люди-эксперты, используя при этом суррогатные базы типа "онтологий", которые, в принципе являются большими словарями и не соответствуют "семантическому формату". Были попытки, правда, создания Общесемантических Словарей (например, РОСС), но должного развития это это не получило, да и вообще случилось фатальное отклонение в сторону "онтологий".
Если Вам действительно удалось создать Базу Знаний, то я снимаю, как говорится, шляпу и восхищаюсь Вашему достижению. Правда, пока из текста я этого не смог понять.
Да, видимо, в этой статье вопросы семантической обработки текста и баз знаний я не раскрыл достаточно понятно. Поэтому, на следующей неделе я планирую опубликовать более подробную статью на эту тему.
мячты мячты )) и далеко не новые. Нового в реализации не увидел. конкретно приведенный подход тупиковый изначально — вы сможете вывести только однозначные роли, коих не так много. Может только поймете как не надо делать
Реализация семантического новостного агрегатора с широкими поисковыми возможностями