public int [][] loadInferData (String modelFolder, String fileName) {

        System.out.println ("Load Infer Data Start!");
        int inferData [][] = null; 
        BufferedReader reader = null;
        
        if (null == wordMapping) {
            loadWordMapping (modelFolder + "/wordMapping.txt");
            System.out.println ("Load wordMapping!");
        }
        
        try {
            File file = new File (fileName);
            reader = new BufferedReader (new FileReader (file));
            
            String line = null;
            String word = null;
            int count = 0;
            int M = 0; // Doc count
            int m = 0; // a doc id
            int N = 0; // Doc size
            int tmpN = 0; // Tmp doc size
            int wordId = 0;
            // First line is the total count of the Doc
            line = reader.readLine ();
            M = Integer.valueOf (line);
            System.out.println ("Doc cnt is " + M);
            inferData = new int [M][];

            while ((line = reader.readLine ())!= null) {
                String [] words = line.split (" ");
                tmpN = words.length;
                N = 0;
                
                // Some words in infer data may not appear in train
                // Get the N of a doc (with unseen word filterd)
                Vector <Integer> wordIds = new Vector <Integer> ();
                
                for (int i=0;i<tmpN;++i) {
                    word = words [i];
                    Integer wordId_ = null;

                    if ((wordId_ = wordMapping.get (word)) != null) {
                        wordIds.add (wordId_);
                    }
                }

                N = wordIds.size ();
                if (N == 0) {
                    System.out.println ("Doc size is Zero, please remove this doc, line =" + (m + 2));
                }

                inferData [m] = new int [N];
                
                for (int n=0;n<N;++n) {
                    wordId = (wordIds.get (n)).intValue ();
                    inferData [m][n] = wordId;
                }
                
                ++ m;
            }
            
            reader.close ();
        } catch (IOException e) {
            e.printStackTrace ();
        } finally {
            if (reader != null) {
                try {
                    reader.close ();
                } catch (IOException e) {
                    e.printStackTrace ();
                }
            }
        }

        System.out.println ("Word Dict size is " + wordMapping.size ());
        System.out.println ("Infer Doc cout " + inferData.length);

        return inferData;
    }