基于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分词)相关推荐

  1. 单文本分析--词频统计

    任务说明:读取单个或多个文本内容(txt,word,pdf),对文章进行分词(中文),并统计每个词语出现的次数并按从大到小排序.同时通过停用词库排除停用词,并展示结果读取单个文本内容(txt,word ...

  2. python自然语言处理 分词_Python 自然语言处理(基于jieba分词和NLTK)

    Python 自然语言处理(基于jieba分词和NLTK) 发布时间:2018-05-11 11:39, 浏览次数:1038 , 标签: Python jieba NLTK ----------欢迎加 ...

  3. Java web:基于jieba分词器(或ansj分词器)的文章关键词字符云(词云图)

    上来先丢一个展示图,吸引一下注意力(跑. 上图为对某论文用jieba分词后,计算其逆文档频率(TF-IDF)作为权重,并用echarts的字符云扩展包echarts-wordcloud画出来的字符云图 ...

  4. 【编译原理】Python实现对一个英文文本的词频统计

    利用Python实现对一个英文文本的词频统计.文本链接:https://www.philippinetimes.com/news/257886068/australia-blocks-chinese- ...

  5. java 分词词频_利用word分词来对文本进行词频统计

    标签: 命令行脚本的调用方法如下: 将需要统计词频的文本写入文件:text.txt chmod +x wfs.sh & wfs.sh -textFile=text.txt -statistic ...

  6. Python 自然语言处理(基于jieba分词和NLTK)

    ----------欢迎加入学习交流QQ群:657341423 自然语言处理是人工智能的类别之一.自然语言处理主要有那些功能?我们以百度AI为例 从上述的例子可以看到,自然语言处理最基本的功能是词法分 ...

  7. python 小说词频统计_Python中文分词及词频统计

    中文分词 中文分词(Chinese Word Segmentation),将中文语句切割成单独的词组.英文使用空格来分开每个单词的,而中文单独一个汉字跟词有时候完全不是同个含义,因此,中文分词相比英文 ...

  8. python 小说词频统计,jieba库实例

    以<我的微信连三界>这本小说为例,进行字符统计 对中文.英文.标点符号.数字等分别统计, 统计结果暂时储存在字典 countchr 中 用jieba库的分词功能将文本中所有可能的词(和字符 ...

  9. 【文本处理 词频统计】python 实现词频统计

    自定义词频统计函数:wordcount # -*- encoding=utf-8 -*-import string import pandas as pdword_list=[] freq_list= ...

最新文章

  1. php鼠标已入移除,angularjs鼠标移入移出实现显示隐藏
  2. GOROOT、GOPATH
  3. strcut结构体和char型数组的相互转化
  4. DNS Tunneling及相关实现——总之,你发起攻击都需要一个DNS server,下载一些工具作为client发起数据,server收集数据并响应...
  5. POJ1548最小路径覆盖
  6. 爬虫基本库的使用---urllib库
  7. 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场
  8. 深度学习和目标检测系列教程 12-300:常见的opencv的APi和用法总结
  9. hdu 1800 (map)
  10. matlab时域分析论文,基于Matlab语言的数字信号时域相关性研究与分析.doc
  11. mysql got signal 11_求助 mysqld got signal 11 解决办法
  12. 通信(2)---5G网络到底能带来什么?
  13. linux 错误信息 输出到管道,linux grep通过管道输出到head出现write error: Broken pipe错误...
  14. 使用SSIS包将多个Excel文件中的数据导入SQL Server表中
  15. 计算机域名DNS设置,电脑的IP地址和DNS域名服务器如何设置
  16. python批量创建文件与批量创建文件夹
  17. 关于使用itextpdf生成pdf的页面横向和竖向
  18. in作为介词的用法_英语介词丨in、on 、at 的具体用法到底有哪些?
  19. 超市结算系统|Springboot+Vue通用超市结算收银系统
  20. MXNet作者李沐:我在CMU读博的这五年

热门文章

  1. Unity换脸插件OpenCvForUnity动态创建面部特征点数据
  2. python课程水平测试成绩查询_学业水平测试成绩(学业水平考试成绩查询系统)
  3. 运载火箭六自由度仿真(源代码)
  4. springboot+dubbo+zookeeper+maven搭建微服务详细教程
  5. wamp怎么用mysql_wamp中如何打开mysql
  6. 数据湖之Hudi:基于Spark引擎使用Hudi的DeltaStreamer组件工具
  7. 【数学分析】实/复分析系列文章汇总目录(持续更新中!)
  8. 【Ngnix】可提供负载均衡反向代理的web服务器
  9. 一款短租APP,需要注意哪些?
  10. Node.js高级编程【一】node 基础