此方法已被弃用,应使用__call__,如何在BERT中解决此问题



我正在尝试使用BERT中的batch_encode_plus()函数。当它说这个功能不存在时,问题就来了。我查阅了这一页的文档,上面写着:此方法已弃用,应改用__call__">。我尝试使用__call__作为函数,但它不起作用。

然后我进入这个页面,似乎函数batch_encode_plus()__call__取代了。但当我使用该功能时,它不起作用。我尝试使用encoded_plus(),但它没有给出预期的结果。

我不知道如何使用这个__call__功能,有什么建议吗?

我最近一直在处理这个问题。下面是调用函数的一些文档

调用(输入*args**kwargs(→dict 的列表或列表

参数:

  • args(str或List[str](——一个或多个带有掩码标记的文本(或一个提示列表(。targets(str或List[str],可选(——当通过时,模型将把分数限制在通过的目标上,而不是在整个vocb中查找。如果提供的目标不在模型vocab中,则会对其进行标记化,并使用第一个生成的标记(带有警告,这可能会更慢(
  • top_k(int,可选(--传递时,覆盖要返回的预测数

返回:dict 的列表或列表

下面是我如何使用它的一个例子。(请记住,我使用的是BERT的填充掩码模式,这是一个单词预测模型和python语言(

from transformers import pipeline
predicter = pipeline('fill-mask', model='bert-base-uncased')
print(predicter.__call__("example string. Hello [MASK]",top_k=1)

该模型将预测[MASK]标记的单词示例输出为:

{'score': 0.9415972232818604, 'token': 1037, 'token_str': 'kitty', 'sequence': 'example string. Hello kitty'}

相关内容

最新更新