2

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

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

4

1 回答 1

2

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

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"}

Replace the OPTIONSinside the script with the appropriate options for your (de)tokenization.

像这样称呼它

bash translate.sh "What is going on?" /OpenNMT /models/m_epoch13_3.33.t7 /models/model.bpe
于 2018-04-05T11:20:09.923 回答