Pull to refresh

Comments 14

И размеченными корпусами..
Это как-то реализовано, хотя-бы в виде пруф оф концепт?

Изложенное в статье мне кажется верным, но большая гибкость языка (анафоры, кореференции, даже омнимия) приведёт либо к генерации огромного количества вариантов распознавания для внесения в базу, либо неоднозначные варианты будут просто отбрасываться. Грамотный поисковый запрос — сам по себе фильтр, поэтому количество вариантов возможного понимания одного и того же текста в базе — не проблема для качества поиска, а только техническая проблема объёмов.
Есть прототип (пошлю вам ссылку в личном сообщении).

Огромного количества вариантов распознавания не образуется, работает ряд ограничений. Во-первых, формирование узлов — многоступенчатый процесс. Узлообразующие объекты имеют разный приоритет, сначала формируются узлы с более высоким приоритетом, потом остальные, и приоритетные узлы могут войти в узлы с низким приоритетом. Во-вторых, в большинстве случаев, формирующие узел объекты должны в тексте прилегать друг к другу. В-третьих, среди образованных узлов на каждом этапе остаются только лучшие (которые покрывают наибольшее количество объектов и удовлетворяют синтаксическим условиям).

Согласен, что неправильные узлы, приводящие к неверной семантической интерпретации омонимов — это не самая большая проблема, но бороться с этим надо, и быть готовым ко всем запросам, а не только "грамотным".

В ближайшее время планирую написать подробную статью именно про методику преобразования текста в семантическое представление.
Идея семантического поиска не нова, но я ни разу не видел хорошей полноценной реализации. Семантический поиск в Comperno так же завязан на онтологиях и жестко заданном списке отношений (их там более шестисот, кажется), поэтому хорошо работает на хороших текстах, т.е. эту технологию легко заточить под коропоративный поиск, внедрить в документооборот, но говорить о семантическом поисковом движке не приходится (несмотря на заявленный ими Findo): скорость индексации около предложения в секунду. А в целом согласен с комментарием Сергея — омонимия не даст жить спокойно, даже при успешно реализованной кореференции и анафоре. Мое мнение — онтологиями и списком связей (фреймов) эту задачу не решить, нужны другие алгоритмы, автоматически определяющие семантическую близость структур.
Согласен, что у этого подхода есть ограничения. Семантический поисковый движок, основанный на ручных онтологиях, вполне может хорошо работать при относительно небольшом количестве анализируемых текстов и при не очень большом количестве объектов, из-за необходимости для каждого объекта знать семантические связи. Построение масштабной семантической системы требует применения технологий машинного обучения, но в ее основе все равно должен лежать онтологический подход. Именно комбинация обоих подходов может привести к успеху.
Два вопроса:

  1. У Вас термин "семантический" тождественен понятию "смысловой"?
  2. Что Вы понимаете под термином "База Знаний", который Вы употребили?
  1. Да, семантический = смысловой.
  2. В данной статье под "Базой знаний" подразумевается совокупность сформированных при обработке текстов смысловых узлов (типа "продажа — кто? Газпром, что? газ, куда? Европа"). Т.е. система семантических связей объектов друг с другом.
Хорошо.
Тогда могли бы Вы показать "смысловые узлы" на примере следующего предложения: "Запах вкуса видит слух"?
Очень интересно, откуда появляются в процессе обработки текста "семантические связи объектов друг с другом".
Эта система предназначена для обработки предложений, имеющих ясный информационный смысл, который отсутствует в предложенном Вами примере. Можно придумать еще много примеров, которые система в принципе "не поймет". Но это и не надо, поскольку она не претендует на полную универсальность, а предназначена для определенной области практического применения.
Семантические связи объектов друг с другом в тексте фактически формируются при построении узлов, когда парсер находит объекты, которые могут подойти на те или иные семантические роли для смыслового уточнения узлообразующего объекта.
К вопросу "понимает — не понимает".

  1. Чтобы ПОНЯТЬ, что Графема (слово) является таковой, она СРАВНИВАЕТСЯ с Базой Графем (базой слов), являющейся, по существу, Базой Данных (БД) по своему формату.
  2. Чтобы ПОНЯТЬ, что две Графемы имеют между собой Синтаксическую связь, такая связка (словосочетание) СРАВНИВАЕТСЯ с Базой синтаксических связок, также являющейся БД по своему формату.
  3. Чтобы ПОНЯТЬ, что две и большее количество Графем, имеющих между собою синтаксические связи, имеют также и Семантическую связь, должна быть создана эталонная База семантических связок, являющейся уже принципиальной иной Базой по своему формату, так как, во-первых, она уже больше чем двумерный "синтаксический узел" и, во-вторых, она уже должна называться Базой Знаний или, по крайней мере, Базой Семантисов.
    Поскольку, такой базы ещё в природе не существует, то семантические связи задают люди-эксперты, используя при этом суррогатные базы типа "онтологий", которые, в принципе являются большими словарями и не соответствуют "семантическому формату". Были попытки, правда, создания Общесемантических Словарей (например, РОСС), но должного развития это это не получило, да и вообще случилось фатальное отклонение в сторону "онтологий".
    Если Вам действительно удалось создать Базу Знаний, то я снимаю, как говорится, шляпу и восхищаюсь Вашему достижению. Правда, пока из текста я этого не смог понять.
Да, видимо, в этой статье вопросы семантической обработки текста и баз знаний я не раскрыл достаточно понятно. Поэтому, на следующей неделе я планирую опубликовать более подробную статью на эту тему.
Это будет очень интересно!
Ждём с нетерпением.
мячты мячты )) и далеко не новые. Нового в реализации не увидел. конкретно приведенный подход тупиковый изначально — вы сможете вывести только однозначные роли, коих не так много. Может только поймете как не надо делать
Sign up to leave a comment.

Articles