fastNLP
fastNLP copied to clipboard
CWSPipe在处理全角数字的时候有bug
Describe the bug
原数据是这样的:
截流 进入 最后 冲刺 ( 附 图片 1 张 )
天然气 产量 达到 201亿立方米 。
处理后的id转换为汉字是这样的:
['截', '流', '进', '入', '最', '后', '冲', '刺', '(', '附', '图', '片', '<NUM>
', '>', '张', ')']
['天', '然', '气', '产', '量', '达', '到', '<NUM>
', '>', '亿', '立', '方', '米', '。']
To Reproduce
dataset_name = 'msra'
loader = CWSLoader(dataset_name=dataset_name)
data_bundle = loader.load()
data_bundle = CWSPipe().process(data_bundle)
print(data_bundle)
vocab = data_bundle.get_vocab('chars')
target_vocab = data_bundle.get_vocab('target')
data_bundle.rename_field('chars', 'words')
for i, data in enumerate(data_bundle.get_dataset('test')):
print(data.fields.get('raw_words'))
print(list(vocab.idx2word.get(i) for i in data.fields.get('words')))
if i > 500:
break
这是msra数据集的,其他数据集应该也会有这个问题
您可以通过在https://github.com/fastnlp/fastNLP/blob/0d0a6f746ac88a5555cd8c573552dee9552acae1/fastNLP/io/pipe/cws.py#L204 这一行之后加一个continue解决这个bug。我们会在之后的版本中更新这个问题。感谢您细致的观察。