Python jieba分词

作者: 董小贱 | 来源:发表于2018-03-21 17:59 被阅读1334次

1.安装jieba分词

pip install jieba    #有可能会报错,使用清华源没有报错

2.切词的方法:jieba.cut() 和 jieba.cut_for_search()

2.1 jieba.cut()
第一个参数: 需要分词的字符串。
第二个参数: cut_all 控制切词的模式。
    切词模式:
       精确模式:试图将句子最精确地切开,适合文本分析;
       全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义问题;
第三个参数:HMM 参数用来控制是否使用 HMM 模型
2.2 jieba.cut_for_search()
搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

以上两种方式切词,返回的结果是一个可迭代的generator对象,可以进行遍历或者转换为列表进行处理。 jieba.lcut 以及 jieba.lcut_for_search 直接返回 list

3.添加自定义词典:jieba.load_userdict()

参数词典文件路径的字符串,文件格式为utf-8

词典的每行格式分为三个部分(之间用空格隔开):
        第一部分:词语
        第二部分:词频(也可能是权重)
        第三部分:词性 (可忽略不写)

4.关键词提取:jieba.analyse.extract_tags()

4.1关键词提取

先from jieba import anallyse
jieba.analyse.extract_tags(sentence, topK = 20, withWeight = False, allowPOS = ())

参数一:sentence,为提取文本
参数二:topK 返回几个 TF/IDF 权重最大的关键词,默认值为20。
参数三:withWeight:是否一并返回关键词权重值,默认值为False。
参数四:allowPOS:仅包括指定词性的词,默认值为空,即不进行筛选。
参数五:jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件。

4.2 关键词提取停用词

关键词提取所使用停用词(Stop Words)文本语料库可以切换成自定义语料库的路径。
jieba.analyse.set_stop_words(file_name) #file_name为自定义语料库的路径

5.调整词典:add_word()、del_word()和suggest_freq()

  使用 add_word(word, freq=None, tag=None) 和 del_word(word) 可在程序中动态修改词典.

  使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来。

  注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。

6.并行分词(多进程分词)

 基于python的multipprocessing模块,目前不支持windows。
 jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数。
 jieba.disable_parallel()   # 关闭并行分词模式。

注: 本人水平有限, 如有错误欢迎提出指正!如有引用, 请注明出处!!

相关文章

网友评论

  • 4c029998bec7:您好,请问停用词表是需要自己下载的吗,还是系统自带??
    董小贱:@思想_a664 这个报错应该是没有找到停用词词表,请确认词表的位置是否正确, 以及将中文文件名修改成英文的尝试一下!
    4c029998bec7:@董小贱 这是我的代码:import jieba.analyse
    path = 'C:/Users/Administrator/Desktop/chunyu.txt'
    fp = open(path, 'r', encoding='utf-8')
    content = fp.read()
    try:
    jieba.analyse.set_stop_words('C:/Users/Administrator/Desktop/中文停用词表.txt')
    tags = jieba.analyse.extract_tags(content, topK=100, withWeight=True)
    for item in tags:
    print(item[0]+'\t'+str(int(item[1]*1000)))
    finally:
    fp.close()
    这是报的错:
    File "C:/Users/Administrator/PycharmProjects/untitled3/春雨1.py", line 6, in <module>
    jieba.analyse.set_stop_words('C:/Users/Administrator/Desktop/中文停用词表.txt')
    File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\jieba\analyse\__init__.py", line 17, in set_stop_words
    default_tfidf.set_stop_words(stop_words_path)
    File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\jieba\analyse\tfidf.py", line 26, in set_stop_words
    raise Exception("jieba: file does not exist: " + abs_path)
    Exception: jieba: file does not exist: C:\Users\Administrator\Desktop\中文停用词表.txt
    您帮忙看一下
    董小贱:停用词是自己建的, 系统不再带, 按照格式创建自己的停用词库就可以, 自己手动创建
  • Smiley栗子:您好,请问为什么使用jieba.del_word()的时候显示没有这个函数???
    董小贱:@Smiley栗子 不好意思, 好久没回复你, 不知道你的jieba是哪个版本的
    Smiley栗子:@董小贱 我也是python3.6诶,就是用这个函数就会报错显示没有这个函数
    董小贱:你好, 刚才我试了一下, 是没有问题的, 正常使用,jieba的版本: jieba (0.39), 环境python3.6
  • 19029be4e26f:大佬厉害了

本文标题:Python jieba分词

本文链接:https://www.haomeiwen.com/subject/ivxnqftx.html