NEROControllerOneTimeImp, 神经网络索引类 package OEI.ME.nero.E; import java.util.Map; import AVQ.ASQ.OVQ.OSQ.VSQ.obj.FMHMMNode; import SVQ.stable.StablePOS; import OCI.ME.nero.C.NERO_C_OneTime; //著作权人+作者= 罗瑶光 public class NERO_C_OneTime_E implements NERO_C_OneTime { public StringBuilder getBinaryForestRecurWordOneTime( StringBuilder outputWordNode, String inputString , int charPosition, int inputStringLength , Map forestRoots, int forestDepth , int charPositionNext) { if (StablePOS.INT_THREE== forestDepth){ return outputWordNode; } FMHMMNode fFHMMNode= forestRoots.get( Long.valueOf(inputString.charAt(charPosition))); if (null== fFHMMNode) { return outputWordNode; } Map outputList= fFHMMNode.getNext(); if (null== outputList || charPositionNext>= inputStringLength) { return outputWordNode; } char positionOfi= inputString.charAt(charPositionNext); if (outputList.containsKey(String.valueOf(positionOfi))) { outputWordNode = getBinaryForestRecurWordOneTime( outputWordNode.append(positionOfi) , inputString, charPositionNext, inputStringLength , forestRoots, ++forestDepth, ++charPositionNext); } return outputWordNode; } //prepare for the big map collection in the future. public StringBuilder getBinaryForestsRecurWordOneTime( StringBuilder outputWordNode, String inputString , int charPosition, int inputStringLength , Map[] forestsRoots, int forestDepth ,int charPositionNext) { if (StablePOS.INT_THREE== forestDepth){ return outputWordNode; } FMHMMNode fFHMMNode= getFMHMMNode(forestsRoots,inputString,charPosition); if (null== fFHMMNode) { return outputWordNode; } Map outputList= fFHMMNode.getNext(); if (null== outputList|| charPositionNext>= inputStringLength) { return outputWordNode; } char positionOfi= inputString.charAt(charPositionNext); if (outputList.containsKey(String.valueOf(positionOfi))) { outputWordNode= getBinaryForestsRecurWordOneTime( outputWordNode.append(positionOfi), inputString, charPositionNext , inputStringLength, forestsRoots, ++forestDepth, ++charPositionNext); } return outputWordNode; } private FMHMMNode getFMHMMNode(Map[] forestsRoots , String inputString, int charPosition) { for(Map forestsRoot: forestsRoots) { if(forestsRoot.containsKey(Long.valueOf(inputString.charAt(charPosition)))){ return forestsRoot.get(Long.valueOf(inputString.charAt(charPosition))); } } return null; } public StringBuilder getQuickForestRecurWord( StringBuilder outputWordNode, String inputString, int charPosition , int inputStringLength, Map posCntoCn , int forestDepth, int charPositionNext ) { if (StablePOS.INT_THREE== forestDepth || charPositionNext>= inputStringLength) { return outputWordNode; } char positionOfi= inputString.charAt(charPositionNext); if (posCntoCn.containsKey(String.valueOf( outputWordNode.toString()+ positionOfi))) { outputWordNode= getQuickForestRecurWord( outputWordNode.append(positionOfi), inputString , charPositionNext, inputStringLength , posCntoCn, ++forestDepth, ++charPositionNext); } return outputWordNode; } }