参考依据

Weighted Finite-State Transducer Algorithms An Overview
这是一篇由纽约计算机和数学教授,同时也是全球人工智能超级大咖Mehryar Mohri在美国最大电信公司AT & T 工作期间撰写的论文《加权有限状态转换器算法概述》,原文专业术语和数学概念太多,非数学和计算机科学专业的很难读懂,但是身为一个IT民工也不需要我们能完全读懂,所以这里我只讲FST在Lucene中的应用,用来补充我的上一篇文章《Elasticsearch原理分析》

简介

Finite StateTransducers 简称 FST,通常中文译作有穷状态转换器或者有限状态传感器,我更偏向于后者,因为后者更加贴近原意。FST目前在语音识别和自然语言搜索、处理等方向被广泛应用。

原理

FST的功能更类似于字典,Lucene4.0在查找Term时使用了FST算法,用来快速定位Term的位置。FST的数据结构可以理解成(key,value)的形式,
在同义词过滤器SynonymFilter的实现中甚至可以用HashMap代替,不过相比较于HashMap,可以表示成:FST<key,value>的形式。
它的优点是:

  1. 可以用O(length(key)) 也就是查询时间复杂度来找到key对应的value。
  2. 在Lucene的term压缩存储中,FST以字节的方式来存储所有的Term,重复利用Term Index的前缀和后缀,使Term Index小到可以放进内存,减少存储空间,不过相对的也会占用更多的cpu资源。
  3. FST还可以用来快速确定term是否在系统中。
    如何构建一个FST?假设有如下的Term Index(是排序过的):
String inputValues[] = {"mop","moth","pop","star","stop","top"};
long outputValues[] = {0,1,2,3,4,5};


从上图我们可以感知一下FST的构建过程
1.创建一个节点node作为所有key的入口
2.如果还要未处理的key,则枚举出该key的每一个label
3.如果当前节点存在含此label的边,
则如果Value包含该边的out值,则
value = value – out
否则 temp=out–Value;
out =value并使下一个节点的所有边out都加上temp。
如果下一节点是Final节点 则FinalOut += temp
进入下一个节点
否则: 新建一个节点另其out = Value, Value = 0。

使用场景

to be continue…

FST(Finite-State Transducer) 原理相关推荐

  1. lucene随笔-FST(Finite State Transducer)有限状态传感器

    lucene版本:6.5.1 有限状态传感器,FST(Finite State Transducer)在lucene中扮演着非常重要的一个角色,在4.0后的版本lucene大量使用了这种数据结构,主要 ...

  2. 字典数据结构-FST(Finite State Transducers)

    http://www.cnblogs.com/LBSer/p/4119841.html 1 lucene字典 使用lucene进行查询不可避免都会使用到其提供的字典功能,即根据给定的term找到该te ...

  3. FST(Finite State Transducers, 有限状态转换器)简介及示例

    一.简介 Finite State Transducers 简称 FST, 中文名:有穷状态转换器.FST目前在语音识别和自然语言搜索.处理等方向被广泛应用. 例如,在自然语言处理中,经常会遇到一些针 ...

  4. 【Elasticsearch】es FST (Finite State Tranduer) 有限状态转换器

    1.概述 FST 有限状态转换器 有一篇博客我有翻译到这篇博客. 参考:[elasticsearch]You AutoComplete Me FST数构建的树如下 演示网站地址:http://exam ...

  5. 证明与计算(7): 有限状态机(Finite State Machine)

    什么是有限状态机(Finite State Machine)? 什么是确定性有限状态机(deterministic finite automaton, DFA )? 什么是非确定性有限状态机(nond ...

  6. 计算机态,(计算机)有限态自动机,FSM(finite state machine),音标,读音,翻译,英文例句,英语词典...

    补充资料:ω-有限自动机 ω-有限自动机 ω-finite state automata 1094·.一youx一anz}dongJ-..有限自动机(.一rinite state automata)一 ...

  7. 有限状态机FSM(finite state machine) 二

    有限状态机FSM(finite state machine) 二 延续上一篇继续有限状态机 上一篇中的状态切换判断是在每一个状态类的 OnExecute 方法中各种 if else 硬编码逻辑 当状态 ...

  8. FSM(Finite State Machine,有限状态机)设计

    有限状态机(Finite State Machine, FSM),根据状态机的输出是否与输入有关,可分为Moore型状态机和Mealy型状态机.Moore型状态机输出仅仅与现态有关和Mealy型状态机 ...

  9. Verilog学习笔记HDLBits——Finite State Machines(1)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Finite State Machines 1.Simple FSM 1(asychronous reset) 2 ...

  10. HDLBits 系列(8)——Sequential Logic(Finite State Machines(一))

    目录 3.2 Sequential Logic 3.2.5 Finite State Machines 1. Simple FSM 1 (asynchronous reset) 2. Simple F ...

最新文章

  1. 引用次数在 19000 次+的,都是什么神仙论文?
  2. 星巴克在GitHub中泄漏API密钥,发现者获4000美金奖励
  3. 标准化Keras:TensorFlow 2.0中的高级API指南
  4. 性能建议(这里只针对单机版redis持久化做性能建议)
  5. 工作285:判断绑定逻辑
  6. 深度操作系统 Deepin 20 BETA 发布
  7. linux打开光盘文件怎么打开方式,ISO是什么文件?用什么打开?
  8. PAT1011. A+B和C
  9. Netty学习笔记(一) 实现DISCARD服务
  10. 【Android架构GPS篇】之定位数据如何从GPS芯片到应用层
  11. 【HackerRank】Cut the tree
  12. 使用SPSS 进行两组独立样本的t检验、F检验、显著性差异、计算p值
  13. java 参数命名规则_Java命名规范
  14. ceph monitor 选举leader和peon的过程
  15. jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 14
  16. 参加公众号互推的背后
  17. 查询邮件传输日志(exchange2016)
  18. 【图像分割】FCMKFCM MRI图像分割【含GUI Matlab源码 582期】
  19. Stata:空间双重差分模型(SpatialDID)-xsmle
  20. 食品检测设备硬件方案

热门文章

  1. 上课笔记-机器学习(4)-泰坦尼克号沉没乘客存活分析
  2. 详解谷歌VR平台Daydream:有手柄就是不一样
  3. catia圆角交点如何标注_Catia怎么使用凸台和倒圆角命令?
  4. 简单图片木马的生成与利用
  5. 一个大型网站图片服务器架构的演进
  6. 基于vue,自定义条形进度条/辣条进度条
  7. xinput1_4.dll丢失怎么修复?修复方法分享
  8. win10桌面的计算机图标怎么删除,win10系统桌面图标小箭头去掉的操作步骤
  9. Android手机截图怎么做,手机截屏怎么弄,详细教您手机截图方法
  10. Linux提高CPU使用率并设置固定占比