N-grammi on n elementin sarja [1] . Semanttisesta näkökulmasta se voi olla äänten, tavujen, sanojen tai kirjainten sarja . Käytännössä N-grammi on yleisempi sanasarjana, pysyviä lauseita kutsutaan kollokaatioksi . Kahden peräkkäisen elementin sekvenssiä kutsutaan usein digrammiksi , kolmen elementin sekvenssiä kutsutaan trigrammiksi . Vähintään neljä tai useampi elementti on merkitty N-grammiksi, N korvataan peräkkäisten elementtien lukumäärällä.
N-grammat kokonaisuutena löytävät sovelluksensa laajalla tieteenalalla. Niitä voidaan soveltaa esimerkiksi teoreettisen matematiikan , biologian , kartografian ja myös musiikin alalla . N-grammien yleisimmät käyttötarkoitukset ovat seuraavat:
Lisäksi N-grammia käytetään laajasti luonnollisen kielen käsittelyssä .
Luonnollisen kielen prosessoinnissa N-grammeja käytetään ensisijaisesti todennäköisyysmalleihin perustuvaan ennustamiseen . N-grammin malli laskee N-gramman viimeisen sanan todennäköisyyden, jos kaikki edelliset tunnetaan. Käytettäessä tätä lähestymistapaa kielen mallintamiseen oletetaan, että kunkin sanan ulkoasu riippuu vain edellisistä sanoista [2] .
Toinen N-grammien sovellus on plagioinnin havaitseminen . Jos jaat tekstin useisiin pieniin fragmentteihin, joita edustavat N-grammat, niitä voidaan helposti verrata toisiinsa ja siten saada analysoitujen asiakirjojen samankaltaisuusaste [3] . N-grammeja käytetään usein menestyksekkäästi tekstin ja kielen luokitteluun. Lisäksi niiden avulla voidaan luoda toimintoja, joiden avulla voit saada tietoa tekstitiedoista. N-grammien avulla voidaan löytää tehokkaasti ehdokkaita korvaamaan väärin kirjoitetut sanat.
N-grammien mallien rakentamisen tarkoituksena on määrittää tietyn lauseen käyttötodennäköisyys. Tämä todennäköisyys voidaan asettaa muodollisesti sanajonon esiintymistodennäköisyydeksi tietyssä korpuksessa (tekstijoukossa). Esimerkiksi lauseen "onnellisuus on nautintoa ilman katumusta" todennäköisyys voidaan laskea tämän lauseen jokaisen sanan todennäköisyyksien tulona:
P = P(onnellisuus) * P(on|onnellisuus) * P(ilo|onnellisuus on) * P(ilman|onni on ilo) * P(katumus|onnellisuus on iloa ilman)P(onnellisuuden) määrittämiseksi sinun on laskettava, kuinka monta kertaa tämä sana esiintyy tekstissä, ja jaettava tämä arvo sanojen kokonaismäärällä. Todennäköisyyden P (parannus|onnellisuus on ilo ilman) laskeminen on vaikeampaa. Tämän tehtävän yksinkertaistamiseksi oletetaan, että sanan todennäköisyys tekstissä riippuu vain edellisestä sanasta. Sitten lauseen laskentakaavamme on seuraavan muodon:
P = P(onnellisuus) * P(onnellisuus) * P(ilo|onnellisuus) * P(ilman|iloa) * P(katumuus|ilman)Ehdollisen todennäköisyyden P(on|onnellisuus) laskeminen on helppoa. Tätä varten laskemme "onnellisuus" -parien lukumäärän ja jaamme tekstin "onnellisuus" -sanojen määrällä.
Tämän seurauksena, jos laskemme kaikki sanaparit jossain tekstissä, voimme laskea mielivaltaisen lauseen todennäköisyyden. Tämä laskettujen todennäköisyyksien joukko on biggramimalli.
Googlen tutkimuskeskukset ovat käyttäneet N-gramm-malleja monenlaiseen tutkimukseen ja kehitykseen. Näitä ovat muun muassa tilastolliset käännökset kielestä toiseen, puheentunnistus , oikeinkirjoituksen korjaus, tiedon poimiminen ja paljon muuta. Näiden hankkeiden tarkoituksiin käytettiin useita biljoonaa sanaa sisältäviä tekstikorjauksia.
Google päätti luoda oman koulutusrakennuksen. Projekti on nimeltään Google teracorpus, ja se sisältää 1 024 908 267 229 sanaa, jotka on kerätty julkisilta verkkosivustoilta [4] .
Koska N-grammeja käytetään usein erilaisten ongelmien ratkaisemiseen, tarvitaan luotettava ja nopea algoritmi niiden poimimiseen tekstistä. Sopivan N-gramman poimintatyökalun tulee kyetä toimimaan rajoittamattoman tekstikoon kanssa, toimimaan nopeasti ja käyttämään käytettävissä olevia resursseja tehokkaasti. On olemassa useita menetelmiä N-grammien poimimiseen tekstistä. Nämä menetelmät perustuvat erilaisiin periaatteisiin:
Syntaktiset N-grammit ovat N-grammeja, jotka määritellään syntaktisten riippuvuuspuiden tai komponenttipuiden poluilla tekstin lineaarisen rakenteen sijaan [6] [7] . Esimerkiksi lause: "Talousuutisilla on vähän vaikutusta rahoitusmarkkinoihin" voidaan muuntaa syntaktisiksi N-grammeiksi seuraamalla sen riippuvuussuhteiden puurakennetta : uutiset-taloudellinen, vaikutus-pieni, vaikutus markkinoihin-taloudellinen, ja muut [6] .
Syntaktiset N-grammit heijastavat syntaktista rakennetta toisin kuin lineaariset N-grammit, ja niitä voidaan käyttää samoissa sovelluksissa kuin lineaarisia N-grammeja, mukaan lukien piirteitä vektorimallissa. Syntaktisten N-grammien käyttö antaa parempia tuloksia tiettyjen ongelmien ratkaisemisessa kuin tavallisten N-grammien käyttö esimerkiksi tekijän määrittämisessä [8] .
luonnollisen kielen käsittely | |
---|---|
Yleiset määritelmät | |
Tekstianalyysi |
|
Viittaus |
|
Konekäännös |
|
Tunnistaminen ja tiedonkeruu | |
Temaattinen malli | |
Vertaisarviointi |
|
Luonnollisen kielen käyttöliittymä |