当前位置: 首页 > news >正文

NMT - 构建双语概率词典(Probabilistic dictionaries)

文章目录

    • 一、安装依赖包
      • mosesdecoder
      • 安装 mgiza++
    • 二、数据预处理
    • 三、训练


本文参考:How to train your Bicleaner
https://github.com/bitextor/bicleaner/wiki/How-to-train-your-Bicleaner


一、安装依赖包

这个过程主要依赖于

  • mosesdecoder
  • mgiza++

mosesdecoder

  • github : https://github.com/moses-smt/mosesdecoder
  • 官方说明:http://www2.statmt.org/moses/?n=Development.GetStarted
    官方介绍了 windows, macOS 和各版本 ubuntu 的安装细节,这里以 ubuntu 为例

1、安装依赖

sudo apt-get install [package name]

Packages:

   g++ git subversionautomakelibtoolzlib1g-devlibicu-devlibboost-all-devlibbz2-devliblzma-devpython-devgraphvizimagemagickmakecmakelibgoogle-perftools-dev (for tcmalloc)autoconfdoxygen

2、安装

./bjam -j4

如果手动安装了 boost,也可以指定 boost 位置
boost 安装教程:https://blog.csdn.net/lovechris00/article/details/125423796

./bjam --with-boost=~/workspace/temp/boost_1_64_0 -j8

3、安装成功测试

cd ~/mosesdecoder
wget http://www.statmt.org/moses/download/sample-models.tgz
tar xzf sample-models.tgz
cd sample-models# 运行
~/mosesdecoder/bin/moses -f phrase-model/moses.ini < phrase-model/in > out

得到如下结果,代表安装成功
翻译结果:Translating: das ist ein kleines haus

Defined parameters (per moses.ini or switch):config: phrase-model/moses.ini 
...
----5---10---15---20---25---30---35---40---45---50---55---60---65---70---75---80---85---90---95--100
**The ARPA file is missing <unk>.  Substituting log10 probability -100.000.
**************************************************************************************************
FeatureFunction: LM start: 0 end: 0
line=Distortion
...
----5---10---15---20---25---30---35---40---45---50---55---60---65---70---75---80---85---90---95--100
****************************************************************************************************
Created input-output object : [0.685] seconds
Translating: das ist ein kleines haus 
...
Name:moses	VmPeak:193088 kB	VmRSS:11404 kB	RSSMax:37844 kB	user:0.684	sys:0.008	CPU:0.692	real:0.692

git clone https://github.com/moses-smt/mosesdecoder.git

安装 mgiza++

这里使用 linux 环境为例

# 安装 libboost (mgiza++ 的编译依赖于它)
sudo apt-get install -y cmake libboost-all-dev# 下载mgiza、安装 
git clone https://github.com/moses-smt/mgiza.gitcd mgiza/mgizappcmake . && make && make installcp scripts/merge_alignment.py bin/

二、数据预处理

上文给出的方式是使用 shell,主要实现对文本 tokenize 和 lower 的过程;
这里我使用 python 实现;
假设你有两个文件:raw.zh, raw.en


处理中文
这里使用 jieba 分词

import os ,sys     
import jieba def process(file_path): save_path = file_path + '_low.txt' print('\n-- start : ',file_path) for line in open(file_path):zh_toks = jieba.cut(line.strip())zh_text = ' '.join(zh_toks).lower() with open(save_path, 'a') as fa:fa.write(zh_text + '\n' )print('-- end : ', file_path, save_path)    if __name__ == '__main__':file_path = sys.argv[1]print('-- ', file_path)process(file_path)

处理英文

import os ,sys    
import nltk  def process(file_path): save_path = file_path + '_low.txt' print('\n-- start : ',file_path) for line in open(file_path):en_toks = nltk.word_tokenize(line.strip())en_text = ' '.join(en_toks).lower() with open(save_path, 'a') as fa:fa.write(en_text + '\n' )print('-- end : ', file_path, save_path)    if __name__ == '__main__':file_path = sys.argv[1]print('-- ', file_path)process(file_path)

处理后修改两个文件,以语种作为后缀;假设处理后的文件名为 clean.zh, clean.en;
除了语种后缀外,前面必须一致,方便后续处理;


三、训练

  • 使用 mosesdecoder 的 train-model.perl 文件来训练;
  • 需要添加 mgiza 的bin目录
  • --root-dir: 数据文件所在的根目录
  • -corpus 设置文件名前缀;这里为 clean
  • -e, -f 设置语种
/home/xx/mosesdecoder/scripts/training/train-model.perl \
--alignment grow-diag-final-and \
--root-dir /home/xx/data/230303  -\
-corpus clean -e en -f zh \
--mgiza -mgiza-cpus=16 --parallel --first-step 1 --last-step 4 \
--external-bin-dir /home/xx/scode/mgiza/mgizapp/bin

  • 40万条数据可能要训练2小时以上;为了测试,可以尝试训练 1w到5w条数据即可。
  • 如果报找不到 symal 之类,可能是 mosesdecoder 编译不成功导致

生成成功后,我们可以在 root-dir 下得到 model 文件夹,包含以下三个文件

  • aligned.grow-diag-final-and
  • lex.e2f
  • lex.f2e

伊织 2023-03-03

相关文章:

NMT - 构建双语概率词典(Probabilistic dictionaries)

文章目录一、安装依赖包mosesdecoder安装 mgiza二、数据预处理三、训练本文参考&#xff1a;How to train your Bicleaner https://github.com/bitextor/bicleaner/wiki/How-to-train-your-Bicleaner 一、安装依赖包 这个过程主要依赖于 mosesdecodermgiza mosesdecoder git…...

《ChatGPT是怎样炼成的》

ChatGPT 在全世界范围内风靡一时&#xff0c;我现在每天都会使用 ChatGPT 帮我回答几个问题&#xff0c;甚至有的时候在一天内我和它对话的时间比和正常人类对话还要多&#xff0c;因为它确实“法力无边&#xff0c;功能强大”。 ChatGPT 可以帮助我解读程序&#xff0c;做翻译…...

Streaming System是第一章翻译

GIthub链接&#xff0c;欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今&#xff0c;流数据处理在大数据中是非常重要的&#xff0c;其主要原因是&#xff1a; 企业渴望对他们的数据有更及时的了解&#xff0c;而转换到流处理是实现更低延迟的一个好方法&#xf…...

abap MODIFY常用语法解析

MODIFY 是既可以操作数据又可以操作内表的一个语法, 实现的逻辑都一样. 如果你内表或数据库中存在该行数据会对该行数据进行更新. 如果不存在,就会插入数据. , 1.如果it_tab是带有标题行的内表,是可以忽略FROM wa_tab工作区的 MODIFY it_tab .2.把工作区wa_tab中的数据更新…...

[媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 直播毋庸置疑已经融入到了我们生活的方方面面&#xff0c;小到才艺&#xff0c;游戏&#xff0c;大到政策的发布&#xff0c;许多企业和机构也越来越重视直播&#xff0c;那么一场活动怎…...

打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第102讲。 蓝桥杯选拔赛现已更名为STEMA&#xff0c;即STEM 能力测试&#xff0c;是蓝桥杯大赛组委会与美国普林斯顿多…...

链表经典刷题--快慢指针与双指针

本篇总结链表解题思路----快慢指针&#xff0c;其实也就是双指针&#xff0c;这个快慢并不单纯指“快慢”&#xff0c;它更多的可以表示&#xff0c;速度快慢&#xff0c;距离长度&#xff0c;时间大小等等&#xff0c;用法很有趣也很独特&#xff0c;理解它的思想&#xff0c;…...

【Java集合框架】篇四:Set接口

1. Set及主要实现类特点 Set&#xff1a;无序、不可重复&#xff08;去重&#xff09;、存储value HashSet&#xff1a;底层使用HashMap&#xff0c;即使用 数组单项链表红黑树 结构进行存储。&#xff08;jkd8中&#xff09; LinkedHashSet&#xff1a;是HashSet的子类&…...

Python 数据库连接 + 创建库表+ 插入【内含代码实例】

人生苦短 我用python Python其他实用资料:点击此处跳转文末名片获取 数据库连接 连接数据库前&#xff0c;请先确认以下事项&#xff1a; 您已经创建了数据库 TESTDB.在TESTDB数据库中您已经创建了表 EMPLOYEEEMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。连…...

DSS 部署环境需求清单

文章目录 DSS系统需求项目地址计算资源计算基准:计算引擎程序硬件需求表 :DSS计算及存储资源需求计算资源计算基准:计算程序硬件需求表:DSS系统需求 项目地址 https://github.com/WeBankFinTech/DataSphereStudio 计算资源计算基准: 1.日活用户10万。 2.单用户单日总…...

Python的面向对象,详细讲解Python之用处等基本常识

目录 Python 面向对象 面向对象技术简介 创建类 实例 实例 self代表类的实例&#xff0c;而非类 实例 创建实例对象 访问属性 实例 Python内置类属性 实例 python对象销毁(垃圾回收) 实例 实例 类的继承 实例 方法重写 实例 基础重载方法 运算符重载 实例…...

如何使用固态继电器为恒温器供电

恒温器有两种电源&#xff1a;电池和 24VAC。恒温器需要电池才能不间断地运行。电池消耗的能量尽可能低非常重要&#xff0c;但即使您最大限度地减少消耗&#xff0c;这仍然不是一个用户友好的选择&#xff0c;因为电池会不时需要更换。要降低更换频率&#xff0c;可以使用 24V…...

【LeetCode】剑指 Offer(14)

目录 题目&#xff1a;剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;剑指 Offer 32…...

Rman单实例迁移到单实例

关于同平台同版本数据库之间的迁移操作的实验 ---Source DB[rootoracle-db-19cs ~]# cat /etc/redhat-release CentOS Stream release 8 [rootoracle-db-19cs ~]# --- Target DB[rootoracle-db-19ct ~]# cat /etc/redhat-release CentOS Stream release 8 [rootoracle-db-19ct…...

毕业设计 基于stm32舞台彩灯控制器设计app控制系统

基于stm32舞台彩灯控制器设计app控制1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STM32F103C8T6核心系统电路设计2.2 WS2812RGB彩灯电路设计3、部分代码展示3.1 控制WS2812显示颜色3.2 设置RGB灯的颜色&#xff0c;角度&#xff0c;亮度实物图1、项目简介 选题指导…...

【MyBatis】篇一.

文章目录1、MyBatis概述2、环境搭建1、MyBatis概述 认识&#xff1a; JavaEE开发的一个套件SSM&#xff0c;即&#xff1a; MyBatis是一个持久层的框架&#xff0c;是对JDBC的一个封装&#xff0c;是一个半自动的ORM框架。 ORM即实体类对象和数据库中的数据的一个映射关系&am…...

【JavaScript速成之路】JavaScript流程控制

&#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f525;系列专栏&#xff1a;【JavaScript速成之路】 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 文章目录前言1&#xff0c;流程控制2&#xff0c;分支结构2.1&#xff0c;if语句2.2&…...

18、基准测试,sysbench

基准测试,sysbench 1. sysbench1.1 用途1.2 安装1.3 版本1.4 查看帮助1.5 测试过程阶段2 CPU 性能测试2.1 测试原理2.2 查看帮助2.3 测试3. 内存性能测试3.1 查看帮助信息3.2 测试过程4.磁盘性能基准测试4.1 查看帮助4.2 生成文件(prepare)4.3 测试文件io(run)4.4 结果分析4.5…...

3D,点云拼接2

文章目录 点云配准方法自动配准技术PCL实现的配准算法两两配准1.关键点提取2.特征描述符3. 对应关系估计4. 对应关系去除5. 变换矩阵估算在上篇文章中对于拼接的概念、拼接精度的评价做了详细的介绍。本文是对拼接(配准)的进一步介绍,涉及更多原理层面的东西。 主要围绕以下三…...

jmeter学习笔记一(http基础知识)

HTTP请求&#xff1a;客户端同通过发送http请求向服务器请求资源的访问。http请求由三部分组成&#xff1a;请求行、请求头、请求正文 ​ 请求行包括&#xff1a;请求方法 URI 协议/版本 ​ 请求头&#xff1a;Content-type、Cookie、Authorization、User-Agent、Accept、Acc…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...