Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hackday Ml

2,246 views

Published on

  • Be the first to comment

Hackday Ml

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

×