【问题标题】:Change source input from file to string in th translate.lua在 translate.lua 中将源输入从文件更改为字符串
【发布时间】:2018-09-15 04:34:55
【问题描述】:

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

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

【问题讨论】:

  • 您有时间查看我的答案吗?您需要更多提示或说明吗?
  • 我使用了 OpenNMT Rest 解决方案。我执行了 -> luarocks install restserver-xavante ,进行了正确的配置,现在响应时间减少了一半。
  • 这是正确的方法:)

标签: lua machine-translation opennmt


【解决方案1】:

不,这是不可能的,因为-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(de)标记。

这样称呼

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

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多