中文分词简单理解及 jieba的简单运用

汉语分词中的基本问题:分词规范,歧义的切分和未登录词的识别

分词规范:(一般也就是指“词”的概念的纠缠不清的问题,),一方面来源于 单字词和词素之间的划界,另一方面就是词和短语(词组)的划界问题

歧义切分问题

  交集型切分歧义:汉字串AJB  其中 AJ,JB同时为词,此时的J 称作交集串

        例如:结合成,   “结合”, “合成”分别为词,此时的“合”则为交集串

  链长的概念:一个交集型切分歧义所拥有的交集串的集合成为交集串链,他的个数成为链长

  组合型切分歧义:汉字串AB同时满足,A,B,AB同时为词,

        例如:“起身”分别有两种不同的切分,a: 他站|起|身|来,b:他明|天|起身|去北京

  多义组合型切分歧义:汉字串AB,满足:1:A,B,AB同时为词,2:问题中至少存在一个上下文语境C,在语境c的约束下A,B在语法和语义上都成立

未登录词

  为登陆词又称为生词,一个是指已有的词表中没有收录的词,二是指已有的训练语料中未曾出现的词

  一般分为几类:(1)、新出现的普通词汇,(2)、专有名词,(3)、专业名词和研究领域名称,(4)、其他专用名词

jieba(“结巴”)的简单运用

jieba分词简介:

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

结巴分词的三种模式:
        精准模式:试图将句子最精确地切开,适合文本分析
        全模式:吧句子中所有的可以成词的词语都扫描出来,但不能解决歧义
        搜索引擎模式:在精准模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

   jieba的主要功能:

    1、jieba.cut(sentence, cut_all=False, HMM=True)    sentence是要分词的语句,cut_all是是否采用全模式,false为精准模式,HMM是控制是否适用HMM模型

    2、jieba.cut_for_search(sentence, HMM=True)   参数就不细说,该方法适用于搜索引擎模式,分词力度比较细

    3、jieba.lcut()

    4、jieba.lcut_for_search()

    5、

    备注:cut,cut_for_search返回的是一个生成器对象可以用for循环遍历,lcut, lcut_for_search返回的列表可以直接输出使用

import jieba

a = jieba.cut(‘中华人民共和国成立了‘, cut_all=False, HMM=True)
print(‘/‘.join(a))
b = jieba.cut_for_search(‘中华人民共和国成立了‘)
print(‘/‘.join(b))
c = jieba.lcut(‘中华人民共和国成立了‘, cut_all=False, HMM=True)
print(c)
d = jieba.lcut_for_search(‘中华人民共和国成立了‘)
print(d)

Loading model cost 0.975 seconds.
a: 中华人民共和国/成立/了
b: 中华/华人/人民/共和/共和国/中华人民共和国/成立/了
Prefix dict has been built successfully.
c: [‘中华人民共和国‘, ‘成立‘, ‘了‘]
d: [‘中华‘, ‘华人‘, ‘人民‘, ‘共和‘, ‘共和国‘, ‘中华人民共和国‘, ‘成立‘, ‘了‘]

Process finished with exit code 0

利用jieba进行关键词提取:

  e = jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=(), withFlag=False)

      sentence: 语句,topk: 返回权重最大的前20个词(默认就是20),withWeight:True返回关键词的权重值,withflag:仅包含指定词性的词 

import jieba
import jieba.analyse
import codecs

file = codecs.open(‘D:\\PycharmProjects\\jieba\\data\\北京五环双新工业有限公司与北京中赛国信科技发展有限责任公司合..._UTF-8.txt‘, encoding=‘utf-8‘)
word = file.read()
e = jieba.analyse.extract_tags(word, topK=20, withWeight=False, allowPOS=(), withFlag=False)
print(e)

e: [(‘中赛‘, 0.46317736484181693), (‘五环‘, 0.44161073871943884), (‘双新‘, 0.4152624650305945), (‘国信‘, 0.3012275175559853), (‘500‘, 0.12777306616325984), (‘原审‘, 0.11621335229458918), (‘发票‘, 0.09795034552924514), (‘合同‘, 0.0951704406034068), (‘事实‘, 0.07558163070853709), (‘万元‘, 0.06746161603875751), (‘判决‘, 0.06737630140485637), (‘损失‘, 0.06716787270968604), (‘另案‘, 0.0649998287000668), (‘项目‘, 0.06197313122931195), (‘条码‘, 0.05947902485014028), (‘付款‘, 0.05895460144782899), (‘青苗‘, 0.05576455176593186), (‘二维‘, 0.055311807331743484), (‘解除‘, 0.0535768954555177), (‘借条‘, 0.052659547265731466)]

  备注:文本格式必须为utf-8 windows下中文为gbk 需要进行处理(我的问题是一个法院的判决书)

  下面用textrank进行关键词提取

import jieba
import jieba.analyse
import codecs
file = codecs.open(‘D:\\PycharmProjects\\jieba\\data\\北京五环双新工业有限公司与北京中赛国信科技发展有限责任公司合..._UTF-8.txt‘, encoding=‘utf-8‘)
word = file.read()
e = jieba.analyse.extract_tags(word, topK=5,  withWeight=True)
file.close()
print(e)
file = codecs.open(‘D:\\PycharmProjects\\jieba\\data\\北京五环双新工业有限公司与北京中赛国信科技发展有限责任公司合..._UTF-8.txt‘, encoding=‘utf-8‘)
word = file.read()
f = jieba.analyse.textrank(word, topK=5, withWeight=True)
print(f)
file.close()

e: [(‘中赛‘, 0.46317736484181693), (‘五环‘, 0.44161073871943884), (‘双新‘, 0.4152624650305945), (‘国信‘, 0.3012275175559853), (‘500‘, 0.12777306616325984)]
f: [(‘中赛‘, 1.0), (‘项目‘, 0.4889681449083135), (‘损失‘, 0.3692275287965435), (‘事实‘, 0.350037544658924), (‘判决‘, 0.3236495086380529)]

 

  e,f分别为两种关键词提取方法的权重对比

jieba分词的词性标注

import jieba.posseg as pseg

word = pseg.cut(‘中华人民共和国成立了‘, HMM=False)
for k, w in word:
    print(k, w)

中华人民共和国 ns
成立 v
了 ul

原文地址:https://www.cnblogs.com/bianjing/p/10204855.html

时间: 2024-09-29 20:31:25

中文分词简单理解及 jieba的简单运用的相关文章

Spark 大数据中文分词统计(三) Scala语言实现分词统计

Java版的Spark大数据中文分词统计程序完成之后,又经过一周的努力,把Scala版的Spark 大数据中文分词统计程序也搞出来了,在此分享给各位想学习Spark的朋友. 如下是程序最终运行的界面截图,和Java版差别不大: 如下是Scala工程结构: 当你在工程主类文件WordCounter.scala上单击右键,选择Run As Scala Application: 然后选择唐诗宋词进行分词统计,就会出现前面显示的分词结果. 工程代码已经上传CSDN:http://download.csd

python下结巴中文分词

http://blog.csdn.net/pipisorry/article/details/45311229 jieba中文分词的使用 import jieba sentences = ["我喜欢吃土豆","土豆是个百搭的东西","我不喜欢今天雾霾的北京", 'costumer service'] # jieba.suggest_freq('雾霾', True) # jieba.suggest_freq('百搭', True) words =

PHP中文分词的简单实现

对于中文搜索引擎来说, 中文分词是整个系统最基础的部分之一, 因为目前基于单字的中文搜索算法并不是太好. 当然, 本文不是要对中文搜索引擎做研究, 而是分享如果用 PHP 做一个站内搜索引擎. 本文是这个系统中的一篇. 我使用的分词工具是中科院计算所的开源版本的 ICTCLAS. 另外还有开源的 Bamboo, 我随后也会对该工具进行调研. 从 ICTCLAS 出发是个不错的选择, 因为其算法传播比较广泛, 有公开的学术文档, 并且编译简单, 库依赖少. 但目前只提供了 C/C++, Java

简单中文分词系统的实现

中文分词系统工程报告 一.研究背景 随着互联网的快速发展,信息也呈了爆炸式的增长趋势.在海量的信息中,我们如何快速抽取出有效信息成为了必须要解决的问题.由于信息处理的重复性,而计算机又善于处理机械的.重复的.有规律可循的工作,因此自然就想到了利用计算机来帮助人们进行处理.在用计算机进行自然语言处理时,主要使用的还是基于统计的方法,并且实际的使用中取得了不错的效果. 因为中文句子的特点——没有分隔符来分离句子中的词,所以在进行中文处理的时候,首先要做的就是如何对中文语句进行分词.这也是本次工程所要

30.IK中文分词器的安装和简单使用

在之前我们学的都是英文,用的也是英文的standard分词器.从这一节开始,学习中文分词器.中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中文字符一个一个的切割开来,比如说中国人 --> 中 国 人 在中方搜索引擎领域,比较成熟和流行的,就是ik分词器. 一.在elasticsearch中安装ik中文分词器 (1)git clone https://github.com/medcl/elasticsearch-analysis-ik (

.net 的一个分词系统(jieba中文分词的.NET版本:jieba.NET)

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

jieba中文分词的.NET版本:jieba.NET

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

(转)jieba中文分词的.NET版本:jieba.NET

简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以到它的在线演示站点体验下(注意第三行文字). .NET平台上常见的分词组件是盘古分词,但是已经好久没有更新了.最明显的是内置词典,jieba的词典有50万个词条,而盘古的词典是17万,这样会造成明显不同的分词效果.另外,对于未登录词,jieba“采用了基于汉字成词能力的HMM模型,使用了Viterb

中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)

2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷.另外,jieba库支持的文本编码方式为utf-8. Jieba库包含许多功能,如分词.词性标注.自定义词典.关键词提取.基于jieba的关键词提取有两种常用算法,一是TF-IDF算法:二是TextRank算法.基于jieba库的分词,包含三种分词模式: 精准