Вступление
Постоянный рост объема данных в Интернете создает потребность в инструментах для обработки текстовой информации.
Более того, очень важно, чтобы этот инструмент анализа текста мог реализовывать решения как для низкоуровневых, так и для высокоуровневых задач НЛП, таких как подсчет частот слов, вычисление анализа тональности текстов или обнаружение закономерностей во взаимосвязях между словами.
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 .