Open gnodgnodtonmi opened 1 year ago
你好,感谢你们的出色工作。
我在使用模型的 tokenizer 时遇到了一些问题。当我使用 tokenizer 对包含连续的空格和特殊字符(如 \n, \t 等)进行 encode 操作时,我发现 tokenizer 会忽略周围有多个空格的特殊字符,或者会将这些特殊字符转为多个空格,这使得再次进行 decode 操作后,文本中这些特殊字符会丢失。测试的代码如下:
tokenizer
\n
\t
encode
decode
tokenizer = AutoTokenizer.from_pretrained("fnlp/moss-moon-003-sft", trust_remote_code=True) text = "a \n b\n \nc \n " # input_ids: [64, 106058, 106058, 65, 106057, 66, 220, 56599] input_ids = tokenizer.encode(text, add_special_tokens=False) # 输出: "a b c \n " print(tokenizer.decode(input_ids))
我按照这样测试其他模型的 tokenizer 时均未发现这个现象,其他模型的 tokenizer 对文本经过 encode 和 decode 后均会还原为和原来一致的文本。
这个问题是我对 MOSS 进行微调后发现的,我发现微调后的 MOSS 模型在生成代码时,当遇到代码中有换行加缩进的时候,微调模型从来不会生成换行,而原本的 MOSS 在这种情况下是会生成换行的。在我检查了 tokenizer 后发现了这一问题,请问应该如何解决呢?
你好,同样遇到了这个问题,请问有什么解决方法吗?
改了下tokenizer文件解决了。。。 moss_tokenizer.zip
你好,感谢你们的出色工作。
我在使用模型的
tokenizer
时遇到了一些问题。当我使用tokenizer
对包含连续的空格和特殊字符(如\n
,\t
等)进行encode
操作时,我发现tokenizer
会忽略周围有多个空格的特殊字符,或者会将这些特殊字符转为多个空格,这使得再次进行decode
操作后,文本中这些特殊字符会丢失。测试的代码如下:我按照这样测试其他模型的
tokenizer
时均未发现这个现象,其他模型的tokenizer
对文本经过encode
和decode
后均会还原为和原来一致的文本。这个问题是我对 MOSS 进行微调后发现的,我发现微调后的 MOSS 模型在生成代码时,当遇到代码中有换行加缩进的时候,微调模型从来不会生成换行,而原本的 MOSS 在这种情况下是会生成换行的。在我检查了
tokenizer
后发现了这一问题,请问应该如何解决呢?