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

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

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

点赞
用户3832970
用户3832970

不,这是不可能的,因为-src的值必须是一个已经存在的文件。

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

为了解决这个问题,你可以建立一个 REST 或者 ZeroMQ 服务器来实时翻译文本。

你也可以编写一个简单的 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
2018-04-05 11:20:09