中文分词方法和软件工具汇总笔记 | 您所在的位置:网站首页 › 在线分词工具 › 中文分词方法和软件工具汇总笔记 |
本文与前一篇文章《自然语言处理NLP知识和产品的笔记》属于同一个系列,前文已经提到,这是GooSeeker团队在开发中文文本分析软件新版本过程中的学习笔记,所以,再次提醒,下面所整理的内容,尤其是概念间的关系,可能是不严谨的。整个内容肯定是不完备的,只是共享给大家作为探索的线索。 在中文文本分析领域我已经工作了10多年,结合公司的网络爬虫产品,完成了一系列解决方案,比如,舆情分析、消费者心理行为分析(消费者洞察)、法规和政策分析、智慧城市数据平台建设等等。在这10多年来,如果不断给中文分词工具做排行榜的话,发现位次变化很快。所以,在软件工程项目实施中,要不断观察新方法、新软件。在某个时期最优秀的软件很快就被其他软件超越了,超越和前进是好的,但是,有时候是很遗憾的,因为往往是那个分词工具的发布者不再持续维护了。 文章最后还整理汇总了一些常用的词云图工具,觉得有用的可以收藏一下。 1.1,分词算法 有多种分词算法,会得到不同的分词结果,会对下游的软件产生影响 1.2,未登录词识别 如何识别未登录词 OOV 1.3,歧义 组合型歧义;交集型歧义;真歧义;2,分词方法2.1,基于词典 (1)正向最大匹配法 FMM:对文本从左至右切出最长的词 (2)逆向最大匹配法 BMM:对文本从右至左切出最长的词 (3)N-最短路径方法 (4)双向匹配分词法:由左到右、由右到左两次扫描 缺点:对歧义和未登录词处理不好。 2.2,机器学习 (1)隐马尔科夫模型 HMM (2)条件随机场模型 CRF (3)最大熵模型 ME (4)N元文法模型 N-gram (5)支持向量机 SVM (6)深度学习 基于神经网络的分词器textCNN序列到序列模型 seq2seq注意力机制 Attention MechanismBERT模型缺点:训练集需要大量人工标注语料、整理统计特征。 优点:不仅考虑词频,还考虑上下文,可有效消除歧义、识别未登录词。 2.3,其他相关知识 (1)词向量转换/特征降维 词嵌入 Word2Vec连续词袋模型 CBOWSkip-gram子词嵌入 FastText全局向量词嵌入 GloVe(2)TF-IDF TF 表示某个词语在一个语料中出现的频次;DF 表示在全部语料中,共有多少个语料出现了这个词,IDF 是DF的倒数(取log);TF- IDF 越大,表示这个词越重要。 常用于关键词提取。 (3)TextRank 根据词语之间的邻近关系构建网络,通过PageRank迭代计算出词语的排名; 常用于关键词提取、自动摘要提取。 3,分词软件和云服务3.1,开源或者免费 (1)Hanlp分词器 hankcs/HanLPgithub.com最短路径分词,有中文分词、词性标注、新词识别、命名实体识别、自动摘要、文本聚类、情感分析、词向量word2vec等功能,支持自定义词典; 采用HMM、CRF、TextRank、word2vec、聚类、神经网络等算法; 支持Java,C++,Python语言; (2)结巴分词 yanyiwu/cppjiebagithub.com找出基于词频的最大切分组合,有中文分词、关键词提取、词性标注功能,支持自定义词典; 采用HMM模型、 Viterbi算法; 支持Java,C++,Python语言; (3)哈工大的LTP HIT-SCIR/ltpgithub.com有中文分词、词性标注、句法分析等功能; 商用需付费;调用接口,每秒请求的次数有限制; 编写语言有C++、Python、Java版; (4)清华大学THULAC thunlp/THULACgithub.com有中文分词、词性标注功能; 有Java、Python和C++版本; (5)北京大学 pkuseg lancopku/pkuseg-pythongithub.com支持按领域分词、有词性标注功能、支持用户自训练模型; 基于CRF模型、自研的ADF训练方法; 有python版本; (6)斯坦福分词器 The Stanford Natural Language Processing Groupnlp.stanford.edu支持多语言分词包括中英文,提供训练模型接口,也可用已有模型,但速度较慢; Java实现的CRF算法; (7)KCWS分词器 koth/kcwsgithub.com有中文分词、词性标注功能,支持自定义词典; 采用word2vec、Bi-LSTM、CRF算法; (8)ZPar frcchang/zpargithub.com有中文、英文、西班牙语分词、词性标注; C++语言编写; (9)IKAnalyzer wks/ik-analyzergithub.com有中文分词功能,支持自定义词典; (10)Jcseg 狮子的魂/jcseggitee.com有中文分词、关键词提取、自动摘要、词性标注、实体识别等功能,支持自定义词典; 基于mmseg、textRank、BM25等算法; (11)FudanNLP FudanNLP/fnlpgithub.com中文分词 词性标注 实体名识别 关键词抽取等; (12)SnowNLP isnowfy/snownlpgithub.com有中文分词、词性标注、情感分析、文本分类、提取关键词等功能; 基于HMM、Naive Bayes、TextRank、tf-idf等算法; Python类库; (13)ansj分词器 NLPchina/ansj_seggithub.com有中文分词、人名识别、词性标注、用户自定义词典等功能; 基于n-Gram+CRF+HMM算法; (14)NLTK nltk/nltkgithub.com擅长英文分词,也支持中文分词处理,但建议先用其他分词工具对中文语料分词,再用它的处理功能; python库; (15)庖丁解牛 https://code.google.com/p/paodingcode.google.com3.2,其他 (1)中科院计算所NLPIR 具有分词、词性标注、新词识别、命名实体识别、情感分析、关键词提取等功能,支持自定义词典; (2)腾讯文智 (3)BosonNLP (4)百度NLP (5)阿里云NLP (6)新浪云 (7)盘古分词 具有中英文分词功能,支持自定义词典; 4,词云图制作工具(1)Wordart (2)Tagul (3)Wordle (4)WordItOut (5)Tagxedo (6)Tocloud (7)图悦 (8)office的PPT插件Pro Word Cloud (9)BDP个人版 参考资料:有哪些比较好的中文分词方案? Pan Yang:五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg,THULAC, HanLP 无猫之徒:中文分词算法简介 湖心小笨酸:中文分词(CWS)综述 灰灰:干货 | 史上最全中文分词工具整理 老宋的茶书会:深度学习时代,分词真的有必要吗 如何生成关键词云图? |
CopyRight 2018-2019 实验室设备网 版权所有 |