как преобразовать строку в путь в opemnmt-py - PullRequest
2 голосов
/ 30 мая 2020

Я использую opennmt-py для MT, и в коде каждый раз, когда я хочу указать путь, мне нужно записать весь каталог, и это не очень хорошо, когда у меня длинный каталог. есть ли способ установить строку в качестве основного каталога и просто добавить имя файла в конец. Я использую google colab для обучения модели Код такой:

!onmt_preprocess  \\
-train_src //content//drive//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//train.en \\
-train_tgt //content//drive//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//train.fa \\
-valid_src //content//drive//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//dev.en \\
-valid_tgt  //content//drive//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//dev.fa \\
-save_data //content//drive//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//demo//

и код, который я хочу быть таким:

path ='//content//dri`ve//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//'

!onmt_preprocess  \\
-train_src path+'train.en' \\
-train_tgt path+'train.fa' \\
-valid_src path+'dev.en' \\
-valid_tgt  path++'dev.fa' \\
-save_data path+'demo//'

или, может быть, просто можно записать весь путь в переменную и использовать его как:

path_train ='//content//dri`ve//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//'

!onmt_preprocess  \\
-train_src path_train \\

1 Ответ

2 голосов
/ 30 мая 2020

Вы можете использовать простую конкатенацию:

path='//content//drive//My\ Drive//Colab\ Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//'
!onmt_preprocess  \\
  -train_src $path'train.en' \\
  -train_tgt $path'train.fa' \\
  -valid_src $path'dev.en' \\
  -valid_tgt $path'dev.fa' \\
  -save_data $path'demo//'

Примечания:

  • После переменной path должно следовать =, а не пробел. Вокруг = не должно быть пробелов. path = 'text' неверно, path ='text' неверно, path= 'text' также неверно.
  • Когда вы используете переменную, добавьте к ней $: !echo $path'train.en' напечатает //content//drive//My Drive//Colab Notebooks//NLP//spring99//CA6//Corpora//En2Fa-Translation//train.en
  • Конкатенация означает просто приклеивание строковых литералов к переменным без использования +, &, et c.
...