Execise Data files

样例中需要的数据来源:
http://www.openfst.org/twiki/bin/view/FST/FstExamples

如果无法访问,可以在这里下载

Execise 1 Tokenization

第一个示例将ASCII字符序列转换为带有标点符号和去除空格的单词标记序列。 为此,我们将需要一个词典换能器,该词典换能器将从字母映射到其对应的单词标记。 一种简单的生成方式是使用OpenFst文本格式。 例如,“Mars”一词的格式为:

fstcompile --isymbols=ascii.syms --osymbols=wotw.syms >Mars.fst <<EOF
0 1 M Mars
1 2 a <epsilon>
2 3 r <epsilon>
3 4 s <epsilon>
4
EOF

如果出现错误提示file = ascii.syms, line = 1Bad non-negative integer "0,可能的原因是ascii.syms文件和wotw.syms文件的格式是dos格式的。需要执行
set ff=unix

Mars.fst是二进制文件,是不可以直接阅读的。一般可以通过工具转成图像来看。

fstdraw --isymbols=ascii.syms --osymbols=wotw.syms -portrait Mars.fst | dot -Tjpg >Mars.jpg

dot: command not found…
如果出现该命令不存在,需要去下载一下graphviz

转成的fst图片如下,

再来两个例子

“Martian”和“Man”按照上面的方法构建fst文件

Martian.fst

fstcompile --isymbols=ascii.syms --osymbols=wotw.syms >Martian.fst <<EOF
0 1 M Martian
1 2 a <epsilon>
2 3 r <epsilon>
3 4 t <epsilon>
4 5 i <epsilon>
5 6 a <epsilon>
6 7 n <epsilon>
7
EOF

Man.fst

fstcompile --isymbols=ascii.syms --osymbols=wotw.syms >Man.fst <<EOF
0 1 M Man
1 2 a <epsilon>
2 3 n <epsilon>
3
EOF

合并这三个fst,并生成lexicon.fst

fstunion Man.fst Mars.fst | fstunion - Martian.fst | fstclosure >lexicon.fstfstdraw --isymbols=ascii.syms --osymbols=wotw.syms -portrait lexicon.fst | dot -Tps >lexicon.ps

生成的图像如下,

去除epsilon的Arc

fstrmepsilon lexicon.fst | fstdeterminize | fstminimize >lexicon_opt.fstfstdraw --isymbols=ascii.syms --osymbols=wotw.syms -portrait lexicon_opt.fst | dot -Tps >lexicon_opt.ps

生成等效的,确定的和最小的状态转换图

增加对符号的处理,

full_pinct.fst

0 1 <space> <epsilon>
0 1 ! <epsilon>
0 1 " <epsilon>
0 1 # <epsilon>
0 1 $ <epsilon>
0 1 % <epsilon>
0 1 & <epsilon>
0 1 ' <epsilon>
0 1 ( <epsilon>
0 1 ) <epsilon>
0 1 * <epsilon>
0 1 + <epsilon>
0 1 , <epsilon>
0 1 - <epsilon>
0 1 . <epsilon>
0 1 / <epsilon>
0 1 0 <epsilon>
0 1 1 <epsilon>
0 1 2 <epsilon>
0 1 3 <epsilon>
0 1 4 <epsilon>
0 1 5 <epsilon>
0 1 6 <epsilon>
0 1 7 <epsilon>
0 1 8 <epsilon>
0 1 9 <epsilon>
0 1 : <epsilon>
0 1 ; <epsilon>
0 1 < <epsilon>
0 1 = <epsilon>
0 1 > <epsilon>
0 1 ? <epsilon>
0 1 @ <epsilon>
0 1 [ <epsilon>
0 1 \ <epsilon>
0 1 ] <epsilon>
0 1 ^ <epsilon>
0 1 _ <epsilon>
0 1 ` <epsilon>
0 1 { <epsilon>
0 1 | <epsilon>
0 1 } <epsilon>
0 1 ~ <epsilon>
1

加入符号处理
fstunion Man.fst Mars.fst | fstunion - Martian.fst | fstconcat - full_punct.fst | fstclosure >lexicon.fst

Tokenization

好,现在开始Tokenization,词语切分。
假设我们有“Mars man!”这个词,

来先写出它的fst

fstcompile --isymbols=ascii.syms --osymbols=ascii.syms > Mars_man_.fst <<EOF
0 1 M M
1 2 a a
2 3 r r
3 4 s s
4 5 <space> <space>
5 6 m m
6 7 a a
7 8 n n
8 9 ! !
9
EOF

画出图形
fstdraw --isymbols=ascii.syms --osymbols=ascii.syms -portrait Mars_man_.fst | dot -Tps > Mars_man_.ps

提取词
fstcompose Mars_man_.fst lexicon_opt.fst | fstproject --project_output | fstrmepsilon >tokens.fst

【openfst样例1】Tokenization相关推荐

  1. 【openfst样例2】Downcasing Text

    Execise Data files 样例中需要的数据来源: http://www.openfst.org/twiki/bin/view/FST/FstExamples 如果无法访问,可以在这里下载 ...

  2. YOLOv4 资源环境配置和测试样例效果

    YOLOv4 资源环境配置和测试样例效果 基本环境:cuda=10.0,cudnn>=7.0, opencv>=2.4 一.下载yolov4 git clone https://githu ...

  3. 2021年大数据常用语言Scala(三十二):scala高级用法 样例类

    目录 样例类 定义样例类 样例类方法 样例对象 样例类 样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),而且它会自动生成apply方法,允许我们快速地创建样例 ...

  4. 在Ubuntu下构建Bullet以及执行Bullet的样例程序

    在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...

  5. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  6. Oracle简单脚本演示样例

    Oracle简单脚本演示样例 1.添加表 --改动日期:2014.09.21 --改动人:易小群 --改动内容:新增採购支付情况表 DECLARE VC_STR           VARCHAR2( ...

  7. 【ZooKeeper Notes 3】ZooKeeper Java API 使用样例

    查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合.通过这些原语言的组合使用, ...

  8. ACMNO.24 C语言-转置矩阵 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 输入 一个3x3的矩阵 输出 转置后的矩阵 样例

    题目描述 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换. 输入 一个3x3的矩阵 输出 转置后的矩阵 样例输入 1 2 3 4 5 6 7 8 9 样例输出 1 4 7 2 5 8 3 ...

  9. ACMNO.21 C语言-逆序输出 输入10个数字,然后逆序输出。 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0

    题目描述 输入10个数字,然后逆序输出. 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1 提示 数组?堆栈 ...

最新文章

  1. css中的px、em、rem 详解
  2. 【机器学习】太棒了!8 个开源自动化机器学习框架,轻松搞定机器学习!
  3. Mac OS X 中快速访问系统根目录的四种方法
  4. .NET Core New csproj 如何发布可执行文件
  5. 面试--Linux命令总结
  6. 奖金(拓补排序的应用)
  7. 保密作战--在网络上隐藏自己
  8. 一图说清:做数据分析,到底要懂多少业务知识?
  9. 2015.7.29 上学前在家的最后一晚
  10. script片段在前导致对下文的html元素引用失效
  11. 医生- 患者 - 图标
  12. qt 取消按钮点击效果_Qt 对话框里添加确定取消按钮
  13. 《西方确指》明心生极乐、专修净土乃大孝、持咒显空慧
  14. 51单片机学习路程(一)
  15. 一款备受九零后喜爱的独特界面,VC++屏幕保镖(锁屏程序)附源码
  16. android视频播放框架Vitamio
  17. 理解“万事万物皆对象”
  18. excel.h的简单使用
  19. 郭天祥六年非一般的大学--哈尔滨工程大学学生
  20. 易經大意(1) 三和 韓長庚 著24

热门文章

  1. ICML2021 | 自提升策略规划真实且可执行的分子逆合成路线
  2. RDKit:可视化药效团(Pharmacophore)
  3. NC:中国药科郝海平和郑啸发现饮食-微生物互作缓解肠损伤
  4. NC:中科院动物所王关红等综述基因技术防控蚊媒疾病
  5. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)
  6. python使用numpy的np.power函数计算numpy数组中每个数值的指定幂次(例如平方、立方)、np.power函数默认返回整数格式、np.float_power函数默认返回浮点数
  7. R语言可视化分面图、假设检验分组t检验、可视化单变量分组分面箱图(faceting boxplot)并添加p值(Make facet boxplot and add p-values)、添加抖动数据点
  8. R语言ggplot2可视化:水平半小提琴图(Horizontal Half Violin Plots)、去除水平半小提琴图中的填充色、ggridges包的绘制山脊图
  9. pandas删除数据行中的重复数据行、基于dataframe所有列删除重复行、基于特定数据列或者列的作何删除重复行、删除重复行并保留重复行中的最后一行、pandas删除所有重复行(不进行数据保留)
  10. Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)