这么多分词器,我如何选择比较?
在常见的分词器比较中发现,基于深度学习的分词器效果最好,其中,选择了hanlp
hanlp
轻量试用
通过api的方式调用官方服务,测试效果好了,再折腾本地版本(1分钟2次,每次最多32条句子)。
from hanlp_restful import HanLPClient
HanLP = HanLPClient('https://hanlp.hankcs.com/api', auth=None, language='zh')
han_rets = HanLP.parse(asr_outputs) #support string or list input
ner相关的有3个,'ner/msra','ner/pku', 'ner/ontonotes',msra是微软数据集,目前看效果最好。pku和ontonotes也能补充一点缺失的,因此,可以并集处理。
本地部署
安装hanlp,才能支持2.x版本 (不是安装pyhanlp,目前仅支持1.x版本)
pip install "hanlp[full]" (full是增加了tensorflow的安装)
加载模型可选值,参考:pretrained — HanLP Documentation
目前测试,发现和官网API能力一样的是
hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ERNIE_GRAM_ZH
但是实测electra的 hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_BASE_ZH 、效果更好
import hanlp
HanLP = hanlp.load(hanlp.pretrained.mtl.CLOSE_TOK_POS_NER_SRL_DEP_SDP_CON_ELECTRA_BASE_ZH)
han_rets = HanLP(["深圳市宝安区广深公路与星业二路交叉路口杰彭商业广场"])