Стемінг
Свайпніть щоб показати меню
Розуміння стемінгу
Стемінг — це техніка нормалізації тексту, яка використовується в NLP для зведення змінених слів до їхньої основи.
Більш точно, стемінг полягає у видаленні афіксів (зазвичай лише суфіксів) зі слів для отримання їхньої кореневої форми, яка називається основа. Наприклад, основою для "running", "runs" і "run" є "run".
Мета стемінгу — спростити аналіз, розглядаючи подібні слова як одну сутність, що зрештою підвищує ефективність у різних завданнях NLP.
Стемінг з NLTK
NLTK надає різні алгоритми стемінгу, серед яких найпопулярнішими є Porter Stemmer та Lancaster Stemmer. Ці алгоритми застосовують певні правила для видалення афіксів і отримання основи слова.
Усі класи стемерів у NLTK мають спільний інтерфейс. Спочатку потрібно створити екземпляр класу стемера, а потім використовувати його метод stem() для кожного токена.
1234567891011121314151617181920212223242526272829import 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)
Спочатку ми застосували токенізацію, потім відфільтрували стоп-слова і, нарешті, виконали стемінг для наших токенів за допомогою list comprehension. Щодо результатів, ці два стемери дали досить різні результати. Це пов'язано з тим, що Lancaster Stemmer має приблизно вдвічі більше правил, ніж Porter Stemmer, і є одним із найбільш "агресивних" стемерів.
Загалом, Porter Stemmer є найпопулярнішим варіантом, що дає більш змістовні результати порівняно з Lancaster Stemmer, який часто надмірно скорочує слова.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат