Stemming i lematyzacja

Analiza sentymentu w Pythonie

Violeta Misheva

Data Scientist

Czym jest stemming?

Stemming to proces sprowadzania słów do ich form podstawowych, nawet jeśli rdzeń nie jest poprawnym słowem w danym języku.

staying, stays, stayed ----> stay
house, houses, housing ----> hous

Analiza sentymentu w Pythonie

Czym jest lematyzacja?

Lematyzacja jest podobna do stemmingu, jednak w przeciwieństwie do niego sprowadza słowa do rdzeni będących poprawnymi słowami w danym języku.

stay, stays, staying, stayed ----> stay
house, houses, housing ----> house
Analiza sentymentu w Pythonie

Stemming a lematyzacja

Stemming

  • Zwraca rdzenie słów
  • Szybki i wydajny obliczeniowo

Lematyzacja

  • Zwraca poprawne słowa
  • Wolniejsza od stemmingu; może zależeć od części mowy
Analiza sentymentu w Pythonie

Stemming ciągów znaków

from nltk.stem import PorterStemmer

porter = PorterStemmer()
porter.stem('wonderful')
'wonder'
Analiza sentymentu w Pythonie

Stemmery dla innych języków

Snowball Stemmer: duński, niderlandzki, angielski, fiński, francuski, niemiecki, węgierski, włoski, norweski, portugalski, rumuński, rosyjski, hiszpański, szwedzki

from nltk.stem.snowball import SnowballStemmer

DutchStemmer = SnowballStemmer("dutch")
DutchStemmer.stem("beginnen")
'begin'
Analiza sentymentu w Pythonie

Jak przeprowadzić stemming zdania?

porter.stem('Today is a wonderful day!')
'today is a wonderful day!'
tokens = word_tokenize('Today is a wonderful day!')
stemmed_tokens = [porter.stem(token) for token in tokens]
stemmed_tokens
['today', 'is', 'a', 'wonder', 'day', '!']
Analiza sentymentu w Pythonie

Lematyzacja ciągu znaków

from nltk.stem import WordNetLemmatizer

WNlemmatizer = WordNetLemmatizer()
WNlemmatizer.lemmatize('wonderful', pos='a')
'wonderful'
Analiza sentymentu w Pythonie

Czas na ćwiczenia!

Analiza sentymentu w Pythonie

Preparing Video For Download...