【python】 对上市银行的年报信息进行语义挖掘,计算各银行年报中与金融科技有关的关键词的词向量的余弦相似性,衡量银行的金融科技发展程度。

目录

引言

文本预处理

数据收集

​编辑​编辑

文本清洗

词向量的训练

Word2Vec 的两种主要模型

Word2Vec 的工作原理

训练过程

Word2Vec 的应用

训练模型

建立银行应用金融科技的关键词词库

  关键词

 计算余弦相似度

统计关键词词频

引言

随着金融科技的迅猛发展,其在银行业的应用日益广泛且深入,成为推动银行业数字化转型的重要力量。金融科技不仅改变了传统银行的业务模式和服务方式,还极大地提升了银行的服务效率、风险管理能力和客户体验。因此,准确评估各上市银行在金融科技领域的发展程度,对于理解银行业未来的发展趋势、制定有效的战略决策具有重要意义。

本文旨在通过语义挖掘技术,对上市银行的年报信息进行深入分析,以金融科技相关的关键词为切入点,计算这些关键词词向量的余弦相似性,从而量化衡量各银行在金融科技领域的投入与成效。词向量是自然语言处理中的一项关键技术,它能够将词汇映射到高维向量空间中,使得语义上相似的词汇在向量空间中的位置也相近。通过计算词向量的余弦相似性,我们可以评估不同银行年报中金融科技相关内容的相似度,进而推断出各银行在金融科技领域的发展水平和差异。

具体而言,我们将首先收集并整理上市银行的年报信息,然后利用自然语言处理工具提取金融科技相关的关键词。接下来,采用先进的词嵌入模型(如Word2Vec、BERT等)训练得到这些关键词的词向量。随后,计算各银行年报中金融科技关键词词向量的平均余弦相似性,以此作为衡量银行金融科技发展程度的量化指标。

通过这种方法,我们不仅能够揭示各银行在金融科技领域的相对位置和竞争优势,还能够为银行业金融机构提供有价值的参考信息,帮助其更好地把握金融科技的发展趋势,制定符合自身特点的数字化转型战略。同时,本文的研究也将为学术界和业界探讨金融科技对银行业的影响提供新的视角和思路。

文本预处理

数据收集

首先,需要收集各家上市银行的年报信息。可以通过访问银行官方网站或财经数据提供商获取。

年报通常位于各大银行官网的投资者关系里

文本清洗

  • 分词:使用中文分词工具(如jieba、HanLP等)对年报文本进行分词。
  • 去除标点和停用词:通过正则表达式或其他工具去除文本中的标点符号和停用词(如“的”、“了”、“在”等常见但无实际意义的词汇)。
  • 文本提取:提取出年报中描述银行经营情况的文本部分,这可能需要一些手动筛选或使用正则表达式来定位特定章节。
# 加载停用词列表
with open("./stop_words.gb18030.txt", encoding='gb18030') as f:stopword_list = set(line.strip() for line in f.readlines())
 # 文本预处理:分词、去除标点和停用词seg_list = jieba.cut(text, cut_all=False)filtered_words = [word for word in seg_list if word not in stopword_list and word.strip().isalnum()]filtered_text = ' '.join(filtered_words)

常见的停用词列表如下:

中文停用词表; 哈工大停用词表; 百度停用词表; 机器智能实验室停用词库

链接:https://pan.baidu.com/s/1wb3CdvL-OOWsveKzfkG8og?pwd=0oq7 提取码:0oq7

词向量的训练

Word2Vec 是一种广泛使用的词嵌入方法,它能够将词汇表中的单词或短语映射到高维向量空间中,使得语义上相似的单词在向量空间中的位置也相近。这种方法由 Mikolov 等人在 2013 年提出,并因其高效性和有效性而迅速在自然语言处理(NLP)领域流行开来。

Word2Vec 的两种主要模型

Word2Vec 主要有两种实现方式:Skip-Gram 和 CBOW(Continuous Bag of Words)。

  1. Skip-Gram
    • 在 Skip-Gram 模型中,目标是使用当前词来预测其上下文(即周围的词)。
    • 具体来说,给定一个中心词(center word),模型的目标是最大化从该中心词生成其上下文词(context words)的概率。
    • 这种方法在训练稀有词时通常更有效,因为即使这些词出现的次数很少,也可以通过观察它们的上下文来学习它们的有效表示。
  2. CBOW
    • 与 Skip-Gram 相反,CBOW 模型使用上下文词来预测中心词。
    • 它通过取上下文词的向量表示的平均值(或加权平均值),然后使用这个平均值来预测中心词。
    • CBOW 通常比 Skip-Gram 更快且更容易训练,特别是在大规模数据集上,但在处理罕见词时可能不如 Skip-Gram 有效。

Word2Vec 的工作原理

  • 输入层:接收一个词的索引(通常是在词汇表中的位置),并将其转换为独热编码(one-hot encoding)。
  • 隐藏层:这个层没有激活函数,实际上它只是一个查找表,将每个词的独热编码映射到一个密集的向量表示(即词向量)。
  • 输出层:在 Skip-Gram 中,输出层是一个 softmax 层,用于预测给定中心词的上下文词。在 CBOW 中,输出层也是 softmax 层,但用于预测中心词本身。

训练过程

  • 使用反向传播算法和梯度下降(或其变体,如随机梯度下降 SGD)来训练模型。
  • 在训练过程中,模型会调整隐藏层的权重(即词向量),以最小化预测错误。
  • 随着训练的进行,语义上相似的词会逐渐在向量空间中聚集在一起。

Word2Vec 的应用

Word2Vec 生成的词向量在多种 NLP 任务中都非常有用,包括但不限于:

  • 文本分类
  • 情感分析
  • 命名实体识别
  • 机器翻译
  • 问答系统
  • 语义相似度计算

通过 Word2Vec,我们可以将文本数据转换为数值形式,从而能够利用机器学习算法来处理和分析这些数据。这种方法不仅提高了自然语言处理任务的准确性,还大大简化了特征工程的过程。

训练模型

  • 数据准备:将清洗后的文本转换为适合Word2Vec模型输入的格式(通常是词列表)。
  • 参数设置:设置Word2Vec模型的参数,如向量维度(size)、窗口大小(window)、最小词频(min_count)等。
  • 训练:使用年报文本数据训练Word2Vec模型。
import os
import re
import jieba
from gensim.models import Word2Vecbase_dir = 'data'
sentences = []# 遍历文件夹和文件
for root, dirs, files in os.walk(base_dir):for file in files:if file.endswith('.txt'):file_path = os.path.join(root, file)with open(file_path, 'r', encoding='utf-8') as f:content = f.read()# 使用正则表达式去除单个字母和数字cleaned_content = re.sub(r'\b[a-zA-Z0-9]\b', '', content)# 使用jieba进行分词words = list(jieba.cut(cleaned_content, cut_all=False))# 使用分词结果作为句子sentences.append(words)# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=200, window=5, min_count=10, workers=4)# 保存模型
model_name = "bank_word2vec_model.model"
model.save(model_name)

建立银行应用金融科技的关键词词库

  关键词

  数字化', '智能', '互联网', '线上', '智能化', '供应链', '在线', '人工智能', '自动化',
    '网银', '网上银行', '电商', '网上', '数据中心', '机器人', '分布式', '电子化', '5G',
    '电子商务', '开放平台', '数据挖掘', '人脸识别', '网络化', 'O2O', 'B2B', '云端', '上云',
    '云化', '数据模型', '智慧型', '网上支付', '数据仓库', '量子', 'B2C', '数据共享', '声纹识别',
    'C2B', '人机交互', 'C2C', '虚拟化', '程序接口', '神经网络', '网上交易', '仿真',
    '虚拟现实', '模式识别'

 计算余弦相似度

  • 词向量查询:使用训练好的Word2Vec模型查询每个关键词的词向量。
  • 计算相似度:利用词向量的余弦相似度来度量关键词之间的关联性。余弦相似度可以通过numpy库中的cosine函数计算。
from gensim.models import Word2Vec
# 加载Word2Vec模型
model_path = "bank_word2vec_model.model"
model = Word2Vec.load(model_path)# 定义关键词库
keywords = ['数字化', '智能', '互联网', '线上', '智能化', '供应链', '在线', '人工智能', '自动化','网银', '网上银行', '电商', '网上', '数据中心', '机器人', '分布式', '电子化', '5G','电子商务', '开放平台', '数据挖掘', '人脸识别', '网络化', 'O2O', 'B2B', '云端', '上云','云化', '数据模型', '智慧型', '网上支付', '数据仓库', '量子', 'B2C', '数据共享', '声纹识别','C2B', '人机交互', 'C2C', '虚拟化', '程序接口', '神经网络', '网上交易', '仿真','虚拟现实', '模式识别'
]from sklearn.metrics.pairwise import cosine_similarity
import osdef print_similarities_to_file(keywords, model, output_file):with open(output_file, 'w', encoding='utf-8') as f:for i in range(len(keywords)):for j in range(i + 1, len(keywords)):word1, word2 = keywords[i], keywords[j]if word1 in model.wv and word2 in model.wv:sim = cosine_similarity(model.wv[word1].reshape(1, -1), model.wv[word2].reshape(1, -1))[0][0]f.write(f"{word1} 和 {word2} 的余弦相似度为: {sim:.4f}\n")output_file = 'similarities.txt'# 调用修改后的函数
print_similarities_to_file(keywords, model, output_file)# 验证文件是否已创建
if os.path.exists(output_file):print(f"余弦相似度已成功导出到文件:{output_file}")
else:print("导出文件时出现问题,请检查代码和文件路径。")

统计关键词词频

import os
import jieba
import collections
import pandas as pd
import re# 设置文件夹路径
base_dir = 'data'# 用于存储所有文件的词频
word_freq = collections.Counter()def is_valid_word(word):# 排除空格、单个字符、数字等if len(word) == 1 or word.isdigit() or not re.match(r'[\u4e00-\u9fa5]+', word):  # 只保留中文字符return Falsereturn True# 遍历文件夹和文件
for root, dirs, files in os.walk(base_dir):for file in files:if file.endswith('.txt'):file_path = os.path.join(root, file)with open(file_path, 'r', encoding='utf-8') as f:content = f.read()# 使用jieba进行分词words = jieba.cut(content, cut_all=False)# 筛选有效的词语并更新全局词频计数器for word in words:if is_valid_word(word):word_freq.update([word])# 对词频进行排序,这里选择前1000个高频词
top_words = word_freq.most_common(1000)# 将高频词及其词频转换为DataFrame
df = pd.DataFrame(top_words, columns=['Word', 'Frequency'])# 写入Excel文件
df.to_excel('words.xlsx', index=False)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Linux系统,高效管理Python数据采集程序!

在当今数字化时代,数据的获取和处理变得至关重要。Python 凭借其强大的功能和丰富的库,成为了数据采集的热门选择。而 Linux 系统以其稳定性和高效性,为 Python 数据采集程序的运行提供了理想的环境。 一、Anaconda 的安装 Anaconda 是一个包…

react多级组件间如何传递props

1.使用props属性一级级传递 针对父&#xff0c;子&#xff0c;孙子&#xff0c;如何实现将props从父级传递给孙子。 父&#xff1a; <ParentComponent parent{this} /> //传递this子&#xff1a; <childComponent propsContext{this.props.parent} />孙子&#x…

前端面试题54(断点续传讲解)

断点续传是一种在上传或下载大文件时&#xff0c;如果因为网络问题中断&#xff0c;可以从已经上传或下载的部分继续&#xff0c;而不是重新开始的技术。这对于提高用户体验和节省带宽非常有帮助。下面我将分别从HTTP协议层面、前端实现思路以及一个简单的前端实现示例来讲解断…

【代码随想录算法训练营第六十五天|卡码网94.城市间货物运输IIIIII】

文章目录 94.城市间货物运输ISPFA(bellman_ford队列优化)Bellman_ford判断负权回路 96.城市间货物运输IIIBellman_ford 94.城市间货物运输I SPFA(bellman_ford队列优化) 在bellman_ford的基础上&#xff0c;在每次松弛的时候&#xff0c;只有和前面的结点相连的边的松弛才是有…

linux权限深度解析——探索原理

前言&#xff1a;本节内容主要讲述的是linux权限相关的内容&#xff0c; linux的权限如果使用root账号是感受不到的&#xff0c; 所以我们要使用普通账号对本节相关内容进行学习&#xff0c;以及一些实验的测试。 然后&#xff0c; 通过linux权限的学习我们可以知道为什么有时候…

合合TextIn - 大模型加速器

TextIn是合合信息旗下的智能文档处理平台&#xff0c;在智能文字识别领域深耕17年&#xff0c;致力于图像处理、模式识别、神经网络、深度学习、STR、NLP、知识图谱等人工智能领域研究。凭借行业领先的技术实力&#xff0c;为扫描全能王、名片全能王等智能文字识别产品提供强大…

使用GPT-4和ChatGPT构建应用项目

文章目录 项目1:构建新闻稿生成器项目2:YouTube视频摘要项目3:打造《塞尔达传说:旷野之息》专家项目4:语音控制项目1:构建新闻稿生成器 GPT-4和ChatGPT等LLM专用于生成文本。我们可以使用GPT-4和ChatGPT在各种场景中生成文本,举例如下。 电子邮件合同或正式文档创意写作…

SpringBoot相关

SpringBoot 1. what springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 spring项目搭建的缺点&#xff1a; 配置麻烦依赖繁多tomcat启动慢 2 .springboot的特点(why) 自动配置 springboot的自动配置是一个运行时(更准确地说&#xff0c;是应用程…

关于斯坦福TTT,大家难道没啥可唠的嘛~?

TTT与transformer也好或manba也好它们之间背后的本质思想&#xff0c;表面上来看是对上下文进行状态表征压缩&#xff0c;再细想来看&#xff0c;均是一种对输入自身结构的一种线性建模变换&#xff0c;不过三者间所采用线性建模方法和策略各有不同和优劣&#xff0c;而TTT在这…

加载预训练后的深度网络,使用pytorch框架

用 PyTorch 框架加载预训练模型并进行预测的过程包括以下几个步骤&#xff1a;加载模型、进行图像预处理、进行前向传播以及处理预测结果。以下是一个完整的示例&#xff0c;展示了如何使用预训练的 ResNet50 模型在一张图像上进行预测。 import torch from torchvision impor…

【C++ Primer Plus】学习笔记1

文章目录 前言一、预备知识二、基本语法1.main函数2.有返回值的函数C程序应当为程序中使用的每个函数提供原型3.自定义函数 总结 前言 一直没系统学过C&#xff0c;最近接触了一段时间Java发现还是不太喜欢&#xff0c;所以转向C开发了qaq。因为学过C语言不算零基础了&#xf…

软件杂志软件杂志社软件编辑部2024年第4期目录

基金项目论文 “互联网”环境下智慧教育支撑平台的架构研究 黄孔曜; 1-3 基于机器学习的Web网络爬虫算法优化研究 刘俊培;贾继洋;班岚;迟欢;孙沛叶; 4-7 基于Ant Design Pro的物流系统前端开发与用户体验优化研究 王菊雅; 8-10《软件》投稿&#xff1a;cnqikantg12…

JavaScript 数组常用方法详细教程

在 JavaScript 中&#xff0c;数组是一种非常重要的数据结构&#xff0c;用于存储多个值。JS 提供了许多内置方法来操作数组&#xff0c;使得数据处理变得更加简单和高效。本文将详细介绍一些常用的 JavaScript 数组方法&#xff0c;这些不但是平时开发常用的方法&#xff0c;也…

【建议收藏】一万字图文并茂,终于有人把GPT的玩法整理全了

1. 学生常用 1.1 辅导作业、写作业 打数学建模和写期末作业~ Openai GPT-4o 模型从 2024 年 5 月发布以来&#xff0c;作为各项性能评测综合第一的 GPT。 对于法律类&#xff0c;语言类的作业&#xff0c;随意秒杀了&#xff01;&#xff01; 所以我决定让他做一道高等数学…

抽象代数精解【1】

文章目录 群概述一、群的定义二、群的基本性质三、群的分类与例子四、群的应用 难点与例子 参考文献 群 概述 下面由文心一言生成 数学中的“群”&#xff08;group&#xff09;是一个重要的代数结构概念&#xff0c;它起源于对方程解析解的探索&#xff0c;由伽罗瓦&#xff…

keepalived+nginx实现高可用

1. keepalived需要了解的知识 1.1 业务场景&#xff1a; 如果我们有个网站&#xff0c;最开始只有一台服务器对用户提供服务&#xff0c;业务架构图如下&#xff1a; 当业务量增大时&#xff0c;这台服务器支撑不了那么大的流量&#xff0c;随时会出现宕机的风险&#xff0c;…

Dr4g0nb4ll靶机

信息收集 使用arp-scan生成网络接口地址&#xff0c;查看ip 输入命令&#xff1a; arp-scan -lnmap扫描端口开放 TCP 输入命令&#xff1a; nmap --min-rate 10000 -p- 192.168.187.184 //以最低10000的发包速率扫描全部端口可以看到目标只开放http的22和80端口 UDP …

嵌入式应用开发之代码整洁之道二

前言&#xff1a;本系列教程旨在如何将自己的代码写的整洁&#xff0c;同时本系列参考 正点原子 &#xff0c; C代码整洁之道&#xff0c;编写可读的代码艺术。 #函数的应用规范 #函数作用的功能 函数功能&#xff1a;函数应该只做一件事&#xff0c;做好这件事&#xff0c;只…

鸿蒙Harmony--文本组件Text属性详解

金樽清酒斗十千&#xff0c;玉盘珍羞直万钱。 停杯投箸不能食&#xff0c;拔剑四顾心茫然。 欲渡黄河冰塞川&#xff0c;将登太行雪满山。 闲来垂钓碧溪上&#xff0c;忽复乘舟梦日边。 行路难&#xff0c;行路难&#xff0c;多歧路&#xff0c;今安在&#xff1f; 长风破浪会有…

2024最新国际版抖音TikTok安装教程,免root免拔卡安卓+iOS,附全套安装工具!

我是阿星&#xff0c;今天给大家带来是2024年最新TikTok国际版抖音的下载和安装教程&#xff0c;而且还是免root免拔卡的那种&#xff0c;安卓和iOS都能用哦&#xff01;由于某些原因&#xff0c;国内用户并不能使用TikTok。今天阿星就教一下大家怎么安装TikTok。 TikTok在全球…