LINUX.ORG.RU

Правила образования семантических связей в русскоязычном запросе

 , , ,


0

5

Пишу семантико-синтаксический парсер для русского языка, основанный на правилах/шаблонах/фреймах. Получаю морфологическую информацию каждого токена в запросе, а затем к массиву этих данных применяю правила (фреймы), для определения семантических связей в запросе. Собственно, нужны эти правила, в любом доступном скрипту формате (xml, sql, etc..). Пример правил:
Глагол(личн., нв.з., действ.) -> Сущ. (им. п, ед.ч.)
Я ни разу не лингвист и даже не фиолог, но думаю что подобных правил будет несколько десятков, и написание их всех требует высокого уровня владения языком, кое у меня ограничено школьными знаниями, которые за 7 лет уже порядком подзабыты. Может кто делал похожее, и у кого то есть такие данные? Поделитесь, буду очень благодарен.

★★★★

Таких правил нужно не десятки, а десятки тысяч. У ABBYY разработка правил для семантико-синтаксического парсера Compreno заняла 19 лет и стоила больше 80 миллионов долларов. Теперь им нужно добиться, чтобы эти затраты окупились. Поэтому в открытом доступе их нет.

gorky ★★ ()

Для достаточно большого фрагмента русского языка правил действительно будет очень много. Некоторые можно посмотреть здесь: http://ruscorpora.ru/instruction-syntax.html#Актантные

При этом надо еще решить, какой набор семантических ролей использовать: можно опираться на относительно небольшой набор общих ролей (список с примерами можно посмотреть в третьей главе «Введения в общий синтаксис» Тестельца), а можно детально описывать конкретный класс ситуаций, как это делается в FrameNet.

Но главная проблема в том, что правила будут зависеть не только от части речи и тому подобных грамматических свойств, но и от самого слова. Для английского языка можно, например, посмотреть на PropBank: для каждого набора есть свое правило, причем обычно не одно, потому что глагол может использоваться в разных значениях, причем отличия могут быть достаточно тонкими (например, правила должны отличать словосочетание «напиться воды» от словосочетания «напиться пьяным»).

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

Но если вы планируете применять все это не для произвольных текстов, а для решения какой-то конкретной задачи, то, возможно, проблема окажется намного более простой: может быть, можно будет обойтись и относительно простыми моделями или небольшим набором правил.

keinu ()

На http://aot.ru есть разработки по теме, в том числе какой-никакой семантический анализатор.

Глагол(личн., нв.з., действ.) -> Сущ. (им. п, ед.ч.)

Не совсем понятно, что ты пытаешься делать. Написать с нуля «ЭТАП-3»? Зачем тебе в конечном счёте нужны эти связи?

proud_anon ★★★★★ ()
Ответ на: комментарий от keinu

причем отличия могут быть достаточно тонкими например, правила должны отличать словосочетание «напиться воды» от словосочетания «напиться пьяным»)

Возможно, я не вижу всех подводных камней, но, в данном случае, отличия семантических ролей явно выражена абсолютно различными грамматическими фреймами:

глагол + сущ в винительном падеже => отношение "объект действия"
глагол + качеств. прилагательное => отношение "мера действия"
Т.е. разобрать не составит труда.

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

Вот это полезная инфа, спасибо

Но если вы планируете применять все это не для произвольных текстов, а для решения какой-то конкретной задачи

Задача действительно может быть ограничена узкой предметной областью, в конкретном случае.

comp00 ★★★★ ()
Ответ на: комментарий от proud_anon

Написать с нуля «ЭТАП-3»?

Походу да. Спасибо за название, не знал о таком.

Зачем тебе в конечном счёте нужны эти связи?

Для их формализации. Формальная модель ЕЯ языка может быть представлена в виде дополненной КС-грамматики, обход которой не представляет особых трудностей в настоящее время.
Но база знаний должна быть огромной.

comp00 ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.