docs: public int generateAt(Instance instance, IFeatureAlphabet features, int pos,
  			int... numLabels) throws Exception {
  		assert (numLabels.length == 1);
  
  		String[][] data = (String[][]) instance.getData();
  		int len = data[0].length;
  
  		if(order>0&& len==1) //对于长度为1的序列，不考虑1阶以上特征
  			return -1;
  
  		//		if(isForceTrain){
  		//			if(len<minLen && order>0 )//训练时，对于长度过小的句子，不考虑开始、结束特征
  		//				return -1;
  		//		}
  		StringBuilder sb = new StringBuilder();
  		sb.append(id);
  		sb.append(':');
  		for (int i = 0; i < dims.length; i++) {
  			int j = dims[i][0]; //行号
  			int k = dims[i][1]; //列号
  			if(k>data.length-1)
  				return -1;
  			int ii = pos + j;
  			int iii = ii;
  			if (ii < 0){
  				if(len<minLen )//对于长度过小的句子，不考虑开始、结束特征
  					return -1;
  				while(iii++<0){
  					sb.append("B");
  				}
  				sb.append("_");
  			}else if (ii >= len){
  				if(len<minLen )//对于长度过小的句子，不考虑开始、结束特征
  					return -1;
  				while(iii-->=len){
  					sb.append("E");
  				}
  				sb.append("_");
  			} else {
  				sb.append(data[k][pos + j]); //这里数据行列和模板中行列相反
  			}
  			sb.append("/");
  		}
  		int index = features.lookupIndex(sb.toString(), (int) Math.pow(numLabels[0], order + 1));
  //		System.out.println(sb.toString());
  		return index;
  	}