Spacy.load: примеры (PYTHON)

Функция spacy.load: полное руководство с примерами
Раздел: NLP, Модели
spacy.load(name: str): Language object

Основы функции spacy.load

Функция spacy.load() является основным способом загрузки предварительно обученных или пользовательских языковых моделей в библиотеке spaCy для обработки естественного языка (NLP). Её применяют при инициализации конвейера для выполнения задач, таких как токенизация, определение частей речи, распознавание именованных сущностей и синтаксический анализ.

Аргументы функции:

  • name (обязательный, строка): Имя установленной модели (например, 'en_core_web_sm') или путь к директории с моделью.
  • vocab (опционально, Vocab): Объект словаря для совместного использования между несколькими моделями. По умолчанию создается новый.
  • disable (опционально, список строк): Список имен компонентов конвейера, которые нужно отключить при загрузке.
  • exclude (опционально, список строк): Список имен компонентов конвейера, которые нужно исключить из загрузки.
  • config (опционально, словарь/строка): Конфигурационные переопределения в виде словаря или путь к конфигурационному файлу.
  • enable (опционально, список строк): Список компонентов, которые нужно включить (остальные отключаются).

Возвращаемое значение: Объект Language (например, nlp), который представляет загруженную модель и предоставляет доступ ко всему конвейеру обработки.

Базовые примеры использования

Пример 1: Загрузка базовой модели.

import spacy
# Загрузка небольшой английской модели
nlp = spacy.load('en_core_web_sm')
doc = nlp('Hello world!')
print([token.text for token in doc])
['Hello', 'world', '!']

Пример 2: Загрузка с отключением компонентов.

import spacy
# Загрузка без парсера и NER
nlp = spacy.load('en_core_web_sm', disable=['parser', 'ner'])
print(nlp.pipe_names)
['tok2vec', 'tagger']

Пример 3: Загрузка модели по пути.

import spacy
nlp = spacy.load('/path/to/your/custom_model')
print(nlp.meta['name'])
'custom_model'

Альтернативные методы в Python

spacy.blank: Создает пустой объект Language для указанного языка без модели. Используют, когда нужен только токенизатор или для обучения модели с нуля.

nlp = spacy.blank('en')

Прямое использование класса Language: Продвинутый метод для полного контроля над конвейером, применяется в основном при кастомной реализации.

Выбор метода: spacy.load применяют для работы с предобученными моделями. spacy.blank выбирают для создания новых моделей или использования только лингвистических правил.

Аналоги в других языках

JavaScript (использование spaCy через transformers): Аналогов spaCy нет, но для загрузки моделей NLP используют библиотеки типа transformers.

// Пример с использованием библиотеки для трансформеров
const pipeline = await transformers.pipeline('ner');

Java (OpenNLP): Загрузка модели происходит через класс TokenizerModel.

InputStream modelIn = new FileInputStream('en-token.bin');
TokenizerModel model = new TokenizerModel(modelIn);

R (spacyr): Используют функцию spacy_initialize() для загрузки модели.

spacy_initialize(model = 'en_core_web_sm')

Отличия от Python-версии spaCy заключаются в синтаксисе и интеграции с экосистемой языка.

Распространенные ошибки

Ошибка 1: Модель не установлена.

import spacy
nlp = spacy.load('en_core_web_sm')
OSError: [E050] Can't find model 'en_core_web_sm'...

Решение: Установить модель через python -m spacy download en_core_web_sm.

Ошибка 2: Несовместимость версий spaCy и модели.

import spacy
nlp = spacy.load('ru_core_news_sm')  # Модель для старой версии
ValueError: [W095] Model ... is incompatible...

Решение: Обновить модель или использовать совместимую версию spaCy.

Изменения в последних версиях

В spaCy версии 3.0 произошел переход на систему конфигурационных файлов. Аргумент config стал основным для передачи настроек. Устарел аргумент path в пользу прямого указания имени модели или пути в аргументе name.

Добавлены аргументы enable и exclude для более гибкого управления компонентами конвейера. Улучшена обработка ошибок при загрузке несовместимых моделей.

Расширенные примеры

Пример 1: Загрузка с конфигурацией и общим словарем.

Пример python
import spacy
from spacy.vocab import Vocab

# Создание общего словаря
shared_vocab = Vocab()

# Конфигурационные переопределения
custom_config = {'components': {'tagger': {'threshold': 0.8}}}

nlp1 = spacy.load('en_core_web_sm', vocab=shared_vocab, config=custom_config)
nlp2 = spacy.load('en_core_web_md', vocab=shared_vocab)

print(nlp1.vocab is nlp2.vocab)
True

Пример 2: Загрузка только определенных компонентов с помощью enable.

Пример python
import spacy

# Загрузка только токенизатора и векторизатора
nlp = spacy.load('en_core_web_lg', enable=['tok2vec'])
print(nlp.pipe_names)

# Обработка текста (NER не будет работать)
doc = nlp('Google was founded in the USA.')
print(doc.ents)
['tok2vec']
()

Пример 3: Использование кастомного конфигурационного файла.

Пример python
import spacy

nlp = spacy.load('en_core_web_sm',
                 config={'components': {'parser': {'batch_size': 128}}})
print(nlp.config['components']['parser']['batch_size'])
128

Пример 4: Загрузка модели с диска и проверка метаданных.

Пример python
import spacy
import pathlib

# Предположим, модель скачана в каталог
model_path = pathlib.Path('/models/en_custom')
nlp = spacy.load(model_path)
print(f"Имя модели: {nlp.meta['name']}")
print(f"Версия модели: {nlp.meta['version']}")
print(f"Язык: {nlp.meta['lang']}")
Имя модели: en_custom
Версия модели: 0.0.1
Язык: en

питон spacy.load function comments

En
Spacy.load Load NLP model