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

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

?? contextstat.cpp

?? 良好的代碼實現
?? CPP
字號:
//////////////////////////////////////////////////////////////////////
//ICTCLAS簡介:計算所漢語詞法分析系統ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),
//             功能有:中文分詞;詞性標注;未登錄詞識別。
//             分詞正確率高達97.58%(973專家評測結果),
//             未登錄詞識別召回率均高于90%,其中中國人名的識別召回率接近98%;
//             處理速度為31.5Kbytes/s。
//著作權:  Copyright?2002-2005中科院計算所 職務著作權人:張華平 劉群
//遵循協議:自然語言處理開放資源許可證1.0
//Email: zhanghp@software.ict.ac.cn
//Homepage:www.nlp.org.cn;mtgroup.ict.ac.cn
/****************************************************************************
 *
 * 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&&m_pContext)
	{
		*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;
}


void CContextStat::ReleaseContextStat()
{
	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++)
		{
			if(pCur->aContextArray[i]!=NULL)
			{
				delete [] pCur->aContextArray[i];
				pCur->aContextArray[i]=NULL;
			}
		}
		if(pCur->aContextArray!=NULL)
		{
			delete [] pCur->aContextArray;
			pCur->aContextArray=NULL;
		}
		if(pCur->aTagFreq!=NULL)
		{
			delete [] pCur->aTagFreq;
			pCur->aTagFreq=NULL;
		}
		delete pCur;
		pCur=pTemp;
	}
	m_pContext=NULL;

	if(m_pSymbolTable!=NULL)
	{
		delete [] m_pSymbolTable;
		m_pSymbolTable=NULL;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区二区免费| 国产精品国产a| 国产精品电影一区二区三区| 亚洲国产另类av| 成人久久18免费网站麻豆 | 国产精品素人一区二区| 一区二区三区精品在线| 国产精品一区二区三区乱码| 欧美性xxxxx极品少妇| 国产欧美一区二区三区鸳鸯浴 | 黄页视频在线91| 欧美丝袜第三区| 1024成人网色www| 国产盗摄女厕一区二区三区| 欧美一级理论片| 亚洲电影一区二区| 91国产免费观看| 国产精品美女久久久久aⅴ国产馆| 乱一区二区av| 日韩午夜在线观看视频| 亚洲h精品动漫在线观看| 91免费视频网址| 亚洲图片另类小说| 大美女一区二区三区| 久久午夜色播影院免费高清| 日本免费在线视频不卡一不卡二| 在线观看日韩高清av| 亚洲欧美福利一区二区| 91小视频免费观看| 亚洲特黄一级片| 99re热视频精品| 亚洲精品国产无天堂网2021 | 国产精品婷婷午夜在线观看| 国产一区二区网址| 欧美精品一区二区三区在线播放| 秋霞午夜av一区二区三区| 91精品欧美久久久久久动漫| 天天做天天摸天天爽国产一区 | 亚洲精品在线免费播放| 青青草91视频| 精品国产在天天线2019| 国模冰冰炮一区二区| 国产欧美精品一区二区色综合 | 精品在线视频一区| 欧美v国产在线一区二区三区| 久久狠狠亚洲综合| 国产网站一区二区| 不卡的看片网站| 一区二区久久久久| 欧美一区二区三区视频在线观看| 另类调教123区| 国产亚洲综合在线| 91在线观看视频| 五月婷婷激情综合| 欧美成人精品3d动漫h| 国产成人精品影院| 亚洲女同一区二区| 欧美一区二区私人影院日本| 国产综合色在线视频区| 国产精品青草综合久久久久99| 97se亚洲国产综合自在线不卡| 亚洲国产一区二区a毛片| 精品欧美一区二区久久| 波多野结衣在线一区| 亚洲午夜精品久久久久久久久| 欧美一级高清片| 99在线精品一区二区三区| 亚洲国产欧美在线人成| 久久综合狠狠综合| 在线中文字幕不卡| 狠狠狠色丁香婷婷综合激情| 亚洲精品自拍动漫在线| 欧美一区二区三区播放老司机| 国产成人午夜精品5599| 亚洲午夜av在线| 国产婷婷一区二区| 91麻豆精品久久久久蜜臀| 成人免费福利片| 青草av.久久免费一区| 亚洲乱码中文字幕综合| 久久久久久亚洲综合| 欧美日韩高清在线播放| jizz一区二区| 国内精品免费**视频| 亚洲一区二区三区中文字幕 | 欧美精品久久久久久久久老牛影院| 国产精品91一区二区| 亚洲成av人影院| 一色桃子久久精品亚洲| 日韩精品一区二区三区在线| 91精品福利视频| 成人一道本在线| 国内外成人在线视频| 婷婷六月综合亚洲| 亚洲一区二区视频| 久草精品在线观看| 亚洲国产wwwccc36天堂| 亚洲三级在线免费观看| 欧美激情一区二区三区| 欧美成人精品二区三区99精品| 欧美午夜精品一区| 91免费精品国自产拍在线不卡| 国产传媒欧美日韩成人| 精品一区二区久久久| 日本成人在线一区| 视频一区视频二区中文字幕| 一区二区在线观看视频在线观看| 日本一二三不卡| 国产精品视频看| 国产精品美女久久久久久久网站| 久久久久一区二区三区四区| 亚洲精品一区二区三区四区高清 | 午夜在线电影亚洲一区| 一区二区三区高清| 欧美国产日韩在线观看| 国产日韩欧美激情| 国产亚洲福利社区一区| 久久亚洲二区三区| 久久嫩草精品久久久精品一| 精品成a人在线观看| 久久这里都是精品| 国产女人aaa级久久久级| 久久久久久电影| 国产精品欧美一区喷水| 一区免费观看视频| 亚洲精品菠萝久久久久久久| 亚洲三级电影全部在线观看高清| 亚洲日本一区二区| 亚洲午夜免费电影| 免费成人av在线播放| 激情综合一区二区三区| 国产精品一区三区| av一区二区三区四区| 91免费国产在线| 欧美精品在线一区二区| 欧美大胆人体bbbb| 亚洲国产精品黑人久久久| 中文字幕一区二区三区精华液| 亚洲伦理在线精品| 免费成人你懂的| 成人永久aaa| 欧美视频中文字幕| 日韩欧美国产电影| 国产精品乱子久久久久| 夜夜嗨av一区二区三区| 日本麻豆一区二区三区视频| 国产精品2024| 久久看人人爽人人| 亚洲三级电影全部在线观看高清| 五月天亚洲婷婷| 粉嫩在线一区二区三区视频| 日本精品免费观看高清观看| 欧美一级日韩一级| 国产精品传媒入口麻豆| 日本女人一区二区三区| 成人黄色电影在线| 欧美一区二区三区四区高清| 国产精品区一区二区三区| 三级影片在线观看欧美日韩一区二区| 久99久精品视频免费观看| 91蜜桃视频在线| 亚洲精品一区二区三区在线观看 | 久久久国际精品| 亚洲与欧洲av电影| 高清不卡一区二区| 欧美日本国产视频| 中文字幕一区二区三区av| 美脚の诱脚舐め脚责91| 色综合一个色综合| 久久久亚洲欧洲日产国码αv| 亚洲一区二区三区视频在线播放| 国产一区二区在线视频| 欧美日韩国产一二三| 国产精品成人免费| 国产综合成人久久大片91| 欧美日韩高清一区二区三区| 中文字幕一区二区日韩精品绯色| 久久成人免费网| 3d动漫精品啪啪一区二区竹菊| 亚洲欧洲一区二区三区| 激情小说亚洲一区| 欧美日韩成人综合| 亚洲欧洲综合另类| 成人久久视频在线观看| 久久久久久麻豆| 麻豆91精品视频| 日韩一区二区三区免费看| 亚洲国产三级在线| 在线视频一区二区免费| 中文字幕一区二区不卡| 丁香亚洲综合激情啪啪综合| 精品久久99ma| 蜜桃精品视频在线| 日韩欧美一区在线| 美女视频一区二区三区| 91精品国产欧美一区二区18| 午夜视频一区二区三区| 欧美三电影在线| 午夜视频久久久久久| 制服丝袜日韩国产|