当前位置:网站首页>NLP - GIZA++ 实现词对齐
NLP - GIZA++ 实现词对齐
2022-06-29 19:37:00 【伊织code】
文章目录
关于 GIZA++
安装
# 下载
$ git clone https://github.com/moses-smt/giza-pp.git
# 进入主目录
$ cd giza-pp
# 编译
$ make
将会在 giza-pp/GIZA++-v2 文件夹下生成 GIZA++, snt2cooc.out 等文件
使用
1、将平行语料转化为 GIZA++ 格式(plain2snt.out)
我在根目录创建 data 文件夹(和 GIZA++-v2 平级),放置平行语料文件:data.en, data.zh ,注意需要是分词后的文件。
$ cd GIZA++-v2/
$ ./plain2snt.out ../data/data.en ../data/data.zh
这样每个文件都将额外生成两个文件:
$ tree
.
├── data.en
├── data.en.vcb # 词汇文件
├── data.en_data.zh.snt
├── data.zh
├── data.zh.vcb
└── data.zh_data.en.snt
0 directories, 6 files
$ wc -l data.e*
100 data.en
1495 data.en.vcb
300 data.en_data.zh.snt
1895 total
.vcb 文件
词汇文件, 统计句子中单词出现的次数,格式为 :
id || token || count
$ head data.en.vcb
2 Singapore 7
3 exchange 1
4 to 96
5 allow 3
$ head data.en_data.zh.snt
1
2 3 4 5 6 7
2 3 4 5 6
1
8 9 10 11 12 13 14 15 4 5 16 17 18 4 19
7 8 9 10 11 12 4 13 14 15 6 16 17 3 18 19 20 21 22 23 24 25 26 27 28 16 29 30
1
.snt 文件:
• 每个句子对出现的次数
• text_a.txt 句子中的单词编号
• text_b.txt 句子中的单词编号
• 其中0是保留给特殊的"空" token
2、获取共现文件(snt2cooc.out)
# 查看用法
$ ./snt2cooc.out -h
Usage: ./snt2cooc.out vcb1 vcb2 snt12
经文件保存到
$ ./snt2cooc.out ../data/data.en.vcb ../data/data.zh.vcb ../data/data.en_data.zh.snt > ../data/en_zh.cooc
END.
$ ./snt2cooc.out ../data/data.zh.vcb ../data/data.en.vcb ../data/data.zh_data.en.snt > ../data/zh_en.cooc
END.
$ tail /Users/luyi/Documents/nlp/giza-pp/data/en_zh.cooc
1244 1271
1244 1272
1244 1273
3、创建 mkcls 文件(mkcls)
mkcls 位于 giza-pp/mkcls-v2 文件夹
语法:
mkcls [-nnum] [-ptrain] [-Vfile] opt
-c: 词类数目-n: 表示训练迭代次数,默认1次-p:需要聚类的已分词文本 (输入文件)-V:输出文件opt:优化运行
$ ./mkcls -p../data/data.en -V../data/data.en.vcb.classes opt
$ ./mkcls -p../data/data.zh -V../data/data.zh.vcb.classes opt
- 注意
-p,-V是和路径连在一起的,中间没有空格。如果路径为相对路径:../data/data.zh,也是连在一起,写作:-p../data/data.zh - 运行完成后,每个语种将生成
*.vcb.classes,*.vcb.classes.cats文件
*.vcb.classes 格式为:单词 || 单词所属类别*.vcb.classes.cats 格式为:单词词类 || 对应词类的一组单词
4、运行GIZA++
创建 en2zh, zh2en 两个文件,方便存储结果文件:
./GIZA++ -S ../data/data.en.vcb -T ../data/data.zh.vcb -C ../data/data.en_data.zh.snt -CoocurrenceFile ../data/en_zh.cooc -o en2z -OutputPath ../data/en2zh
./GIZA++ -S ../data/data.zh.vcb -T ../data/data.en.vcb -C ../data/data.zh_data.en.snt -CoocurrenceFile ../data/zh_en.cooc -o zh2en -OutputPath ../data/zh2en
将在上述创建的结果文件中,每个目录下会生成 13 个文件。如:
en2zh $ tree
.
├── en2z.A3.final
├── en2z.Decoder.config
├── en2z.d3.final
├── en2z.d4.final
├── en2z.gizacfg
├── en2z.n3.final
├── en2z.p0_3.final
├── en2z.perp
├── en2z.t3.final
├── en2z.trn.src.vcb
├── en2z.trn.trg.vcb
├── en2z.tst.src.vcb
└── en2z.tst.trg.vcb
0 directories, 13 files
$ head en2z.A3.final en2z.d3.final en2z.d4.final en2z.Decoder.config en2z.gizacfg en2z.n3.final en2z.p0_3.final en2z.perp en2z.t3.final en2z.trn.src.vcb en2z.trn.trg.vcb en2z.tst.src.vcb en2z.tst.trg.vcb
==> en2z.A3.final <==
1 1 6 100 1
2 2 6 100 1
4 3 6 100 1
5 4 6 100 1
6 5 6 100 1
4 1 7 100 1
4 2 7 100 0.5
6 2 7 100 0.5
1 3 7 100 0.5
4 3 7 100 0.5
==> en2z.d3.final <==
1 1 100 5 1
2 2 100 5 1
3 4 100 5 1
4 5 100 5 1
5 6 100 5 1
5 0 100 8 1
1 1 100 8 1
2 2 100 8 0.49842
3 2 100 8 0.00315911
7 2 100 8 0.49842
==> en2z.d4.final <==
0 74 2 1
58 74 1 0.500002
58 74 2 0.499998
66 74 1 1
83 74 -40 4.52691e-05
83 74 2 0.999955
97 74 -3 1
89 74 -2 0.499858
89 74 1 0.500142
56 74 -11 1
==> en2z.Decoder.config <==
# Template for Configuration File for the Rewrite Decoder
# Syntax:
# <Variable> = <value>
# '#' is the comment character
#================================================================
#================================================================
# LANGUAGE MODEL FILE
# The full path and file name of the language model file:
LanguageModelFile =
#================================================================
==> en2z.gizacfg <==
adbackoff 0
c ../data/data.en_data.zh.snt
compactadtable 1
compactalignmentformat 0
coocurrencefile ../data/en_zh.cooc
corpusfile ../data/data.en_data.zh.snt
countcutoff 1e-06
countcutoffal 1e-05
countincreasecutoff 1e-06
countincreasecutoffal 1e-05
==> en2z.n3.final <==
2 0.0950195 0.534289 0.254623 0.0757677 0.017334 0.011483 0 0 0.00574151 0.00574151
3 0.0513258 0.618243 0.203737 0.0925842 0.0194914 0.00487292 0.00974571 0 0 0
4 0.858273 0.114323 0.0169254 0.00733 0.00210072 0.00104782 0 0 0 0
5 0.176389 0.52529 0.180916 0.0587039 0.0240148 0.00800389 0.00800471 0.0153497 0.00332792 0
6 0.341513 0.504811 0.0555389 0.0531367 0.0276125 0.0128884 0 0 0.00445369 4.61406e-05
7 0.0513258 0.618243 0.203737 0.0925842 0.0194914 0.00487292 0.00974571 0 0 0
8 0.498432 0.461809 0.0231669 0.00754107 0.0060336 0 0.00301661 0 0 0
9 0.793663 0.149055 0.0281555 0.0239287 0.00346756 0.00172953 0 0 0 0
10 0.717249 0.269367 0.00779881 0.00253858 0.00203111 0 0.00101549 0 0 0
11 0.173795 0.54683 0.148991 0.0725464 0.0236616 0.00788618 0.007887 0.015124 0.00327898 0
==> en2z.p0_3.final <==
0.871654
==> en2z.perp <==
#trnsz tstsz iter model trn-pp test-pp trn-vit-pp tst-vit-pp
100 0 0 Model1 1430.24 N/A 52239.7 N/A
100 0 1 Model1 74.4319 N/A 1192.51 N/A
100 0 2 Model1 62.5537 N/A 767.593 N/A
100 0 3 Model1 56.5553 N/A 536.391 N/A
100 0 4 Model1 53.1902 N/A 416.789 N/A
100 0 5 HMM 45.7351 N/A 348.286 N/A
100 0 6 HMM 47.3091 N/A 175.379 N/A
100 0 7 HMM 40.4043 N/A 99.9964 N/A
100 0 8 HMM 32.5132 N/A 59.9214 N/A
==> en2z.t3.final <==
0 16 0.468297
0 18 0.42654
0 30 0.0609917
0 31 0.0380113
0 34 0.00376838
0 47 0.00239139
2 2 1
3 3 0.5
3 61 0.5
4 47 1
==> en2z.trn.src.vcb <==
2 Singapore 7
3 exchange 2
4 to 73
5 allow 3
6 Spac 2
7 listings 2
8 SGX 4
9 is 19
10 the 138
11 first 4
==> en2z.trn.trg.vcb <==
2 新加坡 8
3 交易所 5
4 允许 3
5 SPAC 4
6 上市 9
7 新交所 5
8 由此 1
9 成为 6
10 亚洲 2
11 第一 3
==> en2z.tst.src.vcb <==
==> en2z.tst.trg.vcb <==
伊织 2022-06-29(三)
边栏推荐
- MSYQL, redis, mongodb visual monitoring tool grafana
- 1404萬!四川省人社廳關系型數據庫及中間件軟件系統昇級采購招標!
- 【Proteus仿真】矩阵键盘中断扫描
- IP error problem of PHP laravel using AWS load balancer
- With these four security testing tools, software security testing can be said so easy!
- From CIO to Consultant: the transformation of it leaders
- 细说GaussDB(DWS)复杂多样的资源负载管理手段
- Freeswitch dial extension
- 【剑指Offer】51. 数组中的逆序对
- MySQL remote connection
猜你喜欢

Where is the win11 installation permission set? Win11 installation permission setting method

销量赶不上拿钱速度,威马赴港救急

Exploration and practice of NLP problem modeling scheme

Game maker Foundation presents: Valley of belonging

@Sneakythlows annotation

创作者基金会 6 月份亮点

3-3 host discovery - layer 4 discovery

npm ERR! fatal: early EOF npm ERR! fatal: index-pack failed

云上未来,数智导航:阿里云研究院报告合集

【软件测试】01 -- 软件生命周期、软件开发模型
随机推荐
AI scene Storage Optimization: yunzhisheng supercomputing platform storage practice based on juicefs
7.取消与关闭
构建增强现实移动应用程序的六款顶级工具
1404万!四川省人社厅关系型数据库及中间件软件系统升级采购招标!
What if the win11 policy service is disabled? Solution to disabling win11 policy service
ArrayList&lt; Integer&gt; Use = = to compare whether the values are equal, and -129=- 129 situation thinking
Violent solution to the question of guessing the ranking
微信推出图片大爆炸功能;苹果自研 5G 芯片或已失败;微软解决导致 Edge 停止响应的 bug|极客头条
开发者任务中心上线!千元豪礼送不停!
AI场景存储优化:云知声超算平台基于 JuiceFS 的存储实践
What about frequent network disconnection of win11 system? Solution to win11 network instability
云服务器的安全设置常识
KDD 2022 | 協同過濾中考慮錶征對齊和均勻性
static静态成员变量使用@Value注入方式
Kdd 2022 | prise en compte de l'alignement et de l'uniformité des représentations dans le Filtrage collaboratif
高能直播,大咖云集!邀你共启BizDevOps探索之路。
JVM (4) bytecode technology + runtime optimization
深度好文 | YOLOv5+DeepSORT多目标跟踪深入解读与测试(含源码)
JVM (2) garbage collection
JVM(3) 类加载