Closed wencan closed 9 months ago
BERT tokenizer将上文中的每个韩文拆成了多个subword:
['[CLS]', '左', '右', '捕', '盗', '厅', '以', '[UNK]', '邪', '学', '罪', '人', '安', '敦', '伊', ',', '吴', '伯', '多', '禄', ',', '闵', 'ᄋ', '##ᅲ', '##ᄋ', '##ᅡ', '##ᄋ', '##ᅮ', '##ᆨ', '##ᄀ', '##ᅡ', ',', '黄', '锡', '斗', ',', '张', '周', '基', ',', '押', '付', '公', '忠', '水', '营', ',', '枭', '警', '[UNK]', '启', '。', '[SEP]']
已经修复。
另外,』的问题可以如下解决:
import hanlp
tok = hanlp.load(hanlp.pretrained.tok.FINE_ELECTRA_SMALL_ZH)
tok.config.transform._table['『'] = '"'
tok.config.transform._table['』'] = '"'
sent = '左右捕盜廳以『邪學罪人安敦伊、吳伯多祿、閔유아욱가、黃錫斗、張周基,押付公忠水營,梟警』啓。'
print(tok(sent))
@hankcs 』的问题是我无意中发现的 刚刚用wikisource的文本,试了下,出现这问题的文本很多。比如:
三藏道:「悟空,憑你怎麼說好?」行者道:「依老孫說,你在這裡也好。自古道『千里姻緣似線牽』哩,那裡再有這般相應處?」三藏道:「徒弟,我們在這裡貪圖富貴,誰去西天取經?卻不望壞了我大唐之帝主也?」太師道:「御弟在上,微臣不敢隱言。我王旨意,原只教求御弟為親,教你三位徒弟赴了會親筵宴,發付領給,倒換關文,往西天取經去哩。」行者道:「太師說得有理。我等不必作難,情願留下師父,與你主為夫。快換關文,打發我們西去。待取經回來,好到此拜爺娘,討盤纏,回大唐也。」那太師與驛丞對行者作禮道:「多謝老師玉成之恩。」八戒道:「太師,切莫要口裡擺菜碟兒。既然我們許諾,且教你主先安排一席,與我們吃鍾肯酒,如何?」太師道:「有有有,就教擺設筵宴來也。」那驛丞與太師歡天喜地,回奏女主不題。
还不清楚其它符号是否会出现这问题 而且线上演示是ok的
@hankcs https://www.compart.com/en/unicode/category/Pe 经过测试,这类别下的字符 比较普遍地存在这个问题 有的文本,单行分词不出错,但批量分词错了 (这个问题我在其它程序中也遇到过) 用.config.transform._table['『'] = '"'也的确可以临时补救 具体可以用wikisource中的中文数据测试下
有问题的文本都能在在线演示上正确分词 求问怎么获得在线演示的两个模型
Describe the bug 原文: 左右捕盜廳以『邪學罪人安敦伊、吳伯多祿、閔유아욱가、黃錫斗、張周基,押付公忠水營,梟警』啓。 最后的』符号处 在线演示都没问题 但线下代码FINE_ELECTRA_SMALL_ZH和COARSE_ELECTRA_SMALL_ZH,都把“』啓”作为一个词了
文本来自wikisource
另外,FINE_ELECTRA_SMALL_ZH 把“유아욱가”(朝鲜文?)四个字符,变成了 '유', '아', '욱', '욱', '가'五个字符。这是我第二次接触涉及朝鲜文的处理,每次都觉得处理这门文字的学问奥妙无穷。如果hanlp认为外语的分词问题可以忽略,就当没看见这条吧。 但』啓是中文。
Debian GNU/Linux 12 (bookworm) Linux kernel 6.1.0-18-amd64 Python 3.8.18 hanlp 2.1.0b55