O‘zbek tilida matnni belgilarga, bo‘g‘inlarga, affikslarga, so‘zlarga, gaplarga va tinish belgilariga ajratish uchun mo‘ljallangan dastur.
Project description
UzbekTokenization
O‘zbek tilidagi matnlarni belgilarga, bo‘g‘inlarga, affikslarga (qo‘shimchalarga), so‘zlarga, gaplarga va tinish belgilariga ajratish uchun mo‘ljallangan kutubxona. Ushbu kutubxona, O'zbek tilidagi matnlarni tokenlarga ajratish, so‘zlarning morfologik tuzilishini tahlil qilish va o‘zbek tilida matnni yaxshiroq tushunish uchun zarur bo‘lgan vositalarni taqdim etadi.
Maqsad
Ushbu loyiha O‘zbek tilidagi matnlarni tokenlash (ajratish) jarayonini amalga oshiradi. Tokenizatsiya – bu matnni kichikroq, tahlil qilinishi mumkin bo‘lgan qismlarga ajratish jarayonidir. Ushbu loyiha asosan tabiiy tilni qayta ishlash (NLP) sohasida ishlatilishi mumkin.
Xususiyatlar
- Char Tokenization: Matnni belgilarga ajratish.
- Syllable Tokenization: So‘zni bo‘g‘inlarga ajratish.
- Affix Tokenization: So‘zni affikslarga ajratish.
- Word Tokenization: Matnni so‘zlarga ajratish.
- Sent Tokenization: Matnni gaplarga ajratish.
- Punc Tokenization: Matnni tinish begilargacha ajratish.
GitHub
Loyiha bilan ishlash uchun uni GitHubdan yuklab olish mumkin:
git clone https://github.com/ddasturbek/UzbekTokenization.git
O‘rnatish
Kutubxonalarni o‘rnatish: Loyihani ishlatish uchun PyPIdan ushbu kutubxonani o‘rnating:
pip install UzbekTokenization
Foydalanish
Loyihadan foydalanish juda oson. Quyidagi kod namunalari orqali tokenlash jarayonlarini amalga oshirishingiz mumkin.
Char Tokenization
from UzCharTokenization import UzCharTokenizer as UCT
print(UCT.tokenize("o‘g‘ri")) # ['o‘', 'g‘', 'r', 'i']
print(UCT.tokenize("choshgoh")) # ['ch', 'o', 'sh', 'g', 'o', 'h']
print(UCT.tokenize("bodiring")) # ['b', 'o', 'd', 'i', 'r', 'i', 'ng']
print(UCT.tokenize("Salom, dunyo!")) # ['S', 'a', 'l', 'o', 'm', ',', 'd', 'u', 'n', 'y', 'o', '!']
print(UCT.tokenize("Salom, dunyo!", True)) # ['S', 'a', 'l', 'o', 'm', ',', ' ', 'd', 'u', 'n', 'y', 'o', '!']
Ushbu Char Tokenization dasturi O‘zbek tili harflari uchun to‘g‘ri ishlaydi, chunki O‘zbek tilida O‘o‘ G‘g‘ harf va belgilar birikmasi va ShshChchng digraflar bitta harf hisoblanadi. Agar tokenize funksiyasiga ikkinchi parametr sifatida True qiymati berilsa, bo‘sh joylarni ham inobatga olgan holda ajratadi.
Affix Tokenization
from UzAffixTokenization import UzAffixTokenizer as UAT
print(UAT.tokenize("Serquyosh")) # Ser-quyosh
print(UAT.tokenize("KITOBLAR")) # KITOB-LAR
print(UAT.tokenize("o‘qiganman")) # o‘qi-gan-man
print(UAT.tokenize("Salom odamlar")) # Salom odamlar
Ushbu Affixes Tokenization dasturi O‘zbek tili so‘zlarini affikslarga (qo‘shimchalarga) ajratadi. O‘zbek tilida qo‘shimchalar ikki xil bo‘ladi: so‘z yasovchi va shakl yasovchi. Shakl yasovchi qo‘shimchalar ham o‘z navbatida ikkiga bo‘linadi: lug‘aviy shakl yasovchi va sintaktik shakl yasovchi qo‘shimchalarga. Dastur aynan sintaktik shakl yasovchi qo‘shimchalarning ikki va undan ko‘p belgidan iborat bo‘lganlarini ajratadi. Chunki so‘z yasovchi, lug‘aviy shakl yasovchi qo‘shimchalar va bitta harfdan iborat sintaktik shakl yasovchi qo‘shimchalar so‘z tarkibidagi harflarga o‘xshash bo‘ladi, bunday holda qo‘shimcha va so‘z tarkibidagi harflarni ajratish murakkab bo‘lib qoladi. Dastur faqat so‘zlarni affikslarga ajratadi, agar matn berilsa uni o‘z holicha qaytaradi. Katta-kichik harflarga sezgir.
Syllable Tokenization
from UzSyllabTokenization import UzSyllabTokenizer as UST
print(UST.tokenize("Gul")) # Gul
print(UST.tokenize("Yulduz")) # Yul-duz
print(UST.tokenize("shashlik")) # shash-lik
print(UST.tokenize("BOG‘BON")) # BOG‘-BON
print(UST.tokenize("kelinglar")) # ke-ling-lar
print(UST.tokenize("yangilik")) # yan-gi-lik
print(UST.tokenize("Agglyutinativ")) # ag-glyu-ti-na-tiv
print(UST.tokenize("Salom barchaga")) # Salom barchaga
Ushu Syllable Tokenization dasturi O‘zbek tili so‘zlarini bo‘g‘inlarga ajratadi. Bunda O‘o‘ G‘g‘ harf va belgilar birikmasi va ShshChchng digraflarni to‘g‘ri ajratadi. Bundan tashqari ng digraf yoki n va g alohida harf bo‘lib so‘z tarkibida keladi, bunday hollarda digraf bo‘lsa ular ajralmaydi, alohida kelsa ular ajratilishi mumkin. Ba'zi murakkab so‘zlar qoidalarga tushmaydi, shuning uchun ularning ro‘yhati dastur tarkibida shakllantirilgan. Katta-kichik harflarga sezgir.
Word Tokenization
from UzWordTokenization import UzWordTokenizer as UWT
text = "Dasturlash – kompyuterlar va boshqa mikroprotsessorli elektron mashinalar uchun dasturlar tuzish"
print(UWT.tokenize(text)) # ['Dasturlash', '–', 'kompyuterlar', 'va', 'boshqa', 'mikroprotsessorli', 'elektron', 'mashinalar', 'uchun', 'dasturlar', 'tuzish']
print(UWT.tokenize(text, False)) # ['Dasturlash', 'kompyuterlar', 'va', 'boshqa', 'mikroprotsessorli', 'elektron', 'mashinalar', 'uchun', 'dasturlar', 'tuzish']
Ushbu Word Tokenization dasturi O‘zbek tili matnlarini so‘zlarga ajratadi. Bunda qo‘shma so‘zlar (fe'l, ravish, olmosh va undov) va KFSQ (ko‘makchi fe'lli so‘z qo‘shilmasi) larni birgalikda ajratib oladi, masalan, 'idrok etmoq', 'mana bu', 'hech narsa', 'sevib boshlamoq'. Bundan tashqari tokenize funksiyasiga ikkinchi parametr sifatida False qiymatini berish orqali, tinish belgilarsiz faqat so‘zlardan iborat tokenlarni olish mumkin.
Sent Tokenization
from UzSentTokenization import UzSentTokenizer as UST
text = "Bugun bog‘da sayr qildik. Atrofdagi daraxtlar yam-yashil, " \
"qushlar esa chug‘urlab sayrayapdi. Bahorning iliq havosi butun " \
"olamni jonlantirganday tuyuladi. Sen hech shunday sokin va go‘zal " \
"manzarani ko‘rganmisan? Bu yerda hamma narsa ajib bir go‘zallikka " \
"ega! Nahotki tabiat bunday mo‘jizalarni yaratishga qodir bo‘lsa? Oh, " \
"qanday ajoyib kun! Shu lahzalarning hech qachon tugashini istamayman!"
print(UST.tokenize(text))
"""
[
'Bugun bog‘da sayr qildik.',
'Atrofdagi daraxtlar yam-yashil, qushlar esa chug‘urlab sayrayapdi.',
'Bahorning iliq havosi butun olamni jonlantirganday tuyuladi.',
'Sen hech shunday sokin va go‘zal manzarani ko‘rganmisan?',
'Bu yerda hamma narsa ajib bir go‘zallikka ega!',
'Nahotki tabiat bunday mo‘jizalarni yaratishga qodir bo‘lsa?',
'Oh, qanday ajoyib kun!',
'Shu lahzalarning hech qachon tugashini istamayman!'
]
"""
Ushbu Sent Tokenization dasturi matnlarni gaplarga ajratadi. Bunda dastur O‘zbek tili grammatikasining sintaksis qoidalariga asosan bu ishni amalga oshiradi. O‘zbek tilida gaplar, umuman ko‘p tillarda gaplar [.!?] belgilari bilan yoki ularni birgalikda ishlatish bilan tugaydi.
Punc Tokenization
from UzPuncTokenization import UzPuncTokenizer as UPT
text = """ Bugun juda qiziq voqea ro‘y berdi! Do‘stim bilan shahar bo‘ylab sayr qilayotgan edik, to‘satdan u to‘xtadi-da:
— Hey, bu yerga qarang! — dedi hayajon bilan.
Men nigohimni u ko‘rsatgan tomonga burdim... Nahotki?! Qarshimda bolalikdagi eng yaxshi do‘stim turardi. U bilan qancha yillardan beri ko‘rishmaganmiz!
— Bu senmisan? — dedim hayrat bilan.
U kulimsirab bosh irg‘adi:
— Ha, menman! Axir, qancha vaqt o‘tdi-a?!
Biz uzoq suhbatlashdik; eski xotiralarni esladik. O‘sha lahzalar men uchun unutilmas bo‘ldi...
"""
print(UPT.tokenize(text))
# ['Bugun juda qiziq voqea ro‘y berdi', '!', 'Do‘stim bilan shahar bo‘ylab sayr qilayotgan edik', ',', 'to‘satdan u to‘xtadi', '-', 'da', ':', '—', 'Hey', ',', 'bu yerga qarang', '!', '—', 'dedi hayajon bilan', '.', 'Men nigohimni u ko‘rsatgan tomonga burdim', '.', '.', '.', 'Nahotki', '?', '!', 'Qarshimda bolalikdagi eng yaxshi do‘stim turardi', '.', 'U bilan qancha yillardan beri ko‘rishmaganmiz', '!', '—', 'Bu senmisan', '?', '—', 'dedim hayrat bilan', '.', 'U kulimsirab bosh irg‘adi', ':', '—', 'Ha', ',', 'menman', '!', 'Axir', ',', 'qancha vaqt o‘tdi', '-', 'a', '?', '!', 'Biz uzoq suhbatlashdik', ';', 'eski xotiralarni esladik', '.', 'O‘sha lahzalar men uchun unutilmas bo‘ldi', '.', '.', '.']
print(UPT.tokenize(text, False))
# ['Bugun juda qiziq voqea ro‘y berdi', 'Do‘stim bilan shahar bo‘ylab sayr qilayotgan edik', 'to‘satdan u to‘xtadi', 'da', 'Hey', 'bu yerga qarang', 'dedi hayajon bilan', 'Men nigohimni u ko‘rsatgan tomonga burdim', 'Nahotki', 'Qarshimda bolalikdagi eng yaxshi do‘stim turardi', 'U bilan qancha yillardan beri ko‘rishmaganmiz', 'Bu senmisan', 'dedim hayrat bilan', 'U kulimsirab bosh irg‘adi', 'Ha', 'menman', 'Axir', 'qancha vaqt o‘tdi', 'a', 'Biz uzoq suhbatlashdik', 'eski xotiralarni esladik', 'O‘sha lahzalar men uchun unutilmas bo‘ldi']
Ushbu Punc Tokenization dasturi matnlarni tinish belgilarigacha ajratadi. Tokenni tinish belgilarisiz chiqarish uchun esa, tokenize funksiyasiga ikkinchi parametr sifatida False qiymati berish lozim.
Litsenziya
Bu loyiha MIT License litsenziyasiga ega.
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 uzbektokenization-1.2.2.tar.gz.
File metadata
- Download URL: uzbektokenization-1.2.2.tar.gz
- Upload date:
- Size: 21.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
795a97babc1fd300dda4ad4c0ea7fd58a310737bc1b59381b120c9b20e7e4e03
|
|
| MD5 |
6e7fae3c4f59d57a7abacd1b2cc5c60f
|
|
| BLAKE2b-256 |
91d765fd64f32a34160f5e2f2dc4cbd325c8eb861f121f2d635d010dab60b598
|
File details
Details for the file UzbekTokenization-1.2.2-py3-none-any.whl.
File metadata
- Download URL: UzbekTokenization-1.2.2-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d2a94765f471bfcd47d201c24ab1d73a22a479f5c6207a2a55b94226b5c930b
|
|
| MD5 |
d98aecc317995f175d2c16cb1dc96c45
|
|
| BLAKE2b-256 |
780987508e6ea756009ece3c4b367ddedcf660e07bf041feca8d3c428f0af6eb
|