阅读更多

6顶
0踩

开源软件
中文分词是中文文本处理的一个基础性工作,然而长久以来,在Python编程领域,一直缺少高准确率、高效率的分词组件。结巴分词正是为了满足这一需求。

在线演示:http://209.222.69.242:9000/

特性:

支持两种分词模式:

  • 默认模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来,适合搜索引擎。
用法:

  • 全自动安装:easy_install jieba
  • 半自动安装:先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py install
  • 手动安装:将jieba目录放置于当前目录或者site-packages目录,通过import jieba 来引用 (第一次import时需要构建Trie树,需要几秒时间)
算法:

  • 基于Trie树结构实现高效的词图扫描,生成句子中汉字构成的有向无环图(DAG)
  • 采用了记忆化搜索实现最大概率路径的计算, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字位置概率的模型,使用了Viterbi算法
接口:

  • 组件只提供jieba.cut 方法用于分词
  • cut方法接受两个输入参数:
  •          1) 第一个参数为需要分词的字符串
             2) cut_all参数用来控制分词模式
  • 待分词的字符串可以是gbk字符串、utf-8字符串或者unicode
  • jieba.cut返回的结构是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list
代码示例:

#encoding=utf-8
import jieba

seg_list = jieba.cut("我来到北京清华大学",cut_all=True)
print "Full Mode:", "/ ".join(seg_list) #全模式

seg_list = jieba.cut("我来到北京清华大学",cut_all=False)
print "Default Mode:", "/ ".join(seg_list) #默认模式

seg_list = jieba.cut("他来到了网易杭研大厦")
print ", ".join(seg_list)

输出:

Full Mode: 我/ 来/ 来到/ 到/ 北/ 北京/ 京/ 清/ 清华/ 清华大学/ 华/ 华大/ 大/ 大学/ 学

Default Mode: 我/ 来到/ 北京/ 清华大学

他, 来到, 了, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)

性能:

  • 1.5 MB / Second in Full Mode
  • 350 KB / Second in Default Mode
  • Test Env: Intel(R) Core(TM) i7-2600 CPU @ 3.4GHz;《围城》.txt
来自: GitHub
6
0
评论 共 10 条 请登录后发表评论
10 楼 tomqyp 2012-10-09 18:39
准确率很高啊
9 楼 fxsjy 2012-10-09 10:52
ansjsun 写道
看了一下.效果很好.目前发现人名识别不是很理想.还有准确率评估...可以这么做.你网上搜索下.人民日报语料库.我记得有一月份..的.然后用你分词和他的结果对比.
P=正确切分的词数/分词结果数
R=正确切分的词数/分词样本中的词数
F=2PR/(P+R)

一般以F值为最终结果...

多谢指教,我去搜索一下。
8 楼 fxsjy 2012-10-09 10:50
ansjsun 写道
采用了记忆化搜索实现最大概率路径的计算, 找出基于词频的最大切分组合


我看了下你的算法..这样做有一些歧异不好处理.
比如 "我打的回家"

你是否对高频单子或者词做了特殊处理?


的确有这个问题呢,目前没有对高频单子做特殊处理,主要不想过早地引入规则代码,因为发现引入规则后容易“按下葫芦起了瓢”。

7 楼 ansjsun 2012-10-09 10:31
采用了记忆化搜索实现最大概率路径的计算, 找出基于词频的最大切分组合


我看了下你的算法..这样做有一些歧异不好处理.
比如 "我打的回家"

你是否对高频单子或者词做了特殊处理?
6 楼 ansjsun 2012-10-09 10:28
看了一下.效果很好.目前发现人名识别不是很理想.还有准确率评估...可以这么做.你网上搜索下.人民日报语料库.我记得有一月份..的.然后用你分词和他的结果对比.
P=正确切分的词数/分词结果数
R=正确切分的词数/分词样本中的词数
F=2PR/(P+R)

一般以F值为最终结果...
5 楼 hellostory 2012-10-08 17:31
“下雨天留客天留我不留”
/ 下雨天/ 留客/ 天留/ 我/ 不留
4 楼 fxsjy 2012-10-08 16:13
lingyun2003 写道
一次/ 性交/ 多少钱/ 才算/ 男人  

呵呵,不能承诺百分之一百的正确,其实你这句话我这样切分也可以讲得通啊。

用这句话就可以正确切分:“一次性交出去多少钱才算男人”

一次性/ 交出去/ 多少钱/ 才算/ 男人
3 楼 lingyun2003 2012-10-08 16:09
一次/ 性交/ 多少钱/ 才算/ 男人  
2 楼 fxsjy 2012-10-08 15:53
pangbuddy 写道
正确率大概是多少? 还有 “full mode” 和 “default mode” 是什么意思?


正确率我不知道应该用什么测试集,这里有一些比较有代表性的句子,jieba都能过:https://github.com/fxsjy/jieba/blob/master/test/test.py


“full mode” 是适合做搜索引擎倒排的一种切分方式,为了避免漏查,会把句子中所有成词的字符串都扫描出来。
  “default mode” 适合做文本分析,比如文本分类啥的。为了避免切分歧义,用了一些概率模型来确保切分的正确性

举例来说:“我来到北京清华大学”

Full Mode切分效果: 我/ 来/ 来到/ 到/ 北/ 北京/ 京/ 清/ 清华/ 清华大学/ 华/ 华大/ 大/ 大学/ 学

Default Mode切分效果: 我/ 来到/ 北京/ 清华大学
  
1 楼 pangbuddy 2012-10-08 15:36
正确率大概是多少? 还有 “full mode” 和 “default mode” 是什么意思?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • ip被限制怎么办

    当IP被限制时,用户将无法通过该IP地址正常访问受限制的资源或服务。解除限制的方法通常需要联系网络管理员或服务提供商,提供相关证明或解释,并请求解除限制。IP被限制是指在某个网络环境中,对特定的IP地址进行限制或封禁,使其无法正常访问或使用网络资源。这种限制通常是由网络管理员或系统安全策略所设定的。

  • Java Web如何限制访问的IP的两种方法

    Java Web限制IP访问的两种方法   前一阵子因为在做项目时碰到了这个功能,现在好好总结一下,至于为什么要限制IP访问,我就不多说了。然后百度了一下,现在主要有两种方式去限制IP访问,第一种是最简单的方便的,第二种是通过过滤器来限制访问。下面我简单介绍一下第一种方式,着重介绍第二种。 第一种方式(Tomcat配置项配置允许或限制IP访问)   这种是最简单的快捷的,主要就涉及Tomca...

  • 判断ip地址是否合法的函数

    //判断IP地址是否合法 int check_ip(char *ip) { int i = 0, count = 0; const char *s = "."; char TempIP[20]={0}; int IPAddr[4] = {0}; memcpy(TempIP, ip, sizeof(TempIP)); for(i = 0; i <

  • 全正则的检测IP是否合法的函数

     function checkIP2(sIPAddress){    var exp=/^(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])/.(/d{1,2}|1/d/d|2[0-4]/d|25[0-5])$/;    var reg = sIPA

  • 检查ip是否在使用

    cat /tmp/checkaliveip.sh#!/bin/bashfor num in {1..254}do( Host=192.168.110.$num# ping -c2 $Host &amp;&gt; /dev/null ping -c 2 -i 0.2 -w 3 $Host &amp;&gt; /dev/null ...

  • 手机经典短信

    如果你是一片云,我愿是海鸥飞翔在你左右;如果你是一朵花,我愿做一只蜜蜂为你传播花粉;如果你是小白菜,我愿做一农夫,每天往你身上淋屎淋尿。寒冷的夜晚,我需要你敞开那温暖的怀抱,脱去我的衣裤,相互亲密相互...

  • 汉字拆左右偏旁

    则贝刂 败贝攵 贼贝戎 赠贝曾 赋贝武 赌贝者 赐贝易 贴贝占 贩贝反 财贝才 赚贝兼 删册刂 邮由阝 刚冈刂 帆巾凡 幅巾畐 帜巾只 帖巾占 帐巾长 帽巾冒 雕周隹 收丩攵 剧居刂 羽习习 情忄青 快忄夬 性忄生 懂忄董 忆...

  • 为了我的侄儿,我爬了高考前必背古诗文

    '\n').replace('\u3000','') content_str = content_str.strip('\n') author_str = author_str.strip('\n') title_str = title_str.strip('\n') if author_str == title_str: author_str = infos[-1] infos = info....

  • 这一年,这些书:2021年读书笔记

    每个来到这个世界上的人,都带着一个共同的目的:求名图利。但如果一个人能放下名利心,那么,便能名利双收。 这个世界正在发生的最大的变化就是,它正在回归诞生时的状态——混沌化。 无极就是事物的最原始状态,...

  • 大学英语综合教程三 Unit 1至Unit 8 课文内容英译中 中英翻译

    大学英语综合教程三 Unit 1至Unit 8课文内容英译中 中英翻译   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客 ...

  • java web项目如何限制访问的ip访问地址

    JavaWeb项目限制IP访问 这其实是一个类似IP地址的黑白名单问题,客户端IP地址在黑名单的就禁止访问,不在的就正常访问; 提出这样一个问题,大概就是感觉某些web应用在某些场合下要求一定的安全措施,这也算是安全审计的一种方法,可能是在应用运行过程中检测到某些IP被高访问服务器,或者经过某种手段(如大数据分析)得知,这些IP有可能再恶意攻击,so最简单的方法就是禁止这些IP访问,因此也就提...

  • IP地址数量限制的解决方案------NAT技术

    删除时

  • 如何解除网站的ip地址限制

    1、看看是否使用第三方插件造成的ip限制。 如果使用,请先关闭并清晰缓存,试着在1-3小时后重新访问。 2、更改IP地址,启用本地hosts文件分析域名。 打开Windows安装面板(如C面板),进入目录WINDOWSYSTEM32DRIVERSETC,找到hosts文件(无扩展名),用笔记本或写字板打开,然后添加被封锁的网站域名和相应的IP,每行格式:220.97.xx.xx www.xxx.com;保存文件,再次上网时启用本地hosts文件解析域名,从而访问被封锁的网站。 3、重新启动路由器..

  • 检测某一段ip是否被赞用

    #!/bin/baship=192.168.10.for i in `seq 1 20`do ping -c 2 $ip$i &gt; /dev/null 2&gt;&amp;1 | grep -q 'ttl=' &amp;&amp; echo "$ip$i is yes " || echo "$ip$i is no "done或者#!/bin/shfor n ...

  • 祝福短信NO.2

    愿幸福像阳光普照大地般环绕在你身边,愿幸运像春雨滋润万物般围绕在你左右。 祝福串成一首诗,一段旋律,开启一片温馨的春的园地。 轻轻的一声问候,不想惊忧你!只想真切知道你的一切是否安好。 花絮飘香,...

  • 恋空 By whaosoft

    呐,求求你啦~』 轻佻……真是轻佻得过分。老实说,美嘉还没想到他竟然随便到这种地步。 『……好啦。拜拜。』 心不甘情不愿地答应阿望和他做朋友,美嘉单方面挂上了电话。 因为她有一种讨厌的预感,如果不这么做的...

  • 西游记中的诗词14

    第1首 “杖锡西来拜法王,愿求妙典远传扬。 金芝三秀诗坛瑞,宝树干花莲蕊香。 百尺竿头须进步,十方世界立行藏。 修成玉像庄严体,极乐门前是道场。” 第2首 狐皮苫肩顶,锦绮裹腰胸。 袋插狼牙箭,胯挂宝雕弓。...

  • 民数记研读1——于宏洁

    民数记研读——于宏洁  1 西乃山下  一、第一次数点百姓  二、各支派安营 ... 二、在神的管教中,要注意的几个点  三、民数记中十次的管与教  四、被神管教后,美丽生命的绽放 4 从漂泊旷

  • 魏武帝 太祖知不可匡正,遂不复献言

    造五色棒,县门左右各十馀枚,有犯禁者,不避豪强,皆棒杀之。后数月,灵帝爱幸小黄门蹇硕叔父夜行,即杀之。京师敛迹,莫敢犯者。近习宠臣咸疾之,然不能伤,於是共称荐之,故迁为顿丘令。】徵拜议郎。【魏书曰:...

Global site tag (gtag.js) - Google Analytics