Main Concepts¶
Siin kirjeldatakse põhimõisteid, mida TEXTA Toolkitis (TTK-s) kasutatakse.
Projekt¶
Projekt on põhiühik andmete ja ressurside (sõnavektorite, klassifikaatorite jne) haldamiseks ja neile ligi pääsemiseks. Projekti defineerivad tema kirjeldus, Elasticsearchi indeksite nimekiri (indeksites on andmed!) ja projektile ning selle ressurssidele ligipääsu omavate kasutajate nimekiri. Kõik ressursid TTK-s kuuluvad mingisse projekti ning kasutajaid lisades või eemaldades saab valida, kellel on projektile ja selle ressurssidele ligipääs.
Ülesanne (Task)¶
TEXTA Toolkitis saab luua mitut erinevat statistilist mudelit teksti töötlemiseks. Treenimisprotsessi saab alustada TTK API-s või GUI-s, mis loob TTK andmemudelis objekti ning alustab asünkroonset treenimisülesannet. Ülesanded on andmeobjektid, mille abil saab jälgida treenitavate statistiliste mudelite treeningprogressi.
Otsing (Search)¶
Search on üks TTK põhikomponente. Seda kasutatakse andmestikus teksti klassifitseerimise mudelite treenimiseks vajalike alamhulkade loomeks ja erinevate agregatsioonide tegemiseks. Searchi saab hallata GUI-s ning see võib sisalda üht või rohkem piirangut mingite tunnuste väärtustele (nt sõned ja kuupäevad). Otsingukriteeriumitele vastavaid dokumente saab kasutada erinevates TTK vahendites, nt asjakohaste võtmesõnade eraldamises, andmete kokku võtmises ja uurimiseks ning teksti klassifitseerimise treenimises.
Fakt (Fact)¶
TTK-s on taolised tekstimärgendid faktid:
{
"doc_path": "content.text",
"fact": "PER",
"spans": "[[12, 24]]"
"str_val": "Donald Trump"
}
Faktid on järgnevate tunnustega objektid:
fact - märgendi nimi (nt PER, LOC või mõni muu suvaline sõne)
str_val - märgendi väärtus sõnena (nt „Donald Trump“ või PER). Väärtused ei pea ühilduma märgendatud teksti lõikudega.
doc_path - tee väljale, kus on sõned märgendatud (nt „text“, „text.author“, „comment.text.author“ jne.)
spans - JSON sõne, mis sisaldab märgendatud sõne alguse ja lõpu kaugust teksti algusest.
Toolkitis on mitu eelnevalt defineeritud fakti, mida saab kasutada TTK-s Mitmekeelse tekstitöötlejaga (Multilingual Processor):
Silt |
Tähendus |
Kommentaar |
---|---|---|
PER |
Persona |
Inimese nimi |
ORG |
Asutus |
Asutuse nimi, saadud statistiliselt |
LOC |
Asukoht |
Asukoha nimi, saadud statistiliselt |
COMPANY |
Firma |
Eestis registreeritud firmade nimed, saadud Estonian Open Data-st. |
ADDR |
Aadress |
Eesti aadressid, saadud Estonian Open Data-st. |
DRUG |
Ravim |
Ravimi nimi |
SUBSTANCE |
Koostisosa |
Ravimi koostisosa |
EML |
E-maili aadress. |
|
PHO |
Telefon |
Telefoninumber |
TEXTA_TAG |
Oma märgend |
Märgendid, mis on treenitud Tagger-itega Models-i all |
Tabel 1. Mitmekeelse tekstitöötleja (Multilingual Processor) kasutatavad eelnevalt defineeritud faktid
Pane tähele, et COMPANY ja ADDR oskavad ära tunda ainult neid firmasid ja aadresse, mis on registreeritud Estonian Open Data-s. See ei märgenda välismaa firmasid ja aadresse. ORG ja LOC märgendab ka välismaa omi.
Indeks (Index)¶
Indeks on dokumentide kogum Elasticsearch-is. Otsingus (Search-is) väljastatakse tabel indeksist välja filtreeritud dokumentidega. Üks rida tabelis on üks dokument.
Väli (Field)¶
Iga dokument on väljade kogum. Väli on eraldatud infoosa dokumendis. Näiteks võivad artiklil kui ühel dokumendil olla sisu, avaldamisaja, pealkirja jms väljad.
Anonüümija¶
TODO
Sõnavektor (embedding)¶
Sõnavektorite mudelid on statistilised mudelid, mis kirjeldavad sõnade ja fraaside jaotuslikke omadusi, mis võimaldavad arvutada erinevate sõnade ja fraaside vahelisi sarnasusi. TTK-s kasutatakse sõnavektoreid kontekstuaalselt sarnaste võtmesõnade otsimiseks, mis aitab laiendada otsingu tulemusi ning ehitada leksikone. Enamgi veel, sõnavektoreid saab kasutada ka TEXTA Toolkiti tehisnärvivõrgupõhistes klassifikaatorites. TTK toetab hetkel vaid Word2Vec sõnavektoreid, aga töötatakse selle nimel, et lisada juurde kõige uuemaid ja veel paremaid sõnavektorite mudeleid (nt BERT-i Google-st). TTK hakkab kasutama ka mitmekeelseid sõnavektorite mudeleid, mida arendatakse praegu EMBEDDIA projektis mitmekeelse teksti klassifitseerimiseks.
Märgendaja (Tagger)¶
Taggerid on ükskeelsed binaarsed tekstiklassifitseerijad dokumendi märgendi ennustamiseks, näiteks ennustamaks kas Twitteri-säuts solvab kedagi või räägib hoopis Brexitist. Treeningandmestikuna saab kasutada nii eelnevalt salvestatud TTK ostingut kui ka otse päringut Elasticsearch’i (JSON objekt). Treeningandmestik tuleb luua nii, et see sisaldaks “positiivseid“ näiteid andmetest (dokumente teemal, mida tahetakse tuvastada). “Negatiivsed“ näited valitakse automaatselt (nii, et need ei kattu positiivsetega). TTK taggerite treenimiseks kasutatakse teeki scikit-learn, mudelitest on valikus logistiline regressioon ja tugivektormasinad (support vector machines, lühendatult SVM). TTK jagab treeningandmed automaatselt treening- ja testandmestikuks (osakaaludega 80-20) ning kasutab ruudustikotsingut koos k-kordse ristvalideerimisega, leidmaks mudelitele parimad hüperparameetrid. SVM kasutatakse taggeri sees veel ka tunnuste selekteerimiseks, et jätta välja ebaolulised tunnused ja muuta mudel niimoodi väiksemaks. Tunnustena kasutatakse nii sõnu kui ka tähemärgipõhiseid mitmikuid (n-gramme).
Mustripõhine märgendaja (Regex Tagger)¶
TODO
Tagger Group¶
Tagger Group on TTK binaarsete klassifitseerijate (Taggerite) laiendus võimaldamaks ükskeelset mitmesildilist klassifitseerimist. Nagu nimigi vihjab, liidab Tagger Group üheks mitu (binaarset) taggerit, mida siis kasutatakse paralleelselt ennustamiseks, andes tulemusena lõppkasutajale nimekirja ennustatud märgendustest. Tagger Groupi on edukalt testitud rohkem kui 6000 binaarse mudeliga ja ennustamiseks kulub tavaliselt aega vähem kui sekund. See on saavutatud hübriidmeetodi abil, mis kasutab juhendamata masinõpet (dokumendivektorid) vähendamaks binaarsete mudelite arvu, millelt ennustust küsitakse: dokumenti, millele soovitakse märgendus ennustada, võrreldakse esmalt treeningandmetega, et teha kindlaks mudelid, mis kõige tõenäolisemalt ennustavad soovitud silte.
Mustripõhiste märgendajate grupp (Regex Tagger Group)¶
TODO
Torch Tagger¶
Eelnevalt jutuks olnud Taggerid ja Tagger Group-id kasutavad klassikalist masinõpet, kuid Texta Toolkitiga on võimalik treenida ka närvivõrke, seda nii binaarse kui ka mitmesildilise klassifitseerimise jaoks. Kuna närvivõrkude programmeerimiseks on kasutatud teeki PyTorch, nimetatakse seda komponenti TTK-s Torch Taggeriks. Torch Taggeriga saab treenida närvivõrkudel põhinevaid klassifitseerijaid. Mudelite arhitektuuridest on esindatud fastText, TextRNN koos kahesuunalise LSTM närvivõrguga ja RCNN kasutades rekurrentseid konvolutsioonilisi närvivõrke. PyTorchiga saab ka uusi arhitektuure TKK-sse lisada võrdlemisi lihtsalt. TorchTaggeri mudelite treenimisel võimaldab TTK sisendina kasutada ka eeltreenitud sõnavektoreid (näiteks Word2Vec vektoreid, mida saab treenida TTK-s). Tekstiandmete töötlemiseks kasutab Torch Tagger teeki torchtext. Torch Taggeri ennustusvõimekuse hindamiseks kasutati solvavate kommentaaride tuvastamise ülesannet, kus saavutati F1 skoor 96%.
Multilingual Processor¶
TODO
Teemaanalüsaator (Topic Analyzer)¶
Topic Analyzer ehk Teemaanaüsaator on vahend, mis tuvastab andmestikus olevaid sarnaste dokumentide gruppe. Seda saab kasutada näiteks märgendamata andmestiku uurimiseks, et saada aru, mida see sisaldab. Vahendi peamine eesmärk on siiski astuda samm edasi ning kasutada selle tulemusi andmestiku märgendamiseks. Teemaanalüsaatori abil märgendatud teksti saab kasutada juhendatud masinõppemudelite treenimiseks.
Teemaanalüsaator kasutab juhendamata klasterdamise parimaid palu ning käsitsi märgendamist. Klasterdamine on kiire ja tõhus meetod sarnaste tekstide grupeerimiseks. Siiski ei pruugi see olla piisavalt täpne, et tulemusi koheselt kasutada andmete märgendamiseks. Näiteks võivad mõned klastrid tõepoolest sisaldada sarnaseid dokumente, samas võib teistel klastritel see ebaõnnestuda ning kolmandatel olla hinnanguks ‚nii-ja-naa‘.
Teemaanalüsaatoris saab vaadata iga klastri sisse ning otsustada selle kvaliteedi üle käsitsi. Kasutajatel on võimalus ka klastreid muuta: kustutada dokumente, lisada uusi sarnaseid dokumente ning liigutada dokumente ühest klastrist teise, sobivamasse klastrisse. Kui klaster on valmis ja kasutaja on sellega rahul, on võimalik antud dokumente klastris automaatselt vabalt valitud sildiga ära märgendada.