Introducción al etiquetado de parte del discurso y al modelo de Markov oculto

por Sachin Malhotra y Divya Godayal

Volvamos a los tiempos en los que no teníamos un idioma para comunicarnos. La única forma que teníamos era el lenguaje de señas. Así es como solemos comunicarnos con nuestro perro en casa, ¿verdad? Cuando le decimos: "Te amamos, Jimmy", responde meneando la cola. Esto no significa que sepa lo que realmente estamos diciendo. En cambio, su respuesta es simplemente porque entiende el lenguaje de las emociones y los gestos más que las palabras.

Nosotros, como humanos, hemos desarrollado una comprensión de muchos matices del lenguaje natural más que cualquier animal en este planeta. Es por eso que cuando decimos "TE AMO, cariño" versus cuando decimos "Hagamos el AMOR, cariño", queremos decir cosas diferentes. Dado que entendemos la diferencia básica entre las dos frases, nuestras respuestas son muy diferentes. Son estas mismas complejidades en la comprensión del lenguaje natural las que queremos enseñar a una máquina.

Lo que esto podría significar es que cuando tu futuro perro robot escuche "Te amo, Jimmy", sabrá que AMOR es un Verbo. También se daría cuenta de que es una emoción que estamos expresando a la que respondería de cierta manera. ¿Y tal vez cuando le dices a tu pareja "Hagamos el AMOR", el perro simplemente se quedaría fuera de tu negocio ?.

Este es solo un ejemplo de cómo enseñarle a un robot a comunicarse en un idioma que conocemos puede facilitar las cosas.

El caso de uso principal que se destaca en este ejemplo es lo importante que es comprender la diferencia en el uso de la palabra AMOR, en diferentes contextos.

Etiquetado de parte de la voz

Desde muy pequeños, nos hemos acostumbrado a identificar las etiquetas de parte del habla. Por ejemplo, leer una oración y ser capaz de identificar qué palabras actúan como sustantivos, pronombres, verbos, adverbios, etc. Todos estos se denominan etiquetas de parte de voz.

Veamos la definición de Wikipedia para ellos:

En lingüística de corpus, el etiquetado de parte del discurso ( etiquetado POS o etiquetado PoS o POST ), también llamado etiquetado gramatical o desambiguación de categoría de palabra , es el proceso de marcar una palabra en un texto (corpus) como correspondiente a una parte particular del habla, basada tanto en su definición como en su contexto, es decir, su relación con palabras adyacentes y relacionadas en una frase, oración o párrafo. Una forma simplificada de esto se enseña comúnmente a los niños en edad escolar, en la identificación de palabras como sustantivos, verbos, adjetivos, adverbios, etc.

Identificar las etiquetas de parte de la voz es mucho más complicado que simplemente asignar palabras a su parte de las etiquetas de voz. Esto se debe a que el etiquetado de POS no es algo genérico. Es muy posible que una sola palabra tenga una parte diferente de la etiqueta del habla en diferentes oraciones basadas en diferentes contextos. Por eso es imposible tener un mapeo genérico para las etiquetas POS.

Como puede ver, no es posible encontrar manualmente diferentes etiquetas de parte del discurso para un corpus determinado. Siguen apareciendo nuevos tipos de contextos y nuevas palabras en los diccionarios en varios idiomas, y el etiquetado manual de POS no es escalable en sí mismo. Es por eso que confiamos en el etiquetado de POS basado en máquinas.

Antes de continuar y ver cómo se realiza el etiquetado de parte de la conversación, debemos analizar por qué es necesario el etiquetado POS y dónde se puede utilizar.

¿Por qué el etiquetado de parte del discurso?

El etiquetado de parte del discurso en sí mismo puede no ser la solución a ningún problema de PNL en particular. Sin embargo, es algo que se hace como requisito previo para simplificar muchos problemas diferentes. Consideremos algunas aplicaciones de etiquetado POS en varias tareas de PNL.

Conversión de texto a voz

Veamos la siguiente oración:

They refuse to permit us to obtain the refuse permit.

La palabra refusese usa dos veces en esta oración y tiene dos significados diferentes aquí. rechazar (/ rəˈfyo͞oz /) es un verbo que significa "negar", mientras que RECHAZAR (/ ˈrefˌyo͞os /) es un sustantivo que significa "basura" (es decir, no son homófonos). Por lo tanto, necesitamos saber qué palabra se está utilizando para pronunciar el texto correctamente. (Por esta razón, los sistemas de conversión de texto a voz suelen realizar el etiquetado POS).

Eche un vistazo a las etiquetas de parte del discurso generadas para esta misma oración por el paquete 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')]

Como podemos ver en los resultados proporcionados por el paquete NLTK, las etiquetas POS para rechazo y rechazo son diferentes. El uso de estas dos etiquetas POS diferentes para nuestro conversor de texto a voz puede generar un conjunto diferente de sonidos.

De manera similar, veamos otra aplicación clásica del etiquetado POS: la desambiguación del sentido de las palabras.

Desambiguación del sentido de la palabra

Hablemos de este chico llamado Peter. Como su madre es científica neurológica, no lo envió a la escuela. Su vida estuvo desprovista de ciencia y matemáticas.

Un día, ella llevó a cabo un experimento y lo hizo sentarse en una clase de matemáticas. Aunque no tenía ningún conocimiento previo de la materia, Peter pensó que había superado su primera prueba. Luego, su madre tomó un ejemplo de la prueba y lo publicó como se muestra a continuación. (¡Felicitaciones a ella!)

Las palabras ocurren a menudo en diferentes sentidos como diferentes partes del habla. Por ejemplo:

  • Vio un oso.
  • Sus esfuerzos soportar la fruta.

La palabra oso en las oraciones anteriores tiene sentidos completamente diferentes, pero lo más importante es que uno es un sustantivo y el otro es un verbo. La desambiguación rudimentaria del sentido de las palabras es posible si puede etiquetar palabras con sus etiquetas POS.

La desambiguación del sentido de la palabra (WSD) es identificar qué sentido de una palabra (es decir, qué significado) se usa en una oración, cuando la palabra tiene múltiples significados.

Intente pensar en los múltiples significados de esta oración:

El tiempo vuela como una flecha

Aquí están las diversas interpretaciones de la oración dada. El significado y, por tanto, la parte del discurso pueden variar para cada palabra.

As we can clearly see, there are multiple interpretations possible for the given sentence. Different interpretations yield different kinds of part of speech tags for the words.This information, if available to us, can help us find out the exact version / interpretation of the sentence and then we can proceed from there.

The above example shows us that a single sentence can have three different POS tag sequences assigned to it that are equally likely. That means that it is very important to know what specific meaning is being conveyed by the given sentence whenever it’s appearing. This is word sense disambiguation, as we are trying to find out THE sequence.

These are just two of the numerous applications where we would require POS tagging. There are other applications as well which require POS tagging, like Question Answering, Speech Recognition, Machine Translation, and so on.

Now that we have a basic knowledge of different applications of POS tagging, let us look at how we can go about actually assigning POS tags to all the words in our corpus.

Types of POS taggers

POS-tagging algorithms fall into two distinctive groups:

  • Rule-Based POS Taggers
  • Stochastic POS Taggers

E. Brill’s tagger, one of the first and most widely used English POS-taggers, employs rule-based algorithms. Let us first look at a very brief overview of what rule-based tagging is all about.

Rule-Based Tagging

El etiquetado automático de partes del habla es un área del procesamiento del lenguaje natural donde las técnicas estadísticas han tenido más éxito que los métodos basados ​​en reglas.

Los enfoques típicos basados ​​en reglas utilizan información contextual para asignar etiquetas a palabras desconocidas o ambiguas. La desambiguación se realiza analizando las características lingüísticas de la palabra, su palabra precedente, su palabra siguiente y otros aspectos.

Por ejemplo, si la palabra anterior es un artículo, la palabra en cuestión debe ser un sustantivo. Esta información está codificada en forma de reglas.

Ejemplo de una regla:

Si una palabra X ambigua / desconocida está precedida por un determinante y seguida por un sustantivo, etiquétela como adjetivo.

Definir un conjunto de reglas manualmente es un proceso extremadamente engorroso y no es escalable en absoluto. Entonces necesitamos alguna forma automática de hacer esto.

The Brill’s tagger is a rule-based tagger that goes through the training data and finds out the set of tagging rules that best define the data and minimize POS tagging errors. The most important point to note here about Brill’s tagger is that the rules are not hand-crafted, but are instead found out using the corpus provided. The only feature engineering required is a set of rule templates that the model can use to come up with new features.

Let’s move ahead now and look at Stochastic POS tagging.

Stochastic Part-of-Speech Tagging

The term ‘stochastic tagger’ can refer to any number of different approaches to the problem of POS tagging. Any model which somehow incorporates frequency or probability may be properly labelled stochastic.

The simplest stochastic taggers disambiguate words based solely on the probability that a word occurs with a particular tag. In other words, the tag encountered most frequently in the training set with the word is the one assigned to an ambiguous instance of that word. The problem with this approach is that while it may yield a valid tag for a given word, it can also yield inadmissible sequences of tags.

An alternative to the word frequency approach is to calculate the probability of a given sequence of tags occurring. This is sometimes referred to as the n-gram approach, referring to the fact that the best tag for a given word is determined by the probability that it occurs with the n previous tags. This approach makes much more sense than the one defined before, because it considers the tags for individual words based on context.

The next level of complexity that can be introduced into a stochastic tagger combines the previous two approaches, using both tag sequence probabilities and word frequency measurements. This is known as the Hidden Markov Model (HMM).

Before proceeding with what is a HiddenMarkov Model, let us first look at what is a Markov Model. That will better help understand the meaning of the term Hiddenin HMMs.

Markov Model

Say that there are only three kinds of weather conditions, namely

  • Rainy
  • Sunny
  • Cloudy

Now, since our young friend we introduced above, Peter, is a small kid, he loves to play outside. He loves it when the weather is sunny, because all his friends come out to play in the sunny conditions.

He hates the rainy weather for obvious reasons.

Every day, his mother observe the weather in the morning (that is when he usually goes out to play) and like always, Peter comes up to her right after getting up and asks her to tell him what the weather is going to be like. Since she is a responsible parent, she want to answer that question as accurately as possible. But the only thing she has is a set of observations taken over multiple days as to how weather has been.

How does she make a prediction of the weather for today based on what the weather has been for the past N days?

Say you have a sequence. Something like this:

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

So, the weather for any give day can be in any of the three states.

Let’s say we decide to use a Markov Chain Model to solve this problem. Now using the data that we have, we can construct the following state diagram with the labelled probabilities.

In order to compute the probability of today’s weather given N previous observations, we will use the Markovian Property.

Markov Chain is essentially the simplest known Markov model, that is it obeys the Markov property.

The Markov property suggests that the distribution for a random variable in the future depends solely only on its distribution in the current state, and none of the previous states have any impact on the future states.

For a much more detailed explanation of the working of Markov chains, refer to this link.

Also, have a look at the following example just to see how probability of the current state can be computed using the formula above, taking into account the Markovian Property.

Apply the Markov property in the following example.

We can clearly see that as per the Markov property, the probability of tomorrow's weather being Sunny depends solely on today's weather and not on yesterday's .

Let us now proceed and see what is hidden in the Hidden Markov Models.

Hidden Markov Model

It’s the small kid Peter again, and this time he’s gonna pester his new caretaker — which is you. (Ooopsy!!)

As a caretaker, one of the most important tasks for you is to tuck Peter into bed and make sure he is sound asleep. Once you’ve tucked him in, you want to make sure he’s actually asleep and not up to some mischief.

Sin embargo, no puede volver a entrar en la habitación, ya que eso seguramente despertaría a Peter. Así que todo lo que tienes que decidir son los ruidos que podrían provenir de la habitación. O la habitación está en silencio o hay ruido proveniente de la habitación. Estos son sus estados.

La madre de Peter, antes de dejarte con esta pesadilla, dijo:

Que el sonido te acompañe :)

Su madre te ha dado el siguiente diagrama de estados. El diagrama tiene algunos estados, observaciones y probabilidades.

Tenga en cuenta que no existe una correlación directa entre el sonido de la habitación y Peter durmiendo.

Hay dos tipos de probabilidades que podemos ver en el diagrama de estado.

  • Uno es la emisiónprobabilidades, que representan las probabilidades de hacer ciertas observaciones dado un estado particular. Por ejemplo, tenemos P(noise | awake) = 0.5. Ésta es una probabilidad de emisión.
  • Los otros es transiciónprobabilidades, que representan la probabilidad de pasar a otro estado dado un estado particular. Por ejemplo, tenemos P(asleep | awake) = 0.4. Esta es una probabilidad de transición.

La propiedad de Markov se aplica también a este modelo. Así que no compliques demasiado las cosas. Markov, tu salvador dijo:

No profundices demasiado en la historia ...

La propiedad de Markov, como sería aplicable al ejemplo que hemos considerado aquí, sería que la probabilidad de que Peter esté en un estado depende ÚNICAMENTE del estado anterior.

But there is a clear flaw in the Markov property. If Peter has been awake for an hour, then the probability of him falling asleep is higher than if has been awake for just 5 minutes. So, history matters. Therefore, the Markov state machine-based model is not completely correct. It’s merely a simplification.

The Markov property, although wrong, makes this problem very tractable.

We usually observe longer stretches of the child being awake and being asleep. If Peter is awake now, the probability of him staying awake is higher than of him going to sleep. Hence, the 0.6 and 0.4 in the above diagram.P(awake | awake) = 0.6 and P(asleep | awake) = 0.4

Before actually trying to solve the problem at hand using HMMs, let’s relate this model to the task of Part of Speech Tagging.

HMMs for Part of Speech Tagging

We know that to model any problem using a Hidden Markov Model we need a set of observations and a set of possible states. The states in an HMM are hidden.

In the part of speech tagging problem, the observations are the words themselves in the given sequence.

As for the states, which are hidden, these would be the POS tags for the words.

The transition probabilities would be somewhat like P(VP | NP) that is, what is the probability of the current word having a tag of Verb Phrase given that the previous tag was a Noun Phrase.

Emission probabilities would be P(john | NP) or P(will | VP) that is, what is the probability that the word is, say, John given that the tag is a Noun Phrase.

Note that this is just an informal modeling of the problem to provide a very basic understanding of how the Part of Speech tagging problem can be modeled using an HMM.

How do we solve this?

Coming back to our problem of taking care of Peter.

Irritated are we ? ?.

Our problem here was that we have an initial state: Peter was awake when you tucked him into bed. After that, you recorded a sequence of observations, namely noise or quiet, at different time-steps. Using these set of observations and the initial state, you want to find out whether Peter would be awake or asleep after say N time steps.

We draw all possible transitions starting from the initial state. There’s an exponential number of branches that come out as we keep moving forward. So the model grows exponentially after a few time steps. Even without considering any observations. Have a look at the model expanding exponentially below.

If we had a set of states, we could calculate the probability of the sequence. But we don’t have the states. All we have are a sequence of observations. This is why this model is referred to as the Hidden Markov Model — because the actual states over time are hidden.

So, caretaker, if you’ve come this far it means that you have at least a fairly good understanding of how the problem is to be structured. All that is left now is to use some algorithm / technique to actually solve the problem. For now, Congratulations on Leveling up!

In the next article of this two-part series, we will see how we can use a well defined algorithm known as the Viterbi Algorithm to decode the given sequence of observations given the model. See you there!