Стемінг
Розуміння стемінгу
Стемінг — це техніка нормалізації тексту, яка використовується в 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, який має тенденцію до надмірного скорочення слів.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Стемінг
Свайпніть щоб показати меню
Розуміння стемінгу
Стемінг — це техніка нормалізації тексту, яка використовується в 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, який має тенденцію до надмірного скорочення слів.
Дякуємо за ваш відгук!