В spaCy есть три основных компонента «языковой модели»: «статические» данные для конкретного языка , поставляемые в Python (исключения токенайзера, стоп-слова, правила для отображения мелкозернистых в грубые детализированные теги части речи), статистическая модель , предназначенная для прогнозирования тегов части речи, зависимостей и именованных объектов (обученных в большом помеченном корпусе и включенных в двоичные веса) и необязательно векторы слов , которые можно преобразовать и добавить до или после тренировки. Вы также можете обучить свои собственные векторы для своего исходного текста, используя библиотеку, такую как Gensim , а затем добавить их в spaCy.
spaCy v2.x позволяет вам обучать все компоненты конвейера независимо или в режиме реального времени, поэтому вы можете обучать тэггер, парсер и распознаватель сущностей вашим данным. Все это требует помеченных данных . Если вы обучаете новый язык с нуля, вы обычно используете существующий древовидный банк. Вот пример корпуса Universal Dependencies для испанского языка (который также использовался для обучения испанской модели spaCy). Затем вы можете преобразовать данные в формат spaCy в формате JSON и использовать команду spacy train
для обучения модели. Например:
git clone https://github.com/UniversalDependencies/UD_Spanish-AnCora
mkdir ancora-json
python -m spacy convert UD_Spanish-AnCora/es_ancora-ud-train.json ancora-json
python -m spacy convert UD_Spanish-AnCora/es_ancora-ud-dev.json ancora-json
mkdir models
python -m spacy train es models ancora-json/es_ancora-ud-train.json ancora-json/es_ancora-ud-dev.json
Я не знаю, что у вас в corpus.txt
и является ли оно полностью помеченным или только необработанный текст. (Я также не знаю ни одного существующего ресурса для люксембургского языка - кажется, что это довольно сложно найти!) Если ваши данные помечены, вы можете преобразовать их в формат spaCy, используя один из встроенных преобразователей или ваш собственный маленький сценарий. Если ваш корпус состоит только из необработанного текста, вы должны сначала пометить его и посмотреть, подходит ли он для обучения общей языковой модели. В конечном счете, это сводится к экспериментам, но вот несколько стратегий:
- Пометьте весь корпус вручную для каждого компонента - например, теги части речи, если вы хотите обучить тегер, метки зависимостей, если вы хотите обучить синтаксический анализатор, и диапазоны сущностей, если вы хотите обучить распознаватель сущностей. Вам понадобится много данных - в идеале, корпус такого же размера, как у универсальных зависимостей.
- Эксперимент с обучением существующей предварительно обученной модели люксембургского языка - например, немецкая модель . Это может звучать странно, но это не редкая стратегия. Вместо обучения с нуля, вы посттренируете существующую модель с примерами люксембургского языка (в идеале, пока его прогнозы на вашем люксембургском тексте не будут достаточно хорошими). Вы также можете создать больше данных для обучения, запустив немецкую модель над вашим люксембургским текстом и извлекая и исправляя ее ошибки ( см. Здесь для подробной информации).
Помните, что вам всегда нужны оценочные данные тоже (в документах также называемые "данными разработки"). Обычно это случайная часть ваших помеченных данных, которые вы удерживаете во время обучения и используете, чтобы определить, улучшается ли ваша модель.