Пример #1
0
  public boolean load(String fileName, boolean isReset) {
    File file = new File(fileName);
    if (!file.canRead()) return false; // fail while opening the file

    try {

      byte[] b = null;
      DataInputStream in = new DataInputStream(new FileInputStream(file));
      // 读取长度
      tableLen = GFCommon.bytes2int(Utility.readBytes(in, 4), false);
      logger.debug("tableLen:" + tableLen);

      // 读取符号标志
      symbolTable = new int[tableLen];
      for (int i = 0; i < tableLen; i++) {
        b = Utility.readBytes(in, 4);
        symbolTable[i] = GFCommon.bytes2int(b, false);
        logger.debug("symbolTable[" + i + "]:" + symbolTable[i]);
      }

      long fileLen = file.length();
      long curLen = 4 + tableLen * 4;
      while (curLen < fileLen) {
        logger.debug("tagContext:");
        TagContext tc = new TagContext();

        // 读取关键词
        b = Utility.readBytes(in, 4);
        int key = GFCommon.bytes2int(b);
        curLen += 4;
        logger.debug("\tkey:" + key);

        // 读取总词频
        b = Utility.readBytes(in, 4);
        curLen += 4;
        int totalFreq = GFCommon.bytes2int(b, false);
        logger.debug("\ttotalFreq:" + totalFreq);

        // 读取词频
        int[] tagFreq = new int[tableLen];
        for (int i = 0; i < tableLen; i++) {
          b = Utility.readBytes(in, 4);
          curLen += 4;
          tagFreq[i] = GFCommon.bytes2int(b, false);
          logger.debug("\ttagFreq[" + i + "]:" + tagFreq[i]);
        }

        // 读取上下文数组
        int[][] contextArray = new int[tableLen][tableLen];
        for (int i = 0; i < tableLen; i++) {
          String pr = "";
          logger.debug("\tcontextArray[" + i + "]");
          for (int j = 0; j < tableLen; j++) {
            b = Utility.readBytes(in, 4);
            curLen += 4;
            contextArray[i][j] = GFCommon.bytes2int(b, false);
            pr += " " + contextArray[i][j];
          }
          logger.debug("\t\t" + pr);
        }

        tc.setTotalFreq(totalFreq);
        tc.setKey(key);
        tc.setTagFreq(tagFreq);
        tc.setContextArray(contextArray);
        tcList.add(tc);
      }
      in.close();
    } catch (FileNotFoundException e) {
      logger.debug("FileNotFoundException:{}", e);
    } catch (IOException e) {
      logger.debug("IOException:{}", e);
    }
    return true;
  }