extra_dict · jieba3k · 米研/ jieba - GitCode
文章推薦指數: 80 %
"结巴"中文分词:做最好的Python 中文分词组件 "Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation ...
打开侧边栏
米研jieba
仓库
J
jieba
项目概览
米研/jieba
与Fork源项目一致
Fork自
mirrors/fxsjy/jieba
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jieba
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
jieba3k
切换分支/标签
查找文件
克隆
通过SSHClone项目
通过HTTPSClone项目
下载源代码
zip
tar.gz
tar.bz2
tar
复制HTTPS克隆URL
复制SSH克隆[email protected]:A_miyan/jieba.git
复制HTTPS克隆地址https://gitcode.net/A_miyan/jieba.git
README.md
jieba
"结巴"中文分词:做最好的Python中文分词组件
"Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPythonChinesewordsegmentationmodule.
ScrolldownforEnglishdocumentation.
注意!
这个branchjieba3k是专门用于Python3.x的版本
特点
支持三种分词模式:
精确模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
支持繁体分词
支持自定义词典
在线演示
http://jiebademo.ap01.aws.af.cm/
(PoweredbyAppfog)
网站代码:https://github.com/fxsjy/jiebademo
安装说明
Python2.x
全自动安装:easy_installjieba或者pipinstalljieba
半自动安装:先下载http://pypi.python.org/pypi/jieba/,解压后运行pythonsetup.pyinstall
手动安装:将jieba目录放置于当前目录或者site-packages目录
通过importjieba来引用
Python3.x
目前master分支是只支持Python2.x的
Python3.x版本的分支也已经基本可用:https://github.com/fxsjy/jieba/tree/jieba3k
gitclonehttps://github.com/fxsjy/jieba.git
gitcheckoutjieba3k
pythonsetup.pyinstall
或使用pip3安装:pip3installjieba3k
算法
基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)
采用了动态规划查找最大概率路径,找出基于词频的最大切分组合
对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
主要功能
:分词
jieba.cut方法接受三个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;HMM参数用来控制是否使用HMM模型
jieba.cut_for_search方法接受两个参数:需要分词的字符串;是否使用HMM模型。
该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
注意:待分词的字符串可以是GBK字符串、UTF-8字符串或者unicode
jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list
代码示例(分词)
#encoding=utf-8
importjieba
seg_list=jieba.cut("我来到北京清华大学",cut_all=True)
print("FullMode:","/".join(seg_list))#全模式
seg_list=jieba.cut("我来到北京清华大学",cut_all=False)
print("DefaultMode:","/".join(seg_list))#精确模式
seg_list=jieba.cut("他来到了网易杭研大厦")#默认是精确模式
print(",".join(seg_list))
seg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")#搜索引擎模式
print(",".join(seg_list))
输出:
【全模式】:我/来到/北京/清华/清华大学/华大/大学
【精确模式】:我/来到/北京/清华大学
【新词识别】:他,来到,了,网易,杭研,大厦(此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
【搜索引擎模式】:小明,硕士,毕业,于,中国,科学,学院,科学院,中国科学院,计算,计算所,后,在,日本,京都,大学,日本京都大学,深造
:添加自定义词典
开发者可以指定自己自定义的词典,以便包含jieba词库里没有的词。
虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率
用法:jieba.load_userdict(file_name)#file_name为自定义词典的路径
词典格式和dict.txt一样,一个词占一行;每一行分三部分,一部分为词语,另一部分为词频,最后为词性(可省略),用空格隔开
范例:
自定义词典:https://github.com/fxsjy/jieba/blob/master/test/userdict.txt
用法示例:https://github.com/fxsjy/jieba/blob/master/test/test_userdict.py
之前:李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家/
加载自定义词库后: 李小福/是/创新办/主任/也/是/云计算/方面/的/专家/
"通过用户自定义词典来增强歧义纠错能力"---https://github.com/fxsjy/jieba/issues/14
:关键词提取
jieba.analyse.extract_tags(sentence,topK,withWeight)#需要先importjieba.analyse
sentence为待提取的文本
topK为返回几个TF/IDF权重最大的关键词,默认值为20
withWeight为是否一并返回关键词权重值,默认值为False
代码示例(关键词提取)
https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py
关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
用法:jieba.analyse.set_idf_path(file_name)#file_name为自定义语料库的路径
自定义语料库示例:https://github.com/fxsjy/jieba/blob/master/extra_dict/idf.txt.big
用法示例:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_idfpath.py
关键词提取所使用停止词(StopWords)文本语料库可以切换成自定义语料库的路径
用法:jieba.analyse.set_stop_words(file_name)#file_name为自定义语料库的路径
自定义语料库示例:https://github.com/fxsjy/jieba/blob/master/extra_dict/stop_words.txt
用法示例:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_stop_words.py
关键词一并返回关键词权重值示例
用法示例:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_with_weight.py
基于TextRank算法的关键词抽取实现
算法论文:TextRank:BringingOrderintoTexts
基本思想:
将待抽取关键词的文本进行分词
以固定窗口大小(我选的5,可适当调整),词之间的共现关系,构建图
计算图中节点的PageRank,注意是无向带权图
基本使用:
jieba.analyse.textrank(raw_text)
示例结果:
来自__main__的示例结果:
吉林1.0
欧亚0.864834432786
置业0.553465925497
实现0.520660869531
收入0.379699688954
增资0.355086023683
子公司0.349758490263
全资0.308537396283
城市0.306103738053
商业0.304837414946
:词性标注
标注句子分词后每个词的词性,采用和ictclas兼容的标记法
用法示例
>>>importjieba.possegaspseg
>>>words=pseg.cut("我爱北京天安门")
>>>forwinwords:
...print(w.word,w.flag)
...
我r
爱v
北京ns
天安门ns
:并行分词
原理:将目标文本按行分隔后,把各行文本分配到多个python进程并行分词,然后归并结果,从而获得分词速度的可观提升
基于python自带的multiprocessing模块,目前暂不支持windows
用法:
jieba.enable_parallel(4)#开启并行分词模式,参数为并行进程数
jieba.disable_parallel()#关闭并行分词模式
例子:https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py
实验结果:在4核3.4GHzLinux机器上,对金庸全集进行精确分词,获得了1MB/s的速度,是单进程版的3.3倍。
:Tokenize:返回词语在原文的起始位置
注意,输入参数只接受unicode
默认模式
result=jieba.tokenize(u'永和服装饰品有限公司')
fortkinresult:
print("word%s\t\tstart:%d\t\tend:%d"%(tk[0],tk[1],tk[2]))
word永和start:0end:2
word服装start:2end:4
word饰品start:4end:6
word有限公司start:6end:10
搜索模式
result=jieba.tokenize(u'永和服装饰品有限公司',mode='search')
fortkinresult:
print("word%s\t\tstart:%d\t\tend:%d"%(tk[0],tk[1],tk[2]))
word永和start:0end:2
word服装start:2end:4
word饰品start:4end:6
word有限start:6end:8
word公司start:8end:10
word有限公司start:6end:10
:ChineseAnalyzerforWhoosh搜索引擎
引用:fromjieba.analyseimportChineseAnalyzer
用法示例:https://github.com/fxsjy/jieba/blob/master/test/test_whoosh.py
:命令行分词
使用示例:catnews.txt|python-mjieba>cut_result.txt
命令行选项(翻译):
使用:python-mjieba[options]filename
结巴命令行界面。
固定参数:
filename输入文件
可选参数:
-h,--help显示此帮助信息并退出
-d[DELIM],--delimiter[DELIM]
使用DELIM分隔词语,而不是用默认的'/'。
若不指定DELIM,则使用一个空格分隔。
-DDICT,--dictDICT使用DICT代替默认词典
-uUSER_DICT,--user-dictUSER_DICT
使用USER_DICT作为附加词典,与默认词典或自定义词典配合使用
-a,--cut-all全模式分词
-n,--no-hmm不使用隐含马尔可夫模型
-q,--quiet不输出载入信息到STDERR
-V,--version显示版本信息并退出
如果没有指定文件名,则使用标准输入。
--help选项输出:
$>python-mjieba--help
usage:python-mjieba[options]filename
Jiebacommandlineinterface.
positionalarguments:
filenameinputfile
optionalarguments:
-h,--helpshowthishelpmessageandexit
-d[DELIM],--delimiter[DELIM]
useDELIMinsteadof'/'forworddelimiter;ora
spaceifitisusedwithoutDELIM
-DDICT,--dictDICTuseDICTasdictionary
-uUSER_DICT,--user-dictUSER_DICT
useUSER_DICTtogetherwiththedefaultdictionaryor
DICT(ifspecified)
-a,--cut-allfullpatterncutting
-n,--no-hmmdon'tusetheHiddenMarkovModel
-q,--quietdon'tprintloadingmessagestostderr
-V,--versionshowprogram'sversionnumberandexit
Ifnofilenamespecified,useSTDINinstead.
模块初始化机制的改变:lazyload(从0.28版本开始)
jieba采用延迟加载,"importjieba"不会立即触发词典的加载,一旦有必要才开始加载词典构建前缀字典。
如果你想手工初始jieba,也可以手动初始化。
importjieba
jieba.initialize()#手动初始化(可选)
在0.28之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径:
jieba.set_dictionary('data/dict.txt.big')
例子:https://github.com/fxsjy/jieba/blob/master/test/test_change_dictpath.py
其他词典
占用内存较小的词典文件
https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small
支持繁体分词更好的词典文件
https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big
下载你所需要的词典,然后覆盖jieba/dict.txt即可;或者用jieba.set_dictionary('data/dict.txt.big')
其他语言实现
结巴分词Java版本
作者:piaolingxue
地址:https://github.com/huaban/jieba-analysis
结巴分词C++版本
作者:yanyiwu
地址:https://github.com/aszxqw/cppjieba
结巴分词Node.js版本
作者:yanyiwu
地址:https://github.com/aszxqw/nodejieba
结巴分词Erlang版本
作者:falood
地址:https://github.com/falood/exjieba
结巴分词R版本
作者:qinwf
地址:https://github.com/qinwf/jiebaR
结巴分词iOS版本
作者:yanyiwu
地址:https://github.com/aszxqw/iosjieba
系统集成
Solr:https://github.com/sing1ee/jieba-solr
分词速度
1.5MB/SecondinFullMode
400KB/SecondinDefaultMode
测试环境:Intel(R)Core(TM)[email protected];《围城》.txt
常见问题
模型的数据是如何生成的?https://github.com/fxsjy/jieba/issues/7
这个库的授权是?https://github.com/fxsjy/jieba/issues/2
更多问题请点击:https://github.com/fxsjy/jieba/issues?sort=updated&state=closed
修订历史
https://github.com/fxsjy/jieba/blob/master/Changelog
jieba
"Jieba"(Chinesefor"tostutter")Chinesetextsegmentation:builttobethebestPythonChinesewordsegmentationmodule.
Features
Supportthreetypesofsegmentationmode:
AccurateModeattemptstocutthesentenceintothemostaccuratesegmentations,whichissuitablefortextanalysis.
FullModegetsallthepossiblewordsfromthesentence.Fastbutnotaccurate.
SearchEngineMode,basedontheAccurateMode,attemptstocutlongwordsintoseveralshortwords,whichcanraisetherecallrate.Suitableforsearchengines.
Usage
Fullyautomaticinstallation:easy_installjiebaorpipinstalljieba
Semi-automaticinstallation:Downloadhttp://pypi.python.org/pypi/jieba/,runpythonsetup.pyinstallafterextracting.
Manualinstallation:placethejiebadirectoryinthecurrentdirectoryorpythonsite-packagesdirectory.
importjieba.
Algorithm
Basedonaprefixdictionarystructuretoachieveefficientwordgraphscanning.Buildadirectedacyclicgraph(DAG)forallpossiblewordcombinations.
Usedynamicprogrammingtofindthemostprobablecombinationbasedonthewordfrequency.
Forunknownwords,aHMM-basedmodelisusedwiththeViterbialgorithm.
MainFunctions
:Cut
Thejieba.cutfunctionacceptsthreeinputparameters:thefirstparameteristhestringtobecut;thesecondparameteriscut_all,controllingthecutmode;thethirdparameteristocontrolwhethertousetheHiddenMarkovModel.
jieba.cutreturnsangenerator,fromwhichyoucanuseaforlooptogetthesegmentationresult(inunicode),orlist(jieba.cut(...))tocreatealist.
jieba.cut_for_searchacceptstwoparameter:thestringtobecut;whethertousetheHiddenMarkovModel.Thiswillcutthesentenceintoshortwordssuitableforsearchengines.
Codeexample:segmentation
#encoding=utf-8
importjieba
seg_list=jieba.cut("我来到北京清华大学",cut_all=True)
print("FullMode:","/".join(seg_list))#全模式
seg_list=jieba.cut("我来到北京清华大学",cut_all=False)
print("DefaultMode:","/".join(seg_list))#默认模式
seg_list=jieba.cut("他来到了网易杭研大厦")
print(",".join(seg_list))
seg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")#搜索引擎模式
print(",".join(seg_list))
Output:
[FullMode]:我/来到/北京/清华/清华大学/华大/大学
[AccurateMode]:我/来到/北京/清华大学
[UnknownWordsRecognize]他,来到,了,网易,杭研,大厦(Inthiscase,"杭研"isnotinthedictionary,butisidentifiedbytheViterbialgorithm)
[SearchEngineMode]:小明,硕士,毕业,于,中国,科学,学院,科学院,中国科学院,计算,计算所,后,在,日本,京都,大学,日本京都大学,深造
:Addacustomdictionary
Developerscanspecifytheirowncustomdictionarytobeincludedinthejiebadefaultdictionary.Jiebaisabletoidentifynewwords,butaddingyourownnewwordscanensureahigheraccuracy.
Usage:jieba.load_userdict(file_name)#file_nameisthepathofthecustomdictionary
Thedictionaryformatisthesameasthatofanalyse/idf.txt:onewordperline;eachlineisdividedintotwoparts,thefirstistheworditself,theotheristhewordfrequency,separatedbyaspace
Example:
云计算5
李小福2
创新办3
[Before]:李小福/是/创新/办/主任/也/是/云/计算/方面/的/专家/
[After]: 李小福/是/创新办/主任/也/是/云计算/方面/的/专家/
:KeywordExtraction
jieba.analyse.extract_tags(sentence,topK,withWeight)#needstofirstimportjieba.analyse
sentence:thetexttobeextracted
topK:returnhowmanykeywordswiththehighestTF/IDFweights.Thedefaultvalueis20
withWeight:whetherreturnTF/IDFweightswiththekeywords.ThedefaultvalueisFalse
Example(keywordextraction)
https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py
DeveloperscanspecifytheirowncustomIDFcorpusinjiebakeywordextraction
Usage:jieba.analyse.set_idf_path(file_name)#file_nameisthepathforthecustomcorpus
CustomCorpusSample:https://github.com/fxsjy/jieba/blob/master/extra_dict/idf.txt.big
SampleCode:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_idfpath.py
Developerscanspecifytheirowncustomstopwordscorpusinjiebakeywordextraction
Usage:jieba.analyse.set_stop_words(file_name)#file_nameisthepathforthecustomcorpus
CustomCorpusSample:https://github.com/fxsjy/jieba/blob/master/extra_dict/stop_words.txt
SampleCode:https://github.com/fxsjy/jieba/blob/master/test/extract_tags_stop_words.py
There'salsoaTextRankimplementationavailable.
Use:jieba.analyse.textrank(raw_text).
:PartofSpeechTagging
TagsthePOSofeachwordaftersegmentation,usinglabelscompatiblewithictclas.
Example:
>>>importjieba.possegaspseg
>>>words=pseg.cut("我爱北京天安门")
>>>forwinwords:
...print(w.word,w.flag)
...
我r
爱v
北京ns
天安门ns
:ParallelProcessing
Principle:Splittargettextbyline,assignthelinesintomultiplePythonprocesses,andthenmergetheresults,whichisconsiderablyfaster.
BasedonthemultiprocessingmoduleofPython.
Usage:
jieba.enable_parallel(4)#Enableparallelprocessing.Theparameteristhenumberofprocesses.
jieba.disable_parallel()#Disableparallelprocessing.
Example:
https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py
Result:Onafour-core3.4GHzLinuxmachine,doaccuratewordsegmentationonCompleteWorksofJinYong,andthespeedreaches1MB/s,whichis3.3timesfasterthanthesingle-processversion.
:Tokenize:returnwordswithposition
Theinputmustbeunicode
Defaultmode
result=jieba.tokenize(u'永和服装饰品有限公司')
fortkinresult:
print("word%s\t\tstart:%d\t\tend:%d"%(tk[0],tk[1],tk[2]))
word永和start:0end:2
word服装start:2end:4
word饰品start:4end:6
word有限公司start:6end:10
Searchmode
result=jieba.tokenize(u'永和服装饰品有限公司',mode='search')
fortkinresult:
print("word%s\t\tstart:%d\t\tend:%d"%(tk[0],tk[1],tk[2]))
word永和start:0end:2
word服装start:2end:4
word饰品start:4end:6
word有限start:6end:8
word公司start:8end:10
word有限公司start:6end:10
:ChineseAnalyzerforWhoosh
fromjieba.analyseimportChineseAnalyzer
Example:https://github.com/fxsjy/jieba/blob/master/test/test_whoosh.py
:CommandLineInterface
$>python-mjieba--help
usage:python-mjieba[options]filename
Jiebacommandlineinterface.
positionalarguments:
filenameinputfile
optionalarguments:
-h,--helpshowthishelpmessageandexit
-d[DELIM],--delimiter[DELIM]
useDELIMinsteadof'/'forworddelimiter;ora
spaceifitisusedwithoutDELIM
-DDICT,--dictDICTuseDICTasdictionary
-uUSER_DICT,--user-dictUSER_DICT
useUSER_DICTtogetherwiththedefaultdictionaryor
DICT(ifspecified)
-a,--cut-allfullpatterncutting
-n,--no-hmmdon'tusetheHiddenMarkovModel
-q,--quietdon'tprintloadingmessagestostderr
-V,--versionshowprogram'sversionnumberandexit
Ifnofilenamespecified,useSTDINinstead.
Initialization
Bydefault,Jiebadon'tbuildtheprefixdictionaryunlessit'snecessary.Thistakes1-3seconds,afterwhichitisnotinitializedagain.IfyouwanttoinitializeJiebamanually,youcancall:
importjieba
jieba.initialize()#(optional)
Youcanalsospecifythedictionary(notsupportedbeforeversion0.28):
jieba.set_dictionary('data/dict.txt.big')
UsingOtherDictionaries
ItispossibletouseyourowndictionarywithJieba,andtherearealsotwodictionariesreadyfordownload:
Asmallerdictionaryforasmallermemoryfootprint:
https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.small
ThereisalsoabiggerdictionarythathasbettersupportfortraditionalChinese(繁體):
https://github.com/fxsjy/jieba/raw/master/extra_dict/dict.txt.big
Bydefault,anin-betweendictionaryisused,calleddict.txtandincludedinthedistribution.
Ineithercase,downloadthefileyouwant,andthencalljieba.set_dictionary('data/dict.txt.big')orjustreplacetheexistingdict.txt.
Segmentationspeed
1.5MB/SecondinFullMode
400KB/SecondinDefaultMode
TestEnv:Intel(R)Core(TM)[email protected];《围城》.txt
Onlinedemo
http://jiebademo.ap01.aws.af.cm/
(PoweredbyAppfog)
J
项目简介
🚀Github镜像仓库🚀
源项目地址⬇⬇⬇
https://github.com/fxsjy/jieba
进一步了解
MITLicense
文件大小
164KB
仓库大小
276KB
发行版本
当前项目没有发行版本
贡献者
50
N
F
J
V
T
P
H
P
I
C
B
S
全部贡献者
开发语言
Python
52.1
%
OpenEdgeABL
48.0
%
延伸文章資訊
- 1jieba 詳細介紹 - 程式庫
jieba. "結巴"中文分詞:做最好的Python中文分片語件"Jieba" ... 佔用記憶體較小的詞典檔案 https://github.com/fxsjy/jieba/raw/maste...
- 2【轉】jieba分詞詳解 - 台部落
jieba.cut 方法接受三個輸入參數: 需要分詞的字符串;cut_all 參數用來 ... :https://github.com/fxsjy/jieba/blob/master/extra...
- 3LiveMirror/jieba: 结巴中文分词做最好的Python分词组件 - GitHub
Contribute to LiveMirror/jieba development by creating an account on GitHub. ... 词典文件https://gith...
- 47.1.3. JieBa — nlp-docs v2019.03.19 文档
jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全 ... 示例:https://github.com/fxsjy/jieba/blob/mas...
- 5結巴中文分詞的學習和使用 - 程式人生
jieba.cut 方法接受三個輸入引數: 需要分詞的字串;cut_all 引數用來控制 ... :https://github.com/fxsjy/jieba/blob/master/extr...