xiaochang129

Results 7 comments of xiaochang129

> 如果你的词表没有[UNK],那就没定义,那就是词表的问题,不是软件的问题。 我的意思是 类中定义了self._token_unk=‘[UNK]‘,但是没定义self._token_unk_id。 所以词表中有[unk]也是不够的。

> > > 如果你的词表没有[UNK],那就没定义,那就是词表的问题,不是软件的问题。 > > > > > > 我的意思是 类中定义了self._token_unk=‘[UNK]‘,但是没定义self._token_unk_id。 所以词表中有[unk]也是不够的。 > > 没证没据不要乱说,我只是没有写`self._token_unk_id = xxx`这句代码,跟没有定义是两回事。我很好奇你这么肯定,是实际中跑出了错误,还是纯粹自己想象? 嗯,我就是这个意思:要加一句 `self._token_unk_id = self._token_dict.get(self._token_unk)`。没有别的意思。

> > > > > 如果你的词表没有[UNK],那就没定义,那就是词表的问题,不是软件的问题。 > > > > > > > > > > > > 我的意思是 类中定义了self._token_unk=‘[UNK]‘,但是没定义self._token_unk_id。 所以词表中有[unk]也是不够的。 > > > > > > > > >...

> > 我只是觉得补全了,会更完备。常用bert4keras,帮助很大,所以想贡献点自己实际遇到的一些情况。 > > 谢谢。但正如我一开始所说,不是每一份词表都必须有[UNK]、[MASK]等token的,所以直接明确定义`self._token_unk_id = xxx`、`self._token_mask_id = xxx`反而会降低了灵活性。 > > 况且,当前这种写法,除了ide不会有这个变量的提示外,没有任何使用上的损失。而我的建议是“珍惜生命,远离ide”,所以当前的写法可以说百利无害。 如果出现了词表中不存在的词Z, 将Z转换成id的 tokenizers.py 第199行self._token_dict.get(“Z”, self._token_unk_id) 会等于self._token_unk_id,而这个没定义。

你说的灵活性确实非常有必要,特别是做p-tunning的时候。看你介绍的p-tunning,后续如果要构建模板字段时,我们确实要防止和这些重复。

> > 如果出现了词表中不存在的词Z, 将Z转换成id的 tokenizers.py 第199行self._token_dict.get(“Z”, self._token_unk_id) 会等于self._token_unk_id,而这个没定义。 > > 你究竟能不能理解一下我前面说的话? > > 只要你的词表有[UNK],那么这个`self._token_unk_id`就不会报错,也就是有定义,这个定义不是通过`self._token_unk_id = xxx`来定义,是通过`setattr`来定义。 > > 我真不知道你在纠结什么... 感觉是我的表达问题。。 我说的是对于不在词表中的新词,要从token转id的时候。 跟词表里有没有[UNK]没关系。

> > > > 如果出现了词表中不存在的词Z, 将Z转换成id的 tokenizers.py 第199行self._token_dict.get(“Z”, self._token_unk_id) 会等于self._token_unk_id,而这个没定义。 > > > > > > > > > 你究竟能不能理解一下我前面说的话? > > > 只要你的词表有[UNK],那么这个`self._token_unk_id`就不会报错,也就是有定义,这个定义不是通过`self._token_unk_id = xxx`来定义,是通过`setattr`来定义。 > > > 我真不知道你在纠结什么......