0
点赞
收藏
分享

微信扫一扫

常见的分词方法接口+ jieba自定义领域内的词表然后加载词表进行分词


​​中文分词常见方法_mandagod的博客_中文分词​​

另外,我们收集了如下部分分词工具,供参考:

中科院计算所NLPIR ​​http://ictclas.nlpir.org/nlpir/​​

ansj分词器 ​​https://github.com/NLPchina/ansj_seg​​

哈工大的LTP ​​https://github.com/HIT-SCIR/ltp​​

清华大学THULAC ​​https://github.com/thunlp/THULAC​​

斯坦福分词器 ​​https://nlp.stanford.edu/software/segmenter.shtml​​

Hanlp分词器 ​​https://github.com/hankcs/HanLP​​

结巴分词 ​​https://github.com/yanyiwu/cppjieba​​

KCWS分词器(字嵌入+Bi-LSTM+CRF) ​​https://github.com/koth/kcws​​

ZPar ​​https://github.com/frcchang/zpar/releases​​

IKAnalyzer ​​https://github.com/wks/ik-analyzer​​

以及部分分词器的简单说明:

哈工大的分词器:主页上给过调用接口,每秒请求的次数有限制。

清华大学THULAC:目前已经有Java、Python和C++版本,并且代码开源。

斯坦福分词器:作为众多斯坦福自然语言处理中的一个包,目前最新版本3.7.0, Java实现的CRF算法。可以直接使用训练好的模型,也提供训练模型接口。

Hanlp分词:求解的是最短路径。优点:开源、有人维护、可以解答。原始模型用的训练语料是人民日报的语料,当然如果你有足够的语料也可以自己训练。

结巴分词工具:基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。

字嵌入+Bi-LSTM+CRF分词器:本质上是序列标注,这个分词器用人民日报的80万语料,据说按照字符正确率评估标准能达到97.5%的准确率,各位感兴趣可以去看看。

ZPar分词器:新加坡科技设计大学开发的中文分词器,包括分词、词性标注和Parser,支持多语言,据说效果是公开的分词器中最好的,C++语言编写。

关于速度:

由于分词是基础组件,其性能也是关键的考量因素。通常,分词速度跟系统的软硬件环境有相关外,还与词典的结构设计和算法复杂度相关。比如我们之前跑过字嵌入+Bi-LSTM+CRF分词器,其速度相对较慢。另外,开源项目 ​​https://github.com/ysc/cws_evaluation​​ 曾对多款分词器速度和效果进行过对比,可供大家参考。

最后附上公开的分词数据集

测试数据集

1、SIGHAN Bakeoff 2005 MSR,560KB

​​http://sighan.cs.uchicago.edu/bakeoff2005/​​

2、SIGHAN Bakeoff 2005 PKU, 510KB

​​http://sighan.cs.uchicago.edu/bakeoff2005/​​

3、人民日报 2014, 65MB

​​https://pan.baidu.com/s/1hq3KKXe​​

在使用bert_wwm的时候 要基于句子的分词 结巴的分词是 有一些的问题的因为不是针对某一领域的 所以要制作某一领域内的词表。

先来一个示例:

import jieba

print("|".join(jieba.lcut("滴滴代驾不靠谱,在司机端总是接不到单子。")))
print("|".join(jieba.lcut("今天空车返回,在路上遇到行政执法,平台不派单")))

jieba.load_userdict("/Users/didi/Downloads/关键词提取/dict.txt")
print("|".join(jieba.lcut("滴滴代驾不靠谱,在司机端总是接不到单子。")))
print("|".join(jieba.lcut("今天空车返回,在路上遇到行政执法,平台不派单。")))

常见的分词方法接口+ jieba自定义领域内的词表然后加载词表进行分词_人工智能

结巴内置的词表在哪里呢?

在结巴的库里面 :/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/jieba

把自己定义的词加进去就好了

常见的分词方法接口+ jieba自定义领域内的词表然后加载词表进行分词_中文分词_02

举报

相关推荐

0 条评论