Решение задач NLP с использованием TextBlob

Решение задач NLP с использованием TextBlob

Рассмотрим инструменты и возможности обработки естественного языка библиотекой 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. Надеюсь, сегодня вы узнали что-то новое! Удачной разработки.

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий

  1. Dmitry

    Natural Language Processing (NLP) is not the same as Neuro-linguistic programming (NLP). If you fix the article its was great. Thank you.

    Ответить
    1. Егор Егоров автор

      Dmitry, thank you, I fixed it.

      Ответить