Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Стемінг | Стемінг і лематизація
Вступ до NLP з Python

bookСтемінг

Розуміння стемінгу

Note
Визначення

Стемінг — це техніка нормалізації тексту, яка використовується в NLP для зведення змінених слів до їхньої основи.

Більш точно, стемінг полягає у видаленні афіксів (зазвичай лише суфіксів) зі слів для отримання їхньої кореневої форми, яка називається основа. Наприклад, основою для "running", "runs" і "run" є "run".

Мета стемінгу — спростити аналіз, розглядаючи подібні слова як одну сутність, що зрештою підвищує ефективність у різних завданнях NLP.

Стемінг з NLTK

NLTK надає різні алгоритми стемінгу, серед яких найпопулярнішими є Porter Stemmer та Lancaster Stemmer. Ці алгоритми застосовують певні правила для видалення афіксів і отримання основи слова.

Усі класи стемерів у NLTK мають спільний інтерфейс. Спочатку потрібно створити екземпляр класу стемера, а потім використовувати його метод stem() для кожного токена.

1234567891011121314151617181920212223242526272829
import nltk from nltk.stem import PorterStemmer, LancasterStemmer from nltk.tokenize import word_tokenize from nltk.corpus import stopwords nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) # Create a Porter Stemmer instance porter_stemmer = PorterStemmer() # Create a Lancaster Stemmer instance lancaster_stemmer = LancasterStemmer() text = "Stemming is an essential technique for natural language processing." text = text.lower() tokens = word_tokenize(text) # Filter out the stop words tokens = [token for token in tokens if token.lower() not in stop_words] # Apply stemming to each token porter_stemmed_tokens = [porter_stemmer.stem(token) for token in tokens] lancaster_stemmed_tokens = [lancaster_stemmer.stem(token) for token in tokens] # Display the results print("Original Tokens:", tokens) print("Stemmed Tokens (Porter Stemmer):", porter_stemmed_tokens) print("Stemmed Tokens (Lancaster Stemmer):", lancaster_stemmed_tokens)
copy

Спочатку ми застосували токенізацію, потім відфільтрували стоп-слова і, нарешті, виконали стемінг для наших токенів за допомогою list comprehension. Щодо результатів, ці два стемери дали досить різні результати. Це пов'язано з тим, що Lancaster Stemmer має приблизно вдвічі більше правил, ніж Porter Stemmer, і є одним із найбільш "агресивних" стемерів.

Note
Примітка

Загалом, Porter Stemmer є найпопулярнішим варіантом, що дає більш змістовні результати порівняно з Lancaster Stemmer, який часто надмірно скорочує слова.

question mark

Які з наступних тверджень щодо Porter та Lancaster stemmer є правильними?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookСтемінг

Свайпніть щоб показати меню

Розуміння стемінгу

Note
Визначення

Стемінг — це техніка нормалізації тексту, яка використовується в NLP для зведення змінених слів до їхньої основи.

Більш точно, стемінг полягає у видаленні афіксів (зазвичай лише суфіксів) зі слів для отримання їхньої кореневої форми, яка називається основа. Наприклад, основою для "running", "runs" і "run" є "run".

Мета стемінгу — спростити аналіз, розглядаючи подібні слова як одну сутність, що зрештою підвищує ефективність у різних завданнях NLP.

Стемінг з NLTK

NLTK надає різні алгоритми стемінгу, серед яких найпопулярнішими є Porter Stemmer та Lancaster Stemmer. Ці алгоритми застосовують певні правила для видалення афіксів і отримання основи слова.

Усі класи стемерів у NLTK мають спільний інтерфейс. Спочатку потрібно створити екземпляр класу стемера, а потім використовувати його метод stem() для кожного токена.

1234567891011121314151617181920212223242526272829
import nltk from nltk.stem import PorterStemmer, LancasterStemmer from nltk.tokenize import word_tokenize from nltk.corpus import stopwords nltk.download('punkt_tab') nltk.download('stopwords') stop_words = set(stopwords.words('english')) # Create a Porter Stemmer instance porter_stemmer = PorterStemmer() # Create a Lancaster Stemmer instance lancaster_stemmer = LancasterStemmer() text = "Stemming is an essential technique for natural language processing." text = text.lower() tokens = word_tokenize(text) # Filter out the stop words tokens = [token for token in tokens if token.lower() not in stop_words] # Apply stemming to each token porter_stemmed_tokens = [porter_stemmer.stem(token) for token in tokens] lancaster_stemmed_tokens = [lancaster_stemmer.stem(token) for token in tokens] # Display the results print("Original Tokens:", tokens) print("Stemmed Tokens (Porter Stemmer):", porter_stemmed_tokens) print("Stemmed Tokens (Lancaster Stemmer):", lancaster_stemmed_tokens)
copy

Спочатку ми застосували токенізацію, потім відфільтрували стоп-слова і, нарешті, виконали стемінг для наших токенів за допомогою list comprehension. Щодо результатів, ці два стемери дали досить різні результати. Це пов'язано з тим, що Lancaster Stemmer має приблизно вдвічі більше правил, ніж Porter Stemmer, і є одним із найбільш "агресивних" стемерів.

Note
Примітка

Загалом, Porter Stemmer є найпопулярнішим варіантом, що дає більш змістовні результати порівняно з Lancaster Stemmer, який часто надмірно скорочує слова.

question mark

Які з наступних тверджень щодо Porter та Lancaster stemmer є правильними?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1
some-alt