Rule b platf

Preview:

Citation preview

Павел Гращенковpavel.gra@gmail.com

Институт востоковедения РАНЭПАМ-Системз

1. Возможные применения языковых платформ по извлечению данных

2. Наиболее востребованные пользователем задачи

3. Архитектура

4. Устройство отдельных модулей и примеры их работы

5. Возможности, предоставляемые правилами

Извлечение фактов Извлечение специальных сущностей Извлечение именованных сущностей Анализ эмоциональной окрашенности текста Автоматическое реферирование …

Извлечение фактов

(отслеживание событий на рынке, действий конкурентов, политических оппонентов, …)

Анализ эмоциональной окрашенности текста

(анализ мнений пользователей, общественных настроений, …)

Стандартна для систем данного класса Примеры:

LingPipe(http://alias-i.com/lingpipe/index.html)

GATE(http://gate.ac.uk/g8/page/print/2/sale/tao/split.html#splitpa3.html)

Авикомп(http://www.avicomp.ru/ac_ru/index.php3?cs=as-4-1)

i-Teco(http://www.i-teco.ru/ac.html)

Название Функция

Text parser Убирает лишние абзацы и т.д., помещает текст в “хранилище”

Break detector Объединяет цепочки символов в слова, цепочки слов – в предложения

RegExp Обрабатывает даты, электронные адреса, опечатки, сленг,…

Morphology Словарь с морфологическими атрибутами

Gazetteer Списки, классифицирующие слова по некоторым атрибутам

Unknown word Распознает неизвестные слова, основываясь на их морфологии

CAPE Выделяет специальные и именованные сущности

POS tagger Снимает грамматическую омонимию

NE recognizer Специальный модуль для выделения именованных сущностей

Chunker Выделяет простые синтаксические группы

Syntax Строит полное дерево синтаксического разбора

Post syntax Разбивает сложные предложения на простые, уточняет сферу действия отрицания,…

Precise Extraction

Выделяет факты

Название Язык правил, примеры

Text parser Конфигурируется строчкой регулярных выражений

Break detector Регулярные выражения и макросы, пример: $Digit+ ( [\,\.\-] $Digit+ )+

RegExp Регулярные выражения + правила сопоставления + добавление стандартных атрибутов, пример: /(з[ао]ч)о([дт])(ная)/i RSYN $1е$2$3

Morphology палит {PosTag="V;Prs;Ipf;Itr;Sg;Third", SyntType = "Rdat;Riz;Rins;Rva;Racc"}{PosTag="V;Prs;Ipf;Tr;Sg;Third", SyntType = "Rdat;Riz;Rins;Rva;Racc"}

Gazetteer убыточный MSYN {SpeechPart = "A" @match, Sentiment = "-1"}

Unknown word Словари аффиксов, пример: ибельн SYN ибельн { SpeechPart="A" } // лечибельный

CAPE Контекстно-зависимый язык, оперирующий со словами и их атрибутами

POS tagger {Модель, основанная на Байесовском классификаторе}

NE recognizer {Модель, основанная на Байесовском классификаторе}

Chunker Контекстно-зависимый язык, оперирующий со словами и их атрибутами

Syntax Контекстно-свободный язык, оперирующий словами, фразами и атрибутами

Post syntax Алгоритмический язык, синтаксис близок к языкам программирования

Precise Extraction

~Язык логики предикатов

Особенности функционирования модулей

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

фактически представляют собой файлы конфигурации Модули могут чередоваться в произвольном порядке и

повторятся: Break detector работает как минимум дважды:

проставляет границы слов и предложений CAPE и Chunker также представляют собой один

формализм и отличаются порядком следования и целевыми конструкциями

Функции:

Анализирует линейную последовательность элементов и преобразует ее в слово или синтаксическую группу, изменяя при необходимости дополнительные атрибуты

В основном используется для:

Выделения именованных сущностей Предварительного синтаксического анализа (shallow /

robust parsing)

(аналогичен формализму JAPE)

Возможности: Обрабатывает объекты разных типов: слова, идиомы,

синтаксические группы Оперирует с регулярными выражениями Учитывает информацию о грамматических,

семантических и других атрибутах объектов Проверяет тождественность грамматических признаков

на объектах В случае создания новой синтаксической единицы

устанавливает ее вершину и зависимые, определяет тип связи между ними

Пример правила:

Rule: Poss_Adj_NP( ({SpeechPart == "Pron", Type == "PronPoss"}):p ({SpeechPart == "A", Case =^ :p.Case, Number =^ :p.Number, Gender

=^ :p.Gender})? ({Phrase: "NP", Case =^ :p. Case, Number =^ :p.Number, Gender =^ :p.

Gender}):head

):NP :NP.Phrase ={^Head =^ :head, Category = “NP"}

Правило ищет цепочку “посессивное местоимение + прилагательное (опционально) + именная группа”, которая имеет одинаковые (такие же, как у посессивного местоимения) признаки падежа, числа и рода и объединяет ее в синтаксическую группу с вершиной, заимствующейся из именной группы

пример – твоя новая машина из Японии

Пример правила:

Rule: NePonimaju( {Phrase: "VP", Head == {Word: NormalForm == "ПОНИМАТЬ"},

Negation==True}):neg :neg.Phrase ={Sentiment = "-1”, Negation = False}

Правило ищет такие глагольные группы, у которых вершиной является глагол понимать, находящийся в контексте отрицания. Найденные объекты помечаются как обладающие отрицательной эмоциональной окраской и меняют значение признака ‘отрицание’ на противоположное

пример – не совсем понимаю

Функции:

Получает на вход результаты работы Chunker’a и других модулей – группы, слова, идиомы

Используется для:

Построения полного дерева синтаксического разбора (совмещенный формализм составляющих и зависимостей)

(текущий парсер построен на GLR* алгоритме)

(ранее использовался Link Grammar и др.)

Возможности: Рекурсивно применяет имеющиеся правила к входной

цепочке Выбирает наиболее полный и приоритетный разбор Проверяет имеющиеся у входных элементов атрибуты Использует временные (внутренние для модуля

синтаксиса) флаги Приоритезирует правила для (не)согласующихся единиц …

Пример правила:CP (control=$2, 2.Semantic, priority=100), relation(2, 1, Type=“Subject”) NP +VP : (1, {Phrase: !PP, Case == "Nom"}) , (2, {Phrase: ! INF}) , raise-priority(1, {Phrase:}, 20) , agree-priority(1,2, Number, 100) , agree-priority(1,2, Gender, 100) , agree-priority(1,2, Person, 100);

Правило должно строить предложение из имеющихся именной и глагольной групп. Учитывается согласование в числе, роде и лице, именная группа стоит обязательно в номинативе. В результате работы правила создается составляющая CP (Complementizer Phrase) с вершиной, заимствующейся из глагольной группы, откуда также берутся все остальные атрибуты

пример – [CP [NP осенний +семестр] [VP +начинается]]

Пример правила:

$1 (control=$1, 1.Semantic, priority=5) , relation(1, 2, Type=“Coordination”)

+* * : (1, {Phrase: }) , (2, {Phrase: }) , control(2,CONJ) , agree-priority(1,2, Type, 10);

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

пример – [NP [NP +студенты] [NP [CONJ и] [NP +преподаватели]]

Функции: Основываясь на результатах работы синтаксиса, модуль

выделяет простые предложения из сложных, проставляет тип предложения, распространяет действие отрицания внутрь синтаксической группы и т.д.

Пример правила:

Negation_to_Coordinate_NP{ condition: {Semantic == "COOR", Type == “NP"}, actions { iterate-children (i, {Phrase: Type == “NP", !Head}) { modify(#i^Head, Annotation) { #current^Head.Negation } } } }

Правило перебирает все именные группы, ищет в них другие именные группы, не являющиеся вершиной (i) и присваивает им то же значения атрибута “отрицание”, что и у вершины “главной” именной группы

пример – [NP [NP не скучающие +студенты] [NP [CONJ и] [NP усталые +преподаватели]]]

I. Бόльшая гибкость – возможность оперативно вносить изменения

1. “Теплое пиво” – просто добавь новое правило“теплый прием” останется позитивным, а “теплое пиво” станет негативным2. Сентименты-невидимки“последовал ответ сквозь зубы”, “длинная цепочка людей”, “официант быстро что-то

сказал и ушел”, “нам долго объясняли, когда нас посадят на самолет” 3. Ситуация пресейлаНовый заказчик, новая предметная область, нет данных для тренировки модели4. Новые языкиНовый заказчик = новый язык (см. далее)…

II. Неограниченная работа над качествомКоличество правил a priori не ограничено, их может быть столько, сколько

существует в языке интересующих нас конструкций, оборотов, употреблений каких-либо слов и проч. Статистические системы представляются более ограниченными и быстро насыщаемыми

Новый язык: казахскийпример – Халық қазіргі президентті қайта сайлады.

Модификации платформы:халық SYN {SpeechPart = “N”, Case = “Nom”, Number = “Sg”}қазіргі SYN {SpeechPart = “A”}президентті SYN {SpeechPart = “N”, Case = “Acc”, Number = “Sg”}қайта SYN {SpeechPart = “V”, Fin = “Conv”}сайлады SYN {SpeechPart = “V”, Tense = “Past”, Person = “Third”}

Правила:1) правило Poss_Adj_NP (слегка упрощенное) ; 2) правило для CP и подлежащего; 3) столь же стандартное правило для прямого объекта4) Дополнительное правило:

VP (control=$1, 1.Semantic, priority=100), relation(1, 2, Type=“Aux”) +V V

: (1, {Phrase: Fin == "Conv"});

[CP [NP +Халық]  [VP [NP қазіргі +президентті]  [VP қайта +сайлады]]]

Роману Удовиченко, Юлии Адаскиной – за помощь и годы

совместной работы Татьяне Ландо, организаторам и

слушателям семинара – за возможность выступить

Recommended