在我的自定义词典中有这样一个专有名词"ens",在分词时却将“license”强行分成了“lic/ens/e”。这个要怎么处理这种情况?
rmbxnbpk1#
在词典里加上“license”,再给个比“ens”较高的数
smtd7mpg2#
我觉得jieba应该尊重英文词的边界,当自定义词典里起始或结束是英文字母,例如:jieba.add_word('w底')jieba.lcut("太好了w底出现了") # 这里"w底"的w不是英文词的连续,可以切分['太好了', 'w底', '出现', '了']jieba.lcut("wow底出现了") # 这里"w底"的w是英文词的连续,不应该切分['wo', 'w底', '出现', '了']
l5tcr1uw3#
@chunsheng-chen 那是不是得有个字典存英文单词,感觉会很大哦
zyfwsgd64#
不知道具体细节,但我猜测jieba对英文词的分解是基于类似"[a-zA-Z0-9]*"的模式,所以不需要英文字典,例如:jieba.lcut("this is a 1test1-abc2! call 911")['this', ' ', 'is', ' ', 'a', ' ', '1test1', '-', 'abc2', '!', ' ', 'call', ' ', '911']
如果能尊重英文词的自然分割方式,就不会出现上面的情况了: license是一个完整的词,wow是一个完整的词。
qoefvg9y5#
自定义词典中部分词含有日文的假名,但是分词出来好像全部无视了。
5条答案
按热度按时间rmbxnbpk1#
在词典里加上“license”,再给个比“ens”较高的数
smtd7mpg2#
我觉得jieba应该尊重英文词的边界,当自定义词典里起始或结束是英文字母,例如:
jieba.add_word('w底')
jieba.lcut("太好了w底出现了") # 这里"w底"的w不是英文词的连续,可以切分
['太好了', 'w底', '出现', '了']
jieba.lcut("wow底出现了") # 这里"w底"的w是英文词的连续,不应该切分
['wo', 'w底', '出现', '了']
l5tcr1uw3#
@chunsheng-chen 那是不是得有个字典存英文单词,感觉会很大哦
zyfwsgd64#
不知道具体细节,但我猜测jieba对英文词的分解是基于类似"[a-zA-Z0-9]*"的模式,所以不需要英文字典,例如:
jieba.lcut("this is a 1test1-abc2! call 911")
['this', ' ', 'is', ' ', 'a', ' ', '1test1', '-', 'abc2', '!', ' ', 'call', ' ', '911']
如果能尊重英文词的自然分割方式,就不会出现上面的情况了: license是一个完整的词,wow是一个完整的词。
qoefvg9y5#
自定义词典中部分词含有日文的假名,但是分词出来好像全部无视了。