public static void SaveNewMetadatas() {
        LSI lsi = LSI.getInstance();
        double[][] docVectorDesc = null;
        double[][] docVectorCaption = null;
        double[][] docVectorComment = null;
        int[][] temp = getTermDocMatricDesc();
        if (temp.length > 0) {
            lsi.computeSVD(temp);
            docVectorDesc = lsi.getDocVectors();
            SaveNewScaleDesc(lsi.getScales());
            SaveNewTermVectorDesc(lsi.getTermVector());
        }
        temp = null;
        temp = getTermDocMatricCaption();
        if (temp.length > 0) {
            lsi.computeSVD(temp);
            docVectorCaption = lsi.getDocVectors();
            SaveNewScaleCaption(lsi.getScales());
            SaveNewTermVectorCaption(lsi.getTermVector());
        }
        temp = null;
        temp = getTermDocMatricComment();
        if (temp.length > 0) {
            lsi.computeSVD(temp);
            docVectorComment = lsi.getDocVectors();
            SaveNewScaleComment(lsi.getScales());
            SaveNewTermVectorComment(lsi.getTermVector());
        }

        TreeBuilder tb = new TreeBuilder();
        Metadata metadata;
        metadataDao = new DaoMetadata();
        List<Metadata> metadataList = metadataDao.read(LANGUAGE);

        //bukuDao.delete();

        for (int i = 0; i < metadataList.size(); i++) {
            metadata = (Metadata) metadataList.get(i);
            metadata.setXDocVecDesc(docVectorDesc != null ? docVectorDesc[i][0] : 0.0);
            metadata.setYDocVecDesc(docVectorDesc != null ? docVectorDesc[i][1] : 0.0);
            metadata.setXDocVecCaption(docVectorCaption != null ? docVectorCaption[i][0] : 0.0);
            metadata.setYDocVecCaption(docVectorCaption != null ? docVectorCaption[i][1] : 0.0);
            metadata.setXDocVecComment(docVectorComment != null ? docVectorComment[i][0] : 0.0);
            metadata.setYDocVecComment(docVectorComment != null ? docVectorComment[i][1] : 0.0);
            metadata.setTree("");
            try {
                metadata.setTree(tb.getTree(metadata, getAbstractAnalyzer()));
            } catch (JAXBException ex) {
                Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Throwable ex) {
                Logger.getLogger(Extractor.class.getName()).log(Level.SEVERE, null, ex);
            }

            metadataDao.update(metadata);
        }
    }