части речи
Apr. 8th, 2015 02:58 amНашел время немного поиграться с 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
Date: 2015-04-08 12:07 am (UTC)no subject
Date: 2015-04-08 12:25 am (UTC)no subject
Date: 2015-04-08 12:38 am (UTC)https://tech.yandex.ru/mystem/
no subject
Date: 2015-04-08 12:41 am (UTC)no subject
Date: 2015-04-08 01:21 am (UTC)структурная лингвистика ещё преподавалась в ЛГУ, даже в 80-х... а московских профессоров её "изобретших" уже давно нет...
no subject
Date: 2015-04-08 01:49 am (UTC)Каждый помнит – берегись!
Кое-кто забыл запреты –
Структуальнейший лингвист.
no subject
Date: 2015-04-08 01:54 am (UTC)Да и сейчас может быть.
no subject
Date: 2015-04-08 01:56 am (UTC)no subject
Date: 2015-04-08 04:12 am (UTC)В общем, штука впечатляющая, но что-то на их сайте я не вижу упоминания про неё. Может плохо ищу.
no subject
Date: 2015-04-08 04:42 am (UTC)no subject
Date: 2015-04-08 04:48 am (UTC)Ребята знакомые пытались поизучать, говорят, шуму больше, чем толку. Хотели тэги автоматом расставлять к документам в своей СЭД - не прокатило. Скормили главу из "Войны и мира" - результат совсем не впечатлил.
но у них не было возможности править словари или что там есть. Просто утиль или библиотека, на входе текст, на выходе какие-то структуры.
Насколько реально использовать его в свете топика, для определения частей речи - не знаю.
no subject
Date: 2015-04-08 04:51 am (UTC)no subject
Date: 2015-04-08 05:36 am (UTC)https://www.coursera.org/course/nlp
no subject
Date: 2015-04-08 05:50 am (UTC)А корпуса - скорее закрытые, чем открытые. В частности самый большой корпус - НКРЯ, его часть со снятой морфологической омонимией - порядка 6,5 млн. словоформ. Но публично доступна для скачивания выборка только в 1 млн.
Более менее актуальные результаты тестирования есть в статье ОЦЕНКА МЕТОДОВ АВТОМАТИЧЕСКОГО АНАЛИЗА ТЕКСТА: МОРФОЛОГИЧЕСКИЕ ПАРСЕРЫ РУССКОГО ЯЗЫКА (http://www.dialog-21.ru/digests/dialog2010/materials/pdf/49.pdf)
Но при этом основной вопрос, что такое POS - это просто часть речи, которых в русском языке порядка 10? Или снятие омонимии по всем характеристикам, в частности, по падежу.
Соответственно в зависимости от этого получаются очень разные результаты.
Таггер для русского языка
Date: 2015-04-08 07:23 am (UTC)Великолепен, дает кучу дополнительной информации.
пример: 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
no subject
Date: 2015-04-08 08:23 am (UTC)no subject
Date: 2015-04-08 08:30 am (UTC)Если про корпус - то, да, омонимия там снята. Но задачу POS теггера для русского удобнее ставить как выбор корректного набора морфологических характеристик из возможных (отдельный вопрос, как получить эти возможные; обычно используется словарь + предиктивная морфология для неизвестных слов). И это является базой для задачи классификации.
no subject
Date: 2015-04-08 08:40 am (UTC)no subject
Date: 2015-04-08 08:52 am (UTC)Ну и легче выбирать 1 набор из 10 (условно), чем 1 из 450.
Да, и еще есть вопрос преобразования одного формата разметки в другой.
no subject
Date: 2015-04-08 08:54 am (UTC)no subject
Date: 2015-04-08 08:57 am (UTC)no subject
Date: 2015-04-08 09:48 am (UTC)no subject
Date: 2015-04-08 10:21 am (UTC)Применений у такой штуки много, таггер частей речи один из побочных вариантов использования. Поэтому на технологию сейчас накручено несколько SDK для тройки частых задач (вот здесь в разделе Поисково-аналитические SDK - http://www.abbyy.ru/products/developers/), плюс делаются проекты под конкретных заказчиков.
no subject
Date: 2015-04-08 10:37 am (UTC)no subject
Date: 2015-04-08 10:56 am (UTC)no subject
Date: 2015-04-08 10:59 am (UTC)no subject
Date: 2015-04-08 11:48 am (UTC)no subject
Date: 2015-04-08 01:55 pm (UTC)no subject
Date: 2015-04-08 02:24 pm (UTC)http://www.stuffmomnevertoldyou.com/blog/where-did-the-handsome-women-go/
no subject
Date: 2015-04-08 04:30 pm (UTC)Трудно представить, что можно хорошо обучить AI понимать текст на меньшем массиве данных, чем человека, нейронную сеть которого эволюция довольно долго оптимизировала :(
Re: Таггер для русского языка
Date: 2015-04-08 05:55 pm (UTC)no subject
Date: 2015-04-08 06:02 pm (UTC)Горничная барина крепко матернула повара и гайморит поварёнка.
(мопед не мой)
Re: Таггер для русского языка
Date: 2015-04-08 06:11 pm (UTC)no subject
Date: 2015-04-08 09:40 pm (UTC)Похоже, что говорят теггер. Так ли уж это важно?
no subject
Date: 2015-04-08 09:41 pm (UTC)no subject
Date: 2015-04-08 10:38 pm (UTC)no subject
Date: 2015-04-09 09:54 am (UTC)http://habrahabr.ru/post/152799/
И дальше по ссылкам:
http://habrahabr.ru/post/125988/
no subject
Date: 2015-04-09 03:57 pm (UTC)Слегка о прошлом гонорея,
Сказала: «Каравай меня!»,
Прикрыв глаза и батарея
Её весь вечер он вокзал,
от страсти аж оранжерея,
сандал, портал и просто трал,
её экстаза портупея.
Возня синхронно и идея,
всю ночь они горизонтали,
И лишь под утро, ассамблея,
забвенье автомагистрали…
no subject
Date: 2015-04-10 05:48 pm (UTC)no subject
Date: 2015-04-11 07:59 pm (UTC)https://www.youtube.com/watch?list=PL6397E4B26D00A269&v=nfoudtpBV68
Я их прослушал и написал длинное и занудное сочинение по теме (как всегда)
http://mosermichael.github.io/cstuff/all/blog/2015/02/05/nlp-revisited
no subject
Date: 2015-04-11 11:44 pm (UTC)no subject
Date: 2015-04-11 11:44 pm (UTC)no subject
Date: 2015-04-11 11:44 pm (UTC)no subject
Date: 2015-04-21 08:06 pm (UTC)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
Date: 2015-04-21 08:40 pm (UTC)