Package: anyks-sc
ANYKS Spell-checker (ASC)Project descriptionThere are a lot of typo and text error correction systems out there. Each one of those systems has its pros and cons, and each system has the right to live and will find its own user base. I would like to present my own version of the typo correction system with its own unique features.List of featuresCorrection of mistakes in words with aLevenshtein distanceof up to 4;Correction of different types of typos in words: insertion, deletion, substitution, rearrangement of character;Ё-fication of a word given the context (letter 'ё' is commonly replaced by letter 'е' in russian typed text);Context-based word capitalization for proper names and titles;Context-based splitting for words that are missing the separating space character;Text analysis without correcting the original text;Searching the text for errors, typos, incorrect context.RequirementsZlibBloomOpenSSLhnswlibHandyPackGperfToolsPython3NLohmann::jsonBigIntegerALMInstall PyBind11$python3-mpipinstallpybind11Ready-to-use dictionariesDictionary nameSize (GB)RAM (GB)N-gram orderLanguagewittenbell-3-big.asc1.9715.63RUwittenbell-3-middle.asc1.249.73RUmkneserney-3-middle.asc1.339.73RUwittenbell-3-single.asc0.7725.143RUwittenbell-5-single.asc1.3710.75RUTestingTo test the system, we used data from the2016 "spelling correction" competition organized by Dialog21.The trained binary dictionary that was used for testing:wittenbell-3-middle.ascModePrecisionRecallFMeasureTypo correction76.9762.7169.11Error correction73.7260.5366.48I think it is unnecessary to add any other data. Anyone can repeat the test if they wish (all files used for testing are attached below).Files used for testingtest.txt- Text used for testing;correct.txt- File with correct text;evaluate.py- Python3 script for correction result evaluation.Description of MethodsMethods:idw- Word ID retrieval methodidt- Token ID retrieval methodids- Sequence ID retrieval methodExample:>>>importasc>>>>>>asc.idw("hello")313191024>>>>>>asc.idw("
")1>>>>>>asc.idw("
")22>>>>>>asc.idw("<unk>")3>>>>>>asc.idt("1424")2>>>>>>asc.idt("hello")0>>>>>>asc.idw("Living")13268942501>>>>>>asc.idw("in")2047>>>>>>asc.idw("the")83201>>>>>>asc.idw("USA")72549>>>>>>asc.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:>>>importasc>>>>>>asc.setZone("com")>>>asc.setZone("ru")>>>asc.setZone("org")>>>asc.setZone("net")Methods:clear- Method clear all datasetAlphabet- Method set alphabetgetAlphabet- Method get alphabetExample:>>>importasc>>>>>>asc.getAlphabet()'abcdefghijklmnopqrstuvwxyz'>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.getAlphabet()'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя'>>>>>>asc.clear()>>>>>>asc.getAlphabet()'abcdefghijklmnopqrstuvwxyz'Methods:setUnknown- Method set unknown wordgetUnknown- Method extraction unknown wordExample:>>>importasc>>>>>>asc.setUnknown("word")>>>>>>asc.getUnknown()'word'Methods:infoIndex- Method for print information about the dictionarytoken- Method for determining the type of the token wordsaddText- Method of adding text for estimatecollectCorpus- Training method of assembling the text data for ASC [curpus = filename or dir, smoothing = wittenBell, modified = False, prepares = False, mod = 0.0, status = Null]pruneVocab- Dictionary pruning methodbuildArpa- Method for build ARPAwriteWords- 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 filesetThreads- Method for setting the number of threads used in work (0 - all available threads)setStemmingMethod- Method for setting external stemming functionloadIndex- Binary index loading methodspell- Method for performing spell-checkeranalyze- Method for analyze textaddAlt- Method for add a word/letter with an alternative lettersetAlphabet- Method for set AlphabetsetPilots- Method for set pilot wordssetSubstitutes- 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 wordaddUWord- Method for add a word that always starts with a capital lettersetUWords- Method for add a list of identifiers for words that always start with a capital letterreadArpa- Method for reading an ARPA file, language modelreadVocab- Method of reading the dictionarysetEmbedding- Method for set embeddingbuildIndex- Method for build spell-checker indexsetAdCw- Method for set dictionary characteristics (cw - count all words in dataset, ad - count all documents in dataset)setCode- Method for set code languageaddLemma- Method for add a Lemma to the dictionarysetNSWLibCount- Method for set the maximum number of options for analysisExample:>>>importasc>>>>>>asc.infoIndex("./wittenbell-3-single.asc")***********************************Code:RU*Version:1.0.0*Dictionaryname:Russian-single*Locale:en_US.UTF-8*Alphabet:абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz*Builddate:09/08/202015:39:31*Encrypted:NO*ALMtype:ALMv1*Allowapostrophe:NO*Countwords:106912195*Countdocuments:263998*Onlygoodwords:NO*Mixwordsindicts:YES*Confidencearpa:YES*Countupperwords:841915*Countpilotswords:15*Countbadwords:108790*Countgoodwords:124*Countsubstitutes:14*Countabbreviations:16532*Alternatives:е=>ё*Countalternativeswords:58138*Sizeembedding:28*Lengthn-gram:3*Countn-grams:6710202*Author:YuriyLobarev*Contacts:site:https://anyks.com,e-mail:forman@anyks.com*Copyright©:YuriyLobarev*Licensetype:GPLv3*Licensetext:TheGNUGeneralPublicLicenseisafree,copyleftlicenseforsoftwareandotherkindsofworks.Thelicensesformostsoftwareandotherpracticalworksaredesignedtotakeawayyourfreedomtoshareandchangetheworks.Bycontrast,theGNUGeneralPublicLicenseisintendedtoguaranteeyourfreedomtoshareandchangeallversionsofaprogram--tomakesureitremainsfreesoftwareforallitsusers.We,theFreeSoftwareFoundation,usetheGNUGeneralPublicLicenseformostofoursoftware;itappliesalsotoanyotherworkreleasedthiswaybyitsauthors.Youcanapplyittoyourprograms,too.Whenwespeakoffreesoftware,wearereferringtofreedom,notprice.OurGeneralPublicLicensesaredesignedtomakesurethatyouhavethefreedomtodistributecopiesoffreesoftware(andchargeforthemifyouwish),thatyoureceivesourcecodeorcangetitifyouwantit,thatyoucanchangethesoftwareorusepiecesofitinnewfreeprograms,andthatyouknowyoucandothesethings.Toprotectyourrights,weneedtopreventothersfromdenyingyoutheserightsoraskingyoutosurrendertherights.Therefore,youhavecertainresponsibilitiesifyoudistributecopiesofthesoftware,orifyoumodifyit:responsibilitiestorespectthefreedomofothers.Forexample,ifyoudistributecopiesofsuchaprogram,whethergratisorforafee,youmustpassontotherecipientsthesamefreedomsthatyoureceived.Youmustmakesurethatthey,too,receiveorcangetthesourcecode.Andyoumustshowthemthesetermssotheyknowtheirrights.DevelopersthatusetheGNUGPLprotectyourrightswithtwosteps:(1)assertcopyrightonthesoftware,and(2)offeryouthisLicensegivingyoulegalpermissiontocopy,distributeand/ormodifyit.Forthedevelopers' and authors'protection,theGPLclearlyexplainsthatthereisnowarrantyforthisfreesoftware.Forbothusers' and authors'sake,theGPLrequiresthatmodifiedversionsbemarkedaschanged,sothattheirproblemswillnotbeattributederroneouslytoauthorsofpreviousversions.Somedevicesaredesignedtodenyusersaccesstoinstallorrunmodifiedversionsofthesoftwareinsidethem,althoughthemanufacturercandoso.Thisisfundamentallyincompatiblewiththeaimofprotectingusers' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.Finally,everyprogramisthreatenedconstantlybysoftwarepatents.Statesshouldnotallowpatentstorestrictdevelopmentanduseofsoftwareongeneral-purposecomputers,butinthosethatdo,wewishtoavoidthespecialdangerthatpatentsappliedtoafreeprogramcouldmakeiteffectivelyproprietary.Topreventthis,theGPLassuresthatpatentscannotbeusedtorendertheprogramnon-free.Theprecisetermsandconditionsforcopying,distributionandmodificationfollow.URL:https://www.gnu.org/licenses/gpl-3.0.ru.html**********************************Example:>>>importasc>>>importspacy>>>importpymorphy2>>>>>>asc.setThreads(0)>>>asc.setOption(asc.options_t.ascSplit)>>>asc.setOption(asc.options_t.ascAlter)>>>asc.setOption(asc.options_t.ascESplit)>>>asc.setOption(asc.options_t.ascRSplit)>>>asc.setOption(asc.options_t.ascUppers)>>>asc.setOption(asc.options_t.ascHyphen)>>>asc.setOption(asc.options_t.ascWordRep)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.confidence)>>>asc.setOption(asc.options_t.stemming)>>>>>>morphRu=pymorphy2.MorphAnalyzer()>>>morphEn=spacy.load('en',disable=['parser','ner'])>>>>>>defstatus(text,status):...print(text,status)...>>>>>>defeng(word):...globalmorphEn...words=morphEn(word)...word=''.join([token.lemma_fortokeninwords]).strip()...ifword[0]!='-'andword[len(word)-1]!='-':...returnword...else:...return""...>>>>>>defrus(word):...globalmorphRu...ifmorphRu!=None:...word=morphRu.parse(word)[0].normal_form...returnword...else:...return""...>>>>>>defrun(word,lang):...iflang=="ru":...returnrus(word.lower())...eliflang=="en":...returneng(word.lower())...>>>>>>asc.setStemmingMethod(run)>>>>>>asc.loadIndex("./wittenbell-3-single.asc","",status)Loadingdictionary1Loadingdictionary2Loadingdictionary3Loadingdictionary4Loadingdictionary5Loadingdictionary6Loadingdictionary7Loadingdictionary8...LoadingBloomfilter100Loadingstemming0Loadingstemming1Loadingstemming2Loadingstemming3...Loadinglanguagemodel6Loadinglanguagemodel12Loadinglanguagemodel18Loadinglanguagemodel25Loadinglanguagemodel31Loadinglanguagemodel37...Loadingalternativewords1Loadingalternativewords2Loadingalternativewords3Loadingalternativewords4Loadingalternativewords5Loadingalternativewords6Loadingalternativewords7...Loadingsubstitutesletters7Loadingsubstitutesletters14Loadingsubstitutesletters21Loadingsubstitutesletters28Loadingsubstitutesletters35Loadingsubstitutesletters42...>>>>>>res=asc.spell("начальнег зажог павзрослому",True)>>>res('начальник зажёг по-взрослому',[('начальнег','начальник'),('зажог','зажёг'),('павзрослому','по-взрослому')])>>>>>>res=asc.analyze("слзы теут на мрозе")>>>res[('теут',['текут']),('мрозе',['мозг','мороз','морозе','моё']),('слзы',['слезы','слёзы'])]Example:>>>importasc>>>>>>asc.setThreads(0)>>>asc.setOption(asc.options_t.ascSplit)>>>asc.setOption(asc.options_t.ascAlter)>>>asc.setOption(asc.options_t.ascESplit)>>>asc.setOption(asc.options_t.ascRSplit)>>>asc.setOption(asc.options_t.ascUppers)>>>asc.setOption(asc.options_t.ascHyphen)>>>asc.setOption(asc.options_t.ascWordRep)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("ежик","ёжик")>>>asc.addAlt("Легкий","Лёгкий")...>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.idw("Сбербанк")13236490857asc.idw("Совкомбанк")22287680895>>>>>>asc.token("Сбербанк")'<word>'>>>asc.token("совкомбанк")'<word>'>>>>>>asc.setAbbrs({13236490857,22287680895})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")>>>>>>asc.token("Сбербанк")'<abbr>'>>>asc.token("совкомбанк")'<abbr>'>>>asc.token("сша")'<abbr>'>>>asc.token("СБЕР")'<abbr>'...>>>asc.getAbbrs(){13236490857,189243,22287680895,26938511}>>>>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")...>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")...>>>asc.addUWord("Москва")>>>asc.addUWord("Санкт-Петербург")...>>>defstatusArpa(status):...print("Read arpa",status)...>>>defstatusVocab(status):...print("Read vocab",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>asc.readArpa("./words.arpa",statusArpa)Readarpa0Readarpa1Readarpa2Readarpa3Readarpa4Readarpa5Readarpa6Readarpa7Readarpa8...>>>asc.readVocab("./words.vocab",statusVocab)Readvocab0Readvocab1Readvocab2Readvocab3Readvocab4Readvocab5Readvocab6...>>>asc.setEmbedding({..."а":0,"б":1,"в":2,"г":3,"д":4,"е":5,..."ё":5,"ж":6,"з":7,"и":8,"й":8,"к":9,..."л":10,"м":11,"н":12,"о":0,"п":13,"р":14,..."с":15,"т":16,"у":17,"ф":18,"х":19,"ц":20,..."ч":21,"ш":21,"щ":21,"ъ":22,"ы":23,"ь":22,..."э":5,"ю":24,"я":25,"<":26,">":26,"~":26,..."-":26,"+":26,"=":26,"*":26,"/":26,":":26,..."%":26,"|":26,"^":26,"&":26,"#":26,"'":26,..."\\":26,"0":27,"1":27,"2":27,"3":27,"4":27,..."5":27,"6":27,"7":27,"8":27,"9":27,"a":0,..."b":2,"c":15,"d":4,"e":5,"f":18,"g":3,..."h":12,"i":8,"j":6,"k":9,"l":10,"m":11,..."n":12,"o":0,"p":14,"q":13,"r":14,"s":15,..."t":16,"u":24,"v":21,"w":22,"x":19,"y":17,"z":7...},28)>>>>>>asc.buildIndex(statusIndex)Buildindex0Buildindex1Buildindex2Buildindex3Buildindex4...>>>res=asc.spell("начальнег зажог павзрослому",True)>>>res('начальник зажег по-взрослому',[('начальнег','начальник'),('зажог','зажег'),('павзрослому','по-взрослому')])>>>>>>res=asc.analyze("слзы теут на мрозе")>>>res[('теут',['текут']),('мрозе',['мозг','мороз','морозе','моё']),('слзы',['слезы','слёзы'])]Example:>>>importasc>>>>>>asc.setThreads(0)>>>asc.setOption(asc.options_t.ascSplit)>>>asc.setOption(asc.options_t.ascAlter)>>>asc.setOption(asc.options_t.ascESplit)>>>asc.setOption(asc.options_t.ascRSplit)>>>asc.setOption(asc.options_t.ascUppers)>>>asc.setOption(asc.options_t.ascHyphen)>>>asc.setOption(asc.options_t.ascWordRep)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("ежик","ёжик")>>>asc.addAlt("зажег","зажёг")>>>asc.addAlt("Легкий","Лёгкий")...>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")...>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")...>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")...>>>asc.idw("Москва")50387419219>>>asc.idw("Санкт-Петербург")68256898625>>>>>>asc.setUWords({50387419219:1,68256898625:1})>>>...>>>defstatusArpa(status):...print("Read arpa",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>asc.readArpa("./words.arpa",statusArpa)Readarpa0Readarpa1Readarpa2Readarpa3Readarpa4Readarpa5Readarpa6Readarpa7Readarpa8...>>>asc.setAdCw(38120,13)>>>>>>asc.setEmbedding({..."а":0,"б":1,"в":2,"г":3,"д":4,"е":5,..."ё":5,"ж":6,"з":7,"и":8,"й":8,"к":9,..."л":10,"м":11,"н":12,"о":0,"п":13,"р":14,..."с":15,"т":16,"у":17,"ф":18,"х":19,"ц":20,..."ч":21,"ш":21,"щ":21,"ъ":22,"ы":23,"ь":22,..."э":5,"ю":24,"я":25,"<":26,">":26,"~":26,..."-":26,"+":26,"=":26,"*":26,"/":26,":":26,..."%":26,"|":26,"^":26,"&":26,"#":26,"'":26,..."\\":26,"0":27,"1":27,"2":27,"3":27,"4":27,..."5":27,"6":27,"7":27,"8":27,"9":27,"a":0,..."b":2,"c":15,"d":4,"e":5,"f":18,"g":3,..."h":12,"i":8,"j":6,"k":9,"l":10,"m":11,..."n":12,"o":0,"p":14,"q":13,"r":14,"s":15,..."t":16,"u":24,"v":21,"w":22,"x":19,"y":17,"z":7...},28)>>>>>>asc.buildIndex(statusIndex)Buildindex0Buildindex1Buildindex2Buildindex3Buildindex4...>>>res=asc.spell("начальнег зажог павзрослому",True)>>>res('начальник зажёг по-взрослому',[('начальнег','начальник'),('зажог','зажёг'),('павзрослому','по-взрослому')])>>>>>>res=asc.analyze("слзы теут на мрозе")>>>res[('теут',['текут']),('мрозе',['мозг','мороз','морозе','моё']),('слзы',['слезы','слёзы'])]Example:>>>importasc>>>importspacy>>>importpymorphy2>>>>>>asc.setThreads(0)>>>asc.setOption(asc.options_t.ascSplit)>>>asc.setOption(asc.options_t.ascAlter)>>>asc.setOption(asc.options_t.ascESplit)>>>asc.setOption(asc.options_t.ascRSplit)>>>asc.setOption(asc.options_t.ascUppers)>>>asc.setOption(asc.options_t.ascHyphen)>>>asc.setOption(asc.options_t.ascWordRep)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.confidence)>>>asc.setOption(asc.options_t.stemming)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("ежик","ёжик")>>>asc.addAlt("зажег","зажёг")>>>asc.addAlt("Легкий","Лёгкий")...>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")...>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")...>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")...>>>asc.addUWord("Москва")>>>asc.addUWord("Санкт-Петербург")...>>>morphRu=pymorphy2.MorphAnalyzer()>>>morphEn=spacy.load('en',disable=['parser','ner'])>>>>>>defstatusArpa(status):...print("Read arpa",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>defstatusStemming(status):...print("Build stemming",status)...>>>defeng(word):...globalmorphEn...words=morphEn(word)...word=''.join([token.lemma_fortokeninwords]).strip()...ifword[0]!='-'andword[len(word)-1]!='-':...returnword...else:...return""...>>>defrus(word):...globalmorphRu...ifmorphRu!=None:...word=morphRu.parse(word)[0].normal_form...returnword...else:...return""...>>>defrun(word,lang):...iflang=="ru":...returnrus(word.lower())...eliflang=="en":...returneng(word.lower())...>>>asc.readArpa("./words.arpa",statusArpa)Readarpa0Readarpa1Readarpa2Readarpa3Readarpa4Readarpa5Readarpa6Readarpa7Readarpa8...>>>asc.setAdCw(38120,13)>>>>>>asc.setEmbedding({..."а":0,"б":1,"в":2,"г":3,"д":4,"е":5,..."ё":5,"ж":6,"з":7,"и":8,"й":8,"к":9,..."л":10,"м":11,"н":12,"о":0,"п":13,"р":14,..."с":15,"т":16,"у":17,"ф":18,"х":19,"ц":20,..."ч":21,"ш":21,"щ":21,"ъ":22,"ы":23,"ь":22,..."э":5,"ю":24,"я":25,"<":26,">":26,"~":26,..."-":26,"+":26,"=":26,"*":26,"/":26,":":26,..."%":26,"|":26,"^":26,"&":26,"#":26,"'":26,..."\\":26,"0":27,"1":27,"2":27,"3":27,"4":27,..."5":27,"6":27,"7":27,"8":27,"9":27,"a":0,..."b":2,"c":15,"d":4,"e":5,"f":18,"g":3,..."h":12,"i":8,"j":6,"k":9,"l":10,"m":11,..."n":12,"o":0,"p":14,"q":13,"r":14,"s":15,..."t":16,"u":24,"v":21,"w":22,"x":19,"y":17,"z":7...},28)>>>>>>asc.setCode("ru")>>>>>>asc.buildIndex(statusIndex)Buildindex0Buildindex1Buildindex2Buildindex3Buildindex4...>>>asc.setStemmingMethod(run)>>>>>>asc.buildStemming(statusStemming)Buildstemming0Buildstemming1Buildstemming2Buildstemming3Buildstemming4Buildstemming5...>>>asc.addLemma("говорил")>>>asc.addLemma("ходить")...>>>asc.setNSWLibCount(50000)>>>>>>res=asc.spell("начальнег зажог павзрослому",True)>>>res('начальник зажёг по-взрослому',[('начальнег','начальник'),('зажог','зажёг'),('павзрослому','по-взрослому')])>>>>>>res=asc.analyze("слзы теут на мрозе")>>>res[('теут',['текут']),('мрозе',['мозг','мороз','морозе','моё']),('слзы',['слезы','слёзы'])]Methods:setOption- Library options setting methodunsetOption- Disable module option methodExample:>>>importasc>>>>>>asc.unsetOption(asc.options_t.debug)>>>asc.unsetOption(asc.options_t.mixDicts)>>>asc.unsetOption(asc.options_t.onlyGood)>>>asc.unsetOption(asc.options_t.confidence)...DescriptionOptionsDescriptiondebugFlag debug modebloomFlag allowed to use Bloom filter to check wordsuppersFlag that allows you to correct the case of lettersstemmingFlag for stemming activationonlyGoodFlag 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-gramsonlyTyposFlag to only correct typoslowerCaseFlag 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 estimatingascSplitFlag to allow splitting of merged wordsascAlterFlag that allows you to replace alternative letters in wordsascESplitFlag to allow splitting of misspelled concatenated wordsascRSplitFlag that allows you to combine words separated by a spaceascUppersFlag that allows you to correct the case of lettersascHyphenFlag to allow splitting of concatenated words with hyphensascSkipUppFlag to skip uppercase wordsascSkipLatFlag allowing words in the latin alphabet to be skippedascSkipHypFlag to skip hyphenated wordsascWordRepFlag that allows you to remove duplicate wordsMethods:erratum- Method for search typos in texttoken- Method for determining the type of the token wordssplit- Method for performing a split of clumped wordssplitByHyphens- Method for performing a split of clumped words by hyphenscheck- Method for checking a word for its existence in the dictionaryExample:>>>importasc>>>>>>asc.setThreads(0)>>>asc.setOption(asc.options_t.ascSplit)>>>asc.setOption(asc.options_t.ascAlter)>>>asc.setOption(asc.options_t.ascESplit)>>>asc.setOption(asc.options_t.ascRSplit)>>>asc.setOption(asc.options_t.ascUppers)>>>asc.setOption(asc.options_t.ascHyphen)>>>asc.setOption(asc.options_t.ascWordRep)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.confidence)>>>>>>defstatus(text,status):...print(text,status)...>>>>>>asc.loadIndex("./wittenbell-3-single.asc","",status)Loadingdictionary1Loadingdictionary2Loadingdictionary3Loadingdictionary4Loadingdictionary5Loadingdictionary6Loadingdictionary7Loadingdictionary8...LoadingBloomfilter100Loadingstemming100Loadinglanguagemodel6Loadinglanguagemodel12Loadinglanguagemodel18Loadinglanguagemodel25Loadinglanguagemodel31Loadinglanguagemodel37...Loadingalternativewords1Loadingalternativewords2Loadingalternativewords3Loadingalternativewords4Loadingalternativewords5Loadingalternativewords6Loadingalternativewords7...Loadingsubstitutesletters7Loadingsubstitutesletters14Loadingsubstitutesletters21Loadingsubstitutesletters28Loadingsubstitutesletters35Loadingsubstitutesletters42...>>>asc.erratum("начальнег зажёг павзрослому")['начальнег','павзрослому']>>>asc.token("word")'<word>'>>>asc.token("12")'<num>'>>>asc.token("127.0.0.1")'<url>'>>>asc.token("14-33")'<range>'>>>asc.token("14:44:22")'<time>'>>>asc.token("08/02/2020")'<date>'>>>>>>asc.split("приветкакдела")'привет как Дела'>>>asc.split("былмастеромпрятатьсянонемогвоспользоватьсясвоимиталантамипотому")'был мастером прятаться но не мог воспользоваться своими талантами потому'>>>asc.split("Ябинатакойсоставбысходилеслиб")'я б и на такой состав бы сходил если б'>>>asc.split("летчерезXVIретроспективнопросматриватьэтобудет")'лет через XVI ретроспективно просматривать это будет'>>>>>>asc.splitByHyphens("привет-как-дела")'привет как дела'>>>asc.splitByHyphens("как-то-так")'как то так'>>>asc.splitByHyphens("как-то")'как-то'>>>>>>asc.check("hello")True>>>asc.check("Шварценеггер")True>>>asc.check("прывет")FalseMethods:setSize- Method for set size N-gramsetAlmV2- Method for set the language model type ALMv2unsetAlmV2- Method for unset the language model type ALMv2setLocale- Method set locale (Default: en_US.UTF-8)setCode- Method for set code languagesetLictype- Method for set dictionary license information typesetName- Method for set dictionary namesetAuthor- Method for set the dictionary authorsetCopyright- Method for set copyright on a dictionarysetLictext- Method for set license information dictionarysetContacts- Method for set contact details of the dictionary authorpruneArpa- Language model pruning methodaddWord- Method for add a word to the dictionarygenerateEmbedding- Method for generation embeddingsetSizeEmbedding- Method for set the embedding sizeDescriptionSmoothingwittenBelladdSmoothgoodTuringconstDiscountnaturalDiscountkneserNeymodKneserNeyExample:>>>importasc>>>>>>asc.setSize(3)>>>asc.setAlmV2()>>>asc.setThreads(0)>>>asc.setLocale("en_US.UTF-8")>>>>>>asc.setOption(asc.options_t.allowUnk)>>>asc.setOption(asc.options_t.resetUnk)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.tokenWords)>>>asc.setOption(asc.options_t.confidence)>>>asc.setOption(asc.options_t.interpolate)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("ежик","ёжик")>>>asc.addAlt("зажег","зажёг")>>>asc.addAlt("Легкий","Лёгкий")>>>>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")>>>>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")>>>>>>asc.addUWord("Москва")>>>asc.addUWord("Санкт-Петербург")>>>>>>defstatusMap(status):...print("Write map",status)...>>>defstatusArpa1(status):...print("Build arpa",status)...>>>defstatusArpa2(status):...print("Write arpa",status)...>>>defstatusWords(status):...print("Write words",status)...>>>defstatusVocab(status):...print("Write vocab",status)...>>>defstatusAbbrs(status):...print("Write abbrs",status)...>>>defstatusPrune(status):...print("Prune vocab",status)...>>>defstatusNgram(status):...print("Write ngram",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>defstatus(text,status):...print(text,status)...>>>asc.addText("The future is now",0)>>>>>>asc.collectCorpus("./corpus/text.txt",asc.smoothing_t.wittenBell,0.0,False,False,status)Readtextcorpora0Readtextcorpora1Readtextcorpora2Readtextcorpora3Readtextcorpora4Readtextcorpora5Readtextcorpora6...>>>asc.pruneVocab(-15.0,0,0,statusPrune)Prunevocab0Prunevocab1Prunevocab2Prunevocab3Prunevocab4Prunevocab5Prunevocab6...# Prune VOCAB or prune ARPA example>>>asc.pruneArpa(0.015,3,statusPrune)Prunearpa0Prunearpa1Prunearpa2Prunearpa3Prunearpa4Prunearpa5Prunearpa6...>>>asc.buildArpa(statusArpa1)Buildarpa0Buildarpa1Buildarpa2Buildarpa3Buildarpa4Buildarpa5Buildarpa6...>>>asc.writeMap("./words.map",statusMap)Writemap0Writemap1Writemap2Writemap3Writemap4Writemap5Writemap6...>>>asc.writeArpa("./words.arpa",statusArpa2)Writearpa0Writearpa1Writearpa2Writearpa3Writearpa4Writearpa5Writearpa6...>>>asc.writeWords("./words.txt",statusWords)Writewords0Writewords1Writewords2Writewords3Writewords4Writewords5Writewords6...>>>asc.writeVocab("./words.vocab",statusVocab)Writevocab0Writevocab1Writevocab2Writevocab3Writevocab4Writevocab5Writevocab6...>>>asc.writeAbbrs("./words1.abbr",statusAbbrs)Writeabbrs50Writeabbrs100>>>>>>asc.writeSuffix("./words2.abbr",statusAbbrs)Writeabbrs10Writeabbrs20Writeabbrs30Writeabbrs40Writeabbrs50Writeabbrs60...>>>asc.writeNgrams("./words.ngram",statusNgram)Writengram0Writengram1Writengram2Writengram3Writengram4Writengram5Writengram6...>>>asc.setCode("RU")>>>asc.setLictype("MIT")>>>asc.setName("Russian")>>>asc.setAuthor("You name")>>>asc.setCopyright("You company LLC")>>>asc.setLictext("... License text ...")>>>asc.setContacts("site: https://example.com, e-mail: info@example.com")>>>>>>asc.setEmbedding({..."а":0,"б":1,"в":2,"г":3,"д":4,"е":5,..."ё":5,"ж":6,"з":7,"и":8,"й":8,"к":9,..."л":10,"м":11,"н":12,"о":0,"п":13,"р":14,..."с":15,"т":16,"у":17,"ф":18,"х":19,"ц":20,..."ч":21,"ш":21,"щ":21,"ъ":22,"ы":23,"ь":22,..."э":5,"ю":24,"я":25,"<":26,">":26,"~":26,..."-":26,"+":26,"=":26,"*":26,"/":26,":":26,..."%":26,"|":26,"^":26,"&":26,"#":26,"'":26,..."\\":26,"0":27,"1":27,"2":27,"3":27,"4":27,..."5":27,"6":27,"7":27,"8":27,"9":27,"a":0,..."b":2,"c":15,"d":4,"e":5,"f":18,"g":3,..."h":12,"i":8,"j":6,"k":9,"l":10,"m":11,..."n":12,"o":0,"p":14,"q":13,"r":14,"s":15,..."t":16,"u":24,"v":21,"w":22,"x":19,"y":17,"z":7...},28)>>>>>asc.saveIndex("./3-wittenbell.asc","",128,status)Readwords1Readwords2Readwords3Readwords4Readwords5Readwords6...Traindictionary0Traindictionary1Traindictionary2Traindictionary3Traindictionary4Traindictionary5Traindictionary6...Dumpdictionary0Dumpdictionary1Dumpdictionary2Dumpdictionary3Dumpdictionary4Dumpdictionary5Dumpdictionary6...Dumpalternativeletters100Dumpalternativeletters100Dumpalternativewords200Dumpalternativewords100Dumplanguagemodel0Dumplanguagemodel100Dumpsubstitutesletters9Dumpsubstitutesletters18Dumpsubstitutesletters27Dumpsubstitutesletters36Dumpsubstitutesletters45Dumpsubstitutesletters54Dumpsubstitutesletters63Dumpsubstitutesletters72Dumpsubstitutesletters81Dumpsubstitutesletters90Dumpsubstitutesletters100Dumpsubstitutesletters100>>>>>>asc.infoIndex("./3-wittenbell.asc")***********************************Code:RU*Version:1.0.0*Dictionaryname:Russian*Locale:en_US.UTF-8*Alphabet:абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz*Builddate:09/14/202001:39:50*Encrypted:NO*ALMtype:ALMv2*Allowapostrophe:NO*Countwords:38120*Countdocuments:13*Onlygoodwords:NO*Mixwordsindicts:YES*Confidencearpa:YES*Countupperwords:2*Countpilotswords:15*Countbadwords:3*Countgoodwords:2*Countsubstitutes:11*Countabbreviations:12*Alternatives:е=>ё*Countalternativeswords:1*Sizeembedding:28*Lengthn-gram:1*Author:Youname*Contacts:site:https://example.com,e-mail:info@example.com*Copyright©:YoucompanyLLC*Licensetype:MIT*Licensetext:...Licensetext...**********************************Example:>>>importasc>>>>>>asc.setSize(3)>>>asc.setThreads(0)>>>asc.setLocale("en_US.UTF-8")>>>>>>asc.setOption(asc.options_t.allowUnk)>>>asc.setOption(asc.options_t.resetUnk)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.tokenWords)>>>asc.setOption(asc.options_t.confidence)>>>asc.setOption(asc.options_t.interpolate)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("Легкий","Лёгкий")>>>>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")>>>>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")>>>>>>asc.addUWord("Москва")>>>asc.addUWord("Санкт-Петербург")>>>>>>defstatusArpa(status):...print("Read arpa",status)...>>>defstatusVocab(status):...print("Read vocab",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>defstatus(text,status):...print(text,status)...>>>asc.readArpa("./words.arpa",statusArpa)Readarpa0Readarpa1Readarpa2Readarpa3Readarpa4Readarpa5Readarpa6...>>>asc.readVocab("./words.vocab",statusVocab)Readvocab0Readvocab1Readvocab2Readvocab3Readvocab4Readvocab5Readvocab6...>>>asc.setCode("RU")>>>asc.setLictype("MIT")>>>asc.setName("Russian")>>>asc.setAuthor("You name")>>>asc.setCopyright("You company LLC")>>>asc.setLictext("... License text ...")>>>asc.setContacts("site: https://example.com, e-mail: info@example.com")>>>>>>asc.setEmbedding({..."а":0,"б":1,"в":2,"г":3,"д":4,"е":5,..."ё":5,"ж":6,"з":7,"и":8,"й":8,"к":9,..."л":10,"м":11,"н":12,"о":0,"п":13,"р":14,..."с":15,"т":16,"у":17,"ф":18,"х":19,"ц":20,..."ч":21,"ш":21,"щ":21,"ъ":22,"ы":23,"ь":22,..."э":5,"ю":24,"я":25,"<":26,">":26,"~":26,..."-":26,"+":26,"=":26,"*":26,"/":26,":":26,..."%":26,"|":26,"^":26,"&":26,"#":26,"'":26,..."\\":26,"0":27,"1":27,"2":27,"3":27,"4":27,..."5":27,"6":27,"7":27,"8":27,"9":27,"a":0,..."b":2,"c":15,"d":4,"e":5,"f":18,"g":3,..."h":12,"i":8,"j":6,"k":9,"l":10,"m":11,..."n":12,"o":0,"p":14,"q":13,"r":14,"s":15,..."t":16,"u":24,"v":21,"w":22,"x":19,"y":17,"z":7...},28)>>>>>>asc.buildIndex(statusIndex)Buildindex0Buildindex1Buildindex2Buildindex3Buildindex4Buildindex5Buildindex6...>>>asc.saveIndex("./3-wittenbell.asc","",128,status)Dumpdictionary0Dumpdictionary1Dumpdictionary2Dumpdictionary3Dumpdictionary4Dumpdictionary5Dumpdictionary6...Dumpalternativeletters100Dumpalternativeletters100Dumpalternativewords200Dumpalternativewords100Dumplanguagemodel0Dumplanguagemodel100Dumpsubstitutesletters9Dumpsubstitutesletters18Dumpsubstitutesletters27Dumpsubstitutesletters36Dumpsubstitutesletters45Dumpsubstitutesletters54Dumpsubstitutesletters63Dumpsubstitutesletters72Dumpsubstitutesletters81Dumpsubstitutesletters90Dumpsubstitutesletters100Dumpsubstitutesletters100>>>>>>asc.infoIndex("./3-wittenbell.asc")***********************************Code:RU*Version:1.0.0*Dictionaryname:Russian*Locale:en_US.UTF-8*Alphabet:абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz*Builddate:09/14/202001:58:52*Encrypted:NO*ALMtype:ALMv1*Allowapostrophe:NO*Countwords:38120*Countdocuments:13*Onlygoodwords:NO*Mixwordsindicts:YES*Confidencearpa:YES*Countupperwords:2*Countpilotswords:15*Countbadwords:3*Countgoodwords:2*Countsubstitutes:11*Countabbreviations:2*Alternatives:е=>ё*Countalternativeswords:1*Sizeembedding:28*Lengthn-gram:3*Countn-grams:353*Author:Youname*Contacts:site:https://example.com,e-mail:info@example.com*Copyright©:YoucompanyLLC*Licensetype:MIT*Licensetext:...Licensetext...**********************************Example:>>>importasc>>>>>>asc.setSize(3)>>>asc.setAlmV2()>>>asc.setThreads(0)>>>asc.setLocale("en_US.UTF-8")>>>>>>asc.setOption(asc.options_t.allowUnk)>>>asc.setOption(asc.options_t.resetUnk)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.tokenWords)>>>asc.setOption(asc.options_t.confidence)>>>asc.setOption(asc.options_t.interpolate)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("Легкий","Лёгкий")>>>>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")>>>>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")>>>>>>asc.addUWord("Москва")>>>asc.addUWord("Санкт-Петербург")>>>>>>defstatusArpa(status):...print("Read arpa",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>defstatusPrune(status):...print("Prune arpa",status)...>>>defstatus(text,status):...print(text,status)...>>>asc.readArpa("./words.arpa",statusArpa)Readarpa0Readarpa1Readarpa2Readarpa3Readarpa4Readarpa5Readarpa6...>>>asc.setAdCw(38120,13)>>>>>>asc.addWord("министерство")>>>asc.addWord("возмездие",0,1)>>>asc.addWord("возражение",asc.idw("возражение"),2)...>>>>>>asc.setCode("RU")>>>asc.setLictype("MIT")>>>asc.setName("Russian")>>>asc.setAuthor("You name")>>>asc.setCopyright("You company LLC")>>>asc.setLictext("... License text ...")>>>asc.setContacts("site: https://example.com, e-mail: info@example.com")>>>>>>asc.setEmbedding({..."а":0,"б":1,"в":2,"г":3,"д":4,"е":5,..."ё":5,"ж":6,"з":7,"и":8,"й":8,"к":9,..."л":10,"м":11,"н":12,"о":0,"п":13,"р":14,..."с":15,"т":16,"у":17,"ф":18,"х":19,"ц":20,..."ч":21,"ш":21,"щ":21,"ъ":22,"ы":23,"ь":22,..."э":5,"ю":24,"я":25,"<":26,">":26,"~":26,..."-":26,"+":26,"=":26,"*":26,"/":26,":":26,..."%":26,"|":26,"^":26,"&":26,"#":26,"'":26,..."\\":26,"0":27,"1":27,"2":27,"3":27,"4":27,..."5":27,"6":27,"7":27,"8":27,"9":27,"a":0,..."b":2,"c":15,"d":4,"e":5,"f":18,"g":3,..."h":12,"i":8,"j":6,"k":9,"l":10,"m":11,..."n":12,"o":0,"p":14,"q":13,"r":14,"s":15,..."t":16,"u":24,"v":21,"w":22,"x":19,"y":17,"z":7...},28)>>>>>>asc.buildIndex(statusIndex)Buildindex0Buildindex1Buildindex2Buildindex3Buildindex4Buildindex5Buildindex6...>>>asc.saveIndex("./3-wittenbell.asc","password",128,status)Dumpdictionary0Dumpdictionary1Dumpdictionary2Dumpdictionary3Dumpdictionary4Dumpdictionary5Dumpdictionary6...Dumpalternativeletters100Dumpalternativeletters100Dumpalternativewords200Dumpalternativewords100Dumplanguagemodel0Dumplanguagemodel100Dumpsubstitutesletters9Dumpsubstitutesletters18Dumpsubstitutesletters27Dumpsubstitutesletters36Dumpsubstitutesletters45Dumpsubstitutesletters54Dumpsubstitutesletters63Dumpsubstitutesletters72Dumpsubstitutesletters81Dumpsubstitutesletters90Dumpsubstitutesletters100Dumpsubstitutesletters100>>>>>>asc.infoIndex("./3-wittenbell.asc")***********************************Code:RU*Version:1.0.0*Dictionaryname:Russian*Builddate:09/14/202002:09:38*Encrypted:YES*ALMtype:ALMv2*Allowapostrophe:NO*Countwords:38120*Countdocuments:13*Onlygoodwords:NO*Mixwordsindicts:YES*Confidencearpa:YES*Countupperwords:2*Countpilotswords:15*Countbadwords:3*Countgoodwords:2*Countsubstitutes:11*Countabbreviations:2*Alternatives:е=>ё*Countalternativeswords:1*Sizeembedding:28*Lengthn-gram:3*Countn-grams:353*Author:Youname*Contacts:site:https://example.com,e-mail:info@example.com*Copyright©:YoucompanyLLC*Licensetype:MIT*Licensetext:...Licensetext...**********************************Example:>>>importasc>>>>>>asc.setSize(3)>>>asc.setAlmV2()>>>asc.setThreads(0)>>>asc.setLocale("en_US.UTF-8")>>>>>>asc.setOption(asc.options_t.allowUnk)>>>asc.setOption(asc.options_t.resetUnk)>>>asc.setOption(asc.options_t.mixDicts)>>>asc.setOption(asc.options_t.tokenWords)>>>asc.setOption(asc.options_t.confidence)>>>asc.setOption(asc.options_t.interpolate)>>>>>>asc.addAlt("е","ё")>>>asc.addAlt("Легкий","Лёгкий")>>>>>>asc.setAlphabet("абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz")>>>>>>asc.setPilots(["а","у","в","о","с","к","б","и","я","э","a","i","o","e","g"])>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.addAbbr("США")>>>asc.addAbbr("Сбер")>>>asc.addGoodword("T-34")>>>asc.addGoodword("АН-25")>>>>>>asc.addBadword("ийти")>>>asc.addBadword("циган")>>>asc.addBadword("апичатка")>>>>>>asc.addUWord("Москва")>>>asc.addUWord("Санкт-Петербург")>>>>>>defstatusArpa(status):...print("Read arpa",status)...>>>defstatusIndex(status):...print("Build index",status)...>>>defstatusPrune(status):...print("Prune arpa",status)...>>>defstatus(text,status):...print(text,status)...>>>asc.readArpa("./words.arpa",statusArpa)Readarpa0Readarpa1Readarpa2Readarpa3Readarpa4Readarpa5Readarpa6...>>>asc.setAdCw(38120,13)>>>>>>asc.addWord("министерство")>>>asc.addWord("возмездие",0,1)>>>asc.addWord("возражение",asc.idw("возражение"),2)...>>>>>>asc.setCode("RU")>>>asc.setLictype("MIT")>>>asc.setName("Russian")>>>asc.setAuthor("You name")>>>asc.setCopyright("You company LLC")>>>asc.setLictext("... License text ...")>>>asc.setContacts("site: https://example.com, e-mail: info@example.com")>>>>>>asc.setSizeEmbedding(32)>>>asc.generateEmbedding()>>>>>>asc.buildIndex(statusIndex)Buildindex0Buildindex1Buildindex2Buildindex3Buildindex4Buildindex5Buildindex6...>>>asc.saveIndex("./3-wittenbell.asc","password",128,status)Dumpdictionary0Dumpdictionary1Dumpdictionary2Dumpdictionary3Dumpdictionary4Dumpdictionary5Dumpdictionary6...Dumpalternativeletters100Dumpalternativeletters100Dumpalternativewords200Dumpalternativewords100Dumplanguagemodel0Dumplanguagemodel100Dumpsubstitutesletters9Dumpsubstitutesletters18Dumpsubstitutesletters27Dumpsubstitutesletters36Dumpsubstitutesletters45Dumpsubstitutesletters54Dumpsubstitutesletters63Dumpsubstitutesletters72Dumpsubstitutesletters81Dumpsubstitutesletters90Dumpsubstitutesletters100Dumpsubstitutesletters100>>>>>>asc.infoIndex("./3-wittenbell.asc")***********************************Code:RU*Version:1.0.0*Dictionaryname:Russian*Builddate:09/14/202002:09:38*Encrypted:YES*ALMtype:ALMv2*Allowapostrophe:NO*Countwords:38120*Countdocuments:13*Onlygoodwords:NO*Mixwordsindicts:YES*Confidencearpa:YES*Countupperwords:2*Countpilotswords:15*Countbadwords:3*Countgoodwords:2*Countsubstitutes:11*Countabbreviations:2*Alternatives:е=>ё*Countalternativeswords:1*Sizeembedding:28*Lengthn-gram:3*Countn-grams:353*Author:Youname*Contacts:site:https://example.com,e-mail:info@example.com*Copyright©:YoucompanyLLC*Licensetype:MIT*Licensetext:...Licensetext...**********************************Methods:size- Method of obtaining the size of the N-gramExample:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.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:>>>importasc>>>asc.damerauLevenshtein("привет","приветик")2>>>>>>asc.damerauLevenshtein("приевтик","приветик")1>>>>>>asc.distanceLevenshtein("приевтик","приветик")2>>>>>>asc.tanimoto("привет","приветик")0.7142857142857143>>>>>>asc.tanimoto("привеитк","приветик")0.4>>>>>>asc.needlemanWunsch("привеитк","приветик")4>>>>>>asc.needlemanWunsch("привет","приветик")2>>>>>>asc.damerauLevenshtein("acre","car")2>>>asc.distanceLevenshtein("acre","car")3>>>>>>asc.damerauLevenshtein("anteater","theatre")4>>>asc.distanceLevenshtein("anteater","theatre")5>>>>>>asc.damerauLevenshtein("banana","nanny")3>>>asc.distanceLevenshtein("banana","nanny")3>>>>>>asc.damerauLevenshtein("cat","crate")2>>>asc.distanceLevenshtein("cat","crate")2>>>>>>asc.mulctLevenshtein("привет","приветик")4>>>>>>asc.mulctLevenshtein("приевтик","приветик")1>>>>>>asc.mulctLevenshtein("acre","car")3>>>>>>asc.mulctLevenshtein("anteater","theatre")5>>>>>>asc.mulctLevenshtein("banana","nanny")4>>>>>>asc.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:>>>importasc>>>>>>defcallbackFn(text):...print(text)...>>>asc.isAllowApostrophe()False>>>asc.switchAllowApostrophe()>>>>>>asc.isAllowApostrophe()True>>>asc.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:>>>importasc>>>>>>defcallbackFn(text):...print(text)...>>>asc.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:>>>importasc>>>>>>asc.setOption(asc.options_t.uppers)>>>>>>asc.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:>>>importasc>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>defcallbackFn(text):...print(text)...>>>asc.textToJson('«Бе́лая стрела́» — согласно распространённой в 1990-е годы в России городской легенде, якобы специально организованная и подготовленная законспирированная правительственная спецслужба, сотрудники которой — бывшие и действовавшие милиционеры и спецназовцы, имеющие право на физическую ликвидацию особо опасных уголовных авторитетов и лидеров орудовавших в России ОПГ, относительно которых не представляется возможным привлечения их к уголовной ответственности законными методами[1][2][3]. Несмотря на отсутствие официальных доказательств существования организации и многочисленные опровержения со стороны силовых структур и служб безопасности[4], в российском обществе легенду считают основанной на подлинных фактах громких убийств криминальных авторитетов, совершённых в 1990-е годы, и не исключают существование реальной спецслужбы[5].',callbackFn)[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]>>>>>>asc.jsonToText('[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]',callbackFn)«Белаястрела»—согласнораспространённойв1990-егодывРоссиигородскойлегенде,якобыспециальноорганизованнаяиподготовленнаязаконспирированнаяправительственнаяспецслужба,сотрудникикоторой—бывшиеидействовавшиемилиционерыиспецназовцы,имеющиеправонафизическуюликвидациюособоопасныхуголовныхавторитетовилидероворудовавшихвРоссииОПГ,относительнокоторыхнепредставляетсявозможнымпривлеченияихкуголовнойответственностизаконнымиметодами[1][2][3].Несмотрянаотсутствиеофициальныхдоказательствсуществованияорганизацииимногочисленныеопровержениясосторонысиловыхструктурислужббезопасности[4],вроссийскомобществелегендусчитаютоснованнойнаподлинныхфактахгромкихубийствкриминальныхавторитетов,совершённыхв1990-егоды,инеисключаютсуществованиереальнойспецслужбы[5].>>>>>>asc.allowStress()>>>asc.textToJson('«Бе́лая стрела́» — согласно распространённой в 1990-е годы в России городской легенде, якобы специально организованная и подготовленная законспирированная правительственная спецслужба, сотрудники которой — бывшие и действовавшие милиционеры и спецназовцы, имеющие право на физическую ликвидацию особо опасных уголовных авторитетов и лидеров орудовавших в России ОПГ, относительно которых не представляется возможным привлечения их к уголовной ответственности законными методами[1][2][3]. Несмотря на отсутствие официальных доказательств существования организации и многочисленные опровержения со стороны силовых структур и служб безопасности[4], в российском обществе легенду считают основанной на подлинных фактах громких убийств криминальных авторитетов, совершённых в 1990-е годы, и не исключают существование реальной спецслужбы[5].',callbackFn)[["«","Бе́лая","стрела́","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]>>>>>>asc.jsonToText('[["«","Бе́лая","стрела́","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]',callbackFn)«Бе́лаястрела́»—согласнораспространённойв1990-егодывРоссиигородскойлегенде,якобыспециальноорганизованнаяиподготовленнаязаконспирированнаяправительственнаяспецслужба,сотрудникикоторой—бывшиеидействовавшиемилиционерыиспецназовцы,имеющиеправонафизическуюликвидациюособоопасныхуголовныхавторитетовилидероворудовавшихвРоссииОПГ,относительнокоторыхнепредставляетсявозможнымпривлеченияихкуголовнойответственностизаконнымиметодами[1][2][3].Несмотрянаотсутствиеофициальныхдоказательствсуществованияорганизацииимногочисленныеопровержениясосторонысиловыхструктурислужббезопасности[4],вроссийскомобществелегендусчитаютоснованнойнаподлинныхфактахгромкихубийствкриминальныхавторитетов,совершённыхв1990-егоды,инеисключаютсуществованиереальнойспецслужбы[5].>>>>>>asc.disallowStress()>>>asc.textToJson('«Бе́лая стрела́» — согласно распространённой в 1990-е годы в России городской легенде, якобы специально организованная и подготовленная законспирированная правительственная спецслужба, сотрудники которой — бывшие и действовавшие милиционеры и спецназовцы, имеющие право на физическую ликвидацию особо опасных уголовных авторитетов и лидеров орудовавших в России ОПГ, относительно которых не представляется возможным привлечения их к уголовной ответственности законными методами[1][2][3]. Несмотря на отсутствие официальных доказательств существования организации и многочисленные опровержения со стороны силовых структур и служб безопасности[4], в российском обществе легенду считают основанной на подлинных фактах громких убийств криминальных авторитетов, совершённых в 1990-е годы, и не исключают существование реальной спецслужбы[5].',callbackFn)[["«","Белая","стрела","»","—","согласно","распространённой","в","1990-е","годы","в","России","городской","легенде",",","якобы","специально","организованная","и","подготовленная","законспирированная","правительственная","спецслужба",",","сотрудники","которой","—","бывшие","и","действовавшие","милиционеры","и","спецназовцы",",","имеющие","право","на","физическую","ликвидацию","особо","опасных","уголовных","авторитетов","и","лидеров","орудовавших","в","России","ОПГ",",","относительно","которых","не","представляется","возможным","привлечения","их","к","уголовной","ответственности","законными","методами","[","1","]","[","2","]","[","3","]","."],["Несмотря","на","отсутствие","официальных","доказательств","существования","организации","и","многочисленные","опровержения","со","стороны","силовых","структур","и","служб","безопасности","[","4","]",",","в","российском","обществе","легенду","считают","основанной","на","подлинных","фактах","громких","убийств","криминальных","авторитетов",",","совершённых","в","1990-е","годы",",","и","не","исключают","существование","реальной","спецслужбы","[","5","]","."]]>>>>>>asc.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:>>>importasc>>>>>>asc.setBadwords(["hello","world","test"])>>>>>>asc.getBadwords(){1554834897,2156498622,28307030}>>>>>>asc.addBadword("test2")>>>>>>asc.getBadwords(){5170183734,1554834897,2156498622,28307030}Example:>>>importasc>>>>>>asc.setBadwords({24227504,1219922507,1794085167})>>>>>>asc.getBadwords(){24227504,1219922507,1794085167}>>>>>>asc.clear(asc.clear_t.badwords)>>>>>>asc.getBadwords(){}Methods:addGoodword- Method add good wordsetGoodwords- Method set words to whitelistgetGoodwords- Method get words in whitelistExample:>>>importasc>>>>>>asc.setGoodwords(["hello","world","test"])>>>>>>asc.getGoodwords(){1554834897,2156498622,28307030}>>>>>>asc.addGoodword("test2")>>>>>>asc.getGoodwords(){5170183734,1554834897,2156498622,28307030}>>>>>>asc.clear(asc.clear_t.goodwords)>>>>>asc.getGoodwords(){}Example:>>>importasc>>>>>>asc.setGoodwords({24227504,1219922507,1794085167})>>>>>>asc.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:>>>importasc>>>>>>asc.setUserToken("usa")>>>>>>asc.setUserToken("russia")>>>>>>asc.getUserTokenId("usa")5759809081>>>>>>asc.getUserTokenId("russia")9910674734>>>>>>asc.getUserTokens()['usa','russia']>>>>>>asc.getUserTokenWord(5759809081)'usa'>>>>>>asc.getUserTokenWord(9910674734)'russia'>>>>>asc.clear(asc.clear_t.utokens)>>>>>>asc.getUserTokens()[]Methods:findNgram- N-gram search method in textword- "Method to extract a word by its identifier"Example:>>>importasc>>>>>>defcallbackFn(text):...print(text)...>>>asc.setOption(asc.options_t.confidence)>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>asc.readArpa('./lm.arpa')>>>>>>asc.idw("привет")2487910648>>>asc.word(2487910648)'привет'>>>>>>asc.findNgram("Особое место занимает чудотворная икона Лобзание Христа Иудою",callbackFn)
ОсобоеОсобоеместоместозанимаетзанимаетчудотворнаячудотворнаяиконаиконаЛобзаниеЛобзаниеХристаХристаИудоюИудою
>>>Methods:setUserTokenMethod- Method for set a custom token processing functionExample:>>>importasc>>>>>>deffn(token,word):...iftokenand(token=="<usa>"):...ifwordand(word.lower()=="usa"):...returnTrue...eliftokenand(token=="<russia>"):...ifwordand(word.lower()=="russia"):...returnTrue...returnFalse...>>>asc.setUserToken("usa")>>>>>>asc.setUserToken("russia")>>>>>>asc.setUserTokenMethod("usa",fn)>>>>>>asc.setUserTokenMethod("russia",fn)>>>>>>asc.idw("usa")5759809081>>>>>>asc.idw("russia")9910674734>>>>>>asc.getUserTokenWord(5759809081)'usa'>>>>>>asc.getUserTokenWord(9910674734)'russia'Methods:setWordPreprocessingMethod- Method for set the word preprocessing functionExample:>>>importasc>>>>>>defrun(word,context):...ifword=="возле":word="около"...returnword...>>>asc.setOption(asc.options_t.debug)>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.setWordPreprocessingMethod(run)>>>>>>a=asc.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:>>>importasc>>>>>>asc.setLogfile("./log.txt")>>>>>>asc.setOOvFile("./oov.txt")Methods:perplexity- Perplexity calculationpplConcatenate- Method of combining perplexiapplByFiles- Method for reading perplexity calculation by file or group of filesExample:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>a=asc.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=asc.pplByFiles("./text.txt")>>>>>>c=asc.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:>>>importasc>>>>>>deftokensFn(word,context,reset,stop):...print(word," => ",context)...returnTrue...>>>asc.switchAllowApostrophe()>>>>>>asc.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:>>>importasc>>>>>>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...>>>asc.setTokenizerFn(tokenizerFn)>>>>>>asc.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:>>>importasc>>>>>>defsentencesFn(text):...print("Sentences:",text)...returnTrue...>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.sentences(sentencesFn)Sentences:
Вобщем
Sentences:
Слязгомвыкатилсяиостановилсявозлемальчика
Sentences:
Уменянет
Sentences:
Явообщенехочу
Sentences:
Даивобщем
Sentences:
Немогу
Sentences:
Нувобщем
Sentences:
Такчтоявообщенехочу
Sentences:
Потомучтоявообщенехочу
Sentences:
Продолжениеследует
Sentences:
Неожиданноизподворотниволегаудариляркийпрожекторпатрульныйтрактор
>>>>>>asc.sentencesToFile(5,"./result.txt")Methods:fixUppers- Method for correcting registers in the textfixUppersByFiles- Method for correcting text registers in a text fileExample:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.fixUppers("неожиданно из подворотни в олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")'Неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор??? С лязгом выкатился и остановился возле мальчика....'>>>>>>asc.fixUppersByFiles("./corpus","./result.txt","txt")Methods:checkHypLat- Hyphen and latin character search methodExample:>>>importasc>>>>>>asc.checkHypLat("Hello-World")(True,True)>>>>>>asc.checkHypLat("Hello")(False,True)>>>>>>asc.checkHypLat("Привет")(False,False)>>>>>>asc.checkHypLat("так-как")(True,False)Methods:getUppers- Method for extracting registers for each wordcountLetter- Method for counting the amount of a specific letter in a wordExample:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.idw("Living")10493385932>>>>>>asc.idw("in")3301>>>>>>asc.idw("the")217280>>>>>>asc.idw("USA")188643>>>>>>asc.getUppers([10493385932,3301,217280,188643])[1,0,0,7]>>>>>>asc.countLetter("hello-world","-")1>>>>>>asc.countLetter("hello-world","l")3Methods:urls- Method for extracting URL address coordinates in a stringExample:>>>importasc>>>>>>asc.urls("This website: example.com was designed with ..."){14:25}>>>>>>asc.urls("This website: https://a.b.c.example.net?id=52#test-1 was designed with ..."){14:52}>>>>>>asc.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:>>>importasc>>>>>>asc.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:>>>importasc>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.getSubstitutes(){'a':'а','b':'в','c':'с','e':'е','h':'н','k':'к','m':'м','o':'о','p':'р','t':'т','x':'х'}>>>>>>str="ПPИBETИК">>>>>>str.lower()'пpиbetик'>>>>>>asc.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:>>>importasc>>>>>>asc.idw("<date>")6>>>>>>asc.idw("<time>")7>>>>>>asc.idw("<abbr>")5>>>>>>asc.idw("<math>")9>>>>>>asc.setTokenDisable("date|time|abbr|math")>>>>>>asc.getTokensDisable(){9,5,6,7}>>>>>>asc.setTokensDisable({6,7,5,9})>>>>>>asc.setTokenUnknown("date|time|abbr|math")>>>>>>asc.getTokensUnknown(){9,5,6,7}>>>>>>asc.setTokensUnknown({6,7,5,9})>>>>>>asc.setAllTokenDisable()>>>>>>asc.getTokensDisable(){2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23}>>>>>>asc.setAllTokenUnknown()>>>>>>asc.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:>>>importasc>>>>>>asc.getAlphabet()'abcdefghijklmnopqrstuvwxyz'>>>>>>asc.countAlphabet()26>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.countAlphabet()59Methods:countBigrams- Method get count bigramscountTrigrams- Method get count trigramscountGrams- Method get count N-gram by lm sizeExample:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.countBigrams("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")12>>>>>>asc.countTrigrams("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")10>>>>>>asc.size()3>>>>>>asc.countGrams("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор???с лязгом выкатился и остановился возле мальчика....")10>>>>>>asc.idw("неожиданно")3263936167>>>>>>asc.idw("из")5134>>>>>>asc.idw("подворотни")12535356101>>>>>>asc.idw("в")53>>>>>>asc.idw("Олега")2824508300>>>>>>asc.idw("ударил")24816796913>>>>>>asc.countBigrams([3263936167,5134,12535356101,53,2824508300,24816796913])5>>>>>>asc.countTrigrams([3263936167,5134,12535356101,53,2824508300,24816796913])4>>>>>>asc.countGrams([3263936167,5134,12535356101,53,2824508300,24816796913])4Methods:arabic2Roman- Convert arabic number to roman numberExample:>>>importasc>>>>>>asc.arabic2Roman(23)'XXIII'>>>>>>asc.arabic2Roman("33")'XXXIII'Methods:setThreads- Method for set the number of threads (0 - all threads)Example:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.setThreads(3)>>>>>>a=asc.pplByFiles("./text.txt")>>>>>>print(a.logprob)-48201.29481399994Methods:fti- Method for removing the fractional part of a numberExample:>>>importasc>>>>>>asc.fti(5892.4892)5892489200000>>>>>>asc.fti(5892.4892,4)58924892Methods:context- Method for assembling text context from a sequenceExample:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.idw("неожиданно")3263936167>>>>>>asc.idw("из")5134>>>>>>asc.idw("подворотни")12535356101>>>>>>asc.idw("в")53>>>>>>asc.idw("Олега")2824508300>>>>>>asc.idw("ударил")24816796913>>>>>>asc.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:>>>importasc>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.addAbbr("США")>>>>>>asc.isAbbr("сша")True>>>>>>asc.addSuffix("1-я")>>>>>>asc.isSuffix("1-я")True>>>>>>asc.isToken(asc.idw("США"))True>>>>>>asc.isToken(asc.idw("1-я"))True>>>>>>asc.isToken(asc.idw("125"))True>>>>>>asc.isToken(asc.idw("
"))True>>>>>>asc.isToken(asc.idw("Hello"))False>>>>>>asc.isIdWord(asc.idw("https://anyks.com"))True>>>>>>asc.isIdWord(asc.idw("Hello"))True>>>>>>asc.isIdWord(asc.idw("-"))FalseMethods:findByFiles- Method search N-grams in a text fileExample:>>>importasc>>>>>>asc.setOption(asc.options_t.debug)>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.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:>>>importasc>>>>>>asc.setOption(asc.options_t.debug)>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.addAbbr("США")>>>>>>asc.isAbbr("сша")>>>>>>asc.checkSequence("Неожиданно из подворотни в олега ударил")True>>>>>>asc.checkSequence("Сегодня сыграл и в Олега ударил яркий прожектор патрульный трактор с корпоративным сектором")True>>>>>>asc.checkSequence("Сегодня сыграл и в Олега ударил яркий прожектор патрульный трактор с корпоративным сектором",True)True>>>>>>asc.checkSequence("в Олега ударил яркий")True>>>>>>asc.checkSequence("в Олега ударил яркий",True)True>>>>>>asc.checkSequence("от госсекретаря США")True>>>>>>asc.checkSequence("от госсекретаря США",True)True>>>>>>asc.checkSequence("Неожиданно из подворотни в олега ударил",2)True>>>>>>asc.checkSequence(["Неожиданно","из","подворотни","в","олега","ударил"],2)True>>>>>>asc.existSequence("
 Сегодня сыграл и в, Олега ударил яркий прожектор, патрульный трактор - с корпоративным сектором 
",2)(True,0)>>>>>>asc.existSequence(["
","Сегодня","сыграл","и","в",",","Олега","ударил","яркий","прожектор",",","патрульный","трактор","-","с","корпоративным","сектором","
"],2)(True,2)>>>>>>asc.idw("от")6086>>>>>>asc.idw("госсекретаря")51273912082>>>>>>asc.idw("США")5>>>>>>asc.checkSequence([6086,51273912082,5])True>>>>>>asc.checkSequence([6086,51273912082,5],True)True>>>>>>asc.checkSequence(["от","госсекретаря","США"])True>>>>>>asc.checkSequence(["от","госсекретаря","США"],True)True>>>>>>asc.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>>>>>>asc.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>>>>>>asc.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:>>>importasc>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>asc.setSubstitutes({'p':'р','c':'с','o':'о','t':'т','k':'к','e':'е','a':'а','h':'н','x':'х','b':'в','m':'м'})>>>>>>asc.check("Дом-2",asc.check_t.home2)True>>>>>>asc.check("Дом2",asc.check_t.home2)False>>>>>>asc.check("Дом-2",asc.check_t.latian)False>>>>>>asc.check("Hello",asc.check_t.latian)True>>>>>>asc.check("прiвет",asc.check_t.latian)True>>>>>>asc.check("Дом-2",asc.check_t.hyphen)True>>>>>>asc.check("Дом2",asc.check_t.hyphen)False>>>>>>asc.check("Д",asc.check_t.letter)True>>>>>>asc.check("$",asc.check_t.letter)False>>>>>>asc.check("-",asc.check_t.letter)False>>>>>>asc.check("просtоквaшино",asc.check_t.similars)True>>>>>>asc.match("my site http://example.ru, it's true",asc.match_t.url)True>>>>>>asc.match("по вашему ip адресу 46.40.123.12 проводится проверка",asc.match_t.url)True>>>>>>asc.match("мой адрес в формате IPv6: http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/",asc.match_t.url)True>>>>>>asc.match("13-я",asc.match_t.abbr)True>>>asc.match("13-я-й",asc.match_t.abbr)False>>>asc.match("т.д",asc.match_t.abbr)True>>>asc.match("т.п.",asc.match_t.abbr)True>>>>>>asc.match("С.Ш.А.",asc.match_t.abbr)True>>>>>>asc.addAbbr("сша")>>>asc.match("США",asc.match_t.abbr)True>>>>>>asc.addSuffix("15-летия")>>>asc.match("15-летия",asc.match_t.abbr)True>>>>>>asc.getSuffixes(){3139900457}>>>>>>asc.idw("лет")328041>>>>>>asc.idw("тых")352214>>>>>>asc.setSuffixes({328041,352214})>>>>>>asc.getSuffixes(){328041,352214}>>>>>>defstatus(status):...print(status)...>>>asc.readSuffix("./suffix.abbr",status)>>>>>>asc.match("15-лет",asc.match_t.abbr)True>>>>>>asc.match("20-тых",asc.match_t.abbr)True>>>>>>asc.match("15-летия",asc.match_t.abbr)False>>>>>>asc.match("Hello",asc.match_t.latian)True>>>>>>asc.match("прiвет",asc.match_t.latian)False>>>>>>asc.match("23424",asc.match_t.number)True>>>>>>asc.match("hello",asc.match_t.number)False>>>>>>asc.match("23424.55",asc.match_t.number)False>>>>>>asc.match("23424",asc.match_t.decimal)False>>>>>>asc.match("23424.55",asc.match_t.decimal)True>>>>>>asc.match("23424,55",asc.match_t.decimal)True>>>>>>asc.match("-23424.55",asc.match_t.decimal)True>>>>>>asc.match("+23424.55",asc.match_t.decimal)True>>>>>>asc.match("+23424.55",asc.match_t.anumber)True>>>>>>asc.match("15T-34",asc.match_t.anumber)True>>>>>>asc.match("hello",asc.match_t.anumber)False>>>>>>asc.match("hello",asc.match_t.allowed)True>>>>>>asc.match("évaluer",asc.match_t.allowed)False>>>>>>asc.match("13",asc.match_t.allowed)True>>>>>>asc.match("Hello-World",asc.match_t.allowed)True>>>>>>asc.match("Hello",asc.match_t.math)False>>>>>>asc.match("+",asc.match_t.math)True>>>>>>asc.match("=",asc.match_t.math)True>>>>>>asc.match("Hello",asc.match_t.upper)True>>>>>>asc.match("hello",asc.match_t.upper)False>>>>>>asc.match("hellO",asc.match_t.upper)False>>>>>>asc.match("a",asc.match_t.punct)False>>>>>>asc.match(",",asc.match_t.punct)True>>>>>>asc.match(" ",asc.match_t.space)True>>>>>>asc.match("a",asc.match_t.space)False>>>>>>asc.match("a",asc.match_t.special)False>>>>>>asc.match("±",asc.match_t.special)False>>>>>>asc.match("[",asc.match_t.isolation)True>>>>>>asc.match("a",asc.match_t.isolation)False>>>>>>asc.match("a",asc.match_t.greek)False>>>>>>asc.match("Ψ",asc.match_t.greek)True>>>>>>asc.match("->",asc.match_t.route)False>>>>>>asc.match("⇔",asc.match_t.route)True>>>>>>asc.match("a",asc.match_t.letter)True>>>>>>asc.match("!",asc.match_t.letter)False>>>>>>asc.match("!",asc.match_t.pcards)False>>>>>>asc.match("♣",asc.match_t.pcards)True>>>>>>asc.match("p",asc.match_t.currency)False>>>>>>asc.match("$",asc.match_t.currency)True>>>>>>asc.match("€",asc.match_t.currency)True>>>>>>asc.match("₽",asc.match_t.currency)True>>>>>>asc.match("₿",asc.match_t.currency)TrueMethods:delInText- Method for delete letter in textExample:>>>importasc>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.delInText("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор??? с лязгом выкатился и остановился возле мальчика....",asc.wdel_t.punct)'неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор с лязгом выкатился и остановился возле мальчика'>>>>>>asc.delInText("hello-world-hello-world",asc.wdel_t.hyphen)'helloworldhelloworld'>>>>>>asc.delInText("неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор??? с лязгом выкатился и остановился возле мальчика....",asc.wdel_t.broken)'неожиданно из подворотни в Олега ударил яркий прожектор патрульный трактор с лязгом выкатился и остановился возле мальчика'>>>>>>asc.delInText("«On nous dit qu'aujourd'hui c'est le cas, encore faudra-t-il l'évaluer» l'astronomie",asc.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:>>>importasc>>>>>>asc.setOption(asc.options_t.debug)>>>>>>asc.setOption(asc.options_t.confidence)>>>>>>asc.setAlphabet("abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя")>>>>>>asc.readArpa('./lm.arpa')>>>>>>asc.countsByFiles("./text.txt","./result.txt",3)info:0|СегодняяичницейниктонезавтракалкаквпрочемивчеранаближайшемкнамрынкемыелифруктовыйсалатсосвежевыжатымсокомкаквстарыедобрыевременавБразилииinfo:10|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор?Слязгомвыкатилсяиостановилсявозлемальчика.info:10|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор!Слязгомвыкатилсяиостановилсявозлемальчика.info:0|Таккакэтияйцажалкоестьахочетсявсебольшелюбоватьсяихможнопокрытьлакомдажепрозрачнымлакомдляногтейinfo:10|НеожиданноизподворотнивОлегаудариляркийпрожекторпатрульныйтрактор???Слязгомвыкатилсяиостановилсявозлемальчика....Counts3grams:471>>>>>>asc.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