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

Рассмотрим инструменты и возможности обработки естественного языка библиотекой TextBlob в языке программирования Python.

Что такое НЛП?

NLP (Natural Language Processing) – это подмножество ИИ (искусственный интеллект), которое позволяет компьютерам понимать, интерпретировать и манипулировать человеческими естественными языками.

История НЛП началась в начале 1950-х годов (хотя работы можно найти и в более ранние периоды), когда Алан Тьюринг, человек, оказавший существенное влияние на развитие информатики, опубликовал статью под названием “Компьютерная техника и интеллект”, в которой предложил критерий интеллекта, который теперь известен как тест Тьюринга.

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
close

Изучаешь Python?

Оформи подписку и получи моментальный доступ к новым публикациям

Поделиться записью в социальных сетях


Добавить комментарий

Ваш адрес email не будет опубликован

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