中文金融领域情感词典构建「建议收藏」

中文金融领域情感词典构建「建议收藏」2019年10月4日-6日Python爬虫与文本分析工作坊&课题申报高级研修班这篇文章是公众号关注者郝童鞋今早发给我的,在此谢谢郝童鞋。文章基于简单算法和人工…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

2019年10月4日-6日

Python爬虫与文本分析工作坊 & 课题申报高级研修班


这篇文章是公众号关注者郝童鞋今早发给我的,在此谢谢郝童鞋。

文章基于简单算法和人工判断,使用多阶段剔除法,构建了 中文金融情感词典CFSDChineseFinancialSentimentDictionary, 这个词典能帮到那些想用文本分析研究会计金融领域的中文文档的研究者。CFSD词典有1489个负面词,1108个正面词。并且简单讨论了CFSD词典的应用领域。

本篇教程主要分为两部分:

  1. 这篇论文如何构建 中文金融情感词典

  2. 大邓将论文附录中的词典整理好给大家用

一、构建中文金融情感词典

情感分析目前有两大方式,情感词典法和机器学习法。基于情感词典的文本分析,必须要有好用的词典。但由于语言差异,英文的情感词典无法直接应用于中文的情感分析,而且目前中文的情感词典(如HOWNET、DLUTSD、NTUSD)都是通用性词典(大多是形容词副词),并不是专业领域词典。Loughran和 McDonald (2011)曾经指出研究商业领域问题的文本数据不应该使用非商业领域数据集构建出的词典。

因此本文作者使用HOWNET、DLUTSD、NTUSD三种词典作为初始词典,并搜集了在线路演纪要(online roadshow transcripts)、业绩说明电话会议纪要(earnings conference call transcripts)、IPO招股报告(IPO prospectus)及公司年报构建了基础语料库。基于算法和人工判断, 使用多阶段剔除法来构建 中文金融情感词典CFSD。具体步骤:

  1. 合并HOWNET、DLUTSD、NTUSD三个情感词典,去除重复词

  2. 收集了1411篇在线路演纪要、7138篇业绩说明电话会议纪要、2043IPO招股报告和29737公司年报。jieba被用于分割文档,构建 基础语料

  3. 计算步骤1所有的词在 基础语料 中的词频,词频数为0的词语不予考虑,剔除掉。与金融不相关的词语也剔除掉,最终构建了 CFSD0.0版本中文金融情感词典。

  4. 所有的CFSD0.0版本的词语都来自与三个通用情感词典(HOWNET、DLUTSD、NTUSD),但这三个词典并不包含金融领域常出现的正面词和负面词。我们人工向 CFSD0.0版情感词典加入了金融领域最常用的100个正面词100个负面词,构建出 CFSD0.1版中文金融情感词典.

  5. Gensim是python中的一个文本分析库,在本步骤主要用来通过大量的语料训练处词向量。词向量可以使用余弦cos计算出相似性。在本步骤,计算出CFSD0.1版中每个词的词向量,进而从 基础语料 中发现每个词(CFSD0.1中的词)最相似的50个词。剔除掉与金融不关的词(包括相似词、同义词),构建出 CFSD0.2版的中文金融情感词典

  6. 合并 CFSD0.0CFSD0.1CFSD0.2,剔除掉重复词,最终构建出 CFSD中文金融情感词典

构件好的CFSD词典有1489个负面词,1108个正面词。

二、词典整理到csv文件中

论文后面富有CFSD情感词典,如下

640?wx_fmt=png

我想先将这些内容全部复制到txt中,正面词表复制粘贴到 正面词典.txt, 负面词表复制粘贴到 负面词典.txt

640?wx_fmt=png

通过中文正则表达式 [\u4e00-\u9fa5]+ 把txt文件里面所有的中文词抽取出来,存到csv文件中。开始~

import jieba	
import re	
import csv	
def extract_keywords(infile, outfile, header):	
    raw_kws_string = open(infile).read()	
    kws = re.findall('[\u4e00-\u9fa5]+', raw_kws_string)	
    csvf = open(outfile, 'w', encoding='gbk', newline='')	
    writer = csv.writer(csvf)	
    writer.writerow((header,))	
    for kw in set(kws):	
        writer.writerow((kw,))	
    csvf.close()	
extract_keywords(infile = '正面词典.txt', 	
                 outfile = '正面词典.csv', 	
                 header = 'postive')	
extract_keywords(infile = '负面词典.txt', 	
                 outfile = '负面词典.csv', 	
                 header = 'negative')

现在我们的项目文件夹中出现了 正面词典.csv负面词典.csv , 现在我们可以试着读取一下 正面词典.csv

import pandas as pd	
#正面词典.csv中有1109个词	
df = pd.read_csv('正面词典.csv', encoding='gbk')	
len(df)

Run

1109

负面词典.csv中有1488个词

df2 = pd.read_csv('负面词典.csv', encoding='gbk')	
len(df2)

Run

1488

词典中的词数与论文中的 1108和 1489有出入,应该是复制粘贴时不够自信。下面我们看看词典中的内容

#正面词典前5	
df.head(5)

640?wx_fmt=png

#负面词典前5	
df2.head(5)

640?wx_fmt=png

至于在python中如何使用这些词典进行文本分析和情感计算, !插播广告^_^

2019年10月4日-6日,杭州 

Python爬虫与文本分析工作坊 & 课题申报高级研修班

咨询请加微信,记得备注”工作坊”

1

640?wx_fmt=jpeg

欢迎扫码咨询!!

后台回复”
2019中秋快乐“, 下载CFSD中文金融情感词典

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172441.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 测试用例附实例[通俗易懂]

    一、测试用例的概念测试用例是测试过程中很重要的一类文档,它是测试工作的核心,是一组在测试时输入和输出的标准,是软件需求的具体对照。二、测试用例的作用检验软件是否满足客户需求 测试人员的工作量的一种体现 展示测试用例的设计思路三、测试用例的内容测试用例八个基本项是:测试用例编号、测试项目、测试标题、重要级别、预置条件、输入、操作步骤、预期输出(不同公司的测试用例内容不尽相同…

    2022年4月13日
    55
  • servlet和jsp中的Request转发,重定向有何区别_jsp重定向和转发的区别

    servlet和jsp中的Request转发,重定向有何区别_jsp重定向和转发的区别转发request.getRequestDispatcher("/index.jsp").forward(request,response);System.out.println("被执行了");index.jsp<html><body><h2>HelloWorld!</h2></body

    2025年10月2日
    0
  • Linux7/Centos7磁盘分区、格式化及LVM管理

    Linux7/Centos7磁盘分区、格式化及LVM管理RHEL7如何对磁盘进行分区和格式化以及如何配置LVM,与以前版本的RHEL区别不大,可以通过disk工具(在图形桌面中运行)或命令工具(如:fdisk、gdisk、parted)管理硬盘设备。fdisk可以配置MBR格式;gdisk配置gpt格式,parted可以自己选择。传统的硬盘分区都是MBR格式,MBR分区位于0扇区,他一共512字节,前446字节是grub引导程序,这个会在后面学习;…

    2022年5月27日
    39
  • 5分钟商学院之个人篇–习惯与素养

    1.高效能人士的习惯思维转换如果只想发生较小的变化,专注于自己的态度和行为;但如果想发生实质性的变化,就需要思维转换,改变理解世界的方式思维转换就是改变人们理解世界的方式,怎样才能打开思维转换

    2021年12月30日
    46
  • 前端面试题:闭包_前端设计模式面试题

    前端面试题:闭包_前端设计模式面试题前段时间一直在投一些中小型公司吧,感觉好久都收不到反馈,也不知道是被淘汰了还是没出结果呢,最近开始投一些大一点的公司准备尝试一下,就在昨天接到面试电话的时候,接受到了滴滴的毒打。跟一些面试不一样的是不只是一些基础的基本概念吧,比如说什么是原型和原型链,说一下继承,讲一下this指向之类的。更多的是为什么要这样用,手写算法,预测输出结果之类的面试题。印象最深刻的应该就是那道关于闭包的题目了吧,是预测一个程序的输出结果,当时看的我是晕头转向,大厂的面试也是招架不住,真的是把我给面到自闭,感觉自己啥也不是,估

    2022年8月29日
    6
  • Java线程同步:synchronized锁住的是代码还是对象

    Java线程同步:synchronized锁住的是代码还是对象在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。Synchronized既可以对代码块使用,也可以加在整个方法上。 关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:classSync{ publicsynchronizedvoidtest

    2022年7月15日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号