zoukankan      html  css  js  c++  java
  • 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'])

     

  • 相关阅读:
    HTML5小游戏-绵羊快跑
    JavaScript模拟下拉菜单代码
    作业6
    作业5
    作业4
    作业三
    作业2(第二遍)
    sap jco3安装
    jmeter脚本文件(jmx)关联
    正则替换:删除空行、格式化Json/xml
  • 原文地址:https://www.cnblogs.com/hanouba/p/11690709.html
Copyright © 2011-2022 走看看