@Override
	public int generateAt(Instance instance, IFeatureAlphabet features, int pos,
			int... numLabels) {
		String[][] data = ( String[][]) instance.getData();
		
		int len = data[0][pos].length();

		StringBuilder sb = new StringBuilder();

		sb.append(id);
		sb.append(':');
		sb.append(pos);
		sb.append(':');
		
		String str = data[0][pos]; //这里数据行列和模板中行列相反
		StringType type = Chars.getStringType(str);
		String stype = type.name(); 
		
		if(type == StringType.M){
			
			if(str.length()>4 && str.startsWith("http:"))
				stype = "U$";
			else if(str.length()>4&&str.contains("@"))
				stype  = "E$";
			else if(str.contains(":"))
				stype = "T$";
		}
		
		sb.append(stype);	
		
		int index = features.lookupIndex(sb.toString(), numLabels[0]);
		return index;
	}
@ Override public int generateAt ( Instance instance , IFeatureAlphabet features , int pos , int ... numLabels ) { String [ ] [ ] data = ( String [ ] [ ] ) instance . getData ( ) ; int len = data [ 0 ] [ pos ] . length ( ) ; StringBuilder sb = new StringBuilder ( ) ; sb . append ( id ) ; sb . append ( ':' ) ; sb . append ( pos ) ; sb . append ( ':' ) ; String str = data [ 0 ] [ pos ] ; StringType type = Chars . getStringType ( str ) ; String stype = type . name ( ) ; if ( type == StringType . M ) { if ( str . length ( ) > 4 && str . startsWith ( "http:" ) ) stype = "U$" ; else if ( str . length ( ) > 4 && str . contains ( "@" ) ) stype = "E$" ; else if ( str . contains ( ":" ) ) stype = "T$" ; } sb . append ( stype ) ; int index = features . lookupIndex ( sb . toString ( ) , numLabels [ 0 ] ) ; return index ; }
{@inheritDoc}