Как включить пользовательский компонент в конвейер обучения SpaCy с помощью CLI?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как включить пользовательский компонент в конвейер обучения SpaCy с помощью CLI?

Сообщение Anonymous »

Я пытаюсь реализовать простой пользовательский компонент в своем обучающем конвейере SpaCy. Для обучения я использую интерфейс командной строки spaCy, что означает, что я управляю конфигурацией конвейера через файл config.cfg, хотя у меня есть сценарии для создания и аннотирования данных обучения и оценки. Пользовательский компонент, который я создал, не имеет состояния, что, по общему мнению, означает, что ему не нужна фабрика, и он может просто использовать декоратор @Language.comComponent(). Компонент просто берет объект документа и добавляет к нему классификацию на основе количества вхождений любого из заданного набора именованных объектов. Если существует более одного объекта любого типа, классификационный балл равен 1,0; если нет, то это 0,0.
Вот код функции:

Код: Выделить всё

# custom_classifier.py

from spacy.language import Language

@Language.component("custom_classifier")
def custom_classifier(doc):
entity_types = ["ENTITY1", "ENTITY2", "ENTITY3"]
entity_counts = [sum(1 for ent in doc.ents if ent.label_ == entity_type) for entity_type in entity_types]

if any(count > 1 for count in entity_counts):
doc.cats["MULTIPLE"] = 1.0
else:
doc.cats["MULTIPLE"] = 0.0

return doc
Затем я пытаюсь использовать этот пользовательский компонент в своем конвейере обучения, добавляя его в определение config.cfg, например:

Код: Выделить всё

[nlp]
lang = "en"
pipeline = ["tok2vec","ner","custom_classifier"]
batch_size = 1000
...

[components]
...

[components.taper_classifier]
source = "custom_classifier.custom_classifier"
after = "ner"
Что бы я ни делал, когда я пытаюсь запустить spacy train config.cfg, я получаю некоторую версию этого сообщения об ошибке:

Код: Выделить всё

OSError: [E050] Can't find model 'custom_classifier.custom_classifier'. It doesn't seem to be a Python package or a valid path to a data directory.
До сих пор я пробовал различные решения, ни одно из которых не сработало. К ним относятся:
  • Попытка всех мыслимых перестановок пути модуля, которые я только мог придумать.
  • Преобразование функции компонента в фабрику и соответственно изменив декоратор и конфигурацию.
  • Регистрация функции с помощью декоратора @spacy.registry.
Я просмотрел документацию и Я просто не могу понять, что я делаю неправильно, хотя признаю, что в документации предполагается, что обучение с использованием пользовательских компонентов выполняется в коде, а не с помощью CLI, и не вдается в подробности того, как объявить пользовательские компоненты с помощью файла config.cfg. У меня такое ощущение, что либо я просто упускаю из виду что-то простое, либо я совершенно не понимаю, как должны работать эти пользовательские компоненты.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ng-the-cli
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как включить пользовательский компонент в конвейер обучения SpaCy с помощью CLI?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Почему Spacy не выполняет конвейер обучения, хотя код выполняется без ошибок?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Spacy nlp = spacy.load("en_core_web_lg")
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Почему Presidio с Spacy NLP Engine не распознает организации и Pesel, пока Spacy делает?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Можно ли переносить старые модели Spacy в будущие версии Spacy?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»