Sobes.tech
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.