马轩

个人主页

欢迎来到我的个人站~


jieba分词

jieba

这篇文章呢来介绍最最强大的分词工具,在此吐槽一下,我在我的mac上安装了window10的虚拟机用了30g的空间(而且耗电量惊人)就为了跑讲老师那个不到1MB的CPP分词工具。

下面我们开始吧。

我是用的是python3,所以一下都是在python 3.8的基础上实现的。平台 macbook pro 2018.

安装

​ pip3 install jeiba /(windows)pip install jieba

特点

​ 它支持四种分词模式:

  • 精确模式:试图将橘子最精确的切开,适合文本分析
  • 全模式:把句子所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义问题。
  • 搜索引擎模式,在精确模式的基础上,对长词在此切分,提高召回率,适合用于搜索引擎分词。
  • paddle模式,利用paddle深度学习框架,(这个东西目前搞不懂,留待以后深入解释)

算法:

+ 基于前缀词典实现高效的词图扫描,生成句子中汉子所有可能成词情况所构成的有向无环图
+ 采用动态规划查找最大概率路径,找出基于词频的最大切分组合
+ 对于未登录词,采用基于汉子成词能力的HMM模型(隐马尔科夫模型),使用viterbi算法。

主要function:

1.分词(使用UTF-8的格式)
  • jeiba.cut 方法接受四个输入参数:
    • 需要分词对的字符字符串;
    • cut_all参数用来控制是否采用全模式;
    • HMM参数用来控制是否使用HMM模型;
    • use_paddle参数用来控制是否使用paddle模式下的分词模式,
  • jieba.cut_for_search 该方法接受两个参数:需要分词的字符串;是否使用HMM模型。这个是为了搜索用的分词方法。
  • 上述两种方法生成的是一个可以迭代的generator,类似于csv中的reader
  • 同时提供了对应的jieba.lcut和jieba.lcut_for_search直接返回list;
2.载入词典
  • 开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
  • 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
  • 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码

参考:https://github.com/fxsjy/jieba

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦