Skip to content

silvermete0r/QazNLTK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



QazNLTK: a package for working with Kazakh language text processing.

PyPI Latest Release PyPI Downloads

What is it?

QazNLTK provides developers with a fast and convenient tool for processing text in the Kazakh language. Tailored for the unique linguistic characteristics of Kazakh, this library offers a comprehensive set of tools for natural language processing, like: tokenization, sentence segmentation, evaluation similarity score and tranliteration of kazakh language cyrillic-latin.

Table of Contents

Main Features

Here are just a few of the things that qaznltk does well:

  1. Kazakh language Text Tokenizing by keyword frequencies:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

text = input("Enter text: ")
tokens = qn.tokenize(text)
print(tokens)

# Input: Біздің өміріміз үлкен өзен іспетті. Сіздің қайығыңыздың қиындықтардан жеңіл өтіп, махаббат иірімінде басқаруын жоғалтпай, бақыт сарқырамасына жетуін тілеймін!
# Output: [('өміріміз', 1), ('үлкен', 1), ('өзен', 1), ('іспетті', 1), ('сіздің', 1), ('қайығыңыздың', 1), ('қиындықтардан', 1), ('жеңіл', 1), ('өтіп', 1), ('махаббат', 1), ('иірімінде', 1), ('басқаруын', 1), ('жоғалтпай', 1), ('бақыт', 1), ('сарқырамасына', 1), ('жетуін', 1), ('тілеймін', 1)]
  1. Kazakh language Text Segmentation into sentences:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

text = input("Enter text: ")
sent_tokens = qn.sent_tokenize(text)
print(sent_tokens)

# Input: Біздің өміріміз үлкен өзен іспетті. Сіздің қайығыңыздың қиындықтардан жеңіл өтіп, махаббат иірімінде басқаруын жоғалтпай, бақыт сарқырамасына жетуін тілеймін!
# Output: ['Біздің өміріміз үлкен өзен іспетті.', 'Сіздің қайығыңыздың қиындықтардан жеңіл өтіп, махаббат иірімінде басқаруын жоғалтпай, бақыт сарқырамасына жетуін тілеймін!']
  1. Evaluate Difference score between 2 text:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

textA = input("Enter text A: ")
textB = input("Enter text B: ")
similarity_score = qn.calc_similarity(textA, textB)
print(similarity_score)

# Input: textA = "Еңбегіне қарай — құрмет, Жасына қарай — ізет.", textB = "Еңбегіне қарай табысы, Ерлігіне қарай дабысы."
# Output: 0.368421052631579
  1. Convert Kazakh language Text from Cyrillic to Latin using ISO-9 Standard:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

text = input("Enter text: ")
latin_text = qn.convert2latin_iso9(text)
print(latin_text)

# Input: Бүгін қандай керемет күн! 
# Output: Bùgìn k̦andaj keremet kùn!
  1. Convert Kazakh language Text from Latin to Cyrillic using ISO-9 Standard:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

text = input("Enter text: ")
cyrillic_text = qn.convert2cyrillic_iso9(text)
print(cyrillic_text)

# Input: Bùgìn k̦andaj keremet kùn!
# Output: Бүгін қандай керемет күн!
  1. Sentiment Analysis of Kazakh language text [negative: -1, neutral: 0, positive: 1]:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

text = input("Enter text: ")
sentimize_score = qn.sentimize(text)
print(sentimize_score)

# Input: Бұл мақала өте нашар жазылған.
# Output: -1.0 (negative)
  1. Converting any number N into kazakh language number words [N <= 10^31]:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

n = int(input())
print(qn.num2word(n))

# Input: N = 1465
# Output: бір мың төрт жүз алпыс бес
  1. Extracting information from IIN (Individual Identification Number) [IIN: 12 digits]:
from qaznltk import qaznltk as qnltk
qn = qnltk.QazNLTK()

iin = input("Enter IIN: ")
print(qn.get_info_from_iin(iin))

# Input: 990408482390
# Output: {'status': 'success', 'date_of_birth': '08.04.1999', 'century_of_birth': '20', 'gender': 'female', 'sequence_number': 8239, 'control_discharge': 0}
  1. KNN Search on TF-IDF matrix embeddings of Kazakh language text:
from qaznltk import vectorizer

qn_vectorizer = vectorizer.QazNLTKVectorizer()
tf_idf_matrix = qn_vectorizer.fit_transform(documents)

knn = vectorizer.KNN(tf_idf_matrix)

query = "Еліміздің алтын күні жарық күн."

query_vector = qn_vectorizer.transform([query])[0]

results = knn.search(query_vector, k=3)

for idx, distance in results:
    print(f"Document: {documents[idx]}, Distance: {distance}")

# Input:
# documents = [
#     "Ер — елінде, гүл — жерінде.",
#     "Өз елінде көртышқан да батыр.",
#     "Өз елінің иті де қадірлі.",
#     "Отан үшін күрес — ерге тиген үлес.",
#     "Орағың өткір болса, қарың талмайды, Отаның берік болса, жауың алмайды.",
#     "Елінен безген ер болмас, Көлінен безген қаз болмас.",
#     "Сағынған елін аңсайды, Сары ала қаз көлін аңсайды.",
#     "Жат жердің қаршығасынан, Өз еліңнің қарғасы артық.",
#     "Егілмеген жер жетім, Елінен айырылған ер жетім.",
#     "Ерінен айырылған көмгенше жылайды, Елінен айырылған өлгенше жылайды.",
#     "Отан — отбасынан басталады.",
#     "Опасызда oтан жоқ.",
#     "Отан оттан да ыстық.",
#     "Отансыз адам — ормансыз бұлбұл."
# ]

# Output:
# Document: Орағың өткір болса, қарың талмайды, Отаның берік болса, жауың алмайды., Distance: 0.6740830490255459
# Document: Жат жердің қаршығасынан, Өз еліңнің қарғасы артық., Distance: 0.7040525969511919
# Document: Өз елінде көртышқан да батыр., Distance: 0.7453452762306501

Where to get it

The source code is currently hosted on GitHub at: https://github.com/silvermete0r/QazNLTK.git

Binary installers for the latest released version are available at the Python Package Index (PyPI).

pip install qaznltk

image

Dependencies

  • Package was developed on built-in python functions (pure python);

License

License: MIT

Getting Help

📧 [email protected]

Contributing to qaznltk

All contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.


Go to Top