static public T_POS InnertPosToPos(T_INNER_POS inPos) { if (inPos == T_INNER_POS.POS_UNK) { return(T_POS.POS_UNK); } return((T_POS)(0x01 << (int)inPos)); }
public void Traffic(List <String> words) { for (int i = 0; i < words.Count - 1; i++) { bool isReg; T_INNER_POS[] curPos = _POS.GetPos((String)words[i], out isReg); T_INNER_POS[] nextPos = _POS.GetPos((String)words[i + 1], out isReg); //ArrayList curList = _POS.GetPosList(curPos); if (curPos.Length != 1) { continue; } T_INNER_POS pos1 = curPos[0]; if (pos1 == T_INNER_POS.POS_UNK) { continue; } //ArrayList nextList = _POS.GetPosList(nextPos); if (nextPos.Length != 1) { continue; } T_INNER_POS pos2 = (T_INNER_POS)nextPos[0]; if (pos2 == T_INNER_POS.POS_UNK) { continue; } T_POSBin bin = new T_POSBin(pos1, pos2); Hit(bin); } }
/// <summary> /// 增加单词的词性 /// </summary> /// <param name="word">单词</param> /// <param name="pos">词性</param> public void AddWordPos(String word, int pos) { if (word == null) { return; } if (word.Length == 1) { _OneCharTable[word] = true; } ArrayList list = GetPosList(pos); T_INNER_POS[] inPosList = new T_INNER_POS[list.Count]; for (int i = 0; i < inPosList.Length; i++) { inPosList[i] = GetInnerPos((T_POS)list[i]); } _PosTable[word] = inPosList; }
public T_POSBin(T_INNER_POS pos1, T_INNER_POS pos2) { _Pos1 = pos1; _Pos2 = pos2; _HashCode = (int)pos1 * 64 + (int)pos2; }