1 / 23

Машинная обработка естественных языков Петр Новиков novikov.amikeco.ru

Машинная обработка естественных языков Петр Новиков http://novikov.amikeco.ru. Санкт-Петербург, 13.04.2014. Why Natural Language Processing?. Проблема взаимодействия человек-компьютер Проблема автоматизированной обработки неструктурированных баз знаний. Языки программирования.

nickan
Download Presentation

Машинная обработка естественных языков Петр Новиков novikov.amikeco.ru

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Машинная обработкаестественных языковПетр Новиковhttp://novikov.amikeco.ru Санкт-Петербург, 13.04.2014

  2. Why Natural Language Processing? • Проблема взаимодействия человек-компьютер • Проблема автоматизированной обработки неструктурированных баз знаний

  3. Языки программирования Не ломимся ли мы в открытую дверь?

  4. Что автор хотел сказать? • То, что понятно машине, непонятно человеку, и наоборот. • Для человека наиболее предпочтительно изъясняться на своем родном языке • Человеческий язык неоднозначен и сильно зависит от контекста • => Используем вероятностные методы!

  5. Вероятностный подход.Наивный байесовский подход • Задача классификации документа • Предположим, что есть база знаний (корпус), из которых мы можем получить априорные вероятностиnltk.download() • Предположим, что имеем в распоряжении «стеммер» – средство, позволяющее извлекать основу слова from nltk import stem stem.SnowballStemmer.languages russian_stemmer = stem.SnowballStemmer('russian') print russian_stemmer.stem(u'поиска') print russian_stemmer.stem(u'строим') pymorph?

  6. Вероятностный подход.Наивный байесовский метод Теорема Байеса Томас Байес (1702 – 1761) Если , взаимно независимы,

  7. Вероятностный подход.Наивный байесовский метод Как классифицировать документ?D1: Строим дерево поиска. КОМП -- Компьютерные науки D2: Строим из дерева. СТРО -- Строительство и ремонт P( КОМП | строим дерево поиска ) = > P(СТРО | строим дерево поиска) = = P( КОМП ) 0.500 = P( СТРО ) 0.500 * P( строим | КОМП ) 0.010 * P( строим | СТРО ) 0.010 * P( дерево | КОМП ) 0.010 * P( дерево | СТРО ) 0.010 * P( поиска | КОМП ) 0.010 * P( поиска | СТРО ) 0.001 / P( строим дерево поиска ) / P( строим дерево поиска ) P( КОМП | строим дом из дерева ) = P( СТРО | строим дом из дерева ) = = P( КОМП ) 0.500 < = P( СТРО ) 0.500 * P( строим | КОМП ) 0.010 * P( строим | СТРО ) 0.010 * P( дом | КОМП ) 0.001 * P( дом | СТРО ) 0.010 * P( из | КОМП ) 0.001 * P( из | СТРО ) 0.001 * P( дерева | КОМП ) 0.010 * P( дерева | СТРО ) 0.010 / P( строим дом из дерева ) / P( строим дом из дерева )

  8. Вероятностный подход.Наивный байесовский метод Как классифицировать документ?D1: Строим дерево поиска. КОМП -- Компьютерные науки D2: Строим из дерева. СТРО -- Строительство и ремонт P( КОМП | строим дерево поиска ) = > P(СТРО | строим дерево поиска) = = P( КОМП ) 0.500 = P( СТРО ) 0.500 * P( строим | КОМП ) 0.010 * P( строим | СТРО ) 0.010 * P( дерево | КОМП ) 0.010 * P( дерево | СТРО ) 0.010 * P( поиска | КОМП ) 0.010 * P( поиска | СТРО ) 0.001 / P( строим дерево поиска ) / P( строим дерево поиска ) P( КОМП | строим из дерева ) = P( СТРО | строим из дерева ) = = P( КОМП ) 0.500 = = P( СТРО ) 0.500 * P( строим | КОМП ) 0.010 * P( строим | СТРО ) 0.010 * P( из | КОМП ) 0.001 * P( из | СТРО ) 0.001 * P( дерева | КОМП ) 0.010 * P( дерева | СТРО ) 0.010 / P( строим из дерева ) / P( строим из дерева )

  9. Вероятностный подход.Наивный байесовский метод Как классифицировать документ? D1: Строим дерево поиска. КОМП -- Компьютерные науки D2: Строим из дерева. СТРО -- Строительство и ремонт P( КОМП | строим дерево поиска ) = > P(СТРО | строим дерево поиска) = = P( КОМП ) 0.500 = P( СТРО ) 0.500 * P( строим | NULL, КОМП ) 0.010 * P( строим | NULL, СТРО ) 0.010 * P( дерево | строим, КОМП ) 0.010 * P( дерево | строим, СТРО ) 0.001 * P( поиска | дерево, КОМП ) 0.010 * P( поиска | дерево, СТРО ) 0.001 / P( строим дерево поиска ) / P( строим дерево поиска ) P( КОМП | строим из дерева ) = P( СТРО | строим из дерева ) = = P( КОМП ) 0.500 < = P( СТРО ) 0.500 * P( строим | NULL, КОМП ) 0.010 * P( строим | СТРО ) 0.010 * P( из | строим, КОМП ) 0.001 * P( из | СТРО ) 0.001 * P( дерева | из, КОМП ) 0.005 * P( дерева | СТРО ) 0.010 / P( строим из дерева ) / P( строим из дерева )

  10. Вероятностный подход.Наивный байесовский метод Как правильно перевести слово «дерево»: «arbo» или«ligno»? ARBO -- дерево (растение или структура данных) LIGNO -- дерево (строительный материал) P( ARBO | строим дерево поиска ) = = P(LIGNO | строим дерево поиска) = = P( ARBO ) 0.500 = P( LIGNO ) 0.500 * P( строим | ARBO ) 0.001 * P( строим | LIGNO ) 0.010 * P( дерево | ARBO ) 0.010 * P( дерево | LIGNO ) 0.010 * P( поиска | ARBO ) 0.010 * P( поиска | LIGNO ) 0.001 / P( строим дерево поиска ) / P( строим дерево поиска ) P( ARBO | строим дом из дерева ) = P( LIGNO | строим дом из дерева ) = = P( ARBO ) 0.500 < = P( СТРLIGNO ) 0.500 * P( строим | ARBO ) 0.001 * P( строим | LIGNO ) 0.010 * P( дом | ARBO ) 0.005 * P( дом | LIGNO ) 0.010 * P( из | ARBO ) 0.001 * P( из | LIGNO ) 0.001 * P( дерева | ARBO ) 0.010 * P( дерева | LIGNO ) 0.010 / P( строим дом из дерева ) / P( строим дом из дерева )

  11. Вероятностный подход.Векторная модель документа • Дан набор из n документов, в которых встречается mслов. • Пусть X=[xij], i=1 ,.., m, j=1, ..., n - матрица с m строк и n столбцов, у которой (i,j)-й элемент описывает вероятность встретить слово i в документе j • К этой матрице можно относиться, как к матрице ковариаций • Для такой ситуации разработаны статистические методы • Попробовать использовать спектральное разложение? Метод главных компонент?

  12. Чего не хватает «чистым» вероятностным методам • Теряется информация о частях речи • Никак не используется структура предложения и связи слов в предложении • … (дополните)

  13. Контекстно-свободная грамматика import nltk groucho_grammar = nltk.parse_cfg(""" S -> NP VP PP -> P NP NP -> Det N | Det N PP | 'I' VP -> V NP | VP PP Det -> 'an' | 'my' N -> 'elephant' | 'pajamas' V -> 'shot' P -> 'in' """) sent = nltk.word_tokenize('I shot an elephant in my pajamas') parser = nltk.ChartParser(groucho_grammar) trees = parser.nbest_parse(sent) for tree in trees: print tree for tree in trees: tree.draw() NP – noun phrase (именная группа) N – noun (существительное) S – sentence (предложение) JJ – adjective (прилагательное) V – verb (глагол) VP – verb phrase (глагольная группа) Det – determiner (определитель) P – preposition (предлог)

  14. Контекстно-свободная грамматика I saw an elephant in my pajamas. NP – noun phrase (именная группа) N – noun (существительное) S – sentence (предложение) JJ – adjective (прилагательное) V – verb (глагол) VP – verb phrase (глагольная группа) Det – determiner (определитель) P – preposition (предлог)

  15. Контекстно-свободная грамматика import nltk badboy_grammar = nltk.parse_cfg(""" S -> NP VP PP -> P NP NP -> Det NP | N | Det N PP | JJ NP | 'I' VP -> V NP | VP PP Det -> 'an' | 'my' | 'The' | 'that' N -> 'elephant' | 'pajamas' | 'boy' | 'mess' V -> 'shot' | 'made' P -> 'in' JJ -> 'bad' """) sent = nltk.word_tokenize('The bad boy made that mess') parser = nltk.ChartParser(badboy_grammar) trees = parser.nbest_parse(sent) for tree in trees: print tree for tree in trees: tree.draw() NP – noun phrase (именная группа) N – noun (существительное) S – sentence (предложение) JJ – adjective (прилагательное) V – verb (глагол) VP – verb phrase (глагольная группа) Det – determiner (определитель) P – preposition (предлог)

  16. Контекстно-свободная грамматика The bad boy made that mess. NP – noun phrase (именная группа) N – noun (существительное) S – sentence (предложение) JJ – adjective (прилагательное) V – verb (глагол) VP – verb phrase (глагольная группа) Det – determiner (определитель) P – preposition (предлог)

  17. Категориальная грамматика Правила вывода: NP – noun phrase (именная группа) N – noun (существительное) S – sentence (предложение) JJ – adjective (прилагательное) V – verb (глагол) VP – verb phrase (глагольная группа) Det – determiner (определитель) JJ = N/NV = (NP\S)/N PDet = N P /N

  18. Еще пример import nltk sentence = """At eight o'clock on Thursday morning Arthur didn't feel very good.""" tokens = nltk.word_tokenize(sentence) tokens tagged = nltk.pos_tag(tokens) tagged[0:6] entities = nltk.chunk.ne_chunk(tagged) entities from nltk.corpus import treebank t = treebank.parsed_sents('wsj_0001.mrg')[0] t.draw()

  19. Проблемы формальных грамматик • Даже языки с фиксированным порядком слов (английский, французский) трудно формализуемы, не говоря о языках с произвольным порядком слов (русский, эсперанто) • При построении контекстно-свободной грамматики с некоторого момента обнаруживается, что используемые абстракции перестают содержать лингвистический смысл (похоже на проблему современной физики) • => В базах знаний ограничимся «легко» формализуемым подмножеством языка!

  20. Formal English / FormeelNederlands / gellish.net • The Eiffel tower is located in Paris. • The Eiffel tower is classified as a tower. • Paris is classified as a city.

  21. Formal English / FormeelNederlands / gellish.net GELLISH ENGLISH A structured and formalized subset of natural English that is computer interpretable. Its definition includes a Formal English Dictionary-Taxonomy of concepts in which the concepts are arranged in a taxonomy hierarchy and is an ontology as far as required to define the language. The Gellish Formal English Dictionary-Taxonomy contains the following Domain Dictionaries-Taxonomies: • Generic concepts and relation types (TOPini) • Units of Measures, scales and currencies • Activities, Events, Processes and Functions • Physical objects of various kinds, such as: • - Static equipment, process units and piping • - Buildings, civil and structural items • - Electrical and Instrumentation, Control and Valves • - Rotating equipment, Transport equipment and Solids Handling • - Roles of physical objects (applications) • Aspects, Properties, Qualities and Roles of aspects • Materials of constructions (steel and non-steel), Fluids and Waves • Documents and Identification, Information, Symbols and Annotation • Geographic objects, including countries • Biology • Organizations and Procurement • Mathematics, Geometry and Shapes • Waste water and water treatment

  22. В реальности методы комбинируются • Например, можно использовать формальные грамматики там, где это применимо, а в остальных частях «догадываться» статистически • Несколько машин, работающих по разным алгоритмам, вырабатывают каждая свое решение, а затем вопрос решается «голосованием»

  23. Полезные ссылки • Сайт автора лекции: http://novikov.amikeco.ru • Natural Language ToolKit (NLTK) http://www.nltk.orghttp://www.nltk.org/book • Parsing of Esperanto, диссертация на тему автоматизированного разбора языка эсперантоhttps://www.duo.uio.no/bitstream/handle/10852/9411/thesis.pdf • Онлайн-курсы Natural Language Processing на Coursera:https://class.coursera.org/nlp/lecture/preview (Jurafsky & Manning) https://www.coursera.org/course/nlangp (Collins) • Как стать хорошим компьютерным лингвистом?http://mathlingvo.ru/2013/03/becoming-a-good-computer-linguist/ • Gellish English http://gellish.net • Wolfram Alpha http://alpha.wolfram.com

More Related