我正在尝试使用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'}