简介:近年来,随着NLP技术的成熟,开源实现的分词工具越来越多,如Ansj、盘古分词等。在本文中,我们选择了界坝进行介绍和案例论证,主要基于以下考虑:
社区活跃。截止本文发布前,Jieba在Github上已经有17,670的star数目。社区活跃度高,代表着该项目会持续更新,实际生产实践中遇到的问题能够在社区反馈并得到解决,适合长期使用。功能丰富。Jieba其实并不是只有分词这一个功能,其是一个开源框架,提供了很多在分词之上的算法,如关键词提取、词性标注等。提供多种编程语言实现。Jieba官方提供了Python、C++、Go、R、iOS等多平台多语言支持,不仅如此,还提供了很多热门社区项目的扩展插件,如ElasticSearch、solr、lucene等。在实际项目中,进行扩展十分容易。使用简单。Jieba的API总体来说并不多,且需要进行的配置并不复杂,方便上手。如需转载,请联系大数据
解吧分词官网地址是:
https://github.com/fxsjy/jieba
它可以通过以下方式安装:
pip安装jieba
解吧分词结合了基于规则和基于统计的方法。
首先,我们基于前缀字典扫描单词图,这意味着字典中的单词是按照前缀包含的顺序排列的。比如字典里出现“上”,那么这个部分就会出现以“上”开头的词,比如“上海”,然后就会出现“上海”,这样就形成了一个层级的包含结构。
如果把一个词看作一个节点,把词与词之间的分词看作一个边,那么分词方案对应的是从第一个词到最后一个词的分词路径。
因此,基于前缀字典可以快速构建包含所有可能分词结果的有向无环图。该图包含多个分词路径。有向是指所有路径从第一个字开始,到最后一个字结束,无环是指节点不形成闭环。
基于标注语料库,动态规划的方法可以找到最大概率路径,并将其作为最终的分词结果。对于未知词,捷霸使用基于汉字的HMM模型,采用Viterbi算法进行推导。)
01解吧的三种分词模式
捷霸提供三种分词模式:
精确模式:试图将句子最精确地切开,适合文本分析。全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。以下是使用这三种模式的比较。
importjieba
Sent = '中文分词是文本处理中不可缺少的一步!'
seg_list = jieba.cut
打印)
seg_list = jieba.cut
打印)
seg_list = jieba.cut
打印)
seg_list = jieba.cut_for_search
打印。加入)
运行结果如下:
全模式:中文/分词/yes/text/text processing/here/processing/必不可少/必不可少/缺失/一步//
精确模式:中文/分词/是/文本处理/必不可少/一步/!
默认精确模式:中文/分词/是/文本处理/必不可少/一步/!
搜索引擎模式:中文/分词/yes/text/here/processing/text processing/必不可少/必不可少/一步/!
可以看出,在全模式和搜索引擎模式下,捷霸会打印出分词的所有可能性。一般可以直接使用精确模式,但在一些模糊匹配场景下,全模式或搜索引擎模式更合适。
接下来结合具体案例,我们来讲解一下解吧分词的具体用法。
02实战中高频词的提取
高频词一般是指文档中出现频率较高且并非无用的词,在一定程度上代表了文档的重点。对于单个文档,可以将其视为关键字。对于新闻等很多文献,我们可以把它们作为热词来寻找舆论焦点。
高频词的提取实际上是自然语言处理中的TF策略。主要有以下干扰项:
标点符号:一般标点符号无任何价值,需要去除。停用词:诸如“的”“是”“了”等常用词无任何意义,也需要剔除。以下根据搜狗实验室的新闻数据,使用洁霸分词提取高频词。
查看数据:
https://github.com/nlpinaction/learning-nlp
第三章/数据/新闻包括9个目录,都是txt文件,代表不同领域的新闻。
这些数据本质上是一个分类语料库。这里我们只选取一个类别,统计这个类别的高频词。
首先,读取数据:
defget_content:
withopen asf:
内容= ' '
forl inf:
l = l.strip
内容+= l
返回内容
该函数用于加载指定路径下的数据。
一种定义高频词统计的函数,其输入是一组词:
defget_TF:
tf_dic = {}
forw inwords:
tf_dic = tf_dic.get + 1
returnsorted,key = lambdax: x,reverse= True)
最后,主要功能如下。这里只列出前10个高频词:
defmain:
importglob
importrandom
importjieba
files = glob.glob
语料库=
sample_inx = random.randint)
split_words = list
打印
打印。连接)
Print 字的样本:'+str))
运行主功能,结果如下:
样本之一:中国卫生部一位官员24日表示,截至2005年底,全国各地已报告尘肺病病例60多万例,职业病防治总体形势严峻。卫生部副部长陈小红在同日举行的“全国职业卫生示范企业评选暨企业职业卫生交流大会”上说,我国每年发生急性职业中毒事故200多起,中毒人数数千人,直接经济损失达数百亿元。职业病患者总数大,发病率高,经济损失大,影响恶劣。卫生部24日公布,2005年,卫生部共收到30个省、自治区、直辖市各类职业病报告12212例,其中尘肺病报告9173例,占75.11%。陈小红说,矽肺病和煤工尘肺是我国主要的尘肺病,尘肺病的使用寿命正在缩短。在去年报告的尘肺病患者中,暴露时间最短不到3个月,平均发病年龄为40.9岁,最低发病年龄为20岁。陈小红说,执法不严,政府部门监管不力,企业生产水平低,技术和设备落后,是造成严重职业健康问题的原因。“但更重要的原因是,一些企业法律观念淡薄,严重缺乏社会责任,缺乏维护员工健康的强烈意识,员工的合法权益无法得到有效保障。”他说。为了提高企业对职业健康工作的重视程度,卫生部、国家安全生产监督管理局和中华全国总工会24日在北京评选出56家国家级职业健康示范企业,希望这些企业为社会推广职业病防治经验,督促其他企业做好职业健康工作,保障劳动者健康。
样本分词效果:中国卫生部/官方/4月/said/,/截至/2005/ end/,/中国/当地/报告/尘肺病/患者/累计/已/超过/60万例/,/职业病/总体/预防/严重情况/。/卫生部/副部长/部长/陈小红/上/日/召开/"/国家/职业/健康/示范/企业/许可证/暨/企业/职业/健康/通信/大会/"/上/说/、/中国/各种/急性/职业/中毒/事故/职业病/患者/总量/大/、/发病率/相对/高/、/经济损失/大/、/影响/坏/。/卫生部/4月/颁布/,/2005/年/卫生部/接收/全国/30个省/自治区/直辖市//各种职业病/陈小红/赛义德/、/矽肺/和/煤工/尘肺/是/中国/最/重大/尘肺/、/和/尘肺/发病率/工龄/in/缩短/。/去年/报告/尘肺/患者/中/短/粉尘暴露/时间/短缺/三个月/,/平均/发病/年龄/40/。/9/年/,/最低/发病/年龄/20/年/。/陈小红/赛义德/、/政府部门/执法不严/、/监管不力/、/企业/生产/水平/不高/、/技术装备/落后/等。/是/职业/卫生/问题/严重/原因/。///但是/更多/重要//原因/是/某些/企业/法律概念/弱/,/社会/责任/严重/缺勤/,/缺乏/维护/员工/健康/强/意识/,/员工/法律权利/不能/得到/"/他/说/。/为/改善/企业/关注/职业/健康/工作/,/卫生部/,/国家/安全/生产/监督管理/总局/和/中华全国总工会/24/日/在/北京/选择/外出/56/家/国家/职业/健康
样本的topK词:通过以上结果,我们可以发现,比如“的”、“说”之类的词占据了很高的位置,但这些词对于控制文章的重点意义不大。我们需要的是一个类似“尘肺”这样的词汇,可以简单概括重点。一个常见的方法是定制一个停用词典,并在遇到这些单词时将其过滤掉。
因此,我们可以对字典进行定制和优化,如下所示。
首先,将常用的停止词整理出来,写入文件。然后定义以下函数来过滤停止词:
defstop _ words:
带openasf:
return
接下来,将主函数第11行中的分词修改为:
split_words =
前10个高频词的结果如下:
样本的topK词:[、、、、、、、
捷霸要求的用户词典格式一般如下:
斩换3i
大数据5
Tom nz
公主坟
每个行为有三个部分:单词、词频、词性,用空隔开,顺序不能颠倒。字典文件需要utf8编码。
在提取高频词时,我们可以通过加载更合理的自定义词典来获得更好的效果。当然这里只演示了一个文档的高频词计算,多个文档的高频词抽取也可以按照这个思路进行统计计算。
关于作者:阿里巴巴的数据架构师涂明,对大数据、自然语言处理、Python、Java相关技术有深入的研究,积累了丰富的实践经验。
刘翔,安百里智能自然语言处理专家,主要研究知识地图、NLG等前沿技术,参与机器自动书写产品的研发和设计。
刘树春,齐牛云资深算法专家,NLP&光学字符识别方向负责人,主要负责NLP和光学字符识别相关项目的研究和落地。
本文摘自由出版商授权的《Python自然语言处理:核心技术与算法》。
Python自然语言处理实践扩展阅读
点击上图学习购买
转载请联系微信:多哥丸子
推荐语言:由阿里巴巴、千明略数据、秦牛云的资深专家、科学家撰写,从零基础掌握NLP的核心技术、方法论、经典算法。
▼
问:你有“口吃”吗?
转载/提交请联系:baiyu@hzbook.com
1.《结巴分词 入门中文NLP必备干货:5分钟看懂“结巴”分词(Jieba)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《结巴分词 入门中文NLP必备干货:5分钟看懂“结巴”分词(Jieba)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/1805751.html