资源简介
中文分词 正想最大匹配 结合词典所完成的分词系统 C++代码
代码片段和文件信息
#include “stdafx.h“
#include “ContextStat.h“
#include “Utility.h“
#include
#include
#include
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CContextStat::CContextStat()
{
m_pSymbolTable=0;//new buffer for symbol
m_pContext=0;//init with empty
}
CContextStat::~CContextStat()
{
delete [] m_pSymbolTable;
PMYCONTEXT pCur=m_pContextpTemp;
while(pCur!=NULL)
{//delete the context array
pTemp=pCur->next;
for(int i=0;i delete [] pCur->aContextArray[i];
delete [] pCur->aContextArray;
delete [] pCur->aTagFreq;
delete pCur;
pCur=pTemp;
}
}
bool CContextStat::SetSymbol(int *nSymbol)
{
memcpy(m_pSymbolTablenSymbolsizeof(int)*m_nTableLen);
return true;
}
bool CContextStat::Add(int nKey int nPrevSymbol int nCurSymbol int nFrequency)
{//Add the context symbol to the array
PMYCONTEXT pRetItempNew;
int nPrevIndexnCurIndex;
if(!GetItem(nKey&pRetItem))//Not get it
{
pNew=new MYCONTEXT;
pNew->nKey=nKey;
pNew->nTotalFreq=0;
pNew->next=NULL;
pNew->aContextArray=new int*[m_nTableLen];
pNew->aTagFreq=new int[m_nTableLen];
memset(pNew->aTagFreq0sizeof(int)*m_nTableLen);
for(int i=0;i {//new buffer for every dimension
pNew->aContextArray[i]=new int[m_nTableLen];
memset(pNew->aContextArray[i]0sizeof(int)*m_nTableLen);//Init the frequency
}
if(pRetItem==NULL)//Empty the new item is head
m_pContext=pNew;
else//link the new item between pRetItem and its next item
{
pNew->next=pRetItem->next;
pRetItem->next=pNew;
}
pRetItem=pNew;
}
nPrevIndex=BinarySearch(nPrevSymbolm_pSymbolTablem_nTableLen);
if(nPrevSymbol>256&&nPrevIndex==-1)//Not find just for ‘nx‘ and other uncommon POS
nPrevIndex=BinarySearch(nPrevSymbol-nPrevSymbol%256m_pSymbolTablem_nTableLen);
nCurIndex=BinarySearch(nCurSymbolm_pSymbolTablem_nTableLen);
if(nCurSymbol>256&&nCurIndex==-1)//Not find just for ‘nx‘ and other uncommon POS
nCurIndex=BinarySearch(nCurSymbol-nCurSymbol%256m_pSymbolTablem_nTableLen);
if(nPrevIndex==-1||nCurIndex==-1)//error finding the symbol
return false;
pRetItem->aContextArray[nPrevIndex][nCurIndex]+=nFrequency;//Add the frequency
pRetItem->aTagFreq[nPrevIndex]+=nFrequency;
pRetItem->nTotalFreq+=nFrequency;
return true;
}
bool CContextStat::Save(char *sFilename)
{
FILE *fp*fp1;
PMYCONTEXT pCur;
char sFileShow[100];
int i;
if((fp=fopen(sFilename“wb“))==NULL)
{
return false;
}
strcpy(sFileShowsFilename);
strcat(sFileShow“.shw“);
if((fp1=fopen(sFileShow“wb“))==NULL)
{
return false;
}
fwrite(&m_nTableLensizeof(m_nTableLen)1fp);//write the table length
fwrite(m_pSymbolTablesizeof(int)m_nTableLenfp);//write the symbol table
fprintf(fp1“Table Len=
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6986 2009-05-28 20:37 源代码\ContextStat.cpp
文件 1160 2009-05-28 20:37 源代码\ContextStat.h
文件 172642 2012-05-16 12:56 源代码\Debug\detours.lib
文件 7544244 2002-09-13 13:47 源代码\Debug\dic\BigramDict.dct
文件 1565689 2002-09-13 13:47 源代码\Debug\dic\coreDict.dct
文件 10412 2002-09-13 13:47 源代码\Debug\dic\lexical.ctx
文件 1032 2002-09-13 13:51 源代码\Debug\dic\nr.ctx
文件 113780 2002-09-13 13:51 源代码\Debug\dic\nr.dct
文件 408 2002-09-13 13:55 源代码\Debug\dic\ns.ctx
文件 54278 2002-09-13 13:55 源代码\Debug\dic\ns.dct
文件 408 2002-09-13 13:55 源代码\Debug\dic\tr.ctx
文件 64000 2002-09-13 13:55 源代码\Debug\dic\tr.dct
目录 0 2010-04-10 21:36 源代码\Debug\dic
文件 196695 2012-05-16 13:20 源代码\Debug\GraduationDesign.exe
文件 19800 2012-05-16 13:09 源代码\Debug\SkinMagic.lib
文件 1021820 2008-03-17 20:09 源代码\Debug\SkinMagicLib.lib
..A.SH. 5120 2009-06-15 10:15 源代码\Debug\Thumbs.db
目录 0 2012-05-16 13:23 源代码\Debug
文件 172642 2012-05-16 12:56 源代码\detours.lib
文件 31454 2010-04-10 21:08 源代码\Devior.smf
文件 7544244 2002-09-13 13:47 源代码\dic\BigramDict.dct
文件 1565689 2002-09-13 13:47 源代码\dic\coreDict.dct
文件 10412 2002-09-13 13:47 源代码\dic\lexical.ctx
文件 1032 2002-09-13 13:51 源代码\dic\nr.ctx
文件 113780 2002-09-13 13:51 源代码\dic\nr.dct
文件 408 2002-09-13 13:55 源代码\dic\ns.ctx
文件 54278 2002-09-13 13:55 源代码\dic\ns.dct
文件 408 2002-09-13 13:55 源代码\dic\tr.ctx
文件 64000 2002-09-13 13:55 源代码\dic\tr.dct
目录 0 2010-04-10 20:38 源代码\dic
............此处省略48个文件信息
相关资源
- VC++实现简单的用户登录系统ADO。包括
- VC++实现简单的用户登录系统,包括修
- C++中文版手册 可直接开打查看
- 图书管理系统MFC版
- 西北工业大学C/C++程序设计大作业包含
- C++实现编译原理自动机、LL1文法、及
- Visual C++数据库编程技术与光盘
- C++实现A*算法十五数码问题
- 五子棋(C++Builder)
- gtest1.6.0.zip
- window开源asn.1
- gdal-1.9.2基于vs2010已编译好的c++
- 完整的图书管理系统MFC编写
- C++木马病毒的查杀设计与实现含源码
- 改善后的C++考勤管理系统
- ARQ停止等待协议c++
- C++:面向对象程序设计陈良银 李涛
- C++并发编程实战(英文版)
- diffie-hellman密钥交换协议vc++实现
- Visual+C++开发基于SNMP的网络管理软件(
- Visual C++数字图像实用工程案例精选徐
- 标准化考试系统 C++课设
- c++并发编程实战C++11完整pdf中文版
- C++沉思录+源代码
- armadillo C++矩阵运算函数库
- 基于OpenGL的3D射击游戏的设计与实现
- C++与access开发的DOS版学生成绩管理系
- vs2015 c++实现 Interactive graph cuts
- 基于C++ MFC的学生宿舍管理系统
- 宿舍管理系统C++MFC项目
评论
共有 条评论