Sissejuhatus kõneosa märgistamisse ja peidetud Markovi mudelisse

autorid Sachin Malhotra ja Divya Godayal

Tuleme tagasi aegadesse, mil meil polnud suhtlemiseks keelt. Ainus võimalus meil oli viipekeel. Nii suhtleme oma koeraga tavaliselt kodus, eks? Kui ütleme talle: "Me armastame sind, Jimmy," vastab ta saba liputades. See ei tähenda, et ta teaks, mida me tegelikult räägime. Selle asemel on tema vastus lihtsalt see, et ta mõistab rohkem emotsioonide ja žestide keelt kui sõnu.

Meil inimestena on arusaam paljudest loomuliku keele nüanssidest rohkem kui ükski loom sellel planeedil. Sellepärast, kui me ütleme “ARMASTAN sind, kallis”, kui me ütleme “Laseme armastada, kallis”, siis mõtleme erinevaid asju. Kuna mõistame kahe fraasi põhilist erinevust, on meie vastused väga erinevad. Just neid nõtkeid loomuliku keele mõistmises tahame masinale õpetada.

See võib tähendada seda, et kui teie tulevane robotkoer kuuleb "Ma armastan sind, Jimmy", teaks ta, et ARMASTUS on verb. Ta mõistaks ka, et see on emotsioon, mida me väljendame, millele ta reageeriks teatud viisil. Ja võib-olla, kui ütlete oma partnerile "Laseme armastada", jääb koer lihtsalt teie ettevõttest eemale?

See on vaid näide sellest, kuidas roboti õpetamine meile teadaolevas keeles suhtlemiseks saab asja lihtsamaks muuta.

Selles näites on esiletõstetud peamine kasutusjuht, kui oluline on mõista erinevust sõna ARMASTUS erinevates kontekstides.

Kõneosa sildistamine

Juba väikesest east alates oleme harjunud kõnesiltide osa tuvastama. Näiteks lause lugemine ja oskus tuvastada, millised sõnad toimivad nimisõnade, asesõnade, tegusõnade, määrsõnadena jne. Kõiki neid nimetatakse kõnesiltide osaks.

Vaatame nende jaoks Wikipedia määratlust:

In korpuslingvistika, osa-of-kõne märgistamine ( POS märgistamine või POS sildistamine või POST ), mida nimetatakse ka grammatiliste märgistamine või sõna-kategooria täpsustuse , on protsess markeerimiseks sõna tekstis (corpus), mis vastab konkreetse osa kõne, lähtudes nii selle määratlusest kui ka kontekstist - st suhtest kõrvuti asetsevate ja seotud sõnadega fraasis, lauses või lõigus. Selle lihtsustatud vormi õpetatakse tavaliselt kooliealistele lastele, tuvastades sõnu nimisõnade, tegusõnade, omadussõnade, määrsõnadena jne.

Kõnesiltide osa tuvastamine on palju keerulisem kui lihtsalt sõnade kaardistamine nende kõnesiltide osaga. Selle põhjuseks on asjaolu, et POS-i märgistamine pole üldine. On täiesti võimalik, et ühel sõnal on erinevates kontekstides erinev kõnelause erinev osa erinevates lausetes. Sellepärast on POS-siltide jaoks üldine kaardistamine võimatu.

Nagu näete, ei ole antud korpuse jaoks erinevaid kõneosa silte võimalik käsitsi teada saada. Uut tüüpi kontekstid ja uued sõnad ilmuvad pidevalt erinevates keeltes sõnastikes ja käsitsi POS-märgistamine pole iseenesest mastaapselt muudetav. Seetõttu loodame masinapõhisele POS-märgistamisele.

Enne kui jätkate edasi ja vaatame, kuidas kõneosa märgistamine toimub, peaksime uurima, miks POS-märgistamine on vajalik ja kus seda saab kasutada.

Miks kõneosa sildistamine?

Kõneosa märgistamine iseenesest ei pruugi olla lahendus ühele konkreetsele NLP-probleemile. See on siiski midagi, mida tehakse paljude erinevate probleemide lihtsustamise eeltingimusena. Mõelgem mõnele POS-märgistuse rakendusele erinevates NLP-ülesannetes.

Teksti kõneks teisendamine

Vaatame järgmist lauset:

They refuse to permit us to obtain the refuse permit.

Sõna refuseon kasutusel kaks korda selles lauses on kaks erinevat tähendust siin. keeldumine (/ rəˈfyo͞oz /) on verb, mis tähendab „eita“, REFuse (/ ˈrefˌyo͞os /) aga nimisõna, mis tähendab „prügikasti“ (st nad pole homofonid). Seega peame teadma, millist sõna kasutatakse, et teksti õigesti hääldada. (Sel põhjusel teostavad tekstkõnesüsteemid POS-märgistusi.)

Vaadake kõneosa silte, mille NLTK pakett just selle lause jaoks genereeris.

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

Nagu näeme NLTK paketi tulemustest, on nii keeldumise kui ka REFuse POS-märgendid erinevad. Nende kahe erineva POS-märgendi kasutamine meie teksti-kõne muunduriks võib pakkuda erinevat helide komplekti.

Samamoodi vaatleme veel ühte klassikalist POS-märgistuse rakendust: sõnatunde täpsustamine.

Sõnatunde täpsustus

Räägime sellest lapsest nimega Peter. Kuna tema ema on neuroloog, ei saatnud ta teda kooli. Tema elus puudusid teadused ja matemaatika.

Ühel päeval viis naine läbi katse ja pani ta matemaatikatundi istuma. Kuigi tal puudusid eelnevad ainealased teadmised, arvas Peeter, et ta loobus oma esimesest testist. Seejärel võttis tema ema testilt näite ja avaldas selle nagu allpool. (Kiitus talle!)

Sõnad esinevad sageli erinevas tähenduses kui kõne erinevad osad. Näiteks:

  • Ta nägi karu.
  • Teie pingutused kannavad vilja.

Sõnal karu on ülaltoodud lausetes täiesti erinevad tähendused, kuid olulisem on üks nimisõna ja teine ​​tegusõna. Algeline sõnatunde eristamine on võimalik, kui saate sõnu märkida nende POS-siltidega.

Sõna-meele eristamine (WSD) tähistab, millist sõna tähendust (see tähendab, millist tähendust) kasutatakse lauses, kui sõnal on mitu tähendust.

Proovige mõelda selle lause mitmele tähendusele:

Aeg lendab nagu nool

Siin on antud lause erinevad tõlgendused. Tähendus ja seega ka kõneosa võivad iga sõna puhul erineda.

Nagu näeme selgelt, on antud lausele mitu tõlgendust võimalik. Erinevad tõlgendused annavad sõnadele erinevaid kõnesiltide osi. See teave, kui see on meile kättesaadav, võib aidata meil välja selgitada lause täpse versiooni / tõlgenduse ja siis saame sealt edasi liikuda.

Ülaltoodud näide näitab meile, et ühel lausel võib olla määratud kolm erinevat POS-märgendi järjestust, mis on võrdselt tõenäolised. See tähendab, et on väga oluline teada, millist konkreetset tähendust antud lause annab edasi, kui see ilmub. See on sõnatundeline täpsustus, kuna me üritame teada saada järjestust.

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

Kõnesiltide automaatne osa on loomuliku keele töötlemise piirkond, kus statistilised võtted on olnud edukamad kui reeglitel põhinevad meetodid.

Tüüpilised reeglipõhised lähenemised kasutavad kontekstuaalset teavet siltide määramiseks tundmatutele või mitmetähenduslikele sõnadele. Selgitus tehakse sõna, selle eelneva sõna, järgneva sõna ja muude aspektide keeleliste omaduste analüüsimisel.

Näiteks kui eelnev sõna on artikkel, siis peab kõnealune sõna olema nimisõna. See teave on kodeeritud reeglite kujul.

Reegli näide:

Kui mitmetähendusliku / tundmatu sõna X ees on määraja ja sellele järgneb nimisõna, märgistage see omadussõnana.

Reeglite komplekti käsitsi määratlemine on äärmiselt tülikas protsess ja pole üldse skaleeritav. Seega vajame selleks automaatset viisi.

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.

Te ei saa siiski tuppa uuesti siseneda, sest see ärataks Peter kindlasti üles. Nii et peate otsustama vaid toast kostva müra. Kas tuba on vaikne või kostab toast müra . Need on teie olekud.

Enne kui jätate teid sellesse õudusunenäosse, ütles Peetruse ema:

Olgu heli teiega :)

Tema ema on andnud teile järgmise olekudiagrammi. Diagrammil on mõned olekud, vaatlused ja tõenäosused.

Pange tähele, et toast kostva heli ja Peetri une vahel pole otsest seost.

Olekudiagrammilt näeme kahte tüüpi tõenäosusi.

  • Üks on heidetõenäosused, mis tähistavad konkreetse seisundi korral teatud vaatluste tegemise tõenäosust. Näiteks meil on P(noise | awake) = 0.5. See on heite tõenäosus.
  • Teised neist on üleminektõenäosused, mis tähistavad teisele seisundile ülemineku tõenäosust antud konkreetses olekus. Näiteks meil on P(asleep | awake) = 0.4. See on ülemineku tõenäosus.

Markovi omadus kehtib ka selle mudeli puhul. Nii et ärge ajage asju liiga keeruliseks. Markov, su päästja ütles:

Ärge süvenege ajalukku liiga palju ...

Markovi omadus, mis oleks kohaldatav näitele, mida siin kaalunud oleme, oleks see, et Peetruse seisundi tõenäosus sõltub AINULT eelmisest olekust.

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.

Niisiis, majahoidja, kui olete nii kaugele jõudnud, tähendab see, et teil on vähemalt üsna hea arusaam probleemi ülesehitusest. Nüüd on jäänud vaid probleemi lahendamiseks kasutada mõnda algoritmi / tehnikat. Praegu palju õnne taseme tõstmise puhul!

Selle kaheosalise seeria järgmises artiklis näeme, kuidas mudeli järgi antud vaatluste jada dekodeerimiseks saab kasutada täpselt määratletud algoritmi, mida nimetatakse Viterbi algoritmiks . Näeme seal!