avva: (Default)
[personal profile] avva
Нашел время немного поиграться с 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 для русского языка? Какие из них считаются лучшими?

Date: 2015-04-08 12:07 am (UTC)
From: [identity profile] rankin-almst500.livejournal.com
вау.. интересно... первые artificial intelligence попытки точно будут говорить на английском языке...

Date: 2015-04-08 12:25 am (UTC)
From: [identity profile] poopoopastor.livejournal.com
..узнал что раньше и женщина могла быть handsome...

Date: 2015-04-08 01:54 am (UTC)
From: [identity profile] misha-b.livejournal.com

Да и сейчас может быть.
(deleted comment)

Date: 2015-04-08 09:48 am (UTC)
From: [identity profile] gvadelupa.livejournal.com
Но если женщина не pretty, то она вполне может быть handsome.

Date: 2015-04-08 02:24 pm (UTC)
From: [identity profile] neatfires.livejournal.com
Не совсем. Handsome в современном значении - это не величина женской красоты ниже pretty. Термин относится только к женщинам постарше.

http://www.stuffmomnevertoldyou.com/blog/where-did-the-handsome-women-go/

Date: 2015-04-08 12:38 am (UTC)
From: [identity profile] r-l.livejournal.com
mystem на яндексе, довольно продвинутый, лежит тут:
https://tech.yandex.ru/mystem/

Date: 2015-04-08 12:41 am (UTC)
From: [identity profile] r-l.livejournal.com
Но вообще с русским тоже тьма проблем - очень много омоформ, свободный относительно синтаксис, затрудняющий их идентификацию, дизамбигуация пока довольно слабо разработана. Но лучшие умы неустанно и т.д., обещают прорывы.

Date: 2015-04-08 01:21 am (UTC)
From: [identity profile] rankin-almst500.livejournal.com
"Гло́кая ку́здра ште́ко будлану́ла бо́кра и курдя́чит бокрёнка"...))

структурная лингвистика ещё преподавалась в ЛГУ, даже в 80-х... а московских профессоров её "изобретших" уже давно нет...

Date: 2015-04-08 01:49 am (UTC)
From: [identity profile] pappadeux.livejournal.com
Улетая на планеты –
Каждый помнит – берегись!
Кое-кто забыл запреты –
Структуальнейший лингвист.

Date: 2015-04-08 01:56 am (UTC)
From: [identity profile] rankin-almst500.livejournal.com
)) стёб стёбом, но у нас есть только одна "скрепа" - русский язык...

Date: 2015-04-08 04:42 am (UTC)
From: [identity profile] pappadeux.livejournal.com
и водка!

Date: 2015-04-08 06:02 pm (UTC)
From: [identity profile] rostyslav maiboroda (from livejournal.com)
А если так:
Горничная барина крепко матернула повара и гайморит поварёнка.
(мопед не мой)

Date: 2015-04-09 03:57 pm (UTC)
From: [identity profile] hirelingofnato.livejournal.com
Свою судьбу хуйня и бля,
Слегка о прошлом гонорея,
Сказала: «Каравай меня!»,
Прикрыв глаза и батарея

Её весь вечер он вокзал,
от страсти аж оранжерея,
сандал, портал и просто трал,
её экстаза портупея.

Возня синхронно и идея,
всю ночь они горизонтали,
И лишь под утро, ассамблея,
забвенье автомагистрали…

Date: 2015-04-08 11:48 am (UTC)
From: [identity profile] rednyrg721.livejournal.com
А вероятностный подход какой-нибудь есть к этому делу? Ведь вполне вероятно, что и обычный человек не сможет понять, что имелось в виду в каком-то куске текста.

Date: 2015-04-08 04:12 am (UTC)
From: [identity profile] bolk.livejournal.com
Недавно к нам ребята из «Эбби» приезжали, показывали что-то очень впечатляющее — штуку, которая здорово анализировала текст, понимала и части речи, и тематику, и даже объекты в тексте, причём в тексте «в дверь вошёл мужчина, он был одет…» могла понять, что «мужчина» и «он» — два обозначения одного объекта.

В общем, штука впечатляющая, но что-то на их сайте я не вижу упоминания про неё. Может плохо ищу.

Date: 2015-04-08 04:48 am (UTC)
From: [identity profile] yaueyu.livejournal.com
Compreno?
Ребята знакомые пытались поизучать, говорят, шуму больше, чем толку. Хотели тэги автоматом расставлять к документам в своей СЭД - не прокатило. Скормили главу из "Войны и мира" - результат совсем не впечатлил.
но у них не было возможности править словари или что там есть. Просто утиль или библиотека, на входе текст, на выходе какие-то структуры.
Насколько реально использовать его в свете топика, для определения частей речи - не знаю.

Date: 2015-04-08 04:51 am (UTC)
From: [identity profile] bolk.livejournal.com
Названия, увы, в памяти не отложилось. Но на тех текстах, которые показывали — выглядело очень прилично, ошибалось, но с этими ошибками можно было мириться.

Date: 2015-04-08 10:21 am (UTC)
From: [identity profile] random-kori.livejournal.com
Технология называется ABBYY Compreno, она в отличии от стандартных таггеров как раз не статистическая, а именно пытается понять структуру предложения.
Применений у такой штуки много, таггер частей речи один из побочных вариантов использования. Поэтому на технологию сейчас накручено несколько SDK для тройки частых задач (вот здесь в разделе Поисково-аналитические SDK - http://www.abbyy.ru/products/developers/), плюс делаются проекты под конкретных заказчиков.

Date: 2015-04-21 08:06 pm (UTC)
From: [identity profile] mkal.livejournal.com
Результаты работы компрено на примерах avva:

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... => Она кажется очень услужливой "симпатичен себя вели" молодой особой...

Date: 2015-04-21 08:40 pm (UTC)
From: [identity profile] avva.livejournal.com
Первые два предложения впечатляют. Спасибо, интересно.

Date: 2015-04-08 05:36 am (UTC)
From: [identity profile] etot-samyi.livejournal.com
Кстати, на Курсере есть курс в котором как раз и создают подобный таггер с нуля.
https://www.coursera.org/course/nlp

Date: 2015-04-08 05:50 am (UTC)
From: [identity profile] kzn.livejournal.com
Основная проблема - с открытостью корпусов. Для обучения POS теггера нужен корпус.
А корпуса - скорее закрытые, чем открытые. В частности самый большой корпус - НКРЯ, его часть со снятой морфологической омонимией - порядка 6,5 млн. словоформ. Но публично доступна для скачивания выборка только в 1 млн.

Более менее актуальные результаты тестирования есть в статье ОЦЕНКА МЕТОДОВ АВТОМАТИЧЕСКОГО АНАЛИЗА ТЕКСТА: МОРФОЛОГИЧЕСКИЕ ПАРСЕРЫ РУССКОГО ЯЗЫКА (http://www.dialog-21.ru/digests/dialog2010/materials/pdf/49.pdf)

Но при этом основной вопрос, что такое POS - это просто часть речи, которых в русском языке порядка 10? Или снятие омонимии по всем характеристикам, в частности, по падежу.

Соответственно в зависимости от этого получаются очень разные результаты.

Date: 2015-04-08 08:23 am (UTC)
From: [identity profile] r-l.livejournal.com
Так зачем дизамбигуация для обучения парсера с нуля? Она же там уже в разметке снята, то есть он же распарсен яндексом изначально.

Date: 2015-04-08 08:30 am (UTC)
From: [identity profile] kzn.livejournal.com
В НКРЯ? Или в mystem, который раньше упоминался?

Если про корпус - то, да, омонимия там снята. Но задачу POS теггера для русского удобнее ставить как выбор корректного набора морфологических характеристик из возможных (отдельный вопрос, как получить эти возможные; обычно используется словарь + предиктивная морфология для неизвестных слов). И это является базой для задачи классификации.

Date: 2015-04-08 08:40 am (UTC)
From: [identity profile] r-l.livejournal.com
Нет, ну все же настолько я проблему понимаю, чтоб про стемер не спрашивать: в НКРЯ.

Date: 2015-04-08 08:52 am (UTC)
From: [identity profile] kzn.livejournal.com
Для русского получается порядка 450-600 наборов характеристик (в зависимости от принятых соглашений в разметке, они тоже бывают сильно разные).

Ну и легче выбирать 1 набор из 10 (условно), чем 1 из 450.

Да, и еще есть вопрос преобразования одного формата разметки в другой.

Date: 2015-04-08 08:54 am (UTC)
From: [identity profile] r-l.livejournal.com
Вопрос есть, проблемы нет ;)

Date: 2015-04-08 08:57 am (UTC)
From: [identity profile] kzn.livejournal.com
Полного автоматического однозначного преобразования тоже нет :)

Date: 2015-04-08 10:37 am (UTC)
From: [identity profile] rednyrg721.livejournal.com
А как же пиратские диски с книгами, уж пара гигабайт текста в архиве там точно есть, а значит примерно шесть гигабайт разжатого - что равно шести миллиардам знаков.

Date: 2015-04-08 10:56 am (UTC)
From: [identity profile] kzn.livejournal.com
Это же просто тексты. А для построения теггера нужна выборка со снятой омонимией. Надо, чтобы в в предложении "мама мыла раму у "мыла" было отмечено, что это глагол, а не существительное в родительном падеже. Или в предложении "Путина пригласили на ЭКСПО в Милане, решение о поездке пока не принято" надо понять, что "Путина" это "Путин" в родительном падеже, а не "путина" - сезон рыбной ловли в именительном.

Date: 2015-04-08 10:59 am (UTC)
From: [identity profile] rednyrg721.livejournal.com
Ага, спасибо, я уже после коммента погуглил, что такое корпус, оказалось, что я неправильно понимал значение :)

Date: 2015-04-08 04:30 pm (UTC)
From: [identity profile] dmitriy mandel (from livejournal.com)
Интересно сравнить размер корпуса с количеством слов, которое человек слышит, пока осваивает язык в раннем детстве: более 40 млн слов за первые 3 года жизни в обеспеченных (американских) семьях, около 12 млн слов за тот же период в бедных семьях. (Это не считая телевизора и т. п. - только речь, услышанная дома.)

Трудно представить, что можно хорошо обучить AI понимать текст на меньшем массиве данных, чем человека, нейронную сеть которого эволюция довольно долго оптимизировала :(

Date: 2015-04-08 09:41 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо за ссылку, отличная статья (по крайней мере, первое впечатление от беглого просмотра такое, потом прочитаю подробнее).

Таггер для русского языка

Date: 2015-04-08 07:23 am (UTC)
From: [identity profile] ivan starkov (from livejournal.com)
В своей работе использую TreeTagger, http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/#Linux
Великолепен, дает кучу дополнительной информации.
пример: 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
Edited Date: 2015-04-08 07:44 am (UTC)
From: [identity profile] dmitriy mandel (from livejournal.com)
Увидел глагол "обезьять" и вспомнил историю про древних (1990-е) людей, калибровавших русскоязычный поисковик по Конституции РФ. В процессе отладки создатели программы с удивлением узнали о существовании глаголов "алтать" и "адыгеть". (Слова "Адыгея" и "Алтай" были интерпретированы программой как глагольные формы.)
From: [identity profile] rostyslav maiboroda (from livejournal.com)
Однажды в трамвае я невольно прислушался к разговору двух моряков: один из них говорил, что ловить сельдь сетями труднее, чем минтая тралом. Такого термина я никогда не слыхал и долго потом пытался выяснить у компетентных людей, что такое минтать трал. К сожалению, никто ничего определенного мне ответить не мог. Наконец судьба свела меня с одним военным моряком, которому я задал тот же вопрос, не надеясь, впрочем, получить ответ. Каково же было мое удивление, когда выяснилось, что именно он может дать мне все пояснения относительно техники минтания тралом. По правде сказать, он даже слегка разочаровался во мне. Прежде он был более высокого мнения о моем знании морской жизни. Ему лично много раз еще на гражданке приходилось минтать тралом. Это же очень просто! Трал сначала немного подтягивают к кораблю, а потом отпускают. Это и называется ловить, минтая тралом. Только спустя год я узнал, что минтай - это рыба семействатресковых. Неприятно то, что в течение этого года я пытался полученные сведения о технике минтания тралом сделать достоянием многих моих знакомых.

Date: 2015-04-08 01:55 pm (UTC)
From: [identity profile] http://users.livejournal.com/_sabiko/
Очень непривычно видеть транслитерацию "tag" как "таг". Это нормально вообще, так говорят? Впервые вижу и жутко режет глаз, но судя по комментариям, только мне?

Date: 2015-04-08 09:40 pm (UTC)
From: [identity profile] avva.livejournal.com
Я не знаю, как говорят, в таких случаях я обычно не имею понятия об устоявшейся русской терминологии, поскольку знаю ее только по-английски.

Похоже, что говорят теггер. Так ли уж это важно?

Date: 2015-04-08 10:38 pm (UTC)
From: [identity profile] scherkas.livejournal.com
Странно: в примере слово distress как раз идет после to, то есть не должно быть сомнение что это глагол..

Date: 2015-04-11 11:44 pm (UTC)
From: [identity profile] avva.livejournal.com
Видимо, в корпусе, по которому строилась модель, не было "to distress" вообще.

Date: 2015-04-09 09:54 am (UTC)
From: [identity profile] greenadine.livejournal.com
Рекомендую помотреть вот здесь:
http://habrahabr.ru/post/152799/
И дальше по ссылкам:
http://habrahabr.ru/post/125988/

Date: 2015-04-11 11:44 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо!

Date: 2015-04-10 05:48 pm (UTC)
From: (Anonymous)
А потому что JJ и NN - это не совсем подходящие для современного английского языка. Но, к сожалению, computational linguists верят грамматике Хомского. Dependency grammar, на мой взгляд, чуть лучше.

Date: 2015-04-11 07:59 pm (UTC)
From: [identity profile] michaelm1234.livejournal.com
есть хорошие лекции по теме

https://www.youtube.com/watch?list=PL6397E4B26D00A269&v=nfoudtpBV68


Я их прослушал и написал длинное и занудное сочинение по теме (как всегда)

http://mosermichael.github.io/cstuff/all/blog/2015/02/05/nlp-revisited
Edited Date: 2015-04-11 08:07 pm (UTC)

Date: 2015-04-11 11:44 pm (UTC)
From: [identity profile] avva.livejournal.com
Спасибо, с интересом прочитал.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 01:04 pm
Powered by Dreamwidth Studios