|
|
1 year ago | |
|---|---|---|
| .. | ||
| README.md | 1 year ago | |
| assignment.md | 1 year ago | |
README.md
Общие задачи и методы обработки естественного языка
Для большинства задач обработки естественного языка текст, который нужно обработать, необходимо разбить на части, проанализировать, а результаты сохранить или сопоставить с правилами и наборами данных. Эти задачи позволяют программисту выявить смысл, намерение или просто частотность терминов и слов в тексте.
Викторина перед лекцией
Давайте изучим общие методы обработки текста. В сочетании с машинным обучением эти методы помогают эффективно анализировать большие объемы текста. Однако, прежде чем применять машинное обучение к этим задачам, давайте разберемся с проблемами, с которыми сталкивается специалист по обработке естественного языка.
Общие задачи обработки естественного языка
Существует множество способов анализа текста, с которым вы работаете. Есть задачи, которые вы можете выполнять, и благодаря этим задачам вы сможете понять текст и сделать выводы. Обычно эти задачи выполняются последовательно.
Токенизация
Вероятно, первое, что делают большинство алгоритмов обработки естественного языка, — это разбивают текст на токены или слова. Хотя это звучит просто, необходимость учитывать пунктуацию и разделители слов и предложений в разных языках может усложнить задачу. Возможно, вам придется использовать различные методы для определения границ.
Токенизация предложения из Гордости и предубеждения. Инфографика от Джен Лупер
Встраивания (Embeddings)
Встраивания слов — это способ численного представления текстовых данных. Встраивания выполняются таким образом, чтобы слова с похожим значением или слова, которые часто используются вместе, группировались.
"Я глубоко уважаю ваши нервы, они мои старые друзья." - Встраивания слов для предложения из Гордости и предубеждения. Инфографика от Джен Лупер
✅ Попробуйте этот интересный инструмент для экспериментов с встраиваниями слов. Нажатие на одно слово показывает группы похожих слов: 'toy' группируется с 'disney', 'lego', 'playstation' и 'console'.
Разбор и определение частей речи
Каждое токенизированное слово может быть помечено как часть речи — существительное, глагол или прилагательное. Например, предложение the quick red fox jumped over the lazy brown dog может быть помечено как fox = существительное, jumped = глагол.
Разбор предложения из Гордости и предубеждения. Инфографика от Джен Лупер
Разбор — это определение, какие слова связаны друг с другом в предложении. Например, the quick red fox jumped — это последовательность прилагательное-существительное-глагол, которая отделена от последовательности lazy brown dog.
Частотность слов и фраз
Полезной процедурой при анализе большого объема текста является создание словаря всех интересующих слов или фраз и подсчет их частоты. Например, в фразе the quick red fox jumped over the lazy brown dog слово "the" встречается 2 раза.
Рассмотрим пример текста, где мы подсчитываем частоту слов. В стихотворении Редьярда Киплинга "The Winners" есть следующий отрывок:
What the moral? Who rides may read.
When the night is thick and the tracks are blind
A friend at a pinch is a friend, indeed,
But a fool to wait for the laggard behind.
Down to Gehenna or up to the Throne,
He travels the fastest who travels alone.
Так как частотность фраз может быть чувствительной или нечувствительной к регистру, фраза a friend встречается 2 раза, the — 6 раз, а travels — 2 раза.
N-граммы
Текст можно разбить на последовательности слов заданной длины: одно слово (униграммы), два слова (биграммы), три слова (триграммы) или любое количество слов (n-граммы).
Например, для текста the quick red fox jumped over the lazy brown dog с n-граммой длиной 2 получаются следующие n-граммы:
- the quick
- quick red
- red fox
- fox jumped
- jumped over
- over the
- the lazy
- lazy brown
- brown dog
Это можно представить как скользящее окно по предложению. Вот пример для n-грамм из 3 слов, где n-грамма выделена жирным:
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
- the quick red fox jumped over the lazy brown dog
Значение n-граммы = 3: Инфографика от Джен Лупер
Извлечение именных фраз
В большинстве предложений есть существительное, которое является субъектом или объектом предложения. В английском языке его часто можно определить по словам 'a', 'an' или 'the', которые ему предшествуют. Определение субъекта или объекта предложения путем "извлечения именной фразы" — это распространенная задача в обработке естественного языка при попытке понять смысл предложения.
✅ В предложении "I cannot fix on the hour, or the spot, or the look or the words, which laid the foundation. It is too long ago. I was in the middle before I knew that I had begun." можете ли вы определить именные фразы?
В предложении the quick red fox jumped over the lazy brown dog есть 2 именные фразы: quick red fox и lazy brown dog.
Анализ тональности
Предложение или текст можно проанализировать на тональность, то есть насколько он положительный или отрицательный. Тональность измеряется в терминах полярности и объективности/субъективности. Полярность измеряется от -1.0 до 1.0 (от отрицательной до положительной), а объективность — от 0.0 до 1.0 (от наиболее объективной до наиболее субъективной).
✅ Позже вы узнаете, что существуют разные способы определения тональности с использованием машинного обучения, но один из них — это наличие списка слов и фраз, которые классифицируются как положительные или отрицательные экспертом, и применение этой модели к тексту для расчета полярности. Можете ли вы понять, как это может работать в одних случаях и не работать в других?
Словоизменение
Словоизменение позволяет взять слово и получить его единственное или множественное число.
Лемматизация
Лемма — это корень или основное слово для набора слов. Например, flew, flies, flying имеют лемму глагола fly.
Также существуют полезные базы данных для исследователей в области обработки естественного языка, в частности:
WordNet
WordNet — это база данных слов, синонимов, антонимов и многих других деталей для каждого слова на разных языках. Она невероятно полезна при создании переводов, проверок орфографии или любых языковых инструментов.
Библиотеки для обработки естественного языка
К счастью, вам не нужно разрабатывать все эти методы самостоятельно, так как существуют отличные библиотеки на Python, которые делают их гораздо более доступными для разработчиков, не специализирующихся на обработке естественного языка или машинном обучении. В следующих уроках будет больше примеров, но здесь вы узнаете несколько полезных примеров, которые помогут вам с выполнением следующей задачи.
Упражнение — использование библиотеки TextBlob
Давайте использовать библиотеку TextBlob, так как она содержит полезные API для решения подобных задач. TextBlob "основан на мощных библиотеках NLTK и pattern и хорошо с ними взаимодействует." В его API встроено значительное количество методов машинного обучения.
Примечание: Рекомендуется ознакомиться с руководством по быстрому старту для TextBlob, особенно опытным разработчикам на Python.
При попытке определить именные фразы TextBlob предлагает несколько вариантов извлечения.
-
Ознакомьтесь с
ConllExtractor.from textblob import TextBlob from textblob.np_extractors import ConllExtractor # import and create a Conll extractor to use later extractor = ConllExtractor() # later when you need a noun phrase extractor: user_input = input("> ") user_input_blob = TextBlob(user_input, np_extractor=extractor) # note non-default extractor specified np = user_input_blob.noun_phrasesЧто здесь происходит? ConllExtractor — это "Извлекатель именных фраз, использующий разбор на основе обучающего корпуса ConLL-2000." ConLL-2000 относится к Конференции по обучению обработке естественного языка 2000 года. Каждый год конференция проводила семинар для решения сложной задачи NLP, и в 2000 году это была задача выделения именных фраз. Модель была обучена на данных Wall Street Journal, с "разделами 15-18 в качестве обучающих данных (211727 токенов) и разделом 20 в качестве тестовых данных (47377 токенов)". Вы можете ознакомиться с процедурами здесь и результатами здесь.
Задача — улучшение вашего бота с помощью NLP
В предыдущем уроке вы создали очень простого бота для вопросов и ответов. Теперь вы сделаете Марвина немного более чутким, анализируя ваш ввод на тональность и выводя ответ, соответствующий тональности. Вам также нужно будет определить noun_phrase и задать вопрос на эту тему.
Ваши шаги при создании более "человечного" бота:
- Выведите инструкции, объясняющие пользователю, как взаимодействовать с ботом.
- Начните цикл:
- Примите ввод пользователя.
- Если пользователь хочет выйти, завершите работу.
- Обработайте ввод пользователя и определите соответствующий ответ на основе тональности.
- Если в тексте обнаружена именная фраза, преобразуйте ее во множественное число и задайте дополнительный вопрос на эту тему.
- Выведите ответ.
- Вернитесь к шагу 2.
Вот фрагмент кода для определения тональности с использованием TextBlob. Обратите внимание, что здесь всего четыре градации ответов на основе тональности (вы можете добавить больше, если хотите):
if user_input_blob.polarity <= -0.5:
response = "Oh dear, that sounds bad. "
elif user_input_blob.polarity <= 0:
response = "Hmm, that's not great. "
elif user_input_blob.polarity <= 0.5:
response = "Well, that sounds positive. "
elif user_input_blob.polarity <= 1:
response = "Wow, that sounds great. "
Пример вывода для ориентира (ввод пользователя начинается с >):
Hello, I am Marvin, the friendly robot.
You can end this conversation at any time by typing 'bye'
After typing each answer, press 'enter'
How are you today?
> I am ok
Well, that sounds positive. Can you tell me more?
> I went for a walk and saw a lovely cat
Well, that sounds positive. Can you tell me more about lovely cats?
> cats are the best. But I also have a cool dog
Wow, that sounds great. Can you tell me more about cool dogs?
> I have an old hounddog but he is sick
Hmm, that's not great. Can you tell me more about old hounddogs?
> bye
It was nice talking to you, goodbye!
Возможное решение задачи можно найти здесь.
✅ Проверка знаний
- Как вы думаете, могут ли чуткие ответы "обмануть" кого-то, заставив поверить, что бот действительно их понимает?
- Делает ли определение именной фразы бота более "убедительным"?
- Почему извлечение "именной фразы" из предложения может быть полезным?
Реализуйте бота из проверки знаний и протестируйте его на друге. Может ли он их обмануть? Можете ли вы сделать бота более "убедительным"?
🚀Задача
Возьмите задачу из проверки знаний и попробуйте ее реализовать. Протестируйте бота на друге. Может ли он их обмануть? Можете ли вы сделать бота более "убедительным"?
Викторина после лекции
Обзор и самостоятельное изучение
В следующих уроках вы узнаете больше о анализе тональности. Изучите эту интересную технику в таких статьях, как KDNuggets.
Задание
Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.



