Sobes.tech
Middle

Чӣ тавр матнро пешакӣ коркард кардан мумкин аст: кадом калимаҳои истгоҳ ва нуқтаҳоро бартараф кардан, истифодаи stemming ё lemmatization?

sobes.tech AI

Ҷавоб аз AI

Пешниҳоди матн вобаста ба вазифа аст, аммо қадамҳои умумӣ дарбар мегиранд:

  • Боварӣ ҳосил кардан аз тоза кардани нуқта ва аломатҳои махсус: одатан барои тоза кардани матн аз шуоъҳо хориҷ карда мешаванд.
  • Боварӣ ҳосил кардан аз калимаҳои истисноӣ: калимаҳое, ки дар бисёр ҷойҳо пайдо мешаванд, аммо маълумоти кам доранд (масалан, "ва", "дар", "барои"). Ин кӯмак мекунад, ки луғат кам шавад ва сифати модел беҳтар гардад.
  • Stemming ва лемматизация:
    • Stemming — кӯтоҳ кардани калимаҳо ба реша (масалан, "кор кардан", "кор кард" → "кор"). Тез, аммо метавонад кӯр бошад.
    • Лемматизация — овардани калима ба шакли муқарраршуда (лема) бо дарназардошти контекст ва қисми гап (масалан, "кард" → "кардан"). Дурусттар, аммо бештар захира талаб мекунад.

Интихоб байни stemming ва лемматизация вобаста ба вазифа:

  • Барои прототипсозии зуд ва вақте ки дақиқӣ муҳим нест — stemming.
  • Барои вазифаҳое, ки дар онҳо дақиқӣ ва маъно муҳим аст — лемматизация.

Масалан дар Python бо истифода аз китобхонаи NLTK:

import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
import string

nltk.download('stopwords')
nltk.download('wordnet')

матн = "Ин як намунаи матн аст, ки пешакӣ коркард кардан лозим аст!"

# Тоза кардани нуқта
матн = матн.translate(str.maketrans('', '', string.punctuation))

# Токенсозӣ
сўзҳо = матн.lower().split()

# Тоза кардани калимаҳои истисноӣ
stop_words = set(stopwords.words('tajik'))
филтриратшуда_сўзҳо = [w for w in сўзҳо if w not in stop_words]

# Лемматизация
lemmatizer = WordNetLemmatizer()
лемматизатсияшуда_сўзҳо = [lemmatizer.lemmatize(w) for w in филтриратшуда_сўзҳо]

print(лемматизатсияшуда_сўзҳо)

Муҳим аст, ки пешинаи коркардро ба вазифа ва забони махсус мутобиқ кунед.