您的位置 首页 > 德语常识

bigdict德语词典,jieba中文分词详解

本篇文章给大家谈谈bigdict德语词典,以及jieba中文分词详解对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自然语言处理时,通常需要先进行分词。“结巴”分词是一个Python中文分词组件,可以对中文文本进行分词、词性标注、关键词抽取等功能,并且支持自定义词典。

在python2.x和python3.x均兼容,有以下三种:

1.全自动安装:easy_installjieba或者pipinstalljieba/pip3installjieba

2.半自动安装:先下载,网址为:http://pypi.python.org/pypi/jieba,解压后运行:pythonsetup.pyinstall

3.手动安装:将jieba目录放置于当前目录或者site-packages目录,

4.如果需要使用paddle模式下的分词和词性标注功能,请先安装paddlepaddle-tiny,pipinstallpaddlepaddle-tiny==1.6.1

先介绍主要的使用功能,再展示代码输出。jieba分词的主要功能有如下几种:

1.jieba.cut:该方法接受三个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;HMM参数用来控制是否适用HMM模型

2.jieba.cut_for_search:该方法接受两个参数:需要分词的字符串;是否使用HMM模型,该方法适用于搜索引擎构建倒排索引的分词,粒度比较细。

3.待分词的字符串可以是unicode或者UTF-8字符串,GBK字符串。注意不建议直接输入GBK字符串,可能无法预料的误解码成UTF-8,

4.jieba.cut以及jieba.cut_for_search返回的结构都是可以得到的generator(生成器),可以使用for循环来获取分词后得到的每一个词语或者使用

5.jieb.lcut以及jieba.lcut_for_search直接返回list

6.jieba.Tokenizer(dictionary=DEFUALT_DICT)新建自定义分词器,可用于同时使用不同字典,jieba.dt为默认分词器,所有全局分词相关函数都是该分词器的映射。

#encoding=utf-8\nimportjieba\n\njieba.enable_paddle()#启动paddle模式。0.40版之后开始支持,早期版本不支持\nstrs=["我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]\nforstrinstrs:\nseg_list=jieba.cut(str,use_paddle=True)#使用paddle模式\nprint("PaddleMode:"+'/'.join(list(seg_list)))\n\nseg_list=jieba.cut("我来到北京清华大学",cut_all=True)\nprint("FullMode:"+"/".join(seg_list))#全模式\n\nseg_list=jieba.cut("我来到北京清华大学",cut_all=False)\nprint("DefaultMode:"+"/".join(seg_list))#精确模式\n\nseg_list=jieba.cut("他来到了网易杭研大厦")#默认是精确模式\nprint(",".join(seg_list))\n\nseg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")#搜索引擎模式\nprint(",".join(seg_list))

其中下面的是输出结果。

【全模式】:我/来到/北京/清华/清华大学/华大/大学\n【精确模式】:我/来到/北京/清华大学\n【新词识别】:他,来到,了,网易,杭研,大厦(此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)\n【搜索引擎模式】:小明,硕士,毕业,于,中国,科学,学院,科学院,中国科学院,计算,计算所,后,在,日本,京都,大学,日本京都大学,深造添加自定义词典

jieba分词器还有一个方便的地方是开发者可以指定自己的自定义词典,以便包含词库中没有的词,虽然jieba分词有新词识别能力,但是自行添加新词可以保证更高的正确率。

jieba.load_userdict(filename)#filename为自定义词典的路径

在使用的时候,词典的格式和jieba分词器本身的分词器中的词典格式必须保持一致,一个词占一行,每一行分成三部分,一部分为词语,一部分为词频,最后为词性(可以省略),用空格隔开。下面其中userdict.txt中的内容为小修添加的词典,而第二部分为小修没有添加字典之后对text文档进行分词得到的结果,第三部分为小修添加字典之后分词的效果。

云计算5\n李小福2nr\n创新办3i\neasy_install3eng\n好用300\n韩玉赏鉴3nz\n八一双鹿3nz\n台中\n凱特琳nz\nEduTrust认证2000

test.py

importjieba\njieba.load_userdict("userdict.txt")\nimportjieba.possegaspseg\n\njieba.add_word('石墨烯')\njieba.add_word('凱特琳')\njieba.del_word('自定义词')\n\ntest_sent=(\n"李小福是创新办主任也是云计算方面的专家;什么是八一双鹿\\n"\n"例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类\\n"\n"「台中」正確應該不會被切開。mac上可分出「石墨烯」;此時又可以分出來凱特琳了。"\n)\nwords=jieba.cut(test_sent)\nprint('/'.join(words))\n\nprint("="*40)\n\nresult=pseg.cut(test_sent)\n\nforwinresult:\nprint(w.word,"/",w.flag,",",end='')\n\nprint("\\n"+"="*40)\n\nterms=jieba.cut('easy_installisgreat')\nprint('/'.join(terms))\nterms=jieba.cut('python的正则表达式是好用的')\nprint('/'.join(terms))\n\nprint("="*40)\n#testfrequencytune\ntestlist=[\n('今天天气不错',('今天','天气')),\n('如果放到post中将出错。',('中','将')),\n('我们中出了一个叛徒',('中','出')),\n]\n\nforsent,segintestlist:\nprint('/'.join(jieba.cut(sent,HMM=False)))\nword=''.join(seg)\nprint('%sBefore:%s,After:%s'%(word,jieba.get_FREQ(word),jieba.suggest_freq(seg,True)))\nprint('/'.join(jieba.cut(sent,HMM=False)))\nprint("-"*40)

输出结果:

之前:李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家/

加载自定义词库后:李小福/是/创新办/主任/也/是/云计算/方面/的/专家/

jieba中主要基于TF-IDF算法的关键词抽取,只有关键词抽取并且进行词向量化之后,才好进行下一步的文本分析,可以说这一步是自然语言处理技术中文本处理最基础的一步

jieba分词中含有analyse模块,在进行关键词提取时可以使用下列代码

当然也可以使用基于TextRank算法的关键词抽取:

这里举一个例子,分别使用两种方法对同一文本进行关键词抽取,并且显示相应的权重值。

jieba分词还可以进行词性标注,标注句子分词后每个词的词性,采用和ictclas兼容的标记法,这里只是简单的举一个栗子。

jieba.posseg.POSTokenizer(tokenizer=None)新建自定义分词器,tokenizer参数可指定内部使用的jieba.Tokenizer分词器。jieba.posseg.dt为默认词性标注分词器。标注句子分词后每个词的词性,采用和ictclas兼容的标记法。除了jieba默认分词模式,提供paddle模式下的词性标注功能。paddle模式采用延迟加载方式,通过enable_paddle()安装paddlepaddle-tiny,并且import相关代码。

importjieba\nimportjieba.possegaspseg\nwords=pseg.cut("我爱北京天安门")#jieba默认模式\njieba.enable_paddle()#启动paddle模式。0.40版之后开始支持,早期版本不支持\nwords=pseg.cut("我爱北京天安门",use_paddle=True)#paddle模式\nforword,flaginwords:\nprint('%s%s'%(word,flag))

输出:

我r\n爱v\n北京ns\n天安门ns

paddle模式词性标注对应表如下:

paddle模式词性和专名类别标签集合如下表,其中词性标签24个(小写字母),专名类别标签4个(大写字母)。

原理:将目标文本按行分隔后,把各行文本分配到多个Python进程并行分词,然后归并结果,从而获得分词速度的可观提升,基于python自带的multiprocessing模块,目前暂不支持Windows

用法:jieba.enable_parallel(4)#开启并行分词模式,参数为并行进程数jieba.disable_parallel()#关闭并行分词模式

importtime\nimportjieba\n\njieba.enable_parallel()\n\nurl=sys.argv[1]\ncontent=open(url,"rb").read()\nt1=time.time()\nwords="/".join(jieba.cut(content))\n\nt2=time.time()\ntm_cost=t2-t1\n\nlog_f=open("1.log","wb")\nlog_f.write(words.encode('utf-8'))\n\nprint('speed%sbytes/second'%(len(content)/tm_cost))

实验结果:在4核3.4GHzLinux机器上,对金庸全集进行精确分词,获得了1MB/s的速度,是单进程版的3.3倍。

注意:并行分词仅支持默认分词器jieba.dt和jieba.posseg.dt。

result=jieba.tokenize(u'永和服装饰品有限公司')\nfortkinresult:\nprint("word%s\\t\\tstart:%d\\t\\tend:%d"%(tk[0],tk[1],tk[2]))

word永和start:0end:2\nword服装start:2end:4\nword饰品start:4end:6\nword有限公司start:6end:10

搜索模式

result=jieba.tokenize(u'永和服装饰品有限公司',mode='search')\nfortkinresult:\nprint("word%s\\t\\tstart:%d\\t\\tend:%d"%(tk[0],tk[1],tk[2]))

word永和start:0end:2\nword服装start:2end:4\nword饰品start:4end:6\nword有限start:6end:8\nword公司start:8end:10\nword有限公司start:6end:10其他词典

有一些开源的自定义词典文件,可以直接使用

下载你所需要的词典,然后覆盖jieba/dict.txt即可;或者用jieba.set_dictionary('data/dict.txt.big')

bigdict德语词典和jieba中文分词详解的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023