Klasifikacija besedil

Pregled vsebine

Imamo kompleksne podatke, ki bi jih radi obdelali in morda ugotovili, kakšne so med njimi podobnosti ali razlike, pa nam bi ročno pregledovanje vseh podatkov vzelo preveč časa. Klasifikacijo lahko opravimo s programom Orange. V zapisu je predstavljena predobdelava in klasifikacija dveh vrst kompleksnih podatkov - vezanih besedil (v našem primeru leposlovja in publicistike) ter slikovnega gradiva.

V zajemu zaslona vidimo, kako gradnik CORPUS VIEWER prikaže podatkovno zbirko leposlovne in publicistične literature. V levem okencu smo s seznama značilk izbrali vsebino, v srednjem okencu vidimo naslove, v desnem pa prikaz vsebine besedil, ki smo jih v Orange uvozili z gradnikom CORPUS.

Na preteklih srečanjih, ki so dostopna tu, se lahko seznanite z uporabo gradnikov, ki omogočajo vizualizacijo, klasifikacijo, analizo besedil in slikovnega gradiva.

V besedilu bo predstavljena uporaba gradnikov: File, Text, Corpus, Corpus Viewer, Naive Bayes, Preproces Text, Bag of Words, Test and Score, Logistic Regression, Nomogram in Confusion Matrix. Razložili bomo tudi izraze tokenizacija (tokenization), filtriranje (filtering), odstranjevanje nepolnopomenskih besed (stopwords) ter oblikoskladenjske oznake (POS tags).

Nalaganje besedila v program

Za začetek dela smo izbrali gradnik CORPUS, s katerim bomo v Orange naložili zbirko besedil. Če gradnika CORPUS še ne najdemo v svojem meniju gradnikov, ga naložimo v programu Orange tako, da v orodni vrstici poiščemo zavihek možnosti (Options), v Options pa izberemo dodatke (Add-ons). Odpre se novo pojavno okno, v katerega vpišemo ime dodatka - TEXT. Razširitev TEXT se pojavi na dnu seznama. Izberemo jo in potrdimo izbiro. Ko bo razširitev naložena, bomo morali Orange znova zagnati. Z dodatkom TEXT bomo naložili tudi gradnik CORPUS, ki omogoča nalaganje zbirk besedilnih dokumentov.

V gradniku CORPUS si ogledamo korpus Book excerpts. Ker nam CORPUS ne pokaže vsebine dokumenta, si jo ogledamo z gradnikom DATA TABLE. Ta pokaže, da je zbirka podatkov res velika, vsebuje namreč 150 vnosov. DATA TABLE pokaže tudi nekatere pomembne podatke - da gre za leposlovna oziroma publicistična besedila, naslove besedil in teme.

Ko CORPUS naloži naša besedila, jih lahko pregledamo z gradnikom CORPUS VIEWER.

V CORPUS naložimo nov korpus leposlovnih in publicističnih besedil, ki jih lahko najdemo na Moodlu SIO. Korpus pregledamo z gradnikom CORPUS VIEWER. Z njim bomo pregledali besedilo Soseska. V gradniku CORPUS VIEWER vidimo, katere so teme besedila, kdo je avtor, leto izida, vsebino, naslov …

Z gradnikom CORPUS VIEWER lahko besedila raziskujemo dalje. Preverimo lahko vsebino vsakega posamičnega besedila ter iščemo besede v besedilih. Za vajo v vrstici RegExp Filter poiščemo besedo MAMA, ki se nato v besedilu obarva rumeno.

Predpriprava besedila za obdelavo

Besedila v našem korpusu so dveh tipov, leposlovna in publicistična, kar lahko vidimo, ko korpus odpremo v gradniku DATA TABLE. Naloga klasifikacije bo razlikovanje med tema dvema skupinama besedil.

Napovedni model začnemo graditi s klasifikacijskim postopkom. Najprej poskusimo z gradnikom NAIVE BAYES. Ta gradnik je hiter in preprost klasifikator, ki temelji na verjetnosti besed. Poimenovan je po Bayesovem teoremu. Ko NAIVE BAYES povežemo z gradnikom CORPUS, naletimo na težavo: gradnik podatkov, ki so mu na voljo, ne zna brati.

Za ugotavljanje in odpravljanje izvira zagate izberemo gradnik DATA TABLE in vidimo, da so stolpci obarvani v sivo in bež barvo. V programu Orange so z bež barvo označene meta spremenljivke, zato z njimi ne moremo računati. Ker program, kot računalniki nasploh, slabo obdeluje meta spremenljivke, mu moramo določiti, kako naj z njimi rokuje, oziroma besedila spremeniti v nekaj, kar program zmore obdelati.

Predprocesiranje besedila - rezanje na osnovne enote in čiščenje nepotrebnih besed

Rešitev je, da besedilo razrežemo na posamezne besede. Preden besedilo razdelimo, si oglejmo, katere so najpogosteje prisotne besede besedila. Gradnik, ki prikaže pogoste besede, je WORD CLOUD. Ko Orange izvede ukaz, vidimo, da je v oblak besed vključil tudi dele besedila, ki niso besede - to so ločila in vmesni znaki - ter nepolnopolmenske besede, kot so in, pa, da, če.

V zajemu zaslona prikažemo delovanja gradnika WORD CLOUD, preden smo besedilo predprocesirali. Kot vidimo, so v besednem oblaku zajete tudi enote, ki niso besede, predvsem ločila. Naš pogled pa moti tudi obilica kratkih besed, ki ne nosijo vsebinskih pomenov, na primer za, še, da, od.

Da se znebimo nepomembnih enot in dosežemo obliko, ki jo program razume, bomo besedilo obdelali. Za procesiranje oz. pripravo besedila izberemo gradnik PREPROCESS TEXT. Da bodo besede uniformne, besedilo pa razrezano na posamezne pomenske besede, bomo izvedli kar 4 operacije:

  1. Izbrali bomo gradnik LOWERCASE v okencu Transformation. Ta se bo pretvoril velike začetnice v male.
  2. Izbrali bomo operacijo TOKENIZATION, ki bo besedilo razčlenila na osnovne enote oz. besede. Izberemo REGEXP. Možnost Regexp bo besedilo tokenizirala tako, da ga razreže na besede in zavrže ločila.
  3. V možnosti FILTERING se znebimo nepolnopomenskih besed - STOPWORDS označimo s kljukico.
  4. S seznama jezikov pri možnosti Stopwords izberemo Slovene, pri čemer se bo uporabil seznam slovenskih nepolnopomenskih besed.

Ko smo izbrali vse zgoraj naštete korake, vidimo, da je Orange pripravil seznam relevantnih besed oz. osnovnih enot. Ob ponovnem zagonu gradnika WORD CLOUD vidimo, da je nabor besed zdaj čistejši, sestavljajo pa ga prave besede.

V zajemu zaslona po predobdelavi z gradnikom PREPROCESS TEXT vidimo več pomenskih besed.

Naše besedilo je zdaj res čisto. Zadovoljni smo in povežemo ga z NAIVE BAYES, da zgradimo napovedni model. Vidimo, da naive Bayes še vedno ne izvede ukaza.

Preden bo ukaz izvedel, moramo besedila številsko opisati. Le tako bo računalnik besede prepoznal.

Pripisovanje številskih vrednosti besedam - spreminjanje v obliko za strojno obdelavo

Besedam številske vrednosti pripišemo v gradniku BAG OF WORDS. Če se beseda pojavi v besedilu, bo imela tako vrednost, kolikorkrat se v besedilu pojavi. Program prešteje besede v besedilu, vsaki besedi pa pripiše številsko vrednost. Če se beseda ne pojavi v besedilu, ji program pripiše vrednost 0. Besedila, ki imajo podobne besede, imajo tudi podobne številske opise.

Vse besede torej naložimo v gradnik BAG OF WORDS. V gradniku izberemo TERM FREQUENCY. Po izvedbi ukaza si rezultat ogledamo v gradniku DATA TABLE. V gradniku zdaj vidimo, da so naše želene spremenljivke obarvane belo, kar je znak, da so številske spremenljivke. Program Orange jih lahko obdela.

Z dosedanjimi koraki smo korpus naložili v program Orange, preverili njegovo vsebino, se odločili, kako bi ga radi analizirali - v prvem delu bloga smo se odločili, da bomo besedilo klasificirali - in ga predprocesirali tako, da ga bo program lahko analiziral na način, ki ga želimo.

Analiza besedila - opravimo klasifikacijo

Ker smo besedilom s pomočjo gradnika BAG OF WORDS določili številske vrednosti, lahko s podatki delamo vse, kar smo prej delali s številkami.

Začnemo torej s klasifikacijo. Zaženemo gradnik TEST AND SCORE. Ta gradnik ovrednoti model s postopkom prečnega preverjanja.

Dodamo gradnik logistične regresije - LOGISTIC REGRESSION. V gradniku PREPROCESS TEXT lahko preverimo, koliko unikatnih besed imamo, pa tudi koliko je vseh besed. Naš primer je kompleksna tabela, ki prikazuje besede iz besedil.

V gradniku TEST AND SCORE smo ocenili LOGISTIČNO REGRESIJO - torej, kakšna je točnost modela, ki ga je zgradil gradnik LOGISTIC REGRESSION. Ugotovili smo, da model uspešno loči med leposlovjem in publicistiko.

Da je gradnik TEST AND SCORE pravilno ločil med leposlovnim in publicističnim besedilom vemo, ker je vrednost mere AUC blizu 1 (blizu 0.97). Bližje, kot je vrednost pod ROC krivuljo 1, točnejši je model.

Odpremo gradnik NOMOGRAM in preverimo, kaj določa specifično vrsto besedila. Zanimivo je, da je za leposlovna besedila to uporaba besed rekel in uporaba opisnikov časa.

V zajemu zaslona gradnika Nomogram, ki nam prikazuje pomembnost besed za model logistične regresije, vidimo besede, ki določajo leposlovno zbirko (levo zgoraj smo v okencu *target class* določili “leposlovje”). Besede, ki so pomembnejše za model, se nahajajo višje na seznamu. Vidimo, da so to besede, ki opisujejo čas, ter besede *rekel* in *oče*.

Publicistična besedila določa odsotnost za leposlovje značilnih besed.

V zajemu zaslona gradnika Nomogram, ki prikazuje razlago klasifikacijskega modela zbirke leposlovnih in publicističnih besedil, vidimo besede, ki določajo publicistično zbirko (levo zgoraj smo v okencu *target class* določili “publicistika”). Vidimo, da besedilo zaznamuje odsotnost opisnikov, ki opisujejo čas, ter besed *rekel* in *oče*. To vidimo tako, da pogledamo x os. Na x osi značilk vidimo njihove vrednosti. Za leposlovje je značilna pogosta uporaba določenih besed (visoke vrednosti), za publicistiko pa nizka raba ali odsotnost (blizu vrednosti 0).

Zdaj smo opravili nalogo, ki smo si jo zadali na začetku. Nabor kompleksnih besedil smo klasificirali v dve ločeni skupini - leposlovje in publicistiko. Tukaj se lahko ustavimo, ali pa preverimo opravljeno delo.

Preveritev opravimo s pomočjo matrike zmot - CONFUSION MATRIX.

Model nam zmoto prikaže tako, da vidimo, da je nekaj preprostih leposlovnih besedil pripisal publicistiki. Težavo so mu delala otroška besedila, saj so pisana drugače kot značilni romani. Da se je Orange zmotil, vidimo tako, da v matriki zmot označimo napačno klasificirana besedila in jih pogledamo v gradniku Corpus Viewer.

Besedila smo v program naložili (CORPUS), si besedila ogledali (CORPUS VIEWER) in obdelali tako, da smo jih spremenili v obliko podatkov, ki jih Orange lahko obdela (PREPROCESS TEXT). Nato smo jih opisali tako, da smo prešteli besede (BAG OF WORDS) in zgradili klasifikacijski model(LOGISTIC REGRESSION + TEST AND SCORE). Pogledali smo, kako je zgrajen model, oziroma katere besede so zanj pomembne in ponovno preverili, katera besedila je model razvrstil narobe (CONFUSION MATRIX).