NLP预训练模型的数据预处理(例如ELMo,Bert)

时间:2019-03-01 06:03:24

标签: machine-learning nlp pre-trained-model transfer-learning natural-language-processing

我计划根据手头的数据(由人输入的注释)从头开始训练ELMo或Bert模型。我现在拥有的数据都是由不同的人键入的。拼写,格式和句子不一致都存在问题。阅读ELMo和Bert的论文后,我知道这两个模型都使用了很多类似Wikipedia的句子。我还没有找到Emlo或Bert模型的任何经过处理的训练样本或任何预处理教程。我的问题是:

  • Bert和ELMo模型是否具有标准的数据预处理步骤或标准的处理数据格式?
  • 根据我现有的脏数据,是否可以对这些数据进行预处理,以使所得到的单词表示更加准确?

1 个答案:

答案 0 :(得分:1)

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,您应该有很多数据。