⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pos.cs

📁 KTDictSeg 简介: KTDictSeg 是由KaiToo搜索开发的一款基于字典的简单中英文分词算法 * 主要功能: 中英文分词
💻 CS
📖 第 1 页 / 共 2 页
字号:
                return 1;
            }
            else
            {
                return -1;
            }
        }

        #endregion
    }
            
    /// <sum= mary>
    /// 词性= 处理
    /// </summary>
    public class CPOS
    {
        Hashtable m_PosTable; //单词对应词性表
        Hashtable m_OneCharTable; //单字符词表


        public static T_INNER_POS GetInnerPos(T_POS pos)
        {
            switch (pos)
            {
                case T_POS.POS_D_A:	//	形容词 形语素
                    return T_INNER_POS.POS_D_A;

                case T_POS.POS_D_B:	//	区别词 区别语素
                    return T_INNER_POS.POS_D_B;

                case T_POS.POS_D_C:	//	连词 连语素
                    return T_INNER_POS.POS_D_C;

                case T_POS.POS_D_D:	//	副词 副语素
                    return T_INNER_POS.POS_D_D;

                case T_POS.POS_D_E:	//	叹词 叹语素
                    return T_INNER_POS.POS_D_E;

                case T_POS.POS_D_F:	//	方位词 方位语素
                    return T_INNER_POS.POS_D_F;

                case T_POS.POS_D_I:	//	成语
                    return T_INNER_POS.POS_D_I;

                case T_POS.POS_D_L:	//	习语
                    return T_INNER_POS.POS_D_L;

                case T_POS.POS_A_M:	//	数词 数语素
                    return T_INNER_POS.POS_A_M;

                case T_POS.POS_D_MQ:   //	数量词
                    return T_INNER_POS.POS_D_MQ;

                case T_POS.POS_D_N:	//	名词 名语素
                    return T_INNER_POS.POS_D_N;

                case T_POS.POS_D_O:	//	拟声词
                    return T_INNER_POS.POS_D_O;

                case T_POS.POS_D_P:	//	介词
                    return T_INNER_POS.POS_D_P;

                case T_POS.POS_A_Q:	//	量词 量语素
                    return T_INNER_POS.POS_A_Q;

                case T_POS.POS_D_R:	//	代词 代语素
                    return T_INNER_POS.POS_D_R;

                case T_POS.POS_D_S:	//	处所词
                    return T_INNER_POS.POS_D_S;

                case T_POS.POS_D_T:	//	时间词
                    return T_INNER_POS.POS_D_T;

                case T_POS.POS_D_U:	//	助词 助语素
                    return T_INNER_POS.POS_D_U;

                case T_POS.POS_D_V:	//	动词 动语素
                    return T_INNER_POS.POS_D_V;

                case T_POS.POS_D_W:	//	标点符号
                    return T_INNER_POS.POS_D_W;

                case T_POS.POS_D_X:	//	非语素字
                    return T_INNER_POS.POS_D_X;

                case T_POS.POS_D_Y:	//	语气词 语气语素
                    return T_INNER_POS.POS_D_Y;

                case T_POS.POS_D_Z:	//	状态词
                    return T_INNER_POS.POS_D_Z;

                case T_POS.POS_A_NR://	人名
                    return T_INNER_POS.POS_A_NR;

                case T_POS.POS_A_NS://	地名
                    return T_INNER_POS.POS_A_NS;

                case T_POS.POS_A_NT://	机构团体
                    return T_INNER_POS.POS_A_NT;

                case T_POS.POS_A_NX://	外文字符
                    return T_INNER_POS.POS_A_NX;

                case T_POS.POS_A_NZ://	其他专名
                    return T_INNER_POS.POS_A_NZ;

                case T_POS.POS_D_H:	//	前接成分
                    return T_INNER_POS.POS_D_H;

                case T_POS.POS_D_K:	//	后接成分
                    return T_INNER_POS.POS_D_K;

                case T_POS.POS_UNK://  未知词性
                    return T_INNER_POS.POS_UNK;

                default:
                    return T_INNER_POS.POS_UNK;
            }
        }

        static public String GetChsPos(T_POS pos)
        {
            switch (pos)
            {
                case T_POS.POS_D_A	:	//	形容词 形语素
                    return "形容词 形语素";

                case T_POS.POS_D_B:	//	区别词 区别语素
                    return "区别词 区别语素";

                case T_POS.POS_D_C:	//	连词 连语素
                    return "连词 连语素";

                case T_POS.POS_D_D:	//	副词 副语素
                    return "副词 副语素";

                case T_POS.POS_D_E:	//	叹词 叹语素
                    return "叹词 叹语素";

                case T_POS.POS_D_F:	//	方位词 方位语素
                    return "方位词 方位语素";

                case T_POS.POS_D_I:	//	成语
                    return "成语";

                case T_POS.POS_D_L:	//	习语
                    return "习语";

                case T_POS.POS_A_M:	//	数词 数语素
                    return "数词 数语素";

                case T_POS.POS_D_MQ:   //	数量词
                    return "数量词";

                case T_POS.POS_D_N:	//	名词 名语素
                    return "名词 名语素";

                case T_POS.POS_D_O:	//	拟声词
                    return "拟声词";

                case T_POS.POS_D_P:	//	介词
                    return "介词";

                case T_POS.POS_A_Q:	//	量词 量语素
                    return "量词 量语素";

                case T_POS.POS_D_R:	//	代词 代语素
                    return "代词 代语素";

                case T_POS.POS_D_S:	//	处所词
                    return "处所词";

                case T_POS.POS_D_T:	//	时间词
                    return "时间词";

                case T_POS.POS_D_U:	//	助词 助语素
                    return "助词 助语素";

                case T_POS.POS_D_V:	//	动词 动语素
                    return "动词 动语素";

                case T_POS.POS_D_W:	//	标点符号
                    return "标点符号";

                case T_POS.POS_D_X:	//	非语素字
                    return "非语素字";

                case T_POS.POS_D_Y:	//	语气词 语气语素
                    return "语气词 语气语素";

                case T_POS.POS_D_Z:	//	状态词
                    return "状态词";

                case T_POS.POS_A_NR://	人名
                    return "人名";

                case T_POS.POS_A_NS://	地名
                    return "地名";

                case T_POS.POS_A_NT://	机构团体
                    return "机构团体";

                case T_POS.POS_A_NX://	外文字符
                    return "外文字符";

                case T_POS.POS_A_NZ://	其他专名
                    return "其他专名";

                case T_POS.POS_D_H:	//	前接成分
                    return "前接成分";

                case T_POS.POS_D_K:	//	后接成分
                    return "后接成分";

                case T_POS.POS_UNK://  未知词性
                    return "未知词性";

                default :
                    return "未知词性";

            }
        }

        public ArrayList GetPosList(int pos)
        {
            ArrayList ret = new ArrayList();

            if (pos == 0)
            {
                ret.Add(T_POS.POS_UNK);
                return ret;
            }

            int point = 0x40000000;

            while (point != 0)
            {
                if ((pos & point) == point)
                {
                    ret.Add((T_POS)point);
                }

                point = (int)(point >> 1);
            }

            return ret;

        }

        /// <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)
            {
                m_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]);
            }

            m_PosTable[word] = inPosList;
        }

        /// <summary>
        /// 是否是未登录的单字词
        /// </summary>
        /// <param name="word">词</param>
        /// <returns></returns>
        public bool IsUnknowOneCharWord(String word)
        {
            if (word.Length > 1 || word.Length == 0)
            {
                return false;
            }
            else if (word[0] < 0x4e00 || word[0] > 0x9fa5)
            {
                return false;
            }
            else
            {
                return m_OneCharTable[word] == null;
            }
        }

        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);
        }

        static public int GetPosFromInnerPosList(T_INNER_POS[] inPosList)
        {
            int retPos = 0;

            foreach (T_INNER_POS pos in inPosList)
            {
                if (pos == T_INNER_POS.POS_UNK)
                {
                    continue;
                }

                retPos |= 0x01 << (int)pos;
            }

            return retPos;
        }


        /// <summary>
        /// 获取单词的词性
        /// </summary>
        /// <param name="word">单词</param>
        /// <param name="isReg">是否是已登录词</param>
        /// <returns>单词词性</returns>
        public T_INNER_POS[] GetPos(String word, out bool isReg)
        {
            object obj = m_PosTable[word];
            if (obj == null)
            {
                isReg = false;
                return new T_INNER_POS[0];
            }
            else
            {
                isReg = true;
                return (T_INNER_POS[])obj;
            }
        }


        public CPOS()
        {
            m_PosTable = new Hashtable();
            m_OneCharTable = new Hashtable();

        }



    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -