System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 解码方法、文本识别方法及装置制造方法及图纸_技高网

解码方法、文本识别方法及装置制造方法及图纸

技术编号:41370109 阅读:3 留言:0更新日期:2024-05-20 10:16
本公开涉及一种解码方法、文本识别方法及装置,用于对端到端模型针对输入进行处理得到的分类结果进行解码,分类结果用于表征输入中不同时间步对应的字符为字符解空间中不同字符的概率值。解码方法包括,针对至少一个时间步迭代执行如下步骤:从大根堆中弹出堆顶元素;针对堆顶元素对应的任意一组字符前缀及字符组合,将字符前缀及字符组合中的第二字符前缀与第二字符进行拼接,将第三字符前缀与字符前缀及字符组合中的第一字符进行拼接,并将拼接得到的字符前缀作为堆元素添加到大根堆中。由此,与CTC Prefix Beam Search相比,针对单个时间步进行解码的时间复杂度可以从O(N<supgt;2</supgt;)降至O(N*log(N))。

【技术实现步骤摘要】

本公开涉及计算机,特别是涉及一种解码方法、文本识别方法及装置


技术介绍

1、端到端(end-to-end,e2e)模型能够针对输入直接得到对应的输出。

2、端到端模型的应用场景可以包括但不限于语音识别、光学字符识别。其中,语音识别,是指识语音所对应的文本,光学字符识别是指识别图像中所包含的文字。

3、e2e模型的典型代表是连接时序分类(connectionist temporalclassification,ctc)模型。ctc模型的解码过程极其关键。以语音识别领域中的ctc解码过程为例,假设有一段时间长度为t的特征序列,模型推理得到t×d的结果(d表示字符的建模单元数量),解码目标就是为每个ti时刻确定字符类别,最终得到长度小于或等于t的最优字符序列(涉及blank或连续字符会去除)。最直观的方式是组合所有的可能,得到每条路径的概率,然后合并相同结果的路径,并加和概率,取值最大的前缀作为结果。这种方法尽管能保证答案是最优的,代价却非常大,罗列所有的组合有dt种可能,通常来说是不能接受的。

4、另一种简单的方式采用贪心算法。即,每个ti时刻取d维中概率值最大的下标所对应的字符作为结果,但结果往往欠优。

5、目前最普遍的做法是采用剪枝搜索算法,在每一时刻先合并前缀一样的,然后扩展只保留top-n个候选,称作ctc prefix beam search(ctc前缀束搜索)。该方法介于暴力组合与贪心算法之间,通过参数n的设置,达到解码精度与速度的平衡。

6、关于ctc prefix beam search的时间复杂度,参见如下分析。

7、当前解码时刻为t,此前保留了n个前缀,t时刻对应的选项有d种可能,由于d往往很大(比如约万级别),因此只会取概率较高的top-m个字符,然后每个字符与所有前缀进行拼接,得到m×n个新的前缀,进一步合并相同前缀,加和对应的概率,重新排序,保留top-n个新的前缀,以此类推解码下一时刻t+1。这里需要说明一下,每个字符与某个前缀进行拼接的过程涉及令牌传播等机制,是个比较复杂的过程,因此可以忽略取top-m个字符的复杂度影响,所以解码一个时刻的时间复杂度为o(n×m),为方便表述,取m=n,即时间复杂度为o(n2)。

8、根据上述分析结果可知,n取值越大,解码结果越接近最优值,但解码速度也会以平方速度下降。所以想要得到更好的解码结果,性能的损失较大。

9、因此,需要一种能够降低时间复杂度的ctc解码方案,以在保证性能的同时取得更好的解码结果。


技术实现思路

1、本公开要解决的一个技术问题是,如何降低ctc解码的时间复杂度,以在保证性能的同时取得更好的解码结果。

2、根据本公开的第一个方面,提供了一种解码方法,用于对端到端模型针对输入进行处理得到的分类结果进行解码,分类结果用于表征输入中不同时间步对应的字符为字符解空间中不同字符的概率值,解码方法包括:针对至少一个时间步迭代执行如下步骤:从大根堆中弹出堆顶元素,大根堆中包括至少一个堆元素,任意一个堆元素对应一个第一字符前缀,堆元素的取值用于表征第一字符前缀的累计概率值,第一字符前缀由至少一组字符前缀及字符组合拼接而成,字符前缀及字符组合中包括一个第二字符前缀和一个第一字符,第二字符前缀为当前字符前缀集合中的一个字符前缀,第一字符为分类结果中与当前时间步对应的概率值中一个概率值所对应的字符,当前字符前缀集合为上一时间步的解码结果所对应的字符前缀集合;针对堆顶元素对应的任意一组字符前缀及字符组合,将字符前缀及字符组合中的第二字符前缀与第二字符进行拼接,将第三字符前缀与字符前缀及字符组合中的第一字符进行拼接,并将拼接得到的字符前缀作为堆元素添加到大根堆中,第二字符为分类结果中与当前时间步对应的概率值中概率值位于第一字符所对应的概率值之后的第一个概率值所对应的字符,第三字符前缀为当前字符前缀集合中累计概率值位于第二字符前缀之后的第一个字符前缀。

3、可选地,解码方法还包括:将分类结果中与第一个时间步对应的概率值中第一数量个最大的概率值所对应的字符作为第一个时间步的解码结果,针对至少一个时间步迭代执行如下步骤,包括:按照先后顺序遍历除第一个时间步之外的所有时间步,并针对任意一个时间步迭代执行如下步骤,其中,满足迭代终止条件下弹出的堆顶元素构成的字符前缀集合即为当前时间步的解码结果。

4、可选地,迭代终止条件为弹出的堆顶元素的数量大于或等于第二数量。

5、可选地,在针对至少一个时间步迭代执行如下步骤之前,解码方法还包括:将当前字符前缀集合中累计概率值最大的字符前缀与分类结果中与当前时间步对应的概率值中最大的概率值所对应的字符进行拼接,将拼接得到的字符前缀作为堆元素添加到大根堆中。

6、可选地,在针对至少一个时间步迭代执行如下步骤之前,解码方法还包括:根据当前字符前缀集合和分类结果中与当前时间步对应的概率值所对应的字符,确定一组或多组目标字符前缀及字符组合,任意一组目标字符前缀及字符组合包括目标字符和目标字符前缀,目标字符与目标字符前缀的最后一个字符相同,或者目标字符为空白字符;将所有组目标字符前缀及字符组合中的目标字符与目标字符前缀进行拼接得到的字符前缀,作为堆元素添加到大根堆中,堆元素的取值为拼接得到的所有与堆元素对应的字符前缀相同的字符前缀的累计概率值之和。

7、可选地,根据当前字符前缀集合和分类结果中与当前时间步对应的概率值所对应的字符,确定一组或多组目标字符前缀及字符组合,包括:构建前缀词典和后缀词典,前缀词典中元素的键用于表征字符前缀,前缀词典中元素的值用于表征字符前缀在当前字符前缀集合中的顺序,后缀词典中元素的键用于表征字符,后缀词典中元素的值用于表征以该字符为最后字符的字符前缀在当前字符前缀集合中的顺序;遍历分类结果中与当前时间步对应的概率值中至少部分概率值所对应的字符,根据前缀词典和后缀词典,确定一组或多组目标字符前缀及字符组合。

8、可选地,在针对至少一个时间步迭代执行如下步骤之前,解码方法还包括:针对分类结果中与当前时间步对应的概率值,仅保留第三数量个最大的概率值。

9、可选地,解码方法还包括:记录添加到大根堆中的字符前缀所对应的字符前缀及字符组合;其中,将字符前缀及字符组合中的第二字符前缀与第二字符进行拼接,将第三字符前缀与字符前缀及字符组合中的第一字符进行拼接,并将拼接得到的字符前缀作为堆元素添加到大根堆中,包括:判断字符前缀及字符组合中的第二字符前缀与第二字符以及第三字符前缀与字符前缀及字符组合中的第一字符,是否属于已经记录的字符前缀及字符组合;若字符前缀及字符组合中的第二字符前缀与第二字符不属于已经记录的字符前缀及字符组合,则将字符前缀及字符组合中的第二字符前缀与第二字符进行拼接得到的字符前缀添加到大根堆中,并且/或者若第三字符前缀与字符前缀及字符组合中的第一字符不属于已经记录的字符前缀及字符组合,则将第三字符前缀与字符前缀及字符组合本文档来自技高网...

【技术保护点】

1.一种解码方法,用于对端到端模型针对输入进行处理得到的分类结果进行解码,所述分类结果用于表征所述输入中不同时间步对应的字符为字符解空间中不同字符的概率值,其特征在于,所述解码方法包括:针对至少一个时间步迭代执行如下步骤,

2.根据权利要求1所述的解码方法,其特征在于,还包括:

3.根据权利要求1所述的解码方法,其特征在于,

4.根据权利要求1所述的解码方法,其特征在于,在针对至少一个时间步迭代执行如下步骤之前,所述解码方法还包括:

5.根据权利要求4所述的解码方法,其特征在于,在针对至少一个时间步迭代执行如下步骤之前,所述解码方法还包括:

6.根据权利要求5所述的解码方法,其特征在于,根据所述当前字符前缀集合和所述分类结果中与当前时间步对应的概率值所对应的字符,确定一组或多组目标字符前缀及字符组合,包括:

7.一种文本识别方法,用于识别输入中包含的文本,其特征在于,包括:

8.一种解码装置,用于对端到端模型针对输入进行处理得到的分类结果进行解码,所述分类结果用于表征所述输入中不同时间步对应的字符为字符解空间中不同字符的概率值,其特征在于,所述解码装置包括迭代处理模块,所述迭代处理模块用于针对至少一个时间步迭代执行如下步骤:

9.一种文本识别装置,用于识别输入中包含的文本,其特征在于,包括:

10.一种计算设备,包括:

...

【技术特征摘要】

1.一种解码方法,用于对端到端模型针对输入进行处理得到的分类结果进行解码,所述分类结果用于表征所述输入中不同时间步对应的字符为字符解空间中不同字符的概率值,其特征在于,所述解码方法包括:针对至少一个时间步迭代执行如下步骤,

2.根据权利要求1所述的解码方法,其特征在于,还包括:

3.根据权利要求1所述的解码方法,其特征在于,

4.根据权利要求1所述的解码方法,其特征在于,在针对至少一个时间步迭代执行如下步骤之前,所述解码方法还包括:

5.根据权利要求4所述的解码方法,其特征在于,在针对至少一个时间步迭代执行如下步骤之前,所述解码方法还包括:

6.根据权利要...

【专利技术属性】
技术研发人员:王靖淞张奕豪涂威威
申请(专利权)人:第四范式北京技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1