Fenrier Lab

如何检测出图片中的表格

通常,在我们使用 OCR 识别图片的时候,模型本身是无法知晓文档结构的,对于那些包含表格的文档,常出现的情况是识别出文字,但丢失了原有的表格结构。针对这一情况,我们来开发一个专门检测图片中表格的算法。 表格检测的具体思路很简单,考虑到表格是由多条线条构成的,因此我们可以首先把这些线条检测出来。在数字图像处理技术中,有一类比较经典的直线检测算法,被称为霍夫变换(Hough transform)。它的具体原理是利用直线极坐标方程 \[r = x \cos \theta + y \sin \theta\] 将 \(x-y\) 平面上的一个点 \((x_0, y_0)\) 变换成 \(\theta-r\) 平面上的曲线 \(r = x_0 \cos \theta + y_0 \sin \...
点我阅读更多...

命名实体识别算法的原理与实现

命名实体识别(NER)是 NLP 里面的一项任务,它的目的是识别出自然语言中我们感兴趣的词语类型,比如人名、地名、数值以及其他专有名词等等,本质上是一种分类算法。 从形式上来看,NER 模型接收自然语句输入,输出每个词的类型,如下图所示 这里的 \(w_1, w_2 ..\) 等可以看作是 word id,\(t_1, t_2…\) 等可以看作是 tag id。而 NER 模型就是一个接收序列化输入的黑箱,它的结构可以是 RNN、LSTM、Transformer 以及各种 Bert。本文将分别使用 LSTM 和 Bert 来展示如何构造 NER 任务的训练框架。 数据集格式说明 NER 任务常用的数据格式一般有 BIO,BIOES 和 BMES,这里我们以最简单的 BIO ...
点我阅读更多...

关于 Transformer 架构的详细分析

在阅读本文之前,可能需要一些前置知识,以防对文中符号和公式感到困惑。 自注意力机制 在 Seq2Seq 模型中,引入的注意力机制着眼于建立输出值与输入序列各单词的关联关系,以最简单的 Seq2Seq 结构为例,权重值的计算依赖于输入单元和输出单元。如下图所示,在计算注意力向量\(c_t\) 的时候,\(h_1\) 的权重 \(\alpha_{t1}\) 依赖于输入隐层单元 \(h_1\) 和输出隐层单元 \(h’_{t-1}\)。 而自注意力则关注输入序列或输出序列各单词内部的关联关系,如果非要用和上图类似的模式,那么自注意力的计算将如下图所示(作为区分,我们用 \(b_s\)表示关于第 \(s\) 个单词的自注意力) 在前文的讨论中,我们已经知道了输入输出之间的注意力...
点我阅读更多...

对注意力机制的一些理解(后篇)

在上一篇文章中,不太正式地介绍了注意力机制,我们从概念上了解到注意力机制的实质是在输出每个预测单词的时候输入单词有不同的权重,本篇文章希望从算法角度来进一步解释。 基于 RNN 的 Encoder-Decoder 结构 Kyunghyun Cho 在论文 Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation 中提出了基于 RNN 的 Encoder-Decoder 结构,它的编码器是一个 RNN,在时刻 \(t\) 的隐层状态为 \[h_{t} = f(h_{t-1}, x_t)\] 其中 \(h\) 为隐层状态,\(x\) 为输入词(记住它们都...
点我阅读更多...

对注意力机制的一些理解

从 RNN 说起 一个典型的前馈网络结构如下图所示 如果我们简化一下,把每层节点用一个圆圈表示,则如下图 其中 \(x, h, y\) 分别是输入向量,隐层节点值和输出向量,\(U, V\) 分别表示两层的权重矩阵。该前馈网络的计算过程如下式 \[h = f(x, U)\\ y = f(h, V)\] 这里的 \(f\) 表示前馈过程,包含了计算和激活两个部分。 以上是普通前馈网络的情况,RNN 与它的区别在于,隐层节点值一方面传向输出节点,另一方面反过来和下一个输入相结合成为新的输入量。 其中的 \(W\) 是隐层节点的权重矩阵。该网络的计算过程如下 \[h_t = f(x, h_{t-1}, U, W)\\ y_t = g(h_t, V)\] ...
点我阅读更多...