一、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 != ' ': 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 + ' ') 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