pip install spacy

После установки библиотеки нам нужно скачать языковую модель. Дополнительную информацию и доступные модели смотрите в документации по моделям.

python -m spacy download en

Импорт библиотек

import spacy
print(spacy.__version__)
from spacy.lang.en import English
from spacy import displacy
nlp = spacy.load('en') # loading English language model
# define a test sentence
test_sent= "Pakistan got independence in 1947. Karachi, Lahore and Islamabad are few of the major cities Pakistan."

Токенизация

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

# converting our test sentence into an spacy token object
# we will use this approach to extract tokens
parsed_sent = nlp(test_sent) 
print(type(parsed_sent))
# it will split the sentence and print all words
print(parsed_sent.text.split())

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

# .orth_ is used for this purpose
for token in parsed_sent:
    print(token.orth_ )
# To print only word without any punctuation, use below code
# Method # 01
for token in parsed_sent:
    if not token.is_punct | token.is_space:
        print(token.orth_ )
# Method # 02
word_list = [token.orth_ for token in parsed_sent if not token.is_punct | token.is_space]
print(word_list)

Маркировка части речи

Spacy упрощает получение тегов частей речи

N(oun): обычно обозначает слова, которые изображают какой-либо объект или сущность, которая может быть живой или неживой.

V(erb): Глаголы — это слова, которые используются для описания определенных действий, состояний или событий.

Прилагательное (прилагательное). Прилагательные — это слова, используемые для описания или уточнения других слов, обычно существительных и именных словосочетаний. Фраза красивый цветоксодержит существительное (N) цветок, которое описывается или уточняется с помощью прилагательного (ADJ) красивый.

Adv(erb): наречия обычно действуют как модификаторы для других слов, включая существительные, прилагательные, глаголы или другие наречия. Во фразе очень красивый цветок есть наречие (ADV) очень, которое изменяет прилагательное (ADJ) красивый.

# Method # 01
sentence_spans = list(parsed_sent.sents)
displacy.render(sentence_spans, style='dep', jupyter=True)
# Method # 02
for token in parsed_sent:
    print(token.orth_, token.ent_type_ if token.ent_type_ != "" else "(not an entity)")

Распознавание объектов

Распознавание сущностей — это процесс классификации именованных сущностей, найденных в тексте, по заранее определенным категориям, таким как лица, места, организации, даты и т. д.

parsed_sent = nlp(test_sent)
spacy.displacy.render(parsed_sent, style='ent',jupyter=True)

лемматизация

Лемматизация — это приведение каждого слова к его корню, или лемме. В spaCy мы вызываем token.lemma_, чтобы получить леммы для каждого слова.

for token in parsed_sent:
    print(token, ' -> Its Lemma word ', token.lemma_)
    print()

Преобразование данных Spacy в Dataframe

import pandas as pd
df_token = pd.DataFrame()
for i, token in enumerate(parsed_sent):
    df_token.loc[i, 'text'] = token.text
    df_token.loc[i, 'lemma'] = token.lemma_,
    df_token.loc[i, 'pos'] = token.pos_
    df_token.loc[i, 'tag'] = token.tag_
    df_token.loc[i, 'dep'] = token.dep_
    #df_token.loc[i, 'shape'] = token.shape_
    #df_token.loc[i, 'is_alpha'] = token.is_alpha
    df_token.loc[i, 'is_stop'] = token.is_stop
    
print(df_token)
# writing dataframe into excel file
df_token.to_excel('Tokens Data.xlsx', index=False)

Это лишь некоторые из функций этой удивительной библиотеки НЛП. Вы можете обратиться к его документации.

Это подходит к концу этой статьи. Вы также можете проверить и изучить библиотеку НЛП Textblob.
http://uzairadamjee.com/blog/textblob/

Полный код можно скачать с моего github;
https://github.com/uzairaj/TextBlob

Смотрите другие блоги на моем веб-сайте и канале YouTube
http://uzairadamjee.com/blog
https://www.youtube.com/channel/UCCxSpt0KMn17sMn8bQxWZXA

Спасибо, что прочитали :)