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

Change source input from file to string in th translate.lua

我是 lua 的新手,我想知道我是否可以在 translate.lua -src 上发送一个字符串,而不是一个包含该字符串的文件。我在发布之前进行了很多搜索,但找不到类似的东西。我的主要问题是机器翻译越来越慢,因为我必须从文件中 read/open。提前致谢!

例如:-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 翻译文本 "on-the-fly"。

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

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

file="/tmp"
echo "" > "${file}"
echo "Translating '' using ONMT from '' using model '' and BPE model ''"
cd ""
th ./tools/tokenize.lua OPTIONS -bpe_model "" < "${file}" > "${file}.tok" 2>/dev/null
th ./translate.lua -model "" -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