En introduktion til tagging af tale og den skjulte Markov-model

af Sachin Malhotra og Divya Godayal

Lad os gå tilbage i de tidspunkter, hvor vi ikke havde noget sprog at kommunikere. Den eneste måde, vi havde, var tegnsprog. Sådan kommunikerer vi normalt med vores hund derhjemme, ikke? Når vi siger til ham: "Vi elsker dig, Jimmy," svarer han ved at vifte med halen. Dette betyder ikke, at han ved, hvad vi faktisk siger. I stedet er hans svar simpelthen fordi han forstår sproget for følelser og bevægelser mere end ord.

Vi som mennesker har udviklet en forståelse af mange nuancer af det naturlige sprog mere end noget dyr på denne planet. Det er derfor, når vi siger "Jeg ELSKER dig, skat" vs når vi siger "Lad os elske, skat", mener vi forskellige ting. Da vi forstår den grundlæggende forskel mellem de to sætninger, er vores svar meget forskellige. Det er disse meget indviklede i naturlig sprogforståelse, som vi ønsker at undervise på en maskine.

Hvad dette kan betyde, er når din fremtidige robothund hører "Jeg elsker dig, Jimmy", ville han vide, at KÆRLIGHED er et verb. Han ville også indse, at det er en følelse, som vi udtrykker, som han ville reagere på en bestemt måde. Og måske når du fortæller din partner “Lets make LOVE”, ville hunden bare holde sig ude af din virksomhed?

Dette er kun et eksempel på, hvordan det at gøre det lettere at lære en robot at kommunikere på et sprog, vi kender.

Den primære brugssag, der fremhæves i dette eksempel, er hvor vigtigt det er at forstå forskellen i brugen af ​​ordet KÆRLIGHED i forskellige sammenhænge.

Mærkning af del-af-tale

Fra en meget lille alder er vi vant til at identificere en del af tale-tags. For eksempel at læse en sætning og være i stand til at identificere, hvilke ord der fungerer som substantiver, pronomen, verb, adverb osv. Alle disse betegnes som den del af tale-tags.

Lad os se på Wikipedia-definitionen for dem:

I korpuslingvistik er tagging af tale ( POS-tagging eller PoS-tagging eller POST ), også kaldet grammatisk tagging eller ordkategori-tvetydighed , processen med at markere et ord i en tekst (corpus) som svarende til en bestemt del tale, baseret på både dens definition og dens kontekst - dvs. dens forhold til tilstødende og relaterede ord i en sætning, sætning eller afsnit. En forenklet form for dette undervises ofte i børn i skolealderen i identifikationen af ​​ord som substantiver, verb, adjektiver, adverb osv.

At identificere en del af tale-tags er meget mere kompliceret end blot at kortlægge ord til deres del af tale-tags. Dette skyldes, at POS-tagging ikke er noget, der er generisk. Det er meget muligt for et enkelt ord at have en anden del af talemærket i forskellige sætninger baseret på forskellige sammenhænge. Derfor er det umuligt at have en generisk kortlægning af POS-tags.

Som du kan se, er det ikke muligt manuelt at finde ud af forskellige stemmeord for et givet korpus. Nye typer sammenhænge og nye ord dukker stadig op i ordbøger på forskellige sprog, og manuel POS-tagging er ikke i sig selv skalerbar. Derfor stoler vi på maskinbaseret POS-tagging.

Før vi fortsætter videre og ser på, hvordan deling af tale-tagging udføres, skal vi se på, hvorfor POS-tagging er nødvendig, og hvor det kan bruges.

Hvorfor tagging af del-af-tale?

Mærkning af del-af-tale i sig selv er muligvis ikke løsningen på et specifikt NLP-problem. Det er dog noget, der gøres som en forudsætning for at forenkle mange forskellige problemer. Lad os overveje et par applikationer af POS-tagging i forskellige NLP-opgaver.

Tekst til tale konvertering

Lad os se på følgende sætning:

They refuse to permit us to obtain the refuse permit.

Ordet refusebruges to gange i denne sætning og har to forskellige betydninger her. REFUSE (/ rəˈfyo͞oz /) er et verbum, der betyder "benægte", mens REFuse (/ ˈrefˌyo͞os /) er et substantiv, der betyder "affald" (det vil sige, de er ikke homofoner). Derfor er vi nødt til at vide, hvilket ord der bruges for at udtale teksten korrekt. (Af denne grund udfører tekst-til-tale-systemer normalt POS-tagging.)

Se på de del-af-tale-tags, der er genereret til netop denne sætning af NLTK-pakken.

>>> 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 af resultaterne fra NLTK-pakken, er POS-tags for både REFUSE og REFuse forskellige. Brug af disse to forskellige POS-tags til vores tekst til tale-konverter kan komme med et andet sæt lyde.

Lad os ligeledes se på endnu en klassisk anvendelse af POS-tagging: ordsans disambiguation.

Word Sense Disambiguation

Lad os tale om dette barn, der hedder Peter. Da hans mor er en neurologisk videnskabsmand, sendte hun ham ikke i skole. Hans liv var blottet for videnskab og matematik.

En dag gennemførte hun et eksperiment og fik ham til at sidde i en matematikklasse. Selvom han ikke havde nogen forudgående fagkendskab, troede Peter, at han tog sin første test. Hans mor tog derefter et eksempel fra testen og offentliggjorde det som nedenfor. (Kudos til hende!)

Ord forekommer ofte i forskellige sanser som forskellige dele af talen. For eksempel:

  • Hun så en bjørn.
  • Din indsats vil bære frugt.

Ordet bjørn i ovenstående sætninger har helt forskellige sanser, men vigtigere er det ene et substantiv og det andet er et verbum. Rudimentær ordfornemmelse er mulig, hvis du kan tagge ord med deres POS-tags.

Ordsans-disambiguation (WSD) er at identificere, hvilken betydning af et ord (dvs. hvilken betydning) der bruges i en sætning, når ordet har flere betydninger.

Prøv at tænke på de mange betydninger for denne sætning:

Tiden flyver som en pil

Her er de forskellige fortolkninger af den givne sætning. Betydningen og dermed tale-ordet kan variere for hvert ord.

Som vi tydeligt kan se, er der flere fortolkninger mulige for den givne sætning. Forskellige fortolkninger giver forskellige former for delteksemærker til ordene. Disse oplysninger, hvis de er tilgængelige for os, kan hjælpe os med at finde ud af den nøjagtige version / fortolkning af sætningen, og så kan vi gå videre derfra.

Ovenstående eksempel viser os, at en enkelt sætning kan have tildelt tre forskellige POS-tag-sekvenser, der er lige så sandsynlige. Det betyder, at det er meget vigtigt at vide, hvilken specifik betydning der formidles af den givne sætning, når den vises. Dette er ordfornemmelse, da vi prøver at finde ud af 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 af talemærkning er et område med naturlig sprogbehandling, hvor statistiske teknikker har været mere succesrige end regelbaserede metoder.

Typiske regelbaserede tilgange bruger kontekstuelle oplysninger til at tildele tags til ukendte eller tvetydige ord. Tvetydiggørelse sker ved at analysere de sproglige træk ved ordet, dets foregående ord, dets følgende ord og andre aspekter.

For eksempel, hvis det foregående ord er en artikel, skal det pågældende ord være et substantiv. Disse oplysninger er kodet i form af regler.

Eksempel på en regel:

Hvis et tvetydigt / ukendt ord X forud for en determinator og efterfulgt af et substantiv, tag det som et adjektiv.

At definere et regelsæt manuelt er en ekstremt besværlig proces og er slet ikke skalerbar. Så vi har brug for en automatisk måde at gøre dette på.

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 dog ikke komme ind i lokalet igen, da det helt sikkert ville vække Peter. Så alt hvad du skal beslutte er de lyde, der kan komme fra rummet. Enten er rummet stille, eller der kommer støj fra rummet. Dette er dine stater.

Peters mor sagde, før han forlod dig til dette mareridt:

Må lyden være med dig :)

Hans mor har givet dig følgende tilstandsdiagram. Diagrammet har nogle tilstande, observationer og sandsynligheder.

Bemærk, at der ikke er nogen direkte sammenhæng mellem lyd fra rummet og Peter, der sover.

Der er to slags sandsynligheder, som vi kan se fra tilstandsdiagrammet.

  • Den ene er emissionensandsynligheder, som repræsenterer sandsynligheden for at foretage visse observationer givet en bestemt tilstand. For eksempel har vi det P(noise | awake) = 0.5. Dette er en sandsynlighed for emission.
  • De andre er overgangsandsynligheder, som repræsenterer sandsynligheden for overgang til en anden tilstand givet en bestemt tilstand. For eksempel har vi det P(asleep | awake) = 0.4. Dette er en overgangssandsynlighed.

Markovian-ejendommen gælder også i denne model. Så komplicér ikke tingene for meget. Markov, din frelser sagde:

Gå ikke for meget ind i historien ...

Markov-ejendommen, som det ville være relevant for det eksempel, vi har overvejet her, ville være, at sandsynligheden for, at Peter var i en tilstand, KUN afhænger af den tidligere tilstand.

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.

Så, vicevært, hvis du er kommet så langt betyder det, at du i det mindste har en ret god forståelse af, hvordan problemet skal struktureres. Alt der er tilbage nu er at bruge en eller anden algoritme / teknik til faktisk at løse problemet. Indtil videre, tillykke med nivelleringen!

I den næste artikel i denne todelt serie vil vi se, hvordan vi kan bruge en veldefineret algoritme kendt som Viterbi-algoritmen til at afkode den givne rækkefølge af observationer givet modellen. Vi ses der!