gitabtion / BertBasedCorrectionModels

PyTorch impelementations of BERT-based Spelling Error Correction Models. 基于BERT的文本纠错模型,使用PyTorch实现。
Apache License 2.0
265 stars 43 forks source link

数据预处理的时候编码报错 #3

Closed kovnew closed 3 years ago

kovnew commented 3 years ago

初次运行模型在数据预处理B1_training.sgml的时候编码报错,文件是通过给的网址下的,有尝试在open的时候加入encoding='utf-8'但是没有作用。人工看了下文件也看不出问题出在哪..问题第一次似乎出在处理第5842行的时候。

<PASSAGE id="B1-0826-1">因為那是我的第一次去北京,我的朋友就是我的導遊。跟他我們一起去了北京特別的地方,必如說長城、故宮、天堂公園什麼的。</PASSAGE>

Traceback (most recent call last):
  File "/home/BertBasedCorrect/tools/train_csc.py", line 51, in <module>
    main()
  File "/home/BertBasedCorrect/tools/train_csc.py", line 28, in main
    preproc()
  File "/home/BertBasedCorrect/bbcm/data/processors/csc.py", line 185, in preproc
    for item in read_data(get_abs_path('datasets', 'csc')):
  File "/home/BertBasedCorrect/bbcm/data/processors/csc.py", line 116, in read_data
    for line in f:
  File "/home/anaconda3/envs/torch/lib/python3.7/codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 4867: invalid start byte

Process finished with exit code 1
gitabtion commented 3 years ago

你可以尝试一下 encoding='unicode_escape'。此外sighan15有3个id存在标注错误,代码未作处理,届时直接修改数据即可。

xubinxin123 commented 3 years ago

改成其他id,还是删除?我这边改为其他id后报错了

TEST: BATCH_SIZE: 16 CKPT_FN: B2-2427-1 针对于宠物出租我个人非常同意,因为省时间天天去照顾,而且省钱天天为牠吃,有出租宠物的机会当然非常好,想念牠的时候就可以带回家,然后不想养或着工作忙碌的时候没办法照顾,就可以送走。 针对于宠物出租我个人非常同意,因为省时间,而且省钱天天为牠吃,有出租宠物的机会当然非常好,想念牠的时候就可以带回家,然后不想养或着工作忙碌的时候没办法照顾,就可以送走。 Traceback (most recent call last): File "E:/nlpcode/BertBasedCorrectionModels-master/tools/train_csc.py", line 53, in main() File "E:/nlpcode/BertBasedCorrectionModels-master/tools/train_csc.py", line 30, in main preproc() File "E:\nlpcode\BertBasedCorrectionModels-master\bbcm\data\processors\csc.py", line 185, in preproc rst_items += proc_item(item, convertor) File "E:\nlpcode\BertBasedCorrectionModels-master\bbcm\data\processors\csc.py", line 42, in proc_item if ori_text[mistake['location']] in mistake['wrong']: IndexError: string index out of range

gitabtion commented 3 years ago

已于commit #10 解决