jieba词性标注

这里首先了解下词性标注:
中文的词性标注一般存在很多不固定性,比如同音同形的词在不同的场景下,其表示的语法属性截然不用,这就为词性标注带来了很大的困难。但是从另外一个方面看,整体上来说大多数的词语,尤其是实词,一般只有一个到两个词性,而其中一个词性相对于另一个是高频的,这时如果默认将高频词性作为词性选择进行标注,也能有很高的准确率。这时对于大部分的场景来说,还是能满足基本的准确度要求的。

最简单的方法是:统计语料库中的每个词对应的词性,然后将每个词的高频词性作为该词的词性。也就是说输入语料必须是已经标注好词性的语料库。

与此同时,还可以有所提升,目前较多的做法是将词性标注的问题转化为用分词的方法,也即是将句子的词性标注作为一个序列标注问题来解决。这样的话,分词中的方法,如HMM、CRF等都可以用在词性标注上。

词性标注规范:
目前有北大的词性标注集和宾州词性标注集,这里采用的是北大的词性标注集。

这里说下jieba的词性标注:
jieba词性标注有点类似于其分词流程,也是基于规则和统计的方法,也就是在词性标注的过程中,词典匹配和HMM共同作用。

  • 首先基于正则表达式判断是否是汉字
  • 若不是汉字,将继续通过正则表达式进行类型判断。
  • 若是汉字,则基于前缀词典构建有向无环图,再基于有向无环图计算最大概率路径,同时在前缀词典中找出它所分出的词性,若未找到,则赋予“x”,代表未知。如有未登录词,则会通过HMM进行词性标注。

那么HMM是怎样应用于词性标注的呢?
这里简单说下,就是在分词任务中,我们用’B’、’M’、’S’、’E’四中标签,与句子中的每个字符一一对应,而在词性标注中jieba采用了联合模型的方式,即将基于字标注的方法和词性标注结合起来,使用复合标注集。比如:‘人民’,分词为‘BE’,而词性为‘n’,这时‘人’的标注就是‘B_n’,而‘民’的标注就是‘E_n’,剩下的就和HMM分词过程一致了,但这里要更换适合的训练语料库。

import jieba.posseg as psg

sent='中文分词是文本处理不可或缺的一步!'
seg_list=psg.cut(sent)
print(''.join(['{0}/{1}'.format(w,t) for w,t in seg_list]))

运行结果:

中文/nz分词/n是/v文本处理/n不可或缺/l的/uj一步/m!/x

这里只是对jieba词性标注做了一个简单介绍,以后再深入讨论。

参考:《pytho自然语言处理实战 核心技术与算法》

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
结巴分词早期版本。 * 结巴分词(java版) jieba-analysis 首先感谢jieba分词原作者[[https://github.com/fxsjy][fxsjy]],没有他的无私贡献,我们也不会结识到结巴 分词,更不会有现在的java版本。 结巴分词的原始版本为python编写,目前该项目在github上的关注量为170, 打星727次(最新的数据以原仓库为准),Fork238次,可以说已经有一定的用户群。 结巴分词(java版)只保留的原项目针对搜索引擎分词的功能(cut_for_index、cut_for_search),词性标注,关键词提取没有实现(今后如用到,可以考虑实现)。 * 简介 ** 支持分词模式 - Search模式,用于对用户查询词分词 - Index模式,用于对索引文档分词 ** 特性 - 支持多种分词模式 - 全角统一转成半角 - 用户词典功能 - conf 目录有整理的搜狗细胞词库 - 支持词性标注(感谢 [[https://github.com/linkerlin][@linkerlin]] 的贡献) * 如何获取 - 当前稳定版本 #+BEGIN_SRC xml com.huaban jieba-analysis 0.0.2 #+END_SRC - 当前快照版本 - 支持词性标注 [[https://github.com/huaban/jieba-analysis/pull/4][#4]] - 修复以'-'连接词分词错误问题 [[https://github.com/huaban/jieba-analysis/issues/3][#3]] #+BEGIN_SRC xml com.huaban jieba-analysis 1.0.0-SNAPSHOT #+END_SRC * 如何使用 - Demo #+BEGIN_SRC java @Test public void testDemo() { JiebaSegmenter segmenter = new JiebaSegmenter(); String[] sentences = new String[] {"这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。", "我不喜欢日本和服。", "雷猴回归人间。", "工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作", "结果婚的和尚未结过婚的"}; for (String sentence : sentences) { System.out.println(segmenter.process(sentence, SegMode.INDEX).toString()); } } #+END_SRC * 算法(wiki补充...) - [ ] 基于 =trie= 树结构实现高效词图扫描 - [ ] 生成所有切词可能的有向无环图 =DAG= - [ ] 采用动态规划算法计算最佳切词组合 - [ ] 基于 =HMM= 模型,采用 =Viterbi= (维特比)算法实现未登录词识别 * 性能评估 - 测试机配置 #+BEGIN_SRC screen Processor 2 Intel(R) Pentium(R) CPU G620 @ 2.60GHz Memory:8GB 分词测试时机器开了许多应用(eclipse、emacs、chrome...),可能 会影响到测试速度 #+END_SRC - [[src/test/resources/test.txt][测试文本]] - 测试结果(单线程,对测试文本逐行分词,并循环调用上万次) #+BEGIN_SRC screen 循环调用一万次 第一次测试结果: time elapsed:12373, rate:2486.986533kb/s, words:917319.94/s 第二次测试结果: time elapsed:12284, rate:2505.005241kb/s, words:923966.10/s 第三次测试结果: time elapsed:12336, rate:2494.445880kb/s, words:920071.30/s 循环调用2万次 第一次测试结果: time elapsed:22237, rate:2767.593144kb/s, words:1020821.12/s 第二次测试结果: time elapsed:22435, rate:2743.167762kb/s, words:1011811.87/s 第三次测试结果: time elapsed:22102, rate:2784.497726kb/s, words:1027056.34/s 统计结果:词典加载时间1.8s左右,分词效率每秒2Mb多,近100万词。 2 Processor Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz 12G 测试效果 time elapsed:19597, rate:3140.428063kb/s, words:1158340.52/s time elapsed:20122, rate:3058.491639kb/s, words:1128118.44/s #+END_SRC
Cocos Creator是一个功能强大的游戏开发引擎,它允许开发者创建各种类型的游戏,包括街霸游戏。但是,Cocos Creator本身并不提供街霸游戏的源码,开发者需要自己设计和编写游戏的逻辑、界面以及各种游戏元素。 要创建一个街霸游戏,首先需要进行角色的设计和动画制作。可以使用Cocos Creator内置的动画编辑器来创建和编辑角色的动画效果。然后,开发者需要设计游戏场景,包括背景、道路、建筑等等,可以使用Cocos Creator提供的场景编辑器进行创建和布置。 在街霸游戏中,角色之间的战斗是重要的内容。为了实现战斗机制,需要编写适当的代码来实现攻击、防御、技能等动作的触发和效果。开发者可以使用Cocos Creator的脚本编辑器来编写游戏逻辑脚本,实现战斗机制,并确保游戏的平衡性和可玩性。 此外,街霸游戏还可能包括多人对战模式,可以使用Cocos Creator的网络模块来实现多人对战功能。开发者还可以使用音效编辑工具来添加游戏音效,以提升游戏的体验和乐趣。 总体来说,创建一款街霸游戏需要进行多个方面的设计和开发工作,包括角色设计、动画制作、场景布置、战斗机制实现、网络功能等等。Cocos Creator作为游戏开发引擎,为开发者提供了一系列强大的功能和工具,可以帮助开发者创建出高质量、富有创意的街霸游戏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值