01文本分析---词频统计(基于jieba分词)
基于jiba库分词默认模式分词
一、效果:
1.输出分词和从0开始的一一映射文件
2.输出词频统计文件
3.输出分词文件
二、功能:
1.分词
2.词频统计
3.进行了简单的同义词合并
三、说明:
1.准备用户自定义词典文件(格式:自定义词+空格+词性符号,每行一个词)
2.准备同义词词典文件(格式:准备转化成的那个词+空格+同义词1+空格+同义词2...,每行词数不限)
3.准备停用词词典(每行一个)
4.我的待分词文件是一个csv,第一列是label第二列是要分词内容,根据自己的文件格式在前几行文件导入那块做一下修改就行了
四、代码如下(pycharm)封装成一个函数了
import jieba
"""
准备:待分词文件,第一列为label(情感标签)逗号分割后面是文本内容
输出:1.根据词频由大到小排序后的词频文件fre.txt2.根据词频由大到小排序后词语重新从0映射的文件 word_list.txt3.分词后的文字文件cutted.txt 词语间以空格分开build_vocab函数参数说明:
data_path:数据路径
data_stop_path:停用词典字典
voc_fre_top_n:记录词频排名前n个词
voc_fre_min:记录词的最低词频要求
isprint=False:是否把分词结果存储到out文件中,默认不存储
data_synonym_path:近义词典
data_add_path:自定义词典
"""def build_vocab(data_path, data_stop_path, data_synonym_path, data_add_path, voc_fre_top_n, voc_fre_min, isprint=False):data_list = open(data_path).readlines()[1:]stops_word = open(data_stop_path).readlines()stops_word = [line.strip() for line in stops_word]stops_word.append(' ')stops_word.append('\n')synonym_words_list = open(data_synonym_path).readlines()synonym_dict = {}for i in synonym_words_list:synonym_dict[i.split()[0]] = i.split()[1:]jieba.load_userdict(data_add_path)voc_dict = {}UNK = '<UNK>'PAD = '<PAD>'cutted_list = []# 分词部分for item in data_list[:100]:label = item[0] # 标签列content = item[2:].strip()seg_list = jieba.cut(content)seg_res = []for seg_item in seg_list:#去停用词if seg_item in stops_word:continueseg_res.append(seg_item)for j in synonym_dict.keys():if seg_item in synonym_dict[j]:seg_item = j# 计算词频if seg_item in voc_dict.keys():voc_dict[seg_item] += 1else:voc_dict[seg_item] = 1cutted_list.append(seg_res)voc_fre = sorted([i for i in voc_dict.items() if i[1] > voc_fre_min], key=lambda x: x[1], reverse=True)[:voc_fre_top_n]# 构建词或字到索引的映射 从0开始voc_dict = {word_count[0]: idx for idx, word_count in enumerate(voc_fre)}# 添加未知符和填充符的映射voc_dict.update({UNK: len(voc_dict), PAD: len(voc_dict) + 1})# 输出部分if isprint:ff = open('output/word_list.txt', 'w') # 根据词频由大到小排序后词语重新从0映射的文件 word_list.txtfor i in voc_dict.keys():ff.writelines('{},{}\n'.format(i, voc_dict[i]))ff1 = open('output/fre.txt', 'w') # 根据词频由大到小排序后的词频文件fre.txtfor i in voc_fre:ff1.writelines('{},{}\n'.format(i[0], i[1]))ff2 = open('output/cutted.txt', 'w') # 分词后的文字文件cutted.txt 词语间以空格分开for i in cutted_list:for j in i:ff2.writelines(j + ' ')ff2.writelines('\n')return voc_dict, synonym_dict# data_path='###.csv'
# data_stop_path='/stopword_list.txt'
# voc_fre_top_n=1000
# voc_fre_min=1
# data_synonym_path='synonym.txt'
# data_add_path='/add_word_list.txt'
# build_vocab(data_path, data_stop_path, data_synonym_path, data_add_path, voc_fre_top_n, voc_fre_min, isprint=True)
五、补充一下我的文件结构
01文本分析---词频统计(基于jieba分词)相关推荐
- 单文本分析--词频统计
任务说明:读取单个或多个文本内容(txt,word,pdf),对文章进行分词(中文),并统计每个词语出现的次数并按从大到小排序.同时通过停用词库排除停用词,并展示结果读取单个文本内容(txt,word ...
- python自然语言处理 分词_Python 自然语言处理(基于jieba分词和NLTK)
Python 自然语言处理(基于jieba分词和NLTK) 发布时间:2018-05-11 11:39, 浏览次数:1038 , 标签: Python jieba NLTK ----------欢迎加 ...
- Java web:基于jieba分词器(或ansj分词器)的文章关键词字符云(词云图)
上来先丢一个展示图,吸引一下注意力(跑. 上图为对某论文用jieba分词后,计算其逆文档频率(TF-IDF)作为权重,并用echarts的字符云扩展包echarts-wordcloud画出来的字符云图 ...
- 【编译原理】Python实现对一个英文文本的词频统计
利用Python实现对一个英文文本的词频统计.文本链接:https://www.philippinetimes.com/news/257886068/australia-blocks-chinese- ...
- java 分词词频_利用word分词来对文本进行词频统计
标签: 命令行脚本的调用方法如下: 将需要统计词频的文本写入文件:text.txt chmod +x wfs.sh & wfs.sh -textFile=text.txt -statistic ...
- Python 自然语言处理(基于jieba分词和NLTK)
----------欢迎加入学习交流QQ群:657341423 自然语言处理是人工智能的类别之一.自然语言处理主要有那些功能?我们以百度AI为例 从上述的例子可以看到,自然语言处理最基本的功能是词法分 ...
- python 小说词频统计_Python中文分词及词频统计
中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是同个含义,因此,中文分词相比英文 ...
- python 小说词频统计,jieba库实例
以<我的微信连三界>这本小说为例,进行字符统计 对中文.英文.标点符号.数字等分别统计, 统计结果暂时储存在字典 countchr 中 用jieba库的分词功能将文本中所有可能的词(和字符 ...
- 【文本处理 词频统计】python 实现词频统计
自定义词频统计函数:wordcount # -*- encoding=utf-8 -*-import string import pandas as pdword_list=[] freq_list= ...
最新文章
- php鼠标已入移除,angularjs鼠标移入移出实现显示隐藏
- GOROOT、GOPATH
- strcut结构体和char型数组的相互转化
- DNS Tunneling及相关实现——总之,你发起攻击都需要一个DNS server,下载一些工具作为client发起数据,server收集数据并响应...
- POJ1548最小路径覆盖
- 爬虫基本库的使用---urllib库
- 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场
- 深度学习和目标检测系列教程 12-300:常见的opencv的APi和用法总结
- hdu 1800 (map)
- matlab时域分析论文,基于Matlab语言的数字信号时域相关性研究与分析.doc
- mysql got signal 11_求助 mysqld got signal 11 解决办法
- 通信(2)---5G网络到底能带来什么?
- linux 错误信息 输出到管道,linux grep通过管道输出到head出现write error: Broken pipe错误...
- 使用SSIS包将多个Excel文件中的数据导入SQL Server表中
- 计算机域名DNS设置,电脑的IP地址和DNS域名服务器如何设置
- python批量创建文件与批量创建文件夹
- 关于使用itextpdf生成pdf的页面横向和竖向
- in作为介词的用法_英语介词丨in、on 、at 的具体用法到底有哪些?
- 超市结算系统|Springboot+Vue通用超市结算收银系统
- MXNet作者李沐:我在CMU读博的这五年
热门文章
- Unity换脸插件OpenCvForUnity动态创建面部特征点数据
- python课程水平测试成绩查询_学业水平测试成绩(学业水平考试成绩查询系统)
- 运载火箭六自由度仿真(源代码)
- springboot+dubbo+zookeeper+maven搭建微服务详细教程
- wamp怎么用mysql_wamp中如何打开mysql
- 数据湖之Hudi:基于Spark引擎使用Hudi的DeltaStreamer组件工具
- 【数学分析】实/复分析系列文章汇总目录(持续更新中!)
- 【Ngnix】可提供负载均衡反向代理的web服务器
- 一款短租APP,需要注意哪些?
- Node.js高级编程【一】node 基础