cntext中文文本分析库,可对文本进行词频统计、词典扩充、情绪分析、相似度、可读性等

功能模块含

  • [x] stats 文本统计指标

  • [x] 词频统计

  • [x] 可读性

  • [x] 内置pkl词典

  • [x] 情感分析

  • [x] dictionary 构建词表(典)

  • [x] Sopmi 互信息扩充词典法

  • [x] W2Vmodels 词向量扩充词典法

  • [x] similarity 文本相似度

  • [x] cos相似度

  • [x] jaccard相似度

  • [x] 编辑距离相似度

  • [ ] bias 待开发

喜欢记得收藏、关注、点赞。

⚠️ 【注】资料、代码、交流,文末获取

安装

pip install cntext==1.6

QuickStart

import cntext as cthelp(ct)

Run

Help on package cntext:NAMEcntextPACKAGE CONTENTSbiasdictionarysimilaritystats

一、stats

目前stats内置的函数有

  • readability 文本可读性

  • term_freq 词频统计函数

  • dict_pkl_list 获取cntext内置词典列表(pkl格式)

  • load_pkl_dict 导入pkl词典文件

  • diction 情感分析

import cntext as cttext = '如何看待一网文作者被黑客大佬盗号改文,因万分惭愧而停更。'ct.term_freq(text)

Run

Counter({'看待': 1,'网文': 1,'作者': 1,'黑客': 1,'大佬': 1,'盗号': 1,'改文因': 1,'万分': 1,'惭愧': 1,'停': 1})

1.1 readability

文本可读性,指标越大,文章复杂度越高,可读性越差。

readability(text, language=‘chinese’)

  • text: 文本字符串数据

  • language: 语言类型,“chinese"或"english”,默认"chinese"

中文可读性 算法参考自

徐巍,姚振晔,陈冬华.中文年报可读性:衡量与检验[J].会计研究,2021(03):28-44.

  • readability1 —每个分句中的平均字数

  • readability2 —每个句子中副词和连词所占的比例

  • readability3 —参考Fog Index, readability3=(readability1+readability2)×0.5

以上三个指标越大,都说明文本的复杂程度越高,可读性越差。

import cntext as cttext = '如何看待一网文作者被黑客大佬盗号改文,因万分惭愧而停更。'ct.readability(text, language='chinese')

Run

{'readability1': 13.5,'readability2': 0.08333333333333333,'readability3': 6.791666666666667}

1.2 term_freq

词频统计函数,返回Counter类型

import cntext as ct text = '如何看待一网文作者被黑客大佬盗号改文,因万分惭愧而停更。'ct.term_freq(text)

Run

Counter({'看待': 1,'网文': 1,'作者': 1,'黑客': 1,'大佬': 1,'盗号': 1,'改文因': 1,'万分': 1,'惭愧': 1,'停': 1})

1.3 dict_pkl_list

获取cntext内置词典列表(pkl格式)

import cntext as ct# 获取cntext内置词典列表(pkl格式)
ct.dict_pkl_list()

Run

['DUTIR.pkl','HOWNET.pkl','sentiws.pkl','ChineseFinancialFormalUnformalSentiment.pkl','ANEW.pkl','LSD2015.pkl','NRC.pkl','geninqposneg.pkl','HuLiu.pkl','AFINN.pkl','ADV_CONJ.pkl','LoughranMcDonald.pkl','STOPWORDS.pkl']

词典对应关系, 部分情感词典资料整理自 quanteda.sentiment

pkl文件 词典 语言 功能
DUTIR.pkl 大连理工大学情感本体库 中文 七大类情绪,哀, 好, 惊, 惧, 乐, 怒, 恶
HOWNET.pkl 知网Hownet词典 中文 正面词、负面词
sentiws.pkl SentimentWortschatz (SentiWS) 英文 正面词、负面词;
效价
ChineseFinancialFormalUnformalSentiment.pkl 金融领域正式、非正式;积极消极 中文 formal-pos、

formal-neg;
unformal-pos、
unformal-neg |
| ANEW.pkl | 英语单词的情感规范Affective Norms for English Words (ANEW) | 英文 | 词语效价信息 |
| LSD2015.pkl | Lexicoder Sentiment Dictionary (2015) | 英文 | 正面词、负面词 |
| NRC.pkl | NRC Word-Emotion Association Lexicon | 英文 | 细粒度情绪词; |
| geninqposneg.pkl |
|
|
|
| HuLiu.pkl | Hu&Liu (2004)正、负情感词典 | 英文 | 正面词、负面词 |
| AFINN.pkl | 尼尔森 (2011) 的“新 ANEW”效价词表 | 英文 | 情感效价信息valence |
| LoughranMcDonald.pkl | 会计金融LM词典 | 英文 | 金融领域正、负面情感词 |
| ADV_CONJ.pkl | 副词连词 | 中文 |
|
| STOPWORDS.pkl |
| 中、英 | 停用词 |

注意:

  • 如果用户情绪分析时使用DUTIR词典发表论文,请在论文中添加诸如“使用了大连理工大学信息检索研究室的情感词汇本体” 字样加以声明。参考文献中加入引文“徐琳宏,林鸿飞,潘宇,等.情感词汇本体的构造[J]. 情报学报, 2008, 27(2): 180-185.”

  • 如果大家有制作的词典,可以上传至百度网盘,并在issue中留下词典的网盘链接。如词典需要使用声明,可连同文献出处一起issue

1.4 load_pkl_dict

导入pkl词典文件,返回字典样式数据。

import cntext as ct# 导入pkl词典文件,
print(ct.load_pkl_dict('DUTIR.pkl'))

Run

{'DUTIR': {'哀': ['怀想', '治丝而棼', ...],'好': ['进贤黜奸', '清醇', '放达', ...], '惊': ['惊奇不已', '魂惊魄惕', '海外奇谈',...],'惧': ['忸忸怩怩', '谈虎色变', '手忙脚乱', '刿目怵心',...],'乐': ['百龄眉寿', '娱心', '如意', '喜糖',...],'怒': ['饮恨吞声', '扬眉瞬目',...],'恶': ['出逃', '鱼肉百姓', '移天易日',]}

1.5 sentiment

sentiment(text, diction, language=‘chinese’) 使用diy词典进行情感分析,计算各个情绪词出现次数; 未考虑强度副词、否定词对情感的复杂影响,

  • text: 待分析中文文本

  • diction: 情感词字典;

  • language: 语言类型,“chinese"或"english”,默认"chinese"

import cntext as cttext = '我今天得奖了,很高兴,我要将快乐分享大家。'ct.sentiment(text=text,diction=ct.load_pkl_dict('DUTIR.pkl')['DUTIR'])

Run

{'哀_num': 0,'好_num': 0,'惊_num': 0,'惧_num': 0,'乐_num': 3,'怒_num': 0,'恶_num': 0,'stopword_num': 7,'sentence_num': 1,'word_num': 13}

如果不适用pkl词典,可以自定义自己的词典,例如

import cntext as ctdiction = {'pos': ['高兴', '快乐', '分享'],'neg': ['难过', '悲伤'],'adv': ['很', '特别']}text = '我今天得奖了,很高兴,我要将快乐分享大家。'
ct.sentiment(text, diction)

Run

{'pos_num': 7,'neg_num': 0,'adv_num': 1,'stopword_num': 7,'sentence_num': 1,'word_num': 13}

二、dictionary

本模块用于构建词表(典),含

  • SoPmi 共现法扩充词表(典)

  • W2VModels 词向量word2vec扩充词表(典)

2.1 SoPmi 共现法

import cntext as ct
import ossopmier = ct.SoPmi(cwd=os.getcwd(),input_txt_file='data/sopmi_corpus.txt',  #原始数据,您的语料seedword_txt_file='data/sopmi_seed_words.txt', #人工标注的初始种子词)   sopmier.sopmi()

Run

Step 1/4:...预处理   语料 ...
Loading model cost 0.543 seconds.
Prefix dict has been built successfully.
Step 2/4:...收集 共现词线索 ...
Step 3/4:...计算    互信息 ...
Step 4/4:...保存    候选词 ...
完成! 耗时 49.50996398925781 s

2.2 W2VModels 词向量

特别要注意代码需要设定lang语言参数

import cntext as ct
import os#初始化模型,需要设置lang参数。
model = ct.W2VModels(cwd=os.getcwd(), lang='english')  #语料数据 w2v_corpus.txt
model.train(input_txt_file='data/w2v_corpus.txt')#根据种子词,筛选出没类词最相近的前100个词
model.find(seedword_txt_file='data/w2v_seeds/integrity.txt', topn=100)
model.find(seedword_txt_file='data/w2v_seeds/innovation.txt', topn=100)
model.find(seedword_txt_file='data/w2v_seeds/quality.txt', topn=100)
model.find(seedword_txt_file='data/w2v_seeds/respect.txt', topn=100)
model.find(seedword_txt_file='data/w2v_seeds/teamwork.txt', topn=100)

Run

Step 1/4:...预处理    语料 ...
Step 2/4:...训练   word2vec模型 ...
Step 3/4:...准备 每个seed在word2vec模型中的相似候选词...
Step 4/4 完成! 耗时 60 sStep 3/4:...准备 每个seed在word2vec模型中的相似候选词...
Step 4/4 完成! 耗时 60 sStep 3/4:...准备 每个seed在word2vec模型中的相似候选词...
Step 4/4 完成! 耗时 60 sStep 3/4:...准备 每个seed在word2vec模型中的相似候选词...
Step 4/4 完成! 耗时 60 sStep 3/4:...准备 每个seed在word2vec模型中的相似候选词...
Step 4/4 完成! 耗时 60 s

需要注意

训练出的w2v模型可以后续中使用。

from gensim.models import KeyedVectorsw2v_model = KeyedVectors.load(w2v.model路径)
#找出word的词向量
#w2v_model.get_vector(word)
#更多w2_model方法查看
#help(w2_model)

2.3 co_occurrence_matrix

词共现矩阵

import cntext as ctdocuments = ["I go to school every day by bus .","i go to theatre every night by bus"]ct.co_occurrence_matrix(documents, window_size=2, lang='english')

documents2 = ["编程很好玩","Python是最好学的编程"]ct.co_occurrence_matrix(documents2, window_size=2, lang='chinese')

三、similarity

四种相似度计算函数

  • cosine_sim(text1, text2) cos余弦相似

  • jaccard_sim(text1, text2) jaccard相似

  • minedit_sim(text1, text2) 最小编辑距离相似度;

  • simple_sim(text1, text2) 更改变动算法

算法实现参考自 Cohen, Lauren, Christopher Malloy, and Quoc Nguyen. Lazy prices. No. w25084. National Bureau of Economic Research, 2018.

import cntext as cttext1 = '编程真好玩编程真好玩'
text2 = '游戏真好玩编程真好玩'print(ct.cosine_sim(text1, text2))
print(ct.jaccard_sim(text1, text2))
print(ct.minedit_sim(text1, text2))
print(ct.simple_sim(text1, text2))

Run

0.9999999999999998
1.0
1
0.84375

推荐文章

  • 李宏毅《机器学习》国语课程(2022)来了

  • 有人把吴恩达老师的机器学习和深度学习做成了中文版

  • 上瘾了,最近又给公司撸了一个可视化大屏(附源码)

  • 如此优雅,4款 Python 自动数据分析神器真香啊

  • 梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学

  • 年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

cntext:一款 Python文本分析包相关推荐

  1. Python文本分析---笔记

    Python文本分析 格式化数据:表格.json 非格式化数据:字符串.文本 内容: 1.中文分词 2.自定义词典.去停用词 3.词频统计.关键词抽取 4.案例:招聘需求关键词抽取 一. 中文分词 分 ...

  2. Python文本分析技巧

    上一章提到,Python是一门易用且强大的编程语言,所以本书将其作为示例语言使用,同时也提供了一套基础的Python文本分析的教程. 为什么要介绍这些Python技巧?原因是希望读者具有Python和 ...

  3. python文本分析与挖掘(一)-构建语料库

    实现功能: python文本分析与挖掘(一)-构建语料库 实现代码: import os from warnings import simplefilter simplefilter(action=' ...

  4. python 文本分析_使用Python进行文本分析–书评

    python 文本分析 This is a book review of Text Analytics with Python: A Practical Real-World Approach to ...

  5. python文本分析的开源工具_共有11款Python 中文分词库开源软件

    "哑哈"中文分词,更快或更准确,由你来定义.通过简单定制,让分词模块更适用于你的需求. "Yaha" You can custom your Chinese W ...

  6. 本·拉登的书架:Python文本分析拉登最常念叨什么?

    本文首发于编程派的微信公众号,搜索"codingpy"关注编程派吧. 2015年,美国官方解密了一系列有关本·拉登的文件,其中最引人瞩目的,是美国国家情报总监办公室(The Off ...

  7. python文本分析和提取_python文本分析和提取 Python 文本内容指定字段提取

    使用python对txt文本进行分析和提取 首先,打开计算机上的pycharm编辑器,如下图所示,然后进入下一步. 开学以后,小编没有碰过电脑,第一次,这就说明了开学是多么的可怕 其次,完成上述步骤后 ...

  8. python文本分析库_8种Python文本处理工具集

    文本处理一般包括词性标注,句法分析,关键词提取,文本分类,情感分析等等,这是针对中文的,如果是对于英文来说,只需要基本的tokenize.本文为大家提供了以下这些工具包. 1.Jieba [结巴中文分 ...

  9. Python文本分析-常用中文停用词表(Chinese Stop Words)

    在做jieba中文分词处理,进行文本分析,必不可少的停用词处理,国内比较常用的中文停用词库,有以下几个: 中文停用词表 哈工大停用词表 百度停用词表 四川大学机器智能实验室停用词库 而@elephan ...

  10. python的总结与心得词云设计理念_1 Python文本分析——词云分析篇

    1首先打开Pycharm,创建一个项目,命名English-Wordcloud,然后创建一个English-Wordcloud.py文件,见下图,继而开始敲代码,非常简短的代码. 2 导入词云包,导入 ...

最新文章

  1. window.event.srcElement
  2. Angular--TypeScript finalize 方法
  3. 世界四大重要检索系统简介
  4. 春招,这 110 道 Python 面试题你看了吗?
  5. linux 网卡 开启dhcp,Linux DHCP如何绑定指定的网卡???
  6. python opencv图像匹配_关于python:OpenCV功能匹配多个图像
  7. 数学除了摧残祖国的花朵外,竟然还可以赢钱!
  8. jQuery数据转换与提交
  9. HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)
  10. quartz.net隔一天执行一次_你知多少年的轮回,中秋和国庆在同一天吗?喜相逢必备“蟹”逅礼...
  11. 【Java】浅谈Java的I/O体系
  12. mysql执行计划字段解释
  13. 鼠标移入时闪闪发光的效果
  14. mercury无线路由器设置服务器无响应,有了这款路由器,从此卡顿不存在
  15. Python SciPy教程
  16. 使用JavaScript在Canvas上画出一片星空
  17. KV型内存数据库Redis
  18. python超声检测成像仿真_- 深度体验树莓派3:实操用Python驱动超声测距模块
  19. kali更新grub修复双系统windows10引导启动项
  20. 代码式动态录入生成个人简历页面html页面前端源码

热门文章

  1. USB转232 转TTL概述
  2. MSDEV.EXE 版本
  3. java学习血泪史目录
  4. python怎么修改界面颜色_python中颜色设置
  5. 算法第四版 高清完整中文版(非纸质版)
  6. 中国大学 MOOC C语言程序设计----编程部分答案解析
  7. codejock(codejock chart类)
  8. VC Redist Installer 1.6下载
  9. Java之API的使用
  10. 处女座的期末复习-贪心