Life is short, I need python. NPL jieba 分词注意事项(补充)

并行分词

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

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

例子:https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py
注意:并行分词仅支持默认分词器 jieba.dt 和 jieba.posseg.dt


命令行分词

使用示例: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.

延迟加载机制

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

import jieba
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/yanyiwu/cppjieba


结巴分词 Node.js 版本

作者:yanyiwu
地址:https://github.com/yanyiwu/nodejieba


结巴分词 Erlang 版本

作者:falood
地址:https://github.com/falood/exjieba


结巴分词 R 版本

作者:qinwf
地址:https://github.com/qinwf/jiebaR


结巴分词 iOS 版本

作者:yanyiwu
地址:https://github.com/yanyiwu/iosjieba


结巴分词 PHP 版本

作者:fukuball
地址:https://github.com/fukuball/jieba-php


结巴分词 .NET(C#) 版本

作者:anderscui
地址:https://github.com/anderscui/jieba.NET/


结巴分词 Go 版本

作者: wangbin 地址: https://github.com/wangbin/jiebago
作者: yanyiwu 地址: https://github.com/yanyiwu/gojieba


系统集成

Solr: https://github.com/sing1ee/jieba-solr


分词速度

1.5 MB / Second in Full Mode
400 KB / Second in Default Mode
测试环境: Intel® Core™ i7-2600 CPU @ 3.4GHz;《围城》.txt


常见问题

1. 模型的数据是如何生成的?

详见: https://github.com/fxsjy/jieba/issues/7

2. “台中”总是被切成“台 中”?(以及类似情况)

P(台中) < P(台)×P(中),“台中”词频不够导致其成词概率较低

解决方法:强制调高词频

jieba.add_word('台中') 或者 jieba.suggest_freq('台中', True)

3. “今天天气 不错”应该被切成“今天 天气 不错”?(以及类似情况)

解决方法:强制调低词频

jieba.suggest_freq(('今天', '天气'), True)

或者直接删除该词 jieba.del_word('今天天气')

4. 切出了词典中没有的词语,效果不理想?

解决方法:关闭新词发现

jieba.cut('丰田太省了', HMM=False) 
jieba.cut('我们中出了一个叛徒', HMM=False)

另附词性标注表如下:

  1. 名词 (1个一类,7个二类,5个三类)
    名词分为以下子类:
    n 名词
    nr 人名
    nr1 汉语姓氏
    nr2 汉语名字
    nrj 日语人名
    nrf 音译人名
    ns 地名
    nsf 音译地名
    nt 机构团体名
    nz 其它专名
    nl 名词性惯用语
    ng 名词性语素
  2. 时间词(1个一类,1个二类)
    t 时间词
    tg 时间词性语素
  3. 处所词(1个一类)
    s 处所词
  4. 方位词(1个一类)
    f 方位词
  5. 动词(1个一类,9个二类)
    v 动词
    vd 副动词
    vn 名动词
    vshi 动词“是”
    vyou 动词“有”
    vf 趋向动词
    vx 形式动词
    vi 不及物动词(内动词)
    vl 动词性惯用语
    vg 动词性语素
  6. 形容词(1个一类,4个二类)
    a 形容词
    ad 副形词
    an 名形词
    ag 形容词性语素
    al 形容词性惯用语
  7. 区别词(1个一类,2个二类)
    b 区别词
    bl 区别词性惯用语
  8. 状态词(1个一类)
    z 状态词
  9. 代词(1个一类,4个二类,6个三类)
    r 代词
    rr 人称代词
    rz 指示代词
    rzt 时间指示代词
    rzs 处所指示代词
    rzv 谓词性指示代词
    ry 疑问代词
    ryt 时间疑问代词
    rys 处所疑问代词
    ryv 谓词性疑问代词
    rg 代词性语素
  10. 数词(1个一类,1个二类)
    m 数词
    mq 数量词
  11. 量词(1个一类,2个二类)
    q 量词
    qv 动量词
    qt 时量词
  12. 副词(1个一类)
    d 副词
  13. 介词(1个一类,2个二类)
    p 介词
    pba 介词“把”
    pbei 介词“被”
  14. 连词(1个一类,1个二类)
    c 连词
    cc 并列连词
  15. 助词(1个一类,15个二类)
    u 助词
    uzhe 着
    ule 了 喽
    uguo 过
    ude1 的 底
    ude2 地
    ude3 得
    usuo 所
    udeng 等 等等 云云
    uyy 一样 一般 似的 般
    udh 的话
    uls 来讲 来说 而言 说来
    uzhi 之
    ulian 连 (“连小学生都会”)
  16. 叹词(1个一类)
    e 叹词
  17. 语气词(1个一类)
    y 语气词(delete yg)
  18. 拟声词(1个一类)
    o 拟声词
  19. 前缀(1个一类)
    h 前缀
  20. 后缀(1个一类)
    k 后缀
  21. 字符串(1个一类,2个二类)
    x 字符串
    xx 非语素字
    xu 网址URL
  22. 标点符号(1个一类,16个二类)
    w 标点符号
    wkz 左括号,全角:( 〔 [ { 《 【 〖 〈 半角:( [ { <
    wky 右括号,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >
    wyz 左引号,全角:“ ‘ 『
    wyy 右引号,全角:” ’ 』
    wj 句号,全角:。
    ww 问号,全角:? 半角:?
    wt 叹号,全角:! 半角:!
    wd 逗号,全角:, 半角:,
    wf 分号,全角:; 半角: ;
    wn 顿号,全角:、
    wm 冒号,全角:: 半角: :
    ws 省略号,全角:…… …
    wp 破折号,全角:—— -- ——- 半角:— ----
    wb 百分号千分号,全角:% ‰ 半角:%
    wh 单位符号,全角:¥ $ £ ° ℃ 半角:$

猜你喜欢

转载自blog.csdn.net/quyuquan2014/article/details/86592036