参考依据

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. linux redhat 下载_使用Vmware创建Linux(Ubuntu)系统
  2. 保存一波集合框架的介绍
  3. asp.net 跨页面传值(一)
  4. TCP多进程并发服务端 Linux socket编程入门(2)
  5. oracle高水位线
  6. java中怎么判断依赖关系,在Maven 2中,我如何知道依赖性来自哪个依赖?
  7. Redis基础(六)——事务
  8. OpenResty Redis 安装部署测试SET GET功能
  9. (六十五)for循环
  10. 安卓手机管理_安卓手机用户大福利,谷歌将改善手机内存管理,运行更流畅
  11. STK与VC++ 6.0联合编程
  12. PCB硬件设计规范(详细版)
  13. 零基础数据挖掘入门-二手车价格预测part(一):EDA-数据探索性分析
  14. ansi、unico、utf8
  15. 那些只有程序员才能看懂的冷笑话
  16. python sqrt(4)*sqrt(9)_Python表达式sqrt(4)*sqrt(9)的值为__________。
  17. javastudy - 52:素数回文数的个数
  18. 睿慕课点云第二章报错及解决(二)
  19. Linux上wget: 无法解析主机地址
  20. Python可视化:中国环保股上市公司市值Top20强

热门文章

  1. (014) 类函数和对象函数
  2. 【干货】JavaScript 资源大全
  3. 朱朱的2020年(上)
  4. 服务器开发系列(四)——网络基础
  5. 提醒用户的方式 notification+Dialog
  6. 如何使用Etcd来完成选举
  7. linux时间设置与同步--NTP
  8. MCS-51系列单片机硬件结构
  9. xp系统不能搭建信息服务器地址,XP系统出现“automation 服务器不能创建对象”提示怎么办...
  10. 彪悍的人生,不需要解释!