jieba中文处理 python

一、Jieba中文分词

本文使用jieba进行文本进行分词处理,它有3种模式,精确模式,全模式模式,搜索引擎模式:

· 精确模式:试图将句子最精确地切开,适合文本分析;

· 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

· 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

现以“南京市长江大桥”为例,3种分词模式的结果如下:

【全模式】: 南京 南京市 京市 市长 长江 长江大桥 大桥
【精确模式】: 南京市 长江大桥
【搜索引擎模式】: 南京 京市 南京市 长江 大桥 长江大桥

为了避免歧义和切出符合预期效果,在这里使用精确模式

 1 import jieba
 2 all_mode=jieba.cut('南京市长江大桥',cut_all=True)
 3 alls=" ".join(all_mode)
 4 print('【全模式】:',alls)
 5 jingque=jieba.cut('南京市长江大桥',cut_all=False)
 6 jings=" ".join(jingque)
 7 print('【精确模式】:',jings)
 8 search=jieba.cut_for_search('南京市长江大桥')
 9 searchs=" ".join(search)
10 print('【搜索引擎模式】:',searchs)

二、去停用词

去停用词一般包括三类,

标点符号

特殊符号

无意义的虚词

停用词表

链接:https://pan.baidu.com/s/1sBpZJMDJcbgyA81kC78PRg
提取码:b54i
复制这段内容后打开百度网盘手机App,操作更方便哦

 1 import jieba
 2 # 创建停用词列表
 3 def stopwordslist():
 4     stopwords = [line.strip() for line in open('中文停用词库.txt',encoding='gbk').readlines()]
 5     return stopwords
 6 # 对句子进行中文分词
 7 def seg_depart(sentence):
 8     # 对文档中的每一行进行中文分词
 9     print("正在分词")
10     sentence_depart = jieba.cut(sentence.strip())
11     # 创建一个停用词列表
12     stopwords = stopwordslist()
13     # 输出结果为outstr
14     outstr = ''
15     # 去停用词
16     for word in sentence_depart:
17         if word not in stopwords:
18             if word != '\t':
19                 outstr += word
20                 outstr += " "
21     return outstr
22 if __name__ == '__main__':
23     # 给出文档路径
24     filename = "斗破苍穹.txt"
25     outfilename = "out.txt"
26     inputs = open(filename, 'r', encoding='UTF-8')
27     outputs = open(outfilename, 'w', encoding='UTF-8')
28     
29     # 将输出结果写入ou.txt中
30     for line in inputs:
31         line_seg = seg_depart(line)
32         outputs.write(line_seg + '\n')
33         print("-------------------正在分词和去停用词-----------")
34     outputs.close()
35     inputs.close()
36     print("删除停用词和分词成功!!!")

 

三、去掉高频词,稀有词,和计算Bigrams

去掉高频词、稀有词是针对后续的主题模型(LDA、ATM)时使用的,

主要是为了排除对区隔主题意义不大的词汇,最终得到类似于停用词的效果。

 

Bigrams是为了自动探测出文本中的新词,基于词汇之间的共现关系---如果两个词经常一起毗邻出现,

那么这两个词可以结合成一个新词,比如“数据”、“产品经理”经常一起出现在不同的段落里,

那么,“数据_产品经理”则是二者合成出来的新词,只不过二者之间包含着下划线。

 四、关键词提取

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

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

1 import jieba.analyse
2 #读取文件,返回一个字符串,使用utf-8编码方式读取,该文档位于此python同以及目录下
3 path='斗破苍穹.txt'
4 with open(path,'r',encoding='utf-8')as ff:
5     data=ff.read()
6 #返回词频最高的20个词
7 word=jieba.analyse.extract_tags(data,topK=20)
8 print(' '.join(word))

 

参考文章:https://blog.csdn.net/meiqi0538/article/details/80218870#0203_245

    :https://www.jianshu.com/p/29aa3ad63f9d

    :https://baijiahao.baidu.com/s?id=1587137075873716187&wfr=spider&for=pc

 

 

posted @ 2019-02-15 17:36  北里渡  阅读(1283)  评论(0编辑  收藏  举报