Kaldi的关键词搜索(Keyword Search,KWS)
本文简单地介绍了KWS的原理——为Lattice中每个词生成索引并进行搜索;介绍了如何处理OOV——替补(Proxy,词典内对OOV的替补)关键词技术;介绍了KWS的语料库格式;介绍了KWS在Kaldi中的示例训练脚本和搜索脚本。
- KWS系统示例:
论文下载:
http://www.clsp.jhu.edu/~guoguo/papers/icassp2013_lexicon_value.pdf
论文标题:QUANTIFYING THE VALUE OF PRONUNCIATION LEXICONS FOR KEYWORD SEARCH IN LOW RESOURCE LANGUAGES
该文介绍了LVCSR和KWS系统、词典扩充方法、词典扩充对LVSCR和KWS的影响。
- KWS系统:根据[2],为Lattice进行索引分为以下几步:
- 为测试集(eval, evalution,评估)中每一语句的有限状态转换器(FST)转换为(如何转换?)泛化因子转换器结构。该结构中,每个词的实例都拥有一个三元组(词的开始时间,词的结束时间,后验概率)。因子转换器,隐含了测试集中所有词序列的逆序(以后验概率排序)列表。可以使用Google OpenFST对其进行进一步的处理。
- 要在上述因子转换器中对某个词或短语进行检索,首先构建该词的有限状态机,然后与因子转换器进行组合(如何组合?),即得到了上述词的逆序列表。
- 使用[20]提出的方法,通过最大化所有关键词的期望词权重值(expected term weighted value,ETWV)(是啥?),估计一个决策阈值(如何估计),用于对各个结果作出Yes/No的决策。
- 最后,所有关键词命中集合将通过NIST 2006 Spoken Term Detection评估协议计算实际词权重值(actual term weighted value)(如何计算)。
某个关键词在测试集中的出现次数=所有预测命中的后验概率。
- 词典扩充对LVCSR和KWS的影响:提高发音词典词汇量,能提升1-4%的识别率,能提升KWS中实际的词加权值约60%的效果。在LVCSR阶段的词典扩充大大优于KWS阶段。
词典扩充只能适度降低WER,但是能很大程度地提高随后的ATWV。
- Lattice索引生成技术:
论文下载:
https://wiki.inf.ed.ac.uk/twiki/pub/CSTR/ListenSemester2201314/taslp_2011.pdf
论文标题:Lattice indexing for spoken term detection
本文为话语检测技术构建反向索引,具体的,在确定的WFST中存储软命中(soft-hit)信息(utterance-id, start time, end time, posterior score四元组,用于与目标词匹配)。展示了如何在多个Lattice中(多个语句中)生成所有子字符串的索引。
ASR候选解码结果通常储存在带权有向无环图——即lattices中。由于有限状态转换器框架提供了通用的搜索、优化、合并算法,通常使用有限状态转换器来表示ASR Lattice。对以WFST形式的lattice进行索引和搜索的问题,可以被看作是在文本文档中对模式进行搜索的扩展。搜索问题的有限解决办法使用了一种称为因子转换器的结构[12]。一个因子转换器是一个组成一篇文档的字符串集合中子字符串集合的倒排索引。因子转换器是一个非常有效的顺序索引,并且十分适用于需要确切序列匹配的话语检出应用。话语段和口语词检测是两种话语应用,分别用于找到语句以及包含查询词确切序列的语句中的时间间隔。
- Proxy关键词技术:
http://www.clsp.jhu.edu/~guoguo/papers/asru2013_proxy_keyword.pdf
基于WFST的框架用于处理OOV,单词级的
什么是segment?
猜测是关键词。为了进行训练,要为训练数据的语句进行切分,切分为关键词的序列。切分后的关键词序列可能会有字重叠。
什么是F4DE,KWS哪里用到了?
猜测在关键词搜索脚本local/kws_search.sh中使用。
Kaldi中关于KWS的示例:
babel/s5b
KWS的5个阶段:
- 使用训练数据集(train)训练一个LVCSR;
- 对测试集进行分段处理;
- 使用LVCSR生成测试集的解码结果(Lattice);
- 生成Latiice的倒排索引;
- 进行关键词的搜索。
KWS的数据准备
需要在KWS数据目录中手工准备以下三个文件:
ecf,检索集相关信息
kwlist,关键词列表
rttm,用于KWS打分
Kaldi的关键词搜索(Keyword Search,KWS)的更多相关文章
- Elasticsearch 全文搜索和keyword search字段的mapping定义
在ES5.0之前我们对于需要keyword search的字段都是这样定义的: { "field name":{ "type": "string&qu ...
- 搜索框中“请输入搜索keyword”
$(function(){ $("#ctl00_txtKey").val("请输入搜索keyword").addClass("search&qu ...
- 读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)
Reference: [1]Y. Tao, S. Papadopoulos, C. Sheng, K. Stefanidis. Nearest Keyword Search in XML Docume ...
- Thinkphp+Ajax带关键词搜索列表无刷新分页实例
Thinkphp+Ajax带关键词搜索列表无刷新分页实例,两个查询条件,分页和搜索关键字,懂的朋友还可以添加其他分页参数. 搜索#keyword和加载内容区域#ajax_lists <input ...
- 集束搜索beam search和贪心搜索greedy search
贪心搜索(greedy search) 贪心搜索最为简单,直接选择每个输出的最大概率,直到出现终结符或最大句子长度. 集束搜索(beam search) 集束搜索可以认为是维特比算法的贪心形式,在维特 ...
- 对《禁忌搜索(Tabu Search)算法及python实现》的修改
这个算法是在听北大人工智能mooc的时候,老师讲的一种局部搜索算法,可是举得例子不太明白.搜索网页后,发现<禁忌搜索(Tabu Search)算法及python实现>(https://bl ...
- 线搜索(line search)方法
在机器学习中, 通常需要求某个函数的最值(比如最大似然中需要求的似然的最大值). 线搜索(line search)是求得一个函数\(f(x)\)的最值的两种常用迭代方法之一(另外一个是trust re ...
- 选择性搜索(Selective Search)
1 概述 本文牵涉的概念是候选区域(Region Proposal ),用于物体检测算法的输入.无论是机器学习算法还是深度学习算法,候选区域都有用武之地. 2 物体检测和物体识别 物体识别是要分辨出图 ...
- MIP启发式求解:局部搜索 (local search)
*本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法. 启发式算法的目的在于短时间内获得较优解. 个人认为局部搜索(local search)几乎 ...
随机推荐
- P1637 三元上升子序列
thair 好,这个naive的东西因为只有三元,很好求解.只要把每个数之前小的L[i]与之后大的R[i]求一下即可. 求两次逆序对即可.那么答案便是∑(L[i]*R[i]); 对于更高元的,胡雨菲写 ...
- (转)source insight的使用方法逆天整理
转载自:https://www.cnblogs.com/xunbu7/p/7067427.html A. why SI: 为什么要用Source Insight呢?因为她比完整的IDE要更快啊,比一般 ...
- Maven初窥门径
Maven项目对象模型,可以使用一小段描述来管理项目的构建,报告和文档的软件项目管理工具. 安装 下载地址:http://maven.apache.org/download.cgi 下载解压,我将它放 ...
- React学习及实例开发(一)——开始(转载)
https://www.cnblogs.com/MaiJiangDou/p/9245063.html#4136668 转载 一.构建一个新项目 1.命令行运行如下命令,构建一个新的react项目 np ...
- HDU 1880 魔咒词典 (Hash)
魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 有限状态机FSM
有限状态机(Finite-state machine)又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.常用与:正则表达式引擎,编译器的词法和语法分析,游戏设计,网络 ...
- Vue(基础三)_监听器与计算属性
一.前言 本文主要涉及: 1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...
- C# BackgroundWorker使用总结
查询了一下MSDN文档,其中微软就BackgroundWorker类的功能有这么一个描述(英文的,根据个人理解翻译):BackgroundWorker类允许您在单独的线程上执行某个可能导致用户界面(U ...
- puppeteer,新款headless chrome
puppeteer puppeteer是一种谷歌开发的Headless Chrome,因为puppeteer的出现,业内许多自动化测试库停止维护,比如PhantomJS,Selenium IDE fo ...
- XML异常
1.com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效 ...