Test Data for Trading—Sentiment Analysis 代码复现(三)

本文是对《Machine Learning for Algorithmic Trading》第十四章的讲解,复现了使用Python和sklearn进行文本分析的过程。主要内容包括文档-术语矩阵的构建、词频统计、TF-IDF权重计算等,用于文本分类和相似性分析。尽管存在局限性,但这种方法在文本处理中表现出良好效果。
摘要由CSDN通过智能技术生成

Test Data for Trading—Sentiment Analysis系列文章是对《Machine Learning for Algorithmic Trading》第十四章内容的讲解以及相关代码复现。因为中英文的文本分析存在较大差异,顾此系列没有选取中国市场的材料做为代码复现的数据,而是选择书后源代码进行复现。

从token到数字:文档-术语矩阵
词袋模型根据它所包含的术语或标记的频率来表示一个文档。每个文档都是一个向量,词汇表中的每个标记都有一个条目,反映了该标记与文档的相关性。
鉴于词汇表的存在,文档-术语矩阵是可以直接计算的。然而,它也是一种粗略的简化,因为它抽象了词序和语法关系。尽管如此,它往往能在文本分类中迅速取得良好的结果,因此是一个非常有用的起点。
有几种方法来权衡一个标记的向量条目,以捕捉它与文件的相关性。我们将在下面说明如何使用sklearn来使用表示存在或不存在的二进制标志、计数和加权计数,这些计数考虑了所有文档中,即语料库中术语频率的差异。

#引入一些需要的库和包,搭建环境
from collections import Counter
from pathlib import Path
import numpy as np
import pandas as pd
from scipy import sparse
from scipy.spatial.distance import pdist
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
import seaborn as sns
from ipywidgets import interact, FloatRangeSlider
import spacy
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, TfidfTransformer
from sklearn.model_selection import train_test_split

导入前几节提到的bbc数据

#将数据转换成dataframe格式
docs = pd.DataFrame(doc_list, columns=['topic', 'heading', 'body'])
docs.info()

检查结果

docs.sample(10)

在这里插入图片描述BBC数据是从五种文本中提取得到的。

#得到bbc数据中五种类别分别的占比
docs.topic.value_counts(normalize=True).to_frame('count').style.format({
   'count': '{:,.2%}'.format})

在这里插入图片描述得到的bbc文档中五种类型文本的比例如图所示。
1、对Token进行计数

#计算整个语料库中有多少个word
word_count = docs.body.str.split().str.len().sum()
print(f'Total word count: {
     word_count:,d} | per article: 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值