Ethiopian Language NLP Toolkit
Project description
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 language.
-
Under construction! Not ready for use yet! Currently experimenting :-)
Installation
pip
-
etltk supports Python 3.6 or later. We recommend that you install etltk via
pip, the Python package manager. To install, simply run:pip install etltk
From Source
-
Alternatively, 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, run
git clone https://github.com/robikieq/ethiopian_language_toolkit.git cd ethiopian_language_toolkit pip install -e .
Usage
- Text Annotating with AmharicDocument
-
Annotating amharic text is very simple: you can simply pass the text to the
AmharicDocumentand access all annotations from the returned AmharicDocument object:- Within AmharicDocument, annotations are further stored in
Sentences,Tokens,Words.
from etltk import AmharicDocument # Annotating a Document sample_text = """ ሚያዝያ 14፣ 2014 ዓ.ም በአገር ደረጃ የሰው ሰራሽ አስተውሎት /Artificial Intelligence/ አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ፣ ሃገርኛ ቋንቋዎችን ለዓለም ተደራሽ ለማድረግ፣ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው፡፡ በማሽን ዓስተምሮ (Machine Learning) አማካኝነት የጽሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ሥርዓት ለማሰልጠን፣ የጽሁፍ ዳታን መሰብሰብ እና ማደራጀት፤ የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን /Natural Language Processing Tools/ በመጠቀም የጽሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነው። የማሽን ለርኒንግ ስልተ-ቀመሮች በመጠቀም ቋንቋዎችን መለየት እና መረዳት፣ የጽሁፍ ይዘቶችን መለየት፣ የቋንቋን መዋቅር መተንተን የሚያስችሉ የሃገሪኛ ናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች፣ ስልተ-ቀመሮች እና ሞዴሎችን ማዘጋጀት ተገቢ ነው። በዚህም መሰረት አማርኛ፣ አፋን ኦሮሞ፣ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል፡፡ የትርጉም አገልግሎት፣ ቻትቦት (የውይይት መለዋወጫ ሮቦት) ፡ የፅሁፍ ሰነዶች ልየታ፣ የቃላት ትክክለኛነትን ማረጋገጥ፣ በቋንቋን መዋቅር ትንተና መሠረት ጽሁፎችን ለማዋቀር እና ለመመስረት፣ ረጅም ጽሁፎችን ማሳጠር፣ አንኳር ጉዳዮችን መለየት ወይም ጥቅል ሃሳብ ማውጣት፣ ንግግርን ወደ ጽሁፍ የሚቀይሩ አገልግሎቶችን የሚሰጡ መተግበሪያ ማልማት አስረላጊ ነው። የአርቲፊሻል ኢንተለጀንስ ቴክኖሎጂ ዘርፍ በጥናት፣ ምርምና ልማት እንዲመራ ማስቻል፣ አስፈላጊ የዲጂታል መሠረተ ልማቶች ማሙሏት መሰረታዊ ለውጥ ለማምጣት፣ እና የአርቲፊሻል ኢንተለጀንስ ውጤቶችን በተግባር በስፋት ጥቅም ላይ እንዲዉሉ ይረዳል። 🤔 """ doc = AmharicDocument(sample_text) # The following example shows how to print the `clean` text: print(doc) # output: AmharicDocument("ሚያዝያ ዓመተ ምህረት በአገር ደረጃ የሰው ሰራሽ አስተውሎት አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ ሀገርኛ ቋንቋዎችን ለአለም ተደራሽ ለማድረግ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው በማሽን አስተምሮ አማካኝነት የፅሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ስርአት ለማሰልጠን የፅሁፍ ዳታን መሰብሰብ እና ማደራጀት የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን በመጠቀም የፅሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነው የማሽን ለርኒንግ ስልተቀመሮች በመጠቀም ቋንቋዎችን መለየትና መረዳት የፅሁፍ ይዘቶችን መለየት የቋንቋን መዋቅር መተንተን የሚያስችሉ የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች ስልተቀመሮች እና ሞዴሎችን ማዘጋጀት አስፈላጊ ነው የትርጉም አገልግሎት ቻትቦት የውይይት መለዋወጫ ሮቦት የፅሁፍ ሰነዶች ልየታ የቃላት ትክክለኛነትን ማረጋገጥ በቋንቋን መዋቅር ትንተና መሰረት ፅሁፎችን ለማዋቀር እና ለመመስረት ረጅም ፅሁፎችን ማሳጠር አንኳር ጉዳዮችን መለየት ወይም ጥቅል ሀሳብ ማውጣት ንግግርን ወደ ፅሁፍ የሚቀይሩ አገልግሎቶችን የሚሰጡ መተግበሪያ ማልማት አስረላጊ ነው የአርቲፊሻል ኢንተለጀንስ ቴክኖሎጂ ዘርፍ በጥናት ምርምና ልማት እንዲመራ ማስቻል አስፈላጊ የዲጂታል መሰረተ ልማቶች ማሙሏት መሰረታዊ ለውጥ ለማምጣት እና የአርቲፊሻል ኢንተለጀንስ ውጤቶችን በተግባር በስፋት ጥቅም ላይ እንዲዉሉ ይረዳል")
- Here is a simple example of performing text cleaning on a piece of plaintext using
clean_amharicfunction:
from etltk.lang.am import clean_amharic # Annotating a Document clean = clean_amharic("NLP የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች My email is john.doe@email.com. ማዘጋጀት amharic 125 <html><h1>አስፈላጊ</h1></html> 456 ነው الرسائل 漢字; simplified Chinese: 汉字; 🤗⭕🤓🤔") # The following example shows how to print all sentences in a document: print(clean) # output: 'የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች ማዘጋጀት አስፈላጊ ነው'
- Within AmharicDocument, annotations are further stored in
-
Tokenization - Sentence
- Here is a simple example of performing sentence tokenization on a piece of plaintext using AmharicDocument:
from etltk import AmharicDocument # Annotating a Document doc = AmharicDocument(sample_text) # The following example shows how to print all sentences in a document: print(doc.sentences) # output: [Sentence("ሚያዝያ ዓመተ ምህረት በአገር ደረጃ የሰው ሰራሽ አስተውሎት አሁን ካለበት ዝቅተኛ ደረጃ ወደ ላቀ ደረጃ ለማድረስ ሀገርኛ ቋንቋዎችን ለአለም ተደራሽ ለማድረግ አገራዊ አቅምን ለማሳደግ እና ተጠቃሚ ለመሆን በጋራ አብሮ መስራቱ እጅግ ጠቃሚ ነው"), # Sentence("በማሽን አስተምሮ አማካኝነት የፅሁፍ ናሙናዎች በአርቲፊሻል ኢንተለጀንስ ስርአት ለማሰልጠን የፅሁፍ ዳታን መሰብሰብ እና ማደራጀት"), # Sentence("የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎችን በመጠቀም የፅሁፍ ዳታን ፕሮሰስ ማድረግ ተቀዳሚ እና መሰረታዊ ጉዳይ ነው"), # Sentence("የማሽን ለርኒንግ ስልተቀመሮች በመጠቀም ቋንቋዎችን መለየትና መረዳት የፅሁፍ ይዘቶችን መለየት የቋንቋን መዋቅር መተንተን የሚያስችሉ የናቹራል ላንጉዌጅ ፕሮሰሲንግ ቱሎች ስልተቀመሮች እና ሞዴሎችን ማዘጋጀት አስፈላጊ ነው"), # Sentence("የትርጉም አገልግሎት ቻትቦት የውይይት መለዋወጫ ሮቦት የፅሁፍ ሰነዶች ልየታ የቃላት ትክክለኛነትን ማረጋገጥ በቋንቋን መዋቅር ትንተና መሰረት ፅሁፎችን ለማዋቀር እና ለመመስረት ረጅም ፅሁፎችን ማሳጠር አንኳር ጉዳዮችን መለየት ወይም ጥቅል ሀሳብ ማውጣት ንግግርን ወደ ፅሁፍ የሚቀይሩ አገልግሎቶችን የሚሰጡ መተግበሪያ ማልማት አስረላጊ ነው"), # Sentence("የአርቲፊሻል ኢንተለጀንስ ቴክኖሎጂ ዘርፍ በጥናት ምርምና ልማት እንዲመራ ማስቻል አስፈላጊ የዲጂታል መሰረተ ልማቶች ማሙሏት መሰረታዊ ለውጥ ለማምጣት እና የአርቲፊሻል ኢንተለጀንስ ውጤቶችን በተግባር በስፋት ጥቅም ላይ እንዲዉሉ ይረዳል")]
- Here is a simple example of performing sentence tokenization on a piece of plaintext using
sentence_tokenizefunction:
from etltk.tokenize.am import sent_tokenize # Annotating a Document sentences = sent_tokenize("የሃገሪኛ ቋንቋዎችን መለየት እና ለመረዳት፣ የጽሁፍ ይዘቶችን መለየት፣ የቋንቋዎቹን ህግጋት መተንተን የሚያስችሉ የሃገሪኛ ተፈጥሯዊ ቋንቋ ፕሮሰሲንግ ቱሎች (NLP Tools)፣ ስልተ-ቀመሮች /Algorithms/ እና ሞዴሎችን /ML models/ በማዘጋጀት ተደራሽ ማድረግ ተገቢ ነው። በዚህም መሰረት አማርኛ፣ አፋን ኦሮሞ፣ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል፡፡") # The following example shows how to print all sentences in a document: print(sentences) # output: ['የሀገሪኛ ቋንቋዎችን መለየት እና ለመረዳት የፅሁፍ ይዘቶችን መለየት የቋንቋዎቹን ህግጋት መተንተን የሚያስችሉ የሀገሪኛ ተፈጥሯዊ ቋንቋ ፕሮሰሲንግ ቱሎች ስልተቀመሮች እና ሞዴሎችን በማዘጋጀት ተደራሽ ማድረግ ተገቢ ነው', 'በዚህም መሰረት አማርኛ አፋን ኦሮሞ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል']
-
Tokenization - Word
- Here is a simple example of performing word tokenization on a piece of plaintext using AmharicDocument:
from etltk import AmharicDocument # Annotating a Document doc = AmharicDocument(sample_text) # The following example shows how to print all sentences in a document: print(doc.words) # output: WordList(['ሚያዝያ', 'ዓመተ', 'ምህረት', 'በአገር', 'ደረጃ', 'የሰው', 'ሰራሽ', 'አስተውሎት', 'አሁን', 'ካለበት', 'ዝቅተኛ', 'ደረጃ', 'ወደ', 'ላቀ', 'ደረጃ', 'ለማድረስ', 'ሀገርኛ', 'ቋንቋዎችን', 'ለአለም', 'ተደራሽ', 'ለማድረግ', 'አገራዊ', 'አቅምን', 'ለማሳደግ', 'እና', 'ተጠቃሚ', 'ለመሆን', 'በጋራ', 'አብሮ', 'መስራቱ', 'እጅግ', 'ጠቃሚ', 'ነው፡፡', 'በማሽን', 'አስተምሮ', 'አማካኝነት', 'የፅሁፍ', 'ናሙናዎች', 'በአርቲፊሻል', 'ኢንተለጀንስ', 'ስርአት', 'ለማሰልጠን', 'የፅሁፍ', 'ዳታን', 'መሰብሰብ', 'እና', 'ማደራጀት', 'የናቹራል', 'ላንጉዌጅ', 'ፕሮሰሲንግ', 'ቱሎችን', 'በመጠቀም', 'የፅሁፍ', 'ዳታን', 'ፕሮሰስ', 'ማድረግ', 'ተቀዳሚ', 'እና', 'መሰረታዊ', 'ጉዳይ', 'ነው', 'የማሽን', 'ለርኒንግ', 'ስልተ', 'ቀመሮች', 'በመጠቀም', 'ቋንቋዎችን', 'መለየትና', 'መረዳት', 'የፅሁፍ', 'ይዘቶችን', 'መለየት', 'የቋንቋን', 'መዋቅር', 'መተንተን', 'የሚያስችሉ', 'የናቹራል', 'ላንጉዌጅ', 'ፕሮሰሲንግ', 'ቱሎች', 'ስልተ', 'ቀመሮች', 'እና', 'ሞዴሎችን', 'ማዘጋጀት', 'አስፈላጊ', 'ነው', 'የትርጉም', 'አገልግሎት', 'ቻትቦት', 'የውይይት', 'መለዋወጫ', 'ሮቦት', 'የፅሁፍ', 'ሰነዶች', 'ልየታ', 'የቃላት', 'ትክክለኛነትን', 'ማረጋገጥ', 'በቋንቋን', 'መዋቅር', 'ትንተና', 'መሰረት', 'ፅሁፎችን', 'ለማዋቀር', 'እና', 'ለመመስረት', 'ረጅም', 'ፅሁፎችን', 'ማሳጠር', 'አንኳር', 'ጉዳዮችን', 'መለየት', 'ወይም', 'ጥቅል', 'ሀሳብ', 'ማውጣት', 'ንግግርን', 'ወደ', 'ፅሁፍ', 'የሚቀይሩ', 'አገልግሎቶችን', 'የሚሰጡ', 'መተግበሪያ', 'ማልማት', 'አስረላጊ', 'ነው', 'የአርቲፊሻል', 'ኢንተለጀንስ', 'ቴክኖሎጂ', 'ዘርፍ', 'በጥናት', 'ምርምና', 'ልማት', 'እንዲመራ', 'ማስቻል', 'አስፈላጊ', 'የዲጂታል', 'መሰረተ', 'ልማቶች', 'ማሙሏት', 'መሰረታዊ', 'ለውጥ', 'ለማምጣት', 'እና', 'የአርቲፊሻል', 'ኢንተለጀንስ', 'ውጤቶችን', 'በተግባር', 'በስፋት', 'ጥቅም', 'ላይ', 'እንዲዉሉ', 'ይረዳል'])
- Here is a simple example of performing sentence tokenization on a piece of plaintext using
word_tokenizefunction:
from etltk.tokenize.am import word_tokenize # Annotating a Document words = word_tokenize("የሃገሪኛ ቋንቋዎችን መለየት እና ለመረዳት፣ የጽሁፍ ይዘቶችን መለየት፣ የቋንቋዎቹን ህግጋት መተንተን የሚያስችሉ የሃገሪኛ ተፈጥሯዊ ቋንቋ ፕሮሰሲንግ ቱሎች (NLP Tools)፣ ስልተ-ቀመሮች /Algorithms/ እና ሞዴሎችን /ML models/ በማዘጋጀት ተደራሽ ማድረግ ተገቢ ነው። በዚህም መሰረት አማርኛ፣ አፋን ኦሮሞ፣ ሶማሊኛ እና ትግርኛ ቋንቋዎችን ለማሽን የማስተማር ሂደትን ቀላልና የተቀላተፍ እንዲሆን ያስችላል፡፡") # The following example shows how to print all sentences in a document: print(words) # output: ['የሀገሪኛ', 'ቋንቋዎችን', 'መለየት', 'እና', 'ለመረዳት', 'የፅሁፍ', 'ይዘቶችን', 'መለየት', 'የቋንቋዎቹን', 'ህግጋት', 'መተንተን', 'የሚያስችሉ', 'የሀገሪኛ', 'ተፈጥሯዊ', 'ቋንቋ', 'ፕሮሰሲንግ', 'ቱሎች', 'ስልተ', 'ቀመሮች', 'እና', 'ሞዴሎችን', 'በማዘጋጀት', 'ተደራሽ', 'ማድረግ', 'ተገቢ', 'ነው', 'በዚህም', 'መሰረት', 'አማርኛ', 'አፋን', 'ኦሮሞ', 'ሶማሊኛ', 'እና', 'ትግርኛ', 'ቋንቋዎችን', 'ለማሽን', 'የማስተማር', 'ሂደትን', 'ቀላልና', 'የተቀላተፍ', 'እንዲሆን', 'ያስችላል']
-
Normalization
- Character 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 using AmharicDocument:
from etltk.lang.am import normalize # normalizing a Document normalized = normalize("DHL የዕለቱ My email is john.doe@email.com. እናቀርባለን። amharic 125 <html><h1>Title</h1^X^X></html> 456 processor 18 الرسائل 漢字; simplified Chinese: 汉字; 🤗⭕🤓🤔") # The following example shows how to print all normalized in a document: print(normalized) # output: የዕለቱ እናቀርባለን
- Here is a simple example of performing normalization on a piece of plaintext using
normalize_char,normalize_punct,normalize_labialized,normalize_shortenedfunction:
from etltk.lang.am.normalizer import ( normalize_char, normalize_labialized, normalize_punct, normalize_shortened) # normalization char_norm = normalize_char(") # The following example shows how to print all sentences in a document: print(char_norm) # output:
- Character Level Normalization such as "
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file etltk-0.0.12.tar.gz.
File metadata
- Download URL: etltk-0.0.12.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d4aaa6fa563ea020723b74d0436a2ae18693757ec86247e4297a5f8bb6cc9e3
|
|
| MD5 |
4649ee0fd69aa2f8dee303e3b2c88af8
|
|
| BLAKE2b-256 |
dc76a3410ca4b7a00acd6061b1d3aea6d67c27630a56ded998e0b13f1edfa179
|
File details
Details for the file etltk-0.0.12-py3-none-any.whl.
File metadata
- Download URL: etltk-0.0.12-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.8.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bff40842ad0aac3e4798f166587d666323848612cc6894170c0d8875853fba67
|
|
| MD5 |
7035635243bad7748c5edc250fa00e1a
|
|
| BLAKE2b-256 |
ab65a356d1705405a4e932b3dc5b1121342f7278b4462154cb82676ee1b4fc76
|