machine-learning - NLP 预训练模型的数据预处理(例如 ELMo、Bert)

标签 machine-learning pre-trained-model transfer-learning nlp

我计划根据手头的数据(人们输入的笔记)从头开始训练 ELMo 或 Bert 模型。我现在掌握的数据都是不同人打出来的。存在拼写、格式和句子不一致的问题。阅读 ELMo 和 Bert 论文后,我知道这两个模型都使用了大量来自维基百科的句子。我尚未找到任何经过处理的训练样本或任何 Emlo 或 Bert 模型的预处理教程。我的问题是:

  • Bert 和 ELMo 模型是否有标准数据预处理步骤或标准处理数据格式?
  • 根据我现有的脏数据,是否有任何方法可以预处理这些数据,以便生成的单词表示更加准确?

最佳答案

Bert 使用 WordPiece 嵌入,这在某种程度上有助于处理脏数据。 https://github.com/google/sentencepiece

Google-Research还在其代码中提供数据预处理。 https://github.com/google-research/bert/blob/master/tokenization.py

默认的 Elmo 实现将标记作为输出(如果您提供未标记化的字符串,它将按空格分割)。因此,拼写纠正、重复数据删除、词形还原(例如 spacy https://spacy.io/api/lemmatizer )、将标记与标点符号分开以及其他标准预处理方法可能会有所帮助。

您可以检查 NLTK 包中预处理文本的标准方法。 https://www.nltk.org/api/nltk.tokenize.html (例如 Twitter 分词器)。 (请注意,NLTK 本身很慢)。许多机器学习库提供基本的预处理 ( https://github.com/facebookresearch/pytext https://keras.io/preprocessing/text/ )

您还可以尝试尝试并向输入提供 bpe 编码或字符 n-gram。

这还取决于您拥有的数据量;拥有的数据越多,预处理的好处就越少(在我看来)。鉴于您想从头开始训练 Elmo 或 Bert,您应该拥有大量数据。

关于machine-learning - NLP 预训练模型的数据预处理(例如 ELMo、Bert),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54938815/

相关文章:

python - 如何在 TensorFlow 2 中写入 TensorBoard

python - 随机森林分类器 Matlab 与 Python

python - 观察意义 - OpenAI Gym

tensorflow lite 转换失败。 "undefined symbol : _ZTIN10tensorflow6DeviceE"发生

tensorflow - 如何为 Tensorflow Hub 模块的特定输入获取所有层的激活?

numpy - MNIST 中每个数字代表什么?

machine-learning - Keras 预训练的 Xception 模型总是给出预测 'sewing_machine'

apex - 为什么 huggingface bert pooler hack 可以使混合精度训练稳定?

python - 访问 PyTorch 中预训练模型中的特定层

deep-learning - pytorch - loss.backward() 和 optimizer.step() 在 eval 模式下与批量规范层?