Closed Finley1991 closed 5 years ago
基本顺序:
英文的一个词
对应中文的一个词
英文的一个WordPiece
对应中文的一个字
比如,单词中华人民共和国
,切词后的结果是中华 人民 共和国
,为了适配谷歌原版的wwm,你可以将其改为中华 ##人民 ##共和国
,这样就能用谷歌原版的wwm处理了,当然这个只是为了识别字与词的从属关系,最终训练时需要把中文子词的 ##
前缀去掉(英文请保留,因为wordpiece处理过的英文是有可能包含##
的)。
另外,可能存在小比例seq_cws和seq_wp对不上的情况。 对于这种样本,可以直接退化成非wwm处理。
"最终训练时需要把中文子词的 ##前缀去掉",指的是什么?
@brightmart ##是WordPiece特有的词缀符号。在中文分词中加入##是为了识别同属同一个词的各个子词,实际训练的时候要把##符号删掉。
@brightmart ##是WordPiece特有的词缀符号。在中文分词中加入##是为了识别同属同一个词的各个子词,实际训练的时候要把##符号删掉。
为什么中文要在训练时删掉,英文不能删掉?
@Gaozhen0816 因为词表里的中文没有##,前面也说了##是我们后加的符号,仅为了便于识别分词中的子词。
@Gaozhen0816 因为词表里的中文没有##,前面也说了##是我们后加的符号,仅为了便于识别分词中的子词。
我看到此表里面中文也有##,而且我debug测试 self.wordpiece_tokenizer.tokenize("哈尔滨") 得到的结果是['哈', '##尔', '##滨'],这是不是说我只用加入分词,影响原有的对中文的字符分词方式,就可以做到wwm,后面去掉##只是为了把“尔”和“##尔”的特征集中到一起。以便后期调用模型是统一指定“尔”的token_id?
@ymcui
@guanyuhang8866 正常调用bert的tokenizer对中文切分是只会按字进行切分的,不会出现‘##’标识。
嗯好的,谢谢您的回复,所以这是需要后面去掉##的原因,那是很有必要了!
------------------ 原始邮件 ------------------ 发件人: "Yiming Cui"<notifications@github.com>; 发送时间: 2019年11月1日(星期五) 下午5:20 收件人: "ymcui/Chinese-BERT-wwm"<Chinese-BERT-wwm@noreply.github.com>; 抄送: "花,清香"<1109470261@qq.com>;"Mention"<mention@noreply.github.com>; 主题: Re: [ymcui/Chinese-BERT-wwm] Chinese-BERT-wwm对于Masked LM 任务(完形填空,ERNIE中提到的那种),表现怎么样?有测试过么? (#13)
@guanyuhang8866 正常调用bert的tokenizer对中文切分是只会按字进行切分的,不会出现‘##’标识。
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.
请问作者在上面的回复中为什么说词表中的汉字是没有加##的?因为我发现确实是加了的,另外请问为什么同一个汉字要用这两种处理方式呢?谢谢回复。
请问使用TFBertMode.from_pretrained()l加载时出现 NotImplementedError: Weights may only be loaded based on topology into Models when loading TensorFlow-formatted weights (got by_name=True to load_weights)报错是什么原因导致的呢
想请教一下为什么中文的预训练模型vocab中没有中文双引号,单引号等标点符号
缺失了中文引号,还没有“琊”字
Chinese-BERT-wwm对于Masked LM 任务(完形填空,ERNIE中提到的那种),表现怎么样?有测试过么? 另外WWM采取了新的Mask策略,如果我想在此基础上增加一些专业领域词汇做pre-training,该怎么做?BERT原声模型中有相应的代码,但是因为两个模型mask策略不同,应该不能直接用原生BERT模型,能不能开源一下修改后的模型呢?