Fast-align/subword-nmt 使用记录

###### 在Linux系统下运行  #######

实验步骤:

Step 1:

  从github上下载工具包

wget https://github.com/clab/fast_align/archive/master.zip

Step 2:

  将语料处理成 “ 源语言 ||| 目标语言 ” 的形式。

Step 3:

  安装必要的工具包:

sudo apt-get install libgoogle-perftools-dev libsparsehash-dev

Step 4:

分步执行:

mkdir build
cd build
cmake ..
make

Step 5:

运行代码如下:

##### 生成 源==>目标  的对其方式: 

./fast_align -i text.fr-en -d -o -v > forward.align

##### 生成 目标==>源 的对其方式:

./fast_align -i text.fr-en -d -o -v -r > reverse.align

##### 可以atools使用各种标准对称启发法,使用包含的命令来对称化这些参数,例如:
./atools -i forward.align -j reverse.align -c grow-diag-final-and

Step 6:

 输出结果为:

####其中一对i-j表示左语言(按照惯例,语言)的i个单词(零索引)与右句的第j个单词(按照约定,目标语言)
0-0 1-1 2-4 3-2 4-3 5-5 6-6 0-0 1-1 2-2 2-3 3-4 4-5 0-0 1-2 2-1 3-3 4-4 5-5

 subword--nmt:

安装subword-nmt:

pip install subword-nmt

生成一个字典:

subword-nmt learn-joint-bpe-and-vocab -i en.text -o code --write-vocabulary voc.txt
参数说明如下:
(1) -i 后面的参数是输入的文件名
(2) -o 后面输出的是code文件的文件名
(3) --write-vocabulary 后面是输出字典的文件名

使用BPE解码:

subword-nmt apply-bpe -i e.txt -v code -o result.txt
参数说明如下:
(1) -i 后面是输入的待解码文件名
(2) -c 后面跟着learn-bpe步骤得到的code文件
(3) -o 结果输出文件

文章地址:https://blog.csdn.net/jmh1996/article/details/89286898

Fast-BPE使用文档:

### 问题引出

  在做机器翻译时会对语料进行预处理,生成一个词典。为了不让词典太大,一般会通过设置一个阈值,将出现频次大于这个阈值的词加入到

字典当中,但是在神经机器翻译中,如果验证集和测试集中出现了训练集中没有见到过的词,则会严重影响机器翻译的性能。

  解决一:back-off表,当出现低频词的时候就去查表

     缺点:严重依赖 back-off 表的质量,无法解决未登录词的问题。

  解决二:以字符级为单位建模

     缺点:模型颗粒度太细,效果不好。

Subword模型:

  该模型结合了词级和字符集的有时,从语料中学习到频次高的字符串字串,然后将其形成一个字典,字典中既有词级又有单词级的子串,然后

将这个字典应用到训练的过程中。

  在寻找频次高的子串时,使用了bpe编码,但只是将子串进行了编码而已,在解码的时候根据生成的词表做相应的替换。

Fast-BPE工具使用:

1、下载Fast-bpe工具

2、分别运行以下代码:

./fast getvocab input1 input2 > vocab  ## extract the vocabulary from one or two text files
./fast learnbpe ncodes input1 input2 > codes ## learn BPE codes from one or two text files

3、调用python接口进行bpe编码:

import fastBPE
bpe = fastBPE.fastBPE(codes_path,vocab_path)
bpe.apply(['hahahahahahahahaha'])

 

 

 

 

 

 

 

 

 

 

posted @ 2019-10-17 10:59  胡~萝~卜  阅读(3218)  评论(0编辑  收藏  举报