コード例 #1
0
 // 将原始训练数据中的每一篇文档分词。训练数据保存方式,每一类数据放在一个文件夹下,两类数据再放到一个大的文件夹下。
 public static void SegmentTraindata(String sdir, String ddir) throws Exception {
   File DFolder = new File(ddir);
   DFolder.mkdir();
   String SFolder = "./" + sdir;
   File traindata = new File(SFolder);
   File[] files = traindata.listFiles();
   for (int i = 0; i < files.length; i++) {
     if (files[i].isDirectory()) {
       File DFolderChildren = new File(ddir + "//" + files[i].getName());
       DFolderChildren.mkdir();
       File[] filess = files[i].listFiles();
       for (int j = 0; j < filess.length; j++) {
         InputStreamReader read = new InputStreamReader(new FileInputStream(filess[j]));
         BufferedReader bufferedReader = new BufferedReader(read);
         String text = null;
         String lineTxt = null;
         while ((lineTxt = bufferedReader.readLine()) != null) {
           text = text + lineTxt;
         }
         read.close();
         String textseg = SegTool_v2.getInstance().segment(text);
         FileWriter fw =
             new FileWriter(
                 new File(ddir + "//" + files[i].getName() + "//" + filess[j].getName()));
         BufferedWriter bw = new BufferedWriter(fw);
         bw.write(textseg);
         bw.close();
         fw.close();
       }
     }
   }
 }
コード例 #2
0
  public static void main(String[] options) {

    try {
      MessageClassify messageCl = null;
      if (new File(modelname).exists()) messageCl = loadModel(modelname);
      else {
        SegmentTraindata("organ", "organbyseg");
        messageCl = trainModel();
        try {
          ObjectOutputStream modelOutObjectFile =
              new ObjectOutputStream(new FileOutputStream(modelname));
          modelOutObjectFile.writeObject(messageCl);
          modelOutObjectFile.close();
        } catch (Exception e) {
        }
      }
      //            int sum=0;
      List<Integer> sum = new ArrayList<Integer>();
      File testdata = new File("organbyseg");
      for (File dir : testdata.listFiles()) {
        System.out.println(dir.getName());
        int loop = 0;
        for (File file : dir.listFiles()) {
          String news = messageCl.getStringFromFile(file);
          String newsbyseg = SegTool_v2.getInstance().segment(news);
          double predicted = messageCl.classifyMessage(newsbyseg);
          //    				System.out.println(String.valueOf((int)predicted));
          //    				System.out.println(dir.getName());
          if (String.valueOf((int) predicted).equals(dir.getName())) {
            loop = loop + 1;

          } else {
            System.out.println(file.getName());
          }
        }
        sum.add(loop);
      }
      System.out.println(sum);

      //            String title="鄂尔多斯:关于召开2016年第二次临时股东大会的通知";
      //            String
      // content="内蒙古鄂尔多斯资源股份有限公司董事会决定于2016年4月27日10点00分召开2016年第二次临时股东大会,本次股东大会所采用的表决方式是现场投票和网络投票相结合的方式,采用上海证券交易所网络投票系统,通过交易系统投票平台的投票时间为股东大会召开当日的交易时间段,即9:15-9:25,9:30-11:30,13:00-15:00;通过互联网投票平台的投票时间为股东大会召开当日的9:15-15:00,审议关于为下属子公司提供贷款担保的议案、关于收购内蒙古鄂尔多斯能源有限责任公司的全部股权的议案。 仅供参考,请查阅当日公告全文。";
      //    		String news=title+"\r\n"+content;
      //            String newsbyseg=SegTool_v2.getInstance().segment(news);
      //            messageCl.classifyMessage(newsbyseg);

    } catch (Exception e) {
      e.printStackTrace();
    }
  }