Обучение базовой модели классификации пространственного текста

#python #nlp #spacy

Вопрос:

Я пытаюсь обучить базовую модель классификации текста с использованием пространства. У меня есть список текстов, и я хочу построить модель, которая будет классифицировать текст как outcome1 или outcome2 . Допустим, мои данные выглядят так:

 texts = ["This is the first example text",
         "This is the second example text",
         "This is yet another text"]
y = ["outcome2", "outcome1", "outcome1"]
 

Моя проблема в том, что у меня проблемы даже с обработкой текстов в документы:

 nlp = spacy.blank("en")

textcat = nlp.create_pipe("textcat")
textcat.add_label("outcome1")
textcat.add_label("outcome2")
textcat = nlp.add_pipe("textcat", last = True)

nlp.pipe_names
 
 >>> ['textcat']
 

Но когда я пытаюсь обработать любой текст, я получаю сообщение об ошибке:

 doc = nlp("This is a sentence")
 
 >>> ValueError: Cannot get dimension 'nO' for model 'sparse_linear': value unset
 

Я попытался следовать этому руководству (которое немного устарело) и настроить проект с помощью виджета быстрого запуска spaCy, но я продолжаю сталкиваться с ошибками при инициализации файла конфигурации. Чего мне не хватает?

Комментарии:

1. Вместо этого для spaCy v3 попробуйте этот пример проекта: github.com/explosion/projects/tree/v3/pipelines/textcat_demo . Как начать работу с проектом: spacy.io/usage/projects или, если вы исходите из примеров версии 2: github.com/explosion/spaCy/tree/master/examples

2. Посмотрите на этот пример на Kaggle. Выполните поиск по текстовой классификации, как только вы перейдете к этой статье kaggle.com/poonaml/text-classification-using-spacy

Ответ №1:

На самом деле я нашел здесь очень похожую дискуссию, и это именно то, о чем спрашивает этот вопрос: https://github.com/explosion/spaCy/discussions/9732

В обсуждении говорится, что вы должны указать метки, обучить модель и инициализировать ее, прежде чем ее можно будет использовать. Кроме того, начиная с версии 3 и далее не рекомендуется тренироваться с использованием собственного цикла обучения, а вместо этого использовать новую систему конфигурации и позволять spacy обрабатывать обучение за вас. См.: https://spacy.io/usage/training