当前位置: 首页 > news >正文

CCKS2023-面向上市公司主营业务的实体链接评测-亚军方案

赛题分析

大赛地址

https://tianchi.aliyun.com/competition/entrance/532097/information

任务描述

本次任务主要针对上市公司的主营业务进行产品实体链接。需要获得主营业务中的产品实体,将该实体链接到产品数据库中的某一个标准产品实体。产品数据库将发布在竞赛平台上。比如某一公司主营业务为“主要生产日用居家小家电,生活零售用品等相关产品”,选手从这段话中得到“日用居家小家电”这一产品实体,称为主实体;通过实体链接技术,找到产品数据库中的“生活小件家电”这一标准产品实体,称为链接实体。主实体与链接实体构成一个链接实体对,表示这两个实体是不同名称的相同实体。通过这些链接实体对,从而实现词语消歧以及数据源的融合。选手可以通过合理途径利用其他相关信息辅助任务完成,但是需要在方法描述文档中详细描述如何获取的相关信息以及如何在任务中使用该信息。

任务目标

参赛队伍需要能够准确的从公司主营业务中的出所有产品实体,即主实体,并且需要确定每个主实体在产品数据库中是否存在链接,若存在则需要在产品数据库中找到所有链接实体,形成一个或多个链接实体对,并给出权重,完成实体链接。需要注意的是,一个主实体的所有链接实体的权重相加需要为1。   
数据样例一:

输入:{“companyName”:“xx公司”, “主营业务描述”:“ 公司主要业务为电力、热力生产和供应。”}
输出:{“companyName”:“xx公司”,“EntityPairs”:[[(“电力生产”,“独立电力生产商”,1)],[(“电力供应”,”电力贸易”,1)],[(“热力生产”,”热力的生产和输供”,1)],[(“热力供应”,”热力的生产和输供”,1)]]}

数据样例二:

输入:{“companyName”:“xx公司”, “主营业务描述”:“ 啤酒、饮料制造和销售。”}
输出:{“companyName”:“xx公司”,“EntityPairs”:[[(“啤酒”,“啤酒”,1)],[(“饮料”,”饮料”,1)],[(“啤酒销售”,”啤酒零售”,0.5),(“啤酒销售”,”酒类分销商”,0.5)],[(“饮料销售”,”饮料零售”,1)]]}

任务描述和方案构思

本次任务主要针对上市公司的主营业务进行产品实体链接。首先需要获得主营业务中的产品实体,然后将该实体链接到产品数据库中的某一个标准产品实体。基于此,本方案将赛题任务拆解为三个阶段,如下图所示。

  • 第一阶段:对每个公司的主营文本进行实体抽取,得到待链接的产品实体;
  • 第二阶段:训练向量召回模型,利用产品数据库构建向量索引,并且对每个待链接实体进行向量召回,得到召回候选项;
  • 第三阶段:训练分类排序模型,基于上一阶段得到的召回候选项,进行二分类,得到最终的链接实体;
下面分别对每一个阶段进行详细描述。

任务方案拆解

第一阶段-实体抽取

本阶段任务是对每个公司的主营文本进行实体抽取,得到待链接的产品实体。但是观察数据发现,主营文本中产品实体错综复杂,属于 常规实体、间断实体(非连续实体)和嵌套实体的混合型实体还有一些总结性的实体,单一的实体抽取方案很难处理这种情况。基于此,最终采用采用了两种方案:基于span双指针网络的抽取方案和基于cpt模型的生成式方案。
span双指针网络的抽取方案

在指针标注体系中,使用span模块代替了CRF模块,加快了训练速度,以半指针-半标注的结构预测实体的起始位置,同时标注过程中给出实体类别,简单点说,就是设置两个指针start和end,分别记录每一种实体的开始和结束的位置,并且在记录位置的同时,标注该实体的类别,如上图所示,”商品零售业“和”宾馆旅游业“表示两个实体,但是同属于产品实体一类,实体类别用1表示,最后输出层分别用start dense layer和end dense layer两个指针网络标注两个实体的起始位置和所属类别,最后的损失由两个指针网络的损失累加求和。
训练数据
   
span双指针网络的抽取方案,在训练数据方面,做了一些数据增强,主要集中在两点:
  • 将产品数据库中的数据直接加入训练集,进行模型训练;
  • 使用链接实体替换主营业务文本中的产品实体,进行数据增广;
基于cpt模型的生成式方案

cpt模型是复旦nlp提出的中文生成式模型,本方案基于cpt模型,用于实体抽取。比如某一个公司的主营业务文本为:主营业务为商品零售业和宾馆旅游业,那么具体训练逻辑如下:
  • 训练集输入:主营业务为商品零售业和宾馆旅游业;
  • 训练集标签:商品零售业#宾馆旅游业;
标签使用固定格式,即:使用#进行分割,使用这种生成的方式进行实体抽取。
cpt参考链接:https://github.com/fastnlp/CPT
训练数据
  
基于cpt模型的生成式实体抽取方案,在训练数据方面,做了一点优化:
  • 使用链接实体替换主营业务文本中的产品实体,进行数据增广;
模型融合
   
另外,本阶段使用不同的训练参数(种子、学习率、对抗学习fgm参数、batch_size等等)、不同的初始化模型权重,训练了两个方案的多个模型,每个模型预测一次,生成多个预测文件,进行融合,并且在融合过程中,对于相似的实体,进行实体消歧。

第二阶段-向量召回

本阶段任务是训练向量召回模型,并且利用产品数据库构建向量索引,然后对实体抽取得到的实体(产品实体)进行向量召回,得到召回候选项。
向量召回模型的选择
本方案向量召回模型选择的是基于对比学习的simcse模型,结构如下图,simcse原理这里不再赘述,可自行查阅论文。

向量召回模型训练的数据准备
训练数据主要由两部分组成,正例数据和负例数据。
  • 正例数据:直接使用官方提供的训练数据,使用其中的产品实体和链接实体组成正例对;
  • 负例数据:产品实体从产品数据库中随机选择实体组成负例;
向量索引的构建
向量召回模型训练完成之后,对产品数据库中的每一个产品实体进行向量化表征,然后利用faiss工具构建向量索引库;
实体向量召回
   
基于第一阶段实体抽取得到的实体,对每一个实体进行向量召回,取top30的召回项作为候选项。

第三阶段-分类排序

经过第一阶段和第二阶段,已经得到了公司主营业务文本中的每一个产品实体及其对应的top20候选项,接下来是确定top30候选项中哪些是真正的链接实体,我们选择了二分类来做这个任务。
分类模型
分类模型选择基于bert的二分类模型,如下图所示。

分类模型训练数据
训练数据主要由两部分组成,正例数据和负例数据。
  • 正例数据:直接使用官方提供的训练数据,使用其中的产品实体和链接实体组成正例对;
  • 负例数据:从正例数据中,对产品实体进行向量召回,得到top20候选项,从top20候选项中过滤掉真正的链接实体,剩下的非链接实体与原来的产品实体,组成负例对。举个例子,官方提供的训练数据中,面类和面条分别是产品实体和链接实体,利用向量召回,对面类进行召回,得到两个候选项:面条和面料,显然面类和面料组成一对负例。
分类模型训练完成之后,便可以对公司主营业务文本中的每一个产品实体及其对应的top30候选项,进行分类,确定其真正的链接实体。

总结

最终成绩:初赛第一名,复赛第二名。
另外,感觉给标注数据整体质量不高,存在很多前后冲突、模棱两可的情况,因此榜单上的整体得分都不高。

相关文章:

CCKS2023-面向上市公司主营业务的实体链接评测-亚军方案

赛题分析 大赛地址 https://tianchi.aliyun.com/competition/entrance/532097/information 任务描述 本次任务主要针对上市公司的主营业务进行产品实体链接。需要获得主营业务中的产品实体,将该实体链接到产品数据库中的某一个标准产品实体。产品数据库将发布在竞赛…...

关于我离破500粉丝感受

嘿嘿快破500粉丝啦,加油喔,感谢支持 首先,恭喜我在CSDN上的粉丝数量即将突破500大关!这说明你在这个平台上的内容受到了很多人的关注和认可。 1. 保持高质量的内容输出:粉丝数量的增长与你在CSDN上发布的内容质量密切…...

锁表的原因及解决办法

引言 作为开发人员,我们经常会和数据库打交道。 当我们对数据库进行修改操作的时候,例如添加字段,更新记录等,没有正确评估该表在这一时刻的使用频率,直接进行修改,致使修改操作长时间无法响应&#xff0…...

Kettle 安装配置

文章目录 Kettle 安装配置Kettle 安装Kettle 配置连接 Hive Kettle 安装配置 Kettle 安装 在安装Kettle之前,需要确定已经安装Java运行环境。Kettle需要Java的支持才能运行,JDK的版本最好是8.x的太新的也会出现bug。Kettle的7.1版本的太旧了&#xff0…...

Webgis学习总结

前言: 作者跟随视频学习了webgis内容进行如下学习复习总结 参考:新中地学习笔记 WebGIS第一课:测试高德API并通过: 注册申请高德API成为开发者,创建自己的项目和key进行项目初始化,可以使用JS API官方文…...

【开源】基于Vue+SpringBoot的音乐平台

项目编号: S 055 ,文末获取源码。 \color{red}{项目编号:S055,文末获取源码。} 项目编号:S055,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首…...

20、Resnet 为什么这么重要

(本文已加入“计算机视觉入门与调优”专栏,点击专栏查看更多文章信息)r esnet 这一网络的重要性,上一节大概介绍了一下,可以从以下两个方面来有所体现:第一是 resnet 广泛的作为其他神经网络的 back bone;第二是 resnet 是 AI 芯片厂家对标性能时,在视觉领域尤其是图像…...

Git Bash环境下用perl脚本获取uuid值

在Linux环境下,比如在ubuntu就直接有uuidgen命令直接获取uuid值。在Windows环境下常用的git bash中没有对应的命令,略有不便。这里用脚本写一个uuidgen,模拟Linux环境下的uuidgen命令。 #! /usr/bin/perl use v5.14; use Win32;sub uuidGen {…...

linux安装部署redis

1、下载redis包2、解压3、进入解压路径编译安装4、修改配置文件使redis后台运行5、启动 1、下载redis包 https://redis.io/download/ 2、解压 tar -zxvf redis-7.2.3.tar.gz3、进入解压路径编译安装 cd redis-7.2.3 make && make install默认安装路径: …...

Redis 数据结构详解

分类 编程技术 Redis 数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。 Redis 这么火,它运行有多块?一台普通的笔记本电脑,可以在1秒钟内完成十万次的读写操作。 原子操作:最小的操作单位&a…...

03-IDEA集成Git,初始化本地库,添加远程仓库,提交,拉取,推送,分支的快捷操作

IDEA集成Git 创建Git忽略文件 不同的IDE开发工具有不同的特点文件,这些文件与项目的实际功能无关且不参与服务器上的部署运行, 把它们忽略掉能够屏蔽之间的差异 局部忽略配置文件: 在本地仓库的根目录即项目根目录下直接创建.gitignore文件, 以文件后缀或目录名的方式忽略指定…...

Python---格式化输出与%百分号----涉及转义符 \ 反斜杠的使用

相关链接Python--格式化输出中的转义符号----\t 制表符(空格的)和\n(换行的)_唯元素的博客-CSDN博客 Python---字符串(用单、双引号、 三单/双引号定义。反斜杠 \ 转义,单在双内/双在单内 )-CS…...

大华技术GIS开发工程师24届秋招三场面试Offer面经

本文介绍2024届秋招中,大华技术股份有限公司的GIS开发工程师岗位的3场面试基本情况、提问问题等。 10月投递了大华技术股份有限公司的GIS开发工程师岗位,所在部门为研发中心。目前完成了一面、二面与三面等全部流程,并有幸获得Offer&#xff…...

前端三大MV*模式:MVC、mvvm、mvp模式介绍

MVC(同步通信为主):Model、View、Controller MVP(异步通信为主):Model、View、Presenter MVVM(异步通信为主):Model、View、ViewModel mvc模式介绍 MVC(Model–View–Controller)模式是软件…...

分享一些Git的常用命令

常用命令 命令名称作git config —global user.name 用户名设置用户签名git config —global user.email 邮箱设置用户签名git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m “日志信息” 文件名提交到本地库git reflog查看历史记录git r…...

C语言第四十二弹---使用多种方法实现字符串左旋转

使用多种方法实现字符串左旋转 一、 左移法 思路:每一次通过移动第一个字符,然后把后面的字符前移,然后再进行移动第一个字符再前移。故需要使用嵌套循环,外层循环控制移动第一个字符的次数,第二个循环进行字符前移 …...

REST-Assured--JAVA REST服务自动化测试的Swiss Army Knife

什么是REST-Assured REST Assured是一套基于 Java 语言实现的开源 REST API 测试框架 Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into t…...

docker中的网络不通问题

前言 有时候在使用docker时,会莫名其妙docker内部与外网网络不通 docker与防火墙 docker内部的网络与宿主机的防火墙有千丝万缕的联系,docker启动的那一刻如果防火墙是启动的,docker内部与外部就会走防火墙转发策略,这个时候&a…...

Android 12.0 修改Android系统的通知自动成组的数量

场景: Android 系统对显示在通知列表中的同一个应用的通知进行分组管理,即相同的packageName中,当通知数量达到系统默认指定的数量时,会自动成一组. Android 12.0 中系统默认的自动成组数如下所示: 核心路径 : frameworks/base/core/res/res/values/config.xml<!-- 来自同…...

Debian12配置ssh服务器

Debian12配置ssh服务器 安装ssh-server sudo apt install openssh-server启动ssh sudo systemctl start ssh启用ssh sudo systemctl enable ssh查看ssh状态 sudo systemctl status ssh可以看到有enabled和running字样 说明ssh启用成功 连接到服务器 # username是你的用…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...