Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Стемінг | Секція
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
Обробка природної мови

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

Які з наступних тверджень про стемери Портера та Ланкастера є правильними?

Select all correct answers

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

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