Знакомство с тегированием частей речи и скрытой марковской моделью

1656602911 znakomstvo s tegirovaniem chastej rechi i skrytoj markovskoj modelyu

автор Девья Годайал

авторов Сачина Малхотры и Девушки Годайал

1*f6e0uf5PX17pTceYU4rbCA
Источник: https://english.stackexchange.com/questions/218058/parts-of-speech-and-functions-bob-made-a-book-collector-happy-the-other-day

Давайте вернемся во времена, когда у нас не было языка для общения. Единственный способ, который у нас был, – это язык жестов. Именно так мы обычно общаемся с собакой дома, не правда ли? Когда мы говорим ему: «Мы любим тебя, Джимми», он отвечает, виляя хвостом. Это не значит, что он знает, что мы действительно говорим. Его ответ просто потому, что он понимает язык эмоций и жестов больше, чем слова.

Мы, люди, развили понимание многих нюансов природного языка больше, чем любое животное на этой планете. Вот почему, когда мы говорим «Я ЛЮБЛЮ тебя, милый» и когда мы говорим «Давайте любить, милый», мы имеем в виду разные вещи. Поскольку мы понимаем основную разницу между двумя фразами, наши ответы сильно отличаются. Именно этим тонкостям понимания естественной речи мы хотим обучить машину.

Это может означать, когда ваша будущая собака-робот услышит «Я люблю тебя, Джимми», он узнает, что LOVE – это глагол. Он также поймет, что это эмоция, которую мы выражаем, на которую он отвечал бы определенным образом. И, возможно, когда вы говорите своему партнеру «Давай займемся любовью», собака просто останется в стороне от ваших дел?

Это лишь пример того, как обучение работе общения на известном нам языке может облегчить работу.

Основной вариант использования, освещаемый в этом примере, состоит в том, насколько важно понять разницу в употреблении слова ЛЮБОВЬ в разных контекстах.

Тегирование частей речи

С самого маленького возраста мы привыкли распознавать теги части речи. Например, читать предложения и уметь определять, какие слова выступают как существительные, местоимения, глаголы, наречия и т.д. Все это называют тегами части речи.

Давайте посмотрим на определение Википедии для них:

В корпусной лингвистике, тегирование части речи (POS тегирование или тегирование PoS или POST), также называется грамматическая маркировка или разбор категорий слов, – это процесс обозначения слова в тексте (корпусе) как соответствующего определенной части языка на основе как его определения, так и контекста, то есть его связи со смежными и родственными словами во фразе, предложении или абзаце. . Упрощенную форму обычно учат детей школьного возраста, когда идентифицируют слова как существительные, глаголы, прилагательные, наречия и т.д.

Идентификация тегов части речи гораздо сложнее, чем просто сопоставление слов с тегами части речи. Это потому, что POS-теги не являются общими. Вполне возможно, что одно слово имеет разную часть речи в разных предложениях на основе разных контекстов. Вот почему невозможно иметь общее отображение для POS-тегов.

Как видите, невозможно вручную найти разные теги части речи для данного корпуса. Новые типы контекстов и новые слова продолжают появляться в словарях на разных языках, а ручное тэгирование POS не масштабируется само по себе. Вот почему мы полагаемся на машинное тегирование POS.

Прежде чем продолжить и рассмотреть, как выполняется тегирование части речи, мы должны рассмотреть, зачем тегирование POS необходимо и где его можно использовать.

Почему тегирование по частям речи?

Обозначение части речи само по себе может не являться решением какой-либо конкретной проблемы НЛП. Однако это то, что делается как предпосылка для упрощения многих разных проблем. Давайте рассмотрим несколько применений POS-тегирования в различных задачах НЛП.

Превращение текста в речь

Давайте рассмотрим следующее предложение:

They refuse to permit us to obtain the refuse permit.

Слово refuse употребляется дважды в этом предложении и имеет здесь два разных значения. отказаться ИСПОЛЬЗОВАТЬ (/rəˈfyoΗoz/) — глагол, означающий «отрицать», пока ОТКАЗАТЬСЯ(/ˈrefˌyoΗos/) — существительное, что означает «мусор» (т.е. они не являются омофонами). Таким образом, нам нужно знать, какое слово употребляется, чтобы правильно произносить текст. (По этой причине системы преобразования текста в вещание обычно выполняют POS-тегирование.)

Посмотрите на теги части языка, созданные для этого предложения пакетом NLTK.

>>> text = word_tokenize("They refuse to permit us to obtain the refuse permit")>>> nltk.pos_tag(text)[('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'),('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')]

Как мы видим из результатов, предоставленных пакетом NLTK, POS-теги для обоих ОТКАЗАТЬ и ОТКАЗАТЬСЯ разные. Используя эти два разных POS-тега для нашего конвертера текста в язык, можно получить другой набор звуков.

Аналогично, давайте рассмотрим еще одно классическое применение тэгов POS: расшифровка значений слов.

Разбор значений слова

Давайте поговорим об этом ребенке по имени Питер. Поскольку его мать – невролог, она не отдала его в школу. Его жизнь была лишена наук и математики.

Однажды она провела эксперимент и вынудила его сесть на урок математики. Несмотря на то, что у него не было никаких предварительных знаний по предмету, Питер считал, что прошел свой первый тест. Затем его мать последовала тесту и опубликовала его, как показано ниже. (Слава ей!)

1*nHkemiTJp9FJV-wjxBlGrA
Пример значений слова – первая задача по математике моего сына Петра.

Слова часто встречаются в разных значениях как разные части речи. Например:

  • Она увидела а медведь.
  • Ваши усилия будут медведь фрукты.

Слово медведь в приведенных выше предложениях имеет совершенно разные значения, но важнее одно – существительное, а другое – глагол. Рудиментарное определение слов возможно, если вы можете обозначать слова их тегами POS.

Расшифровка значений слова (WSD) – это определение того, какое значение слова (т.е. какое значение) используется в предложении, когда слово имеет несколько значений.

Попытайтесь придумать много значений этого предложения:

Время летит как стрела

Вот разные толкования данного предложения. Значения и, следовательно, часть языка могут отличаться для каждого слова.

1*rOL82uvp5WPXtlhnFZEHKA
Теги части языка определяют значение предложения на основе контекста

Как мы ясно видим, для данного предложения есть несколько возможных интерпретаций. Различные толкования дают разные типы тегов части речи для слов. Эта информация, если доступна для нас, может помочь нам узнать точную версию / толкование предложения, а затем мы можем продолжить.

Приведенный выше пример показывает нам, что одно предложение может иметь три разных последовательности тегов POS, которые одинаково вероятны. Это значит, что очень важно знать, какой конкретный смысл передает данное предложение, когда оно появляется. Это неоднозначность слов, потому что мы пытаемся выяснить Последовательность.

Это всего два из многочисленных приложений, для которых нам понадобится тегирование POS. Существуют также другие программы, требующие обозначения POS-тегов, таких как Ответ на вопросы, Распознавание речи, Машинный перевод и т.д.

Теперь, когда у нас есть базовые знания о различных применениях тегов POS, давайте посмотрим, как мы можем назначить POS-теги всем словам нашего корпуса.

Типы POS-тегров

Алгоритмы POS-тегирования делятся на две отличные группы:

  • POS-теги на основе правил
  • Стохастические POS-теги

Теггер Э. Брилла, один из первых и наиболее широко используемых английских POS-теггеров, использует алгоритмы, основанные на правилах. Давайте сначала рассмотрим очень краткий обзор того, что такое тегирование на основе правил.

Тегирование на основе правил

Автоматическое обозначение части речи – это область обработки природного языка, где статистические методы были более успешными, чем методы, основанные на правилах.

Типовые подходы, основанные на правилах, используют контекстную информацию для назначения тэгов неизвестным или неоднозначным словам. Снятие неоднозначности осуществляется путём анализа языковых особенностей слова, его предыдущего слова, его последующего слова и других аспектов.

Например, если предыдущее слово является артиклем, это слово должно быть существительным. Эта информация закодирована посредством правил.

Пример правила:

Если перед многозначным/неизвестным словом X стоит определитель, а за ним существительное, отметьте его как прилагательное.

Определение набора правил вручную является очень громоздким процессом и вообще не масштабируется. Поэтому нам нужен какой-нибудь автоматический способ сделать это.

Теггер Brill – это основанный на правилах теггер, который проходит через учебные данные и находит набор правил тегирования, которые лучше всего определяют данные и минимизируют ошибки POS. Важнейшим моментом, который следует отметить здесь относительно теггера Brill, является то, что правила не созданы вручную, а выясняются с помощью предоставленного корпуса. Единственная необходимая инженерная функция – это a набор шаблонов правил которые модель может использовать для создания новых функций.

Давайте теперь посмотрим тегирование Stochastic POS.

Стохастическое тегирование частей речи

Термин «стохастический тэггер» может означать любое количество различных подходов к проблеме тегирования POS. Любая модель, которая каким-либо образом включает частоту или вероятность, может быть должным образом отмечена стохастической.

Простейшие стохастические отметины расшифровывают слова исключительно на основе вероятности того, что слово встречается с определенным тегом. Другими словами, тег, наиболее часто встречающийся в учебном наборе со словом, является тегом, назначаемым неоднозначному экземпляру этого слова. Проблема этого подхода состоит в том, что, хотя он может давать действительный тэг для данного слова, он также может давать недопустимые последовательности тэгов.

Альтернативой подхода к частоте слов является вычисление вероятности появления заданной последовательности тегов. Это иногда называют n-грамм подход, ссылаясь на тот факт, что лучший тэг для данного слова определяется вероятностью того, что он встречается с n предыдущими тэгами. Этот подход имеет гораздо больше смысла, чем определенный ранее, поскольку он рассматривает теги для отдельных слов на основе контекста.

Следующий уровень сложности, который можно ввести в стохастический теггер, объединяет два предварительных подхода, используя как вероятность последовательности тегов, так и измерение частоты слов. Это известно как Скрытая модель Маркова (HMM).

Прежде чем перейти к тому, что такое a Скрытый Модель Маркова, давайте сначала рассмотрим, что такое модель Маркова. Это поможет лучше понять значение термина Скрытый в HMM.

Модель Маркова

Скажем, есть только три вида погодных условий, а именно

Теперь, поскольку наш молодой друг, которого мы представили выше, Питер еще маленький ребенок, он любит играть на улице. Он любит, когда погода солнечная, потому что все его друзья выходят играть в солнечную погоду.

Он ненавидит дождливую погоду по понятным причинам.

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

Как она делает прогноз погоды на сегодняшний день на основе погоды за последние N дней?

Скажем, у вас есть последовательность. Что-то вроде этого:

Sunny, Rainy, Cloudy, Cloudy, Sunny, Sunny, Sunny, Rainy

Следовательно, погода на любой день может быть в любом из трех состояний.

Скажем, мы решили использовать модель Маркова цепи для решения этой проблемы. Теперь, используя данные, которые у нас есть, мы можем построить следующую диаграмму состояния с обозначенными вероятностями.

1*BW3GyPvHOg0zWbBb8VWaXA

Чтобы вычислить вероятность сегодняшней погоды с учетом предыдущих наблюдений, мы воспользуемся свойством Маркова.

1*mpCRGnxgzke50mjL0loOcw

Цепь Маркова, по сути, является самой простой известной марковской моделью, то есть подчиняется свойству Маркова.

Свойство Маркова предполагает, что распределение для случайной величины в будущем зависит исключительно от ее распределения в текущем состоянии, и ни одно из предыдущих состояний не влияет на будущие состояния.

Для получения более подробного объяснения работы цепей Маркова перейдите по этой ссылке.

Также взгляните на следующий пример, чтобы увидеть, как можно вычислить вероятность текущего состояния по приведенной выше формуле, учитывая свойство Маркова.

1*Gymjj1jZJHkwQXMf7rsNYw

Примените свойство Маркова в следующем примере.

1*FdMUaqeTj8dAsqJF2yAjQg

Мы четко видим, что в соответствии с свойством Маркова вероятность tomorrow's солнечная погода зависит исключительно от today's погода и не вкл yesterday's .

Давайте продолжим и посмотрим, что скрыто в скрытых моделях Маркова.

Скрытая модель Маркова

Это снова маленький ребенок Питер, и на этот раз он будет надоедать своему новому смотрителю — а это вы. (Упс!!)

Для вас, как смотрителя, одна из важнейших задач – уложить Питера в постель и убедиться, что он крепко спит. После того, как вы засунули его, вы хотите убедиться, что он действительно спит, а не задумал какого-то баловства.

Однако вы не можете снова войти в комнату, поскольку это наверняка разбудит Питера. Потому все, что вам необходимо решить, это шумы, которые могут выходить из комнаты. Или комната есть тихо или есть шум выходит из комнаты. Это ваши штаты.

Мать Петра, прежде чем оставить вас в этом кошмаре, сказала:

Пусть звук будет с тобой:)

Его мать предоставила вам следующую диаграмму состояния. Диаграмма содержит некоторые состояния, наблюдения и вероятности.

0*_i4JqwAZ9DdjO5Kt
Привет, смотритель, это может помочь. ~Мама Питера. Веселитесь!

Обратите внимание, что нет прямой связи между звуком из комнаты и тем, что Питер спит.

Есть два вида вероятностей, которые мы видим из диаграммы состояний.

  • Одним из них является выброс вероятности, представляющие вероятность осуществления определенных наблюдений с учетом конкретного состояния. Например, имеем P(noise | awake) = 0.5 . Это возможность выброса.
  • Другие – это перехода вероятности, представляющие вероятность перехода в другое состояние на основе конкретного состояния. Например, имеем P(asleep | awake) = 0.4 . Это возможность перехода.

Свойство Маркова также применяется в данной модели. Поэтому не усложняйте слишком много. Марков, твой спаситель сказал:

Не углубляйтесь в историю…

Свойство Маркова, как это применимо к рассматриваемому нами примеру, будет заключаться в том, что вероятность пребывания Питера в состоянии зависит ТОЛЬКО от предыдущего состояния.

Но у собственности Маркова есть явный недостаток. Если Питер проснулся в течение часа, то вероятность того, что он уснет, выше, чем если бы бодрствовал всего 5 минут. Итак, история не имеет значения. Итак, модель на базе государственных машин Маркова не совсем корректна. Это просто упрощение.

Свойство Маркова, хотя и неправильное, делает эту проблему очень разрешимой.

Обычно мы наблюдаем длительные периоды, когда ребенок бодрствует и спит. Если Питер сейчас бодрствует, вероятность того, что он не спать, выше, чем уснуть. Следовательно, 0,6 и 0,4 на диаграмме выше.P(awake | awake) = 0.6 and P(asleep | awake) = 0.4

1*mJNBB5gdLR_Z6AlUKRfN6A
Матрица вероятностей перехода.
1*YkEuELs83MGtCz2v_uEVXw
Матрица вероятностей выбросов.

Прежде чем попытаться решить проблему с помощью HMM, давайте свяжем эту модель с задачей тегирования части речи.

HMM для обозначения части речи

Мы знаем, что для моделирования любой проблемы с помощью скрытой модели Маркова нам нужен набор наблюдений и возможных состояний. Состояния в HMM скрыты.

В части проблемы тегирования части речи, the наблюдение – сами слова в приведенной последовательности.

Что касается государствахкоторые скрыты, это будут POS-теги для слов.

The вероятности перехода было бы кое-что похоже P(VP | NP) то есть какова вероятность того, что текущее слово будет иметь тег глагольной фразы, учитывая, что предыдущий тег был существительным.

Вероятности выбросов был бы P(john | NP) or P(will | VP) то есть какова вероятность того, что это слово, скажем, Джон, учитывая то, что тег является фразой-существительным.

Обратите внимание, что это лишь неформальное моделирование проблемы, чтобы обеспечить базовое понимание того, как проблему тегирования части речи можно моделировать с помощью HMM.

Как нам это решить?

Возвращаясь к нашей проблеме заботы о Петре.

Мы раздражены? ?.

Наша проблема заключалась в том, что у нас первоначальное состояние: Питер не спал, когда вы уложили его в постель. После этого вы записали последовательность наблюдений, а именно шум или тихо, на разных временных шагах. Используя этот набор наблюдений и исходное состояние, вы хотите выяснить, будет ли Питер спать или спать после, скажем, N шагов времени.

Рисуем все возможные переходы, начиная с исходного состояния. По мере того как мы продолжаем двигаться вперед, появляется огромное количество ветвей. Итак, модель растет в геометрической прогрессии через несколько временных шагов. Даже без учета никаких наблюдений. Посмотрите на модель, экспоненциально расширяющуюся ниже.

1*pOOd-g0iFsLbjBIw1Fit2w
S0 – проснулся, а S1 – спит. Экспоненциальный рост через модель через переходы.

Будь у нас набор состояний, мы могли бы вычислить вероятность последовательности. Но штатов у нас нет. Все, что у нас есть, — это последовательность наблюдений. Вот почему эту модель называют Скрытый Модель Маркова – потому что фактические состояния со временем скрыты.

Следовательно, смотрителя, если вы зашли так далеко, это означает, что вы по крайней мере достаточно хорошо понимаете, как должна быть структурирована проблема. Все, что сейчас осталось, это использовать какой-нибудь алгоритм/методику для фактического решения проблемы. Теперь, Поздравляем с повышением уровня!

В следующей статье этой серии, состоящей из двух частей, мы увидим, как мы можем использовать четко определенный алгоритм, известный как Алгоритм Витерби декодировать заданную последовательность наблюдений данной модели. Увидимся!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *