Package: etltk
Ethiopian Language Toolkit (etltk)The Ethiopian Natural Language Toolkit (ETLTK) project aimed to develop a suite of open source Natural Language Processing modules for the Ethiopian languages.The Ethiopian Language Toolkit (ETLTK) is built using python language and takes inspiration fromspacyandnltklibraries.Installationpipetltksupports Python 3.6 or later. We recommend that you install etltk viapip, the Python package manager. To install, simply run:pipinstalletltkFrom SourceAlternatively, you can also install from source via ethiopian_language_toolkit’s git repository, which will give you more flexibility in developing on top of etltk. For this option, rungitclonehttps://github.com/robikieq/ethiopian_language_toolkit.gitcdethiopian_language_toolkitpipinstall-e.Documentationhttps://etltk.netlify.app/UsageAmharic text preprocessing with Amharic documentPreprocessing amharic text is very simple: you can simply pass the text to theAmharicdocument and access all annotations from the returned Amharic document object:frometltkimportAmharicsample_text="""ሚያዝያ 14፣ 2014 ዓ.ም 🤗 በአገር ደረጃ የሰው ሰራሽ አስተውሎት /Artificial Intelligence/ አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ፣ ሃገርኛ ቋንቋዎችን ለዓለም ተደራሽ ለማድረግ፣ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው፡፡በማሽን ዓስተምሮ (Machine Learning) አማካኝነት የጽሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ሥርዓት ለማሰልጠን፣ የጽሁፍ ዳታን መሰብሰብ እና ማደራጀት፤ የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን /Natural Language Processing Tools/ በመጠቀም የጽሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነው።"""# Annotating Amharic documentdoc=Amharic(sample_text)# print the `clean` text:print(doc)# output: Amharic("ሚያዝያ ዓመተ ምህረት በአገር ደረጃ የሰው ሰራሽ አስተውሎት አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ ሀገርኛ ቋንቋዎችን ለአለም ተደራሽ ለማድረግ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው በማሽን አስተምሮ አማካኝነት የፅሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ስርአት ለማሰልጠን የፅሁፍ ዳታን መሰብሰብ እና ማደራጀት የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን በመጠቀም የፅሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነው")Here is a another example of performing text cleaning on a piece of plaintext usingclean_amharicfunction:frometltk.lang.amimport(preprocessing,clean_amharic)sample_text="""ሚያዝያ 14፣ 2014 ዓ.ም 🤗 በአገር ደረጃ የሰው ሰራሽ አስተውሎት /Artificial Intelligence/ አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ፣ ሃገርኛ ቋንቋዎችን ለዓለም ተደራሽ ለማድረግ፣ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው፡፡በማሽን ዓስተምሮ (Machine Learning) አማካኝነት የጽሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ሥርዓት ለማሰልጠን፣ የጽሁፍ ዳታን መሰብሰብ እና ማደራጀት፤ የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን /Natural Language Processing Tools/ በመጠቀም የጽሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነው።"""# Define a custom preprocessor pipelinecustom_pipeline=[preprocessing.remove_emojis,preprocessing.remove_digits,preprocessing.remove_ethiopic_punct,preprocessing.remove_english_chars,preprocessing.remove_punct]# `clean_amharic` function takes a custom pipeline, if not uses the default pipelinecleaned=clean_amharic(input_text,abbrev=False,pipeline=custom_pipeline)# print the `clean` text:print(cleaned)# output: ሚያዝያ ዓመተ ምህረት በአገር ደረጃ የሰው ሰራሽ አስተውሎት አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ ሀገርኛ ቋንቋዎችን ለአለም ተደራሽ ለማድረግ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው በማሽን አስተምሮ አማካኝነት የፅሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ስርአት ለማሰልጠን የፅሁፍ ዳታን መሰብሰብ እና ማደራጀት የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን በመጠቀም የፅሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነውTokenization - SentenceHere is a simple example of performing sentence tokenization on a piece of plaintext using Amharic document:Within Amharic document, annotations are further stored inSentencesfrometltkimportAmharicsample_text="""የማሽን ለርኒንግ ስልተ-ቀመሮች  (Algorithms) በመጠቀም ቋንቋዎችን መለየት እና መረዳት፣ የጽሁፍ ይዘቶችን መለየት፣ የቋንቋን መዋቅር መተንተን የሚያስችሉ የሃገሪኛ ናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች (NLP tools) ፣ ስልተ-ቀመሮች እና ሞዴሎችን ማዘጋጀት ተገቢ ነው። በዚህም መሰረት አማርኛ፣ አፋን ኦሮሞ፣ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል፡፡"""# Annotating Amharic Textdoc=Amharic(sample_text)# print all list of `Sentence` in a document:print(doc.sentences)# output: [Sentence("የማሽን ለርኒንግ ስልተቀመሮች በመጠቀም ቋንቋዎችን መለየት እና መረዳት የፅሁፍ ይዘቶችን መለየት የቋንቋን መዋቅር መተንተን የሚያስችሉ የሀገሪኛ ናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች ስልተቀመሮች እና ሞዴሎችን ማዘጋጀት ተገቢ ነው"), Sentence("በዚህም መሰረት አማርኛ አፋን ኦሮሞ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል")]Here is another example of performing sentence tokenization on a piece of plaintext usingsentence_tokenizefunction:frometltk.tokenize.amimportsent_tokenizesample_text="""የማሽን ለርኒንግ ስልተ-ቀመሮች  (Algorithms) በመጠቀም ቋንቋዎችን መለየት እና መረዳት፣ የጽሁፍ ይዘቶችን መለየት፣ የቋንቋን መዋቅር መተንተን የሚያስችሉ የሃገሪኛ ናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች (NLP tools) ፣ ስልተ-ቀመሮች እና ሞዴሎችን ማዘጋጀት ተገቢ ነው። በዚህም መሰረት አማርኛ፣ አፋን ኦሮሞ፣ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል፡፡"""# Annotating a Documentsentences=sent_tokenize(sample_text)# print all list of sentence:print(sentences)# output: ['የማሽን ለርኒንግ ስልተቀመሮች በመጠቀም ቋንቋዎችን መለየት እና መረዳት የፅሁፍ ይዘቶችን መለየት የቋንቋን መዋቅር መተንተን የሚያስችሉ የሀገሪኛ ናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች ስልተቀመሮች እና ሞዴሎችን ማዘጋጀት ተገቢ ነው', 'በዚህም መሰረት አማርኛ አፋን ኦሮሞ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል']Tokenization - WordHere is a simple example of performing word tokenization on a piece of plaintext using AmharicDocument:Within Amharic focument, annotations are further stored inWords.frometltkimportAmharicDocumentsample_text="""“ተረኛ፣ ተረኛ!” አለ ነርሱ። ወይዘሮታሪኳ፣ “አቤት!” ብለው የሁለትዓመት ልጃቸውን ይዘው ገቡ።“ምኑን ነው ያመመው?” ዶክተሯጠየቁ። “አያዩትም! ፀጉሩ ሳስቷል፤ሆዱ ተነፍቷል፤ ድዱም ይደማል”አሉ ወይዘሮ ታሪኳ። ዶክተሯም፣“በጣም ያሳዝናል፤ እንደዚህያደረገው የተመጣጠነ ምግብ አለማግኘቱ ነው። አሁንም ወተት፣እንቁላል፣ ማር፣ አትክልትና ፍራፍሬ ይመግቡት፤ ቶሎ ይሻለዋል፤ለአሁኑ ግን መድኃኒት አዝለታለሁ” በማለት አስረዷቸው። ወይዘሮታሪኳም “ወይ አለማወቅ! ልጄን በምግብ እጥረት ገድዬው ነበር"በማለት አለቀሱ።"""# Annotating Amharic Textdoc=Amharic(sample_text)# print all list of `AmharicWord` in a document:print(doc.words)# output: ['ተረኛ', 'ተረኛ', 'አለ', 'ነርሱ', 'ወይዘሮ', 'ታሪኳ', 'አቤት', 'ብለው', 'የሁለት', 'አመት', 'ልጃቸውን', 'ይዘው', 'ገቡ', 'ምኑን', 'ነው', 'ያመመው', 'ዶክተሯ', 'ጠየቁ', 'አያዩትም', 'ፀጉሩ', 'ሳስቷል', 'ሆዱ', 'ተነፍቷል', 'ድዱም', 'ይደማል', 'አሉ', 'ወይዘሮ', 'ታሪኳ', 'ዶክተሯም', 'በጣም', 'ያሳዝናል', 'እንደዚህ', 'ያደረገው', 'የተመጣጠነ', 'ምግብ', 'አለማግኘቱ', 'ነው', 'አሁንም', 'ወተት', 'እንቁላል', 'ማር', 'አትክልትና', 'ፍራፍሬ', 'ይመግቡት', 'ቶሎ', 'ይሻለዋል', 'ለአሁኑ', 'ግን', 'መድሀኒት', 'አዝለታለሁ', 'በማለት', 'አስረዷቸው', 'ወይዘሮ', 'ታሪኳም', 'ወይ', 'አለማወቅ', 'ልጄን', 'በምግብ', 'እጥረት', 'ገድዬው', 'ነበር', 'በማለት', 'አለቀሱ']Here is another example of performing word tokenization on a piece of plaintext usingword_tokenizefunction:frometltk.tokenize.amimportword_tokenizesample_text="""“ተረኛ፣ ተረኛ!” አለ ነርሱ። ወይዘሮታሪኳ፣ “አቤት!” ብለው የሁለትዓመት ልጃቸውን ይዘው ገቡ።“ምኑን ነው ያመመው?” ዶክተሯጠየቁ። “አያዩትም! ፀጉሩ ሳስቷል፤ሆዱ ተነፍቷል፤ ድዱም ይደማል”አሉ ወይዘሮ ታሪኳ። ዶክተሯም፣“በጣም ያሳዝናል፤ እንደዚህያደረገው የተመጣጠነ ምግብ አለማግኘቱ ነው። አሁንም ወተት፣እንቁላል፣ ማር፣ አትክልትና ፍራፍሬ ይመግቡት፤ ቶሎ ይሻለዋል፤ለአሁኑ ግን መድኃኒት አዝለታለሁ” በማለት አስረዷቸው። ወይዘሮታሪኳም “ወይ አለማወቅ! ልጄን በምግብ እጥረት ገድዬው ነበር"በማለት አለቀሱ።"""# word tokenizationwords=word_tokenize(sample_text)# print all list of word:print(words)# output: ['ተረኛ', 'ተረኛ', 'አለ', 'ነርሱ', 'ወይዘሮ', 'ታሪኳ', 'አቤት', 'ብለው', 'የሁለት', 'አመት', 'ልጃቸውን', 'ይዘው', 'ገቡ', 'ምኑን', 'ነው', 'ያመመው', 'ዶክተሯ', 'ጠየቁ', 'አያዩትም', 'ፀጉሩ', 'ሳስቷል', 'ሆዱ', 'ተነፍቷል', 'ድዱም', 'ይደማል', 'አሉ', 'ወይዘሮ', 'ታሪኳ', 'ዶክተሯም', 'በጣም', 'ያሳዝናል', 'እንደዚህ', 'ያደረገው', 'የተመጣጠነ', 'ምግብ', 'አለማግኘቱ', 'ነው', 'አሁንም', 'ወተት', 'እንቁላል', 'ማር', 'አትክልትና', 'ፍራፍሬ', 'ይመግቡት', 'ቶሎ', 'ይሻለዋል', 'ለአሁኑ', 'ግን', 'መድሀኒት', 'አዝለታለሁ', 'በማለት', 'አስረዷቸው', 'ወይዘሮ', 'ታሪኳም', 'ወይ', 'አለማወቅ', 'ልጄን', 'በምግብ', 'እጥረት', 'ገድዬው', 'ነበር', 'በማለት', 'አለቀሱ']NormalizationCharacter Level Normalization such as "ጸሀይ" and "ፀሐይ"Labialized Character Normalzation such as "ሞልቱዋል" to "ሞልቷል"Short Form Expansion such as "አ.አ" to "አዲስ አበባ"Punctuation Normalization such as::to።Here is a simple example of performing normalization on a piece of plaintext usingnormalizefunction:frometltk.lang.amimportnormalizesample_text="""ሚያዝያ 14፣ 2014 ዓ.ም በዓገር ደረጃ የሰው ሰራሽ አስተውሎት የውይይት መድረክ ላይየሃገርኛ ቋንቋዎች ትርጉም አገልግሎት፣ቻትቦት (የውይይት መለዋወጫ ሮቦት):የፅሁፍ ሰነዶች ለመለየት፣ የቃላት ትክክለኛነትን ለማረጋገጥ፣በቋንቋን ሕግጋት መሠረት ጽሑፎችን ለማዋቀር እና ለመመስረት፣ረጅም ጽሁፎችን ለማሳጠር፣ አንኳር ጉዳዮችን መለየት ወይም ጥቅል ሃሳብ ለማውጣት፣ንግግርን ወደ ጽሁፍ ለመቀየር የሚያስችሉ መተግበሪያዎችን ማልማት አስረላጊነቱ ተገልጹዋል::"""# normalizationnormalized_text=normalize(sample_text)# The following example shows how to print all normalized in a document:print(normalized_text)# output: ሚያዝያ 14፣ 2014 አመተ ምህረት በአገር ደረጃ የሰው ሰራሽ አስተውሎት የውይይት መድረክ ላይ# የሀገርኛ ቋንቋዎች ትርጉም አገልግሎት፣# ቻትቦት (የውይይት መለዋወጫ ሮቦት)፡# የፅሁፍ ሰነዶች ለመለየት፣ የቃላት ትክክለኛነትን ለማረጋገጥ፣# በቋንቋን ህግጋት መሰረት ፅሁፎችን ለማዋቀር እና ለመመስረት፣# ረጅም ፅሁፎችን ለማሳጠር፣ አንኳር ጉዳዮችን መለየት ወይም ጥቅል ሀሳብ ለማውጣት፣# ንግግርን ወደ ፅሁፍ ለመቀየር የሚያስችሉ መተግበሪያዎችን ማልማት አስረላጊነቱ ተገልጿል። """Here is another example of performing normalization on a piece of plaintext usingnormalize_char,normalize_punct,normalize_labialized,normalize_shortenedfunction:frometltk.lang.am.normalizerimport(normalize_labialized,normalize_shortened,normalize_punct,normalize_char)# normalize labializednormalized_text=normalize_labialized("ንግግርን ወደ ጽሁፍ ለመቀየር የሚያስችሉ መተግበሪያዎችን ማልማት አስረላጊነቱ ተገልጹዋል")print(normalized_text)# output: ንግግርን ወደ ፅሁፍ ለመቀየር የሚያስችሉ መተግበሪያዎችን ማልማት አስረላጊነቱ ተገልጿል# normalize short formsnormalized_text=normalize_shortened("ሚያዝያ 14፣ 2014 ዓ.ም በዓገር ደረጃ የሰው ሰራሽ አስተውሎት የውይይት መድረክ")print(normalized_text)# output: ሚያዝያ 14፣ 2014 ዓመተ ምህረት በአገር ደረጃ የሰው ሰራሽ አስተውሎት የውይይት መድረክ# normalize punctuationnormalized_text=normalize_punct("መተግበሪያዎችን ማልማት አስረላጊነቱ ተገልጹዋል::")print(normalized_text)# output: መተግበሪያዎችን ማልማት አስረላጊነቱ ተገልጿል።# normalize charactersnormalized_text=normalize_char("በቋንቋዉ ሕግጋት መሠረት ጽሑፎችን ማዋቀር እና መመሥረት")print(normalized_text)# output: በቋንቋዉ ህግጋት መሰረት ፅሁፎችን ማዋቀር እና መመስረትFeaturesText preprocessing functions.frometltk.lang.amimportpreprocessingFunctionDescriptionremove_whitespacesRemove extra spaces, tabs, and new lines from a text stringremove_linksRemove URLs from a text stringremove_tagsRemove HTML tags from a text stringremove_emojisRemove emojis from a text stringremove_emailRemove email adresses from a text stringremove_digitsRemove all digits from a text stringremove_english_charsRemove ascii characters from a text stringremove_arabic_charsRemove arabic characters and numerals from a text stringremove_chinese_charsRemove chinese characters from a text stringremove_ethiopic_digitsRemove all ethiopic digits from a text stringremove_ethiopic_punctRemove ethiopic punctuations from a text stringremove_non_ethiopicRemove non ethioipc characters from a text stringremove_stopwordsRemove stop words