fasttext 预训练模型的文本预处理

Text preprocessing for fasttext pretrained models

我想使用预训练的 fastext 模型进行语言检测:https://fasttext.cc/docs/en/language-identification.html。我在哪里可以找到用于训练该特定模型的文本预处理的确切Python代码?我对关于我们应该如何为使用模型准备文本的一般性回答不感兴趣 - 我正在寻找与用于训练的转换相同的转换。

当 Facebook 工程师在他们的 Github 存储库问题中被问及类似问题时,他们通常会指出 one or the 他们 public 中两个 shell 脚本中的另一个] 代码(尤其是其中的 'normalize_text' 函数)。

https://github.com/facebookresearch/fastText/blob/master/tests/fetch_test_data.sh#L20

normalize_text() {
  tr '[:upper:]' '[:lower:]' | sed -e 's/^/__label__/g' | \
    sed -e "s/'/ ' /g" -e 's/"//g' -e 's/\./ \. /g' -e 's/<br \/>/ /g' \
        -e 's/,/ , /g' -e 's/(/ ( /g' -e 's/)/ ) /g' -e 's/\!/ \! /g' \
        -e 's/\?/ \? /g' -e 's/\;/ /g' -e 's/\:/ /g' | tr -s " " | myshuf
}

https://github.com/facebookresearch/fastText/blob/master/get-wikimedia.sh#L12

normalize_text() {
    sed -e "s/’/'/g" -e "s/′/'/g" -e "s/''/ /g" -e "s/'/ ' /g" -e "s/“/\"/g" -e "s/”/\"/g" \
        -e 's/"/ " /g' -e 's/\./ \. /g' -e 's/<br \/>/ /g' -e 's/, / , /g' -e 's/(/ ( /g' -e 's/)/ ) /g' -e 's/\!/ \! /g' \
        -e 's/\?/ \? /g' -e 's/\;/ /g' -e 's/\:/ /g' -e 's/-/ - /g' -e 's/=/ /g' -e 's/=/ /g' -e 's/*/ /g' -e 's/|/ /g' \
        -e 's/«/ /g' | tr 0-9 " "
}

他们还引用了 this page's section on 'Tokenization' (which names some libraries), and the academic paper which describes the earlier work making individual language vectors

None 其中保证与用于创建其预训练分类模型的模型完全匹配,而且令人沮丧的是,此类模型的每个版本都不包含 exact 重现代码。但是,这些来源似乎尽可能详细,没有直接从创建它们的团队获得answers/help。