Johdettu

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14. elokuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 4 muokkausta .

Runko  on prosessi  ,  jossa etsitään tietyn lähdesanan sanan kanta . Sanan varsi ei välttämättä ole sama kuin sanan morfologinen juuri .

Sanan varren löytäminen on ollut tietojenkäsittelytieteen pitkäaikainen ongelma . Ensimmäinen julkaisu tästä numerosta on vuodelta 1968 . Stemmingiä käytetään hakukoneissa käyttäjän hakukyselyn laajentamiseen [ , on osa tekstin normalisointiprosessia .

Erityinen tapa ratkaista sanojen perustan löytämisen ongelma on nimeltään stemming -algothm , ja tietty toteutus on stemmer .

Historia

Ensimmäisen julkaistun varren kirjoitti Julie Beth Lovins vuonna 1968 [1] . Tämä paperi on tunnettu varhaisesta julkaisupäivästään ja sillä on ollut suuri vaikutus myöhempään alan työhön.

Sen kirjoitti myöhemmin Martin Porter , ja se julkaistiin vuonna 1980. Tätä stemmeriä on käytetty erittäin laajalti ja siitä on tullut englanninkielisten tekstien de facto standardialgoritmi. Tohtori Porter sai Strix Award -palkinnon vuonna 2000 stemming- ja tiedonhakutyöstään.

Useita Porterin johdatusalgoritmin toteutuksia on kirjoitettu ja jaettu vapaasti; Monet näistä toteutuksista sisältävät kuitenkin vaikeasti löydettäviä puutteita. Tämän seurauksena nämä algoritmit eivät toimineet täysillä. Tämän tyyppisten virheiden poistamiseksi Martin Porter julkaisi algoritmin virallisen ilmaisen toteutuksen noin vuonna 2000. Hän jatkoi tätä työtä muutaman seuraavan vuoden ajan kehittämällä Snowballia , kehyksen varsialgoritmien luomiseen, sekä paranneltuja englanninkielisiä stemmereitä sekä useiden muiden kielten varsimerkkejä.

Algoritmit

On olemassa useita eri tyyppisiä johdatusalgoritmeja, jotka eroavat toisistaan ​​suorituskyvyn, tarkkuuden ja tiettyjen johdatusongelmien ratkaisemisen suhteen.

Hakualgoritmit

Yksinkertainen varsi etsii taivutusmuodon hakutaulukosta . Tämän lähestymistavan etuja ovat sen yksinkertaisuus, nopeus ja poikkeusten käsittelyn helppous. Haittapuolena on, että kaikki taivutusmuodot on lueteltava taulukkoon eksplisiittisesti: uusia tai tuntemattomia sanoja ei käsitellä, vaikka ne olisivat oikein (esim. iPads ~ iPad) ja ongelmana on myös se, että hakutaulukko voi olla erittäin suuri. Yksinkertaisen morfologian kielillä, kuten englanti, taulukkokoot ovat pieniä, mutta erittäin taivuttavilla kielillä (kuten turkki) taulukossa voi olla satoja mahdollisia taivutusmuotoja jokaiselle juurelle.

Stemmerissä käytetyt hakutaulukot luodaan yleensä puoliautomaattisesti. Esimerkiksi englanninkieliselle sanalle "run" muodot "juoksu", "juoksu", "juoksu" ja "juoksu" luodaan automaattisesti. Kaksi viimeistä muotoa ovat kelvollisia rakenteita, mutta ne eivät todennäköisesti esiinny tavallisessa englanninkielisessä tekstissä.

Hakualgoritmi voi käyttää prepartition merkintää välttääkseen tällaisen lemmatisointivirheen , kun samalle lemmalle (overstemming) määrätään eri sanoja [2] .

Lopetuksen katkaisualgoritmit

Päätteen katkaisualgoritmit eivät käytä hakutaulukkoa, joka koostuu taivutusmuodoista ja juurimuotosuhteista. Sen sijaan tallennetaan yleensä pienempi luettelo "säännöistä", jota algoritmit käyttävät sanan muodon perusteella löytääkseen sen varren [3] . Jotkut esimerkkisäännöt näyttävät tältä:

Termination katkaisualgoritmit ovat paljon tehokkaampia kuin raakavoiman algoritmit . Tällaisten algoritmien kehittämiseen tarvitaan ohjelmoija, joka on melko hyvin perehtynyt kielitieteeseen , erityisesti morfologiaan , ja joka pystyy myös koodaamaan "katkaisusääntöjä". Päätteen katkaisualgoritmit ovat tehottomia poikkeuksille (esim. "run" ja "run"). Päätteen katkaisualgoritmeilla saadut ratkaisut rajoittuvat tiettyjä poikkeuksia lukuun ottamatta niihin puheen osiin, joissa on tutut päätteet ja suffiksit. Tämä on vakava rajoitus, koska kaikilla puheen osilla ei ole hyvin määriteltyjä sääntöjä. Lemmatisointi yrittää poistaa tämän rajoituksen.

Etuliitteen katkaisualgoritmeja voidaan myös toteuttaa. Kaikilla kielillä ei kuitenkaan ole etuliitteitä ja jälkiliitteitä.

Lisäkriteerit algoritmeille

Lopetuksen katkaisualgoritmit voivat vaihdella tuloksissa useista syistä. Yksi näistä syistä on algoritmin erikoisuus: onko algoritmin ulostulossa olevan sanan oltava oikea sana tietyllä kielellä. Jotkut lähestymistavat eivät vaadi sanan läsnäoloa vastaavassa kielisanakirjassa . Lisäksi jotkut algoritmit ylläpitävät tietokantaa kaikista tunnetuista morfologisista juurista, jotka ovat olemassa todellisina sanoina. Nämä algoritmit tarkistavat termin läsnäolon tietokannassa tehdäkseen päätöksen. Pääsääntöisesti, jos termiä ei löydy, ryhdytään vaihtoehtoisiin toimiin. Nämä vaihtoehtoiset toimet voivat käyttää hieman erilaisia ​​kriteerejä päätöksenteossa. Termi, jota ei ole olemassa, voi toimia vaihtoehtoisena katkaisusäännönä.

Saattaa olla, että kahta tai useampaa lyhennyssääntöä sovelletaan samaan syöttötermiin, mikä aiheuttaa epäselvyyttä sovellettavasta sääntöstä. Algoritmi voi määrittää tällaisten sääntöjen toteuttamisen prioriteetin (henkilön avulla tai stokastisella tavalla). Tai algoritmi voi hylätä yhden säännöistä, jos se johtaa olemattomaan termiin, kun taas toinen ei. Esimerkiksi englanninkieliselle termille "friendlies" algoritmi voi määrittää loppuliitteen "ies", soveltaa asianmukaista sääntöä ja palauttaa tuloksen "friendl". Termiä "friendl" ei todennäköisesti löydy sanakirjasta, joten tämä sääntö hylätään.

Yksi parannuksista suffiksien katkaisualgoritmeihin on suffiksin ja päätteen korvaamisen käyttö. Kuten lyhennyssääntö, korvaussääntö korvaa jälkiliitteen tai päätteen vaihtoehtoiseen. Esimerkiksi voi olla sääntö, joka korvaa "ies":llä "y". Koska katkaisusäännöt johtavat sanastossa olemattomaan termiin, korvaussäännöt ratkaisevat tämän ongelman. Tässä esimerkissä "friendlies" muunnetaan sanaksi "ystävällinen" sanan "friendl" sijaan.

Tyypillisesti näiden sääntöjen soveltaminen on syklistä tai rekursiivista. Tämän esimerkin korvaussäännön ensimmäisen soveltamisen jälkeen algoritmi valitsee seuraavan säännön "ystävälliselle" termille, minkä seurauksena "ly"-liitteen lyhennyssääntö tunnistetaan ja tunnistetaan. Siten termistä "ystävät" tulee termi "ystävällinen" korvaussäännön kautta, josta katkaisusäännön soveltamisen jälkeen tulee termi "ystävä".

Tämä esimerkki auttaa havainnollistamaan eroa sääntöpohjaisen menetelmän ja raakavoimamenetelmän välillä . Kattavan haun avulla algoritmi etsii termiä "ystävät" satojen tuhansien taivutussanamuotojen joukosta ja löytää ihanteellisesti vastaavan varren "ystävä". Sääntöpohjaisessa menetelmässä säännöt suoritetaan peräkkäin, jolloin tuloksena on sama ratkaisu. Todennäköisesti sääntöihin perustuva menetelmä on nopeampi.

Kiinnitä varsiosat

Kielitieteessä yleisimmät liitteiden termit ovat suffiksi ja etuliite. Suffiksia tai päätteitä käsittelevien lähestymistapojen lisäksi jotkut niistä käsittelevät myös etuliitteitä. Esimerkiksi englanninkieliselle sanalle infinitely tämä menetelmä määrittää , että sanan alussa oleva "in"-rakenne on etuliite, ja se voidaan poistaa sanan varren saamiseksi. Monet edellä mainitut menetelmät käyttävät myös tätä lähestymistapaa. Esimerkiksi päätteen katkaisualgoritmi voi käsitellä sekä päätteitä että päätteitä sekä etuliitteitä, jolloin sitä kutsutaan eri tavalla ja se noudattaa tätä lähestymistapaa. Tutkimusta useiden eurooppalaisten kielten liitevarsista löytyy julkaisusta ( Jongejan et al 2009 ).

Lemmatisointialgoritmit

Monimutkaisempi lähestymistapa sanan varren määrittelyongelman ratkaisemiseen on lemmatisointi . Ymmärtääksesi, kuinka lemmatisaatio toimii, sinun on tiedettävä, kuinka sanan eri muodot luodaan. Useimmat sanat muuttuvat, kun niitä käytetään eri kielioppimuodoissa . Sanan loppu korvataan kieliopillisella päätteellä, ja tämä johtaa alkuperäisen sanan uuteen muotoon. Lemmatisaatio suorittaa käänteisen muunnoksen: se korvaa kieliopillisen päätteen suffiksilla tai alkumuodon päätteellä [4] .

Lemmatisointiin kuuluu myös sanan puheosan määrittäminen ja erilaisten normalisointisääntöjen soveltaminen jokaiseen puheenosaan. Puheenosan määrittely tapahtuu ennen varren etsimistä, koska joidenkin kielten rungon säännöt riippuvat tietyn sanan puheosasta.

Tämä lähestymistapa riippuu suuresti leksikaalisen kategorian (puheenosan) tarkasta määritelmästä. Vaikka joidenkin leksikaalisten kategorioiden normalisointisäännöt ovat päällekkäisiä, väärän kategorian määrittäminen tai oikean luokan määrittämättä jättäminen kumoaa tämän lähestymistavan edun katkaisualgoritmiin verrattuna. Pääajatuksena on, että jos runkoosa saa enemmän tietoa käsiteltävästä sanasta, se voi soveltaa tarkempia normalisointisääntöjä.

Ripple-down sääntöjen lähestymistapa

Ripple-down säännöt suunniteltiin alun perin tiedon hankkimiseen ja sääntöpohjaisten järjestelmien ylläpitämiseen. Tässä lähestymistavassa tietoa hankitaan nykyisen kontekstin perusteella ja sitä lisätään asteittain. Säännöt luodaan luokittelemaan tapauksia, jotka sopivat tiettyyn kontekstiin.

Toisin kuin tavalliset luokitussäännöt, Ripple-down säännöt käyttävät poikkeuksia olemassa oleviin sääntöihin, joten muutokset liittyvät vain säännön kontekstiin eivätkä vaikuta muihin. Tiedonhankintatyökalut auttavat löytämään ja muokkaamaan ristiriitaisia ​​sääntöjä. Tässä on yksinkertainen esimerkki Ripple-down- säännöstä :

if a ^ b then c except if d then e else if f ^ g then h

Tämä sääntö voidaan tulkita seuraavasti: "jos a ja b ovat tosia, niin päätämme c , paitsi jos d ei ole totta. Jos d on tosi (poikkeus), teemme päätöksen e . Jos a ja b eivät ole tosia, siirrymme toiseen sääntöön ja päätämme h ovatko f ja g tosia." Tämä sääntömuoto ratkaisee lemmatisaatio-ongelman erittäin hyvin [5] .

Poikkeuksen luomiseksi sääntöön algoritmin on ensin määritettävä sana, joka aiheutti poikkeuksen. Sen jälkeen määritetään näiden kahden sanan väliset erot. Säännön poikkeusehto vastaa näitä eroja.

Stokastiset algoritmit

Stokastiset algoritmit liittyvät sanan juurimuodon todennäköisyyspohjaiseen määritykseen. Nämä algoritmit rakentavat todennäköisyysmallin ja niitä opetetaan käyttämällä juuri- ja taivutusmuotojen vastaavuustaulukkoa. Tämä malli esitetään yleensä monimutkaisten kielellisten sääntöjen muodossa, jotka ovat luonteeltaan samanlaisia ​​kuin katkaisu- ja lemmatisointialgoritmeissa käytetyt säännöt. Stemming tehdään ottamalla käyttöön modifioituja muotoja mallin kouluttamiseksi ja generoimalla juurimuoto mallin sisäisten sääntöjen mukaan, paitsi että päätökset liittyvät sopivimman säännön tai sääntösarjan soveltamiseen sekä valintaan. sanan varresta, käytetään sillä perusteella, että tuloksena olevalla oikealla sanalla on suurin todennäköisyys (väärillä sanoilla on pienin todennäköisyys).

Jotkut lemmatisointialgoritmit ovat stokastisia siinä mielessä, että sana voi kuulua useisiin puheen osiin eri todennäköisyyksillä. Nämä algoritmit voivat myös ottaa huomioon ympäröivät sanat, joita kutsutaan kontekstiksi. Kontekstittomat kieliopit eivät ota huomioon muita tietoja. Kummassakin tapauksessa kullekin mahdolliselle puheosalle todennäköisyyden osoittamisen jälkeen valitaan suurin todennäköisyys omaava puheen osa sekä vastaavat säännöt normalisoidun muodon saamiseksi.

Tilastolliset algoritmit

N-grammianalyysi

Jotkut runkoalgoritmit käyttävät N-grammianalyysiä valitakseen sopivan rungon sanalle [6] .

Johdettu perustuu tekstikorpukseen

Yksi klassisten varsiosien (kuten Porterin varsiosien) suurimmista haitoista on, että ne eivät usein tee eroa sanojen välillä, joilla on samanlainen syntaksi mutta täysin erilaiset merkitykset. Esimerkiksi sanat "uutiset" ja "uusi" pelkistyvät sanarunkoon "uusi" johdetuksen seurauksena, vaikka nämä sanat kuuluvatkin eri leksikaalisiin luokkiin. Toinen ongelma on se, että jotkin johdosalgoritmit voivat sopia yhteen korpukseen ja aiheuttaa liikaa virheitä toiseen. Esimerkiksi sanoilla "osake", "osakkeet", "sukka" jne. on erityinen merkitys The Wall Street Journal -sanomalehden teksteissä . Korpuspohjaisen johdostuksen pääideana on luoda ekvivalenssiluokkia klassisten varsiosien sanoille ja sitten "murtaa" joitain sanoja yhdisteltynä niiden esiintymisen perusteella. Se auttaa myös estämään tunnettuja Porterin algoritmin törmäyksiä, kuten "policy/police", koska mahdollisuus näiden sanojen esiintymiseen yhdessä on melko pieni [7] .

Vastaavat algoritmit

Tällaiset algoritmit käyttävät varsitietokantaa (esimerkiksi joukkoa asiakirjoja, jotka sisältävät sanarunkoja). Nämä varret eivät välttämättä vastaa tavallisia sanoja, useimmissa tapauksissa varsi on osamerkkijono (esimerkiksi englannin kielessä "brows" on osamerkkijono sanoissa "selaa" ja "selaa"). Määrittääkseen sanan juuren algoritmi yrittää sovittaa sen tietokannasta peräisin oleviin varseihin soveltaen erilaisia ​​rajoituksia, esimerkiksi haetun varren pituuteen sanassa suhteessa itse sanan pituuteen (esim. Esimerkiksi lyhyt etuliite "olla", joka on tällaisten sanojen, kuten "olla", "ollut" ja "oleminen" perusta, ei muodosta "vierellä" -perustaa).

Hybridilähestymistapoja

Hybridilähestymistavat käyttävät kahta tai useampaa edellä kuvatuista menetelmistä. Yksinkertainen esimerkki on suffiksipuu -algoritmi, joka työnsä alussa käyttää hakutaulukoita alkutietojen hankkimiseen tyhjentävällä haulla. Kuitenkin sen sijaan, että tallennettaisiin koko sanavälisten suhteiden kompleksi tietylle kielelle, hakutaulukkoa käytetään tallentamaan pieni määrä "usein poikkeuksia" (esimerkiksi englannin kielelle "run => run"). Jos sana ei ole poissulkemisluettelossa, tuloksen saamiseksi käytetään päätteen katkaisu- tai lemmatisointialgoritmeja.

Kielet

Kieliominaisuudet

Vaikka suurin osa tämän alan varhaisesta tieteellisestä toiminnasta keskittyi englannin kieleen (enimmäkseen Porter-algoritmia käyttäen), myöhemmin työ on omistettu monille muille kielille [8] [9] [10] [11] [12] .

Hepreaa ja arabiaa pidetään edelleen vaikeina kielinä oppimisen johdosta. Englannin kielen varsinaiset algoritmit ovat melko triviaaleja (vain satunnaisia ​​ongelmia ilmenee, esimerkiksi sana "dries" on verbin "dry" yksikön nykyisen ajan kolmannen persoonan muoto tai sana "axes" on monikko sanasta "axe" ja " akseli"); mutta varsiosien suunnittelu on vaikeampaa, kun valitaan monimutkaisempi kohdekieli, nimittäin kieli, jolla on monimutkaisempi morfologia ja oikeinkirjoitus. Esimerkiksi italian kielen varsiosat ovat monimutkaisempia kuin englannin varsi (verbien taivutusmuotojen suuren määrän vuoksi), venäjän kielen toteutukset ovat vieläkin vaikeampia (suuri määrä substantiivien käänteitä), heprean kielessä ne. ovat vieläkin monimutkaisempia (ei-konkatenatiivisen morfologian vuoksi). , kirjoittaminen ilman vokaalia ja tarve etuliitteiden katkaisualgoritmeille: Heprean sanarungot voivat olla kaksi, kolme tai neljä merkkiä pitkiä, mutta eivät enää) ja niin edelleen.

Monikieliset varsinaiset algoritmit soveltavat kahden tai useamman kielen morfologisia sääntöjä samanaikaisesti.

Venäjän kielen johdettu

Venäjän kieli kuuluu taivutussynteettisten kielten ryhmään, toisin sanoen kieliin, joissa sananmuodostus on vallitseva käyttämällä liitteitä , jotka yhdistävät useita kieliopillisia merkityksiä kerralla (esimerkiksi laji  - pääte й osoittaa samalla yksikön, maskuliinisen sukupuolen ja nimimerkki), joten tämä kieli sallii varsinaisten algoritmien käytön. Venäjän kielessä on monimutkainen morfologinen sanojen muutos, mikä aiheuttaa virheitä varsinaista käyttöä käytettäessä. Ratkaisuna tähän ongelmaan voidaan käyttää klassisten varsinaisten algoritmien ohella lemmatisaatioalgoritmeja, jotka tuovat sanat alkuperäiseen perusmuotoon.

Tarkastellaan eri periaatteisiin perustuvia runsaiden suosituimpia toteutuksia, jotka mahdollistavat olemattomien sanojen käsittelyn venäjän kielelle.

Stemmer Porter

Porterin stemmerin pääidea on, että sananmuodostusliitteitä on rajoitettu määrä, ja sanajohdus tapahtuu ilman kantapohjaa: vain joukko olemassa olevia jälkiliitteitä ja manuaalisesti asetettuja sääntöjä.

Algoritmi koostuu viidestä vaiheesta. Jokaisessa vaiheessa leikataan sanaa muodostava pääte ja loppuosa tarkistetaan sääntöjen noudattamisen suhteen (esimerkiksi venäjänkielisten sanojen varren tulee sisältää vähintään yksi vokaali). Jos tuloksena oleva sana täyttää säännöt, siirtyy seuraavaan vaiheeseen. Jos ei, algoritmi valitsee toisen loppuliitteen leikkaamista varten. Ensimmäisessä vaiheessa suurin muodon muodostava pääte leikataan pois, toisessa - kirjain "i", kolmannessa - sanan muodostava jälkiliite, neljännessä - superlatiivimuotojen jälkiliitteet, "ь" ja toinen kahdesta "n":stä [13] .

Tämä algoritmi katkaisee sanaa usein enemmän kuin on tarpeen, mikä vaikeuttaa sanan oikean varren saamista, esim. sänky-> katto (tässä tapauksessa todella muuttumaton osa on bed , mutta varsi valitsee pisimmän morfeemin sanalle poisto). Porterin varsi ei myöskään selviä kaikenlaisista sanajuuren muutoksista (esim. vokaalien pudotuksista ja sujuvasta vokaalista).

Stemka

Tämän johdosalgoritmin (analysaattorin) kehitti Andrey Kovalenko vuonna 2002. Se perustuu todennäköisyysmalliin: analysaattori jäsentää harjoitustekstin sanat pareiksi "kaksi viimeistä kirjainta" + "pääte", ja jos tällainen pari on jo mallissa, sen painoa kasvatetaan. , muuten se lisätään malliin. Tämän jälkeen tuloksena oleva tietojoukko asetetaan painon mukaan laskevaan järjestykseen ja mallit, joiden todennäköisyys on pienempi kuin 1/10000, leikataan pois. Tulos - joukko mahdollisia päätteitä edeltävien merkkien ehdoilla - käännetään sanamuotojen skannaamisen helpottamiseksi "oikealta vasemmalle" ja esitetään äärellisen automaatin siirtymätaulukkona. Jäsennyksessä sana skannataan rakennettujen siirtymätaulukoiden mukaan. Algoritmiin lisättiin myös erityinen sääntö, jonka mukaan muuttumattoman varren tulee sisältää vähintään yksi vokaali [14] .

Esitetty analysaattori on saatavilla lähdeteksteinä ja sitä voidaan käyttää vapaassa muodossa lähdeviittauksella [15] [16] .

MyStem

MyStem-varren kehitti Ilja Segalovich vuonna 1998. Se on nyt Yandexin omaisuutta [ 17] . Ensimmäisessä vaiheessa syötesanassa olevaa suffiksipuuta käyttämällä määritetään mahdolliset rajat varren ja päätteen välillä, minkä jälkeen jokaisen potentiaalisen varren (pisimmästä alkaen) binäärihaku kantapuussa tarkistaa sen olemassaolon sanakirjasta tai sitä lähinnä olevien varsien löytämisestä (läheisyysmitta on yhteisen "hännän" pituus). Jos sana on sanakirjasana, algoritmi päättyy, muuten se siirtyy seuraavaan osioon.

Jos kantamuunnos ei vastaa mitään "lähimmäistä" sanakirjan kantaa, tämä tarkoittaa, että analysoitua sanaa, jolla on tämä kantamuunnelma, ei ole sanakirjassa. Sitten "lähimmän" sanastorungon olemassa olevan varren, päätteen ja mallin perusteella luodaan hypoteettinen malli annetun sanan muuttamisesta. Hypoteesi muistetaan, ja jos se on jo rakennettu aikaisemmin, se lisää painoaan. Jos sanaa ei koskaan löydy sanakirjasta, vaaditun yleisen varren päätteen pituutta pienennetään yhdellä, puusta etsitään uusia hypoteeseja. Kun yhteisen "häntä" pituus saavuttaa 2, haku pysähtyy ja hypoteesit asetetaan paremmuusjärjestykseen tuottavuuden mukaan: jos hypoteesin paino on viisi kertaa tai enemmän pienempi kuin suurin paino, tällainen hypoteesi eliminoituu. Stemmerin työn tuloksena on tuloksena oleva hypoteesijoukko olemattomalle sanalle tai yksi hypoteesi sanakirjasanalle [18] .

Varsi voidaan käyttää kaupallisiin tarkoituksiin; poikkeuksia ovat: roskapostin luominen ja jakelu, sivustojen hakukoneoptimointi sekä Yandexin palveluita ja tuotteita vastaavien tuotteiden ja palveluiden kehittäminen [17] . Lähdekoodeja ei jaeta [19] . Asenna vain lataamalla ja purkamalla arkisto [20] .

Virhetyypit

Stemming- algoritmeissa on kahdenlaisia ​​virheitä: overstemming ja understemming . Ylivaroitus  on ensimmäisen tyyppinen virhe , kun taivutussanat liitetään erehdyksessä yhteen lemmaan. Alikirjoitus  on toisen tyyppinen virhe , kun yhden sanan morfologiset muodot liitetään eri lemmoihin. Stemming-algoritmit yrittävät minimoida nämä molemmat virheet, vaikka yhden virhetyypin vähentäminen voi lisätä toista [21] .

Tarkastellaan tämän tyyppisiä virheitä Porterin johdatusalgoritmin työssä. overstemming error case : tämä algoritmi yhdistää sanat "universal", "university" ja "universe" varteen "univers" kanssa; vaikka nämä sanat ovat etymologisesti erilaisia, niiden nykyiset merkitykset viittaavat eri alueisiin, joten ei ole oikein käsitellä niitä synonyymeinä. Aliarvostusvirhetapaus : Porterin algoritmi sovittaa sanat, jotka on johdettu samasta lemmästä eri varsilla, ja liittää ne siksi eri lemmoihin - "alumni" → "alumni", "alumni" → "alumni", "alumni " / " alumnae" → "alumna" (nämä sanat säilyttivät morfologiansa latinalaisia ​​piirteitä, mutta näitä lähes synonyymejä ei yhdistetty varsilla).

Sovellus

Varsinaista sanamuotoa käytetään likimääräisenä menetelmänä samankaltaisten perusmerkityksien sanojen ryhmittelyyn. Esimerkiksi teksti, jossa mainitaan "narsissit", liittyy todennäköisesti läheisesti tekstiin, jossa mainitaan "narsissit" (ilman "s"). Mutta joissakin tapauksissa sanoilla, joilla on sama varsi, on idiomaattisia merkityksiä, jotka eivät liity toisiinsa: käyttäjän tekemä haku asiakirjoista, jotka sisältävät sanan "markkinointi", palauttaa myös asiakirjoja, joissa mainitaan "markkinat", mutta jotka eivät sisällä sanaa "markkinointi" (mikä todennäköisesti ei vastaamaan käyttäjän tietotarpeita ).

Tietojen etsiminen

Stemming on melko yleinen hakukoneissa . Kuitenkin suhteellisen pian stemmingin tehokkuus englannin kielen hakukoneissa tunnustettiin hyvin rajalliseksi, ja tämä sai nuoret tiedonhaun alan tutkijat ymmärtämään, että stemming ei ole yleisesti sovellettavissa [22] [23] . Hakukoneissa stemmingin sijaan voidaan käyttää lähestymistapaa, joka perustuu N-grammien etsimiseen varsien sijaan. Lisäksi viimeaikaiset tutkimukset ovat osoittaneet suuria etuja N-grammien haussa muilla kielillä kuin englannin [24] [25] .

Verkkotunnusanalyysi

Analysoitaessa aihealueita stemmingin avulla näistä alueista rakennetaan sanakirjoja [26] .

Käyttö kaupallisissa tuotteissa

Monet kaupalliset yritykset ovat käyttäneet varsiosia ainakin 1980-luvulta lähtien ja ovat kehittäneet algoritmisia ja leksikaalisia varsiosia monille kielille [27] [28] .

Lumipallovarsia verrattiin kaupallisiin. Tulokset ovat olleet ristiriitaisia ​​[29] [30] .

Googlen hakukone on käyttänyt stemmingiä vuodesta 2003 [31] . Aikaisemmin haku sanalla "kala" ei antanut tuloksia, jotka sisälsivät sanan "kalastus".

Katso myös

Muistiinpanot

  1. Lovins, 1968 , s. 22-31.
  2. Y-stemmer, Viatcheslav Yatsko .
  3. Porter et ai, 1980 , ss. 130-137.
  4. Plisson et al, 2004 , s. 1-2.
  5. Plisson et al, 2004 , s. 2-3.
  6. Smirnov, 2008 , s. 3.
  7. Smirnov, 2008 , s. 4-5.
  8. Ljiljana et al, 2007 .
  9. Jacques, 2006 .
  10. Popovic et ai, 1992 , ss. 384-390.
  11. Anna Tordai et al, 2005 .
  12. Viera et al, 2007 , s. 26.
  13. Venäläinen alkualgoritmi .
  14. Gubin et ai., 2006 , s. 2-3.
  15. NLPub: Stemka .
  16. Stemka-analysaattorin virallinen verkkosivusto .
  17. 1 2 Mystemin käyttöoikeussopimus .
  18. Segalovich, 2003 , s. 4-5.
  19. NLPub: Mystem .
  20. Mystemin virallinen verkkosivusto .
  21. Paice, 1994 .
  22. Baeza-Yates et ai., 1999 .
  23. Manning et ai., 2011 , s. 53-56.
  24. Kamps et al, 2004 , s. 152-165.
  25. Airio et al, 2006 , s. 249-271.
  26. Frakes et ai, 1998 , ss. 129-141.
  27. Kielilaajennuspaketit .
  28. Monikielisten ratkaisujen rakentaminen käyttämällä Sharepointin tuotteita ja teknologioita .
  29. Stephen Tomlinson, 2003 .
  30. Stephen Tomlinson, 2004 .
  31. Google aloittaa automaattiset haut .

Kirjallisuus

Viitteet

  • V.A. Yatsko. Varren kehityksen piirteet  (eng.) . Tieteen symboli. s. 103-105 . Omega Science (2016). Käyttöönottopäivä: 27.4.2022.
  • Porter, Martin F. Suffix Stripping  -algoritmi (neopr.)  // Ohjelma: elektroninen kirjasto ja tietojärjestelmät. - 1980. - T. 14 , nro 3 . Arkistoitu alkuperäisestä 28. toukokuuta 2007.
  • Baeza-Yates R., Ribeiro-Neto B. Nykyaikainen tiedonhaku. - Addison-Wesley, 1999. - ISBN 0-201-39829-X .
  • Manning K., Raghavan P., Schütze H. Johdatus tiedonhakuun. - Williams, 2011. - 512 s. - ISBN 978-5-8459-1623-5 .
  •  Venäjän varsinainen algoritmi . Haettu: 26. tammikuuta 2014.

Lue lisää

  • Dawson, JL (1974); Suffix Removal for Word Conflation , Bulletin of the Association for Literary and Linguistic Computing, 2(3): 33-46
  • Frakes, WB (1984); Term Conflation for Information Retrieval , Cambridge University Press
  • Frakes, WB & Fox, CJ (2003); Liitteenpoistoalgoritmien vahvuus ja samankaltaisuus , SIGIR Forum, 37:26-30
  • Frakes, WB (1992); Stemming-algoritmit, tiedonhaku: tietorakenteet ja algoritmit , Upper Saddle River, NJ: Prentice-Hall, Inc.
  • Hafer, M.A. & Weiss, S.F. (1974); Sanojen segmentointi kirjainten seuraajien mukaan , Tietojenkäsittely ja hallinta 10 (11/12), 371-386
  • Harman, D. (1991); Kuinka tehokas jälkiliite on? , Journal of the American Society for Information Science 42 (1), 7-15
  • Hull, D. A. (1996); Stemming Algorithms - Case Study for Detailed Evaluation , JASIS, 47(1): 70-84
  • Hull, D. A. & Grefenstette, G. (1996); Yksityiskohtainen analyysi englanninkielisistä alkualgoritmeista , Xeroxin tekninen raportti
  • Kraaij, W. & Pohlmann, R. (1996); Stemmingin katsominen Recall Enhancementina julkaisussa Frei, H.-P.; Harman, D.; Schauble, P.; ja Wilkinson, R. (toim.); Zürichissä 18.-22. elokuuta pidetyn 17. ACM SIGIR -konferenssin julkaisut , s. 40-48
  • Krovetz, R. (1993); Morfologian tarkastelu päättelyprosessina julkaisussa Proceedings of ACM-SIGIR93 , pp. 191-203
  • Lennon, M.; Pierce, D.S.; Tarry, B.D.; & Willett, P. (1981); Joidenkin tietojen haun sekoitusalgoritmien arviointi , Journal of Information Science, 3: 177-183
  • Lovins, JB (1968); Stemming-algoritmin kehittäminen , mekaaninen käännös ja laskennallinen lingvistiikka, 11, 22-31
  • Jenkins, Marie-Claire; ja Smith, Dan (2005); Konservatiivinen johdettu haku ja indeksointi
  • Paice, CD (1990); Toinen Stemmer , SIGIR Forum, 24:56-61
  • Popovic, Mirko; ja Willett, Peter (1992); The Effectiveness of Stemming for Natural-Language Access to Sloveni Textual Data , Journal of the American Society for Information Science, osa 43, Issue 5 (kesäkuu), s. 384-390
  • Savoy, J. (1993); Ranskankielisten sanojen juurtuminen kielioppiluokkien perusteella Journal of the American Society for Information Science, 44(1), 1-9
  • Ulmschneider, John E.; & Doszkocs, Tamas (1983); Käytännön varsipohjainen algoritmi online- hakuavulle  (linkki ei saatavilla) , Online Review, 7(4), 301-318
  • Xu, J.; & Croft, WB (1998); Korpuspohjainen stemming käyttäen Coocurrence of Word Variants , ACM Transactions on Information Systems, 16(1), 61-81

Linkit