сценария таким образом:
for token in doc:
print(token.head.text, token.dep_, token.text)
import spacy
nlp = spacy.load('en')
doc = nlp(u'I am flying to Frisco')
print([w.text for w in doc])
python -m spacy download en
Сокращение en указывает spaCy, что нужно скачать и установить по умолчанию самую подходящую модель для английского языка. «Самая подходящая» в этом случае — сгенерированная для указанного языка (в данном примере — английского), универсальная и требующая минимум дискового пространства.
Для скачивания конкретной модели необходимо указать ее название следующим образом:
$python -m spacy download en_core_web_md
После установки модель можно загрузить с помощью того же самого сокращенного названия, что и во время установки:
nlp = spacy.load('en')
Базовые операции NLP в библиотеке spaCy
Начнем с цепочки базовых операций NLP — конвейера обработки.
сайта spaCy вы можете скачать, например, такие модели для английского языка: en_core_web_sm, en_core_web_md, en_core_web_lg и en_vectors_web_lg.
каждое слово по отдельности, сверточный слой сначала разбивает предложение на части. Предложение в NLP можно считать матрицей, каждая строка которой соответствует слову, представленному в виде вектора. Таким образом, если размерность каждого из векторов слов равна 300, а длина предложения — пять слов, получится матрица размером 5 × 300. Если размер фильтра обнаружения в сверточном слое равен 3 (то есть он применяется к трем последовательным словам), размер покрывающих входные данные областей составит 3 × 300. Такого контекста будет достаточно, чтобы соотнести каждое слово с тегом части речи.
выходного слоя равно числу различных возможных исходов для данного алгоритма
Источниками передаваемых нейронной сети входных значений и весовых коэффициентов обычно служат векторы слов, сгенерированных во время обучения сети.
Обычно узлы в нейронной сети сгруппированы по слоям: имеются входной и выходной слои, а между ними — один скрытый слой или более. Каждый узел в слое (за исключением выходного слоя) соединяется с каждым узлом из следующего слоя, и каждому соединению соответствует весовой коэффициент. Во время процесса обучения алгоритм подбирает веса таким образом, чтобы минимизировать ошибку предсказаний. Благодаря подобной архитектуре нейронная сеть способна выявлять паттерны даже в сложных входных данных.
статистическая модель (statistical model) содержит оценки распределения вероятностей языковых единиц, например слов или фраз, что позволяет ставить им в соответствие лингвистические признаки. В теории вероятностей и статистике распределение вероятностей (probability distribution) для конкретной случайной величины представляет собой таблицу соответствий значений этой величины вероятностям их выпадения (в эксперименте). Таблица 1.1 иллюстрирует пример распределения вероятностей тегов частей речи слова count для заданного предложения. (Напомню, что в зависимости от контекста отдельное слово в английском языке может относиться к разным частям речи.)
Таблица 1.1. Пример распределения вероятностей для языковой единицы в конкретном контексте заданного предложения
Глагол
Существительное
78 %
22 %
Конечно, в другом контексте
spaCy позволяет выполнить три задачи: разбор синтаксических зависимостей (определение взаимосвязи между словами в предложении), частеречную разметку (выявление существительных, глаголов и иных частей речи) и распознавание именованных сущностей (разбиение имен собственных по категориям — люди, организации, местоположения и т.д.). В следующих главах мы поговорим об этом более подробно.
Жизненный цикл обы