Test Data for Trading–Sentiment Analysis系列文章是对《Machine Learning for Algorithmic Trading》第十四章内容的讲解。因为中英文的文本分析存在较大差异,顾此系列没有选取中国市场的材料做为代码复现的数据,而是选择书后源代码进行复现。
应用:文本数据交易的ML算法依赖于从能够帮助预测未来价格走势的特征中提取有意义的信息。应用范围从新闻的短期市场影响的应用到资产价值的驱动力的长期基本面分析,有如下的例子:
①给产品的评论进行情绪评分,以此来评估公司的竞争地位以及行业走势。
②检测信用合同中的异常情况,以检测违约的概率和影响
③从影响的方向、幅度和受影响的实体角度来预测新闻的影响。
1、从文档到token—NLP管道
在本节中将会演示如何使用开源的python库spaCy来构建一个NLP管道。textacy库建立在spaCy的基础上,并且提供对spaCy属性和其他功能的简单复现。
import warnings
warnings.filterwarnings('ignore')#当代码段中红色警告太多时可以引入warnings包
%matplotlib inline
import sys
from pathlib import Path
import pandas as pd
import spacy#引入spacy包
from spacy import displacy
from textacy.extract import ngrams, entities#引入textacy包
上述代码段已经将spaCy库引入完成,在下段代码中我们继续引入其他需要用到的语言模型。
%%bash
python -m spacy download en_core_web_sm#让spaCy使用英语模型,将模型存储到变量nlp
%%bash
python -m spacy download es_core_news_sm#继续在AnCora语料库和WikiNER上训练的西班牙语言模型
%%bash
python -m spacy link en_core_web_sm en --force;
python -m spacy link es_core_news_sm es --force;#创造快捷方式名称
!{
sys.executable} -m spacy validate#验证是否安装成功
2、获取数据
DATA_1 = Path('..', 'data')
在一个文本上调用spaCy模型时,spaCy会首先对文本进行标记,产生一个文档对象,并且将Doc格式的对象通过处理管道(该管道可以自定义)在默认情况下,它包括一个标记器、一个分析器和一个实体识别器。每个管道组件都返回经过处理的文档,然后将文档再传递给下一个组件。
3、一个简单的分词代码段
import spacy
nlp=spacy.load("en_core_web_sm")
#导入英文处理库,直接写nlp=spacy。load(en)会出现报错
doc=nlp('Weather is so good, very windy and sunny. We can play baseball.')
for token in doc:
pr