Package: anyks-lm
ANYKS Language Model (ALM)Project goals and featuresThe are many toolkits capable of creating language models: (KenLM,SriLM,IRSTLM), and each of those toolkits may have a reason to exist. But our language model creation toolkit has the following goals and features:UTF-8 support: Full UTF-8 support without third-party dependencies.Support of many data formats: ARPA, Vocab, Map Sequence, N-grams, Binary alm dictionary.Smoothing algorithms: Kneser-Nay, Modified Kneser-Nay, Witten-Bell, Additive, Good-Turing, Absolute discounting.Normalisation and preprocessing for corpora: Transferring corpus to lowercase, smart tokenization, ability to create black - and white - lists for n-grams.ARPA modification: Frequencies and n-grams replacing, adding new n-grams with frequencies, removing n-grams.Pruning: N-gram removal based on specified criteria.Removal of low-probability n-grams: Removal of n-grams which backoff probability is higher than standard probability.ARPA recovery: Recovery of damaged n-grams in ARPA with subsequent recalculation of their backoff probabilities.Support of additional word features: Feature extraction: (numbers, roman numbers, ranges of numbers, numeric abbreviations, any other custom attributes) using scripts written in Python3.Text preprocessing: Unlike all other language model toolkits, ALM can extract correct context from files with unnormalized texts.Unknown word token accounting: Accounting of 〈unk〉 token as full n-gram.Redefinition of 〈unk〉 token: Ability to redefine an attribute of an unknown token.N-grams preprocessing: Ability to pre-process n-grams before adding them to ARPA using custom Python3 scripts.Binary container for Language Models: The binary container supports compression, encryption and installation of copyrights.Convenient visualization of the Language model assembly process: ALM implements several types of visualizations: textual, graphic, process indicator, and logging to files or console.Collection of all n-grams: Unlike other language model toolkits, ALM is guaranteed to extract all possible n-grams from the corpus, regardless of their length (except for Modified Kneser-Nay); you can also force all n-grams to be taken into account even if they occured only once.RequirementsZlibOpenSSLPython3NLohmann::jsonBigIntegerInstall PyBind11$python3-mpipinstallpybind11Description of MethodsMethods:idw- Word ID retrieval methodidt- Token ID retrieval methodids- Sequence ID retrieval methodExample:>>>importalm>>>>>>alm.idw("hello")313191024>>>>>>alm.idw("
")1>>>>>>alm.idw("
")22>>>>>>alm.idw("<unk>")3>>>>>>alm.idt("1424")2>>>>>>alm.idt("hello")0>>>>>>alm.idw("Living")13268942501>>>>>>alm.idw("in")2047>>>>>>alm.idw("the")83201>>>>>>alm.idw("USA")72549>>>>>>alm.ids([13268942501,2047,83201,72549])16314074810955466382DescriptionNameDescription〈s〉Sentence beginning token〈/s〉Sentence end token〈url〉URL-address token〈num〉Number (arabic or roman) token〈unk〉Unknown word token〈time〉Time token (15:44:56)〈score〉Score count token (4:3 ¦ 01:04)〈fract〉Fraction token (5/20 ¦ 192/864)〈date〉Date token (18.07.2004 ¦ 07/18/2004)〈abbr〉Abbreviation token (1-й ¦ 2-е ¦ 20-я ¦ p.s ¦ p.s.)〈dimen〉Dimensions token (200x300 ¦ 1920x1080)〈range〉Range of numbers token (1-2 ¦ 100-200 ¦ 300-400)〈aprox〉Approximate number token (~93 ¦95.86 ¦ 1020)〈anum〉Pseudo-number token (combination of numbers and other symbols) (T34 ¦ 895-M-86 ¦ 39km)〈pcards〉Symbols of the play cards (♠ ¦ ♣ ¦ ♥ ¦ ♦ )〈punct〉Punctuation token (. ¦ , ¦ ? ¦ ! ¦ : ¦ ; ¦ … ¦ ¡ ¦ ¿)〈route〉Direction symbols (arrows) (← ¦ ↑ ¦ ↓ ¦ ↔ ¦ ↵ ¦ ⇐ ¦ ⇑ ¦ ⇒ ¦ ⇓ ¦ ⇔ ¦ ◄ ¦ ▲ ¦ ► ¦ ▼)〈greek〉Symbols of the Greek alphabet (Α ¦ Β ¦ Γ ¦ Δ ¦ Ε ¦ Ζ ¦ Η ¦ Θ ¦ Ι ¦ Κ ¦ Λ ¦ Μ ¦ Ν ¦ Ξ ¦ Ο ¦ Π ¦ Ρ ¦ Σ ¦ Τ ¦ Υ ¦ Φ ¦ Χ ¦ Ψ ¦ Ω)〈isolat〉Isolation/quotation token (( ¦ ) ¦ [ ¦ ] ¦ { ¦ } ¦ " ¦ « ¦ » ¦ „ ¦ “ ¦ ` ¦ ⌈ ¦ ⌉ ¦ ⌊ ¦ ⌋ ¦ ‹ ¦ › ¦ ‚ ¦ ’ ¦ ′ ¦ ‛ ¦ ″ ¦ ‘ ¦ ” ¦ ‟ ¦ ' ¦〈 ¦ 〉)〈specl〉Special character token (_ ¦ @ ¦ # ¦ № ¦ © ¦ ® ¦ & ¦ § ¦ æ ¦ ø ¦ Þ ¦ – ¦ ‾ ¦ ‑ ¦ — ¦ ¯ ¦ ¶ ¦ ˆ ¦ ˜ ¦ † ¦ ‡ ¦ • ¦ ‰ ¦ ⁄ ¦ ℑ ¦ ℘ ¦ ℜ ¦ ℵ ¦ ◊ ¦ \ )〈currency〉Symbols of world currencies ($ ¦ € ¦ ₽ ¦ ¢ ¦ £ ¦ ₤ ¦ ¤ ¦ ¥ ¦ ℳ ¦ ₣ ¦ ₴ ¦ ₸ ¦ ₹ ¦ ₩ ¦ ₦ ¦ ₭ ¦ ₪ ¦ ৳ ¦ ƒ ¦ ₨ ¦ ฿ ¦ ₫ ¦ ៛ ¦ ₮ ¦ ₱ ¦ ﷼ ¦ ₡ ¦ ₲ ¦ ؋ ¦ ₵ ¦ ₺ ¦ ₼ ¦ ₾ ¦ ₠ ¦ ₧ ¦ ₯ ¦ ₢ ¦ ₳ ¦ ₥ ¦ ₰ ¦ ₿ ¦ ұ)〈math〉Mathematical operation token (+ ¦ - ¦ = ¦ / ¦ * ¦ ^ ¦ × ¦ ÷ ¦ − ¦ ∕ ¦ ∖ ¦ ∗ ¦ √ ¦ ∝ ¦ ∞ ¦ ∠ ¦ ± ¦ ¹ ¦ ² ¦ ³ ¦ ½ ¦ ⅓ ¦ ¼ ¦ ¾ ¦ % ¦ ~ ¦ · ¦ ⋅ ¦ ° ¦ º ¦ ¬ ¦ ƒ ¦ ∀ ¦ ∂ ¦ ∃ ¦ ∅ ¦ ∇ ¦ ∈ ¦ ∉ ¦ ∋ ¦ ∏ ¦ ∑ ¦ ∧ ¦ ∨ ¦ ∩ ¦ ∪ ¦ ∫ ¦ ∴ ¦ ∼ ¦ ≅ ¦ ≈ ¦ ≠ ¦ ≡ ¦ ≤ ¦ ≥ ¦ ª ¦ ⊂ ¦ ⊃ ¦ ⊄ ¦ ⊆ ¦ ⊇ ¦ ⊕ ¦ ⊗ ¦ ⊥ ¦ ¨)Methods:setZone- User zone set methodExample:>>>importalm>>>>>>alm.setZone("com")>>>alm.setZone("ru")>>>alm.setZone("org")>>>alm.setZone("net")Methods:clear- Method clear all datasetAlphabet- Method set alphabetgetAlphabet- Method get alphabetExample:>>>importalm>>>>>>alm.getAlphabet()'abcdefghijklmnopqrstuvwxyz'>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.getAlphabet()'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя'>>>>>>alm.clear()>>>>>>alm.getAlphabet()'abcdefghijklmnopqrstuvwxyz'Methods:setUnknown- Method set unknown wordgetUnknown- Method extraction unknown wordExample:>>>importalm>>>>>>alm.setUnknown("word")>>>>>>alm.getUnknown()'word'Methods:info- Dictionary information output methodinit- Language Model Initialization Method signature: [smoothing = wittenBell, modified = False, prepares = False, mod = 0.0]token- Method for determining the type of the token wordsaddText- Method of adding text for estimatecollectCorpus- Training method of assembling the text data for ALMpruneVocab- Dictionary pruning methodbuildArpa- Method for build ARPAwriteALM- Method for writing data from ARPA file to binary containerwriteWords- Method for writing these words to a filewriteVocab- Method for writing dictionary data to a filewriteNgrams- Method of writing data to NGRAMs fileswriteMap- Method of writing sequence map to filewriteSuffix- Method for writing data to a suffix file for digital abbreviationswriteAbbrs- Method for writing data to an abbreviation filegetSuffixes- Method for extracting the list of suffixes of digital abbreviationswriteArpa- Method of writing data to ARPA filesetSize- Method for set size N-gramsetLocale- Method set locale (Default: en_US.UTF-8)pruneArpa- Language model pruning methodaddWord- Method for add a word to the dictionarysetThreads- Method for setting the number of threads used in work (0 - all available threads)setSubstitutes- Method for set letters to correct words from mixed alphabetsaddAbbr- Method add abbreviationsetAbbrs- Method set abbreviationsgetAbbrs- Method for extracting the list of abbreviationsaddGoodword- Method add good wordaddBadword- Method add bad wordreadArpa- Method for reading an ARPA file, language modelreadVocab- Method of reading the dictionarysetAdCw- Method for set dictionary characteristics (cw - count all words in dataset, ad - count all documents in dataset)DescriptionSmoothingwittenBelladdSmoothgoodTuringconstDiscountnaturalDiscountkneserNeymodKneserNeyExample:>>>importalm>>>>>>alm.info("./lm.alm")***********************************Name:TestLanguageModel*Encryption:AES128*Alphabet:абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz*Builddate:09/18/202021:52:00*N-gramsize:3*Words:9373*N-grams:25021*Author:Somename*Contacts:site:https://example.com,e-mail:info@example.com*Copyright©:YoucompanyLLC*Licensetype:MIT*Licensetext:...Licensetext...**********************************>>>Example:>>>importalm>>>importjson>>>>>>alm.setSize(3)>>>alm.setThreads(0)>>>alm.setLocale("en_US.UTF-8")>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>alm.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>alm.setOption(alm.options_t.allowUnk)>>>alm.setOption(alm.options_t.resetUnk)>>>alm.setOption(alm.options_t.mixDicts)>>>alm.setOption(alm.options_t.tokenWords)>>>alm.setOption(alm.options_t.interpolate)>>>>>>alm.init(alm.smoothing_t.modKneserNey,True,True)>>>>>>p=alm.getParams()>>>p.algorithm4>>>p.mod0.0>>>p.preparesTrue>>>p.modifiedTrue>>>alm.idw("Сбербанк")13236490857>>>alm.idw("Совкомбанк")22287680895>>>>>>alm.token("Сбербанк")'<unk>'>>>alm.token("совкомбанк")'<unk>'>>>>>>alm.setAbbrs({13236490857,22287680895})>>>>>>alm.addAbbr("США")>>>alm.addAbbr("Сбер")>>>>>>alm.token("Сбербанк")'<abbr>'>>>alm.token("совкомбанк")'<abbr>'>>>>>>alm.token("сша")'<abbr>'>>>alm.token("СБЕР")'<abbr>'>>>>>>alm.getAbbrs(){13236490857,189243,22287680895,26938511}>>>>>>alm.addGoodword("T-34")>>>alm.addGoodword("АН-25")>>>>>>alm.addBadword("ийти")>>>alm.addBadword("циган")>>>alm.addBadword("апичатка")>>>>>>alm.addWord("министерство")>>>alm.addWord("возмездие",0,1)>>>alm.addWord("возражение",alm.idw("возражение"),2)>>>>>>defstatus(text,status):...print(text,status)...>>>defstatusWriteALM(status):...print("Write ALM",status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>defstatusBuildArpa(status):...print("Build ARPA",status)...>>>defstatusPrune(status):...print("Prune data",status)...>>>defstatusWords(status):...print("Write words",status)...>>>defstatusVocab(status):...print("Write vocab",status)...>>>defstatusNgram(status):...print("Write ngram",status)...>>>defstatusMap(status):...print("Write map",status)...>>>defstatusSuffix(status):...print("Write suffix",status)...>>>defstatusAbbreviation(status):...print("Write abbreviation",status)...>>>alm.addText("The future is now",0)>>>>>>alm.collectCorpus("./correct.txt",status)Readtextcorpora0Readtextcorpora1Readtextcorpora2Readtextcorpora3Readtextcorpora4Readtextcorpora5Readtextcorpora6...>>>alm.pruneVocab(-15.0,0,0,statusPrune)Prunedata0Prunedata1Prunedata2Prunedata3Prunedata4Prunedata5Prunedata6...>>>alm.pruneArpa(0.015,3,statusPrune)Prunedata0Prunedata1Prunedata2Prunedata3Prunedata4Prunedata5Prunedata6...>>>meta={..."aes":128,..."name":"Test Language Model",..."author":"Some name",..."lictype":"MIT",..."password":"password",..."copyright":"You company LLC",..."lictext":"... License text ...",..."contacts":"site: https://example.com, e-mail: info@example.com"...}>>>>>>alm.writeALM("./lm.alm",json.dumps(meta),statusWriteALM)WriteALM0WriteALM0WriteALM0WriteALM0WriteALM0WriteALM0...>>>alm.writeWords("./words.txt",statusWords)Writewords0Writewords1Writewords2Writewords3Writewords4Writewords5Writewords6...>>>alm.writeVocab("./lm.vocab",statusVocab)Writevocab0Writevocab1Writevocab2Writevocab3Writevocab4Writevocab5Writevocab6...>>>alm.writeNgrams("./lm.ngram",statusNgram)Writengram0Writengram1Writengram2Writengram3Writengram4Writengram5Writengram6...>>>alm.writeMap("./lm.map",statusMap,"|")Writemap0Writemap1Writemap2Writemap3Writemap4Writemap5Writemap6...>>>alm.writeSuffix("./suffix.txt",statusSuffix)Writesuffix10Writesuffix20Writesuffix30Writesuffix40Writesuffix50Writesuffix60...>>>alm.writeAbbrs("./words.abbr",statusAbbreviation)Writeabbreviation25Writeabbreviation50Writeabbreviation75Writeabbreviation100...>>>alm.getAbbrs(){13236490857,189243,22287680895,26938511}>>>>>>alm.getSuffixes(){2633,1662978425,14279182218,3468,47,28876661395,29095464659,2968,57,30}>>>>>>alm.buildArpa(statusBuildArpa)BuildARPA0BuildARPA1BuildARPA2BuildARPA3BuildARPA4BuildARPA5BuildARPA6...>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...Methods:setOption- Library options setting methodunsetOption- Disable module option methodExample:>>>importalm>>>>>>alm.unsetOption(alm.options_t.debug)>>>alm.unsetOption(alm.options_t.mixDicts)>>>alm.unsetOption(alm.options_t.onlyGood)>>>alm.unsetOption(alm.options_t.confidence)...DescriptionOptionsDescriptiondebugFlag debug modestressFlag allowing to stress in wordsuppersFlag that allows you to correct the case of lettersonlyGoodFlag allowing to consider words from the white list onlymixDictsFlag allowing the use of words consisting of mixed dictionariesallowUnkFlag allowing to unknown wordresetUnkFlag to reset the frequency of an unknown wordallGramsFlag allowing accounting of all collected n-gramslowerCaseFlag allowing to case-insensitiveconfidenceFlag ARPA file loading without pre-processing the wordstokenWordsFlag that takes into account when assembling N-grams, only those tokens that match wordsinterpolateFlag allowing to use interpolation in estimatingMethods:readMap- Method for reading sequence map from fileExample:>>>importalm>>>>>>alm.setLocale("en_US.UTF-8")>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>alm.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>alm.setOption(alm.options_t.allowUnk)>>>alm.setOption(alm.options_t.resetUnk)>>>alm.setOption(alm.options_t.mixDicts)>>>>>>defstatusMap(text,status):...print("Read map",text,status)...>>>defstatusBuildArpa(status):...print("Build ARPA",status)...>>>defstatusPrune(status):...print("Prune data",status)...>>>defstatusVocab(text,status):...print("Read Vocab",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init(alm.smoothing_t.wittenBell)>>>>>>p=alm.getParams()>>>p.algorithm2>>>alm.readVocab("./lm.vocab",statusVocab)ReadVocab./lm.vocab0ReadVocab./lm.vocab1ReadVocab./lm.vocab2ReadVocab./lm.vocab3ReadVocab./lm.vocab4ReadVocab./lm.vocab5ReadVocab./lm.vocab6...>>>alm.readMap("./lm1.map",statusMap,"|")Readmap./lm.map0Readmap./lm.map1Readmap./lm.map2Readmap./lm.map3Readmap./lm.map4Readmap./lm.map5Readmap./lm.map6...>>>alm.readMap("./lm2.map",statusMap,"|")Readmap./lm.map0Readmap./lm.map1Readmap./lm.map2Readmap./lm.map3Readmap./lm.map4Readmap./lm.map5Readmap./lm.map6...>>>alm.pruneVocab(-15.0,0,0,statusPrune)Prunedata0Prunedata1Prunedata2Prunedata3Prunedata4Prunedata5Prunedata6...>>>alm.buildArpa(statusBuildArpa)BuildARPA0BuildARPA1BuildARPA2BuildARPA3BuildARPA4BuildARPA5BuildARPA6...>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...>>>defgetWords(word,idw,oc,dc,count):...print(word,idw,oc,dc,count)...returnTrue...>>>alm.words(getWords)а25244129373б261169373в27757129373ж321279373и34823129373к36102129373о4063129373п41119373р42119373с43290129373у45113129373Х47119373я57299129373D61119373I66119373да217932109373за218392129373на2189435129373па2191119373та2194449373об227620109373...>>>alm.getStatistic()(13,38124)>>alm.setAdCw(44381,20)>>>alm.getStatistic()(20,44381)Example:>>>importalm>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>alm.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>alm.setOption(alm.options_t.allowUnk)>>>alm.setOption(alm.options_t.resetUnk)>>>alm.setOption(alm.options_t.mixDicts)>>>>>>defstatusBuildArpa(status):...print("Build ARPA",status)...>>>defstatusPrune(status):...print("Prune data",status)...>>>defstatusNgram(text,status):...print("Read Ngram",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init(alm.smoothing_t.addSmooth,False,False,0.5)>>>>>>p=alm.getParams()>>>p.algorithm0>>>p.mod0.5>>>p.preparesFalse>>>p.modifiedFalse>>>>>>alm.readNgram("./lm.ngram",statusNgram)ReadNgram./lm.ngram0ReadNgram./lm.ngram1ReadNgram./lm.ngram2ReadNgram./lm.ngram3ReadNgram./lm.ngram4ReadNgram./lm.ngram5ReadNgram./lm.ngram6...>>>alm.pruneVocab(-15.0,0,0,statusPrune)Prunedata0Prunedata1Prunedata2Prunedata3Prunedata4Prunedata5Prunedata6...>>>alm.buildArpa(statusBuildArpa)BuildARPA0BuildARPA1BuildARPA2BuildARPA3BuildARPA4BuildARPA5BuildARPA6...>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...Methods:modify- ARPA modification methodsweep- ARPA Low Frequency N-gram Removal Methodrepair- Method of repair of previously calculated ARPAExample:>>>importalm>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>defstatusSweep(text,status):...print("Sweep n-grams",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init()>>>>>>alm.sweep("./lm.arpa",statusSweep)Sweepn-gramsReadARPAfile0Sweepn-gramsReadARPAfile1Sweepn-gramsReadARPAfile2Sweepn-gramsReadARPAfile3Sweepn-gramsReadARPAfile4Sweepn-gramsReadARPAfile5Sweepn-gramsReadARPAfile6...Sweepn-gramsSweepN-grams0Sweepn-gramsSweepN-grams1Sweepn-gramsSweepN-grams2Sweepn-gramsSweepN-grams3Sweepn-gramsSweepN-grams4Sweepn-gramsSweepN-grams5Sweepn-gramsSweepN-grams6...>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...>>>alm.clear()>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>defstatusRepair(text,status):...print("Repair n-grams",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init()>>>>>>alm.repair("./lm.arpa",statusRepair)Repairn-gramsReadARPAfile0Repairn-gramsReadARPAfile1Repairn-gramsReadARPAfile2Repairn-gramsReadARPAfile3Repairn-gramsReadARPAfile4Repairn-gramsReadARPAfile5Repairn-gramsReadARPAfile6...Repairn-gramsRepairARPAdata0Repairn-gramsRepairARPAdata1Repairn-gramsRepairARPAdata2Repairn-gramsRepairARPAdata3Repairn-gramsRepairARPAdata4Repairn-gramsRepairARPAdata5Repairn-gramsRepairARPAdata6...>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...>>>alm.clear()>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>defstatusModify(text,status):...print("Modify ARPA data",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init()>>>>>>alm.modify("./lm.arpa","./remove.txt",alm.modify_t.remove,statusModify)ModifyARPAdataReadARPAfile0ModifyARPAdataReadARPAfile1ModifyARPAdataReadARPAfile2ModifyARPAdataReadARPAfile3ModifyARPAdataReadARPAfile4ModifyARPAdataReadARPAfile5ModifyARPAdataReadARPAfile6...ModifyARPAdataModifyARPAdata3ModifyARPAdataModifyARPAdata10ModifyARPAdataModifyARPAdata15ModifyARPAdataModifyARPAdata18ModifyARPAdataModifyARPAdata24ModifyARPAdataModifyARPAdata30...>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...Modification flagsNameDescriptionemplaceFlag of adding n-gram into existing ARPA fileremoveFlag of removing n-gram from existing ARPA filechangeFlag of changing n-gram frequency in existing ARPA filereplaceFlag of replacing n-gram in existing ARPA fileFile of adding n-gram into existing ARPA file-3.002006	США
-1.365296	границ США
-0.988534	у границ США
-1.759398	замуж за
-0.092796	собираюсь замуж за
-0.474876	и тоже
-19.18453	можно и тоже
...N-gram frequencySeparatorN-gram-0.988534\tу границ СШАFile of changing n-gram frequency in existing ARPA file-0.6588787	получайте удовольствие 

-0.6588787	только в одном
-0.6588787	работа связана с
-0.6588787	мужчины и женщины
-0.6588787	говоря про то
-0.6588787	потому что я
-0.6588787	потому что это
-0.6588787	работу потому что
-0.6588787	пейзажи за окном
-0.6588787	статусы для одноклассников
-0.6588787	вообще не хочу
...N-gram frequencySeparatorN-gram-0.6588787\tмужчины и женщиныFile of replacing n-gram in existing ARPA fileкоем случае нельзя	там да тут
но тем не	да ты что
неожиданный у	ожидаемый к
в СМИ	в ФСБ
Шах	Мат
...Existing N-gramSeparatorNew N-gramно тем не\tда ты чтоFile of removing n-gram from existing ARPA fileну то есть
ну очень большой
бы было если
мы с ней
ты смеешься над
два года назад
над тем что
или еще что-то
как я понял
как ни удивительно
как вы знаете
так и не
все-таки права
все-таки болят
все-таки сдохло
все-таки встала
все-таки решился
уже
мне
мое
все
...Methods:mix- Multiple ARPA Interpolation Method [backward = True, forward = False]mix- Interpolation method of multiple arpa algorithms (Bayesian and Logarithmic-linear) [Bayes: length > 0, Loglinear: length == 0]Example:>>>importalm>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>defstatusMix(text,status):...print("Mix ARPA data",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init()>>>>>>alm.mix(["./lm1.arpa","./lm2.arpa"],[0.02,0.05],True,statusMix)MixARPAdata./lm1.arpa0MixARPAdata./lm1.arpa1MixARPAdata./lm1.arpa2MixARPAdata./lm1.arpa3MixARPAdata./lm1.arpa4MixARPAdata./lm1.arpa5MixARPAdata./lm1.arpa6...MixARPAdata0MixARPAdata1MixARPAdata2MixARPAdata3MixARPAdata4MixARPAdata5MixARPAdata6>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...>>>alm.clear()>>>>>>alm.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>defstatusMix(text,status):...print("Mix ARPA data",text,status)...>>>defstatusWriteArpa(status):...print("Write ARPA",status)...>>>alm.init()>>>>>>alm.mix(["./lm1.arpa","./lm2.arpa"],[0.02,0.05],0,0.032,statusMix)MixARPAdata./lm1.arpa0MixARPAdata./lm1.arpa1MixARPAdata./lm1.arpa2MixARPAdata./lm1.arpa3MixARPAdata./lm1.arpa4MixARPAdata./lm1.arpa5MixARPAdata./lm1.arpa6...MixARPAdata0MixARPAdata1MixARPAdata2MixARPAdata3MixARPAdata4MixARPAdata5MixARPAdata6>>>alm.writeArpa("./lm.arpa",statusWriteArpa)WriteARPA0WriteARPA1WriteARPA2WriteARPA3WriteARPA4WriteARPA5WriteARPA6...Methods:size- Method of obtaining the size of the N-gramExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.size()3Methods:damerauLevenshtein- Determination of the Damerau-Levenshtein distance in phrasesdistanceLevenshtein- Determination of Levenshtein distance in phrasestanimoto- Method for determining Jaccard coefficient (quotient - Tanimoto coefficient)needlemanWunsch- Word stretching methodExample:>>>importalm>>>alm.damerauLevenshtein("привет","приветик")2>>>>>>alm.damerauLevenshtein("приевтик","приветик")1>>>>>>alm.distanceLevenshtein("приевтик","приветик")2>>>>>>alm.tanimoto("привет","приветик")0.7142857142857143>>>>>>alm.tanimoto("привеитк","приветик")0.4>>>>>>alm.needlemanWunsch("привеитк","приветик")4>>>>>>alm.needlemanWunsch("привет","приветик")2>>>>>>alm.damerauLevenshtein("acre","car")2>>>alm.distanceLevenshtein("acre","car")3>>>>>>alm.damerauLevenshtein("anteater","theatre")4>>>alm.distanceLevenshtein("anteater","theatre")5>>>>>>alm.damerauLevenshtein("banana","nanny")3>>>alm.distanceLevenshtein("banana","nanny")3>>>>>>alm.damerauLevenshtein("cat","crate")2>>>alm.distanceLevenshtein("cat","crate")2>>>>>>alm.mulctLevenshtein("привет","приветик")4>>>>>>alm.mulctLevenshtein("приевтик","приветик")1>>>>>>alm.mulctLevenshtein("acre","car")3>>>>>>alm.mulctLevenshtein("anteater","theatre")5>>>>>>alm.mulctLevenshtein("banana","nanny")4>>>>>>alm.mulctLevenshtein("cat","crate")4Methods:textToJson- Method to convert text to JSONisAllowApostrophe- Apostrophe permission check methodswitchAllowApostrophe- Method for permitting or denying an apostrophe as part of a wordExample:>>>importalm>>>>>>defcallbackFn(text):...print(text)...>>>alm.isAllowApostrophe()False>>>alm.switchAllowApostrophe()>>>>>>alm.isAllowApostrophe()True>>>alm.textToJson("«On nous dit qu'aujourd'hui c'est le cas, encore faudra-t-il l'évaluer» l'astronomie",callbackFn)[["«","On","nous","dit","qu'aujourd'hui","c'est","le","cas",",","encore","faudra-t-il","l'évaluer","»","l'astronomie"]]Methods:jsonToText- Method to convert JSON to textExample:>>>importalm>>>>>>defcallbackFn(text):...print(text)...>>>alm.jsonToText('[["«","On","nous","dit","qu\'aujourd\'hui","c\'est","le","cas",",","encore","faudra-t-il","l\'évaluer","»","l\'astronomie"]]',callbackFn)«Onnousditqu'aujourd'huic'est le cas, encore faudra-t-il l'évaluer»l'astronomieMethods:restore- Method for restore text from contextExample:>>>importalm>>>>>>alm.setOption(alm.options_t.uppers)>>>>>>alm.restore(["«","On","nous","dit","qu\'aujourd\'hui","c\'est","le","cas",",","encore","faudra-t-il","l\'évaluer","»","l\'astronomie"])"«On nous dit qu'aujourd'hui c'est le cas, encore faudra-t-il l'évaluer» l'astronomie"Methods:allowStress- Method for allow using stress in wordsdisallowStress- Method for disallow using stress in wordsExample:>>>importalm>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>defcallbackFn(text):...print(text)...>>>alm.textToJson('«Бе́лая стрела́» — согласно распространённой в 1990-е годы в России городской легенде, якобы специально организованная и подготовленная законспирированная правительственная спецслужба, сотрудники которой — бывшие и действовавшие милиционеры и спецназовцы, имеющие право на физическую ликвидацию особо опасных уголовных авторитетов и лидеров орудовавших в России ОПГ, относительно которых не представляется возможным привлечения их к уголовной ответственности законными методами[1][2][3]. Несмотря на отсутствие официальных доказательств существования организации и многочисленные опровержения со стороны силовых структур и служб безопасности[4], в российском обществе легенду считают основанной на подлинных фактах громких убийств криминальных авторитетов, совершённых в 1990-е годы, и не исключают существование реальной спецслужбы[5].',callbackFn)[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]>>>>>>alm.jsonToText('[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]',callbackFn)«Белаястрела»—согласнораспространённойв1990-егодывРоссиигородскойлегенде,якобыспециальноорганизованнаяиподготовленнаязаконспирированнаяправительственнаяспецслужба,сотрудникикоторой—бывшиеидействовавшиемилиционерыиспецназовцы,имеющиеправонафизическуюликвидациюособоопасныхуголовныхавторитетовилидероворудовавшихвРоссииОПГ,относительнокоторыхнепредставляетсявозможнымпривлеченияихкуголовнойответственностизаконнымиметодами[1][2][3].Несмотрянаотсутствиеофициальныхдоказательствсуществованияорганизацииимногочисленныеопровержениясосторонысиловыхструктурислужббезопасности[4],вроссийскомобществелегендусчитаютоснованнойнаподлинныхфактахгромкихубийствкриминальныхавторитетов,совершённыхв1990-егоды,инеисключаютсуществованиереальнойспецслужбы[5].>>>>>>alm.allowStress()>>>alm.textToJson('«Бе́лая стрела́» — согласно распространённой в 1990-е годы в России городской легенде, якобы специально организованная и подготовленная законспирированная правительственная спецслужба, сотрудники которой — бывшие и действовавшие милиционеры и спецназовцы, имеющие право на физическую ликвидацию особо опасных уголовных авторитетов и лидеров орудовавших в России ОПГ, относительно которых не представляется возможным привлечения их к уголовной ответственности законными методами[1][2][3]. Несмотря на отсутствие официальных доказательств существования организации и многочисленные опровержения со стороны силовых структур и служб безопасности[4], в российском обществе легенду считают основанной на подлинных фактах громких убийств криминальных авторитетов, совершённых в 1990-е годы, и не исключают существование реальной спецслужбы[5].',callbackFn)[["«","Бе́лая","стрела́","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]>>>>>>alm.jsonToText('[["«","Бе́лая","стрела́","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]',callbackFn)«Бе́лаястрела́»—согласнораспространённойв1990-егодывРоссиигородскойлегенде,якобыспециальноорганизованнаяиподготовленнаязаконспирированнаяправительственнаяспецслужба,сотрудникикоторой—бывшиеидействовавшиемилиционерыиспецназовцы,имеющиеправонафизическуюликвидациюособоопасныхуголовныхавторитетовилидероворудовавшихвРоссииОПГ,относительнокоторыхнепредставляетсявозможнымпривлеченияихкуголовнойответственностизаконнымиметодами[1][2][3].Несмотрянаотсутствиеофициальныхдоказательствсуществованияорганизацииимногочисленныеопровержениясосторонысиловыхструктурислужббезопасности[4],вроссийскомобществелегендусчитаютоснованнойнаподлинныхфактахгромкихубийствкриминальныхавторитетов,совершённыхв1990-егоды,инеисключаютсуществованиереальнойспецслужбы[5].>>>>>>alm.disallowStress()>>>alm.textToJson('«Бе́лая стрела́» — согласно распространённой в 1990-е годы в России городской легенде, якобы специально организованная и подготовленная законспирированная правительственная спецслужба, сотрудники которой — бывшие и действовавшие милиционеры и спецназовцы, имеющие право на физическую ликвидацию особо опасных уголовных авторитетов и лидеров орудовавших в России ОПГ, относительно которых не представляется возможным привлечения их к уголовной ответственности законными методами[1][2][3]. Несмотря на отсутствие официальных доказательств существования организации и многочисленные опровержения со стороны силовых структур и служб безопасности[4], в российском обществе легенду считают основанной на подлинных фактах громких убийств криминальных авторитетов, совершённых в 1990-е годы, и не исключают существование реальной спецслужбы[5].',callbackFn)[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]>>>>>>alm.jsonToText('[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]',callbackFn)«Белаястрела»—согласнораспространённойв1990-егодывРоссиигородскойлегенде,якобыспециальноорганизованнаяиподготовленнаязаконспирированнаяправительственнаяспецслужба,сотрудникикоторой—бывшиеидействовавшиемилиционерыиспецназовцы,имеющиеправонафизическуюликвидациюособоопасныхуголовныхавторитетовилидероворудовавшихвРоссииОПГ,относительнокоторыхнепредставляетсявозможнымпривлеченияихкуголовнойответственностизаконнымиметодами[1][2][3].Несмотрянаотсутствиеофициальныхдоказательствсуществованияорганизацииимногочисленныеопровержениясосторонысиловыхструктурислужббезопасности[4],вроссийскомобществелегендусчитаютоснованнойнаподлинныхфактахгромкихубийствкриминальныхавторитетов,совершённыхв1990-егоды,инеисключаютсуществованиереальнойспецслужбы[5].Methods:addBadword- Method add bad wordsetBadwords- Method set words to blacklistgetBadwords- Method get words in blacklistExample:>>>importalm>>>>>>alm.setBadwords(["hello","world","test"])>>>>>>alm.getBadwords(){1554834897,2156498622,28307030}>>>>>>alm.addBadword("test2")>>>>>>alm.getBadwords(){5170183734,1554834897,2156498622,28307030}Example:>>>importalm>>>>>>alm.setBadwords({24227504,1219922507,1794085167})>>>>>>alm.getBadwords(){24227504,1219922507,1794085167}>>>>>>alm.clear(alm.clear_t.badwords)>>>>>>alm.getBadwords(){}Methods:addGoodword- Method add good wordsetGoodwords- Method set words to whitelistgetGoodwords- Method get words in whitelistExample:>>>importalm>>>>>>alm.setGoodwords(["hello","world","test"])>>>>>>alm.getGoodwords(){1554834897,2156498622,28307030}>>>>>>alm.addGoodword("test2")>>>>>>alm.getGoodwords(){5170183734,1554834897,2156498622,28307030}>>>>>>alm.clear(alm.clear_t.goodwords)>>>>>alm.getGoodwords(){}Example:>>>importalm>>>>>>alm.setGoodwords({24227504,1219922507,1794085167})>>>>>>alm.getGoodwords(){24227504,1219922507,1794085167}Methods:setUserToken- Method for adding user tokengetUserTokens- User token list retrieval methodgetUserTokenId- Method for obtaining user token identifiergetUserTokenWord- Method for obtaining a custom token by its identifierExample:>>>importalm>>>>>>alm.setUserToken("usa")>>>>>>alm.setUserToken("russia")>>>>>>alm.getUserTokenId("usa")5759809081>>>>>>alm.getUserTokenId("russia")9910674734>>>>>>alm.getUserTokens()['usa','russia']>>>>>>alm.getUserTokenWord(5759809081)'usa'>>>>>>alm.getUserTokenWord(9910674734)'russia'>>>>>alm.clear(alm.clear_t.utokens)>>>>>>alm.getUserTokens()[]Methods:findNgram- N-gram search method in textword- "Method to extract a word by its identifier"Example:>>>importalm>>>>>>defcallbackFn(text):...print(text)...>>>alm.setOption(alm.options_t.confidence)>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>alm.readArpa('./lm.arpa')>>>>>>alm.idw("привет")2487910648>>>alm.word(2487910648)'привет'>>>>>>alm.findNgram("Особое место занимает чудотворная икона Лобзание Христа Иудою",callbackFn)
ОсобоеОсобоеместоместозанимаетзанимаетчудотворнаячудотворнаяиконаиконаЛобзаниеЛобзаниеХристаХристаИудоюИудою
>>>Methods:setUserTokenMethod- Method for set a custom token processing functionExample:>>>importalm>>>>>>deffn(token,word):...iftokenand(token=="<usa>"):...ifwordand(word.lower()=="usa"):...returnTrue...eliftokenand(token=="<russia>"):...ifwordand(word.lower()=="russia"):...returnTrue...returnFalse...>>>alm.setUserToken("usa")>>>>>>alm.setUserToken("russia")>>>>>>alm.setUserTokenMethod("usa",fn)>>>>>>alm.setUserTokenMethod("russia",fn)>>>>>>alm.idw("usa")5759809081>>>>>>alm.idw("russia")9910674734>>>>>>alm.getUserTokenWord(5759809081)'usa'>>>>>>alm.getUserTokenWord(9910674734)'russia'Methods:setAlmV2- Method for set the language model type ALMv2unsetAlmV2- Method for unset the language model type ALMv2readALM- Method for reading data from a binary containersetWordPreprocessingMethod- Method for set the word preprocessing functionExample:>>>importalm>>>>>>alm.setAlmV2()>>>>>>defrun(word,context):...ifword=="возле":word="около"...returnword...>>>alm.setOption(alm.options_t.debug)>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.setWordPreprocessingMethod(run)>>>>>>a=alm.perplexity("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")info:
НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор<punct><punct><punct>
info:p(неожиданно|
)=[2gram]0.00038931[-3.40969900]/0.99999991info:p(из|неожиданно...)=[2gram]0.10110741[-0.99521700]/0.99999979info:p(подворотни|из...)=[2gram]0.00711798[-2.14764300]/1.00000027info:p(в|подворотни...)=[2gram]0.51077661[-0.29176900]/1.00000021info:p(олега|в...)=[2gram]0.00082936[-3.08125500]/0.99999974info:p(ударил|олега...)=[2gram]0.25002820[-0.60201100]/0.99999978info:p(яркий|ударил...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(прожектор|яркий...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(патрульный|прожектор...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(трактор|патрульный...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(<punct>|трактор...)=[OOV]0.00000000[-inf]/0.99999973info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(
|<punct>...)=[1gram]0.05693430[-1.24462600]/0.99999993info:1sentences,13words,0OOVsinfo:3zeroprobs,logprob=-12.97624000ppl=8.45034200ppl1=9.95800426info:
Слязгомвыкатилсяиостановилсяоколомальчика<punct><punct><punct><punct>
info:p(с|
)=[2gram]0.00642448[-2.19216200]/0.99999991info:p(лязгом|с...)=[2gram]0.00195917[-2.70792700]/0.99999999info:p(выкатился|лязгом...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(и|выкатился...)=[2gram]0.51169951[-0.29098500]/1.00000024info:p(остановился|и...)=[2gram]0.00143382[-2.84350600]/0.99999975info:p(около|остановился...)=[1gram]0.00011358[-3.94468000]/1.00000003info:p(мальчика|около...)=[1gram]0.00003932[-4.40541100]/1.00000016info:p(<punct>|мальчика...)=[OOV]0.00000000[-inf]/0.99999990info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(
|<punct>...)=[1gram]0.05693430[-1.24462600]/0.99999993info:1sentences,11words,0OOVsinfo:4zeroprobs,logprob=-17.93030200ppl=31.20267541ppl1=42.66064865>>>print(a.logprob)-30.906542Example:>>>importalm>>>>>>alm.setAlmV2()>>>>>>alm.setOption(alm.options_t.debug)>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>defstatusAlm(status):...print("Read ALM",status)...>>>alm.readALM("./lm.alm","password",128,statusAlm)ReadALM0ReadALM1ReadALM2ReadALM3ReadALM4ReadALM5ReadALM6...>>>>>>a=alm.perplexity("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")info:
НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор<punct><punct><punct>
info:p(неожиданно|
)=[2gram]0.00038931[-3.40969900]/0.99999991info:p(из|неожиданно...)=[2gram]0.10110741[-0.99521700]/0.99999979info:p(подворотни|из...)=[2gram]0.00711798[-2.14764300]/1.00000027info:p(в|подворотни...)=[2gram]0.51077661[-0.29176900]/1.00000021info:p(олега|в...)=[2gram]0.00082936[-3.08125500]/0.99999974info:p(ударил|олега...)=[2gram]0.25002820[-0.60201100]/0.99999978info:p(яркий|ударил...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(прожектор|яркий...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(патрульный|прожектор...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(трактор|патрульный...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(<punct>|трактор...)=[OOV]0.00000000[-inf]/0.99999973info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(
|<punct>...)=[1gram]0.05693430[-1.24462600]/0.99999993info:1sentences,13words,0OOVsinfo:3zeroprobs,logprob=-12.97624000ppl=8.45034200ppl1=9.95800426info:
Слязгомвыкатилсяиостановилсяоколомальчика<punct><punct><punct><punct>
info:p(с|
)=[2gram]0.00642448[-2.19216200]/0.99999991info:p(лязгом|с...)=[2gram]0.00195917[-2.70792700]/0.99999999info:p(выкатился|лязгом...)=[2gram]0.50002878[-0.30100500]/1.00000034info:p(и|выкатился...)=[2gram]0.51169951[-0.29098500]/1.00000024info:p(остановился|и...)=[2gram]0.00143382[-2.84350600]/0.99999975info:p(около|остановился...)=[1gram]0.00011358[-3.94468000]/1.00000003info:p(мальчика|около...)=[1gram]0.00003932[-4.40541100]/1.00000016info:p(<punct>|мальчика...)=[OOV]0.00000000[-inf]/0.99999990info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(<punct>|<punct>...)=[OOV]0.00000000[-inf]/0.99999993info:p(
|<punct>...)=[1gram]0.05693430[-1.24462600]/0.99999993info:1sentences,11words,0OOVsinfo:4zeroprobs,logprob=-17.93030200ppl=31.20267541ppl1=42.66064865>>>print(a.logprob)-30.906542Methods:setLogfile- Method of set the file for log outputsetOOvFile- Method set file for saving OOVs wordsExample:>>>importalm>>>>>>alm.setLogfile("./log.txt")>>>>>>alm.setOOvFile("./oov.txt")Methods:perplexity- Perplexity calculationpplConcatenate- Method of combining perplexiapplByFiles- Method for reading perplexity calculation by file or group of filesExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>a=alm.perplexity("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")>>>>>>print(a.logprob)-30.906542>>>>>>print(a.oovs)0>>>>>>print(a.words)24>>>>>>print(a.sentences)2>>>>>>print(a.zeroprobs)7>>>>>>print(a.ppl)17.229063831108224>>>>>>print(a.ppl1)19.398698060810077>>>>>>b=alm.pplByFiles("./text.txt")>>>>>>c=alm.pplConcatenate(a,b)>>>>>>print(c.ppl)7.384123548831112DescriptionNameDescriptionpplThe meaning of perplexity without considering the beginning of the sentenceppl1The meaning of perplexion taking into account the beginning of the sentenceoovsCount of oov wordswordsCount of words in sentencelogprobWord sequence frequencysentencesCount of sequenceszeroprobsCount of zero probsMethods:tokenization- Method for breaking text into tokensExample:>>>importalm>>>>>>deftokensFn(word,context,reset,stop):...print(word," => ",context)...returnTrue...>>>alm.switchAllowApostrophe()>>>>>>alm.tokenization("«On nous dit qu'aujourd'hui c'est le cas, encore faudra-t-il l'évaluer» l'astronomie",tokensFn)«=>[]On=>['«']nous=>['«','On']dit=>['«','On','nous']qu'aujourd'hui=>['«','On','nous','dit']c'est  =>  ['«', 'On', 'nous', 'dit', "qu'aujourd'hui"]le=>['«','On','nous','dit',"qu'aujourd'hui","c'est"]cas=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le'],=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas']encore=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',']faudra-t-il=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',','encore']l=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',','encore','faudra-t-il','l']'  =>  ['«', 'On', 'nous', 'dit', "qu'aujourd'hui", "c'est", 'le', 'cas', ',', 'encore', 'faudra-t-il', 'l']évaluer=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',','encore','faudra-t-il','l',"'"]»=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',','encore','faudra-t-il','l',"'",'évaluer']l=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',','encore','faudra-t-il','l',"'",'évaluer','»']'  =>  ['«', 'On', 'nous', 'dit', "qu'aujourd'hui", "c'est", 'le', 'cas', ',', 'encore', 'faudra-t-il', 'l', "'", 'évaluer', '»', 'l']astronomie=>['«','On','nous','dit',"qu'aujourd'hui","c'est",'le','cas',',','encore','faudra-t-il','l',"'",'évaluer','»','l',"'"]Methods:setTokenizerFn- Method for set the function of an external tokenizerExample:>>>importalm>>>>>>deftokenizerFn(text,callback):...word=""...context=[]...forletterintext:...ifletter==" "andlen(word)>0:...ifnotcallback(word,context,False,False):return...context.append(word)...word=""...elifletter=="."orletter=="!"orletter=="?":...ifnotcallback(word,context,True,False):return...word=""...context=[]...else:...word+=letter...iflen(word)>0:...ifnotcallback(word,context,False,True):return...>>>deftokensFn(word,context,reset,stop):...print(word," => ",context)...returnTrue...>>>alm.setTokenizerFn(tokenizerFn)>>>>>>alm.tokenization("Hello World today!",tokensFn)Hello=>[]World=>['Hello']today=>['Hello','World']Methods:sentences- Sentences generation methodsentencesToFile- Method for assembling a specified number of sentences and writing to a fileExample:>>>importalm>>>>>>defsentencesFn(text):...print("Sentences:",text)...returnTrue...>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.sentences(sentencesFn)Sentences:
Вобщем
Sentences:
Слязгомвыкатилсяиостановилсявозлемальчика
Sentences:
Уменянет
Sentences:
Явообщенехочу
Sentences:
Даивобщем
Sentences:
Немогу
Sentences:
Нувобщем
Sentences:
Такчтоявообщенехочу
Sentences:
Потомучтоявообщенехочу
Sentences:
Продолжениеследует
Sentences:
Неожиданноизподворотниволегаудариляркийпрожекторпатрульныйтрактор
>>>>>>alm.sentencesToFile(5,"./result.txt")Methods:fixUppers- Method for correcting registers in the textfixUppersByFiles- Method for correcting text registers in a text fileExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.fixUppers("неожиданно из подворотни в олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")'Неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор??? С лязгом выкатился и остановился возле мальчика....'>>>>>>alm.fixUppersByFiles("./corpus","./result.txt","txt")Methods:checkHypLat- Hyphen and latin character search methodExample:>>>importalm>>>>>>alm.checkHypLat("Hello-World")(True,True)>>>>>>alm.checkHypLat("Hello")(False,True)>>>>>>alm.checkHypLat("Привет")(False,False)>>>>>>alm.checkHypLat("так-как")(True,False)Methods:getUppers- Method for extracting registers for each wordcountLetter- Method for counting the amount of a specific letter in a wordExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.idw("Living")10493385932>>>>>>alm.idw("in")3301>>>>>>alm.idw("the")217280>>>>>>alm.idw("USA")188643>>>>>>alm.getUppers([10493385932,3301,217280,188643])[1,0,0,7]>>>>>>alm.countLetter("hello-world","-")1>>>>>>alm.countLetter("hello-world","l")3Methods:urls- Method for extracting URL address coordinates in a stringExample:>>>importalm>>>>>>alm.urls("This website: example.com was designed with ..."){14:25}>>>>>>alm.urls("This website: https://a.b.c.example.net?id=52#test-1 was designed with ..."){14:52}>>>>>>alm.urls("This website: https://a.b.c.example.net?id=52#test-1 and 127.0.0.1 was designed with ..."){14:52,57:66}Methods:roman2Arabic- Method for translating Roman numerals to ArabicExample:>>>importalm>>>>>>alm.roman2Arabic("XVI")16Methods:rest- Method for correction and detection of words with mixed alphabetssetSubstitutes- Method for set letters to correct words from mixed alphabetsgetSubstitutes- Method of extracting letters to correct words from mixed alphabetsExample:>>>importalm>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>alm.getSubstitutes(){'a':'а','b':'в','c':'с','e':'е','h':'н','k':'к','m':'м','o':'о','p':'р','t':'т','x':'х'}>>>>>>str="ПPИBETИК">>>>>>str.lower()'пpиbetик'>>>>>>alm.rest(str)'приветик'Methods:setTokensDisable- Method for set the list of forbidden tokenssetTokensUnknown- Method for set the list of tokens cast to 〈unk〉setTokenDisable- Method for set the list of unidentifiable tokenssetTokenUnknown- Method of set the list of tokens that need to be identified as 〈unk〉getTokensDisable- Method for retrieving the list of forbidden tokensgetTokensUnknown- Method for extracting a list of tokens reducible to 〈unk〉setAllTokenDisable- Method for set all tokens as unidentifiablesetAllTokenUnknown- The method of set all tokens identified as 〈unk〉Example:>>>importalm>>>>>>alm.idw("<date>")6>>>>>>alm.idw("<time>")7>>>>>>alm.idw("<abbr>")5>>>>>>alm.idw("<math>")9>>>>>>alm.setTokenDisable("date|time|abbr|math")>>>>>>alm.getTokensDisable(){9,5,6,7}>>>>>>alm.setTokensDisable({6,7,5,9})>>>>>>alm.setTokenUnknown("date|time|abbr|math")>>>>>>alm.getTokensUnknown(){9,5,6,7}>>>>>>alm.setTokensUnknown({6,7,5,9})>>>>>>alm.setAllTokenDisable()>>>>>>alm.getTokensDisable(){2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23}>>>>>>alm.setAllTokenUnknown()>>>>>>alm.getTokensUnknown(){2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23}Methods:countAlphabet- Method of obtaining the number of letters in the dictionaryExample:>>>importalm>>>>>>alm.getAlphabet()'abcdefghijklmnopqrstuvwxyz'>>>>>>alm.countAlphabet()26>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.countAlphabet()59Methods:countBigrams- Method get count bigramscountTrigrams- Method get count trigramscountGrams- Method get count N-gram by lm sizeExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.countBigrams("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")12>>>>>>alm.countTrigrams("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")10>>>>>>alm.size()3>>>>>>alm.countGrams("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")10>>>>>>alm.idw("неожиданно")3263936167>>>>>>alm.idw("из")5134>>>>>>alm.idw("подворотни")12535356101>>>>>>alm.idw("в")53>>>>>>alm.idw("Олега")2824508300>>>>>>alm.idw("ударил")24816796913>>>>>>alm.countBigrams([3263936167,5134,12535356101,53,2824508300,24816796913])5>>>>>>alm.countTrigrams([3263936167,5134,12535356101,53,2824508300,24816796913])4>>>>>>alm.countGrams([3263936167,5134,12535356101,53,2824508300,24816796913])4Methods:arabic2Roman- Convert arabic number to roman numberExample:>>>importalm>>>>>>alm.arabic2Roman(23)'XXIII'>>>>>>alm.arabic2Roman("33")'XXXIII'Methods:setThreads- Method for set the number of threads (0 - all threads)Example:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.setThreads(3)>>>>>>a=alm.pplByFiles("./text.txt")>>>>>>print(a.logprob)-48201.29481399994Methods:fti- Method for removing the fractional part of a numberExample:>>>importalm>>>>>>alm.fti(5892.4892)5892489200000>>>>>>alm.fti(5892.4892,4)58924892Methods:context- Method for assembling text context from a sequenceExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.idw("неожиданно")3263936167>>>>>>alm.idw("из")5134>>>>>>alm.idw("подворотни")12535356101>>>>>>alm.idw("в")53>>>>>>alm.idw("Олега")2824508300>>>>>>alm.idw("ударил")24816796913>>>>>>alm.context([3263936167,5134,12535356101,53,2824508300,24816796913])'Неожиданно из подворотни в Олега ударил'Methods:isAbbr- Method of checking a word for compliance with an abbreviationisSuffix- Method for checking a word for a suffix of a numeric abbreviationisToken- Method for checking if an identifier matches a tokenisIdWord- Method for checking if an identifier matches a wordExample:>>>importalm>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.addAbbr("США")>>>>>>alm.isAbbr("сша")True>>>>>>alm.addSuffix("1-я")>>>>>>alm.isSuffix("1-я")True>>>>>>alm.isToken(alm.idw("США"))True>>>>>>alm.isToken(alm.idw("1-я"))True>>>>>>alm.isToken(alm.idw("125"))True>>>>>>alm.isToken(alm.idw("
"))True>>>>>>alm.isToken(alm.idw("Hello"))False>>>>>>alm.isIdWord(alm.idw("https://anyks.com"))True>>>>>>alm.isIdWord(alm.idw("Hello"))True>>>>>>alm.isIdWord(alm.idw("-"))FalseMethods:findByFiles- Method search N-grams in a text fileExample:>>>importalm>>>>>>alm.setOption(alm.options_t.debug)>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.findByFiles("./text.txt","./result.txt")info:
Кукайсарикукайсарияпонскиеяпонскиекаллиграфыкаллиграфыяяпостояннопостояннонавещалнавещалихихтайнотайноототлюдейлюдей
info:
НеожиданноизНеожиданноизподворотниизподворотнивподворотнивОлегавОлегаударилОлегаудариляркийудариляркийпрожекторяркийпрожекторпатрульныйпрожекторпатрульныйтракторпатрульныйтрактор
СлязгомСлязгомвыкатилсялязгомвыкатилсяивыкатилсяиостановилсяиостановилсявозлеостановилсявозлемальчикавозлемальчикаMethods:checkSequence- Sequence Existence MethodexistSequence- Method for checking the existence of a sequence, excluding non-word tokenscheckByFiles- Method for checking if a sequence exists in a text fileExample:>>>importalm>>>>>>alm.setOption(alm.options_t.debug)>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.addAbbr("США")>>>>>>alm.isAbbr("сша")>>>>>>alm.checkSequence("Неожиданно из подворотни в олега ударил")True>>>>>>alm.checkSequence("Сегодня сыграл и в Олега ударил яркий прожектор патрульный трактор с корпоративным сектором")True>>>>>>alm.checkSequence("Сегодня сыграл и в Олега ударил яркий прожектор патрульный трактор с корпоративным сектором",True)True>>>>>>alm.checkSequence("в Олега ударил яркий")True>>>>>>alm.checkSequence("в Олега ударил яркий",True)True>>>>>>alm.checkSequence("от госсекретаря США")True>>>>>>alm.checkSequence("от госсекретаря США",True)True>>>>>>alm.checkSequence("Неожиданно из подворотни в олега ударил",2)True>>>>>>alm.checkSequence(["Неожиданно","из","подворотни","в","олега","ударил"],2)True>>>>>>alm.existSequence("
 Сегодня сыграл и в, Олега ударил яркий прожектор, патрульный трактор - с корпоративным сектором 
",2)(True,0)>>>>>>alm.existSequence(["
","Сегодня","сыграл","и","в",",","Олега","ударил","яркий","прожектор",",","патрульный","трактор","-","с","корпоративным","сектором","
"],2)(True,2)>>>>>>alm.idw("от")6086>>>>>>alm.idw("госсекретаря")51273912082>>>>>>alm.idw("США")5>>>>>>alm.checkSequence([6086,51273912082,5])True>>>>>>alm.checkSequence([6086,51273912082,5],True)True>>>>>>alm.checkSequence(["от","госсекретаря","США"])True>>>>>>alm.checkSequence(["от","госсекретаря","США"],True)True>>>>>>alm.checkByFiles("./text.txt","./result.txt")info:1999|YES|Какой-топериодвременимывообщенеобщалисьinfo:2000|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.Слязгомвыкатилсяиостановилсявозлемальчика.info:2001|YES|Таккакэтияйцажалкоестьахочетсявсебольшелюбоватьсяихможнопокрытьлакомдажепрозрачнымлакомдляногтейinfo:2002|NO|кукай<unk><unk>сарикукай<unk><unk>сарияпонскиекаллиграфыяпостояннонавещалихтайноотлюдейinfo:2003|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор???Слязгомвыкатилсяиостановилсявозлемальчика....info:2004|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор?Слязгомвыкатилсяиостановилсявозлемальчика.info:2005|YES|СегодняяичницейниктонезавтракалкаквпрочемивчеранаближайшемкнамрынкемыелифруктовыйсалатсосвежевыжатымсокомкаквстарыедобрыевременавБразилииinfo:2006|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор!Слязгомвыкатилсяиостановилсявозлемальчика.info:2007|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.слязгомвыкатилсяиостановилсявозлемальчика.Alltexts:2007Existstexts:1359Notexiststexts:648>>>>>>alm.checkByFiles("./corpus","./result.txt",False,"txt")info:1999|YES|Какой-топериодвременимывообщенеобщалисьinfo:2000|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.Слязгомвыкатилсяиостановилсявозлемальчика.info:2001|YES|Таккакэтияйцажалкоестьахочетсявсебольшелюбоватьсяихможнопокрытьлакомдажепрозрачнымлакомдляногтейinfo:2002|NO|кукай<unk><unk>сарикукай<unk><unk>сарияпонскиекаллиграфыяпостояннонавещалихтайноотлюдейinfo:2003|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор???Слязгомвыкатилсяиостановилсявозлемальчика....info:2004|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор?Слязгомвыкатилсяиостановилсявозлемальчика.info:2005|YES|СегодняяичницейниктонезавтракалкаквпрочемивчеранаближайшемкнамрынкемыелифруктовыйсалатсосвежевыжатымсокомкаквстарыедобрыевременавБразилииinfo:2006|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор!Слязгомвыкатилсяиостановилсявозлемальчика.info:2007|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.слязгомвыкатилсяиостановилсявозлемальчика.Alltexts:2007Existstexts:1359Notexiststexts:648>>>>>>alm.checkByFiles("./corpus","./result.txt",True,"txt")info:2000|NO|Таккакэтияйцажалкоестьахочетсявсебольшелюбоватьсяихможнопокрытьлакомдажепрозрачнымлакомдляногтейinfo:2001|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.Слязгомвыкатилсяиостановилсявозлемальчика.info:2002|NO|СегодняяичницейниктонезавтракалкаквпрочемивчеранаближайшемкнамрынкемыелифруктовыйсалатсосвежевыжатымсокомкаквстарыедобрыевременавБразилииinfo:2003|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор!Слязгомвыкатилсяиостановилсявозлемальчика.info:2004|NO|кукай<unk><unk>сарикукай<unk><unk>сарияпонскиекаллиграфыяпостояннонавещалихтайноотлюдейinfo:2005|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор?Слязгомвыкатилсяиостановилсявозлемальчика.info:2006|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор???Слязгомвыкатилсяиостановилсявозлемальчика....info:2007|NO|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.слязгомвыкатилсяиостановилсявозлемальчика.Alltexts:2007Existstexts:0Notexiststexts:2007Methods:check- String Check Methodmatch- String Matching MethodaddAbbr- Method add abbreviationaddSuffix- Method add number suffix abbreviationsetSuffixes- Method set number suffix abbreviationsreadSuffix- Method for reading data from a file of suffixes and abbreviationsExample:>>>importalm>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>alm.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>alm.check("Дом-2",alm.check_t.home2)True>>>>>>alm.check("Дом2",alm.check_t.home2)False>>>>>>alm.check("Дом-2",alm.check_t.latian)False>>>>>>alm.check("Hello",alm.check_t.latian)True>>>>>>alm.check("прiвет",alm.check_t.latian)True>>>>>>alm.check("Дом-2",alm.check_t.hyphen)True>>>>>>alm.check("Дом2",alm.check_t.hyphen)False>>>>>>alm.check("Д",alm.check_t.letter)True>>>>>>alm.check("$",alm.check_t.letter)False>>>>>>alm.check("-",alm.check_t.letter)False>>>>>>alm.check("просtоквaшино",alm.check_t.similars)True>>>>>>alm.match("my site http://example.ru, it's true",alm.match_t.url)True>>>>>>alm.match("по вашему ip адресу 46.40.123.12 проводится проверка",alm.match_t.url)True>>>>>>alm.match("мой адрес в формате IPv6: http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/",alm.match_t.url)True>>>>>>alm.match("13-я",alm.match_t.abbr)True>>>alm.match("13-я-й",alm.match_t.abbr)False>>>alm.match("т.д",alm.match_t.abbr)True>>>alm.match("т.п.",alm.match_t.abbr)True>>>>>>alm.match("С.Ш.А.",alm.match_t.abbr)True>>>>>>alm.addAbbr("сша")>>>alm.match("США",alm.match_t.abbr)True>>>>>>alm.addSuffix("15-летия")>>>alm.match("15-летия",alm.match_t.abbr)True>>>>>>alm.getSuffixes(){3139900457}>>>>>>alm.idw("лет")328041>>>>>>alm.idw("тых")352214>>>>>>alm.setSuffixes({328041,352214})>>>>>>alm.getSuffixes(){328041,352214}>>>>>>defstatus(status):...print(status)...>>>alm.readSuffix("./suffix.abbr",status)>>>>>>alm.match("15-лет",alm.match_t.abbr)True>>>>>>alm.match("20-тых",alm.match_t.abbr)True>>>>>>alm.match("15-летия",alm.match_t.abbr)False>>>>>>alm.match("Hello",alm.match_t.latian)True>>>>>>alm.match("прiвет",alm.match_t.latian)False>>>>>>alm.match("23424",alm.match_t.number)True>>>>>>alm.match("hello",alm.match_t.number)False>>>>>>alm.match("23424.55",alm.match_t.number)False>>>>>>alm.match("23424",alm.match_t.decimal)False>>>>>>alm.match("23424.55",alm.match_t.decimal)True>>>>>>alm.match("23424,55",alm.match_t.decimal)True>>>>>>alm.match("-23424.55",alm.match_t.decimal)True>>>>>>alm.match("+23424.55",alm.match_t.decimal)True>>>>>>alm.match("+23424.55",alm.match_t.anumber)True>>>>>>alm.match("15T-34",alm.match_t.anumber)True>>>>>>alm.match("hello",alm.match_t.anumber)False>>>>>>alm.match("hello",alm.match_t.allowed)True>>>>>>alm.match("évaluer",alm.match_t.allowed)False>>>>>>alm.match("13",alm.match_t.allowed)True>>>>>>alm.match("Hello-World",alm.match_t.allowed)True>>>>>>alm.match("Hello",alm.match_t.math)False>>>>>>alm.match("+",alm.match_t.math)True>>>>>>alm.match("=",alm.match_t.math)True>>>>>>alm.match("Hello",alm.match_t.upper)True>>>>>>alm.match("hello",alm.match_t.upper)False>>>>>>alm.match("hellO",alm.match_t.upper)False>>>>>>alm.match("a",alm.match_t.punct)False>>>>>>alm.match(",",alm.match_t.punct)True>>>>>>alm.match(" ",alm.match_t.space)True>>>>>>alm.match("a",alm.match_t.space)False>>>>>>alm.match("a",alm.match_t.special)False>>>>>>alm.match("±",alm.match_t.special)False>>>>>>alm.match("[",alm.match_t.isolation)True>>>>>>alm.match("a",alm.match_t.isolation)False>>>>>>alm.match("a",alm.match_t.greek)False>>>>>>alm.match("Ψ",alm.match_t.greek)True>>>>>>alm.match("->",alm.match_t.route)False>>>>>>alm.match("⇔",alm.match_t.route)True>>>>>>alm.match("a",alm.match_t.letter)True>>>>>>alm.match("!",alm.match_t.letter)False>>>>>>alm.match("!",alm.match_t.pcards)False>>>>>>alm.match("♣",alm.match_t.pcards)True>>>>>>alm.match("p",alm.match_t.currency)False>>>>>>alm.match("$",alm.match_t.currency)True>>>>>>alm.match("€",alm.match_t.currency)True>>>>>>alm.match("₽",alm.match_t.currency)True>>>>>>alm.match("₿",alm.match_t.currency)TrueMethods:delInText- Method for delete letter in textExample:>>>importalm>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.delInText("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор??? с лязгом выкатился и остановился возле мальчика....",alm.wdel_t.punct)'неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор с лязгом выкатился и остановился возле мальчика'>>>>>>alm.delInText("hello-world-hello-world",alm.wdel_t.hyphen)'helloworldhelloworld'>>>>>>alm.delInText("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор??? с лязгом выкатился и остановился возле мальчика....",alm.wdel_t.broken)'неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор с лязгом выкатился и остановился возле мальчика'>>>>>>alm.delInText("«On nous dit qu'aujourd'hui c'est le cas, encore faudra-t-il l'évaluer» l'astronomie",alm.wdel_t.broken)"On nous dit qu'aujourd'hui c'est le cas encore faudra-t-il l'valuer l'astronomie"Methods:countsByFiles- Method for counting the number of n-grams in a text fileExample:>>>importalm>>>>>>alm.setOption(alm.options_t.debug)>>>>>>alm.setOption(alm.options_t.confidence)>>>>>>alm.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>alm.readArpa('./lm.arpa')>>>>>>alm.countsByFiles("./text.txt","./result.txt",3)info:0|СегодняяичницейниктонезавтракалкаквпрочемивчеранаближайшемкнамрынкемыелифруктовыйсалатсосвежевыжатымсокомкаквстарыедобрыевременавБразилииinfo:10|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор?Слязгомвыкатилсяиостановилсявозлемальчика.info:10|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор!Слязгомвыкатилсяиостановилсявозлемальчика.info:0|Таккакэтияйцажалкоестьахочетсявсебольшелюбоватьсяихможнопокрытьлакомдажепрозрачнымлакомдляногтейinfo:10|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор???Слязгомвыкатилсяиостановилсявозлемальчика....Counts3grams:471>>>>>>alm.countsByFiles("./corpus","./result.txt",2,"txt")info:19|Таккакэтияйцажалкоестьахочетсявсебольшелюбоватьсяихможнопокрытьлакомдажепрозрачнымлакомдляногтейinfo:12|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор.слязгомвыкатилсяиостановилсявозлемальчика.info:12|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор!Слязгомвыкатилсяиостановилсявозлемальчика.info:10|кукай<unk><unk>сарикукай<unk><unk>сарияпонскиекаллиграфыяпостояннонавещалихтайноотлюдейinfo:12|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор???Слязгомвыкатилсяиостановилсявозлемальчика....info:12|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор?Слязгомвыкатилсяиостановилсявозлемальчика.info:27|СегодняяичницейниктонезавтракалкаквпрочемивчеранаближайшемкнамрынкемыелифруктовыйсалатсосвежевыжатымсокомкаквстарыедобрыевременавБразилииCounts2grams:20270DescriptionN-gram sizeDescription1language model size2bigram3trigram