交易文本数据:情感分析 -另类数据交易- 舆情数据

交易文本数据:情感分析

这是三章中的第一章,专门介绍使用自然语言处理(NLP)和机器学习从文本数据中提取交易策略信号。

文本数据内容丰富但高度非结构化,因此需要更多预处理才能使ML算法提取相关信息。一个关键挑战是在不丢失其含义的情况下将文本转换为数值格式。我们将介绍几种能够捕捉语言细微差异的技术,以便将其用作ML算法的输入。

在本章中,我们将介绍专注于个别语义单元(即单词或称为标记的短语组)的基本特征提取技术。我们将展示如何通过创建文档-术语矩阵来表示文档作为标记计数向量,然后将其用作新闻分类和情感分析的输入。我们还将介绍流行的朴素贝叶斯算法。

在接下来的两章中,我们将在这些技术的基础上使用主题建模和词向量嵌入等ML算法,以捕获更广泛上下文中包含的信息。

内容

  1. 使用文本数据的机器学习 - 从语言到特征
    • 自然语言处理的挑战
    • 应用场景
    • NLP工作流程
  2. 从文本到标记 - NLP管道
    • 代码示例:使用spaCy和textacy的NLP管道
      • 数据
    • 代码示例:使用TextBlob进行NLP
  3. 计算标记 - 文档-术语矩阵
    • 代码示例:使用scikit-learn的文档-术语矩阵
  4. 交易中的NLP:文本分类和情感分析
    • 朴素贝叶斯分类器
    • 代码示例:新闻文章分类
    • 代码示例:情感分析
      • 二分类:Twitter数据
      • 在大型多类Yelp数据集上比较不同的ML算法

使用文本数据的机器学习 - 从语言到特征

鉴于人类使用自然语言进行大量信息交流和存储,文本数据可能非常有价值。与投资相关的数据源范围从公司报表、合同或专利等正式文件,到新闻、观点和分析师研究或评论,再到各种社交媒体帖子或消息。

有用的资源包括:

  • 语音和语言处理, Daniel Jurafsky & James H. Martin, 第3版, 草稿, 2018
  • 统计自然语言处理和基于语料库的计算语言学, 斯坦福大学注释资源列表
  • NLP数据源

自然语言处理的挑战

将非结构化文本转换为机器可读格式需要仔细的预处理,以保留数据的有价值语义方面。人类如何从语言中获取意义并理解内容并不完全被理解,通过机器提高语言理解仍然是一个非常活跃的研究领域。

NLP具有挑战性,因为将文本数据有效用于机器学习需要理解语言的内部工作原理,以及它所指的世界知识。主要挑战包括:

  • 由于多义性导致的歧义(“Local High School Dropouts Cut in Half”)
  • 非标准和不断发展的语言使用,特别是在社交媒体中
  • 习语:“throw in the towel”
  • 实体名称可能很棘手:“Where is A Bug’s Life playing?”
  • 需要对世界的知识:“Mary and Sue are sisters” vs “Mary and Sue are mothers”

应用场景

应用场景描述示例
聊天机器人理解用户的自然语言并返回智能响应Api.ai
信息检索找到相关结果和相似结果Google
信息提取从非结构化文档中提取结构化信息从Gmail中提取事件
机器翻译一种语言到另一种语言Google翻译
文本简化保留文本的含义,但简化语法和词汇Rewordify, 简体中文维基百科
预测性文本输入更快或更容易输入短语补全, 一个更好的应用
情感分析说话者的态度Hater News
自动摘要提取式或抽象式摘要reddit的autotldr算法, autotldr示例
自然语言生成从数据生成文本计算机如何描述体育比赛, 发表者撤回120多篇胡言乱语论文
语音识别和合成语音转文本,文本转语音Google的Web语音API演示, Vocalware文本转语音演示
问答确定问题的意图,将查询与知识库匹配,评估假设Watson如何击败Jeopardy冠军Ken Jennings?, Watson Trivia Challenge, Watson背后的AI

NLP工作流程

使用机器学习从文本数据中提取信号以用于算法交易的一个关键目标是从文档中提取信号。文档是相关文本数据源(如公司报告、标题或新闻文章、推文)的单个样本。语料库是文档的集合。
下图概述了将文档转换为可用于训练能够做出可操作预测的监督机器学习算法的数据集的关键步骤。

从文本到标记 - NLP管道

下表总结了NLP管道的关键任务:

特征描述
标记化将文本分割为单词、标点符号等。
词性标注为标记分配词类型,如动词或名词。
依赖解析标记语法标记依赖关系,如主语<=>宾语。
词干化和词形还原分配单词的基本形式:“was” => “be”, “rats” => “rat”。
句子边界检测找到并分割单个句子。
命名实体识别标记"真实世界"对象,如人物、公司或地点。
相似性评估单词、文本段和文档的相似性。

代码示例:使用spaCy和textacy的NLP管道

笔记本nlp_pipeline_with_spaCy演示了如何使用开源Python库spaCy构建NLP管道。textacy库建立在spaCy之上,提供了对spaCy属性和其他功能的简单访问。

  • spaCy 文档和安装说明
  • textacy依赖于spaCy来解决其他NLP任务 - 参见文档
数据
  • BBC文章,使用原始文本文件
  • TED2013,15种语言的TED演讲字幕的平行语料库

代码示例:使用TextBlob进行NLP

TextBlob库提供了一个简化的界面,用于执行常见的NLP任务,包括词性标注、名词短语提取、情感分析、分类、翻译等。

笔记本nlp_with_textblob说明了它的功能。

  • 文档
  • 情感分析

一个很好的替代方案是NLTK,这是一个用于处理人类语言数据的Python程序的领先平台。它提供了易于使用的接口,可访问50多个语料库和词汇资源,如WordNet,以及用于分类、标记化、词干化、标注、解析和语义推理的一套文本处理库,以及工业级NLP库的包装器,以及一个活跃的讨论论坛。

  • 自然语言工具包(NLTK) 文档

计算标记 - 文档-术语矩阵

本节介绍了词袋模型,它将文本数据转换为数字向量空间表示,允许使用它们的距离比较文档。我们演示了如何使用sklearn库创建文档-术语矩阵。

  • TF-IDF是关于什么重要

代码示例:使用scikit-learn的文档-术语矩阵

scikit-learn预处理模块提供了两种创建文档-术语矩阵的工具。

  1. CountVectorizer使用二进制或绝对计数来测量每个文档d和标记t的术语频率tf(d, t)。
  2. TfIDFVectorizer则将(绝对)术语频率加权为逆文档频率(idf)。因此,在更多文档中出现的术语将比具有相同频率但在所有文档中频率较低的标记获得较低的权重。

笔记本document_term_matrix演示了用法和配置。

交易中的NLP:文本分类和情感分析

一旦使用前几节讨论的自然语言处理技术将文本数据转换为数值特征,文本分类就像任何其他分类任务一样工作。

在本节中,我们将将这些预处理技术应用于新闻文章、产品评论和Twitter数据,并教会各种分类器预测离散新闻类别、评论分数和情感极性。

首先,我们将介绍朴素贝叶斯模型,这是一种概率分类算法,在处理词袋模型生成的文本特征时表现良好。

  • 每日市场新闻情感和股票价格, David E. Allen & Michael McAleer & Abhay K. Singh, 2015, Tinbergen Institute讨论文件
  • 使用情感合成预测经济指标, Abby Levenberg等, 2014
  • 摩根大通NLP研究结果

朴素贝叶斯分类器

朴素贝叶斯算法在文本分类中非常流行,因为其低计算成本和内存需求使其能够在非常大和高维的数据集上进行训练。它的预测性能可以与更复杂的模型相媲美,提供了一个良好的基线,并以成功的垃圾邮件检测而闻名。

该模型依赖于贝叶斯定理和特征彼此独立的假设,给定结果类。换句话说,对于给定的结果,知道一个特征的值(例如文档中标记的存在)不会提供关于另一个特征值的任何信息。

代码示例:新闻文章分类

我们从一个说明朴素贝叶斯模型对2,225篇BBC新闻文章进行分类的例子开始,这些文章我们知道属于五个不同的类别。

笔记本text_classification包含相关示例。

代码示例:情感分析

情感分析是自然语言处理和机器学习在交易中最受欢迎的用途之一,因为资产或其他价格驱动因素的正面或负面观点很可能影响收益。

一般来说,情感分析的建模方法依赖于词典,如TextBlob库,或针对特定领域训练的模型。后者更可取,因为它允许更有针对性的标记,例如将文本特征与随后的价格变化联系起来,而不是间接的情感得分。

请参见data目录中有关获取数据的说明。

二分类:Twitter数据

我们使用一个带有二元极性标签的Twitter数据集以及一个带有五点结果尺度的大型Yelp商业评论数据集,说明情感分析的机器学习。

笔记本sentiment_analysis_twitter包含相关示例。

  • Cheng-Caverlee-Lee 2009年9月 - 2010年1月 Twitter数据抓取
在大型多类Yelp数据集上比较不同的ML算法

为了说明大规模文本处理和分类,我们还使用了Yelp数据集。

笔记本sentiment_analysis_yelp包含相关示例。

  • Yelp数据集挑战赛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/709812.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从大量文本中挖掘‘典型意见‘-基于DBSCAN的文本聚类实战

文本聚类,是一个无监督学习里面非常重要的课题,无论是在风控还是在其他业务中,通过对大规模文本数据的分析,找出里面的聚集观点,有助于发现新的问题或者重点问题。 通过对评论文本的分析,我们可以发现消费者关注的产品或服务痛点 通过对店铺商品标题的文本聚类,可以知…

RS485和CAN电路中的TVS管选择

在RS485和CAN电路设计中&#xff0c;经常要考虑“静电和浪涌保护”&#xff0c;怎么选择TVS管&#xff0c;很少有人讲解。 1、先了解TVS管 TVS管有单向管和双向管&#xff0c;通常后缀为CA的是双向TVS管&#xff0c;只有字母A的是单向TVS管。见下图&#xff1a; 2、TVS选择依…

【LeetCode:2786. 访问数组中的位置使分数最大 + 递归 + 记忆化缓存 + dp】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

关于element-plus中el-select自定义标签及样式的问题

关于element-plus中el-select自定义标签及样式的问题 我这天天的都遇到各种坑&#xff0c;关于自定义&#xff0c;我直接复制粘贴代码都实现不了&#xff0c;研究了一下午&#xff0c;骂骂咧咧了一下午&#xff0c;服气了。官网代码实现不了&#xff0c;就只能 “ 曲线救国 ”…

RK3568技术笔记七 安装Ubuntu Linux

在新弹出的窗口中&#xff0c;单击“CD/DVD &#xff08;SATA&#xff09;”。如下图所示&#xff1a; 在右侧选择“使用ISO映像文件”。然后单击“浏览”&#xff0c;找到SAIL-RK3568开发板光盘->通用工具->虚拟机Ubuntu->ubuntu-18.04.4-desktop-amd64.iso。最后点击…

Java面试题汇总(持续更新.....)

Java面试题 1. JVM & JDK & JRE Java虚拟机&#xff08;JVM&#xff09;是运行Java字节码的虚拟机&#xff0c;JVM有针对不同系统的特定实现&#xff0c;目的是使用相同的字节码&#xff0c;他们都会给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译、…

制作ubuntu18.04 cuda10.2+ROS1的 docker镜像

使用的硬件平台为Xavier NX&#xff0c;系统环境如下图&#xff1a; 搭建docker环境需求跟实际环境一致如下图&#xff1a; 从官网获取cuda10.2版本只有支持x86的&#xff0c;如下网站: https://developer.nvidia.com/cuda-10.2-download-archive 下面从sdk manager中获取方法的…

PAT B1011. A+B和C

题目描述 给定区间[-,]内的三个整数A、B和C,请判断AB是否大于C。 输入格式 第一行给出正整数T(≤10),即测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。输出格式 对每组测试用例,如果AB>C,在一行中输出“Case#: true";否则输出“…

13.ChatGPT 大模型训练核心技术

ChatGPT 大模型训练核心技术 从 GPT-3 到 ChatGPT 的大模型训练技术演进 基于RLHF训练大模型的三阶段 • Domain Specific Pre-Training: Fine-tune a pre-trained LLM on raw text with a Causal Language Modelling Objective.• Supervised fine-tuning: Fine-tune the do…

填表统计预约打卡表单系统(FastAdmin+ThinkPHP+UniApp)

填表统计预约打卡表单系统&#xff1a;一键搞定你的预约与打卡需求​ 填表统计预约打卡表单系统是一款基于FastAdminThinkPHPUniApp开发的一款集信息填表、预约报名&#xff0c;签到打卡、活动通知、报名投票、班级统计等功能的自定义表单统计小程序。 &#x1f4dd; 一、引言…

深入解析B树:数据结构、存储结构与算法优势

一、引言 在计算机科学中&#xff0c;数据结构和算法是核心内容。它们的选择和应用直接影响程序的效率和性能。B树&#xff08;B-Tree&#xff09;作为一种自平衡的多叉树数据结构&#xff0c;广泛应用于数据库和文件系统中。本文将详细介绍B树的数据结构模型、存储结构&#…

算法金 | 再见!!!K-means

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今天我们来聊聊达叔 6 大核心算法之 —— k-means 算法。最早由斯坦福大学的 J. B. MacQueen 于 1967 年提出&#xff0c;后来经过许多…

Liquibase(Oracle SQLcl集成版)简明示例

本文使用的是Oracle SQLcl中集成的Liquibase&#xff0c;而非开源版Liquibase。 Liquibase的快速入门可以参见Liquibase Core Concepts。需要了解一下概念&#xff1a; Change log&#xff1a;基于文本的更改日志文件按顺序列出对数据库所做的所有更改Change set&#xff1a;…

BFD(简单配置实验)

实验拓扑 配置接口IP地址 正常互通 配置静态BFD 查看状态&#xff1a;为UP 与静态路由联动 查看静态路由状态为active 将交换机的接口down掉 BFD的状态为down 再次查看静态路由的状态为Inactive

C++ | Leetcode C++题解之第151题反转字符串中的单词

题目&#xff1a; 题解&#xff1a; class Solution { public:string reverseWords(string s) {int left 0, right s.size() - 1;// 去掉字符串开头的空白字符while (left < right && s[left] ) left;// 去掉字符串末尾的空白字符while (left < right &…

中国首台!紧随美国,重磅发布100比特中性原子量子计算机

2024年6月11日上午&#xff0c;“武汉量子论坛—2024”隆重开幕&#xff0c;国家自然科学基金委员会主任窦贤康院士&#xff0c;武汉大学校长张平文院士&#xff0c;以及叶朝辉、徐红星、祝世宁等院士出席大会。在会议上&#xff0c;中科酷原重磅发布国内首台原子量子计算机——…

安川机器人MA1440减速机维修方法

一、安川机械臂减速器维修方法 1. 齿轮磨损维修 对于轻微磨损的齿轮&#xff0c;可以通过重新调整啮合间隙来恢复性能。对于严重磨损的齿轮&#xff0c;需要更换新安川MA1440机械手齿轮箱齿轮。 2. 轴承损坏维修 对于损坏的轴承&#xff0c;需要更换新的轴承。在更换过程中&…

Dev C++ 安装及使用方法教程-干活多超详细

Dev C 是一款非常好用&#xff0c;简约的C/C开发工具。可以减少很多创建工程的繁琐步骤&#xff0c;很快的进行开发。对于只用于来写代码的人来说&#xff0c;是比较轻量以及极速的。 Dev C 是一个windows下的c和c程序的集成开发环境。它使用mingw32/gcc编译器&#xff0c;遵循…

计算机网络(8) Finite State Machines(有限状态机)

一.建立连接&#xff08;三次握手&#xff09; 建立连接过程中的状态转换如下&#xff1a; 客户端&#xff1a; 发送SYN CLOSED >>>>>>>>>>>>>>SYN SENT(第一次握手) 接收SYNACK发送ACK …

“论面向对象的建模及应用”必过范文,突击2024软考高项论文

论文真题 软件系统建模是软件开发中的重要环节&#xff0c;通过构建软件系统模型可以帮助系统开发人员理解系统&#xff0c;抽取业务过程和管理系统的复杂性&#xff0c;也可以方便各类人员之间的交流。软件系统建模是在系统需求分析和系统实现之间架起的一座桥梁&#xff0c;…