Что такое POS-теги?

Маркировка части речи (POS) — это процесс присвоения части речи слову. Например, предложение «Я иду домой» помечено следующим образом.

  • Я (личное местоимение — ПРП)
  • идти (глагол — ВБ)
  • дом (наречие - РБ)

Список тегов и аббревиатур см. в этом списке от UPenn.

Приложения

  • Распознавание именованных объектов — используйте POS, чтобы понять, какая часть текста должна быть помечена как именованный объект.
  • Разрешение кореферентности — выяснить, к какому объекту относится местоимение в предыдущем предложении.
  • Распознавание речи — используйте POS для моделирования вероятности последовательности слов, чтобы повысить точность предсказания.

Человеку это несложно сделать, если он понимает английский язык, но наша цель — позволить машине сделать это.

Что такое Цепь Маркова?

Цепь Маркова (MC) — важная модель, используемая для распознавания речи, а также для POS-тегов. Мы можем использовать тег POS как состояние и использовать его для моделирования вероятности перехода состояния от одного тега POS к другому в предложении. В простом (придуманном) примере ниже всего два состояния (тега):

  • Когда текущее слово является существительным, существует 50% вероятность того, что следующее слово будет глаголом, и 50% вероятность того, что следующее слово все еще будет существительным.
  • Когда текущее слово является глаголом, существует вероятность 90%, что следующее слово будет существительным, и вероятность 10%, что следующее слово будет глаголом.

В исходном примере «я иду домой» слово «идти» является глаголом, поэтому приведенный выше MC предсказал бы, что слово после «идти» с вероятностью 90% должно быть существительным, что правильно предсказывает тег POS « home», потому что в этом случае после «go» стоит «home».

В общем графе MC может быть любое количество состояний, и вероятности перехода полностью описаны между всеми возможными парами состояний (невозможный переход имеет вероятность перехода 0).

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

С какого состояния вы начинаете? Начальная вероятность первого тега POS задается вектором pi

Что такое скрытая марковская модель?

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

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

Резюме до сих пор

  • Матрица вероятности перехода: описывает вероятность перехода от тега POS к другому (все возможные пары)
  • Матрица вероятности выброса: описывает вероятность наблюдения слова с учетом тега POS (скрытое состояние).

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

Алгоритм Витерби

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

Теперь разложим 4 матрицы и 1 вектор для выполнения алгоритма:

  • Матрица A - вероятность перехода A (i, j) представляет вероятность создания tag_j при заданном tag_i
  • Матрица B — матрица выбросов B(i, j) представляет вероятность генерации word_j при заданном tag_i.
  • Матрица C — матрица состояний для алгоритма Витерби, представляющая вероятность наблюдения испускаемого слова до сих пор на основе определенного местоположения последовательности.
  • Матрица D — запись наиболее вероятного тега, который производит tag_j в j-м месте.
  • Вектор pi — начальная вероятность каждого тега, где pi(j) — вероятность tag_j в начале последовательности.

Размеры

  • Матрица A - (количество возможных тегов, количество возможных тегов) = (N, N)
  • Матрица B - (количество возможных слов/словарь, количество возможных тегов) = (V, N)
  • Матрица C - (количество возможных тегов, длина последовательности для выполнения тегов POS) = (N, K)
  • Матрица D - (количество возможных тегов, длина последовательности для выполнения тегов POS) = (N, K)
  • Вектор pi — (количество возможных тегов) = N

Обратите внимание, что матрицы A и B, а также вектор pi подаются в качестве входных данных для алгоритма Витерби, поэтому они должны быть предварительно вычислены из текстового корпуса с аннотацией POS. Матрицы C и D изменяются во время алгоритма для выполнения динамического программирования. Давайте рассмотрим, как работают матрицы C и D, на трех шагах алгоритма Витерби:

Инициализация Витерби

Первый столбец матрицы C инициализируется как вероятность выдачи слова_1 путем умножения вероятности начального тега и связанной с ним вероятности выдачи на слово_1.

Первый столбец матрицы D инициализируется равным 0, чтобы представить тот факт, что в слове_1 нет тега, предшествующего первому тегу POS.

Витерби Форвард Пас

Далее мы хотим рассчитать матрицы C и D слева направо, столбец за столбцом.

Во 2-м столбце и 1-й строке матрицы C мы вычисляем максимальную вероятность выдачи слова_2, выполняя следующие операции:

  • Вычислить совместную вероятность трех терминов: (1) вероятность тега POS в первом слове, (2) вероятность перехода от первого тега ко второму тегу и (3) вероятность выдачи слова2 вторым тегом
  • Мы пробуем все N возможных тегов из предыдущего тега в word_1 и записываем максимальное значение в c(1, 2)

  • Чтобы заполнить весь столбец 2 матрицы C, нам нужно проделать эту операцию над N возможными тегами во 2-м слове.
  • Мы можем сканировать всю матрицу слева направо. Матрица C эффективно отслеживает максимальную вероятность выдачи текущего слова из каждого тега POS путем суммирования вероятности обнаружения слов, предшествующих текущему слову, всеми возможными тегами POS.

В то же время мы также обновляем матрицу D в прямом проходе, отслеживая конкретный тег POS, который достиг максимума в соответствующем месте последовательности.

В процессе максимизации матрицы C мы выбираем N тегов, поэтому матрица D в основном представляет собой argmax той же операции max:

Обратный пас Витерби

После того, как матрицы C и D будут полностью заполнены. Мы можем увидеть последовательность, которая имеет наибольшую апостериорную вероятность, взглянув на наибольшее значение в последнем столбце матрицы C.

Чтобы узнать всю последовательность тегов POS, нам просто нужно проследить, как мы добрались от начала последовательности до последнего столбца. К счастью, мы записали наше решение (выбор тега на каждом шаге максимизации для каждого столбца) в матрице D. Шаги можно резюмировать следующим образом:

  • Проверьте наибольшее значение в последнем столбце матрицы C.
  • Найдите соответствующее значение в том же месте в матрице D, чтобы увидеть, какой тег POS был использован (например: предположим, что тег X записан в соответствующей ячейке в матрице D).
  • Переместитесь влево к предыдущему столбцу в матрице D и перейдите к строке, предложенной записанным тегом.
  • Продолжайте двигаться влево по матрице D, чтобы получить последовательность POS-тегов.
  • Результатом является обратная последовательность тегов POS, используемая для достижения наибольшей вероятности для всей последовательности.

Заключение

Алгоритм Витерби сложно понять, если вы не знакомы с алгоритмами динамического программирования. Поздравляю с завершением!

Вы можете задаться вопросом, почему нам нужно пройти через все сложности, связанные с определением POS слова. Разве мы не можем просто использовать сопоставление, чтобы напрямую сопоставить слово с тегом POS? Проблема в том, что некоторые слова имеют несколько значений и POS-тегов. Например, слово «идти» может быть глаголом или существительным (как своеобразная игра). Когда в предложении несколько таких слов, может быть сложно определить, какой результат пометки лучше всего. Теги POS могут эффективно выполняться с использованием алгоритма Витерби, поскольку он обеспечивает основу для систематического поиска той наиболее вероятной базовой последовательности тегов POS, которая могла сгенерировать наблюдаемую последовательность слов. Вам, вероятно, не потребуется много реализовывать его на практике, но его понимание должно дать вам более глубокое понимание алгоритма.

Улучшение

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

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

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

Первоначально опубликовано на https://datajello.com 11 сентября 2022 г.