示例#1
0
  /**
   * 构造并初始化网格
   *
   * @param carrier 样本实例
   * @return 推理网格
   */
  protected Node[][] initialLattice(Instance carrier) {
    int[][] data = (int[][]) carrier.getData();

    int length = carrier.length();

    Node[][] lattice = new Node[length][];
    for (int l = 0; l < length; l++) {
      lattice[l] = new Node[ysize];
      for (int c = 0; c < ysize; c++) {
        lattice[l][c] = new Node(ysize);
        for (int i = 0; i < orders.length; i++) {
          if (data[l][i] == -1 || data[l][i] >= weights.length) // TODO: xpqiu 2013.2.1
          continue;
          if (orders[i] == 0) {
            lattice[l][c].score += weights[data[l][i] + c];
          } else if (orders[i] == 1) {
            int offset = c;
            for (int p = 0; p < ysize; p++) {
              // weights对应trans(c,p)的按行展开
              lattice[l][c].trans[p] += weights[data[l][i] + offset];
              offset += ysize;
            }
          }
        }
      }
    }

    return lattice;
  }