Python — Стемминг и лемматизация
В области обработки естественного языка мы сталкиваемся с ситуацией, когда два или более слова имеют общий корень. Например, три слова — «согласен», «согласен» и «согласен» имеют одно и то же корневое слово «согласен». Поиск, включающий любое из этих слов, должен рассматривать их как то же самое слово, которое является корневым словом. Поэтому становится необходимым связать все слова в их коренные слова. В библиотеке NLTK есть методы для выполнения этой связи и выдачи вывода, показывающего корневое слово.
Приведенная ниже программа использует алгоритм стемминга Портера.
import nltk from nltk.stem.porter import PorterStemmer porter_stemmer = PorterStemmer() word_data = "It originated from the idea that there are readers who prefer learning new skills from the comforts of their drawing rooms" # First Word tokenization nltk_tokens = nltk.word_tokenize(word_data) #Next find the roots of the word for w in nltk_tokens: print "Actual: %s Stem: %s" % (w,porter_stemmer.stem(w))
Когда мы выполняем приведенный выше код, он дает следующий результат.
Actual: It Stem: It Actual: originated Stem: origin Actual: from Stem: from Actual: the Stem: the Actual: idea Stem: idea Actual: that Stem: that Actual: there Stem: there Actual: are Stem: are Actual: readers Stem: reader Actual: who Stem: who Actual: prefer Stem: prefer Actual: learning Stem: learn Actual: new Stem: new Actual: skills Stem: skill Actual: from Stem: from Actual: the Stem: the Actual: comforts Stem: comfort Actual: of Stem: of Actual: their Stem: their Actual: drawing Stem: draw Actual: rooms Stem: room
Лемматизация аналогична, но она приносит контекст в слова. Так что это идет дальше, связывая слова с похожим значением в одном слове. Например, если в абзаце есть такие слова, как автомобили, поезда и автомобиль, то он свяжет их все с автомобилем. В приведенной ниже программе мы используем лексическую базу данных WordNet для лемматизации.
import nltk from nltk.stem import WordNetLemmatizer wordnet_lemmatizer = WordNetLemmatizer() word_data = "It originated from the idea that there are readers who prefer learning new skills from the comforts of their drawing rooms" nltk_tokens = nltk.word_tokenize(word_data) for w in nltk_tokens: print "Actual: %s Lemma: %s" % (w,wordnet_lemmatizer.lemmatize(w))
Когда мы выполняем приведенный выше код, он дает следующий результат.
Лемматизация текста в Python
Лемматизация – это одна из важных задач обработки естественного языка, которая позволяет свести слово в его каноническую или базовую форму, называемую леммой. В языке Python существует множество инструментов и библиотек для решения этой задачи, а лемматизация является примером приложения в настоящее время широко известного алгоритма – алгоритма Портера.
Основным преимуществом использования лемматизации является снижение размерности данных, улучшение качества обработки и представления текстовой информации. При обработке текста для анализа, построения моделей или работы с данными вообще, лемматизация играет важную роль в экономии времени и ресурсов, а также в повышении качества полученных результатов.
В Python лемматизацию можно осуществлять с помощью различных библиотек, одна из которых – Natural Language Toolkit (NLTK). NLTK предоставляет широкий функционал для работы с естественным языком и включает в себя готовые словари, модели и алгоритмы для лемматизации. Благодаря этому, лемматизация в Python с помощью NLTK становится доступной и простой задачей даже для новичков.
Что такое лемматизация в Python?
Основным преимуществом лемматизации является сокращение разнообразных форм одного и того же слова до единой леммы. Например, слова «ходил», «ходят», «ходит», «ходить» после лемматизации будут приведены к единой лемме «ходить». Это позволяет упростить процесс анализа текстов и сравнения слов в различных контекстах.
Python предлагает несколько библиотек, таких как Natural Language Toolkit (NLTK) и pymorphy2, которые предоставляют возможность лемматизации текстов на русском языке. Эти библиотеки имеют готовые инструменты и словари, которые позволяют легко выполнять лемматизацию различных типов слов, включая существительные, глаголы, прилагательные и наречия.
Использование лемматизации в Python может быть полезным в таких областях, как информационный поиск, классификация текстов, извлечение фактов, машинное обучение и другие задачи, связанные с обработкой естественного языка.
Примеры использования лемматизации в Python
Python предлагает широкий набор библиотек для работы с естественным языком, включая инструменты для лемматизации текста. Ниже приведены несколько примеров использования лемматизации в Python:
Библиотека | Описание |
---|---|
nltk | Библиотека Natural Language Toolkit (NLTK) содержит методы для лемматизации текста на разных языках, включая русский. С помощью NLTK можно привести слова к их нормальной форме (лемме) посредством удаления словоизменительных окончаний и приведения слова к начальной форме. |
pymorphy2 | Pymorphy2 — это морфологический анализатор для русского языка. Он позволяет получать информацию о грамматических характеристиках слова, а также проводить лемматизацию и приведение слов к начальной форме. Pymorphy2 имеет широкий набор функций и удобный интерфейс. |
spaCy | Библиотека spaCy предоставляет современные инструменты для обработки естественного языка. Она включает в себя возможности лемматизации текстов, а также другие функции, такие как токенизация, разметка частей речи, извлечение именованных сущностей и многое другое. |
Смотрите также: Python программирование для начинающих
Пример использования лемматизации с помощью библиотеки NLTK может выглядеть следующим образом:
import nltk from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer() word = "running" lemma = lemmatizer.lemmatize(word, pos='v') print("Word:", word) print("Lemma:", lemma)
В данном примере слово «running» приводится к его нормальной форме «run». Параметр pos=’v’ указывает, что речь идет о глаголе. Благодаря лемматизации, можно получить более точное представление о смысле слова и упростить последующий анализ текста.
Как работает лемматизация в Python?
В Python для лемматизации текста используется библиотека NLTK (Natural Language Toolkit) вместе с модулем pymorphy2. Pymorphy2 представляет собой инструмент для морфологического анализа русских слов, которая обладает высокой точностью и широким функционалом.
Для начала работы с лемматизацией необходимо установить библиотеки NLTK и pymorphy2. Затем следует импортировать модули и инициализировать объект анализатора pymorphy2. После этого можно приступать к лемматизации текста.
Для лемматизации отдельных слов необходимо вызвать метод parse() у объекта анализатора и передать в него нужное слово. Метод parse() возвращает список объектов Token, в котором хранится информация о лемме, начальной форме и грамматических признаках слова.
Для лемматизации целого предложения можно использовать функцию lemmatize() из модуля pymorphy2. Функция lemmatize() автоматически разбирает предложение на отдельные слова, выполняет лемматизацию и возвращает их список.
Лемматизация в Python очень полезна при анализе текстов, поскольку она позволяет снизить размерность данных и улучшить точность классификации или поиска информации. Правильно примененная лемматизация позволяет избежать появления избыточных форм слов и учитывает грамматическую структуру языка, что делает ее более точной и эффективной по сравнению со стеммингом.
Преимущества использования лемматизации в Python
1. Унификация словоформ: Лемматизация позволяет свести слова разных форм к их основным (леммам) формам, что помогает унифицировать данные и сократить размер словаря. Это упрощает анализ текста и обработку корпусов большого объема.
2. Улучшение точности поиска: При использовании лемматизации в поисковых системах или алгоритмах информационного извлечения, можно достичь более точных результатов, так как запросы будут основываться на основных формах слов.
Смотрите также: Как узнать размер int переменной в Java?
3. Снижение размерности текстовых данных: Лемматизация позволяет сократить количество уникальных слов в текстовых данных, что полезно при анализе или классификации текстов, особенно при ограниченном объеме ресурсов и времени.
4. Упрощение анализа текстов: Лемматизация облегчает анализ текстов, так как позволяет сфокусироваться на основных значениях слов и их отношениях, игнорируя грамматические различия и формы.
5. Повышение производительности: Лемматизация может сэкономить время и вычислительные ресурсы при обработке больших объемов текста или при решении задач в области обработки естественного языка, так как обработка основных форм слов занимает меньше времени и ресурсов, чем обработка всех словоформ.
Все эти преимущества делают лемматизацию в Python неотъемлемой частью многих задач, связанных с анализом и обработкой текстовых данных на естественном языке.
Особенности лемматизации в Python
- pymorphy2 — одна из самых популярных библиотек для лемматизации в Python. Она основана на словаре морфологической информации и позволяет получить лемму для слова, указав его часть речи.
- NLTK — мощная библиотека для обработки естественного языка, включая лемматизацию. Она предоставляет готовые модули для лемматизации, такие как WordNet Lemmatizer.
- spaCy — современная библиотека для обработки естественного языка, которая также включает функционал для лемматизации. spaCy обладает высоким уровнем производительности и поддерживает несколько языков, включая русский.
Важно отметить, что при лемматизации в Python часто используется извлечение частей речи (POS tagging), что позволяет учитывать контекст и выбирать правильную лемму для слова в конкретном контексте. Это особенно актуально для русского языка, где морфология часто зависит от контекста.
Популярные библиотеки для лемматизации в Python
Библиотека | Краткое описание |
---|---|
NLTK | Библиотека Natural Language Toolkit (NLTK) предоставляет широкий набор инструментов для обработки текста, включая возможности для лемматизации. |
spaCy | spaCy — современная библиотека для обработки естественного языка. Она предоставляет удобный интерфейс для лемматизации и других задач, таких как токенизация и разметка частей речи. |
PyMorphy2 | PyMorphy2 — это морфологический анализатор для русского языка, основанный на словаре. Он предоставляет высокую производительность и точность в лемматизации. |
Mystem | Mystem — это морфологический анализатор, разработанный Яндексом. Он обладает высокой скоростью работы и позволяет проводить лемматизацию и другие операции над текстом. |
Каждая из этих библиотек имеет свои особенности и предоставляет различные инструменты для лемматизации в Python. Выбор библиотеки зависит от конкретного случая использования и требуемых результатов. Рекомендуется ознакомиться с документацией и примерами использования каждой библиотеки, чтобы определить наиболее подходящий вариант для вашего проекта.
Смотрите также: Выбираем данные с помощью SQL WHERE NULL
Вопрос-ответ:
Что такое лемматизация и зачем она нужна?
Лемматизация — это процесс приведения слова к его нормальной (словарной) форме. Это позволяет объединить разные грамматические формы одного и того же слова в единую лемму. Лемматизация важна для анализа текстов, поиска и сравнения слов, а также для построения различных языковых моделей и алгоритмов.
Как работает лемматизация в Python?
В Python для лемматизации текста можно использовать библиотеку NLTK (Natural Language Toolkit) или библиотеку pymorphy2. NLTK предоставляет функционал для работы с естественным языком, включая лемматизацию. Библиотека pymorphy2 основана на правилах русской морфологии и может лемматизировать русский текст. Для лемматизации в Python также можно использовать другие библиотеки и инструменты, в зависимости от нужд и требований проекта.
Какой метод лемматизации лучше использовать в Python?
Вопрос о том, какой метод лемматизации лучше использовать в Python, зависит от целей и требований проекта. Если важно учитывать особенности русского языка и правила морфологии, то рекомендуется использовать библиотеку pymorphy2. Если требуется общий функционал для работы с естественным языком и лемматизация не является первостепенной задачей, то можно обратиться к библиотеке NLTK или другим инструментам.
Как можно использовать лемматизацию в Python для анализа текстовых данных?
Лемматизация может быть полезна при анализе текстовых данных, например, для выделения ключевых слов, сравнения текстов, определения семантической близости и т.д. В Python можно применять лемматизацию к текстовым данным с помощью соответствующих библиотек и инструментов, например, NLTK или pymorphy2. После лемматизации текст становится более удобным для обработки и анализа в дальнейшем.
Можно ли использовать лемматизацию в Python для обработки больших объемов текстовых данных?
Да, лемматизация в Python может быть применена для обработки как небольших, так и больших объемов текстовых данных. Однако при обработке больших объемов текстов рекомендуется использовать оптимизированные алгоритмы и инструменты, чтобы справиться с вычислительной сложностью и ускорить процесс обработки. Некоторые библиотеки и фреймворки, например, Spark или Dask, предоставляют возможности для параллельной обработки текстовых данных, включая лемматизацию.
Лемматизация текста в Python
Лемматизация – это одна из важных задач обработки естественного языка, которая позволяет свести слово в его каноническую или базовую форму, называемую леммой. В языке Python существует множество инструментов и библиотек для решения этой задачи, а лемматизация является примером приложения в настоящее время широко известного алгоритма – алгоритма Портера.
Основным преимуществом использования лемматизации является снижение размерности данных, улучшение качества обработки и представления текстовой информации. При обработке текста для анализа, построения моделей или работы с данными вообще, лемматизация играет важную роль в экономии времени и ресурсов, а также в повышении качества полученных результатов.
В Python лемматизацию можно осуществлять с помощью различных библиотек, одна из которых – Natural Language Toolkit (NLTK). NLTK предоставляет широкий функционал для работы с естественным языком и включает в себя готовые словари, модели и алгоритмы для лемматизации. Благодаря этому, лемматизация в Python с помощью NLTK становится доступной и простой задачей даже для новичков.
Что такое лемматизация в Python?
Основным преимуществом лемматизации является сокращение разнообразных форм одного и того же слова до единой леммы. Например, слова «ходил», «ходят», «ходит», «ходить» после лемматизации будут приведены к единой лемме «ходить». Это позволяет упростить процесс анализа текстов и сравнения слов в различных контекстах.
Python предлагает несколько библиотек, таких как Natural Language Toolkit (NLTK) и pymorphy2, которые предоставляют возможность лемматизации текстов на русском языке. Эти библиотеки имеют готовые инструменты и словари, которые позволяют легко выполнять лемматизацию различных типов слов, включая существительные, глаголы, прилагательные и наречия.
Использование лемматизации в Python может быть полезным в таких областях, как информационный поиск, классификация текстов, извлечение фактов, машинное обучение и другие задачи, связанные с обработкой естественного языка.
Примеры использования лемматизации в Python
Python предлагает широкий набор библиотек для работы с естественным языком, включая инструменты для лемматизации текста. Ниже приведены несколько примеров использования лемматизации в Python:
Библиотека | Описание |
---|---|
nltk | Библиотека Natural Language Toolkit (NLTK) содержит методы для лемматизации текста на разных языках, включая русский. С помощью NLTK можно привести слова к их нормальной форме (лемме) посредством удаления словоизменительных окончаний и приведения слова к начальной форме. |
pymorphy2 | Pymorphy2 — это морфологический анализатор для русского языка. Он позволяет получать информацию о грамматических характеристиках слова, а также проводить лемматизацию и приведение слов к начальной форме. Pymorphy2 имеет широкий набор функций и удобный интерфейс. |
spaCy | Библиотека spaCy предоставляет современные инструменты для обработки естественного языка. Она включает в себя возможности лемматизации текстов, а также другие функции, такие как токенизация, разметка частей речи, извлечение именованных сущностей и многое другое. |
Смотрите также: Python программирование для начинающих
Пример использования лемматизации с помощью библиотеки NLTK может выглядеть следующим образом:
import nltk from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer() word = "running" lemma = lemmatizer.lemmatize(word, pos='v') print("Word:", word) print("Lemma:", lemma)
В данном примере слово «running» приводится к его нормальной форме «run». Параметр pos=’v’ указывает, что речь идет о глаголе. Благодаря лемматизации, можно получить более точное представление о смысле слова и упростить последующий анализ текста.
Как работает лемматизация в Python?
В Python для лемматизации текста используется библиотека NLTK (Natural Language Toolkit) вместе с модулем pymorphy2. Pymorphy2 представляет собой инструмент для морфологического анализа русских слов, которая обладает высокой точностью и широким функционалом.
Для начала работы с лемматизацией необходимо установить библиотеки NLTK и pymorphy2. Затем следует импортировать модули и инициализировать объект анализатора pymorphy2. После этого можно приступать к лемматизации текста.
Для лемматизации отдельных слов необходимо вызвать метод parse() у объекта анализатора и передать в него нужное слово. Метод parse() возвращает список объектов Token, в котором хранится информация о лемме, начальной форме и грамматических признаках слова.
Для лемматизации целого предложения можно использовать функцию lemmatize() из модуля pymorphy2. Функция lemmatize() автоматически разбирает предложение на отдельные слова, выполняет лемматизацию и возвращает их список.
Лемматизация в Python очень полезна при анализе текстов, поскольку она позволяет снизить размерность данных и улучшить точность классификации или поиска информации. Правильно примененная лемматизация позволяет избежать появления избыточных форм слов и учитывает грамматическую структуру языка, что делает ее более точной и эффективной по сравнению со стеммингом.
Преимущества использования лемматизации в Python
1. Унификация словоформ: Лемматизация позволяет свести слова разных форм к их основным (леммам) формам, что помогает унифицировать данные и сократить размер словаря. Это упрощает анализ текста и обработку корпусов большого объема.
2. Улучшение точности поиска: При использовании лемматизации в поисковых системах или алгоритмах информационного извлечения, можно достичь более точных результатов, так как запросы будут основываться на основных формах слов.
Смотрите также: Как узнать размер int переменной в Java?
3. Снижение размерности текстовых данных: Лемматизация позволяет сократить количество уникальных слов в текстовых данных, что полезно при анализе или классификации текстов, особенно при ограниченном объеме ресурсов и времени.
4. Упрощение анализа текстов: Лемматизация облегчает анализ текстов, так как позволяет сфокусироваться на основных значениях слов и их отношениях, игнорируя грамматические различия и формы.
5. Повышение производительности: Лемматизация может сэкономить время и вычислительные ресурсы при обработке больших объемов текста или при решении задач в области обработки естественного языка, так как обработка основных форм слов занимает меньше времени и ресурсов, чем обработка всех словоформ.
Все эти преимущества делают лемматизацию в Python неотъемлемой частью многих задач, связанных с анализом и обработкой текстовых данных на естественном языке.
Особенности лемматизации в Python
- pymorphy2 — одна из самых популярных библиотек для лемматизации в Python. Она основана на словаре морфологической информации и позволяет получить лемму для слова, указав его часть речи.
- NLTK — мощная библиотека для обработки естественного языка, включая лемматизацию. Она предоставляет готовые модули для лемматизации, такие как WordNet Lemmatizer.
- spaCy — современная библиотека для обработки естественного языка, которая также включает функционал для лемматизации. spaCy обладает высоким уровнем производительности и поддерживает несколько языков, включая русский.
Важно отметить, что при лемматизации в Python часто используется извлечение частей речи (POS tagging), что позволяет учитывать контекст и выбирать правильную лемму для слова в конкретном контексте. Это особенно актуально для русского языка, где морфология часто зависит от контекста.
Популярные библиотеки для лемматизации в Python
Библиотека | Краткое описание |
---|---|
NLTK | Библиотека Natural Language Toolkit (NLTK) предоставляет широкий набор инструментов для обработки текста, включая возможности для лемматизации. |
spaCy | spaCy — современная библиотека для обработки естественного языка. Она предоставляет удобный интерфейс для лемматизации и других задач, таких как токенизация и разметка частей речи. |
PyMorphy2 | PyMorphy2 — это морфологический анализатор для русского языка, основанный на словаре. Он предоставляет высокую производительность и точность в лемматизации. |
Mystem | Mystem — это морфологический анализатор, разработанный Яндексом. Он обладает высокой скоростью работы и позволяет проводить лемматизацию и другие операции над текстом. |
Каждая из этих библиотек имеет свои особенности и предоставляет различные инструменты для лемматизации в Python. Выбор библиотеки зависит от конкретного случая использования и требуемых результатов. Рекомендуется ознакомиться с документацией и примерами использования каждой библиотеки, чтобы определить наиболее подходящий вариант для вашего проекта.
Смотрите также: Выбираем данные с помощью SQL WHERE NULL
Вопрос-ответ:
Что такое лемматизация и зачем она нужна?
Лемматизация — это процесс приведения слова к его нормальной (словарной) форме. Это позволяет объединить разные грамматические формы одного и того же слова в единую лемму. Лемматизация важна для анализа текстов, поиска и сравнения слов, а также для построения различных языковых моделей и алгоритмов.
Как работает лемматизация в Python?
В Python для лемматизации текста можно использовать библиотеку NLTK (Natural Language Toolkit) или библиотеку pymorphy2. NLTK предоставляет функционал для работы с естественным языком, включая лемматизацию. Библиотека pymorphy2 основана на правилах русской морфологии и может лемматизировать русский текст. Для лемматизации в Python также можно использовать другие библиотеки и инструменты, в зависимости от нужд и требований проекта.
Какой метод лемматизации лучше использовать в Python?
Вопрос о том, какой метод лемматизации лучше использовать в Python, зависит от целей и требований проекта. Если важно учитывать особенности русского языка и правила морфологии, то рекомендуется использовать библиотеку pymorphy2. Если требуется общий функционал для работы с естественным языком и лемматизация не является первостепенной задачей, то можно обратиться к библиотеке NLTK или другим инструментам.
Как можно использовать лемматизацию в Python для анализа текстовых данных?
Лемматизация может быть полезна при анализе текстовых данных, например, для выделения ключевых слов, сравнения текстов, определения семантической близости и т.д. В Python можно применять лемматизацию к текстовым данным с помощью соответствующих библиотек и инструментов, например, NLTK или pymorphy2. После лемматизации текст становится более удобным для обработки и анализа в дальнейшем.
Можно ли использовать лемматизацию в Python для обработки больших объемов текстовых данных?
Да, лемматизация в Python может быть применена для обработки как небольших, так и больших объемов текстовых данных. Однако при обработке больших объемов текстов рекомендуется использовать оптимизированные алгоритмы и инструменты, чтобы справиться с вычислительной сложностью и ускорить процесс обработки. Некоторые библиотеки и фреймворки, например, Spark или Dask, предоставляют возможности для параллельной обработки текстовых данных, включая лемматизацию.
Стемминг и лемматизация в Python NLTK с примерами
Стемминг и лемматизация в Python NLTK — это методы нормализации текста для обработки естественного языка. Эти методы широко используются для предварительной обработки текста. Разница между стеммингом и лемматизацией заключается в том, что стемминг происходит быстрее, поскольку он режет слова без знания.wing контекст, тогда как лемматизация выполняется медленнее, поскольку перед обработкой известен контекст слов.
Что такое Стемминг?
Морфологический это метод нормализации слов в Обработка естественного языка. Это метод, при котором набор слов в предложении преобразуется в последовательность, чтобы сократить поиск. В этом методе нормализуются слова, имеющие одинаковое значение, но имеющие некоторые вариации в зависимости от контекста или предложения.
Другими словами, корень одного слова, но существует множество вариаций одного и того же слова. Например, корневое слово — «есть», а его варианты — «ест, ест, ест и тому подобное». Таким же образом с помощью Стемминга в Питон, мы можем найти корень слова в любых вариациях.
Например
He was riding. He was taking the ride.
В двух приведенных выше предложениях смысл один и тот же: верховая езда в прошлом. Человек легко может понять, что оба значения одинаковы. Но для машин оба предложения разные. Таким образом, стало сложно преобразовать его в ту же строку данных. Если мы не предоставим тот же набор данных, машина не сможет предсказать. Поэтому необходимо дифференцировать значение каждого слова, чтобы подготовить набор данных для машинного обучения. И здесь стемминг используется для категоризации одного и того же типа данных путем получения его корневого слова.
Давайте реализуем это с помощью программы Python. В NLTK есть алгоритм под названием «PorterStemmer». Этот алгоритм принимает список токенизированных слов и объединяет его в корневое слово.
Программа для понимания стемминга
from nltk.stem import PorterStemmer e_words= ["wait", "waiting", "waited", "waits"] ps =PorterStemmer() for w in e_words: rootWord=ps.stem(w) print(rootWord)
Результат:
wait wait wait wait
Пояснение к коду:
- В NLTk есть модуль Stem, который импортируется. Если вы импортируете модуль целиком, программа станет тяжелой, поскольку будет содержать тысячи строк кода. Таким образом, из всего модуля стебля мы импортировали только «PorterStemmer».
- Мы подготовили фиктивный список данных вариаций одного и того же слова.
- Создается объект, принадлежащий классу nltk.stem.porter.PorterStemmer.
- Далее мы передавали его в PorterStemmer один за другим с помощью цикла for. Наконец, мы получили выходное корневое слово каждого слова, упомянутого в списке.
Из приведенного выше объяснения можно также сделать вывод, что стемминг считается важным этапом предварительной обработки, поскольку он устраняет избыточность данных и вариации в одном и том же слове. В результате данные фильтруются, что помогает улучшить обучение машин.
Теперь мы передаем полное предложение и проверяем его поведение на выходе.
Программа:
from nltk.stem import PorterStemmer from nltk.tokenize import sent_tokenize, word_tokenize sentence="Hello Guru99, You have to build a very good site and I love visiting your site." words = word_tokenize(sentence) ps = PorterStemmer() for w in words: rootWord=ps.stem(w) print(rootWord)
Вывод:
hello guru99 , you have build a veri good site and I love visit your site
Пояснение к коду:
- Пакет PorterStemer импортируется из основы модуля.
- Импортируются пакеты для токенизации предложений, а также слов.
- Написано предложение, которое должно быть токенизировано на следующем этапе.
- На этом этапе реализуется токенизация слов, связанная с лемматизацией.
- Здесь создается объект для PorterStemmer.
- Запускается цикл, и каждое слово выполняется с использованием объекта, созданного в строке кода 5.
Вывод:
Stemming — это модуль предварительной обработки данных. В английском языке существует множество вариантов одного и того же слова. Эти различия создают неоднозначность в обучении и прогнозировании машинного обучения. Чтобы создать успешную модель, крайне важно фильтровать такие слова и преобразовывать их в однотипные секвенированные данные с помощью стемминга. Кроме того, это важный метод получения данных строк из набора предложений и удаления избыточных данных, также известный как нормализация.
Что такое лемматизация?
лемматизации в НЛТК — это алгоритмический процесс нахождения леммы слова в зависимости от его значения и контекста. Лемматизация обычно относится к морфологическому анализу слов, целью которого является удаление флективных окончаний. Это помогает вернуть базовую или словарную форму слова, известного как лемма.
Метод лемматизации NLTK основан на встроенной функции морфинга WorldNet. Предварительная обработка текста включает в себя как стемминг, так и лемматизацию. Многие люди находят эти два термина запутанными. Некоторые считают это одним и тем же, но есть разница между стеммингом и лемматизацией. Лемматизация предпочтительнее первой по следующей причине.
Почему лемматизация лучше стемминга?
Алгоритм стемминга работает путем вырезания суффикса из слова. В более широком смысле обрезает либо начало, либо конец слова.
Напротив, лемматизация является более мощным средством. operaции и учитывает морфологический анализ слов. Он возвращает лемму, которая является базовой формой всех ее флективных форм. Для создания словарей и поиска правильной формы слова необходимы глубокие лингвистические знания. Стемминг – это вообще operaция, в то время как лемматизация является разумным operaгде правильную форму можно будет посмотреть в словаре. Следовательно, лемматизация помогает лучше формировать обучение с помощью машины особенности.
Код, позволяющий различать лемматизацию и стемминг
Код стемминга:
import nltk from nltk.stem.porter import PorterStemmer porter_stemmer = PorterStemmer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Stemming for <> is <>".format(w,porter_stemmer.stem(w)))
Вывод::
Stemming for studies is studi Stemming for studying is studi Stemming for cries is cri Stemming for cry is cri
Код лемматизации:
import nltk from nltk.stem import WordNetLemmatizer wordnet_lemmatizer = WordNetLemmatizer() text = "studies studying cries cry" tokenization = nltk.word_tokenize(text) for w in tokenization: print("Lemma for <> is <>".format(w, wordnet_lemmatizer.lemmatize(w)))
Вывод:
Lemma for studies is study Lemma for studying is studying Lemma for cries is cry Lemma for cry is cry
Обсуждение результатов
Если вы посмотрите на учебу и учебу, результат будет одинаковым (изучение), но лемматизатор NLTK предоставляет разные леммы как для токенов «учеба для учебы», так и для «учеба для учебы». Поэтому, когда нам нужно создать набор функций для обучения машины, было бы здорово, если бы предпочтительна лемматизация.
Вариант использования лемматизатора
Лемматизатор минимизирует двусмысленность текста. Примеры таких слов, как велосипед или велосипеды, преобразуются в базовое слово велосипед. По сути, он преобразует все слова, имеющие одинаковое значение, но разное представление, в их базовую форму. Это уменьшает плотность слов в данном тексте и помогает подготовить точные характеристики для обучающей машины. Чем чище данные, тем умнее и точнее будет ваша модель машинного обучения. NLTK Lemmatizer также сэкономит память и вычислительные затраты.
Пример реального времениwing использование лемматизации Wordnet и тегов POS в Python
from nltk.corpus import wordnet as wn from nltk.stem.wordnet import WordNetLemmatizer from nltk import word_tokenize, pos_tag from collections import defaultdict tag_map = defaultdict(lambda : wn.NOUN) tag_map['J'] = wn.ADJ tag_map['V'] = wn.VERB tag_map['R'] = wn.ADV text = "guru99 is a totally new kind of learning experience." tokens = word_tokenize(text) lemma_function = WordNetLemmatizer() for token, tag in pos_tag(tokens): lemma = lemma_function.lemmatize(token, tag_map[tag[0]]) print(token, "=>", lemma)
Код Пояснение
- Во-первых, импортируется Wordnet для чтения корпуса.
- WordNetLemmatizer импортируется из wordnet.
- Токенизация слова, а также части речевого тега импортируются из nltk.
- Словарь по умолчанию импортируется из коллекций.
- Создается словарь, где pos_tag (первая буква) — это значения ключей, значения которых сопоставляются со значением из словаря Wordnet. Мы взяли единственную первую букву, так как будем ее использовать. later в петле.
- Текст записывается и токенизируется.
- Создается объект lemma_function, который будет использоваться внутри цикла.
- Запускается цикл, и lemmatize принимает два аргумента: один — токен, а другой — сопоставление pos_tag со значением wordnet.
Результат:
guru99 => guru99 is => be totally => totally new => new kind => kind of => of learning => learn experience => experience . => .
Лемматизация Python тесно связана с словарь WordNet, поэтому очень важно изучить эту тему, поэтому мы оставим ее следующей темой.