Учебники

4) POS-теги и чанкинг

POS-теги

Части речевого тега отвечает за чтение текста на каком-либо языке и присваивает некоторый определенный токен (части речи) каждому слову.

например

Вход: все, что позволяет нам.

Вывод: [(‘Все’, NN), (‘to’, TO), (‘allow’, VB), (‘us’, PRP)]

Включенные шаги:

  • Токенизировать текст (word_tokenize)
  • применить pos_tag к шагу выше, который является nltk.pos_tag (tokenize_text)

Некоторые примеры приведены ниже:

Сокращение Смысл
CC координационное соединение
компакт диск кардинальная цифра
DT детерминанта
EX экзистенциальный там
FW иностранное слово
В предлог / подчиняющее соединение
JJ прилагательное (большое)
JJR прилагательное, сравнительное (больше)
JJS прилагательное, превосходный (самый большой)
LS список рынка
Мэриленд модальный (может, будет)
Н.Н. существительное в единственном числе (кошка, дерево)
NNS существительное во множественном числе (парт)
ННП имя собственное, исключительное (sarah)
NNPS имя собственное, множественное число (индусы или американцы)
Тихоокеанское летнее время предопределитель (все, оба, половина)
POS притяжательное окончание (родительский)
PRP личное местоимение (ее, его самого, его самого)
PRP $ притяжательное местоимение (она, его, мое, мое, наше)
RB наречие (иногда, быстро)
RBR наречие, сравнительное (больше)
RBS наречие, превосходный (самый большой)
RP частица (о)
К бесконечный маркер (до)
UH междометие (до свидания)
VB глагол (спросить)
VBG глагол герунд (судя)
ВБД глагол прошедшего времени (умолял)
VBN глагол прошедшего причастия (воссоединенный)
ВБП глагол, настоящее время не 3-го лица единственного числа (перенос)
VBZ глагол, настоящее время с 3-го лица единственного числа (основы)
WDT wh-определитель (что, что)
WP белое местоимение (кто)
WRB белое наречие (как)

POS-тег используется для назначения грамматической информации о каждом слове предложения. Установка, импорт и загрузка всех пакетов NLTK завершены.

лязг

Разделение на части используется, чтобы добавить больше структуры к предложению, следуя меткам речи (POS). Это также известно как мелкий разбор. Получившаяся группа слов называется « чанки ». При мелком разборе существует максимум один уровень между корнями и листьями, в то время как глубокий разбор включает более одного уровня. Неглубокий разбор также называется легким разбором или разбиением на части.

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

Правила для чанкинга:

Нет заранее определенных правил, но вы можете комбинировать их в соответствии с потребностями и требованиями.

Например, вам нужно пометить существительное, глагол (прошедшее время), прилагательное и координирующее соединение из предложения. Вы можете использовать правило, как показано ниже

Кусок: {<?.? NN> * <.? ВБД> * <.? JJ> * <CC>}

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

Название символа Описание
, Любой символ кроме новой строки
* Совпадение 0 или более повторений
? Совпадение 0 или 1 повторений

Теперь давайте напишем код, чтобы лучше понять правила

from nltk import pos_tag
from nltk import RegexpParser
text ="learn php from guru99 and make study easy".split()
print("After Split:",text)
tokens_tag = pos_tag(text)
print("After Token:",tokens_tag)
patterns= """mychunk:{<NN.?>*<VBD.?>*<JJ.?>*<CC>?}"""
chunker = RegexpParser(patterns)
print("After Regex:",chunker)
output = chunker.parse(tokens_tag)
print("After Chunking",output)

Вывод

After Split: ['learn', 'php', 'from', 'guru99', 'and', 'make', 'study', 'easy']
After Token: [('learn', 'JJ'), ('php', 'NN'), ('from', 'IN'), ('guru99', 'NN'), ('and', 'CC'), ('make', 'VB'), ('study', 'NN'), ('easy', 'JJ')]
After Regex: chunk.RegexpParser with 1 stages:
RegexpChunkParser with 1 rules:
       <ChunkRule: '<NN.?>*<VBD.?>*<JJ.?>*<CC>?'>
After Chunking (S
  (mychunk learn/JJ)
  (mychunk php/NN)
  from/IN
  (mychunk guru99/NN and/CC)
  make/VB
  (mychunk study/NN easy/JJ))

Вывод из приведенного выше примера: «make» — это глагол, который не включен в правило, поэтому он не помечен как mychunk

Вариант использования Chunking

Разделение на части используется для обнаружения объекта. Сущность — это та часть предложения, с помощью которой машина получает значение для любого намерения.

Example: 
Temperature of New York. 
Here Temperature is the intention and New York is an entity. 

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

Код для демонстрации варианта использования

 import nltk
text = "learn php from guru99"
tokens = nltk.word_tokenize(text)
print(tokens)
tag = nltk.pos_tag(tokens)
print(tag)
grammar = "NP: {<DT>?<JJ>*<NN>}"
cp  =nltk.RegexpParser(grammar)
result = cp.parse(tag)
print(result)
result.draw()    # It will draw the pattern graphically which can be seen in Noun Phrase chunking 

Вывод:

['learn', 'php', 'from', 'guru99']  -- These are the tokens
[('learn', 'JJ'), ('php', 'NN'), ('from', 'IN'), ('guru99', 'NN')]   -- These are the pos_tag
(S (NP learn/JJ php/NN) from/IN (NP guru99/NN))        -- Noun Phrase Chunking

график

Фрагмент существительного Фраза График

Исходя из графика, мы можем сделать вывод, что «learn» и «guru99» — это два разных токена, но они классифицируются как фраза существительного, тогда как токен «from» не принадлежит фразе существительного.

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