【问题标题】:How to predict masked word in a sentence in BERT-base from Tensorflow checkpoint (ckpt) files?如何从 Tensorflow 检查点(ckpt)文件中预测基于 BERT 的句子中的掩码词?
【发布时间】:2019-09-11 12:22:49
【问题描述】:

我有基于 BERT 的模型检查点,这些检查点是在 Tensorflow 中从头开始训练的。如何使用这些检查点来预测给定句子中的掩码词?

就像,让我们说句子是, “[CLS] abc pqr [MASK] xyz [SEP]” 我想预测 [MASK] 位置的单词。

我该怎么做? 我在网上搜索了很多,但每个人都在使用 BERT 来完成特定于任务的分类任务。 不使用 BERT 来预测掩码。

请帮助我解决这个预测问题。

我使用 create_pretraining_data.py 创建数据并使用来自官方 BERT 存储库 (https://github.com/google-research/bert) 的 run_pretraining.py 从头开始​​训练模型

我在官方 bert repo 中搜索了问题。但没有找到任何解决方案。

还查看了该仓库中的代码。他们正在使用 Estimator,他们正在训练而不是使用检查点权重。

没有找到任何方法来使用基于 BERT 模型(从头开始训练)的 Tensorflow 检查点来预测单词掩码标记(即 [MASK])。

【问题讨论】:

    标签: python tensorflow deep-learning predict bert-language-model


    【解决方案1】:

    您确定需要从 TF 检查点开始吗?如果您可以使用pytorch-transformers 库中使用的预训练模型之一,我编写了一个库来执行此操作:FitBERT

    如果你必须从 TF 检查点开始,有一些脚本可以将 TF 检查点转换为 pytorch-transformers 可以使用的东西,link,转换后你应该可以使用 FitBERT,或者你可以看到我们在代码中所做的事情。

    【讨论】:

    • 感谢您的回答。是的,我需要使用这些检查点。我用自己的词汇从头开始训练自己的 BERT 印地语。我知道 BERT 也适用于多语言。但它会分段标记化,但我想屏蔽整个单词(也有关于整个单词屏蔽 (WWM) 的研究,但它只适用于英语)。
    • 你看链接和FitBERT了吗?脚本应覆盖检查点,然后您可以使用 FitBERT 预测掩码标记。
    • 是的。我看着它。我从 BERT 检查点获得了.pth 文件。谢谢你。顺便说一句,您的库 FitBERT 在 conda 中可用吗?我试图通过pip3 install fitbert 安装,但它给了我这个错误ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
    • 已经在 Ubuntu 和 Mac 上的 python3.6 和 3.7 上进行了测试。你在 Windows 上吗?
    • 哦,不,我使用的是 Ubuntu,但我的 python 版本是 3.5.x
    猜你喜欢
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2021-06-30
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多