1. jieba库基本用法

1. 简介

jieba库对中文分词的支持性较好,将文本分成粒度更细的词。详细介绍参见jieba

2. 基本分词函数

jieba.cut以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator。

  • jieba.cut 方法接受三个输入参数:
    • 需要分词的字符串
    • cut_all参数用来控制是否采用全模式
    • HMM 参数用来控制是否使用 HMM 模型
  • jieba.cut_for_search 方法接受两个参数
    • 需要分词的字符串
    • 是否使用 HMM 模型。
    • 该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

jieba.lcut以及jieba.lcut_for_search直接返回 list。

3. 添加用户自定义字典

因为专业需要,我们可以预先指定需要进行分词的词汇。

  1. jieba.load_userdict(file_name)加载用户字典
  2. 少量的词汇可以自己用下面方法手动添加:
    jieba.add_word(word, freq=None, tag=None)jieba.del_word(word)在程序中动态修改词典
    jieba.suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。

4. 关键词提取

基于 TF-IDF 算法的关键词抽取

import jieba.analyse

  • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
    sentence 为待提取的文本
    topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
    withWeight 为是否一并返回关键词权重值,默认值为 False
    allowPOS 仅包括指定词性的词,默认值为空,即不筛选

  • 关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
    • jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径
  • 关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径
    • jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径

基于 TextRank 算法的关键词抽取

  • jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。
  • jieba.analyse.TextRank()新建自定义 TextRank 实例

基本思想:

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

5. 词性标注

  • 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

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

  • 注意,输入参数只接受 unicode
  • 默认模式
  • 搜索模式

7. 其他词典

下载你所需要的词典,然后覆盖 jieba/dict.txt 即可;或者用jieba.set_dictionary('data/dict.txt.big')

猜你喜欢

转载自blog.csdn.net/qq_17249717/article/details/81485248