ChatGLM-6B icon indicating copy to clipboard operation
ChatGLM-6B copied to clipboard

tokenization中文标点符号会映射成英文标点符号

Open luxuriance19 opened this issue 2 years ago • 6 comments

Is your feature request related to a problem? Please describe.

用预训练的ChatGLM做抽取任务的时候发现,抽取的标点符号会修改,发现中文标点符号encoder再decoder之后会转为英文标点。

e.g. :","会变成","。

请问这么做是认为中英文标点符号表达意思一致,这样做减少训练成本嘛?但是可能在其它特定标点符号修正上是不是会有点问题?

Solutions

请问词表未来还有变更的计划嘛?

Additional context

No response

luxuriance19 avatar May 18 '23 06:05 luxuriance19

请问有解决办法了吗?这个特性会在做文本纠错、校验等任务时带来麻烦。

geolvr avatar May 23 '23 04:05 geolvr

请问有解决办法了吗?这个特性会在做文本纠错、校验等任务时带来麻烦。

查了一下,应该是与sentencepiece的默认设置有关。在训练sentencepiece模型时,通过使用spm_train --normalization_rule_name=identity参数,可以避免把全角字符映射成半角字符。 但根据sentencepiece官方信息,这个normalization_rule只能在训练时指定。因为这个normalization_rule是写到模型文件中的,一旦模型训练完毕就无法更改了。所以除非作者提供新的ice_text.model文件,似乎没有别的办法。

参照: https://github.com/google/sentencepiece/issues/789 https://github.com/google/sentencepiece/issues/839

geolvr avatar May 23 '23 08:05 geolvr

同问,我也遇到了这个问题,在评估BLEU和ROUGE的时候会有很大差异,没法跟之前benchmark公平比较了。

kaishxu avatar May 24 '23 07:05 kaishxu

+1我也遇到了这个问题

GMago-LeWay avatar Jun 13 '23 03:06 GMago-LeWay

请问有解决办法了吗?这个特性会在做文本纠错、校验等任务时带来麻烦。

查了一下,应该是与sentencepiece的默认设置有关。在训练sentencepiece模型时,通过使用spm_train --normalization_rule_name=identity参数,可以避免把全角字符映射成半角字符。 但根据sentencepiece官方信息,这个normalization_rule只能在训练时指定。因为这个normalization_rule是写到模型文件中的,一旦模型训练完毕就无法更改了。所以除非作者提供新的ice_text.model文件,似乎没有别的办法。

参照: google/sentencepiece#789 google/sentencepiece#839

大家后面是怎么解决全角/半角问题的呢

GuaiYiHu avatar Nov 09 '23 07:11 GuaiYiHu

chatglm2及之后修复了这个问题,或者非要用1的话,得自己对词表增加原有词表不包含的这些词,并且添加时指定这些token的normalize=False,然后对这些词汇进行训练。

padeoe avatar Oct 12 '24 06:10 padeoe