Инструменты для  обработки текста  на естественном языке Татьяна Ландо  [email_address] Виктор Бочаров  [email_address]
Подзадачи обработки текста Разбиение текста на предложения и слова Лемматизация (морфология) – приведение слова к нормальной форме Синтаксис – определение связей между словами в предложении Семантика – анализ значения слов и связей между ними
задачи продукты mystem snowball Gate AOT Wordnet графематика морфология синтаксис семантика
Mystem, Snowball Модули для морфологических задача Mystem ( http://company.yandex.ru/technology/mystem/ ) –  возвращает начальную форму (неск вариантов) и грамматические характеристики текстовой формы Лицензия – для некоммерческого исп. Snowball ( http://snowball.tartarus.org/algorithms/russian/stemmer.html ) возвращает основу слова  Лицензия – BSD  http://www.opensource.org/licenses/bsd-license.html
Mystem Программный вызов на C# //Задаем параметры для запуска mystem Process mystem = new Process(); mystem.StartInfo.File Name = " mystem.exe "; mystem.StartInfo.Argu ments = "-n -r"; mystem.StartInfo.UseS hellExecute = false; mystem.StartInfo.Redi rectStandardInput = true; mystem.StartInfo.Redi rectStandardOutput = true; //тут запускаем  mystem.exe //текст, разобранный по словам помещаем в переменную outputText. StreamWriter mystemStreamWriter; StreamReader mystemStreamReader; String outputText = ""; //mystem не может работать со слишком большими блоками текста, //поэтому даем ему текст из inputText порциями длиной bufferSize. int c = 0; //текущая позиция курсора в inputText. int bufferSize = 8128; String s = SubstringWords(inputText, c, bufferSize); //порция текста для обработки. while (s.Length != 0) { mystem.Star t(); mystemStreamWriter =  mystem.Stan dardInput; mystemStreamReader =  mystem.Stan dardOutput; mystemStreamWriter.Writ eLine(s); mystemStreamWriter.Clos e(); outputText +=  mystemStreamReader.Read ToEnd() + " "; mystem.Wait ForExit(); mystem.Clos e(); c += s.Length; s = SubstringWords(inputText, c, bufferSize); }
Gate http://gate.ac.uk Framework для разработки приложений для обработки естественного языка Содержит Java библиотеку (gate.jar) для применения и встраивания приложения Язык документации – английский, документация не прозрачная Лицензия - GPL
Gate имеет плагины mystem и snowball содержит плагины для включения в общий framework почти всех известных сторонних приложений Позволяет делать многоуровневый анализ текста (от графематики до извлечения фактов)
framework c  унифицированными интерфейсами лингвистических компонентов GUI  для прототипирования JAPE –  регулярные выражения поверх разметки с  java  вставками  ( реально: грамматики ) ANNIE – Information Extraction System Gate
AOT http://aot.ru Разработан для русского, английского и немецкого языков Язык реализации – С++  Язык документации – русский Есть GUI для демонстрации работы модулей  Лицензия – LGPL
AOT Компоненты: Граффематика: выделение слов, цифровых комплексов, формул, …  Морфология: построение морфологической интерпретации слов входного текста. Синтаксис: построение дерева зависимостей всего предложения
Wordnet Семантический словарь Реализован для английского ( http://wordnet.princeton.edu ) Лицензия – свободная с сохранением копирайта имеет API для обращения программ на С, а так же спец. модули API для других языков программирования, например как COM-объект
Wordnet Для русского две версии: одна закрытая, другая не выложена в открытый доступ http://www.pgups.ru/WebWN/wordnet.uix?event=ChangeLocale  - одна http://project.phil.pu.ru/RussNet/index_ru.shtml  - вторая http://wordnet.ru  – автоматически переведенные базы принстонского ворднета, установить не удалось
ВОПРОСЫ?
Морфология Вход: словоформа Выход: лемма, часть речи, грамматические признаки   Например:     ТАБУРЕТОМ    -> ТАБУРЕТ, С мр,ед,тв  
Морфология (термины) Словоформа - слово, как оно встретилось в тексте.    Лемма - каноническая форма слова (та, что указана в словаре).   стол, стул, красный, бежать  - леммы и словоформы столу, стулом, красному, бегу  - словоформы (не леммы) Часть речи:    С, Г, П, ПРЕДЛ, ... Грамматические признаки:    мр, жр, ср, ед, мн, прш, 1л, 2л, 3л, ...
Морфология (дальше - хуже)     СТЕКЛО    -> СТЕЧЬ, Г 3л,ср,прш,    -> СТЕКЛО, С ср,ед,им,    -> СТЕКЛО, С ср,ед,вн,     ИЗ     -> ИЗ, ПРЕДЛ    -> ИЗА, С жр,мн,рд,имя,  
Морфология (омонимия) Это когда одной и той же единице уровня выражения соответствует несколько единиц уровня содержания. Словоформа – лемма Словоформа – грамматическая информация
Морфология (английский) >mother + {MOTHER, NOUN, "",  ("narr,sg",) } Id=53706 All forms: MOTHER MOTHERS + {MOTHER, VERB, "",  ("inf",) } Id=76501 All forms: MOTHER MOTHERS MOTHERED MOTHERED MOTHERING >computer + {COMPUTER, NOUN, "",  ("narr,sg",) } Id=35532 All forms: COMPUTER COMPUTERS + {COMPUTER, ADJECTIVE, "",  ("",) } Id=7333 All forms: COMPUTER >table + {TABLE, NOUN, "",  ("narr,sg",) } Id=68272 All forms: TABLE TABLES + {TABLE, VERB, "",  ("inf",) } Id=87025 All forms: TABLE TABLES TABLED TABLED TABLING
Морфология (варианты) АОТ – словарь + эвристика (для неизвестных слов) Mystem –  словарь + эвристика Snowball –  правила отрезания изменяемой части слова
Вызов  AOT bash-3.2$ Bin/TestLem.exe Russian rusmorph.txt Loading.. read rusmorph.txt process rusmorph.txt Count of words = 3 Time = 0 seconds; 0 ticks too few words to measure the speed writing to rusmorph.lem
Вызов АОТ СИНЕЕ -> СИНИЙ ймйпйю# СТЕКЛО -> СТЕКЛО еаег#СТЕЧЬ кй# РАЗБИЛОСЬ -> РАЗБИТЬСЯ кй# Dicts\Morph\rgramtab.tab: йм Y П ср,ед,им,од,но йп Y П ср,ед,вн,од,но
Вызов  Mystem mystem.exe  –i –n  rusmorph.txt > rusmorph.lem синее{синий=A=им,ед,сред|синий=A=вин,ед,сред|синий=A=срав} стекло{стекать=V=прош,ед,изъяв,сред,сов|стекло=S,сред,неод=им,ед|стекло=S,сред,неод=вин,ед} разбилось{разбиваться=V=прош,ед,изъяв,сред,сов}
Snowball важно - >  важн важнее ->  важн важнейшие  ->  важн важничал ->  важнича вагон - >  вагон вагона - >  вагон вагоном ->  вагон
Синтаксис Вход: цепочка словоформ + грамматическая информация Выход: дерево зависимостей дерево составляющих Из дерева составляющих можно сделать дерево зависимостей, но не наоборот.
Синтаксис Предложение делится на клаузы Внутри клауз делается синтаксический анализ Отдельные клаузы связываются между собой
Синтаксис (демонстрация) VisualSynan
Синтаксис (а нафига?) помогает ответить на вопросы: какие слова в предложении связаны? какое из двух слов в группе главнее? а также: снижает уровень омонимии нужен для перехода к семантическому анализу если можно обойтись без синтаксического анализа – обойдитесь без него.
Синтаксис :  снятие омонимии До   После Лемм / слово 1,27 1,06 Морфологических вариантов / слово 2,26 1,64
Синтаксис АОТ (как вызвать) bash-3.2$ Bin/TestSynan.exe Russian _t.txt EMPTY  =  В 1941 году Николая Ананьева призвали в Красную Армию EMPTY  =  и отправили на фронт . GP  =  году Николая GP  =  году Николая Ананьева NP  =  Красную Армию PP  =  в Красную Армию PP  =  на фронт
WordNet Семантическая сеть для английского языка, разработанная в Принстонском университете. Синсет – множество синонимов + краткие определения Отношения: синонимия гипо/гиперонимия
WordNet (“chair”) Noun S:  (n)  chair  (a seat for one person, with a support for the back)  "he put his coat over the back of the chair and sat down"   S:  (n)  professorship ,  chair  (the position of professor)  "he was awarded an endowed chair in economics"   S:  (n)  president ,  chairman ,  chairwoman ,  chair ,  chairperson  (the officer who presides at the meetings of an organization)  "address your remarks to the chairperson"   S:  (n)  electric   chair ,  chair ,  death   chair ,  hot   seat  (an instrument of execution by electrocution; resembles an ordinary seat for one person)  "the murderer was sentenced to die in the chair"   S:  (n)  chair  (a particular seat in an orchestra)  "he is second chair violin"   Verb S:  (v)  chair ,  chairman  (act or preside as chair, as of an academic department in a university)  "She chaired the department for many years"   S:  (v)  moderate ,  chair ,  lead  (preside over)  "John moderated the discussion"
wordnet.ru базы английского  WordNet  переведены автоматически GUI  запустить не удалось :(
ВОПРОСЫ!

Hackday Ml

  • 1.
    Инструменты для обработки текста на естественном языке Татьяна Ландо [email_address] Виктор Бочаров [email_address]
  • 2.
    Подзадачи обработки текстаРазбиение текста на предложения и слова Лемматизация (морфология) – приведение слова к нормальной форме Синтаксис – определение связей между словами в предложении Семантика – анализ значения слов и связей между ними
  • 3.
    задачи продукты mystemsnowball Gate AOT Wordnet графематика морфология синтаксис семантика
  • 4.
    Mystem, Snowball Модулидля морфологических задача Mystem ( http://company.yandex.ru/technology/mystem/ ) – возвращает начальную форму (неск вариантов) и грамматические характеристики текстовой формы Лицензия – для некоммерческого исп. Snowball ( http://snowball.tartarus.org/algorithms/russian/stemmer.html ) возвращает основу слова Лицензия – BSD http://www.opensource.org/licenses/bsd-license.html
  • 5.
    Mystem Программный вызовна C# //Задаем параметры для запуска mystem Process mystem = new Process(); mystem.StartInfo.File Name = " mystem.exe "; mystem.StartInfo.Argu ments = "-n -r"; mystem.StartInfo.UseS hellExecute = false; mystem.StartInfo.Redi rectStandardInput = true; mystem.StartInfo.Redi rectStandardOutput = true; //тут запускаем mystem.exe //текст, разобранный по словам помещаем в переменную outputText. StreamWriter mystemStreamWriter; StreamReader mystemStreamReader; String outputText = ""; //mystem не может работать со слишком большими блоками текста, //поэтому даем ему текст из inputText порциями длиной bufferSize. int c = 0; //текущая позиция курсора в inputText. int bufferSize = 8128; String s = SubstringWords(inputText, c, bufferSize); //порция текста для обработки. while (s.Length != 0) { mystem.Star t(); mystemStreamWriter = mystem.Stan dardInput; mystemStreamReader = mystem.Stan dardOutput; mystemStreamWriter.Writ eLine(s); mystemStreamWriter.Clos e(); outputText += mystemStreamReader.Read ToEnd() + " "; mystem.Wait ForExit(); mystem.Clos e(); c += s.Length; s = SubstringWords(inputText, c, bufferSize); }
  • 6.
    Gate http://gate.ac.uk Frameworkдля разработки приложений для обработки естественного языка Содержит Java библиотеку (gate.jar) для применения и встраивания приложения Язык документации – английский, документация не прозрачная Лицензия - GPL
  • 7.
    Gate имеет плагиныmystem и snowball содержит плагины для включения в общий framework почти всех известных сторонних приложений Позволяет делать многоуровневый анализ текста (от графематики до извлечения фактов)
  • 8.
    framework c унифицированными интерфейсами лингвистических компонентов GUI для прототипирования JAPE – регулярные выражения поверх разметки с java вставками ( реально: грамматики ) ANNIE – Information Extraction System Gate
  • 9.
    AOT http://aot.ru Разработандля русского, английского и немецкого языков Язык реализации – С++ Язык документации – русский Есть GUI для демонстрации работы модулей Лицензия – LGPL
  • 10.
    AOT Компоненты: Граффематика:выделение слов, цифровых комплексов, формул, … Морфология: построение морфологической интерпретации слов входного текста. Синтаксис: построение дерева зависимостей всего предложения
  • 11.
    Wordnet Семантический словарьРеализован для английского ( http://wordnet.princeton.edu ) Лицензия – свободная с сохранением копирайта имеет API для обращения программ на С, а так же спец. модули API для других языков программирования, например как COM-объект
  • 12.
    Wordnet Для русскогодве версии: одна закрытая, другая не выложена в открытый доступ http://www.pgups.ru/WebWN/wordnet.uix?event=ChangeLocale - одна http://project.phil.pu.ru/RussNet/index_ru.shtml - вторая http://wordnet.ru – автоматически переведенные базы принстонского ворднета, установить не удалось
  • 13.
  • 14.
    Морфология Вход: словоформаВыход: лемма, часть речи, грамматические признаки   Например:     ТАБУРЕТОМ   -> ТАБУРЕТ, С мр,ед,тв  
  • 15.
    Морфология (термины) Словоформа- слово, как оно встретилось в тексте.   Лемма - каноническая форма слова (та, что указана в словаре).   стол, стул, красный, бежать - леммы и словоформы столу, стулом, красному, бегу - словоформы (не леммы) Часть речи:   С, Г, П, ПРЕДЛ, ... Грамматические признаки:   мр, жр, ср, ед, мн, прш, 1л, 2л, 3л, ...
  • 16.
    Морфология (дальше -хуже)     СТЕКЛО   -> СТЕЧЬ, Г 3л,ср,прш,   -> СТЕКЛО, С ср,ед,им,   -> СТЕКЛО, С ср,ед,вн,     ИЗ   -> ИЗ, ПРЕДЛ   -> ИЗА, С жр,мн,рд,имя,  
  • 17.
    Морфология (омонимия) Этокогда одной и той же единице уровня выражения соответствует несколько единиц уровня содержания. Словоформа – лемма Словоформа – грамматическая информация
  • 18.
    Морфология (английский) >mother+ {MOTHER, NOUN, "", ("narr,sg",) } Id=53706 All forms: MOTHER MOTHERS + {MOTHER, VERB, "", ("inf",) } Id=76501 All forms: MOTHER MOTHERS MOTHERED MOTHERED MOTHERING >computer + {COMPUTER, NOUN, "", ("narr,sg",) } Id=35532 All forms: COMPUTER COMPUTERS + {COMPUTER, ADJECTIVE, "", ("",) } Id=7333 All forms: COMPUTER >table + {TABLE, NOUN, "", ("narr,sg",) } Id=68272 All forms: TABLE TABLES + {TABLE, VERB, "", ("inf",) } Id=87025 All forms: TABLE TABLES TABLED TABLED TABLING
  • 19.
    Морфология (варианты) АОТ– словарь + эвристика (для неизвестных слов) Mystem – словарь + эвристика Snowball – правила отрезания изменяемой части слова
  • 20.
    Вызов AOTbash-3.2$ Bin/TestLem.exe Russian rusmorph.txt Loading.. read rusmorph.txt process rusmorph.txt Count of words = 3 Time = 0 seconds; 0 ticks too few words to measure the speed writing to rusmorph.lem
  • 21.
    Вызов АОТ СИНЕЕ-> СИНИЙ ймйпйю# СТЕКЛО -> СТЕКЛО еаег#СТЕЧЬ кй# РАЗБИЛОСЬ -> РАЗБИТЬСЯ кй# Dicts\Morph\rgramtab.tab: йм Y П ср,ед,им,од,но йп Y П ср,ед,вн,од,но
  • 22.
    Вызов Mystemmystem.exe –i –n rusmorph.txt > rusmorph.lem синее{синий=A=им,ед,сред|синий=A=вин,ед,сред|синий=A=срав} стекло{стекать=V=прош,ед,изъяв,сред,сов|стекло=S,сред,неод=им,ед|стекло=S,сред,неод=вин,ед} разбилось{разбиваться=V=прош,ед,изъяв,сред,сов}
  • 23.
    Snowball важно -> важн важнее -> важн важнейшие -> важн важничал -> важнича вагон - > вагон вагона - > вагон вагоном -> вагон
  • 24.
    Синтаксис Вход: цепочкасловоформ + грамматическая информация Выход: дерево зависимостей дерево составляющих Из дерева составляющих можно сделать дерево зависимостей, но не наоборот.
  • 25.
    Синтаксис Предложение делитсяна клаузы Внутри клауз делается синтаксический анализ Отдельные клаузы связываются между собой
  • 26.
  • 27.
    Синтаксис (а нафига?)помогает ответить на вопросы: какие слова в предложении связаны? какое из двух слов в группе главнее? а также: снижает уровень омонимии нужен для перехода к семантическому анализу если можно обойтись без синтаксического анализа – обойдитесь без него.
  • 28.
    Синтаксис : снятие омонимии До После Лемм / слово 1,27 1,06 Морфологических вариантов / слово 2,26 1,64
  • 29.
    Синтаксис АОТ (каквызвать) bash-3.2$ Bin/TestSynan.exe Russian _t.txt EMPTY = В 1941 году Николая Ананьева призвали в Красную Армию EMPTY = и отправили на фронт . GP = году Николая GP = году Николая Ананьева NP = Красную Армию PP = в Красную Армию PP = на фронт
  • 30.
    WordNet Семантическая сетьдля английского языка, разработанная в Принстонском университете. Синсет – множество синонимов + краткие определения Отношения: синонимия гипо/гиперонимия
  • 31.
    WordNet (“chair”) NounS: (n) chair (a seat for one person, with a support for the back) "he put his coat over the back of the chair and sat down" S: (n) professorship , chair (the position of professor) "he was awarded an endowed chair in economics" S: (n) president , chairman , chairwoman , chair , chairperson (the officer who presides at the meetings of an organization) "address your remarks to the chairperson" S: (n) electric chair , chair , death chair , hot seat (an instrument of execution by electrocution; resembles an ordinary seat for one person) "the murderer was sentenced to die in the chair" S: (n) chair (a particular seat in an orchestra) "he is second chair violin" Verb S: (v) chair , chairman (act or preside as chair, as of an academic department in a university) "She chaired the department for many years" S: (v) moderate , chair , lead (preside over) "John moderated the discussion"
  • 32.
    wordnet.ru базы английского WordNet переведены автоматически GUI запустить не удалось :(
  • 33.