public void convert(BufferedWriter bw, BufferedWriter vocabWriter, BufferedWriter labelWriter) throws IOException {
			
			// Get vocabularies into maps. 
			int i = 0;
			int j = 0;
			for(Article a : docs) {
				
				List<String> abstractWords = abstractWords(a.abstractText);
				for(String w : abstractWords) {
					
					if(Stopwords.stopwords.contains(w) || w.length() < 2) {
						continue;
					}
					
					Integer id = vocab.get(w);
					if(id == null) {
						vocab.put(w,  i);
						i++;
					}
				}
				
				List<String> labelWords = labelWords(a.meshMajor);
				for(String l : labelWords) {
					Integer id = labelVocab.get(l);
					if(id == null) {
						labelVocab.put(l, j);
						j++;
					}
				}
				
			}
			
			System.out.println("Successfully identified vocabulary and labels");
			
			// Now we know how many regular vocabulary words there will be, so 
			// we need to renumber the label vocab. 
			int Nvocab = vocab.size();
			for(String l : labelVocab.keySet()) {
				labelVocab.put(l, labelVocab.get(l) + Nvocab);
			}
			
			// Write out the documents in the lda-c format.
			// We do need to iterate through the list of documents again. 
			for(Article a : docs) {
				bw.write(ldaC(vocab, labelVocab, abstractWords(a.abstractText), labelWords(a.meshMajor))) ;
				bw.newLine();
			}
			
			writeVocab(vocabWriter, vocab);
			writeVocab(labelWriter, labelVocab);
			
		}