楼主: jpld
1255 1

[程序分享] python中文分词jieba总结(下) [推广有奖]

  • 2关注
  • 50粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
1268 个
通用积分
2.1233
学术水平
120 点
热心指数
120 点
信用等级
99 点
经验
1249 点
帖子
192
精华
0
在线时间
271 小时
注册时间
2009-5-29
最后登录
2022-3-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
基本思想:
  • 将待抽取关键词的文本进行分词
  • 以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
  • 计算图中节点的PageRank,注意是无向带权图
使用示例:

test/demo.py

  • 词性标注

  • jieba.posseg.POSTokenizer(tokenizer=None) 新建自定义分词器,tokenizer 参数可指定内部使用的 jieba.Tokenizer 分词器。jieba.posseg.dt 为默认词性标注分词器。
  • 标注句子分词后每个词的词性,采用和 ictclas 兼容的标记法。
  • 用法示例
>>> import jieba.posseg as pseg>>> words = pseg.cut("我爱北京天安门")>>> for word, flag in words:...    print('%s %s' % (word, 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.4GHz Linux 机器上,对金庸全集进行精确分词,获得了 1MB/s 的速度,是单进程版的 3.3 倍。

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


  • Tokenize:返回词语在原文的起止位置

  • 注意,输入参数只接受 unicode
  • 默认模式
result = jieba.tokenize(u'永和服装饰品有限公司')for tk in result:    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))


  • word 永和                start: 0                end:2



  • word 服装                start: 2                end:4



  • word 饰品                start: 4                end:6



  • word 有限公司            start: 6                end:10






  • 搜索模式
result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')for tk in result:    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))


  • word 永和                start: 0                end:2



  • word 服装                start: 2                end:4



  • word 饰品                start: 4                end:6



  • word 有限                start: 6                end:8



  • word 公司                start: 8                end:10



  • word 有限公司            start: 6                end:10


  • ChineseAnalyzer for Whoosh 搜索引擎

  • 命令行分词

使用示例:python -m jieba news.txt > cut_result.txt

命令行选项(翻译):



  • 使用: python -m jieba [options] filename







  • 结巴命令行界面。







  • 固定参数:



  •   filename              输入文件







  • 可选参数:



  •   -h, --help            显示此帮助信息并退出



  •   -d [DELIM], --delimiter [DELIM]



  •                         使用 DELIM 分隔词语,而不是用默认的' / '。



  •                         若不指定 DELIM,则使用一个空格分隔。



  •   -p [DELIM], --pos [DELIM]



  •                         启用词性标注;如果指定 DELIM,词语和词性之间



  •                         用它分隔,否则用 _ 分隔



  •   -D DICT, --dict DICT  使用 DICT 代替默认词典



  •   -u USER_DICT, --user-dict USER_DICT



  •                         使用 USER_DICT 作为附加词典,与默认词典或自定义词典配合使用



  •   -a, --cut-all         全模式分词(不支持词性标注)



  •   -n, --no-hmm          不使用隐含马尔可夫模型



  •   -q, --quiet           不输出载入信息到 STDERR



  •   -V, --version         显示版本信息并退出







  • 如果没有指定文件名,则使用标准输入。


--help 选项输出:



  • $> python -m jieba --help



  • Jieba command line interface.







  • positional arguments:



  •   filename              input file







  • optional arguments:



  •   -h, --help            show this help message and exit



  •   -d [DELIM], --delimiter [DELIM]



  •                         use DELIM instead of ' / ' for word delimiter; or a



  •                         space if it is used without DELIM



  •   -p [DELIM], --pos [DELIM]



  •                         enable POS tagging; if DELIM is specified, use DELIM



  •                         instead of '_' for POS delimiter



  •   -D DICT, --dict DICT  use DICT as dictionary



  •   -u USER_DICT, --user-dict USER_DICT



  •                         use USER_DICT together with the default dictionary or



  •                         DICT (if specified)



  •   -a, --cut-all         full pattern cutting (ignored with POS tagging)



  •   -n, --no-hmm          don't use the Hidden Markov Model



  •   -q, --quiet           don't print loading messages to stderr



  •   -V, --version         show program's version number and exit







  • If no filename specified, use STDIN instead.






5.延迟加载机制

jieba 采用延迟加载,import jieba 和 jieba.Tokenizer() 不会立即触发词典的加载,一旦有必要才开始加载词典构建前缀字典。如果你想手工初始 jieba,也可以手动初始化。



  • import jieba



  • jieba.initialize()  # 手动初始化(可选)


在 0.28 之前的版本是不能指定主词典的路径的,有了延迟加载机制后,你可以改变主词典的路径:

jieba.set_dictionary('data/dict.txt.big')

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分经验 学术水平 收起 理由
刘彦楼 + 100 + 5 精彩帖子

总评分: 经验 + 100  学术水平 + 5   查看全部评分

沙发
刘彦楼 发表于 2018-7-4 23:49:17 |只看作者 |坛友微信交流群
谢谢分享

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 10:57