现有的分词工具包概览

现有的分词工具包种类繁多,我选取了几个比较常见的开源中文分词工具包进行了简单的调查。有感兴趣的同学可以通过下表中的Giuthub链接进行详细地了解。

常见开源的中文分词工具

接下来,我具体介绍Jieba和IK Analyzer的使用。

一、jieba的分词使用

1、安装jieba

安装jieba

2、三种分词模式及比较

编写代码对 “古蜀青铜艺术与蜀绣非遗技艺结合创新的探讨——现代首饰设计” 进行分词

import jieba

seg_list1 = jieba.cut("古蜀青铜艺术与蜀绣非遗技艺结合创新的探讨——现代首饰设计", cut_all=True) # 全模式

seg_list2 = jieba.cut("古蜀青铜艺术与蜀绣非遗技艺结合创新的探讨——现代首饰设计", cut_all=False) # 精确模式

seg_list3 = jieba.cut_for_search("古蜀青铜艺术与蜀绣非遗技艺结合创新的探讨——现代首饰设计") # 搜索引擎模式

print("Full Mode: " + "/ ".join(seg_list1)) # 全模式

print("Default Mode: " + "/ ".join(seg_list2)) # 精确模式

print(", ".join(seg_list3)) # 搜索引擎模式

结果如下图所示:

分词结果1

可以看到精确模式与搜索引擎模式的分词结果比全模式更准确。

3、添加自定义词典

在对“互联网+背景下古代娱乐项目综合体验平台的设计与实现——基于微信小程序和Web网页”这一文本进行分词的时候,发现“互联网+”与“微信小程序”没有被正确分出来,如下图所示:

添加词典前

添加自定义词典的方式帮助jieba正确地分出这些新词。

①载入词典

用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径

自定义词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。

词频省略时使用自动计算的能保证分出该词的词频

新建自定义词典文件self_dict.txt

self_dict.txt

编写代码导入自定义词典,并重新分词

import jieba

jieba.load_userdict('/home/lly/self_dict.txt') #载入自定义词典

str='互联网+背景下古代娱乐项目综合体验平台的设计与实现——基于微信小程序和Web网页'

print("/".join(jieba.cut(str)))

添加自定义词典之后的分词结果如下图所示:

添加字典后

可以看到“互联网+”与“微信小程序”被完整地分了出来。

② 使用 add_word() 和 del_word() 动态修改词典

add_word使用示例

del_word使用示例

③使用 suggest_freq() 调节单个词语的词频,使其能(或不能)被分出来

suggest_freq使用示例

4、关键词提取

jieba中有两种抽取关键词的方法,一种是基于 TF-IDF 算法的关键词抽取,另外一种是基于 TextRank 算法的关键词抽取。

编写代码查看两种关键词提取算法的区别:

import jieba

import jieba.analyse

s = "1933年巴黎中国美展上的古画和他者视野,古蜀青铜艺术与蜀绣非遗技艺结合创新的探讨——现代首饰设计,迈克尔·苏立文1940年代在四川大学任职期间艺术交游与活动研究,基于高频金融市场订单流的极端事件研究以及相应交易策略开发"

for x, w in jieba.analyse.extract_tags(s, withWeight=True): #基于 TF-IDF 算法的关键词抽取

print('%s %s' % (x, w))

for x, w in jieba.analyse.textrank(s, withWeight=True): #基于 TextRank 算法的关键词抽取

print('%s %s' % (x, w))

结果如下图所示:

两种算法结果比较

可以看到两者的差别还是比较大的。

TF-IDF(term frequency - inverse document frequency) 是一种统计方法,可以用来评估一个词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数呈正比增加,但同时也会随着它在语料库中出现的频率呈反比下降

TextRank是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。

两种算法的一个区别就是TF-IDF算法需要依赖于语料库,但是TextRank不需要。

5、词性标注

jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。jieba.posseg.dt 为默认词性标注分词器。

标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。

词性标注结果

二、IK Analyzer的分词使用

1、检查java环境

输入指令:java -version

java -version

2、检查solr

输入bin/solr start -force启动服务

在浏览器地址栏输入http://云主机IP:端口号(默认为8983)/solr,出现以下界面则solr可用

solr界面

3、添加IK Analyzer中文分词工具包

下载对应版本的IK Analyzer,下载地址,仅供参考

解压后的文件

将两个jar包添加到solr文件目录下的/server/solr-webapp/webapp/WEB-INF/lib文件夹中

新建core

输入bin/solr create -c lycore -p 8983 -force新建一个名为lycore的core

修改配置文件

在server/solr/lycore/conf文件夹中的managed-schema文件中加入以下代码:

重启solr

输入bin/solr restart -forc重启solr

4、开始分词

在浏览器中打开分词窗口

打开分词窗口

输入文本进行分词

对“古蜀青铜艺术与蜀绣非遗技艺结合创新的探讨”进行分词

分词结果:

古 /蜀 /青铜 /艺术 /蜀绣 /非 /遗 /技艺 /结合 /创新 /探讨

分词结果

可以看到“非遗技艺”没有被正确分出来。

5、设置自定义词典

将文件夹下的IKAnalyzer.cfg.xml , ext.dic和stopword.dic 三个文件 复制到/server/solr-webapp/webapp/WEB-INF/classes 目录下,并在 ext.dic中添加自定义词典,

添加“非遗技艺”

重启solr,重新分词

重新分词结果

可以看到非遗技艺被成功分了出来。

三、词频统计与词云生成

1、准备待分词的文本

正好最近教务处公布了今年的大创立项名单,我就想要提取项目名称中的关键字并进行词频统计,来看看今年大家的研究重点。

提取《2018年四川大学“大学生创新创业训练计划”立项项目名单》里的项目名称,保存为proTitle.csv文件.

待分词文本部分截图

2、准备自定义词典

因为项目名称中涉及到很多专业名词,为了提高分词的正确率,需要在自定义词典中加入这些词。我找了一些专业名词的词库,将里面的词都加入了自定义词典文件self_dict.txt

使用的词库

3、准备停用词表

因为项目名称中包含很多“的”、“一个”等意义不大的连词、数量词,因此将这些词作为停用词。我参考了几个常见的停用词表,制作了本次的停用词表stop_words.data

停用词表

4、编写代码并运行

import jieba

import codecs

import csv

from jieba import analyse

analyse.set_stop_words("stop_words.data") #引入停用词表

jieba.load_userdict('self_dict.txt') #载入自定义词典

#读入待分词文件

f = open('2018dc.csv','r')

myfile=f.read()

#分词并将结果写入文件

seg_list = jieba.cut(myfile, cut_all = False)

sentence = '/' .join(seg_list)

f = codecs.open('result1.txt','w','utf-8')

f.write(sentence)

f.close()

#提取前200个关键词并写入文件

keyWord = analyse.extract_tags(myfile, topK=100, withWeight=True)

csv=open('result2.csv','w')

for wd, weight in keyWord:

print int(weight*1000),wd

csv.write(wd.encode('utf-8')+','+str(weight*1000)+'\n')

分词结果

分词结果部分截图

关键抽取即按词频排序结果

5、生成词云

生成词云的方式有很多。基于python的wordcloud模块完成分词、设置停用词表、绘制图云等一系列功能。

因为前面已经完成了关键词的抽取与权重排序,因此在这里直接采用在线词云生成工具,比如易词云、图悦等,操作很简单。

2018大创项目名称词云

6、小结

从以上词云图中可以看出,今年的大创立项名单中出现得比较多的词汇是“制备”、“机制”、“系统”、“平台”、“分析”等,这些词大多是与医学、理学、工学的实验相关的。“调查”、“现状”这些词更有可能与人文社科相关的研究有关。

ik分词和jieba分词哪个好_JiebaIK Analyzer——分词工具的比较与使用相关推荐

  1. pythonjieba分词_$好玩的分词——python jieba分词模块的基本用法

    jieba(结巴)是一个强大的分词库,完美支持中文分词,本文对其基本用法做一个简要总结. 安装jieba pip install jieba 简单用法 结巴分词分为三种模式:精确模式(默认).全模式和 ...

  2. 当下流行的中文分词模块jieba

    当前流行的中文分词模块包括 Jieba 分词:Jieba 是用 Python 实现的开源中文分词库,支持三种分词模式:精确模式.全模式和搜索引擎模式,并且支持自定义词典. THULAC 分词:THUL ...

  3. 3、Python 中文分词组件Jieba

    在自然语言处理中,分词是一项最基本的技术.中文分词与英文分词有很大的不同,对英文而言,一个单词就是一个词,而汉语以字为基本书写单位,词语之间没有明显的区分标记,需要人为切分.现在开源的中文分词工具有 ...

  4. ik分词和jieba分词哪个好_Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考...

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...

  5. ik分词和jieba分词哪个好_Python 中文 文本分析 实战:jieba分词+自定义词典补充+停用词词库补充+词频统计...

    最近项目需要,实现文本的词频分析,折腾了几天才完成任务,有点成就感,最后整理总结一下这部分的内容,希望更多同僚受益. 一.使用前准备 环境:Python3.6 安装结巴:pip install ji ...

  6. 码书:入门中文NLP必备干货:5分钟看懂“结巴”分词(Jieba)

    导读:近年来,随着NLP技术的日益成熟,开源实现的分词工具越来越多,如Ansj.盘古分词等.在本文中,我们选取了Jieba进行介绍和案例展示,主要基于以下考虑: 社区活跃.截止本文发布前,Jieba在 ...

  7. 第02课:简单好用的中文分词利器 jieba 和 HanLP

    前言 从本文开始,我们就要真正进入实战部分.首先,我们按照中文自然语言处理流程的第一步获取语料,然后重点进行中文分词的学习.中文分词有很多种,常见的比如有中科院计算所 NLPIR.哈工大 LTP.清华 ...

  8. Tensorflow2.0(2):中文分词(jieba)

    目录 中文分词的难点 中文分词方法 简单使用 三种分词模式 结巴分词使用 结巴分词使用 目前中文分词一共有三种方式进行实现: jieba (结巴分词) THULAC(清华大学自然语言处理与社会人文计算 ...

  9. jieba(结巴)—— Python 中文分词

    学术界著名的分词器: 中科院的 ICTCLAS,代码并不十分好读 哈工大的 ltp, 东北大学的 NIU Parser, 另外,中文 NLP 和英文 NLP 不太一致的地方还在于,中文首先需要分词,针 ...

最新文章

  1. 移动端丨-webkit-overflow-scrolling:touch属性导致页面卡住
  2. java实现用户登录注册功能(用集合框架来实现)
  3. Vivado中ASYNC_REG命令讲解
  4. opencv中traincascade训练分类器
  5. 手动配置WCF宿主的.config文件遇到的几种错误
  6. SAP Commerce Cloud Storefront 框架选型:Accelerator 还是 Spartacus?
  7. 服务器损坏mysql修复_云服务器mysql数据库损坏修复mysql
  8. 关于关闭Eclipse的控制台自动跳出
  9. sicily 1295. 负权数
  10. 白话空间统计三十:地统计学(2)前提假设
  11. 未能连接到驱动人生服务器,更新显卡驱动提示“无法连接到Nvidia”,驱动人生来解决。...
  12. win10找回自带的windows照片查看器——打开jpg、png、gif、psd其他格式的图片
  13. ARM启动流程及启动代码分析
  14. SWUST OJ533你的QQ多少级了?
  15. 怎么修改服务器上的分数,在服务器上设置 WinSAT 分数
  16. 清华“差生”10年奋斗经历,只写事业,不写女人
  17. @Qualifier 标签
  18. dreamweaver (dw)cc 2017
  19. HTML易烊千玺网页,易烊千玺弟弟破世界纪录,被扒两天就被人打破,认证网站遭质疑...
  20. 东南大学机械学院考研经验

热门文章

  1. win10设置关机计划
  2. 东八区先生的AI公司有多离谱?
  3. docker geovis_GitHub - ThinkBlue1991/cronjob-operator
  4. 天猫店群引领互联网创业项目,一次投资做天猫,月月回报三十万
  5. 在网络暴力面前,如何避免泄漏过多的个人信息
  6. 职场7个建议 轻松抛弃同龄人
  7. MFC Windows 程序设计[160]之频谱分析(附源码)
  8. Synchronized vs SyncRoot
  9. bash 与 shell脚本编写指南
  10. 【Two Passes】链接汇总