Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

части речи

Нашел время немного поиграться с 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 для русского языка? Какие из них считаются лучшими?
Tags: языки
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 47 comments