文章目录

  • 关于 GIZA++
    • 安装
  • 使用
    • 1、将平行语料转化为 GIZA++ 格式(plain2snt.out)
    • 2、获取共现文件(snt2cooc.out)
    • 3、创建 mkcls 文件(mkcls)
    • 4、运行GIZA++

关于 GIZA++

  • 官网:http://www.fjoch.com/GIZA++.html
  • github: https://github.com/moses-smt/giza-pp

安装

# 下载
$ 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.snt0 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.vcb0 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(三)

NLP - GIZA++ 实现词对齐相关推荐

  1. 使用GIZA++进行词对齐

    准备双语语料 zh.txt:源语言 海洋 是 一个 非常 复杂 的 事物 . 人类 的 健康 也 是 一 件 非常 复杂 的 事情 . 将 两者 统一 起来 看 起来 是 一 件 艰巨 的 任务 . ...

  2. 使用GIZA++进行平行语料的词对齐

    使用GIZA++进行平行语料的词对齐 在使用moses搭建机器翻译系统时,词对齐的过程是和模型训练结合在一起的,GIZA++运行的很多细节都被跳过.本文是将GIZA++单独拿出来,关注其从编译.运行到 ...

  3. 词对齐任务:依附于机器翻译

    前情概括 词对齐任务分为三大实现方式,详情见词对齐任务概述,此为其一. NMT依附下的word alignment 说道机翻显然就想到transformer,其encoder-decoder结构其实即 ...

  4. NLP 获取相似词 - 1.爬取百度搜索结果

    视频链接:https://www.bilibili.com/video/av78674056 一,前言 NLP实际项目要用到,给定一个词,找出它的同义词.相似词.拓展词等. 我思考了下,有: 1,同义 ...

  5. NLP 获取相似词 - 2.提取相似词[爬虫应用]

    视频链接:https://www.bilibili.com/video/av78674056 接上节. NLP 获取相似词 - 1.爬取百度搜索结果 https://blog.csdn.net/Gre ...

  6. GIZA++词对齐运行实验

    http://hi.baidu.com/maydaygmail/blog/item/cf666a7b92ae871429388a36.html

  7. 【NLP】ACL2020 | 词向量性别偏见

    作者 | Salesforce Research  编译 | NewBeeNLP ACL2020关于词嵌入性别偏见的蛮有意思的一项工作: 论文地址:https://arxiv.org/abs/2005 ...

  8. NLP(4) | 用词向量技术简单分析红楼梦人物关系用n-gramma生成词向量word2vect进行模型训练

    NLP(1) | 词向量one hot编码词向量编码思想 NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词 NLP(3)| seq to seq 模型 前言:出于种种原因,总是不自觉把 ...

  9. NLP中的词向量及其应用

    https://www.toutiao.com/a6643219722961682947/ 2019-01-06 11:25:24 词向量基本上是一种单词表示形式,它将人类对语言的理解与机器的理解连接 ...

最新文章

  1. Add A Qdisk After configure RHCS
  2. java多线程解决应用挂死的问题
  3. Electron怎样进行渲染进程调试和使用浏览器和VSCode进行调试
  4. VTK:vtk布尔运算隐式函数BooleanOperationImplicitFunctions用法实战
  5. java 不能反序列化_java中的序列化与反序列化
  6. 2016 Top 10 Android Library
  7. 计算机基础八进制和十六进制试题,计算机基础知识考试试题
  8. 试着用React写项目-利用react-router解决跳转路由等问题(二)
  9. java base64编码的三种方式
  10. python匿名函数(lambda)
  11. JavaScript —— Symbol数据类型的拓展
  12. 二分查找算法(Java)
  13. 疯狂程序员网址。。。
  14. 货币角色分裂——解开金钱的角色
  15. 剑指 Offer II 075. 数组相对排序(中等 排序 数组)
  16. Jackson公司蛋白质印迹指南丨样品制备
  17. win10不用密码直接登陆设置
  18. 量化交易入门阶段——欧奈尔的CANSLIM模型(A 年度净利润同比增长率)
  19. 学linux作用,linux有必要学吗?学linux有什么作用,学linux能干什么
  20. 基于Web的系统测试方法(张友生(来自中国系统分析师/中国系统分析员))

热门文章

  1. mysql-connector-java 属性介绍
  2. [半监督学习] Teacher-Student Learning Paradigm for Tri-training
  3. curl模拟登录新浪微博
  4. 【为宏正名】for的妙用你想不到
  5. 23种设计模式——外观模式
  6. C语言实现TCP客户端、服务器
  7. 【bzoj2823】 AHOI2012—信号塔
  8. 机器学习中的batch_size是什么?
  9. 6to4隧道和6in4隧道的区别
  10. 应届生就业面试一定要了解的东西