Skip to content

Instantly share code, notes, and snippets.

@boamaod
Created October 4, 2018 01:03
Show Gist options
  • Save boamaod/7c515a944c126252fac5226bab0a2fa3 to your computer and use it in GitHub Desktop.
Save boamaod/7c515a944c126252fac5226bab0a2fa3 to your computer and use it in GitHub Desktop.
Üle jala märksõnade tuvastaja
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# https://github.com/estnltk/pyvabamorf
# pip install pyvabamorf
import sys, codecs, string
from pyvabamorf import analyze
from pprint import pprint
# https://www.filosoft.ee/html_morf_et/morfoutinfo.html#2
IGN_TYYP = ['J', 'Z', 'D', 'P', "D", "I", "N", "O", "X", "U", "C", "V", "U"]
# https://github.com/kristel-/estonian-stopwords/blob/master/estonian-stopwords-lemmas.txt
IGN_WORD = ["olema", "tulema", "arvama", "tahtma", "saama", "tegema", "minema", "rääkima", "teadma", "võtma", "käima", "või", "oma", "ütlema", "all", "alla", "allapoole", "allpool", "alt", "altpoolt", "eel", "eespool", "enne", "hommikupoole", "hoolimata", "ilma", "kaudu", "keset", "kesk", "kohe", "koos", "kuhupoole", "kuni", "kuspool", "kustpoolt", "kõige", "käsikäes", "lappi", "ligi", "läbi", "mööda", "paitsi", "peale", "pealepoole", "pealpool", "pealt", "pealtpoolt", "piki", "pikku", "piku", "pikuti", "põiki", "pärast", "päri", "risti", "sealpool", "sealtpoolt", "seespool", "seltsis", "siiapoole", "siinpool", "siitpoolt", "sinnapoole", "sissepoole", "taga", "tagantpoolt", "tagapidi", "tagapool", "taha", "tahapoole", "teispool", "teispoole", "tänu", "tükkis", "vaatamata", "vastu", "väljapoole", "väljaspool", "väljastpoolt", "õhtupoole", "ühes", "ühestükis", "ühestükkis", "ülalpool", "ülaltpoolt", "üle", "ülespoole", "ülevalpool", "ülevaltpoolt", "ümber", "ümbert", "aegu", "aegus", "alguks", "algul", "algule", "algult", "alguni", "all", "alla", "alt", "alul", "alutsi", "arvel", "asemel", "asemele", "eel", "eeli", "ees", "eesotsas", "eest", "eestotsast", "esitsi", "ette", "etteotsa", "haaval", "heaks", "hoolimata", "hulgas", "hulgast", "hulka", "jalgu", "jalus", "jalust", "jaoks", "jooksul", "juurde", "juures", "juurest", "jälil", "jälile", "järel", "järele", "järelt", "järgi", "kaasas", "kallal", "kallale", "kallalt", "kamul", "kannul", "kannule", "kannult", "kaudu", "kaupa", "keskel", "keskele", "keskelt", "keskis", "keskpaiku", "kestel", "kestes", "kilda", "killas", "killast", "kimpu", "kimpus", "kiuste", "kohal", "kohale", "kohalt", "kohaselt", "kohe", "kohta", "koos", "korral", "kukil", "kukile", "kukilt", "kulul", "kõrva", "kõrval", "kõrvale", "kõrvalt", "kõrvas", "kõrvast", "käekõrval", "käekõrvale", "käekõrvalt", "käes", "käest", "kätte", "külge", "küljes", "küljest", "küüsi", "küüsis", "küüsist", "ligi", "ligidal", "ligidale", "ligidalt", "aegu", "aegus", "alguks", "algul", "algule", "algult", "alguni", "all", "alla", "alt", "alul", "alutsi", "arvel", "asemel", "asemele", "eel", "eeli", "ees", "eesotsas", "eest", "eestotsast", "esitsi", "ette", "etteotsa", "haaval", "heaks", "hoolimata", "hulgas", "hulgast", "hulka", "jalgu", "jalus", "jalust", "jaoks", "jooksul", "juurde", "juures", "juurest", "jälil", "jälile", "järel", "järele", "järelt", "järgi", "kaasas", "kallal", "kallale", "kallalt", "kamul", "kannul", "kannule", "kannult", "kaudu", "kaupa", "keskel", "keskele", "keskelt", "keskis", "keskpaiku", "kestel", "kestes", "kilda", "killas", "killast", "kimpu", "kimpus", "kiuste", "kohal", "kohale", "kohalt", "kohaselt", "kohe", "kohta", "koos", "korral", "kukil", "kukile", "kukilt", "kulul", "kõrva", "kõrval", "kõrvale", "kõrvalt", "kõrvas", "kõrvast", "käekõrval", "käekõrvale", "käekõrvalt", "käes", "käest", "kätte", "külge", "küljes", "küljest", "küüsi", "küüsis", "küüsist", "ligi", "ligidal", "ligidale", "ligidalt", "lool", "läbi", "lähedal", "lähedale", "lähedalt", "man", "mant", "manu", "meelest", "mööda", "nahas", "nahka", "nahkas", "najal", "najale", "najalt", "nõjal", "nõjale", "otsa", "otsas", "otsast", "paigale", "paigu", "paiku", "peal", "peale", "pealt", "perra", "perrä", "pidi", "pihta", "piki", "pikku", "pool", "poole", "poolest", "poolt", "puhul", "puksiiris", "pähe", "päralt", "päras", "pärast", "päri", "ringi", "ringis", "risust", "saadetusel", "saadik", "saatel", "saati", "seas", "seast", "sees", "seest", "sekka", "seljataga", "seltsi", "seltsis", "seltsist", "sisse", "slepis", "suhtes", "šlepis", "taga", "tagant", "tagantotsast", "tagaotsas", "tagaselja", "tagasi", "tagast", "tagutsi", "taha", "tahaotsa", "takka", "tarvis", "tasa", "tuuri", "tuuris", "tõttu", "tükkis", "uhal", "vaatamata", "vahel", "vahele", "vahelt", "vahepeal", "vahepeale", "vahepealt", "vahetsi", "varal", "varale", "varul", "vastas", "vastast", "vastu", "veerde", "veeres", "viisi", "võidu", "võrd", "võrdki", "võrra", "võrragi", "väel", "väele", "vältel", "väärt", "väärtki", "äärde", "ääre", "ääres", "äärest", "ühes", "üle", "ümber", "ümbert", "a", "abil", "aina", "ainult", "alalt", "alates", "alati", "alles", "b", "c", "d", "e", "eales", "ealeski", "edasi", "edaspidi", "eelkõige", "eemal", "ei", "eks", "end", "enda", "enese", "ennem", "esialgu", "f", "g", "h", "hoopis", "i", "iganes", "igatahes", "igati", "iial", "iialgi", "ikka", "ikkagi", "ilmaski", "iseenda", "iseenese", "iseenesest", "isegi", "j", "jah", "ju", "juba", "juhul", "just", "järelikult", "k", "ka", "kah", "kas", "kasvõi", "keda", "kestahes", "kogu", "koguni", "kohati", "kokku", "kuhu", "kuhugi", "kuidagi", "kuidas", "kunagi", "kus", "kusagil", "kusjuures", "kuskil", "kust", "kõigepealt", "küll", "l", "liiga", "lisaks", "m", "miks", "mil", "millal", "millalgi", "mispärast", "mistahes", "mistõttu", "mitte", "muide", "muidu", "muidugi", "muist", "mujal", "mujale", "mujalt", "mõlemad", "mõnda", "mõne", "mõnikord", "n", "nii", "niikaua", "niimoodi", "niipaljuke", "niisama", "niisiis", "niivõrd", "nõnda", "nüüd", "o", "omaette", "omakorda", "omavahel", "ometi", "p", "palju", "paljuke", "palju-palju", "peaaegu", "peagi", "peamiselt", "pigem", "pisut", "praegu", "päris", "r", "rohkem", "s", "samas", "samuti", "seal", "sealt", "sedakorda", "sedapuhku", "seega", "seejuures", "seejärel", "seekord", "seepärast", "seetõttu", "sellepärast", "seni", "sestap", "siia", "siiani", "siin", "siinkohal", "siis", "siiski", "siit", "sinna", "suht", "š", "z", "ž", "t", "teel", "teineteise", "tõesti", "täiesti", "u", "umbes", "v", "w", "veel", "veelgi", "vist", "võibolla", "võib-olla", "väga", "vähemalt", "välja", "väljas", "väljast", "õ", "ä", "ära", "ö", "ü", "ühtlasi", "üksi", "ükskõik", "ülal", "ülale", "ülalt", "üles", "ülesse", "üleval", "ülevalt", "ülimalt", "üsna", "x", "y", "aga", "ega", "ehk", "ehkki", "elik", "ellik", "enge", "ennegu", "ent", "et", "ja", "justkui", "kui", "kuid", "kuigi", "kuivõrd", "kuna", "kuni", "kut", "mistab", "muudkui", "nagu", "nigu", "ning", "olgugi", "otsekui", "otsenagu", "selmet", "sest", "sestab", "vaid", "või", "aa", "adaa", "adjöö", "ae", "ah", "ahaa", "ahah", "ah-ah-ah", "ah-haa", "ahoi", "ai", "aidaa", "aidu-raidu", "aih", "aijeh", "aituma", "aitäh", "aitüma", "ammuu", "amps", "ampsti", "aptsih", "ass", "at", "ata", "at-at-at", "atsih", "atsihh", "auh", "bai-bai", "bingo", "braavo", "brr", "ee", "eeh", "eh", "ehee", "eheh", "eh-eh-hee", "eh-eh-ee", "ehei", "ehh", "ehhee", "einoh", "ena", "ennäe", "ennäh", "fuh", "fui", "fuih", "haa", "hah", "hahaa", "hah-hah-hah", "halleluuja", "hallo", "halloo", "hass", "hee", "heh", "he-he-hee", "hei", "heldeke(ne)", "heureka", "hihii", "hip-hip-hurraa", "hmh", "hmjah", "hoh-hoh-hoo", "hohoo", "hoi", "hollallaa", "hoo", "hoplaa", "hopp", "hops", "hopsassaa", "hopsti", "hosianna", "huh", "huidii", "huist", "hurjah", "hurjeh", "hurjoh", "hurjuh", "hurraa", "huu", "hõhõh", "hõi", "hõissa", "hõissassa", "hõk", "hõkk", "häh", "hä-hä-hää", "hüvasti", "ih-ah-haa", "ih-ih-hii", "ii-ha-ha", "issake", "issakene", "isver", "jaa-ah", "ja-ah", "jaah", "janäe", "jeeh", "jeerum", "jeever", "jessas", "jestas", "juhhei", "jumalaga", "jumalime", "jumaluke", "jumalukene", "jutas", "kaaps", "kaapsti", "kaasike", "kae", "kalps", "kalpsti", "kannäe", "kanäe", "kappadi", "kaps", "kapsti", "karkõmm", "karkäuh", "karkääks", "karkääksti", "karmauh", "karmauhti", "karnaps", "karnapsti", "karniuhti", "karpartsaki", "karpauh", "karpauhti", "karplauh", "karplauhti", "karprauh", "karprauhti", "karsumdi", "karsumm", "kartsumdi", "kartsumm", "karviuh", "karviuhti", "kaske", "kassa", "kauh", "kauhti", "keh", "keksti", "kepsti", "khe", "khm", "kih", "kiiks", "kiiksti", "kiis", "kiiss", "kikerii", "kikerikii", "kili", "kilk", "kilk-kõlk", "kilks", "kilks-kolks", "kilks-kõlks", "kill", "killadi", "killadi|-kolladi", "killadi-kõlladi", "killa-kolla", "killa-kõlla", "kill-kõll", "kimps-komps", "kipp", "kips-kõps", "kiriküüt", "kirra-kõrra", "kirr-kõrr", "kirts", "klaps", "klapsti", "klirdi", "klirr", "klonks", "klops", "klopsti", "kluk", "klu-kluu", "klõks", "klõksti", "klõmdi", "klõmm", "klõmpsti", "klõnks", "klõnksti", "klõps", "klõpsti", "kläu", "kohva-kohva", "kok", "koks", "koksti", "kolaki", "kolk", "kolks", "kolksti", "koll", "kolladi", "komp", "komps", "kompsti", "kop", "kopp", "koppadi", "kops", "kopsti", "kossu", "kotsu", "kraa", "kraak", "kraaks", "kraaps", "kraapsti", "krahh", "kraks", "kraksti", "kraps", "krapsti", "krauh", "krauhti", "kriiks", "kriiksti", "kriips", "kriips-kraaps", "kripa-krõpa", "krips-kraps", "kriuh", "kriuks", "kriuksti", "kromps", "kronk", "kronks", "krooks", "kruu", "krõks", "krõksti", "krõpa", "krõps", "krõpsti", "krõuh", "kräu", "kräuh", "kräuhti", "kräuks", "kss", "kukeleegu", "kukku", "kuku", "kulu", "kurluu", "kurnäu", "kuss", "kussu", "kõks", "kõksti", "kõldi", "kõlks", "kõlksti", "kõll", "kõmaki", "kõmdi", "kõmm", "kõmps", "kõpp", "kõps", "kõpsadi", "kõpsat", "kõpsti", "kõrr", "kõrra-kõrra", "kõss", "kõtt", "kõõksti", "kärr", "kärts", "kärtsti", "käuks", "käuksti", "kääga", "kääks", "kääksti", "köh", "köki-möki", "köksti", "laks", "laksti", "lampsti", "larts", "lartsti", "lats", "latsti", "leelo", "legoo", "lehva", "liiri-lõõri", "lika-lõka", "likat-lõkat", "limpsti", "lips", "lipsti", "lirts", "lirtsaki", "lirtsti", "lonksti", "lops", "lopsti", "lorts", "lortsti", "luks", "lups", "lupsti", "lurts", "lurtsti", "lõks", "lõksti", "lõmps", "lõmpsti", "lõnks", "lõnksti", "lärts", "lärtsti", "läts", "lätsti", "lörts", "lörtsti", "lötsti", "lööps", "lööpsti", "marss", "mats", "matsti", "mauh", "mauhti", "mh", "mhh", "mhmh", "miau", "mjaa", "mkm", "m-mh", "mnjaa", "mnjah", "moens", "mulks", "mulksti", "mull-mull", "mull-mull-mull", "muu", "muuh", "mõh", "mõmm", "mäh", "mäts", "mäu", "mää", "möh", "möh-öh-ää", "möö", "müh-müh", "mühüh", "müks", "müksti", "müraki", "mürr", "mürts", "mürtsaki", "mürtsti", "mütaku", "müta-mäta", "müta-müta", "müt-müt", "müt-müt-müt", "müts", "mütsti", "mütt", "naa", "naah", "nah", "naks", "naksti", "nanuu", "naps", "napsti", "nilpsti", "nipsti", "nirr", "niuh", "niuh-näuh", "niuhti", "noh", "noksti", "nolpsti", "nonoh", "nonoo", "nonäh", "noo", "nooh", "nooks", "norr", "nurr", "nuuts", "nõh", "nõhh", "nõka-nõka", "nõks", "nõksat-nõksat", "nõks-nõks", "nõksti", "nõõ", "nõõh", "näeh", "näh", "nälpsti", "nämm-nämm", "näpsti", "näts", "nätsti", "näu", "näuh", "näuhti", "näuks", "näuksti", "nääh", "nääks", "nühkat-nühkat", "oeh", "oh", "ohh", "ohhh", "oh-hoi", "oh-hoo", "ohoh", "oh-oh-oo", "oh-oh-hoo", "ohoi", "ohoo", "oi", "oih", "oijee", "oijeh", "oo", "ooh", "oo-oh", "oo-ohh", "oot", "ossa", "ot", "paa", "pah", "pahh", "pakaa", "pamm", "pantsti", "pardon", "pardonks", "parlartsti", "parts", "partsti", "partsumdi", "partsumm", "pastoi", "pats", "patst", "patsti", "pau", "pauh", "pauhti", "pele", "pfui", "phuh", "phuuh", "phäh", "phähh", "piiks", "piip", "piiri-pääri", "pimm", "pimm-pamm", "pimm-pomm", "pimm-põmm", "piraki", "piuks", "piu-pau", "plaks", "plaksti", "plarts", "plartsti", "plats", "platsti", "plauh", "plauhh", "plauhti", "pliks", "pliks-plaks", "plinn", "pliraki", "plirts", "plirtsti", "pliu", "pliuh", "ploks", "plotsti", "plumps", "plumpsti", "plõks", "plõksti", "plõmdi", "plõmm", "plõnn", "plärr", "plärts", "plärtsat", "plärtsti", "pläu", "pläuh", "plää", "plörtsat", "pomm", "popp", "pops", "popsti", "ports", "pot", "pots", "potsti", "pott", "praks", "praksti", "prants", "prantsaki", "prantsti", "prassai", "prauh", "prauhh", "prauhti", "priks", "priuh", "priuhh", "priuh-prauh", "proosit", "proost", "prr", "prrr", "prõks", "prõksti", "prõmdi", "prõmm", "prõntsti", "prääk", "prääks", "pst", "psst", "ptrr", "ptruu", "ptüi", "puh", "puhh", "puksti", "pumm", "pumps", "pup-pup-pup", "purts", "puuh", "põks", "põksti", "põmdi", "põmm", "põmmadi", "põnks", "põnn", "põnnadi", "põnt", "põnts", "põntsti", "põraki", "põrr", "põrra-põrra", "päh", "pähh", "päntsti", "pää", "pöörd", "püh", "raks", "raksti", "raps", "rapsti", "ratataa", "rauh", "riips", "riipsti", "riks", "riks-raks", "rips-raps", "rivitult", "robaki", "rops", "ropsaki", "ropsti", "ruik", "räntsti", "räts", "röh", "röhh", "sah", "sahh", "sahkat", "saps", "sapsti", "sauh", "sauhti", "servus", "sihkadi-sahkadi", "sihka-sahka", "sihkat-sahkat", "silks", "silk-solk", "sips", "sipsti", "sirr", "sirr-sorr", "sirts", "sirtsti", "siu", "siuh", "siuh-sauh", "siuh-säuh", "siuhti", "siuks", "siuts", "skool", "so", "soh", "solks", "solksti", "solpsti", "soo", "sooh", "so-oh", "soo-oh", "sopp", "sops", "sopsti", "sorr", "sorts", "sortsti", "so-soo", "soss", "soss-soss", "ss", "sss", "sst", "stopp", "suhkat-sahkat", "sulk", "sulks", "sulksti", "sull", "sulla-sulla", "sulpa-sulpa", "sulps", "sulpsti", "sumaki", "sumdi", "summ", "summat-summat", "sups", "supsaku", "supsti", "surts", "surtsti", "suss", "susti", "suts", "sutsti", "säh", "sähke", "särts", "särtsti", "säu", "säuh", "säuhti", "taevake", "taevakene", "takk", "tere", "terekest", "tibi-tibi", "tikk-takk", "tiks", "tilk", "tilks", "till", "tilla-talla", "till-tall", "tilulii", "tinn", "tip", "tip-tap", "tirr", "tirtsti", "tiu", "tjaa", "tjah", "tohhoh", "tohhoo", "tohoh", "tohoo", "tok", "tokk", "toks", "toksti", "tonks", "tonksti", "tota", "totsti", "tot-tot", "tprr", "tpruu", "trah", "trahh", "trallallaa", "trill", "trillallaa", "trr", "trrr", "tsah", "tsahh", "tsilk", "tsilk-tsolk", "tsirr", "tsiuh", "tskae", "tsolk", "tss", "tst", "tsst", "tsuhh", "tsuk", "tsumm", "tsurr", "tsäuh", "tšao", "tšš", "tššš", "tuk", "tuks", "turts", "turtsti", "tutki", "tutkit", "tutu-lutu", "tutulutu", "tuut", "tuutu-luutu", "tõks", "tötsti", "tümps", "uh", "uhh", "uh-huu", "uhtsa", "uhtsaa", "uhuh", "uhuu", "ui", "uih", "uih-aih", "uijah", "uijeh", "uist", "uit", "uka", "upsti", "uraa", "urjah", "urjeh", "urjoh", "urjuh", "urr", "urraa", "ust", "utu", "uu", "uuh", "vaak", "vaat", "vae", "vaeh", "vai", "vat", "vau", "vhüüt", "vidiit", "viiks", "vilks", "vilksti", "vinki-vinki", "virdi", "virr", "viu", "viudi", "viuh", "viuhti", "voeh", "voh", "vohh", "volks", "volksti", "vooh", "vops", "vopsti", "vot", "vuh", "vuhti", "vuih", "vulks", "vulksti", "vull", "vulpsti", "vups", "vupsaki", "vupsaku", "vupsti", "vurdi", "vurr", "vurra-vurra", "vurts", "vurtsti", "vutt", "võe", "võeh", "või", "võih", "võrr", "võts", "võtt", "vääks", "õe", "õits", "õk", "õkk", "õrr", "õss", "õuh", "äh", "ähh", "ähhähhää", "äh-hää", "äh-äh-hää", "äiu", "äiu-ää", "äss", "ää", "ääh", "äähh", "öh", "öhh", "ök", "üh", "eelmine", "eikeegi", "eimiski", "emb-kumb", "enam", "enim", "iga", "igasugune", "igaüks", "ise", "isesugune", "järgmine", "keegi", "kes", "kumb", "kumbki", "kõik", "meiesugune", "meietaoline", "midagi", "mihuke", "mihukene", "milletaoline", "milline", "mina", "minake", "mingi", "mingisugune", "minusugune", "minutaoline", "mis", "miski", "miskisugune", "missugune", "misuke", "mitmes", "mitmesugune", "mitu", "mitu-mitu", "mitu-setu", "muu", "mõlema", "mõnesugune", "mõni", "mõningane", "mõningas", "mäherdune", "määrane", "naasugune", "need", "nemad", "nendesugune", "nendetaoline", "nihuke", "nihukene", "niimitu", "niisamasugune", "niisugune", "nisuke", "nisukene", "oma", "omaenese", "omasugune", "omataoline", "pool", "praegune", "sama", "samasugune", "samataoline", "see", "seesama", "seesamane", "seesamune", "seesinane", "seesugune", "selline", "sihuke", "sihukene", "sina", "sinusugune", "sinutaoline", "siuke", "siukene", "säherdune", "säärane", "taoline", "teiesugune", "teine", "teistsugune", "tema", "temake", "temakene", "temasugune", "temataoline", "too", "toosama", "toosamane", "üks", "üksteise", "selletaoline", "esimene", "mittekeegi", "hakkama", "minema", "olema", "pidama", "saama", "tegema", "tulema", "võima", "toimuma", "muutuma", "andma", "vaatama", "tuli", "juur", "siss", "asi", "meil", "tegelik", "pea", "aeg", "tundma", "neid", "tooma", "tunduma", "nägema", "mõtlema", "elama", "olnud"]
def ins_or_add(analysis, words):
word = analysis['lemma']
tyyp = analysis['partofspeech']
#word=word+"_"+tyyp
if tyyp not in IGN_TYYP and word not in IGN_WORD:
if word in words.keys():
words[word] = words[word] + 1
else:
words[word] = 1
def get_freq(data):
words={}
for word in data.split():
word = word.lower()
if len(word) < 3:
continue;
res = analyze(word)
ins_or_add(res[0]['analysis'][0], words)
return sorted(words.items(), key=lambda x:x[1], reverse=True)
if len(sys.argv) >= 2:
for arg in sys.argv:
if arg.endswith(".txt"):
f = codecs.open(arg,'r','utf-8')
#with open(arg) as f:
data = " ".join(f.readlines())
aaa = get_freq(data)[0:40]
print(arg)
pprint(aaa)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment