文本分类从入门到精通各种模型的学习——Jieba分词。

发布于:2022-11-09 ⋅ 阅读:(4) ⋅ 点赞:(0) ⋅ 评论:(0)

结巴中文分词

Python中文分词组件

四种分词模式

  • 精确模式:试图把句子最精确的切开,适合文本分析。
  • 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式: 在精确模式的基础上,对长词进行切分,提高召回率,适用于搜索引擎分析。
  • paddle模式:利用PaddlePaddle深度学习框架训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。paddle模式使用需安装paddlepaddle-tiny,pip install paddlepaddle-tiny==1.6.1。目前paddle模式支持jieba v0.40及以上版本。jieba v0.40以下版本,请升级jieba,pip install jieba --upgrade 。

算法

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

主要功能

  • jieba.cut 方法接受四个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型;use_paddle 参数用来控制是否使用paddle模式下的分词模式,paddle模式采用延迟加载方式,通过enable_paddle接口安装paddlepaddle-tiny,并且import相关代码;
  • jieba.cut_for_search: 方法接受两个参数,需要分词的字符串,是否使用HMM模型,该方法适用于搜索引擎构建的倒排索引分词,粒度比较细。
  • 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意**:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8**。
  • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
  • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射
  • (全局分词相关函数都是该分词器的映射)

代码示例

paddle模式

contents=['工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',"我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]

```python
contents=['工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作',"我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学"]
for content in contents:
    seg_list=jieba.cut(content,use_paddle=True)#使用paddle模式
    print('Panddle Mode:'+'、'.join(list(seg_list)))
                                                                                                                          

全模式和精确模式

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))#精确模式

通过Viterbi算法新识别

seg_list = jieba.cut("我来到长津湖拍摄地拍摄长津湖电影")  # 默认是精确模式
print(", ".join(seg_list))

``

搜索引擎模式

在这里插入代码片
```seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式
print(", ".join(seg_list))


自定义词典

  • 开发者可以指定自己的自定义词典,以便包含jieba词库里没有的词,虽然jieba有新词识别能力,但是自行添加新词可以保证更高的准确率。
  • 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径。
  • 词典格式和 dict.txt 一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name 若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
  • 词频省略时候,使用自动计算能保证分出该词的词频。

调整词典

  • 使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。
  • 使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
  • 注意:自动计算的词频在使用 HMM 新词发现功能时可能无效
    Gitub

学习心得

会自己慢慢的学习jieba分词,不用刻意学习,
慢慢地复现论文的时候,将各种jieba分词结构全部将其搞定。
耐着性子,用到的时候将jieba分词慢慢的学习完整都行啦的理由与打算。在连接中自己找到jieba分词都行啦的理由与打算。