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

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

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

Suggested prompts:

What are the main differences between the Porter and Lancaster stemmers?

Can you explain what stop words are and why we remove them?

How does stemming improve NLP tasks?

Awesome!

Completion rate improved to 3.45

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