Python中英文文本分析文本可读性情感分析余弦相似度不确定性品牌重要性代码命令包
可以用统计
安装cntext
功能模块cntext含io、model、stats、mind四个模块
- 导入数据用io
- 训练模型扩展词典用model
- 统计词频、情感分析、相似度等用stats
- 可视化模块plot
- 态度认知文化变迁用mind
函数部分加粗的为常用函数。
一、IO模块| 模块 | 函数 | 功能 |
| io | ct.get_dict_list() | 查看cntext内置词典 |
| io | ct.read_yaml_dict(yfile) | 读取内置yaml词典 |
| io | ct.detect_encoding(file, num_lines=100) | 诊断txt、csv编码格式 |
| io | ct.get_files(fformat) | 查看符合fformat路径规则的所有的文件 |
| io | ct.read_yaml_dict(yfile) | 读取内置yaml词典 |
| io | ct.read_pdf(file) | 读取PDF文件 |
| io | ct.read_file(file, encoding) | 读取文件 |
| io | ct.read_files(fformat, encoding) | 读取符合fformat路径规则的所有的文件,返回df |
| io | ct.extract_mda(text, kws_pattern) | 提取A股年报中的MD&A文本内容。如果返回'',则提取失败。 |
| io | ct.traditional2simple(text) | 繁体转简体 |
| io | ct.fix_text(text) | 将不正常的、混乱编码的文本转化为正常的文本。例如全角转半角 |
二、Stats模块| 模块 | 函数 | 功能 |
| stats | ct.term_freq(text, lang='chinese') | 词频统计 |
| stats | ct.readability(text, lang='chinese') | 文本可读性 |
| stats | ct.sentiment(text, diction, lang=‘chinese’) | 无(等)权重词典的情感分析 |
| stats | ct.sentiment_by_valence(text, diction, lang='chinese') | 带权重的词典的情感分析 |
| stats | ct.word_in_context(text, keywords, window=3, lang=‘chinese’) | 在text中查找keywords出现的上下文内容(窗口window),返回df |
| stats | ct.epu(text, e_pattern, p_pattern, u_pattern) | 使用新闻文本数据计算经济政策不确定性EPU,返回df |
| stats | ct.fepu(text, ep_pattern='’, u_pattern='') | 使用md&a文本数据计算企业不确定性感知FEPU |
| stats | ct.semantic_brand_score(text, brands, lang=‘chinese’) | 衡量品牌(个体、公司、品牌、关键词等)的重要性 |
| stats | ct.cosine_sim(text1, text2) | 余弦相似度 |
| stats | ct.jaccard_sim(text1, text2) | Jaccard相似度 |
| stats | ct.minedit_sim(text1, text2) | 最小编辑距离 |
| stats | ct.word_hhi(text) | 文本的赫芬达尔-赫希曼指数 |
三、Plot模块| 模块 | 函数 | 功能 |
| plot | ct.matplotlib_chinese() | 支持matplotlib中文绘图 |
| plot | ct.lexical_dispersion_plot1(text, targets_dict, lang, title, figsize) | 对某一个文本text, 可视化不同目标类别词targets_dict在文本中出现位置 |
| plot | ct.lexical_dispersion_plot2(texts_dict, targets, lang, title, figsize) | 对某几个文本texts_dict, 可视化某些目标词targets在文本中出现相对位置(0~100) |
四、Model模块本部分主要内容是词嵌入模型相关技术, 包括Word2Vec(GLove)的训练、读取、扩展词典。
| 模块 | 函数(类) | 功能 |
| model | ct.W2VModel(corpus_file, encoding, lang=‘chinese’) | 训练Word2Vec |
| model | ct.load_w2v(w2v_path) | 读取cntext2.x训练出的word2vec模型文件 |
| model | ct.expand_dictionary(wv, seeddict, topn=100) | 扩展词典, 结果保存到路径[output/Word2Vec]中 |
| model | ct.Glove(corpus_file, lang='chinese') | 训练GLove模型。 算法运行较慢,吃内存,不推荐!! |
| model | ct.SoPmi(corpus_file, seed_file, lang='chinese') | 共现法扩展词典 |
五、Mind模块词嵌入中蕴含着人类的认知信息,以往的词嵌入大多是比较一个概念中两组反义词与某对象的距离计算认知信息。
本模块主要是利用已训练出的word2vec模型,挖掘潜在的态度偏见、刻板印象等。 这部分难度较大, 建议有精力且电脑性能好的同学可以用 cntext 训练模型, 再来实验Mind模块。
| 模块 | 函数(类) | 功能 |
| mind | ct.sematic_projection(wv, words, c_words1, c_words2) | 测量语义投影 |
| mind | ct.sematic_distance(wv, words, c_words1, c_words2) | 测量语义距离 |
| mind | ct.divergent_association_task(wv, words) | 测量发散思维(创造力) |
| mind | ct.discursive_diversity_score(wv, words) | 测量语言差异性(认知差异性) |
| mind | ct.procrustes_align(base_embed, other_embed) | 两个word2vec进行语义对齐,可反应随时间的社会语义变迁 |