Middle
Matnni qanday oldindan tayyorlash kerak: qaysi to'xtash so'zlari va punktuatsiyani olib tashlash, stemming yoki lemmatizatsiya qilish?
sobes.tech AI
AIdan javob
Matnni oldindan ishlash vazifaga bog'liq, ammo umumiy bosqichlar quyidagilar:
- Punktuatsiya va maxsus belgilarni olib tashlash: odatda shovqinni tozalash uchun olib tashlanadi.
- Stop so'zlarni olib tashlash: tez-tez uchraydigan, ammo kam ma'lumotli so'zlar (masalan, "va", "da", "ustida"). Bu lug'at hajmini kamaytirishga va model sifatini oshirishga yordam beradi.
- Stemming va lemmatizatsiya:
- Stemming — so'zlarni ildiziga qisqartirish (masalan, "ishlamoq", "ishlagan" → "ishla"). Tez, lekin ba'zan qattiq bo'lishi mumkin.
- Lemmatizatsiya — so'zni uning normal shakli (lemma) ga keltirish, kontekst va so'z turini hisobga olgan holda (masalan, "ishlagan" → "ishlamoq"). Aniqroq, lekin ko'proq resurs talab qiladi.
Stemming va lemmatizatsiya orasidagi tanlov vazifaga bog'liq:
- Tez prototiplash va aniqlik muhim bo'lmagan hollarda — stemming.
- Aniqlik va ma'noni muhim qiladigan vazifalar uchun — lemmatizatsiya.
Python'da NLTK kutubxonasi bilan misol:
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
import string
nltk.download('stopwords')
nltk.download('wordnet')
matn = "Bu, oldindan ishlashga muhtoj bo'lgan matn misolidir!"
# Punktuatsiyani olib tashlash
matn = matn.translate(str.maketrans('', '', string.punctuation))
# Tokenizatsiya
so'zlar = matn.lower().split()
# Stop so'zlarni olib tashlash
stop_words = set(stopwords.words('uzbek'))
filtrlangan_so'zlar = [w for w in so'zlar if w not in stop_words]
# Lemmatizatsiya
lemmatizer = WordNetLemmatizer()
lemmatized_so'zlar = [lemmatizer.lemmatize(w) for w in filtrlangan_so'zlar]
print(lemmatized_so'zlar)
Maxsus vazifa va tilga moslashtirish muhim.