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
Спасибо, что прочитали :)