docs: @Deprecated
      public static ParagraphVectors readParagraphVectorsFromText(@NonNull InputStream stream) {
          try {
              BufferedReader reader = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8));
              ArrayList<String> labels = new ArrayList<>();
              ArrayList<INDArray> arrays = new ArrayList<>();
              VocabCache<VocabWord> vocabCache = new AbstractCache.Builder<VocabWord>().build();
              String line = "";
              while ((line = reader.readLine()) != null) {
                  String[] split = line.split(" ");
                  split[1] = split[1].replaceAll(WHITESPACE_REPLACEMENT, " ");
                  VocabWord word = new VocabWord(1.0, split[1]);
                  if (split[0].equals("L")) {
                      // we have label element here
                      word.setSpecial(true);
                      word.markAsLabel(true);
                      labels.add(word.getLabel());
                  } else if (split[0].equals("E")) {
                      // we have usual element, aka word here
                      word.setSpecial(false);
                      word.markAsLabel(false);
                  } else
                      throw new IllegalStateException(
                              "Source stream doesn't looks like ParagraphVectors serialized model");
  
                  // this particular line is just for backward compatibility with InMemoryLookupCache
                  word.setIndex(vocabCache.numWords());
  
                  vocabCache.addToken(word);
                  vocabCache.addWordToIndex(word.getIndex(), word.getLabel());
  
                  // backward compatibility code
                  vocabCache.putVocabWord(word.getLabel());
  
                  float[] vector = new float[split.length - 2];
  
                  for (int i = 2; i < split.length; i++) {
                      vector[i - 2] = Float.parseFloat(split[i]);
                  }
  
                  INDArray row = Nd4j.create(vector);
  
                  arrays.add(row);
              }
  
              // now we create syn0 matrix, using previously fetched rows
              /*INDArray syn = Nd4j.create(new int[]{arrays.size(), arrays.get(0).columns()});
              for (int i = 0; i < syn.rows(); i++) {
                  syn.putRow(i, arrays.get(i));
              }*/
              INDArray syn = Nd4j.vstack(arrays);
  
  
              InMemoryLookupTable<VocabWord> lookupTable =
                      (InMemoryLookupTable<VocabWord>) new InMemoryLookupTable.Builder<VocabWord>()
                              .vectorLength(arrays.get(0).columns()).useAdaGrad(false).cache(vocabCache)
                              .build();
              Nd4j.clearNans(syn);
              lookupTable.setSyn0(syn);
  
              LabelsSource source = new LabelsSource(labels);
              ParagraphVectors vectors = new ParagraphVectors.Builder().labelsSource(source).vocabCache(vocabCache)
                      .lookupTable(lookupTable).modelUtils(new BasicModelUtils<VocabWord>()).build();
  
              try {
                  reader.close();
              } catch (Exception e) {
              }
  
              vectors.extractLabels();
  
              return vectors;
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
      }