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

表格理解专题(二):单元格的特征提取

单元格的特征提取有什么好的方式

在 GNN 中节点特征的提取至关重要,尤其在表格数据中,不同特征的选择和处理方式会显著影响模型的表现。以下是一些适用于表格数据节点特征的提取方式:

1. 文本嵌入(适用于内容为文本的单元格)

  • 预训练语言模型嵌入:可以使用 BERT、RoBERTa 等预训练的 Transformer 模型,将单元格中的文本内容编码成嵌入向量。这些嵌入向量捕捉了文本内容的语义信息。
  • 词袋(Bag-of-Words)或 TF-IDF:对于内容简单、无上下文的表格,词袋模型或 TF-IDF 也是一种轻量的选择。尽管语义捕捉能力有限,但在特定领域内可能足够有效。
  • 句向量模型:可以采用 Sentence-BERT 或 Universal Sentence Encoder 之类的模型,将文本转为句向量。句向量模型在表达句子级别含义时比单词级模型更高效。

2. 位置编码(Position Encoding)

  • 表格中的单元格具有明确的行列位置,可以使用位置编码来表示每个单元格的相对位置。
  • 行列索引:直接使用行、列的索引数值作为节点的特征之一。例如,第 i 行和第 j 列的单元格可以有一个 (i, j) 的位置编码。
  • 相对位置编码:用 Transformer 中的位置编码方式,将行和列编码到一个固定长度的嵌入向量中。这样能捕捉到单元格的相对位置信息。

3. 数据类型信息

  • 单元格的内容通常有多种类型,如数字、文本、日期等。为每种类型分配一个独热编码或将其嵌入成特征向量,可以帮助模型区分不同的数据类型。
  • 可以提取是否为 数值文本时间日期 等类型作为特征;对于数字型数据,还可以添加统计信息特征。

4. 上下文信息

  • 邻居单元格信息:单元格与其相邻的单元格之间往往有重要的关联。可以直接将相邻单元格的内容信息或嵌入向量拼接作为当前单元格的特征。
  • 行/列的聚合特征:表格中的一行或一列通常表示某种意义上的聚合,像行的平均值、最大值、最小值等聚合信息,可以作为单元格的全局背景特征。

5. 特定规则或先验信息

  • 如果表格具有特定的领域知识(如财务报表中的“总计”或“平均值”单元格),可以提取并编码这些先验信息。
  • 正则表达式:用正则表达式提取特定关键词(如“Total”、“Average”等)或模式(如日期、百分比等),并将结果添加为特征。

6. 基于图的初步特征学习

  • 邻居特征聚合:可以在图构建后对邻居特征进行初步的聚合(如求平均),使每个节点的特征包含它邻居的信息。比如,单元格与其上下文内容通过初步的卷积层先进行邻域信息融合,以帮助捕捉整体模式。
  • 基于子图的卷积:使用 GNN 或 Transformer 初步进行一次子图卷积,将初始单元格特征转换为更复杂的高维表示。此方法可以作为节点初始特征的补充。

7. 跨表格的预训练嵌入

  • 如果有大量表格数据,考虑对单元格内容进行无监督的预训练,以学习更通用的表格嵌入。方法包括 Masked Language Modeling (MLM) 或使用自监督方法(如 Masked Cell Prediction),生成表格特征表示。
  • 这类跨表格的预训练可以帮助模型捕捉到更加通用的表格模式,再通过微调用于节点分类和关系分类任务。

总结

在构建 GNN 模型时,节点特征可以由文本内容、位置编码、数据类型、上下文信息等多方面信息组成。使用上述方法组合构建一个初始节点特征向量,再结合 GNN 层级联操作和多任务学习,模型可以更加准确地捕捉到单元格的类型和关系。


http://www.kler.cn/a/390384.html

相关文章:

  • ubuntu ros 解决建完图后 保存的地图非常小的问题
  • [Docker#8] 容器配置 | Mysql | Redis | C++ | 资源控制 | 命令对比
  • 【juc】AbstractQueuedSynchronized为什么采用双向链表
  • AcWing 300 任务安排1
  • Docker入门系列——Docker-Compose
  • 网络安全-Linux基础(bash脚本)
  • Android源码中如何编译出fastboot.exe和adb.exe程序
  • JavaScript (JS)网页设计案例
  • 理解C语言之深入理解指针
  • 第R2周:LSTM算法详解
  • vscode Markdown
  • 37 string类关键函数的模拟实现
  • linux 下查看程序启动的目录
  • 抢抓5G机遇,AORO A23防爆手机如何直击园区巡检挑战?
  • Spring系统框架
  • Pytorch学习--神经网络--完整的模型训练套路
  • 【韩老师零基础30天学会Java 】06章 数组、排序和查找
  • Android 源码的下载与编译
  • yolo v11相关文件
  • 机器视觉中常用图像处理库都有哪些?重点关注.net
  • Qt 编写插件plugin,支持接口定义信号
  • 【日志】力扣167.两数之和2 - 输入有序数组 // Unity——Roll A Ball(一)
  • diboot低代码中使用junit测试controller,入参不生效问题解决
  • Java学习教程,从入门到精通,Java修饰符语法知识点及案例代码(23)
  • openlayers实现图层裁剪,只展示关心区域,抹掉无关区域,“抠”地图
  • ARM64环境使用docker-compose进行ElasticSearch8集群部署