jieba文本分词,去除停用词,添加用户词
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import jieba.analyse
from pyquery import PyQuery santi_text = open('./santi.txt', 'r', encoding='utf-8').read() #读取本地文档 jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数 jieba.load_userdict('./userdict.txt')#加载外部 用户词典 # 创建停用词list
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords # 对句子去除停用词
def movestopwords(sentence):
stopwords = stopwordslist('./stop_words.txt') # 这里加载停用词的路径
santi_words =[x for x in sentence if len(x) >1 and x not in stopwords] return santi_words def main():
words = jieba.cut(PyQuery(santi_text).text()) #去除HTML标签
word_list = movestopwords(words) # 去除停用词
words_split = " ".join(word_list) #列表解析为字符串 print('以下是tf-tdf算法-------------------------------------------------')
keywords_tf = jieba.analyse.extract_tags(words_split, topK=100, withWeight=True,allowPOS=('ns', 'n', 'vn', 'v')) # tf-tdf算法
for item in keywords_tf:
print(item[0],item[1]) print('以下是textrank算法-------------------------------------------------')
keywords_rank = jieba.analyse.textrank(words_split, topK=100, withWeight=True,allowPOS=('ns', 'n', 'vn', 'v')) #textrank算法
for item in keywords_rank:
print(item[0],item[1]) print('以下是纯词频统计-------------------------------------------------')
mycount = Counter(word_list) # 统计词频
for key, val in mycount.most_common(100): # 有序(返回前10个)
print(key, val) #alice_mask = np.array(Image.open("./zhihu.png")) #遮罩
wc = WordCloud(
# width=800,
# height=600,
background_color="#000000", # 设置背景颜色
max_words=50, # 词的最大数(默认为200)
max_font_size=400, # 最大字体尺寸
min_font_size=10, # 最小字体尺寸(默认为4)
#colormap='bone', # string or matplotlib colormap, default="viridis"
random_state=42, # 设置有多少种随机生成状态,即有多少种配色方案
#mask=plt.imread("./zhihu.png"), # 读取遮罩图片!!
#mask=alice_mask, #设置遮罩
font_path='./SimHei.ttf'
) my_wordcloud = wc.generate(words_split) #按词频生成词云
plt.imshow(my_wordcloud) #展示词云
plt.axis("off") #去除横纵轴
plt.show()
wc.to_file('zzz.png') # 保存图片文件 if __name__ == '__main__':
main()
jieba文本分词,去除停用词,添加用户词的更多相关文章
- [Python]jieba切词 添加字典 去除停用词、单字 python 2020.2.10
源码如下: import jieba import io import re #jieba.load_userdict("E:/xinxi2.txt") patton=re.com ...
- python jieba分词(添加停用词,用户字典 取词频
中文分词一般使用jieba分词 1.安装 pip install jieba 2.大致了解jieba分词 包括jieba分词的3种模式 全模式 import jieba seg_list = jieb ...
- (3.1)用ictclas4j进行中文分词,并去除停用词
酒店评论情感分析系统——用ictclas4j进行中文分词,并去除停用词 ictclas4j是中科院计算所开发的中文分词工具ICTCLAS的Java版本,因其分词准确率较高,而备受青睐. 注:ictcl ...
- python去除停用词(结巴分词下)
python 去除停用词 结巴分词 import jieba #stopwords = {}.fromkeys([ line.rstrip() for line in open('stopword. ...
- R系列:分词、去停用词、画词云(词云形状可自定义)
附注:不要问我为什么写这么快,是16年写的. R的优点:免费.界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表).小(压缩包就几十M,MATLAB.R2009b ...
- NLP实现文本分词+在线词云实现工具
实现文本分词+在线词云实现工具 词云是NLP中比较简单而且效果较好的一种表达方式,说到可视化,R语言当仍不让,可见R语言︱文本挖掘——词云wordcloud2包 当然用代码写词云还是比较费劲的,网上也 ...
- seo与python大数据结合给文本分词并提取高频词
最近研究seo和python如何结合,参考网上的一些资料,写的这个程序. 目的:分析某个行业(例如:圆柱模板)用户最关心的一些词,根据需求去自动调整TDK,以及栏目,内容页的规划 使用方法: 1.下载 ...
- 更新几篇之前写在公众号上的文章:线性可分时SVM理论推导;关联分析做捆绑销售和推荐;分词、去停用词和画词云
适合阅读人群:有一定的数学基础. 这几篇文章是16年写的,之前发布在个人公众号上,公众号现已弃用.回过头来再看这几篇文章,发现写的过于稚嫩,思考也不全面,这说明我又进步了,但还是作为学习笔记记在这里了 ...
- jieba中文分词(python)
问题小结 1.安装 需要用到python,根据python2.7选择适当的安装包.先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py ...
随机推荐
- 软工实践-Alpha 冲刺 (10/10)
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 完成所有界面的链接,整理与测试 展示GitHub当日代码/ ...
- EXT4+Struts2 JSON的问题
ERROR : Class org.apache.struts2.json.JSONWriter can not access a member of class org.springframewor ...
- HDU 5655 CA Loves Stick 水题
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5656 CA Loves Stick Accepts: 381 Submissions: 3204 ...
- 今目标登录时报网络错误E110
今目标登录的时候报错了,错误代码:E110不论怎么修改都修复不了,百度相关资料也没有,只能联系客服. 经过好久终于联系上了客服,客服给出的解决方案是修改:Enternet选项: 第一步:打开,控制面板 ...
- 结对项目之对PIE的测试程序
项目要求: 构造程序,分别是: 不能触发Fault. 触发Fault,但是不能触发Error. 触发Error,但是不能产生Failure. 结对对象:陈秋月 学号:2013110404 博客地址 ...
- kafka describe 显示结果解释
> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic Topic:my- ...
- 组件式开发框架 craftyjs
想要少写代码,请用组件式开发吧.传统的oop,一直做着重复的事性. 先理解下概念 Entity 实体 An entity is just an ID Compone ...
- 赋予Winform程序管理员访问权限
业务场景:Winform操作系统盘文件夹时进行文件的读写时,会需要管理员权限打开文件. 解决方案: 在项目文件中找到app.manifest文件打开. 替换requestedExecutionLeve ...
- Java对象空间分配流程
对象空间分配流程如下: 针对这个流程,分别解释一下每一个选项的使用场景. 栈上分配: 栈上分配的基础在于逃逸分析,逃逸分析可以得到三种对象的逃逸状态. 全局逃逸:一个对象的引用逃出了方法或者线程. ...
- 第194天:js---函数对象详解(arguments、length)
一.函数即对象 function add1(a,b){ return a+b; } //Function对象的实例 -- 高级技巧 --- 写框架必须用的... //前面表示参数,后面表示函数语句 v ...