EN ET

MLP

Andmete eeltöötlemine on standardne protseduur masinõppes. TTK-s saab seda teha MLP mooduli (MultiLingual Preprocessor) abil.

TEXTA MLP (mitmekeelne eeltöötleja) on lisamoodul TEXTA-s, mis loodi tekstiandmete eeltöötlemiseks ja rikastamiseks. See suudab erinevates keeltes lemmatiseerida, tunda ära nimiolemeid, tuvastada seotud olemite gruppe jne. MLP kergemaks kasutamiseks on see lisatud Toolkitti. „Analyzer“-te alt saabvalida, milliseid analüsaatoreid teksti peal rakendatakse.

Kasutajad saavad rakendada MLP-d ühele tekstile või mitmele Elasticsearchi indeksile korraga.

Mugavuse huvides toetab Toolkit erinevaid sisendi tüüpe, sh mitme Elasticsearchi indeksi korraga töötlemist. Viimane on siiski väga aeganõudev sõltuvalt indeksi suurusest ja töödeldavate väljade pikkusest.

Analüsaatorid

Analüsaatorite abil saab valida, mis viisil andmeid töödeldakse: kas soovid ainult lemmatiseerimist või ka näiteks olemituvastust. Hetkel toetatakse järgnevaid analüsaaotreid:

  • lemmas - Lisab originaalteksti lemmatiseeritud versiooni.

  • pos_tags - Lisab sõnaliigi märgendi igale tekstiühikule.

  • transliteration - litereerib ladina tähestikku teistes tähestikes kirjutatud keeled (vene, araabia).

  • ner - Lisab nimeolemid Texta fakti formaadis (NER eesti keelele ei ole hetkel saadaval).

  • entities - Võtmesõnadel põhinev olemituvastus, kasutatakse informatsiooni nagu näiteks eeldefineeritud aadresside eraldamiseks.

  • namemail - Tuvastab nime-mailide paarid tekstist Texta fakti formaadis.

  • bounded - Ühendab olemasolevad Texta faktid kokku sama olemi juurde kuuluvateks gruppideks ja tagastab grupi Texta faktina.

Loomine

GUI

Navigeeri Tools -> MLP. Vajuta Create nuppu ja defineeri uus MLP töö. Vali indeksid ja väljad, millele tahad MLP-d rakendada. Kuna andmete eeltöötlemine on üsna aeganõudev protsess, soovitame valida vaid need väljad, kus MLP rakendamine tegelikult ka on kasulik. See tähendab välju, mille põhjal plaanid hiljem treenida mudeleid või luua leksikone. Viimaseks vali analüsaatorid, mida soovid rakendada.

_images/create_MLP_worker.png

Joonis 18 MLP töö loomine

MLP tulemused pannakse andmestikku uutesse väljadesse. Neid saab näha Searcheris väljade nimekirjas.

_images/MLP_fields.png

Joonis 19 Uued väljad andmestikus MLP tulemustega

Rakendamine

MLP rakendamine ühele tekstile

GUI

MLP ühele tekstilõigule rakendamiseks, vajuta „Apply to text“ nupule kohas Tools -> MLP.

_images/MLP_ontext.png

Joonis 20 MLP rakendamine ühele tekstilõigule.

API

Otspunkt: /mlp/texts/

See võtab sisendiks järjendi (listi). Kasuta lihtsalt üheelemendilist järjendit.

Näide:

curl -X POST "http://localhost:8000/api/v1/projects/11/mlp/texts/" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Token 8229898dccf960714a9fa22662b214005aa2b049" \
-d '{
        "texts": ["Mis su nimi on?"]
    }'

Vastus:

[
    {
        "text": {"text":"Mis su nimi on ?","lang":"et","lemmas":"mis sina nimi olema ?","pos_tags":"P P S V Z"},
        "texta_facts":[]
    }
]

MLP rakendamine tekstijärjendile

API

Otspunkt: /mlp/texts/

Näide:

curl -X POST "http://localhost:8000/api/v1/projects/11/mlp/texts/" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Token 8229898dccf960714a9fa22662b214005aa2b049" \
-d '{
        "texts": ["Mis su nimi on?", "Ettepanek minna üle neljapäevasele töönädalale lükati tagasi."]
    }'

Vastus:

[
    {
        "text": {"text":"Mis su nimi on ?","lang":"et","lemmas":"mis sina nimi olema ?","pos_tags":"P P S V Z"},
        "texta_facts":[]
    },
    {
        "text": {"text":"Ettepanek minna üle neljapäevasele töönädalale lükati tagasi .","lang":"et","lemmas":"ettepanek minema üle neljapäevane töönädal lükkama tagasi .","pos_tags":"S V K A S V D Z"},
        "texta_facts":[]
    }
]

MLP rakendamine sõnastikujärjendile

API

Otspunkt: /mlp/docs/

Näide:

curl -X POST "http://localhost:8000/api/v1/projects/11/mlp/texts/" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Token 8229898dccf960714a9fa22662b214005aa2b049" \
-d '{
        "docs": [{"comment": "Ettepanek minna üle neljapäevasele töönädalale lükati tagasi."}],
        "fields_to_parse": ["comment"]
    }'

Vastus:

[
    {
        "comment": "Ettepanek minna üle neljapäevasele töönädalale lükati tagasi.",
        "comment_mlp": {
            "text": "Ettepanek minna üle neljapäevasele töönädalale lükati tagasi .",
            "lang": "et",
            "lemmas": "ettepanek minema üle neljapäevane töönädal lükkama tagasi .",
            "pos_tags": "S V K A S V D Z"
        },
        "texta_facts": []
    }
]

MLP rakendamine indeksile

API

Otspunkt: /mlp_index/

‚analyzers‘ välja mitte kasutamine rakendab vaikimisi kõik analüsaatorid, tehes eeltöötlemise protsessi aeganõudvaks.

Näide:

curl -X POST "http://localhost:8000/api/v1/projects/11/mlp_index/" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Token 8229898dccf960714a9fa22662b214005aa2b049" \
-d '{
        "indices": [{"name": "embedding_index"}],
        "description": "lemmas for embedding index",
        "fields": ["comment_content", "comment_title"]
    }'

Vastus:

{
    "id": 17,
    "url": "https://rest-dev.texta.ee/api/v1/projects/109/mlp_index/17/",
    "author_username": "texta",
    "indices": [
        {
            "id": 30,
            "is_open": true,
            "url": "https://rest-dev.texta.ee/api/v1/index/30/",
            "name": "embedding_index"
        }
    ],
    "description": "lemmas for embedding index",
    "task": {
        "id": 153759,
        "status": "created",
        "progress": 0.0,
        "step": "",
        "errors": "[]",
        "time_started": "2020-12-09T10:28:59.856498+02:00",
        "last_update": null,
        "time_completed": null,
        "total": 0,
        "num_processed": 0
    },
    "query": {"query": {"match_all": {}}},
    "fields": ["comment_content", "comment_title"],
    "analyzers": ["all"]
}