Основы обработки естественного языка за 10 минут
Вероятно, вы находитесь здесь потому, что хотите как можно скорее научиться обработке естественного языка. Без лишних слов приступим к процессу.
Первым делом следует:
1. Установить зависимости (Python версии 3.7 или выше).
2. Скачать IDE или установить Jupyter Notebook.
Чтобы установить Jupyter Notebook, добавьте в командную строку pip install jupyter-notebook , а затем введите jupyter notebook , чтобы запустить его. После этого откроется страница с программой по локальному адресу http://127.0.0.1:8888/token.
3. Установить модули
Для этого введите команду pip install nltk .
NLTK — это библиотека Python, которая используется для выполнения всех процессов NLP, таких как выделение основ слов, лемматизация (приведение слова к начальной форме) и др.
В этой статье будут рассмотрены следующие процессы:
3. Выделение основы слова.
5. Создание базы слов.
6. Маркировка частей речи.
7. Построение цепочек слов.
Но прежде всего разберёмся, что же такое NLP.
Естественный язык (NL) обозначает явление, благодаря которому люди общаются друг с другом, а его обработка означает лишь передачу данных в понятной форме. Таким образом, можно сказать, что NLP — это способ, который помогает компьютерам общаться с людьми на их языке.
Эта сфера является одной из самых обширных областей исследования, потому что существует огромное количество данных, относящихся к текстовой информации. И поскольку нам доступно так много подходящих данных, то нужна и технология, с помощью которой можно не только их обрабатывать, но и получать из них полезную информацию.
Теперь, когда у нас есть понимание того, что такое NLP, приступим к изучению каждого из её процессов.
1. Токенизация
Токенизация — это процесс разделения целого текста на токены (отдельные кусочки). Её делят на 2 типа:
- Токенизация слов.
- Токенизация предложений.
В представленном выше коде мы сначала импортируем модуль nltk , а во второй строчке импортируем токенизаторы sent_tokenize и word_tokenize из библиотеки nltk.tokenize , чтобы затем передать им в качестве параметра исходный текст.
Конечный вариант будет выглядеть вот так:
2. Стоп-слова
Стоп-слова — это такие слова, которые присутствуют в любом языке и не привносят никакой полезной информации в предложение. В NLP стоп-слова образуют список слов, не важных при анализе данных.
Примеры стоп-слов: «он», «она», «есть» и др.
Наша задача — удалить все стоп-слова из текста, чтобы продолжить дальнейшую обработку.
В английском языке насчитывается 179 стоп-слов. Посмотреть их можно в библиотеке NLTK.
Импортируем модуль stopwords из библиотеки nltk.corpus .
А вот как удалить стоп-слова из заданного текста:
3. Выделение основы слова
Выделение основы слова — это процесс сокращения слова до его основы (леммы) или корня, без приставок и суффиксов. Другими словами, этот процесс убирает множественное число у существительных и глаголов и приводит прилагательные к их исходной форме. Например, любил → любить, учивший → учить.
В Python для выделения основы есть специальный модуль PorterStemmer . Он импортируется в проект из библиотеки nltk.stem .
Следует помнить, что выделение основы лучше всего работает с одиночными словами.
4. Лемматизация
Лемматизация обычно относится к процессу правильного использования лексики и морфологическому анализу слов, направленному на удаление только флективных окончаний и на возвращение начальной формы слова, то есть леммы. Проще говоря, лемматизация схожа с выделением основы слова, но отличается тем, что выделяет его смыслоразличительную форму.
Зачастую лемматизация используется при разработке и тестировании чат-ботов, предугадывании слов в фразе и т.д.
5. WordNet
WordNet — это лексикологическая база, то есть словарь английского языка, созданный специально для обработки естественного языка. С помощью wordnet можно подбирать синонимы и антонимы.
В Python этот модуль импортируется из nltk.corpus .
Код для нахождения синонимов или антонимов к слову:
6. Маркировка частей речи
Маркировка частей речи — это процесс преобразования предложения в формы, то есть в список слов или кортежей (каждый кортеж имеет вид [слово, часть речи]). Маркировочные символы здесь рассматриваются как сокращение названий маркированных частей речи и обозначают, является ли слово существительным, прилагательным, глаголом или какой-то ещё частью речи.
Список маркированных частей речи:
В Python для выделения меток частей речи используется модуль nltk.pos_tag .
7. Словарный набор
Итак, теперь мы уже знаем о токенизации, выделении основ и лемматизации. Все эти процессы предназначены для очищения текста от словесного мусора, теперь же стоит заняться преобразованием текста в некое числовое представление, называемое вектором, чтобы мы могли загрузить эти данные в модель машинного обучения для их дальнейшей обработки.
Для преобразования данных в вектор используются специальные Python-библиотеки.
Вот как работает векторное преобразование:
Процесс выше выполняется с помощью модуля CountVectorizer , он импортируется из модуля sklearn.feature_extraction.text .
Код для внедрения модуля CountVectorizer в Python:
Поздравляю, теперь вы разбираетесь в основах обработки естественного языка в Python!
Lemmatization Approaches with Examples in Python
Lemmatization is the process of converting a word to its base form. The difference between stemming and lemmatization is, lemmatization considers the context and converts the word to its meaningful base form, whereas stemming just removes the last few characters, often leading to incorrect meanings and spelling errors.
Comparing Lemmatization Approaches in Python. Photo by Jasmin Schreiber
Contents
1. Introduction
Lemmatization is the process of converting a word to its base form.
The difference between stemming and lemmatization is, lemmatization considers the context and converts the word to its meaningful base form, whereas stemming just removes the last few characters, often leading to incorrect meanings and spelling errors.
For example, lemmatization would correctly identify the base form of ‘caring’ to ‘care’, whereas, stemming would cutoff the ‘ing’ part and convert it to car. ‘Caring’ -> Lemmatization -> ‘Care’ ‘Caring’ -> Stemming -> ‘Car’
Also, sometimes, the same word can have multiple different ‘lemma’s. So, based on the context it’s used, you should identify the ‘part-of-speech’ (POS) tag for the word in that specific context and extract the appropriate lemma.
Examples of implementing this comes in the following sections. Today, we will see how to implement lemmatization using the following python packages.
- Wordnet Lemmatizer
- Spacy Lemmatizer
- TextBlob
- CLiPS Pattern
- Stanford CoreNLP
- Gensim Lemmatizer
- TreeTagger
2. Wordnet Lemmatizer with NLTK
Wordnet is an large, freely and publicly available lexical database for the English language aiming to establish structured semantic relationships between words.
It offers lemmatization capabilities as well and is one of the earliest and most commonly used lemmatizers.
NLTK offers an interface to it, but you have to download it first in order to use it. Follow the below instructions to install nltk and download wordnet .
In order to lemmatize, you need to create an instance of the WordNetLemmatizer() and call the lemmatize() function on a single word.
Let’s lemmatize a simple sentence. We first tokenize the sentence into words using nltk.word_tokenize and then we will call lemmatizer.lemmatize() on each word. This can be done in a list comprehension (the for-loop inside square brackets to make a list).
The above code is a simple example of how to use the wordnet lemmatizer on words and sentences.
Notice it didn’t do a good job. Because, ‘are’ is not converted to ‘be’ and ‘hanging’ is not converted to ‘hang’ as expected.
Complete Machine Learning Mastery
Do you want to learn AI / ML like experienced Data Scientists?
Go from Zero to Job-ready with recognized certification. Solve projects with real company data and get proficient in AI/ML it's true sense.
Complete Machine Learning Mastery
Go from Zero to Job-ready with recognized certification. Get the mindset, the confidence and the skills that make Data Scientist highly valuable.
This can be corrected if we provide the correct ‘part-of-speech’ tag (POS tag) as the second argument to lemmatize() .
Sometimes, the same word can have a multiple lemmas based on the meaning / context.
3. Wordnet Lemmatizer with appropriate POS tag
It may not be possible manually provide the corrent POS tag for every word for large texts.
So, instead, we will find out the correct POS tag for each word, map it to the right input character that the WordnetLemmatizer accepts and pass it as the second argument to lemmatize() .
So how to get the POS tag for a given word?
In nltk, it is available through the nltk.pos_tag() method. It accepts only a list (list of words), even if its a single word.
nltk.pos_tag() returns a tuple with the POS tag. The key here is to map NLTK’s POS tags to the format wordnet lemmatizer would accept. The get_wordnet_pos() function defined below does this mapping job.
4. spaCy Lemmatization
spaCy is a relatively new in the space and is billed as an industrial strength NLP engine.
It comes with pre-built models that can parse text and compute various NLP related features through one single function call.
Ofcourse, it provides the lemma of the word too. Before we begin, let’s install spaCy and download the ‘en’ model.
spaCy determines the part-of-speech tag by default and assigns the corresponding lemma. It comes with a bunch of prebuilt models where the ‘en’ we just downloaded above is one of the standard ones for english.
It did all the lemmatizations the Wordnet Lemmatizer supplied with the correct POS tag did. Plus it also lemmatized ‘best’ to ‘good’. Nice! You’d see the -PRON- character coming up whenever spacy detects a pronoun.
5. TextBlob Lemmatizer
TexxtBlob is a powerful, fast and convenient NLP package as well. Using the Word and TextBlob objects, its quite straighforward to parse and lemmatize words and sentences respectively.
However to lemmatize a sentence or paragraph, we parse it using TextBlob and call the lemmatize() function on the parsed words.
It did not do a great job at the outset, because, like NLTK, TextBlob also uses wordnet internally. So, let’s pass the appropriate POS tag to the lemmatize() method.
6. TextBlob Lemmatizer with appropriate POS tag
7. Pattern Lemmatizer
Pattern by CLiPs is a versatile module with many useful NLP capabilities.
If you run into issues while installing pattern, check out the known issues on github. I myself faced this issue when installing on a mac.
You can also view the possible lexeme’s for each word.
You could also obtain the lemma by parsing the text.
8. Stanford CoreNLP Lemmatization
Standford CoreNLP is a popular NLP tool that is originally implemented in Java. There are many python wrappers written around it. The one I use below is one that is quite convenient to use.
But before that, you need to download Java and the Standford CoreNLP software.
Make sure you have the following requirements before getting to the lemmatization code: Step 1: Java 8 Installed You can download and install from Java download page. Mac users can check the java version by typing java -version in terminal. If its 1.8+, then its Ok.
Else follow below steps.
Step 3: Start the Stanford CoreNLP server from terminal. How? cd to the folder you just unzipped and run below command in terminal:
This will start a StanfordCoreNLPServer listening at port 9000.
Now, we are ready to extract the lemmas in python. In the stanfordcorenlp package, the lemma is embedded in the output of the annotate() method of the StanfordCoreNLP connection object (see code below).
The output of nlp.annotate() was converted to a dict using json.loads .
Now the lemma we need is embedded a couple of layers inside the parsed_dict .
So here, we need to just the lemma value from each dict.
I use list comprehensions below to do the trick.
Let’s generalize this a nice function so as to handle larger paragraphs.
9. Gensim Lemmatize
Gensim provide lemmatization facilities based on the pattern package.
It can be implemented using the lemmatize() method in the utils module.
By default lemmatize() allows only the ‘JJ’, ‘VB’, ‘NN’ and ‘RB’ tags.
10. TreeTagger
Treetagger is a Part-of-Speech tagger for many languages.
And it provides the lemma of the word as well.
You will need to download and install the TreeTagger software itself in order to use it by following steps mentioned.
Treetagger indeed does a good job in converting ‘best’ to ‘good’ and for other words as well. For further reading, refer to TreeTaggerWrapper’s documentation.
11. Comparing NLTK, TextBlob, spaCy, Pattern and Stanford CoreNLP
Let’s run lemmatization using the 5 implementations on the following sentence and compare output.
12. Conclusion
So those are the methods you can use the text time you take up an NLP project.
I would be happy to know if you have any new approaches or suggestions through your comments.
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Python для NLP: токенизация, стемминг и лемматизация с библиотекой SpaCy
В предыдущей статье [/ python-for-nlp-working-with-text-and-pdf-files /] мы начали обсуждение того, как выполнять обработку естественного языка с помощью Python. Мы увидели, как читать и писать текстовые и PDF-файлы. В этой статье мы начнем работать с библиотекой spaCy [https://spacy.io/] для выполнения еще нескольких основных задач НЛП, таких как токенизация [https://en.wikipedia.org/wiki/Lexical_analysis#Tokenization] , стемминг и лемматизация [https://nlp.stanford.edu/IR-book/html/htmledition/stemming-
Время чтения: 9 мин.
В предыдущей статье мы начали обсуждение того, как выполнять обработку естественного языка с помощью Python. Мы увидели, как читать и писать текстовые и PDF-файлы. В этой статье мы начнем работать с библиотекой spaCy для выполнения еще нескольких основных задач НЛП, таких как токенизация , стемминг и лемматизация .
Введение в SpaCy
Библиотека spaCy — одна из самых популярных библиотек NLP наряду с NLTK. Основное различие между двумя библиотеками заключается в том, что NLTK содержит широкий спектр алгоритмов для решения одной проблемы, тогда как spaCy содержит только один, но лучший алгоритм для решения проблемы.
NLTK был выпущен еще в 2001 году, в то время как spaCy является относительно новым и был разработан в 2015 году. В этой серии статей о NLP мы в основном будем иметь дело с spaCy из-за его современного состояния. Однако мы также коснемся NLTK, когда легче выполнить задачу, используя NLTK, а не spaCy.
Установка spaCy
Если вы используете установщик pip для установки библиотек Python, перейдите в командную строку и выполните следующую инструкцию:
В противном случае, если вы используете Anaconda, вам необходимо выполнить следующую команду в командной строке Anaconda:
После загрузки и установки spaCy следующим шагом будет загрузка языковой модели. Мы будем использовать англоязычную модель. Языковая модель используется для выполнения множества задач НЛП, которые мы увидим в следующем разделе.
Следующая команда загружает языковую модель:
Базовая функциональность
Прежде чем мы углубимся в различные функции spaCy, давайте вкратце посмотрим, как с ним работать.
В качестве первого шага вам необходимо импортировать spacy библиотеку следующим образом:
Далее нам нужно загрузить языковую модель spaCy.
В приведенном выше скрипте мы используем функцию load spacy библиотеки для загрузки базовой английской языковой модели. Модель хранится в переменной sp
Давайте теперь создадим небольшой документ, используя эту модель. Документ может быть предложением или группой предложений и может иметь неограниченную длину. Следующий скрипт создает простой документ spaCy.
SpaCy автоматически разбивает ваш документ на токены, когда документ создается с использованием модели.
Токен просто относится к отдельной части предложения, имеющей некоторое семантическое значение. Посмотрим, какие токены есть в нашем документе:
Результат выполнения сценария выше выглядит следующим образом:
Как видите, в нашем документе есть следующие токены. Мы также можем увидеть части речи каждого из этих токенов, используя .pos_ показанный ниже:
Выход:
Вы можете видеть, что каждому слову или символу в нашем предложении была отведена часть речи. Например, «Манчестер» был помечен как существительное собственное, «Смотрю» — как глагол и так далее.
Наконец, помимо частей речи, мы также можем видеть зависимости.
Создадим еще один документ:
Для синтаксического анализа зависимостей используется атрибут dep_ как показано ниже:
Результат выглядит так:
Из выходных данных вы можете видеть, что spaCy достаточно умен, чтобы найти зависимость между токенами, например, в предложении, которое у нас есть, есть слово is’nt . Синтаксический анализатор зависимостей разбил его на два слова и указывает, что n’t на самом деле является отрицанием предыдущего слова.
Для подробного понимания синтаксического анализа зависимостей обратитесь к этой статье .
Помимо печати слов, вы также можете распечатать предложения из документа.
Теперь мы можем перебирать каждое предложение, используя следующий сценарий:
Результат скрипта выглядит так:
Вы также можете проверить, начинается ли предложение с определенного токена или нет. Вы можете получить отдельные токены, используя индекс и квадратные скобки, как массив:
В приведенном выше сценарии мы ищем 5-е слово в документе. Имейте в виду, что индекс начинается с нуля, а период считается токеном. На выходе вы должны увидеть:
Теперь, чтобы увидеть, начинается ли какое-либо предложение в документе с The , мы можем использовать is_sent_start как показано ниже:
На выходе вы увидите True поскольку токен The используется в начале второго предложения.
В этом разделе мы увидели несколько основных операций библиотеки spaCy. Давайте теперь копнем глубже и подробно рассмотрим токенизацию, стемминг и лемматизацию.
Токенизация
Как объяснялось ранее, токенизация — это процесс разбиения документа на слова, знаки препинания, числовые цифры и т. Д.
Рассмотрим подробнее токенизацию spaCy. Создайте новый документ, используя следующий скрипт:
Вы можете видеть, что предложение содержит кавычки в начале и в конце. Он также содержит знаки препинания в сокращениях «UK» и «USA».
Посмотрим, как spaCy токенизует это предложение.
Выход:
В выходных данных вы можете видеть, что spaCy разметила начальную и конечную двойные кавычки. Тем не менее, он достаточно умен, чтобы не размечать точку пунктуации между аббревиатурами, такими как UK и USA.
Посмотрим еще один пример токенизации:
Здесь, в предложении выше, у нас есть тире в слове «невегетарианец» и в адресе электронной почты. Посмотрим, как spaCy это токенизирует:
Выход:
Из выходных данных видно, что spaCy действительно смог обнаружить электронное письмо и не токенизировал его, несмотря на наличие знака «-». С другой стороны, слово «невегетарианец» было символическим.
Давайте теперь посмотрим, как мы можем подсчитать слова в документе:
На выходе вы увидите 14 — количество токенов в sentence4 .
Обнаружение сущностей
Помимо токенизации документов в слова, вы также можете узнать, является ли слово сущностью, такой как компания, место, здание, валюта, учреждение и т. Д.
Давайте посмотрим на простой пример распознавания именованных сущностей:
Давайте сначала попробуем просто токенизировать его:
Выход:
Мы знаем, что «Манчестер Юнайтед» — это одно слово, поэтому его нельзя токенизировать двумя словами. Точно так же «Гарри Кейн» — это имя человека, а «90 миллионов долларов» — это денежная ценность. Их также не следует токенизировать.
Здесь и вступает в игру распознавание именованных сущностей. Чтобы получить именованные сущности из документа, вы должны использовать атрибут ents Давайте извлечем названные сущности из приведенного выше предложения. Выполните следующий скрипт:
В приведенном выше скрипте мы печатаем текст объекта, метку объекта и детали объекта. Результат выглядит так:
Выход:
Вы можете видеть, что средство распознавания именованных сущностей spaCy успешно распознало «Манчестер Юнайтед» как организацию, «Гарри Кейна» как личность и «90 миллионов долларов» как денежную ценность.
Обнаружение существительных
Помимо обнаружения именованных сущностей, также могут быть обнаружены существительные. Для этого noun_chunks атрибут noun_chunks. Рассмотрим следующее предложение:
Попробуем найти существительные из этого предложения:
Выход:
Из выходных данных вы можете видеть, что существительное также может быть именованным объектом, и наоборот.
Стемминг
Основание относится к приведению слова к его корневой форме. При выполнении задач обработки естественного языка вы столкнетесь с различными сценариями, в которых вы найдете разные слова с одним и тем же корнем. Например, compute, computer, computing, computed и т. Д. Вы можете уменьшить слова до их корневой формы для единообразия. Вот тут-то и вступает в игру стемминг.
Это может вас удивить, но в spaCy нет функции для стемминга, поскольку он полагается только на лемматизацию. Поэтому в этом разделе мы будем использовать NLTK для стемминга.
В NLTK есть два типа стеммеров: Porter Stemmer и Snowball . Оба они были реализованы с использованием разных алгоритмов.
Портер Стеммер
Давайте посмотрим на стеммер портера в действии:
Создадим класс PorterStemmer .
Предположим, у нас есть следующий список, и мы хотим сократить эти слова до основы:
Следующий скрипт находит основу для слов в списке с помощью стеммера портера:
Результат выглядит следующим образом:
Вы можете видеть, что все 4 слова были сокращены до «вычислить», что на самом деле вовсе не слово.
Снежок Стеммер
Стеммер Snowball — это немного улучшенная версия стеммера Porter, которую обычно предпочитают последнему. Давайте посмотрим на стеммер снежка в действии:
В приведенном выше сценарии мы использовали стеммер Snowball, чтобы найти основу тех же 4 слов, что и стеммер портера. Результат выглядит так:
Вы можете видеть, что результаты такие же. У нас все еще есть «вычислитель» в качестве основы. Опять же, слово «вычислить» на самом деле не словарное.
Вот тут-то и пригодится лемматизация. Лемматизация сокращает слово до основы, как оно появляется в словаре. Основы, возвращаемые посредством лемматизации, являются фактическими словарными словами и семантически полными, в отличие от слов, возвращаемых стеммером.
Лемматизация
Хотя мы не могли выполнить стемминг с помощью spaCy, мы можем выполнить лемматизацию с помощью spaCy.
Для этого нам нужно использовать lemma_ атрибут на Spacy документа. Предположим, у нас есть следующее предложение:
Мы можем найти корни всех слов с помощью лемматизации spaCy следующим образом:
Результат выполнения сценария выше выглядит следующим образом:
Вы можете видеть, что в отличие от стемминга, в котором корень, который мы получили, был «вычислить», корни, которые мы здесь получили, являются настоящими словами в словаре.
Лемматизация преобразует слова во второй или третьей формах в их варианты первой формы. Взгляните на следующий пример:
Выход:
Из выходных данных ясно видно, что слова во второй и третьей формах, такие как «написано», «выпущено» и т. Д., Были преобразованы в первую форму, то есть «запись» и «выпуск».
Заключение
Токенизация, стемминг и лемматизация — одни из самых фундаментальных задач обработки естественного языка. В этой статье мы увидели, как мы можем выполнить токенизацию и лемматизацию с помощью библиотеки spaCy. Мы также увидели, как NLTK можно использовать для стемминга. В следующей статье мы начнем обсуждение словарного запаса и сопоставления фраз в Python.
Обработка языков с помощью Python
Как вы знаете, обработка естественного языка играет большую роль в современных технологиях. Язык может быть в виде списка отдельных слов, предложений, нескольких абзацев со специальными символами. Из-за сложности естественного языка нам необходимо выполнить некоторые задачи языковой обработки, прежде чем они будут применены к приложениям. Здесь я обсуждаю следующие темы, касающиеся языковой обработки.
- Токенизация текста
- Остановить удаление слов
- Стемминг
- Лемматизация
- POS-теги
1. Токенизация текста
Токенизация — это задача разбиения текста на предложения или слова. Слово — это токен в предложении, а предложение — это токен абзаца. Поэтому я разделил его на две части: Токенизация слов и Токенизация предложений.
Во-первых, давайте посмотрим на токенизацию предложений в Python. Для этого я импортирую функцию токенизации предложения . Затем вызываю ее с целевым абзацем в качестве аргумента.

В отличие от токенизации предложений, токенизация слов может быть выполнена несколькими способами.
Использование word_tokenize (): часто используемая функция word_tokenize (). Это встроенная функция в NLTK.
Использование токенизаторов регулярных выражений. Другой метод — токенизация слов с использованием регулярных выражений. В качестве разделителя используется пробел. Я предполагаю, что вы можете иметь базовое представление о регулярных выражениях. Если нет, пожалуйста, следуйте это.
Еще один шаблон, который используется для выявления пробелов для разметки предложений.
Использование WordPunctTokenizer (): с помощью этого метода разделите слова по пунктуации.

Использование TweetTokenizer (): этот метод используется для токенизации данных Twitter.
2. Остановить удаление слов
Настоящий текстовый текст содержит много слов. Но все слова не несут в себе важного значения. Слова, не передающие никакого смысла, называются стоп-словами. Нам нужно удалить эти слова из нашего корпуса. Тогда мы сможем сосредоточиться только на важных ключевых словах. NLTK поставляется с корпусом игнорируемых слов, который содержит списки слов для многих языков. В противном случае вы можете создать свой собственный файл стоп-слов.

3. Стебель
Основание — это процесс преобразования производных слов в их корневые слова. Например, такие слова, как «писать», «написал», «написано» сокращаются до базовой формы «писать». Я использую свой ранее обработанный текстовый список в качестве корпуса и здесь. Вы можете видеть, что некоторые слова связаны с их корневым словом, как показано на рисунке ниже.

4. Лемматизация
Лемматизация — это процесс извлечения корня слова с учетом словарного запаса. Фактически, основание также дает корневое слово, но не учитывает контекст слова. В этом разница между стеммингом и лемматизацией. Например, «хороший», «лучший», «лучший» превращаются в добро.
Существуют разные пакеты Python для лемматизации. Я использую Wordnet Lemmatizer с NLTK. WordNet — это лексическая база данных английского языка, созданная Принстонским университетом. Он состоит из существительных, глаголов, прилагательных и многого другого с семантическими отношениями. Вы можете узнать больше о WordNet на следующем сайте.
Поскольку я лемматизирую список предложений, мне нужно выполнить токенизацию слов, прежде чем продолжить.

Вы можете видеть, что слова «рыбалка», «рыбы» преобразованы в «рыба», а слово «листья» преобразовано в «лист».
5. POS-теги
P art O f S peech Tagging — это процесс присвоения части речевого тега каждому слову в предложении. Это важная задача при обработке текста, поскольку она дает важную информацию о слове. Это начальная часть синтаксического анализа. В основном, он используется для устранения неоднозначности в словах, распознавания именованных сущностей, анализа настроений, ответов на вопросы и т. Д. Вот список тегов и их значения.
♦ CC координирующее соединение
♦ CD кардинальная цифра
♦ DT определитель
♦ EX экзистенциальный там (например: «есть»… думайте об этом как «там существует»)
♦ FW иностранное слово
♦ IN союз предлога / подчинения
♦ JJ прилагательное «большой»
♦ JJR прилагательное, сравнительное «больше»
♦ JJS прилагательное в превосходной степени «самый большой»
♦ LS маркер списка 1)
♦ MD модальный может, будет
♦ NN существительное, единственное число «стол»
♦ NNS существительное множественное число «столы»
Кроме того, обратитесь к следующему руководству
Я использую модуль тегов POS NLTK, чтобы назначать теги POS для моего корпуса. Поскольку мой корпус — это абзац, я выполняю токенизацию предложения, а затем выполняю токенизацию слова для создания тегов POS.

Вывод показывает назначенные теги POS для каждого слова.
Спасибо за прочтение. Я надеюсь, что это было полезно. Если у вас возникнут вопросы, не стесняйтесь оставлять ответ.