Muhammad al-xorazmiy nomidagi tatu urganch filiali


Download 254.32 Kb.
bet14/16
Sana17.06.2023
Hajmi254.32 Kb.
#1542059
1   ...   8   9   10   11   12   13   14   15   16
Bog'liq
Dissertation Rustambek

TOTAL

7754

292304

3887913

261879



















Jadvaldagi boshqa janrlar boʻlimiga quyidagilar kiradi: diniy, badiiy asarlar, fan va ta’lim, qonun hujjatlari, tibbiyot, qishloq xoʻjaligi.


III.2-§.Korpus boyicha soʻzlar portfeleni yaratish(Bag of Words)
Bag of Words (So’zlar sumkasi) modeli
Ko‘pchilik statistik (machine learning va deep learning) algoritmlar sonlar bilan ishlaydi, shunday ekan matnlar ustida ishlashda uni songa o‘tkazishga to‘g‘ri keladi. Buni amalga oshirish uchun bir qancha yondashuvlar mavjud. Bulardan eng mashhurlari Bag of Words, TF-IDF, va word2vec. Matnni sonlarga o‘tkazish uchun juda samarali modellaridan biri So‘zlar sumkasi (Bag of Words (BOW)) modeli hisoblanadi. So‘zlar sumkasi modeli yondashuvini tushunish uchun namuna sifatida quyidagi matnni qaraylik.
Faraz qilaylik bizda quyidagi 3 ta gapdan iborat korpus bo‘lsin :

  • "Men kitob oʻqishni yoqtiraman"

  • "Siz kutubxonada kitob oʻqishni yoqtirasizmi?"

  • "Lola va Laylo kitob oʻqishni yoqtirmaydi"

1-Qadam: Sozlarni ajratish
Dastlab korpusni so‘zlarga o‘tkazib olamiz va gapdagi so‘zlarni alohida ajratib olamiz. Quyidagi jadvalda:

Gap 1

Gap 2

Gap 3

Men

Siz

Lola

Kitob

Kutubxonada

Va

O‘qishni

Kitob

Layo

Yoqtiraman

O‘qishni

Kitob




Yoqtirasizmi

O‘qishni







Yoqtirmaydi



2-Qadam: Sozlar chastotasini lugat shaklida yaratamiz
Bu qadamda so‘zlar chastotasini yaratib olamiz. Ya’ni korpusdagi so‘zlar lug‘atning kaliti, ushbu so‘zlarning uchrash soni esa uning qiymati sifatida kiritamiz. Bunda korpusdagi so‘zlar gistogrammasini hosil bo‘ladi. Quyidagi jadvalda:

So’z

Chastota

Men

1

Kitob

3

O‘qishni

3

Yoqtiraman

1

Yoqtirasizmi

1

Yoqtirmaydi

1

Siz

1

Kutubxonada

1

Lola

1

Va

1

Laylo

1

Endi chastotasi boʻyicha tartiblaymiz:

So’z

Chastota

Kitob

3

O‘qishni

3

Men

1

Yoqtiraman

1

Yoqtirasizmi

1

Yoqtirmaydi

1

Siz

1

Kutubxonada

1

Lola

1

Va

1

Laylo

1



3-Qadam: So‘zlar sumkasi modelini qurish
WOB modelini qurish uchun, ustunlari lug’atimizdagi ko’p qatnashgan so’zlardan va satrlari gap (dokument)lardan iborat bo’lgan matritsani qurib olamiz.
Agar lug’atdagi 8 ta eng ko’p uchragan soz’lar olsak, matritsamiz quyidagi ko’rinishni oladi:




Kitob

O‘qishni

Men

Yoqtiraman

Yoqtirasizmi

Yoqtirmaydi

Siz

Kutubxonada

Lola

Va

Laylo

Gap-1

1

1

1

1

0

0

0

0

0

0

0

Gap-2

1

1

0

0

1

0

1

1

0

0

0

Gap-3

1

1

0

0

0

1

0

0

1

1

1

Har bir satrda tegishli gap uchun sonli tasvirlanishi mavjud. Bu sonli tasvirlanishdan statistik modellar uchun kiruvchi ma’lumot sifatida foydalnish mumkin. So‘zlar sumkasi modeli tabiiy tilni qayta ishlash va axborotni qidirishda (IR) ishlatiladigan soddalashtirilgan tasvirdir.
So‘zlar sumkasi modeli odatda hujjatlarni tasniflash(sinflarga ajratish) usullarida qo‘llaniladi, bu erda har bir so‘zning matnda uchrashi (chastotasi) klassifikatorni tayyorlash uchun xususiyat sifatida ishlatiladi.


Pythonda Bag of Words modelini dasturini qurish.
Yuqorida biz uchta jumladan iborat so‘zlar sumkasini qo‘lda yaratdik. Biroq, haqiqiy ma’lumotlar to‘plamlari millionlab so‘zlar bilan juda katta boʻladi. Tasodifiy korpusni topishning eng yaxshi usuli bu Vikipediya hisoblanadi.
article_text = ' Men kitob oʻqishni yoqtiraman Siz kutubxonada kitob oʻqishni yoqtirasizmi? Lola va Laylo kitob oʻqishni yoqtirmaydi '
corpus = nltk.sent_tokenize(article_text)
wordfreq = {}#dictionary
for sentence in corpus:
tokens = nltk.word_tokenize(sentence)
for token in tokens:
if token not in wordfreq.keys():
wordfreq[token] = 1
else:
wordfreq[token] += 1

most_freq = heapq.nlargest(200, wordfreq, key=wordfreq.get)

sentence_vectors = []
for sentence in corpus:
sentence_tokens = nltk.word_tokenize(sentence)
sent_vec = []
for token in most_freq:
if token in sentence_tokens:
sent_vec.append(1)
else:
sent_vec.append(0)
sentence_vectors.append(sent_vec)
sentence_vectors = np.asarray(sentence_vectors)
print(sentence_vectors)
Bu ro‘yhat (yoki vektor) da asl gaplardagi so‘zlarning o‘rni saqlangan holda tasvirlanmasligi mumkin. Bu Bag-of-words modelini asosiy hususiyatlaridan biri. Bunday turdagi tasvirlanish bir qancha muvaffaqiyatli dasturlarda foydalanilib kelinyapti, misol uchun email filtering.


  • Aslida matnlarni tasvirlashda so‘zlarning uchrash chastotasi muhim emas. Ko‘p uchraydigan so‘zlar ( masalan ingliz tilida"the", "a", "to“) matnda juda yuqori sonda uchraydi. Bu so‘zlar ko‘p sonda uchragani bilan bular muhim ma’no anglatmaydi. Bu masalaga bog‘liq, so‘zlar chastotasi normallashtirish uchun TF-IDF usuli ma’lum.

III.3-§ Korpusning yaratishning dasturiy ta’minoti.


Biz yaratayotgan UzbekCorpora dasturiy ta’minoti 3 ta asosiy .py (moduldan)faylidan iborat bo‘lib ular quyidagilardan tashkil topgan:

  1. UrlReader.py - web sahifadan materiallarni o‘qib olish va XML fayllarga yozish uchun ishlatiladi;

  1. ServiceUzbekWords.py – berilgan matnni statistik tahlil qilish (gaplar, so‘zlar , takrorlanmaydigan so‘zlar soni, so‘zlar chastotasi) uchun;

  2. UzbekCorporaAnalysis.py – Local corpora (XML fayllar)dan ma’lumotlarni o‘qib olish hamda ServiceUzbekWords.py dan olingan natijalarni TXT fayllarga yozish uchun foydalaniladi.






UrlReader.py modulining tuzilishi quyidagicha:



Class darakchi – www.darakchi.uz sayti materiallarini o‘qib olish va XML fayllarga yozish uchun mo‘ljallangan bo‘lib category metodidan iborat:

  • def category(url_link, start_page, count_page, file_name)

url_link - o‘qib olinishi kerak bo‘lgan categoriya url adresi;
start_page - boshlang‘ich sahifa nomeri;
count_page - o‘qib olish kerak bo‘lgan sahifalar soni;
file_name - o‘qib olingan materiallarni yozish uchun yaratiladigan XML fayl nomi.
Class qishloq_xojaligi - www.argo.uz sayti materiallarini o‘qib olish va XML fayllarga yozish uchun mo‘ljallangan bo‘lib, writeXML va url_category metodlaridan iborat:

  • def writeXML(dto, file_name)

dto – web saytdan o‘qib olingan materiallar saqlangan dict turidagi to‘plam;
file_name - o‘qib olingan materiallarni yozish uchun yaratiladigan XML fayl nomi

  • def url_category(url_link, file_name, count_page)

url_link - o‘qib olinishi kerak bo‘lgan categoriya url adresi;

  1. start_page - boshlang‘ich sahifa nomeri;

count_page - o‘qib olish kerak bo‘lgan sahifalar soni;
file_name - o‘qib olingan materiallarni yozish uchun yaratiladigan XML fayl nomi.



ServiceUzbekWords.py modulining tuzilishi quyidagicha:


  • def isword(word)

so‘z yoki so‘z emasligini aniqlovchi metod, so‘z bo‘lsa True, aks holda False qiymat qaytaradi.



  • def word_normalize(raw)

raw satrni qayta ishlovchi metod bo‘lib satrdagi `’ '‘‘‘’‘ belgilarni bir hil belgiga almashtirish, qo‘shilib ketgan so‘zlarni ajratish, kata harflarni kichik harflar bilan almashtiradi.





  • def analysis_article(raw)

raw matnni tahlil qiluvchi metod bo‘lib, matndagi gaplar soni, so‘zlar soni, takrorlanmaydigan so‘zlar soni, hamda so‘zlar chastotasini qaytaradi.
return sent_count, all_words_count, unique_words_count, sort_frequency



  • def krill_lotin(raw)

krilcha matnlarni lotinchaga o‘giruvchi metod.



Download 254.32 Kb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   16




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling