Рубрики

Предварительная обработка текста в Python | Набор 2

Условие: введение в NLP , предварительная обработка текста в Python | Комплект 1

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

Давайте импортируем необходимые библиотеки.

# импортировать необходимые библиотеки

import nltk

import string

import re

Часть речевого тегирования:

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

from nltk.tokenize import word_tokenize

from nltk import pos_tag

  
# конвертировать текст в word_tokens с их тегами

def pos_tagging(text):

    word_tokens = word_tokenize(text)

    return pos_tag(word_tokens)

  

pos_tagging('You just gave me a scare')

Пример:

Input: ‘You just gave me a scare’
Output: [(‘You’, ‘PRP’), (‘just’, ‘RB’), (‘gave’, ‘VBD’), (‘me’, ‘PRP’),
(‘a’, ‘DT’), (‘scare’, ‘NN’)]

В данном примере PRP обозначает личное местоимение, RB — наречие, VBD — глагол прошедшего времени, DT — определитель и NN — существительное. Мы можем получить детали всех частей речевых тегов, используя набор тегов Penn Treebank.

# скачать тег

nltk.download('tagsets')

  
# извлекать информацию о теге

nltk.help.upenn_tagset('NN')

Пример:

Input: ‘NN’
Output: NN: noun, common, singular or mass
common-carrier cabbage knuckle-duster Casino afghan shed thermostat
investment slide humour falloff slick wind hyena override subhumanity
machinist …

Чанкинг:

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

from nltk.tokenize import word_tokenize 

from nltk import pos_tag

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

def chunking(text, grammar):

    word_tokens = word_tokenize(text)

  

    # помечать слова частью речи

    word_pos = pos_tag(word_tokens)

  

    # создать парсер чанков используя грамматику

    chunkParser = nltk.RegexpParser(grammar)

  

    # проверить это в списке токенов слова с помеченным положением

    tree = chunkParser.parse(word_pos)

      

    for subtree in tree.subtrees():

        print(subtree)

    tree.draw()

      

sentence = 'the little yellow bird is flying in the sky'

grammar = "NP: {<DT>?<JJ>*<NN>}"

chunking(sentence, grammar)

В приведенном примере грамматика, которая определяется с помощью простого правила регулярного выражения. Это правило говорит, что блок NP (Noun Phrase) должен формироваться всякий раз, когда блок находит необязательный определитель (DT), за которым следует любое количество прилагательных (JJ), а затем существительное (NN).

Такие библиотеки, как spaCy и Textblob, больше подходят для разбиения на фрагменты.

Пример:

Input: ‘the little yellow bird is flying in the sky’
Output:
(S
(NP the/DT little/JJ yellow/JJ bird/NN)
is/VBZ
flying/VBG
in/IN
(NP the/DT sky/NN))
(NP the/DT little/JJ yellow/JJ bird/NN)
(NP the/DT sky/NN)

Признание названного лица:

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

from nltk.tokenize import word_tokenize

from nltk import pos_tag, ne_chunk

  

def named_entity_recognition(text):

    # токенизировать текст

    word_tokens = word_tokenize(text)

  

    # часть речевого тегирования слов

    word_pos = pos_tag(word_tokens)

  

    # дерево слов сущностей

    print(ne_chunk(word_pos))

  

text = 'Bill works for GeeksforGeeks so he went to Delhi for a meetup.'

named_entity_recognition(text)

Пример:

Input: ‘Bill works for GeeksforGeeks so he went to Delhi for a meetup.’
Output:
(S
(PERSON Bill/NNP)
works/VBZ
for/IN
(ORGANIZATION GeeksforGeeks/NNP)
so/RB
he/PRP
went/VBD
to/TO
(GPE Delhi/NNP)
for/IN
a/DT
meetup/NN
./.)

Рекомендуемые посты:

Предварительная обработка текста в Python | Набор 2

0.00 (0%) 0 votes