Entry tags:
части речи
Нашел время немного поиграться с Stanford POS Tagger, библиотекой, которая распределяет слова в тексте по частям речи (POS tagger - part-of-speech tagger). Довольно интересная штука. В одном из стандартных режимов вывода превращает, например, это первое предложение "Эммы" Джейн Остен:
Emma Woodhouse, handsome, clever, and rich, with a comfortable home
and happy disposition, seemed to unite some of the best blessings of
existence; and had lived nearly twenty-one years in the world with very
little to distress or vex her.
в следующую смесь, которую только на первый взгляд тяжело прочесть:
Emma_NNP Woodhouse_NNP ,_, handsome_JJ ,_, clever_JJ ,_, and_CC rich_JJ ,_, with_IN a_DT comfortable_JJ home_NN and_CC happy_JJ disposition_NN ,_, seemed_VBD to_TO unite_VB some_DT of_IN the_DT best_JJS blessings_NNS of_IN existence_NN ;_: and_CC had_VBD lived_VBN nearly_RB twenty-one_CD years_NNS in_IN the_DT world_NN with_IN very_RB little_JJ to_TO distress_NN or_CC vex_VB her_PRP ._.
После каждого слова через _ стоит его таг, распознанная библиотекой часть речи. Есть подробных список тагов, но вообще-то и так все понятно, NN существительные, JJ прилагательные, VB глаголы и так далее; нередко есть дополнительные варианты, например NNP - имена собственные, а JJS - превосходная степень прилагательных (тут: best).
Насколько я понимаю, такие библиотеки не пытаются "понять структуру" предложения. Они применяют статистическую модель, которая позволяет им с большой достоверностью определить часть речи слова на основании самого слова и близлежащих слов в предложении. Скажем, в английском тексте слово world наверняка будет существительным, слово lived - глаголом, а слово move может быть и тем и другим, но посмотрим на предыдущее слово. Если the move, то наверняка существительное, если to move, то наверняка глагол, а если some move, то опять непонятно, но если учесть еще одно предыдущее слово, то может станет ясно, и так далее. В основе POS tagger лежит такая модель, в которой записаны все эти факты и вероятности, а построена эта модель на основе большого корпуса текстов, в которых правильные части речи были когда-то помечены вручную. Это не вся суть работы POS Taggger, есть всякие дополнительные алгоритмы и тонкости, но это основа.
С одной стороны это удивительно и замечательно, что на основе такой простой статистики, без попытки "понять структуру", Stanford POS Tagger достигает примерно 96-97% точности в своей работе. С другой стороны, 97% точности все равно означает, что в среднем примерно каждое 30-е слово будет классифицировано неправильно. И действительно, уже в первом предложении "Эммы", процитированном выше, есть ошибка таггера (слово "distress" в конце это глагол, а помечено как существительное).
Несмотря на ошибки, автоматическая классификация частей речи меня лично очень впечатляет и кажется весьма полезной. Тривиальным делом становится, например, сравнить процент прилагательных или наречий в текстах такого-то писателя с общей нормой жанра или эпохи, вычисленной на основе широкой выборки. Конечно, надо осторожно подходить к интерпретации такого рода сравнений, но сама легкость вычислений манит. Или вот, скажем, я недавно прочитал "Эмму" и у меня создалось впечатление особой частоты и богатства в ней прилагательных, которые описывают хорошие качества людей. Мне даже захотелось составить полный список таких слов - и вот теперь я вижу, что с таггером это сделать будет намного легче.
Кстати, когда я составил и бегло просмотрел список вообще всех прилагательных "Эммы" согласно таггеру, то увидел другую интересную проблему: как помечать английский герундий (-ing). Было бы слишком наивным всегда считать его вариантом глагола: во многих словах - напр. interesting или charming - он совершенно очевидно функционирует как прилагательное, и действительно таггер помечает эти слова JJ. Тут, однако, легко подобрать примеры, которые демонстрируют фундаментальные недостатки статистического подхода. Сравните два предложения:
He's been charming me for the last three hours.
He's been charming to me for the last three hours.
В первом предложении слово charming функционирует как глагол, во втором - как прилагательное, и понять эту разницу вообще невозможно по словам, которые идут перед charming, нужно смотреть и на слова после тоже. Мне так и не удалось убедить Stanford POS Tagger распознать charming как глагол в первом типе предложения - он всегда помечает его как JJ, даже при использовании самой своей продвинутой и медленной модели, которая в принципе учитывает в какой-то мере - согласно документации - и следующие слова тоже, а не только предшествующие.
Если же говорить о реальных текстах, а не придуманных примерах, то мне было интересно, что таггер сделает со словом obliging, которое Остен использует очень часто в тексте "Эммы", практически всегда как прилагательное с значением "любезный":
They're extremely civil and obliging to us... My dear sir,you are too obliging... amiable, obliging, gentle Mr. Elton... she seems a very obliging, pretty-behaved young lady...
Как я и подозревал, таггер споткнулся на этом слове и описал множество из этих очевидных прилагательных как глаголы или в некоторых случаях даже существительные. Видимо, корпус, на основе которого была построена модель таггера, не включал в себя такое использование obliging.
P.S. Вопрос знающим эту область: есть ли весьма точные POS taggers для русского языка? Какие из них считаются лучшими?
Emma Woodhouse, handsome, clever, and rich, with a comfortable home
and happy disposition, seemed to unite some of the best blessings of
existence; and had lived nearly twenty-one years in the world with very
little to distress or vex her.
в следующую смесь, которую только на первый взгляд тяжело прочесть:
Emma_NNP Woodhouse_NNP ,_, handsome_JJ ,_, clever_JJ ,_, and_CC rich_JJ ,_, with_IN a_DT comfortable_JJ home_NN and_CC happy_JJ disposition_NN ,_, seemed_VBD to_TO unite_VB some_DT of_IN the_DT best_JJS blessings_NNS of_IN existence_NN ;_: and_CC had_VBD lived_VBN nearly_RB twenty-one_CD years_NNS in_IN the_DT world_NN with_IN very_RB little_JJ to_TO distress_NN or_CC vex_VB her_PRP ._.
После каждого слова через _ стоит его таг, распознанная библиотекой часть речи. Есть подробных список тагов, но вообще-то и так все понятно, NN существительные, JJ прилагательные, VB глаголы и так далее; нередко есть дополнительные варианты, например NNP - имена собственные, а JJS - превосходная степень прилагательных (тут: best).
Насколько я понимаю, такие библиотеки не пытаются "понять структуру" предложения. Они применяют статистическую модель, которая позволяет им с большой достоверностью определить часть речи слова на основании самого слова и близлежащих слов в предложении. Скажем, в английском тексте слово world наверняка будет существительным, слово lived - глаголом, а слово move может быть и тем и другим, но посмотрим на предыдущее слово. Если the move, то наверняка существительное, если to move, то наверняка глагол, а если some move, то опять непонятно, но если учесть еще одно предыдущее слово, то может станет ясно, и так далее. В основе POS tagger лежит такая модель, в которой записаны все эти факты и вероятности, а построена эта модель на основе большого корпуса текстов, в которых правильные части речи были когда-то помечены вручную. Это не вся суть работы POS Taggger, есть всякие дополнительные алгоритмы и тонкости, но это основа.
С одной стороны это удивительно и замечательно, что на основе такой простой статистики, без попытки "понять структуру", Stanford POS Tagger достигает примерно 96-97% точности в своей работе. С другой стороны, 97% точности все равно означает, что в среднем примерно каждое 30-е слово будет классифицировано неправильно. И действительно, уже в первом предложении "Эммы", процитированном выше, есть ошибка таггера (слово "distress" в конце это глагол, а помечено как существительное).
Несмотря на ошибки, автоматическая классификация частей речи меня лично очень впечатляет и кажется весьма полезной. Тривиальным делом становится, например, сравнить процент прилагательных или наречий в текстах такого-то писателя с общей нормой жанра или эпохи, вычисленной на основе широкой выборки. Конечно, надо осторожно подходить к интерпретации такого рода сравнений, но сама легкость вычислений манит. Или вот, скажем, я недавно прочитал "Эмму" и у меня создалось впечатление особой частоты и богатства в ней прилагательных, которые описывают хорошие качества людей. Мне даже захотелось составить полный список таких слов - и вот теперь я вижу, что с таггером это сделать будет намного легче.
Кстати, когда я составил и бегло просмотрел список вообще всех прилагательных "Эммы" согласно таггеру, то увидел другую интересную проблему: как помечать английский герундий (-ing). Было бы слишком наивным всегда считать его вариантом глагола: во многих словах - напр. interesting или charming - он совершенно очевидно функционирует как прилагательное, и действительно таггер помечает эти слова JJ. Тут, однако, легко подобрать примеры, которые демонстрируют фундаментальные недостатки статистического подхода. Сравните два предложения:
He's been charming me for the last three hours.
He's been charming to me for the last three hours.
В первом предложении слово charming функционирует как глагол, во втором - как прилагательное, и понять эту разницу вообще невозможно по словам, которые идут перед charming, нужно смотреть и на слова после тоже. Мне так и не удалось убедить Stanford POS Tagger распознать charming как глагол в первом типе предложения - он всегда помечает его как JJ, даже при использовании самой своей продвинутой и медленной модели, которая в принципе учитывает в какой-то мере - согласно документации - и следующие слова тоже, а не только предшествующие.
Если же говорить о реальных текстах, а не придуманных примерах, то мне было интересно, что таггер сделает со словом obliging, которое Остен использует очень часто в тексте "Эммы", практически всегда как прилагательное с значением "любезный":
They're extremely civil and obliging to us... My dear sir,you are too obliging... amiable, obliging, gentle Mr. Elton... she seems a very obliging, pretty-behaved young lady...
Как я и подозревал, таггер споткнулся на этом слове и описал множество из этих очевидных прилагательных как глаголы или в некоторых случаях даже существительные. Видимо, корпус, на основе которого была построена модель таггера, не включал в себя такое использование obliging.
P.S. Вопрос знающим эту область: есть ли весьма точные POS taggers для русского языка? Какие из них считаются лучшими?
no subject
no subject
no subject
Да и сейчас может быть.
no subject
no subject
http://www.stuffmomnevertoldyou.com/blog/where-did-the-handsome-women-go/
no subject
https://tech.yandex.ru/mystem/
no subject
no subject
структурная лингвистика ещё преподавалась в ЛГУ, даже в 80-х... а московских профессоров её "изобретших" уже давно нет...
no subject
Каждый помнит – берегись!
Кое-кто забыл запреты –
Структуальнейший лингвист.
no subject
no subject
no subject
Горничная барина крепко матернула повара и гайморит поварёнка.
(мопед не мой)
no subject
Слегка о прошлом гонорея,
Сказала: «Каравай меня!»,
Прикрыв глаза и батарея
Её весь вечер он вокзал,
от страсти аж оранжерея,
сандал, портал и просто трал,
её экстаза портупея.
Возня синхронно и идея,
всю ночь они горизонтали,
И лишь под утро, ассамблея,
забвенье автомагистрали…
no subject
no subject
В общем, штука впечатляющая, но что-то на их сайте я не вижу упоминания про неё. Может плохо ищу.
no subject
Ребята знакомые пытались поизучать, говорят, шуму больше, чем толку. Хотели тэги автоматом расставлять к документам в своей СЭД - не прокатило. Скормили главу из "Войны и мира" - результат совсем не впечатлил.
но у них не было возможности править словари или что там есть. Просто утиль или библиотека, на входе текст, на выходе какие-то структуры.
Насколько реально использовать его в свете топика, для определения частей речи - не знаю.
no subject
no subject
Применений у такой штуки много, таггер частей речи один из побочных вариантов использования. Поэтому на технологию сейчас накручено несколько SDK для тройки частых задач (вот здесь в разделе Поисково-аналитические SDK - http://www.abbyy.ru/products/developers/), плюс делаются проекты под конкретных заказчиков.
no subject
He's been charming me for the last three hours. => Он чарует меня последние три часа.
He's been charming to me for the last three hours. => Он был очаровательным для меня последние три часа.
They're extremely civil and obliging to us... => Они чрезвычайно вежливы и услужливы к нам...
My dear sir,you are too obliging... => Мой дорогой сэр, вы слишком услужливы...
amiable, obliging, gentle Mr. Elton... => Дружелюбный, услужливый, мягкий господин Элтон...
she seems a very obliging, pretty-behaved young lady... => Она кажется очень услужливой "симпатичен себя вели" молодой особой...
no subject
no subject
https://www.coursera.org/course/nlp
no subject
А корпуса - скорее закрытые, чем открытые. В частности самый большой корпус - НКРЯ, его часть со снятой морфологической омонимией - порядка 6,5 млн. словоформ. Но публично доступна для скачивания выборка только в 1 млн.
Более менее актуальные результаты тестирования есть в статье ОЦЕНКА МЕТОДОВ АВТОМАТИЧЕСКОГО АНАЛИЗА ТЕКСТА: МОРФОЛОГИЧЕСКИЕ ПАРСЕРЫ РУССКОГО ЯЗЫКА (http://www.dialog-21.ru/digests/dialog2010/materials/pdf/49.pdf)
Но при этом основной вопрос, что такое POS - это просто часть речи, которых в русском языке порядка 10? Или снятие омонимии по всем характеристикам, в частности, по падежу.
Соответственно в зависимости от этого получаются очень разные результаты.
no subject
no subject
Если про корпус - то, да, омонимия там снята. Но задачу POS теггера для русского удобнее ставить как выбор корректного набора морфологических характеристик из возможных (отдельный вопрос, как получить эти возможные; обычно используется словарь + предиктивная морфология для неизвестных слов). И это является базой для задачи классификации.
no subject
no subject
Ну и легче выбирать 1 набор из 10 (условно), чем 1 из 450.
Да, и еще есть вопрос преобразования одного формата разметки в другой.
no subject
no subject
no subject
no subject
no subject
no subject
Трудно представить, что можно хорошо обучить AI понимать текст на меньшем массиве данных, чем человека, нейронную сеть которого эволюция довольно долго оптимизировала :(
no subject
Таггер для русского языка
Великолепен, дает кучу дополнительной информации.
пример: echo 'баба сеяла горох' | cmd/tree-tagger-russian
вывод:
баба Ncfsny
сеяла Vmis-sfa-e
горох Ncmsan
- тут разшифровка http://corpus.leeds.ac.uk/mocky/msd-ru.html
Умеет выдавать базовую словоформу.
Одна из моих любимых его ошибок - в одном из предложений слово "обезьяна" было определено как глагол, и отсюда базовая словоформа - "обезьять".
Теперь мой словарный запас пополнен новым глаголом.
ps:
Дело с обученными таггерами для русского языка на момент два года назад было "не очень". Порой обидно было наблюдать в очередном таггере поддержку например Болгарского языка и отсутствие даже намека на Русский.
pps:
Великолепная статья из последних на тему что машина может понимать из текста не имея вообще никакого представления о языке, наличии слов, частей речи и тп
Text Understanding from Scratch http://arxiv.org/pdf/1502.01710v1.pdf
Re: Таггер для русского языка
Re: Таггер для русского языка
no subject
no subject
Похоже, что говорят теггер. Так ли уж это важно?
no subject
no subject
no subject
http://habrahabr.ru/post/152799/
И дальше по ссылкам:
http://habrahabr.ru/post/125988/
no subject
no subject
(Anonymous) 2015-04-10 05:48 pm (UTC)(link)no subject
https://www.youtube.com/watch?list=PL6397E4B26D00A269&v=nfoudtpBV68
Я их прослушал и написал длинное и занудное сочинение по теме (как всегда)
http://mosermichael.github.io/cstuff/all/blog/2015/02/05/nlp-revisited
no subject