En introduktion till taggning av talesätt och den dolda Markov-modellen

av Sachin Malhotra och Divya Godayal

Låt oss gå tillbaka till de tider då vi inte hade något språk att kommunicera. Det enda sättet vi hade var teckenspråk. Så här brukar vi kommunicera med vår hund hemma, eller hur? När vi säger till honom, "Vi älskar dig, Jimmy," svarar han med att svänga i svansen. Detta betyder inte att han vet vad vi faktiskt säger. Istället är hans svar helt enkelt för att han förstår språket för känslor och gester mer än ord.

Vi som människor har utvecklat en förståelse för många nyanser av det naturliga språket mer än något djur på denna planet. Det är därför när vi säger "Jag ÄLSKAR dig, älskling" vs när vi säger "Låt oss älska, älskling" menar vi olika saker. Eftersom vi förstår den grundläggande skillnaden mellan de två fraserna är våra svar väldigt olika. Det är just dessa intrikat i naturlig språkförståelse som vi vill lära ut en maskin.

Vad detta kan betyda är när din framtida robothund hör "Jag älskar dig, Jimmy", skulle han veta att KÄRLEK är ett verb. Han skulle också inse att det är en känsla som vi uttrycker som han skulle svara på ett visst sätt. Och kanske när du säger till din partner "Lets make LOVE" skulle hunden bara hålla sig utanför ditt företag?.

Detta är bara ett exempel på hur det att göra det lättare att lära en robot att kommunicera på ett språk som vi känner till.

Det primära användningsfallet som framhävs i detta exempel är hur viktigt det är att förstå skillnaden i användningen av ordet KÄRLEK, i olika sammanhang.

Märkning av tal i tal

Från en mycket liten ålder har vi vant oss vid att identifiera en del av taltaggarna. Till exempel läsa en mening och kunna identifiera vilka ord som fungerar som substantiv, pronomen, verb, adverb och så vidare. Alla dessa kallas delen av taltaggar.

Låt oss titta på Wikipedia-definitionen för dem:

Inom korpuslingvistik är taggning av tal ( POS-taggning eller PoS-taggning eller POST ), även kallad grammatisk taggning eller ordkategori-tvetydighet , processen för att markera ett ord i en text (corpus) som motsvarar en viss del tal, baserat på både dess definition och dess sammanhang - dvs. dess förhållande till angränsande och relaterade ord i en fras, mening eller stycke. En förenklad form av detta lärs ofta ut till barn i skolåldern i identifieringen av ord som substantiv, verb, adjektiv, adverb etc.

Att identifiera en del av taltaggarna är mycket mer komplicerad än att bara mappa ord till deras del av taltaggarna. Detta beror på att POS-märkning inte är något som är generiskt. Det är fullt möjligt för ett enda ord att ha en annan del av taltaggen i olika meningar baserat på olika sammanhang. Det är därför det är omöjligt att ha en generisk kartläggning för POS-taggar.

Som du kan se är det inte möjligt att manuellt ta reda på olika tal-taggar för en viss corpus. Nya typer av sammanhang och nya ord dyker upp i ordböcker på olika språk, och manuell POS-märkning är inte skalbar i sig. Det är därför vi förlitar oss på maskinbaserad POS-märkning.

Innan vi fortsätter och tittar på hur del-of-speech-taggning görs, bör vi titta på varför POS-taggning är nödvändig och var den kan användas.

Varför taggning i del av tal?

Del-of-Speech-märkning i sig kanske inte är lösningen på något särskilt NLP-problem. Det är dock något som görs som en förutsättning för att förenkla många olika problem. Låt oss överväga några applikationer av POS-taggning i olika NLP-uppgifter.

Text till talkonvertering

Låt oss titta på följande mening:

They refuse to permit us to obtain the refuse permit.

Ordet refuseanvänds två gånger i den här meningen och har två olika betydelser här. refUSE (/ rəˈfyo͞oz /) är ett verb som betyder "förneka", medan REFuse (/ ˈrefˌyo͞os /) är ett substantiv som betyder "papperskorgen" (det vill säga de är inte homofoner). Således måste vi veta vilket ord som används för att uttala texten korrekt. (Av denna anledning utför text-till-tal-system vanligtvis POS-märkning.)

Ta en titt på de del-av-tal-taggar som genereras för just den här meningen av NLTK-paketet.

>>> 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')]

Som vi kan se från resultaten från NLTK-paketet är POS-taggar för både REFUSE och REFuse olika. Att använda dessa två olika POS-taggar för vår text till talomvandlare kan komma med en annan uppsättning ljud.

På samma sätt, låt oss titta på ännu en klassisk tillämpning av POS-taggning: ordsintydighet.

Word Sense Disambiguation

Låt oss prata om det här barnet som heter Peter. Eftersom hans mor är en neurologisk vetenskapsman skickade hon honom inte till skolan. Hans liv saknade vetenskap och matematik.

En dag genomförde hon ett experiment och fick honom att sitta i en matteklass. Trots att han inte hade någon tidigare kunskap om ämnet, trodde Peter att han klarade sitt första test. Hans mamma tog sedan ett exempel från testet och publicerade det enligt nedan. (Kudos till henne!)

Ord förekommer ofta i olika bemärkelser som olika delar av talet. Till exempel:

  • Hon såg en björn.
  • Dina ansträngningar kommer att bära frukt.

Ordet björn i ovanstående meningar har helt olika sinnen, men ännu viktigare är att ett är ett substantiv och ett annat är ett verb. Oförklarlig ordkänsla är tydlig om du kan märka ord med deras POS-taggar.

Ordsinne-tvetydighet (WSD) är att identifiera vilken mening av ett ord (det vill säga vilken mening) som används i en mening, när ordet har flera betydelser.

Försök att tänka på flera betydelser för den här meningen:

Tiden flyger som en pil

Här är de olika tolkningarna av den givna meningen. Betydelsen och därmed talan kan variera för varje ord.

Som vi tydligt kan se finns det flera tolkningar möjliga för den givna meningen. Olika tolkningar ger olika typer av taltaggar för orden. Denna information, om den är tillgänglig för oss, kan hjälpa oss att ta reda på den exakta versionen / tolkningen av meningen och sedan kan vi gå vidare därifrån.

Ovanstående exempel visar oss att en enda mening kan ha tilldelats tre olika POS-taggsekvenser som är lika troliga. Det betyder att det är mycket viktigt att veta vilken specifik betydelse som förmedlas av den givna meningen när den dyker upp. Detta är ordförståelse, eftersom vi försöker ta reda på sekvensen.

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

Automatisk del av talmärkning är ett område för naturlig språkbehandling där statistiska tekniker har varit mer framgångsrika än regelbaserade metoder.

Typiska regelbaserade metoder använder kontextuell information för att tilldela taggar till okända eller tvetydiga ord. Disambiguation görs genom att analysera ordets språkliga egenskaper, dess föregående ord, dess följande ord och andra aspekter.

Till exempel, om föregående ord är en artikel, måste ordet i fråga vara ett substantiv. Denna information är kodad i form av regler.

Exempel på en regel:

Om ett tvetydigt / okänt ord X föregås av en bestämare och följt av ett substantiv, märka det som ett adjektiv.

Att definiera en uppsättning regler manuellt är en extremt besvärlig process och är inte skalbar alls. Så vi behöver ett automatiskt sätt att göra detta.

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.

Du kan dock inte komma in i rummet igen, eftersom det säkert skulle väcka Peter. Så allt du behöver bestämma är ljudet som kan komma från rummet. Antingen är det tyst i rummet eller så kommer det buller från rummet. Det här är dina stater.

Peters mamma, innan han lämnade dig till den här mardrömmen, sa:

Måste ljudet vara med dig :)

Hans mor har gett dig följande tillståndsdiagram. Diagrammet har vissa tillstånd, observationer och sannolikheter.

Observera att det inte finns någon direkt korrelation mellan ljud från rummet och Peter som sover.

Det finns två typer av sannolikheter som vi kan se från tillståndsdiagrammet.

  • En är utsläppsannolikheter, som representerar sannolikheten för att göra vissa observationer med tanke på ett visst tillstånd. Till exempel har vi P(noise | awake) = 0.5. Detta är en utsläppssannolikhet.
  • De andra är övergångsannolikheter, som representerar sannolikheten för att övergå till ett annat tillstånd med tanke på ett visst tillstånd. Till exempel har vi P(asleep | awake) = 0.4. Detta är en övergångssannolikhet.

Egenskapen Markovian gäller även i den här modellen. Så komplicera inte saker för mycket. Markov, din frälsare sa:

Gå inte för mycket in i historien ...

Markov-egenskapen, som skulle vara tillämplig på exemplet vi har beaktat här, skulle vara att sannolikheten för att Peter befinner sig i ett tillstånd ENDAST beror på det tidigare tillståndet.

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!