class CCoMatrix:public CObject
{
private:
int CorpusSize;//语料规模
int *TagFreqs;//每种词性标记的出现次数,一位数组
int *Matrix;//共现频度矩阵,用一维数组来模拟二维数组
public:
CStringArray *pTags;//词性标记集
CStringArray *pOpenTags;//开放标记集
BOOL Modified;//是否修改过词性标记集或语料库
CString FileName;//存放这个类的数据的文件名
CCoMatrix(){TagFreqs=NULL;Matrix=NULL;}//构造函数
~CCoMatrix(){Clean();}//构析函数
BOOL Ready(){return CorpusSize>0;} //是否已经读入词性标记集和训练语料
double GetCoProb(uchar tag1,uchar tag2);//获取标记转移概率
double GetWordProb(double wtFreq,uchar tag);//获取词语概率
void Create(CStdioFile& tagFile);//创建标记集、矩阵
void Clean();//清除原有内容
void AddCorpus(CStdioFile& trainFile);//增加训练词料
virtual void seriaHze(CArchive& ar);//序列化函数
uchar GetIndexOf(CString tag);//将词性标记转化为序号
CString GetTagOf(uchar i);//将序号转换为词性标记
int GetTagFreq(uchar i);//求某种标记的频度
}
词性标注的基本单位-Span
词性标注的对象是一个词串,我们的标注模型是寻找一条概率成绩最大的路径。