📄 pos.cs
字号:
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 + -