Предварительная обработка данных для моделей предварительной подготовки НЛП (например, Emlo, Bert)
Я планирую обучить модели Эмло или Берта с нуля, основываясь на данных (заметки, напечатанные людьми) под рукой. Все данные, которые у меня есть, напечатаны разными людьми. Есть проблемы с орфографией, форматированием и несоответствиями в предложениях. После прочтения статей Эмло и Берта я знаю, что обе модели используют много предложений, как из Википедии. Я не смог найти обработанных обучающих образцов или учебника по предварительной обработке для моделей Эмло или Берта. Мой вопрос:
- Имеются ли в моделях Bert и Emlo стандартные этапы предварительной обработки данных или стандартные форматы обработанных данных?
- Основываясь на моих существующих грязных данных, есть ли способ предварительной обработки этих данных, чтобы результирующее представление слов было более точным?
1 ответ
Берт использует вложения WordPiece, что несколько помогает с грязными данными. https://github.com/google/sentencepiece
Также Google-Research обеспечивает предварительную обработку данных в своем коде. https://github.com/google-research/bert/blob/master/tokenization.py
Реализация Elmo по умолчанию принимает токены в качестве выходных данных (если вы предоставите строку без тегов, она разделит ее на пробелы). Таким образом, исправление орфографии, дедупликация, лемматизация (например, как в простом https://spacy.io/api/lemmatizer), отделение токенов от пунктуации и другие стандартные методы предварительной обработки могут помочь.
Вы можете проверить стандартные способы предварительной обработки текста в пакете NLTK. https://www.nltk.org/api/nltk.tokenize.html (например, Twitter tokenizer). (Остерегайтесь, что NLTK медленен сам по себе). Многие библиотеки машинного обучения обеспечивают базовую предварительную обработку ( https://github.com/facebookresearch/pytext https://keras.io/preprocessing/text/).
Вы также можете попытаться поэкспериментировать и предоставить bpe-кодировки или n-граммы символов для ввода.
Это также зависит от количества данных, которые у вас есть; чем больше у вас данных, тем меньше выгода от предварительной обработки (на мой взгляд). Учитывая, что вы хотите тренировать Элмо или Берта с нуля, у вас должно быть много данных.