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(лемматизатсияшуда_сўзҳо)
Муҳим аст, ки пешинаи коркардро ба вазифа ва забони махсус мутобиқ кунед.