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

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

?? segtofile(sen).c

?? 為自然語言處理領域的中文分詞程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
double GetElementValue(pDynamicArray p,int nRow, int nCol,PARRAY_CHAIN pStart,PARRAY_CHAIN *pRet)
{
   PARRAY_CHAIN pCur=pStart; 
   
   if(pStart==0)
	    pCur=p->m_pHead; 
   if(pRet!=0)
	   *pRet=NULL; 
   if(nRow>(int)p->m_nRow||nCol>(int)p->m_nCol) 
	   return INFINITE_VALUE;
   /*如果是動態數組行的頭,則指向下一個行*/
  if(p->m_bRowFirst)
   { 
	   while(pCur!=NULL&&(nRow!=-1&&(int)pCur->row<nRow||(nCol!=-1&&(int)pCur->row==nRow&&(int)pCur->col<nCol))) 
	   {
		   if(pRet!=0)
			   *pRet=pCur;
		   pCur=pCur->next;
	   }
   }
   /*如果是動態數組列的頭,則指向下一個列*/
   else
   { 
	   while(pCur!=NULL&&(nCol!=-1&&(int)pCur->col<nCol||((int)pCur->col==nCol&&nRow!=-1&&(int)pCur->row<nRow))) 
	   {
		   if(pRet!=0)
			   *pRet=pCur;
		   pCur=pCur->next;
	   }
   }
   if(pCur!=NULL&&((int)pCur->row==nRow||nRow==-1)&&((int)pCur->col==nCol||nCol==-1)) 
   { 
	   if(pRet!=0)
		   *pRet=pCur;
	   return pCur->value; 
   }
	return INFINITE_VALUE; 
}

/**************************************************************************************
  28.從動態數組中相應的行列查找其元素的值,沒有的行列加入,并把詞也加入動態數組
***************************************************************************************/
int SetElement(pDynamicArray p,unsigned int nRow, unsigned int nCol, double fValue,int nPOS,char *sWord)
{
   PARRAY_CHAIN pCur=p->m_pHead;
   PARRAY_CHAIN pAdd ,pPre=NULL; 
   /*得到行列*/
   if(nRow>p->m_nRow) 
	   p->m_nRow=nRow;
   if(nCol>p->m_nCol) 
	   p->m_nCol=nCol;
   /*從行或列的頭遍歷行列*/
   if(p->m_bRowFirst)
   { 
	   while(pCur!=NULL&&(pCur->row<nRow||(pCur->row==nRow&&pCur->col<nCol)))
	   { 
		   pPre=pCur;
		   pCur=pCur->next; 
	   }
   }
   else
   { 
	   while(pCur!=NULL&&(pCur->col<nCol||(pCur->col==nCol&&pCur->row<nRow)))
	   { 
		   pPre=pCur;
		   pCur=pCur->next; 
	   }
   }
   /*指定的行列位置找到元素值*/
   if(pCur!=NULL&&pCur->row==nRow&&pCur->col==nCol)
   { 
	   pCur->value=fValue; 
	   pCur->nPOS=nPOS; 
   }
   /*沒有此行列則加入行列*/
   else
   { 
       pAdd=(PARRAY_CHAIN)malloc(sizeof(ARRAY_CHAIN)); 
	   pAdd->col=nCol; 
	   pAdd->row=nRow; 
	   pAdd->value=fValue; 
	   pAdd->nPOS=nPOS; 
        /*sWord存在,直接加入*/
	   if(sWord)
	   { 
		   pAdd->nWordLen=strlen(sWord); 
		   pAdd->sWord=(char *)malloc((pAdd->nWordLen+1)*sizeof(char)); 
		   strcpy(pAdd->sWord,sWord); 
	   }
	    /*sWord不存在,則詞為空*/
	   else
	   { 
		   pAdd->nWordLen=0; 
		   pAdd->sWord=NULL; 
	   }
	   pAdd->next=pCur;
	   if(pPre==NULL) 
		   p->m_pHead=pAdd;
	   else 
		   pPre->next=pAdd;
	   pAdd=NULL;
   }
   return 0;
}

/**************************************************************************************
  29.釋放動態數組的指針,包括多個sWord指針及動態數組的頭指針
***************************************************************************************/
void SetEmpty(pDynamicArray p)
{
  PARRAY_CHAIN pTemp ,pCur=p->m_pHead; 
   while(pCur!=NULL)
   { 
	   pTemp=pCur->next;
       if(pCur->sWord)
	   {
			free(pCur->sWord); 
			pCur->sWord=NULL;
	   }
	   free(pCur);  
	   pCur=pTemp; 
   }
   pTemp=NULL;
   p->m_pHead=NULL;
   p->m_nCol=0; 
   p->m_nRow=0;
}

/**************************************************************************************
  30. 得到行列中動態數組的元素,由RetWord返回詞,由pRetPOS返回位置
***************************************************************************************/
int GetElement(pDynamicArray p,int nRow, int nCol, double *pRetValue, int *pRetPOS,char *sRetWord)
{
    PARRAY_CHAIN pCur=p->m_pHead; 
	*pRetValue=INFINITE_VALUE;
	*pRetPOS=0;
	  if(nRow>(int)p->m_nRow||nCol>(int)p->m_nCol) 
	   return FALSE;

   if(p->m_bRowFirst)
   { 
	   while(pCur!=NULL&&(nRow!=-1&&(int)pCur->row<nRow||(nCol!=-1&&(int)pCur->row==nRow&&(int)pCur->col<nCol)))
	   { 
		   pCur=pCur->next;
	   }
   }
   else
   { 
	   while(pCur!=NULL&&(nCol!=-1&&(int)pCur->col<nCol||((int)pCur->col==nCol&&nRow!=-1&&(int)pCur->row<nRow)))
	   { 
		   pCur=pCur->next;
	   }
   }
   if(pCur!=NULL&&((int)pCur->row==nRow||nRow==-1)&&((int)pCur->col==nCol||nCol==-1))
   { 
		*pRetValue=pCur->value; 
		if(pRetPOS)
			*pRetPOS=pCur->nPOS; 
	    if(sRetWord)
		{
		   strcpy(sRetWord,pCur->sWord); 
		}
   }
	return TRUE;
}

/**************************************************************************************
  31. 得到動態數組的頭指針
***************************************************************************************/
PARRAY_CHAIN GetHead(pDynamicArray p)
{
	return p->m_pHead;
}

/**************************************************************************************
  32. 得到動態數組的節點個數
***************************************************************************************/
unsigned int GetTail(pDynamicArray p,PARRAY_CHAIN *pTailRet)
{
	PARRAY_CHAIN pPrev=NULL;
    PARRAY_CHAIN pCur=p->m_pHead; 
	unsigned int nCount=0;
	while(pCur!=NULL)
	{ 
		nCount+=1;
		pPrev=pCur;
		pCur=pCur->next;
	}
	*pTailRet=pPrev; 
	return nCount;
} 

/**************************************************************************************
  33. 得到動態數組的行指針
***************************************************************************************/
int SetRowFirst(pDynamicArray p,int RowFirst)
{	
	p->m_bRowFirst=RowFirst;
	return TRUE;
}

/**************************************************************************************
  34. 釋放動態數組的指針
***************************************************************************************/
void UDynamicArray(pDynamicArray p)
{
   PARRAY_CHAIN pTemp ,pCur=p->m_pHead;
   while(pCur!=NULL)
   { 
	   pTemp=pCur->next;
       if(pCur->sWord)
	   {
			free(pCur->sWord); 
			pCur->sWord=NULL;
	   }
	   free(pCur);  
	   pCur=pTemp; 
   }
   free(pTemp);
   pTemp=NULL;   
   p->m_pHead=NULL;
}

/**************************************************************************************
  35. 初始化動態數組的頭指針為NULL,行列均為0,賦值給第一個行指針
***************************************************************************************/
void IDynamicArray(pDynamicArray p,int bRowFirst)
{
	p->m_pHead=NULL;  
    p->m_nRow=0; 
    p->m_nCol=0; 
    p->m_bRowFirst=bRowFirst; 
}

/**************************************************************************************
  36. 釋放隊列的各個節點指針,頭指針和p->m_pLastAccess指針
***************************************************************************************/
void UQueue(pQueue p)
{
   PQUEUE_ELEMENT pTemp,pCur=p->m_pHead;
   while(pCur!=NULL)
   {
	   pTemp=pCur->next;
	   free(pCur);
	   pCur=pTemp;
   }
   pTemp=NULL;
   free(p->m_pHead);
   p->m_pHead=NULL;
   free(p->m_pLastAccess);
   p->m_pLastAccess=NULL;
}

/**************************************************************************************
  37. 初始化隊列的各個節點指針,頭指針和p->m_pLastAccess指針
***************************************************************************************/
int Push(pQueue p,unsigned int nValue,unsigned int nIndex, double eWeight)
{
   PQUEUE_ELEMENT pAdd,pCur=p->m_pHead;
   PQUEUE_ELEMENT pPre=NULL;
   while(pCur!=NULL&&pCur->eWeight<eWeight)
   {
	   pPre=pCur;
	   pCur=pCur->next;
   }
   pAdd=(PQUEUE_ELEMENT)malloc(sizeof(QUEUE_ELEMENT));
   pAdd->nParent=nValue;
   pAdd->nIndex=nIndex;
   pAdd->eWeight=eWeight;
   pAdd->next=pCur;
   if(pPre==0)
	   p->m_pHead=pAdd;
   else
	   pPre->next=pAdd;
   pAdd=NULL;
   return 1;
}

/**************************************************************************************
  38. 將Queue中內容讀出
***************************************************************************************/
int Pop(pQueue p,unsigned int *npValue,unsigned int *npIndex,double *epWeight, int  bModify,int  bFirstGet)
{
	PQUEUE_ELEMENT pTemp;
	/*如果修改,頭指針指向臨時指針*/
	if(bModify)
		pTemp=p->m_pHead;
    /*如果不修改,頭指針指向最后訪問指針*/
	else
	{
	  if(bFirstGet)
		   p->m_pLastAccess=p->m_pHead;
	  pTemp=p->m_pLastAccess;
	}
	if(pTemp==NULL)
		return -1;
	/*Parent賦值pValue*/
    if(npValue!=0)
	    *npValue=pTemp->nParent;
	/*Index付給nIndex*/
    if(npIndex!=0)
	    *npIndex=pTemp->nIndex;
	/*Weight付給pWeight*/
    if(epWeight!=0)
		*epWeight=pTemp->eWeight;
        if(bModify)
	{
	   p->m_pHead=pTemp->next;
	}
	else
	{
       p->m_pLastAccess=pTemp->next;
    }
    return 1;
}

/**************************************************************************************
  39. 將Queue的指針為NULL
***************************************************************************************/
int IsEmpty(pQueue p,int bBrowsed)
{
	if(bBrowsed==TRUE)
		return (p->m_pLastAccess==NULL);
   return (p->m_pHead==NULL);
}


/**************************************************************************************
  39. Queue為單節點
***************************************************************************************/
int IsSingle(pQueue p)
{
   return (p->m_pHead!=NULL&&p->m_pHead->next==NULL);
}

/**************************************************************************************
  40. 初始化Queue的指針為NULL
***************************************************************************************/
void IQueue(pQueue p)
{	
	p->m_pHead=NULL; 
	p->m_pLastAccess=NULL; 
}

/**************************************************************************************
  41. 釋放Queue的指針為NULL
***************************************************************************************/
void USpan(pSpan p)
{	
	free(p->m_context);
	p->m_context=NULL;	
}

/**************************************************************************************
  42. 得到最佳前驅權重和頻率
***************************************************************************************/
int Disamb(pSpan p)
{
	int i,j,k,nMinCandidate;
	double dMinFee=0,dTmp;
	for(i=1;i<p->m_nCurLength;i++) 
	{
		for(j=0;p->m_nTags[i][j]>=0;j++) 
		{
			nMinCandidate=MAX_POS_PER_WORD+1;
			for(k=0;p->m_nTags[i-1][k]>=0;k++)
			{
				dTmp=-log(GetContextPossibility(p->m_context,0,p->m_nTags[i-1][k],p->m_nTags[i][j]));
				dTmp+=p->m_dFrequency[i-1][k]; 
				if(nMinCandidate>10||dTmp<dMinFee) 
				{
					nMinCandidate=k;
					dMinFee=dTmp;
				}
			}
			p->m_nBestPrev[i][j]=nMinCandidate; 
			p->m_dFrequency[i][j]=p->m_dFrequency[i][j]+dMinFee;
		}
	}	
	return TRUE;
}

/**************************************************************************************
  43. 詞性標注初始化
***************************************************************************************/
int Reset(pSpan p,int bContinue)
{
	if(!bContinue)
	{ 
		if(p->m_tagType!=TT_NORMAL) 
		      p->m_nTags[0][0]=100; 
		else
		      p->m_nTags[0][0]=0; 
		p->m_nUnknownIndex=0;
		p->m_dFrequency[0][0]=0;
		p->m_nStartPos=0;
	}
	else
	{
		p->m_nTags[0][0]=p->m_nTags[p->m_nCurLength-1][0]; 
		p->m_dFrequency[0][0]=p->m_dFrequency[p->m_nCurLength-1][0];
	}
    p->m_nTags[0][1]=-1; 
	p->m_nCurLength=1;
	p->m_nWordPosition[1]=p->m_nStartPos;	
	p->m_sWords[0][0]=0;
	return TRUE;
}

/**************************************************************************************
  44. 文件的內容load到詞性標注的結構中
***************************************************************************************/
int LoadContext(pSpan p,char *sFilename)
{
	return LoadContextState(p->m_context,sFilename);
}

/**************************************************************************************
  45. 詞性標注最好位置  m_nBestTag[詞數] 每個句詞的最好標注數組
	 m_sWords[詞數][詞長] 每個句中的詞內容,m_nTags[詞數][每詞的位置]元素為詞標注,行是句中詞數,列是詞位置
	 m_nBestPrev[詞數][每詞的位置] 元素為最佳前驅詞,m_nCurLength 當前長度
	
***************************************************************************************/
int GetBestPOS(pSpan p)
{
	int i,j,nEnd;
    /*得到最佳前驅權重和頻率*/
	Disamb(p);

	for(i=p->m_nCurLength-1,j=0;i>0;i--)
	{
	 if(p->m_sWords[i][0])

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
67194成人在线观看| 久久综合九色综合欧美98| 久久成人av少妇免费| 中文字幕一区二区三区四区不卡| 欧美日本在线一区| 成人av在线网站| 免费观看久久久4p| 亚洲精品中文字幕乱码三区| 久久久久久97三级| 欧美高清精品3d| 91日韩精品一区| 国产乱子轮精品视频| 天堂va蜜桃一区二区三区漫画版| 国产精品欧美经典| 国产午夜精品一区二区| 日韩欧美在线综合网| 91福利视频网站| 成人免费视频app| 国内外精品视频| 麻豆成人免费电影| 天堂影院一区二区| 国产欧美日韩三级| 日韩精品一区二区在线| 日韩精品国产精品| 亚洲另类在线制服丝袜| 国产精品久久久久久久久免费相片| 欧美一区二区三区视频在线观看| 欧洲中文字幕精品| 91亚洲男人天堂| jlzzjlzz欧美大全| 不卡免费追剧大全电视剧网站| 精品无人区卡一卡二卡三乱码免费卡| 亚洲sss视频在线视频| 亚洲激情在线播放| 亚洲精品视频在线观看网站| 亚洲日韩欧美一区二区在线| 亚洲国产乱码最新视频 | 日韩成人伦理电影在线观看| 亚洲精品国产成人久久av盗摄| 国产精品国产自产拍高清av王其| 国产日韩欧美激情| 中文字幕va一区二区三区| 欧美巨大另类极品videosbest| 99在线热播精品免费| www.色综合.com| 91丝袜美腿高跟国产极品老师 | 日韩av午夜在线观看| 舔着乳尖日韩一区| 日韩精品一二三| 免费不卡在线视频| 韩国av一区二区| 国产99久久久国产精品潘金网站| 成人永久aaa| 色综合天天综合| 欧美日韩精品一区二区天天拍小说| 欧美色网站导航| 日韩欧美一二三四区| 精品国产网站在线观看| 久久精品一区二区三区av| 久久精品欧美日韩| 亚洲私人黄色宅男| 午夜亚洲国产au精品一区二区| 日本视频在线一区| 国产一区二区精品久久99| 成人免费电影视频| 在线视频中文字幕一区二区| 777精品伊人久久久久大香线蕉| 日韩亚洲欧美在线| 日本一区二区免费在线| 亚洲黄色录像片| 日本午夜一区二区| 国产成人亚洲综合a∨婷婷图片| 91在线播放网址| 日韩一区二区高清| 国产精品色眯眯| 亚洲aⅴ怡春院| 国产一区欧美一区| 日本乱码高清不卡字幕| 精品日韩欧美在线| 成人欧美一区二区三区白人| 日日夜夜精品视频天天综合网| 美女视频一区在线观看| 99国产精品一区| 日韩欧美中文一区二区| 国产精品高潮久久久久无| 日日夜夜精品视频天天综合网| 国产不卡视频一区| 欧美丰满高潮xxxx喷水动漫| 亚洲国产电影在线观看| 午夜日韩在线观看| 成人av影院在线| 日韩午夜激情电影| 一区二区三区中文字幕精品精品 | 亚洲一区二区视频| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美不卡激情三级在线观看| 中文字幕日韩一区| 韩国在线一区二区| 欧美日韩三级视频| 国产精品女同一区二区三区| 日本中文字幕一区| 欧美亚洲综合色| 国产精品伦一区| 国产一区二区女| 日韩一区二区三区四区| 亚洲精品高清在线观看| 国产精品亚洲专一区二区三区 | 成人不卡免费av| 日韩三级精品电影久久久| 亚洲一二三区在线观看| a美女胸又www黄视频久久| 精品奇米国产一区二区三区| 亚洲国产精品天堂| 91免费看视频| 国产精品天干天干在线综合| 国精产品一区一区三区mba视频 | 欧美一二三区在线| 亚洲午夜成aⅴ人片| 91丝袜美女网| 中文字幕亚洲视频| 成人综合日日夜夜| 国产喂奶挤奶一区二区三区| 黑人精品欧美一区二区蜜桃| 日韩一级视频免费观看在线| 天堂一区二区在线| 91色.com| 91福利小视频| 国产成人av福利| 精品国产伦一区二区三区观看体验| 一级做a爱片久久| 色婷婷综合激情| 欧美激情一区二区三区蜜桃视频| 国产伦理精品不卡| 国产亚洲一区二区在线观看| 国产在线视频精品一区| 欧美xxxx老人做受| 国内外成人在线视频| 久久久久久久久久久久久女国产乱| 国内精品久久久久影院一蜜桃| 日韩手机在线导航| 久久国产精品99久久人人澡| 欧美一区二区精品在线| 欧美a级理论片| 亚洲激情成人在线| 欧美中文字幕一区二区三区| 亚洲综合色网站| 欧美日韩一区二区三区高清| 天天操天天干天天综合网| 91麻豆精品国产91久久久更新时间 | 成人av电影免费在线播放| 国产精品久久久久国产精品日日| 不卡的av网站| 亚洲综合丝袜美腿| 日韩欧美亚洲国产精品字幕久久久| 久久成人久久爱| 中文字幕在线一区免费| 色婷婷亚洲综合| 日本成人在线网站| 久久久影视传媒| av一二三不卡影片| 亚洲午夜精品网| 日韩欧美精品三级| 盗摄精品av一区二区三区| 亚洲欧美国产77777| 欧美日本在线播放| 激情图片小说一区| 国产精品国产三级国产aⅴ入口| 日本精品免费观看高清观看| 日本欧美加勒比视频| 久久先锋影音av| 色哟哟在线观看一区二区三区| 日韩成人一区二区三区在线观看| 26uuuu精品一区二区| 色欧美乱欧美15图片| 麻豆91在线播放免费| 中国色在线观看另类| 欧美嫩在线观看| 国产乱码一区二区三区| 亚洲午夜私人影院| 精品国产区一区| 91久久一区二区| 黄网站免费久久| 亚洲综合在线五月| ww亚洲ww在线观看国产| 欧美性生活久久| 国产成人精品一区二区三区四区 | 奇米影视在线99精品| 欧美国产欧美综合| 91精品国产色综合久久不卡电影 | 欧美麻豆精品久久久久久| 国产一区二区在线观看免费| 亚洲综合色区另类av| 久久精品人人做人人综合 | 国产精品福利电影一区二区三区四区 | 青青草国产成人99久久| 国产精品护士白丝一区av| 日韩精品一区在线观看| 欧美午夜一区二区| 99精品久久久久久| 国产自产视频一区二区三区|