关于jieba

全模式和精确模式

  • jieba.cut()
    • 返回迭代器
  • jieba.lcut()
    • 返回list
  • 参数
    • 需要分词的字符串(unicode 或 UTF-8 字符串、GBK 字符串)
    • cut_all 参数:是否使用全模式,默认值为 False
    • HMM 参数:用来控制是否使用 HMM 模型,默认值为 True
  • 示例
# 全模式
seg_list = jieba.cut("他来到上海交通大学", cut_all=True)
print("【全模式】:" + "/ ".join(seg_list))  
# 输出:【全模式】:他/ 来到/ 上海/ 上海交通大学/ 交通/ 大学

# 精确模式
seg_list = jieba.cut("他来到上海交通大学", cut_all=False)
print("【精确模式】:" + "/ ".join(seg_list))  
输出:【精确模式】:他/ 来到/ 上海交通大学

搜索引擎模式

  • 没有cut_all参数
  • 类似于全模式
  • jieba.lcut_for_search
  • jieba.cut_for_search

调整词库

  • 载入词典
    • jieba.load_userdict(file_name)
    • 文件结构
词语 词频(可省略) 词性(可省略)
  • 例如:
创新办 3 i
云计算 5
凱特琳 nz
  • 使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典。
  • 使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。
string_data = '蒋兄弟家里有矿'
t= jieba.cut(string_data,cut_all=False)
print("/ ".join(t))
  • 输出:
蒋/ 兄弟/ 家里/ 有矿
  • 修改
string_data = '蒋兄弟家里有矿'
jieba.del_word('蒋兄弟')  #删除组合
jieba.suggest_freq(('兄','弟'), tune=True) #删除兄弟组合
t= jieba.cut(string_data,cut_all=False)
print("/ ".join(t))
  • 输出
蒋/ 兄/ 弟/ 家里/ 有矿

词性标注

import jieba.posseg as pseg
words = pseg.cut()
word_list
for word in words:  # 循环得到每个分词
    words_list.append((word.word, word.flag))  # 将分词和词性分类追加到列表

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

(jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,
allowPOS=())
其中需要说明的是:
1.sentence 为待提取的文本
2.topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
3.withWeight 为是否一并返回关键词权重值,默认值为 False
4.allowPOS 仅包括指定词性的词,默认值为空,即不筛选
5.withFlag 为是否一并返回关键词词性
posted @ 2019-07-24 21:39  Rener  阅读(196)  评论(0编辑  收藏  举报