Что такое фрагменты при обработке естественного языка?

Исходный узел: 1878431

Уважаемые читатели,

В этом блоге я буду обсуждать фрагментацию как теоретически, так и практически в Python.

Итак, приступим…

ПРИМЕЧАНИЕ: Для реализации лучше использовать Python IDLE, поскольку на выходе получается рисунок дерева, который появляется в отдельном окне.

Расписание Мероприятия

  • Что такое чанкинг?
  • Где используется чанкинг?
  • Типы чанкинга
  • Реализация фрагментации в Python
  • Итоги

Что такое чанкинг?

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

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

Например, фрагментация может быть выполнена для идентификации и, таким образом, группировки словосочетаний с существительными или отдельных существительных, прилагательных или словосочетаний с прилагательными и т. д. Рассмотрим предложение ниже:

«На завтрак у меня были гамбургеры и выпечка».

В этом случае, если мы хотим сгруппировать или разделить на части фразы с существительными, мы получим «гамбургеры», «выпечка» и «ланч», которые являются существительными или группами существительных в предложении.

Где используется чанкинг?

Зачем нам что-то изучать, не зная, где это широко используется?! Просмотр приложений, обсуждаемых в этом разделе блога, поможет вам сохранить любопытство до конца!

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

Когда у нас есть множество описаний или модификаций вокруг определенного слова или интересующей нас фразы, мы используем фрагментацию, чтобы получить только нужную фразу, игнорируя все остальное вокруг нее. Следовательно, разбиение на фрагменты позволяет сгруппировать необходимые фразы и исключить все модификаторы вокруг них, которые не нужны для нашего анализа. Подводя итог, можно сказать, что фрагментация помогает нам извлекать только важные слова из длинных описаний. Таким образом, фрагментация — это шаг в извлечении информации.

Интересно, что этот процесс фрагментации в НЛП распространяется на различные другие приложения; например, сгруппировать фрукты определенной категории, скажем, фрукты, богатые белками, как группу, фрукты, богатые витаминами, как другую группу, и так далее. Кроме того, фрагментирование также можно использовать для группировки похожих автомобилей, например, автомобили с автоматической коробкой передач в одну группу, а автомобили с механической коробкой передач в другую группу и так далее.

Типы чанкинга

В целом существует два типа фрагментации:

  • Разделение
  • Разделение

Разделение:

Здесь мы не погружаемся глубоко; вместо этого мы довольны просто обзором информации. Это просто помогает нам получить краткое представление о данных.

Разделение:

В отличие от предыдущего типа разбивки, разбивка по частям помогает нам получить подробную информацию.

Так что, если вы просто хотите получить представление, подумайте о «разбиении на части», в противном случае предпочтите «разбиение на части».

Реализация фрагментации в Python

Представьте ситуацию, в которой вы хотите извлечь все глаголы из заданного текста для анализа. Таким образом, в этом случае мы должны рассмотреть фрагментацию глагольных фраз. Это связано с тем, что наша цель — извлечь все глагольные фразы из заданного фрагмента текста. Разделение выполняется с помощью регулярных выражений.

Не волнуйтесь, если вы впервые сталкиваетесь с термином «регулярные выражения». Приведенная ниже таблица вам в помощь:

Символ

Смысл

Пример

*

Предыдущий символ может встречаться ноль или более раз, что означает, что предшествующий символ может быть, а может и не быть.

ab* соответствует всем входным данным, начинающимся с ab, за которым следует ноль или более символов b. Шаблон будет соответствовать ab, abb, abbb и так далее.

+

Предыдущий символ должен встречаться хотя бы один раз.

a+ соответствует a,aa,aaa и так далее.

?

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

аб? соответствует ab,abb, но не abbb и так далее.

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

В любом случае, для этой реализации мы будем использовать только *. Не стесняйтесь взглянуть на приведенную выше таблицу, чтобы ознакомиться с символом!

Мы будем выполнять фрагментацию с помощью nltk, самой популярной библиотеки НЛП. Итак, давайте сначала импортируем его.

импортировать нлтк

Давайте рассмотрим приведенный ниже образец текста, который я создал самостоятельно. Не стесняйтесь заменить приведенный ниже текст любым образцом текста, который вам нравится, чтобы реализовать фрагментацию!

sample_text=""" Рама убил Равану, чтобы спасти Ситу от Ланки. Легенда о Рамаяне - самый популярный индийский эпос. Здесь в Индии уже снято множество фильмов и сериалов на нескольких языках по мотивам Рамаяны. """

Очевидно, что данные должны быть размечены на предложения, а затем на слова, прежде чем мы продолжим. Токенизация — это не что иное, как процесс разбиения данного фрагмента текста на более мелкие единицы, такие как предложения в случае токенизации предложений и слова в случае токенизации слов.

После токенизации для каждого слова выполняется маркировка POS (часть речи), в которой будет идентифицирована часть речи каждого слова. Теперь нас интересует только часть речи глагола, и мы хотим извлечь то же самое.

Следовательно, укажите интересующую нас часть речи, используя требуемое регулярное выражение, следующим образом:

ВБ: {}

tokenized=nltk.sent_tokenize(sample_text) for i in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

Регулярное выражение (RE) заключено в угловые скобки(), которые, в свою очередь, заключены в фигурные скобки ({ и }).

ПРИМЕЧАНИЕ: Укажите RE в соответствии с требуемым POS

VB означает глагол POS. Точка после VB означает соответствие любому символу, следующему за VB. Знак вопроса после точки указывает, что любой символ после B должен встречаться только один раз или не должен встречаться вообще. Однако из таблицы, которую мы видели ранее, этот символ является необязательным. Мы создали регулярное выражение таким образом, потому что в NLTK глагольные фразы включают следующие теги POS:

POS

Смысл

VB

Глагол в своей основной форме

ВБД

глагол в прошедшем времени

ВБГ

глагол в настоящем времени

ВБН

глагол в форме причастия прошедшего времени

ВБП

Глагол в настоящем времени, но не в третьем лице единственного числа

ВБЗ

Глагол в настоящем времени и в третьем лице единственного числа

Таким образом, глагольные словосочетания могут принадлежать любому из перечисленных выше поз. Вот почему регулярное выражение оформлено как VB.? который включает в себя все вышеперечисленные категории. Пакет RegexpParser используется для проверки того, удовлетворяет ли POS нашему требуемому шаблону, который мы упоминали ранее с помощью RE.

Весь код можно увидеть следующим образом:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Рама убил Равану, чтобы спасти Ситу с Ланки. Легенда о Рамаяне - самый популярный индийский эпос. Здесь уже снято множество фильмов и сериалов на нескольких языках в Индии на основе «Рамаяны». =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

Итоги

результат разделения
результат разделения

Наконец, мы получаем древовидную форму POS слов вместе со словами, чей POS совпадает с данным RE. Снимок вывода, полученного для переданного нами образца текста, можно увидеть на рисунках выше.

Обратите внимание, что слова, которые удовлетворяют нашему RE только для глагольных фраз, четко выделены в выходных данных. Следовательно, фрагментация глагольных фраз была выполнена успешно.

Надеюсь, вы нашли мою статью полезной.

Спасибо!

Рекомендации

1. Реализация фрагментации в Python

2. Теория разделения

3. Полный список POS, доступных в НЛП

Обо мне

Я Нитьяшри Ви, студентка последнего года обучения в области информатики и инженерии BTech. Мне нравится изучать такие крутые технологии и применять их на практике, особенно наблюдая, как они помогают нам решать сложные проблемы общества. Мои интересы включают искусственный интеллект, науку о данных и обработку естественного языка.

Вот мой профиль LinkedIn: Мой LinkedIn

Вы можете прочитать другие мои статьи об Analytics Vidhya от здесь.

Материалы, показанные в этой статье, не принадлежат Analytics Vidhya и используются по усмотрению Автора.

Источник: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

Отметка времени:

Больше от Аналитика Видхья