diff --git a/trainer/src/MacaonTrain.cpp b/trainer/src/MacaonTrain.cpp
index 63a32dee856f515641752cd91d0f48740e9fb314..9227e7222095465eb3589c77e35737b183c9b9f2 100644
--- a/trainer/src/MacaonTrain.cpp
+++ b/trainer/src/MacaonTrain.cpp
@@ -207,9 +207,13 @@ int MacaonTrain::main()
     }
     if (trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractGold))
     {
+      machine.setDictsState(Dict::State::Open);
       trainer.createDataset(goldConfig, debug, modelPath/"examples/train", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
       if (!computeDevScore)
+      {
+        machine.setDictsState(Dict::State::Closed);
         trainer.createDataset(devGoldConfig, debug, modelPath/"examples/dev", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
+      }
     }
     if (trainStrategy[currentEpoch].count(Trainer::TrainAction::ResetParameters) or trainStrategy[currentEpoch].count(Trainer::TrainAction::ResetOptimizer))
     {
@@ -225,9 +229,13 @@ int MacaonTrain::main()
     }
     if (trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic))
     {
+      machine.setDictsState(Dict::State::Open);
       trainer.createDataset(goldConfig, debug, modelPath/"examples/train", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
       if (!computeDevScore)
+      {
+        machine.setDictsState(Dict::State::Closed);
         trainer.createDataset(devGoldConfig, debug, modelPath/"examples/dev", currentEpoch, trainStrategy[currentEpoch].count(Trainer::TrainAction::ExtractDynamic));
+      }
     }
     if (trainStrategy[currentEpoch].count(Trainer::TrainAction::Save))
     {
diff --git a/trainer/src/Trainer.cpp b/trainer/src/Trainer.cpp
index 66efbfebe9059525ad96d492e6798b29364cd61f..ff4f1a3088577afbd8c9bc1139a3ac0e1ca79495 100644
--- a/trainer/src/Trainer.cpp
+++ b/trainer/src/Trainer.cpp
@@ -22,7 +22,6 @@ void Trainer::createDataset(BaseConfig & goldConfig, bool debug, std::filesystem
   SubConfig config(goldConfig, goldConfig.getNbLines());
 
   machine.trainMode(false);
-  machine.setDictsState(Dict::State::Open);
 
   extractExamples(config, debug, dir, epoch, dynamicOracle);