lua - 将源输入从文件更改为 translate.lua 中的字符串

标签 lua machine-translation opennmt

我是lua新手,我想知道是否可以在translate.lua -src上发送一个字符串,而不是该字符串存在的文件。在发布之前我已经搜索了很多,但我无法找到类似的东西。我的主要问题是机器翻译变得越来越慢,因为我必须从文件中读取/打开。预先感谢您!

例如:-src/TestFolder/TestFolder/TestFolder/TestFolder/TestFolder/TestFolder/TestFolder/test.txt;而不是直接在文件中添加字符串。

最佳答案

不,这是不可能的,因为 -src 值必须是现有文件。

th translate.lua -model $model -src "What is going on?"
translate.lua: invalid argument for option -src: the file must exist

要解决此问题,您可以 set up a REST or ZeroMQ server “即时”翻译文本。

您还可以编写一个简单的 Bash 脚本,该脚本将接受多个参数并翻译给定 ONMT、模型和可选(如果使用)BPE 模型路径的任何字符串:

#!/bin/bash
#USAGE: bash translate.sh <TEXT> <ONMT_PATH> <MODEL_FILE_NAME> <BPE_FILE_NAME>

file="$2/tmp"
echo "$1" > "${file}"
echo "Translating '$1' using ONMT from '$2' using model '$3' and BPE model '$4'"
cd "$2"
th ./tools/tokenize.lua OPTIONS -bpe_model "$4" < "${file}" > "${file}.tok" 2>/dev/null
th ./translate.lua -model "$3" -src "${file}.tok" -output "${file}.tok.tgt" -gpuid 1 1> /dev/null
th ./tools/detokenize.lua OPTIONS < "${file}.tok.tgt" > "${file}.tok.tgt.detok" 2>/dev/null
cat "${file}.tok.tgt.detok"
rm {"${file}","${file}.tok","${file}.tok.tgt","${file}.tok.tgt.detok"}

将脚本中的OPTIONS替换为适合您的(去)标记化的选项。

这样调用它

bash translate.sh "What is going on?" /OpenNMT /models/m_epoch13_3.33.t7 /models/model.bpe

关于lua - 将源输入从文件更改为 translate.lua 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49670919/

相关文章:

c++ - 如何替换 Lua 默认错误打印?

TensorFlow:nr。时代与天然橡胶。训练步骤

javascript - jQuery 插件来处理翻译?

python-3.x - 用户警告 : Implicit dimension choice for log_softmax has been deprecated

string - 有没有办法在lua(原始)中定义自动转义字符串?

lua - 通过引用与 ipairs 循环访问表的性能

lua - 不推荐使用 `gui` 、 `guifg` 、 `guibg` 、 `guisp` - Neovim

hindi - 使用 MOSES 从印地语到英语的统计机器翻译

python - 如何在 opennmt-py 中将字符串转换为路径

python - OpenNMT 与 Pytorch 的问题 : cPickle. UnpicklingError : invalid load key, ''