Рассмотрим инструменты и возможности обработки естественного языка библиотекой TextBlob в языке программирования Python.
Введение
NLP (Natural Language Processing) — это подмножество ИИ (искусственный интеллект), которое позволяет компьютерам понимать, интерпретировать и манипулировать человеческими естественными языками.
История НЛП началась в начале 1950-х годов (хотя работы можно найти и в более ранние периоды), когда Алан Тьюринг, человек, оказавший существенное влияние на развитие информатики, опубликовал статью под названием «Компьютерная техника и интеллект», в которой предложил критерий интеллекта, который теперь известен как тест Тьюринга.
Библиотеки NLP в Python
NLP содержит много интересных библиотек, самой базовой из которых является NLTK (Natural Language Toolkit), эта библиотека довольно универсальна, но также довольно сложна в использовании. В большинстве случаев она довольно медленная и не соответствует требованиям быстро развивающегося производства. Другие известные библиотеки:
- TextBlob
- CoreNLP
- Polyglot
- SpaCy
- Gensim
Из всех этих библиотек, которые я упомянул, TextBlob — мой личный фаворит. Он в основном предоставляет новичкам простой интерфейс, который поможет им освоить большинство основных задач NLP, таких как анализ настроений, POS-tagging или извлечение именных фраз.
Давайте рассмотрим некоторые из них прямо сейчас.
Исправление ошибок в орфографии
Часто люди склонны делать много опечаток. В этом случае библиотека TextBlob может очень пригодиться давайте посмотрим на программу чтобы увидеть как она работает:
from textblob import TextBlob text = "hi my namee is joohn i lik to reead bookz" out = TextBlob(text).correct() print(out)
Вывод программы
hi my name is john i like to read book
В приведенной выше программе я сначала импортировал библиотеку, а затем написал предложение, содержащее много неправильных слов, после чего я просто вызвал правильную функцию библиотеки и, наконец, получил вывод.
Извлечение существительного из предложений
Всякий раз когда мы хотим сделать некоторые манипуляции с естественным языком с помощью компьютера, мы обычно должны извлечь много вещей из предложения, например, одна важная вещь — это извлечение существительных, и TextBlob идеально подходит для этой задачи тоже:
from textblob import TextBlob nouns = TextBlob( "The United Arab Emirates' Hope spacecraft entered Mars orbit last week and already sent a simply dazzling image of the red planet." ) for noun in nouns.noun_phrases: print(noun)
Вывод программы
arab emirates hope mars red planet
Сентиментальный анализ
Сентиментальный анализ — это процесс вычислительной идентификации и категоризации мнений, выраженных в тексте, особенно для того, чтобы определить, является ли отношение автора к определенной теме, продукту и так далее положительным, отрицательным или нейтральным. Это используется всеми компаниями по всему миру, чтобы получить отзыв о своей продукции.
from textblob import TextBlob from textblob.sentiments import NaiveBayesAnalyzer text_one = TextBlob( "The weather is sunny and warm ", analyzer=NaiveBayesAnalyzer(), ) text_two = TextBlob( "The weather is rainy and cold ", analyzer=NaiveBayesAnalyzer(), ) print(text_one.sentiment) print(text_two.sentiment)
Вывод программы
Sentiment(classification='pos', p_pos=0.7961782042319571, p_neg=0.20382179576804146) Sentiment(classification='neg', p_pos=0.4041799799704329, p_neg=0.5958200200295667)
Поиск синонимов слов
Всякий раз, когда я хочу узнать антоним слова, я либо ищу это слово в словаре (старая школа), либо ищу его в Интернете, но задумывались ли вы когда-нибудь, как онлайн-поиск может ответить на ваши запросы, да, они также используют для этого NLP, и TextBlob снова может помочь нам сделать то же самое:
from textblob import Word text = Word("sweet") antonyms = set() for synset in text.synsets: for lemma in synset.lemmas(): if lemma.antonyms(): antonyms.add(lemma.antonyms()[0].name()) print(antonyms)
Вывод программы
{'dry', 'sour', 'salty'}
Поиск синонимов слова
Точно так же, как я могу найти антоним, я также могу найти синоним, но позвольте мне рассказать вам еще об одном интересном аспекте этой библиотеки, который заключается в том, что она также может определить слово для вас, просто набрав одно дополнительное утверждение.
from textblob import Word as W keyword = W("python") syn = set() for s in keyword.synsets: for l in s.lemmas(): syn.add(l.name()) print(syn)
Вывод программы
{'sire', 'mother', 'overprotect', 'fuss', 'generate', 'female_parent', 'engender', 'father', 'get', 'beget', 'bring_forth'}
Определение языка и перевод текста
Это, безусловно, лучшая часть этой библиотеки, и я сделал свой собственный переводчик языка и детектор приложений с помощью библиотеки TextBlob.
from textblob import TextBlob text = TextBlob("Меня зовут Егор") print(text.detect_language()) print(text.translate(to="en")) print(text.translate(to="fr"))
Вывод программы
ru My name is Egor Je m'appelle Egor
Я надеюсь, что теперь у вас есть представление о том, насколько мощны библиотеки NLP. Надеюсь, сегодня вы узнали что-то новое! Удачной разработки.
Natural Language Processing (NLP) is not the same as Neuro-linguistic programming (NLP). If you fix the article its was great. Thank you.
Dmitry, thank you, I fixed it.