在拥抱中使用字母组合标记器时如何启用采样?

问题描述

huggingface transformer documentation上提到过,当使用unigram标记器时,“您可以根据其概率对其中一种标记进行采样”。但是,该文档没有详细说明如何这样做。

AlbertTokenizerT5Tokenizer(XLNet)的源代码中,_tokenize()方法中都有一个参数“ sample”,该参数依次从句子中调用编码方法:启用了采样。

    def _tokenize(self,text,sample=False):
        """ Tokenize a string. """
        text = self.preprocess_text(text)

        if not sample:
            pieces = self.sp_model.EncodeAsPieces(text)
        else:
            pieces = self.sp_model.SampleEncodeAsPieces(text,64,0.1)
        ...

但是,当我检查_tokenize的用法时,似乎仅在未传递“样本”参数的情况下调用了它。

        def split_on_tokens(tok_list,text):
            if not text.strip():
                return []
            if not tok_list:
                return self._tokenize(text)

我尝试使用encode()调用tokenizer类的sample=True方法,但是该关键字未被识别。

albert_tokenizer = AlbertTokenizer('m.model')
albert_tokenizer.encode(msg,sample=True)

>> Keyword arguments {'sample': True} not recognized.

在拥抱中使用字母组合标记器时应如何启用采样?

我的github issue

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...