// refFile.close();
// Source language vocabulary
println("Creating src vocabulary @ " + (new Date()));
srcVocab = new Vocabulary();
int[] sourceWordsSentences = Vocabulary.initializeVocabulary(trainSrc_fileName, srcVocab, true);
int numSourceWords = sourceWordsSentences[0];
int numSourceSentences = sourceWordsSentences[1];
// Source language corpus array
println("Reading src corpus @ " + (new Date()));
srcCorpusArray = SuffixArrayFactory.createCorpusArray(trainSrc_fileName, srcVocab, numSourceWords, numSourceSentences);
// Source language suffix array
println("Creating src SA @ " + (new Date()));
srcSA = SuffixArrayFactory.createSuffixArray(srcCorpusArray, maxCacheSize);
// Target language vocabulary
println("Creating tgt vocabulary @ " + (new Date()));
tgtVocab = new Vocabulary();
int[] targetWordsSentences = Vocabulary.initializeVocabulary(trainTgt_fileName, tgtVocab, true);
int numTargetWords = targetWordsSentences[0];
int numTargetSentences = targetWordsSentences[1];