亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? contextstat.cpp

?? 中文分詞系統分析庫
?? CPP
字號:
/****************************************************************************
 *
 * Copyright (c) 2000, 2001 
 *     Machine Group
 *     Software Research Lab.
 *     Institute of Computing Tech.
 *     Chinese Academy of Sciences
 *     All rights reserved.
 *
 * This file is the confidential and proprietary property of 
 * Institute of Computing Tech. and the posession or use of this file requires 
 * a written license from the author.
 * Filename: ContextStat.cpp
 * Abstract:
 *           implementation of the CContextStat class.
 * Author:   Kevin Zhang 
 *          (zhanghp@software.ict.ac.cn)
 * Date:     2002-1-24
 *
 * Notes:
 *                
 ****************************************************************************/
#include "stdafx.h"
#include "ContextStat.h"
#include "Utility.h"
#include <memory.h>
#include <stdio.h>
#include <string.h>
//////////////////////////////////////////////////////////////////////
// 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_pContext,pTemp;
	while(pCur!=NULL)
	{//delete the context array
		pTemp=pCur->next;
		for(int i=0;i<m_nTableLen;i++)
		   delete [] pCur->aContextArray[i];
		delete [] pCur->aContextArray;
		delete [] pCur->aTagFreq;
		delete pCur;
		pCur=pTemp;
	}
	
}

bool CContextStat::SetSymbol(int *nSymbol)
{
	memcpy(m_pSymbolTable,nSymbol,sizeof(int)*m_nTableLen);
	return true;
}

bool CContextStat::Add(int nKey, int nPrevSymbol, int nCurSymbol, int nFrequency)
{//Add the context symbol to the array
	PMYCONTEXT pRetItem,pNew;
	int nPrevIndex,nCurIndex;
    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->aTagFreq,0,sizeof(int)*m_nTableLen);
		for(int i=0;i<m_nTableLen;i++)
		{//new buffer for every dimension
			pNew->aContextArray[i]=new int[m_nTableLen];
			memset(pNew->aContextArray[i],0,sizeof(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(nPrevSymbol,m_pSymbolTable,m_nTableLen);
	if(nPrevSymbol>256&&nPrevIndex==-1)//Not find, just for 'nx' and other uncommon POS
		nPrevIndex=BinarySearch(nPrevSymbol-nPrevSymbol%256,m_pSymbolTable,m_nTableLen);
	
	nCurIndex=BinarySearch(nCurSymbol,m_pSymbolTable,m_nTableLen);
	if(nCurSymbol>256&&nCurIndex==-1)//Not find, just for 'nx' and other uncommon POS
		nCurIndex=BinarySearch(nCurSymbol-nCurSymbol%256,m_pSymbolTable,m_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(sFileShow,sFilename);
	strcat(sFileShow,".shw");
	if((fp1=fopen(sFileShow,"wb"))==NULL)
	{
		return false;
	}

    fwrite(&m_nTableLen,sizeof(m_nTableLen),1,fp);//write the table length
    fwrite(m_pSymbolTable,sizeof(int),m_nTableLen,fp);//write the symbol table

    fprintf(fp1,"Table Len=%d\nSymbol:\n",m_nTableLen);
    for(i=0;i<m_nTableLen;i++)
		 fprintf(fp1,"%d ",m_pSymbolTable[i]);
	fprintf(fp1,"\n");
	
	pCur=m_pContext;
	while(pCur!=NULL)
	{
		fwrite(&pCur->nKey,sizeof(int),1,fp);
		fwrite(&pCur->nTotalFreq,sizeof(int),1,fp);
		fprintf(fp1,"nKey=%d,Total frequency=%d:\n",pCur->nKey,pCur->nTotalFreq);

		fwrite(pCur->aTagFreq,sizeof(int),m_nTableLen,fp);//the every POS frequency
        for(i=0;i<m_nTableLen;i++)
		{
			fwrite(pCur->aContextArray[i],sizeof(int),m_nTableLen,fp);
			fprintf(fp1,"No.%2d=%3d: ",i,m_pSymbolTable[i]);
            for(int j=0;j<m_nTableLen;j++)
				fprintf(fp1,"%5d ",pCur->aContextArray[i][j]);
            fprintf(fp1,"total=%d:\n",pCur->aTagFreq[i]);
		}
		pCur=pCur->next;
	}
	fclose(fp);
	fclose(fp1);
	return true;
}
bool CContextStat::Load(char *sFilename)
{
	FILE *fp;
	if((fp=fopen(sFilename,"rb"))==NULL)
	{
		return false;
	}
	PMYCONTEXT pCur=m_pContext,pTemp,pPre=NULL;
	while(pCur!=NULL)
	{//delete the context array
		pTemp=pCur->next;
		for(int i=0;i<m_nTableLen;i++)
		   delete [] pCur->aContextArray[i];
		delete [] pCur->aContextArray;
		delete [] pCur->aTagFreq;
		delete pCur;
		pCur=pTemp;
	}

	fread(&m_nTableLen,sizeof(m_nTableLen),1,fp);//write the table length
	if(m_pSymbolTable!=NULL)
		delete [] m_pSymbolTable;
	m_pSymbolTable=new int[m_nTableLen];//new buffer for symbol
	fread(m_pSymbolTable,sizeof(int),m_nTableLen,fp);//write the symbol table
    //free exists items
    while(!feof(fp))
	{//Read the context 
		pCur=new MYCONTEXT;
		pCur->next=NULL;
		if(fread(&pCur->nKey,sizeof(int),1,fp)<1)//Read error
		{
			delete pCur;
			break;
		}
        fread(&pCur->nTotalFreq,sizeof(int),1,fp);
		pCur->aTagFreq=new int [m_nTableLen];
		fread(pCur->aTagFreq,sizeof(int),m_nTableLen,fp);//the every POS frequency
		
		pCur->aContextArray=new int *[m_nTableLen];
        for(int i=0;i<m_nTableLen;i++)
		{
		    pCur->aContextArray[i]=new int[m_nTableLen];
			fread(pCur->aContextArray[i],sizeof(int),m_nTableLen,fp);
		}
		if(pPre==NULL)
			m_pContext=pCur;
		else
			pPre->next=pCur;
		pPre=pCur;
	}
	fclose(fp);
	return true;
}
double CContextStat::GetContextPossibility(int nKey, int nPrev, int nCur)
{
	PMYCONTEXT pCur;
	int nCurIndex=BinarySearch(nCur,m_pSymbolTable,m_nTableLen);
	int nPrevIndex=BinarySearch(nPrev,m_pSymbolTable,m_nTableLen);
	if(!GetItem(nKey,&pCur)||nCurIndex==-1||nPrevIndex==-1||pCur->aTagFreq[nPrevIndex]==0||pCur->aContextArray[nPrevIndex][nCurIndex]==0)
		return 0.000001;//return a lower value, not 0 to prevent data sparse
	int nPrevCurConFreq=pCur->aContextArray[nPrevIndex][nCurIndex];
	int nPrevFreq=pCur->aTagFreq[nPrevIndex];
	return 0.9*(double)nPrevCurConFreq/(double)nPrevFreq+0.1*(double)nPrevFreq/(double)pCur->nTotalFreq;
	//0.9 and 0.1 is a value based experience
}

int CContextStat::GetFrequency(int nKey, int nSymbol)
{//Get the frequency which nSymbol appears
	PMYCONTEXT pFound;
	int nIndex,nFrequency=0;
	if(!GetItem(nKey,&pFound))//Not found such a item
		return 0;
	nIndex=BinarySearch(nSymbol,m_pSymbolTable,m_nTableLen);
    if(nIndex==-1)//error finding the symbol
		return 0;
	nFrequency=pFound->aTagFreq[nIndex];//Add the frequency
	return nFrequency;
}

bool CContextStat::GetItem(int nKey,PMYCONTEXT *pItemRet)
{//Get the item according the nKey
	PMYCONTEXT pCur=m_pContext,pPrev=NULL;
	if(nKey==0)
	{
		*pItemRet=m_pContext;
		return true;
	}
	while(pCur!=NULL&&pCur->nKey<nKey)
	{//delete the context array
		pPrev=pCur;
		pCur=pCur->next;
	}
    if(pCur!=NULL&&pCur->nKey==nKey)
	{//find it and return the current item
		*pItemRet=pCur;
		return true;
	}
	*pItemRet=pPrev;
	return false;
}

bool CContextStat::SetTableLen(int nTableLen)
{
	m_nTableLen=nTableLen;//Set the table len
	m_pSymbolTable=new int[nTableLen];//new buffer for symbol
	m_pContext=0;//init with empty
	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区免费看| 欧美日韩中字一区| 九九**精品视频免费播放| 亚洲成人一区在线| 五月天视频一区| 婷婷久久综合九色国产成人| 亚洲va欧美va国产va天堂影院| 亚洲妇熟xx妇色黄| 日韩精品视频网| 久久精品国产色蜜蜜麻豆| 韩日精品视频一区| 国产成人免费网站| av高清不卡在线| 欧美日韩视频一区二区| 欧美不卡123| 国产精品久久99| 午夜精品久久久久久不卡8050| 日日欢夜夜爽一区| 国产精品正在播放| av在线不卡网| 欧美日韩精品一区二区三区四区 | 成人欧美一区二区三区| 亚洲欧美在线另类| 日韩在线卡一卡二| 国产一区二区三区美女| 色偷偷成人一区二区三区91| 欧美性猛交xxxx黑人交| 久久亚洲综合色| 亚洲综合色在线| 国产一区二区三区免费播放| 色嗨嗨av一区二区三区| 日韩视频国产视频| 亚洲特级片在线| 麻豆91免费看| 色爱区综合激月婷婷| 欧美成人一区二区三区| 国产福利91精品一区| 成人一级视频在线观看| 欧美妇女性影城| 欧美激情一区二区三区| 日韩中文欧美在线| 91免费看`日韩一区二区| 欧美一区二区精品在线| 国产精品成人免费在线| 国产真实乱偷精品视频免| 91精品办公室少妇高潮对白| 精品国产麻豆免费人成网站| 性做久久久久久| av在线播放成人| 久久久久国产精品麻豆ai换脸 | 精品视频123区在线观看| 国产欧美日韩中文久久| 日韩av中文字幕一区二区| 国产成人小视频| 日韩精品综合一本久道在线视频| 亚洲欧美日韩一区二区三区在线观看 | 成人免费毛片高清视频| 欧美一区二区三区公司| 亚洲一区二区三区四区在线免费观看| 韩国毛片一区二区三区| 日韩欧美在线123| 日韩成人dvd| 欧美体内she精高潮| 亚洲黄色录像片| 色综合天天天天做夜夜夜夜做| www欧美成人18+| 精品亚洲国产成人av制服丝袜 | 国产天堂亚洲国产碰碰| 免费观看在线色综合| 欧美日韩免费电影| 亚洲最大成人综合| 欧美性极品少妇| 天堂成人免费av电影一区| 欧美日韩高清在线| 午夜久久久影院| 欧美一级片在线| 另类小说欧美激情| 精品久久久久99| 国产毛片精品一区| 中文字幕av一区二区三区免费看| 国产成人在线网站| 中文字幕欧美日韩一区| 不卡av在线网| 亚洲最色的网站| 欧美一级高清片在线观看| 裸体歌舞表演一区二区| 欧美成人bangbros| 国产sm精品调教视频网站| 国产精品乱码久久久久久| 色综合婷婷久久| 污片在线观看一区二区| 久久夜色精品国产噜噜av| av在线播放一区二区三区| 亚洲一区欧美一区| 日韩免费观看2025年上映的电影| 黄一区二区三区| 最新国产成人在线观看| 欧美酷刑日本凌虐凌虐| 久久精品国产999大香线蕉| 久久嫩草精品久久久精品一| eeuss鲁片一区二区三区在线看| 亚洲激情网站免费观看| 在线成人av网站| 国产成人福利片| 亚洲最大成人综合| 精品1区2区在线观看| 99麻豆久久久国产精品免费优播| 亚洲综合男人的天堂| 精品福利二区三区| 色噜噜久久综合| 久久99精品视频| 亚洲一区二区三区国产| 国产三级精品三级在线专区| 欧美日韩成人在线一区| 成人午夜激情在线| 日本免费新一区视频| 亚洲人成精品久久久久久| 欧美成人精品1314www| 色视频一区二区| 国产伦精品一区二区三区免费迷 | 国产精品三级av| 欧美日韩大陆在线| 95精品视频在线| 激情综合网av| 亚洲h在线观看| 综合网在线视频| 久久久影视传媒| 91麻豆精品国产91久久久久久 | 日本欧美在线看| 一区二区三区**美女毛片| 欧美国产精品一区| 日韩免费看的电影| 6080亚洲精品一区二区| 色综合天天性综合| 成人福利在线看| 国产福利一区二区| 激情伊人五月天久久综合| 日韩中文字幕91| 日韩精品一二三四| 亚洲国产wwwccc36天堂| 亚洲午夜一二三区视频| 国产精品久久久久久久久果冻传媒 | 国产成人免费网站| 国产精品一区二区久久精品爱涩| 日韩综合在线视频| 日韩不卡一二三区| 亚洲成人tv网| 天堂蜜桃一区二区三区| 五月综合激情网| 视频一区二区三区在线| 日韩精品亚洲一区| 奇米一区二区三区av| 日韩成人一区二区三区在线观看| 亚洲国产成人tv| 天堂成人免费av电影一区| 热久久久久久久| 老司机精品视频在线| 激情综合五月婷婷| 国产成+人+日韩+欧美+亚洲| 国产成人免费在线观看| 99精品国产99久久久久久白柏| 成人毛片在线观看| 91视频在线看| 欧美性做爰猛烈叫床潮| 欧美精品一二三| 日韩精品一区二区三区视频| 久久久久久亚洲综合| 国产欧美精品一区| 亚洲男人的天堂在线aⅴ视频| 一区二区三区影院| 麻豆精品视频在线观看免费| 国产成都精品91一区二区三| 91毛片在线观看| 91精品国产手机| 欧美激情在线一区二区三区| 亚洲欧美国产77777| 日韩高清中文字幕一区| 黄色日韩网站视频| 色综合天天性综合| 91精品国产色综合久久ai换脸 | 国产福利一区二区三区视频在线 | 久久精品999| 99久久久久久| 日韩视频永久免费| 中文字幕综合网| 日本不卡一二三区黄网| 国产99久久久国产精品潘金网站| 色综合久久88色综合天天免费| 欧美日韩国产美女| 国产精品久久久久永久免费观看 | 成人丝袜高跟foot| 欧美午夜影院一区| 国产日本欧洲亚洲| 亚洲国产人成综合网站| 国产一区中文字幕| 欧美少妇性性性| 国产精品久久久久aaaa樱花| 美女一区二区在线观看| 一本色道久久综合亚洲91| 日韩精品一区二区三区在线|