Простое НЛП в Python с TextBlob: обнаружение N-граммов

Введение Постоянный рост объема данных в Интернете создает потребность в инструментах для обработки текстовой информации. Более того, очень важно, чтобы этот инструмент анализа текста мог реализовывать решения как для низкоуровневых, так и для высокоуровневых задач НЛП, таких как подсчет частот слов, вычисление анализа тональности текстов или обнаружение закономерностей во взаимосвязях между словами. TextBlob [https://textblob.readthedocs.io/en/dev/] - отличная легкая библиотека для широкого спектра задач НЛП.

Вступление

Постоянный рост объема данных в Интернете создает потребность в инструментах для обработки текстовой информации.

Более того, очень важно, чтобы этот инструмент анализа текста мог реализовывать решения как для низкоуровневых, так и для высокоуровневых задач НЛП, таких как подсчет частот слов, вычисление анализа тональности текстов или обнаружение закономерностей во взаимосвязях между словами.

TextBlob - отличная легкая библиотека для широкого спектра задач НЛП.

В этом руководстве мы расскажем, как выполнять обнаружение N-грамм в Python с помощью TextBlob.

Что такое N-граммы?

N-граммы представляют собой непрерывную последовательность из N элементов из заданного набора текстов. В широком смысле такие элементы не обязательно обозначают цепочки слов, они также могут быть фонемами, слогами или буквами, в зависимости от того, чего вы хотите достичь.

Однако в Обработке естественного языка N-граммы чаще всего называются строками слов, где n означает количество слов, которые вы ищете.

Обычно выделяют следующие виды N-граммов:

  • Униграмма - N-грамма с одной строкой внутри (например, это может быть уникальное слово - YouTube или TikTok из заданного предложения, например, YouTube запускает новый формат короткого видео, который очень похож на TikTok ).

  • 2 грамма или биграммы - обычно комбинация двух строк или слов, которые появляются в документе: короткое видео или видеоформат , скорее всего, будет результатом поиска биграмм в определенном корпусе текстов (а не форматировать видео , короткое видео). форма, поскольку порядок слов остается прежним).

  • 3-грамма или триграмма - N-грамм, содержащий до трех элементов, которые обрабатываются вместе (например, краткий видеоформат или новое короткое видео ) и т. Д.

N-граммы нашли свое основное применение в области вероятностных языковых моделей. Поскольку они оценивают вероятность следующего элемента в последовательности слов.

Этот подход к языковому моделированию предполагает тесную взаимосвязь между положением каждого элемента в строке, вычисляя вхождение следующего слова по отношению к предыдущему. В частности, модель N-грамм определяет вероятность следующим образом - N-1 .

Например, модель триграммы (с N = 3) будет предсказывать следующее слово в строке на основе двух предыдущих слов как N-1 = 2 .

Другими случаями внедрения моделей N-граммов в промышленность может быть обнаружение плагиата, когда N-граммы, полученные из двух разных текстов, сравниваются друг с другом для определения степени сходства анализируемых документов.

Обнаружение N-грамм в Python с использованием TextBlob

Анализ приговора

Чтобы начать обнаружение N-граммов в Python, вам сначала нужно установить пакет TexBlob. Обратите внимание, что эта библиотека применима как для Python 2, так и для Python 3.

Мы также захотим загрузить требуемый текстовый корпус, с которым он будет работать:

 $ pip install -U textblob 
 $ python -m textblob.download_corpora 

После настройки среды вы готовы загрузить пакет и вычислить N-граммы в образце предложения. Вначале мы рассмотрим N-граммы в цитате М.Мулленвега: « Технологии лучше всего, когда они объединяют людей .

Давайте начнем:

 from textblob import TextBlob 
 
 # Sample sentence for N-gram detection 
 sentence = "Technology is best when it brings people together" 

Мы создали sentence содержащую предложение, которое мы хотим проанализировать. Затем мы передали эту строку TextBlob , внедрив ее в TextBlob которым мы будем выполнять операции:

 ngram_object = TextBlob(sentence) 

Теперь давайте запустим обнаружение N-грамма. Для начала сделаем детекцию по 2 грамма. Это указано в списке аргументов вызова функции ngrams()

 ngrams = ngram_object.ngrams(n=2) # Computing Bigrams 
 print(ngrams) 

Функция ngrams() возвращает список кортежей из n последовательных слов. В нашем предложении модель биграмм даст нам следующий набор строк:

 [WordList(['Technology', 'is']), 
 WordList(['is', 'best']), 
 WordList(['best', 'when']), 
 WordList(['when', 'it']), 
 WordList(['it', 'brings']), 
 WordList(['brings', 'people']), 
 WordList(['people', 'together'])] 

Анализ документов

Несмотря на простую природу этой библиотеки Python, TextBlob также предоставляет ряд расширенных функций для анализа. Чаще всего мы не работаем с отдельными предложениями для обнаружения N-граммов. Гораздо чаще работают с документами, статьями или более крупными корпусами.

В нашем следующем примере мы будем использовать статью с новостного портала CNBC о Билле Гейтсе.

Давайте создадим текстовый документ и назовем его как-нибудь вроде Input.txt для следующего анализа:

 import sys 
 
 # Opening and reading the `Input.txt` file 
 corpus = open("Input.txt").read() 

Затем, как обычно, мы TextBlob экземпляр TextBlob, передав corpus конструктору, и запустим ngrams() :

 ngram_object = TextBlob(corpus) 
 trigrams = ngram_object.ngrams(n=3) # Computing Trigrams 
 print(trigrams) 

Это распечатает триграммы предоставленного нами контента. Однако обратите внимание, что вывод может отличаться в зависимости от подхода, который вы применяете для обработки знаков препинания:

 [WordList(['Bill', 'Gates', 'says']), 
 WordList(['Gates', 'says', 'that']), 
 WordList(['says', 'that', 'antitrust']), 
 WordList(['that', 'antitrust', 'regulators']), 
 WordList(['antitrust', 'regulators', 'should']) 
 <...>] 

Для сравнения, анализ Bigram для данной статьи предоставит нам другой список:

 ngram_object = TextBlob(corpus) 
 Bigram = ngram_object.ngrams(n=) # Computing Bigrams 
 print(Bigram) 

Фрагмент вывода:

 [WordList(['Bill', 'Gates']), 
 WordList(['Gates', 'says']), 
 WordList(['says', 'that']), 
 WordList(['that', 'antitrust']), 
 WordList(['antitrust', 'regulators']) 
 <...>] 

Заключение

Обнаружение N-граммов - простая и распространенная задача во многих проектах НЛП. В этой статье мы рассмотрели, как выполнять обнаружение N-грамм в Python с помощью TextBlob .

comments powered by Disqus