Изменить исходный ввод из файла в строку в th translate.lua
Я новичок в lua, и мне интересно, могу ли я отправить на translate.lua -src строку, а не файл, где эта строка существует. Я много искал перед публикацией, но мне не удалось найти что-то подобное. Моя главная проблема в том, что машинный перевод работает медленнее, потому что мне приходится читать / открывать файлы. Заранее спасибо!
например: -src /TestFolder/TestFolder/TestFolder/TestFolder/TestFolder/TestFolder/TestFolder/test.txt;
вместо файла добавьте строку напрямую.
1 ответ
Нет, это невозможно, потому что -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