spaCy — одна из основных языковых библиотек Python для обработки естественного языка (NLP). В этой статье вы познакомитесь с основами методов NLP с помощью spaCy.

1- Установите spaCy:

!pip install spacy
import spacy

2- Скачать модели и данные:

В Spacy есть обученные конвейеры и весовые коэффициенты, необходимо запустить функции spacy:

Пример: python -m spacy скачать en_core_web_sm

Английский по умолчанию,

Пример для немецкого языка:

python -m spacy download de_core_news_sm

Для получения дополнительной информации посетите https://spacy.io/models официальную документацию

после загрузки моделей их необходимо загрузить:

nlp = spacy.load(‘en_core_web_sm’)

эта строка означает создание объекта nlp, чтобы spaCy и модели были успешно установлены и загружены.

3-Токенизация с помощью spaCy:

  • Прочитайте предложение с spaCy :
doc = nlp(“The sky over New York is blue”)
  • Word Tokenization: получите доступ к токенам и распечатайте их
doc = nlp(“The sky over New York is blue”)
  • Создать диапазон: тот же объект документа
from spacy.tokens import Span
span = Span(doc, 4, 6 )
print(span.text) #York is
  • Найдите предложения со пробелом:
text=nlp(‘I love Natural Language Processing. I like Python’)
sentences = list(text.sents)
print(len(sentences)) ) #2
for s in sentences:
print (s)
# I love Natural Language Processing.
I like Python

4- Стоп-слова:

Стоп-слова, такие как «тоже, но» в английском языке, как правило, удаляются для решения проблемы НЛП. Давайте посмотрим, как обнаруживать и удалять стоп-слова с помощью spaCy.

  • Сначала давайте импортируем стоп-слова spacy для английского языка.
stop_words = spacy.lang.en.stop_words.STOP_WORDS 
len(stop_words) #326
 type(stop_words) #set
  • давайте посмотрим первые пять стоп-слов: мы преобразуем набор стоп-слов в список Python, чтобы сделать нарезку
for stop_word in list(stop_words)[:5]:
      print(stop_word) 
the result :
 have
 ‘d
 before
 hereafter 
indeed
  • вы можете удалить стоп-слова пробела из входного текста:
for token in text:
     if not token.is_stop:
            print (token.text)

4-лемматизация:

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

text=nlp('Someone is helping him to learn')
for token in text:
     print (token, token.lemma_)
the result : Someone someone is be helping help him he to to learn learn

5- Часть речевой маркировки:

идентификация речевой маркировки входного текста с помощью spaCy. Тегирование части речи объясняет роль определенного слова в предложении, например, «глагол», «существительное». Пример :

text=nlp('Someone is helping him to learn') 
for token in text: 
     print (token, token.tag_) 
#the result : Someone NN
 is VBZ 
helping VBG
him PRP 
to TO 
learn VB
#we can print explanation provided by spaCy : 
print (token, spacy.explain(token.tag_))
#the result :
 Someone noun, singular or mass
 is verb, 3rd person singular present
 helping verb, gerund or present participle 
him pronoun, personal 
to infinitival "to"
 learn verb, base form

Распознавание 6 названных объектов:

Распознавание именованных сущностей (NER) — один из наиболее важных и часто используемых инструментов НЛП. NER позволяет обнаруживать объекты из входного текста и классифицировать их по различным категориям, таким как «человек». Давайте посмотрим на пример с spaCy:

doc = nlp(“Donald Trump was the president of USA in 2020”) [(ent.text, ent.label_) for ent in doc.ents] 
# [(‘Donald Trump’, ‘PERSON’), (‘USA’, ‘GPE’), (‘2020’, ‘DATE’)]

больше примеров именованных сущностей для лучшего понимания:

Человек: Криштиану Роналду

GPE: Египет, Германия

ДАТА: 4 апреля 2022 г.

ОРГАНИЗАЦИЯ: Тесла, Мета