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

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

?? segtofile(sen).c

?? 為自然語言處理領域的中文分詞程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
	p->m_tagType=nType;
}

/*50.地名識別*/
int PlaceRecognize(pSpan p,pDictionary dictCore,pDictionary placeDict)
{
  int nStart=1,nEnd=1,i=1,nTemp;
  double dPanelty=1.0;
  /*各最佳標注循環*/
  while(p->m_nBestTag[i]>-1)
  {
	  if(p->m_nBestTag[i]==1)
	  {
		nStart=i;
		nEnd=nStart+1;
        while(p->m_nBestTag[nEnd]==1)
		{
			if(nEnd>nStart+1)
				dPanelty+=1.0;
			nEnd++;
		}
		while(p->m_nBestTag[nEnd]==2)
			nEnd++;
		nTemp=nEnd;
		while(p->m_nBestTag[nEnd]==3)
		{
			if(nEnd>nTemp)
				dPanelty+=1.0;
			nEnd++;
		}
	  }
	  else if(p->m_nBestTag[i]==2)
	  {
		dPanelty+=1.0;
		nStart=i;
		nEnd=nStart+1;
		while(p->m_nBestTag[nEnd]==2)
			nEnd++;
		nTemp=nEnd;
		while(p->m_nBestTag[nEnd]==3)
		{
			if(nEnd>nTemp)
				dPanelty+=1.0;
			nEnd++;
		}
	  }
	  if(nEnd>nStart)
	  {
			p->m_nUnknownWords[p->m_nUnknownIndex][0]=p->m_nWordPosition[nStart];
			p->m_nUnknownWords[p->m_nUnknownIndex][1]=p->m_nWordPosition[nEnd];
			p->m_dWordsPossibility[p->m_nUnknownIndex++]=ComputePossibility(p,nStart,nEnd-nStart+1,placeDict)+log(dPanelty);
			nStart=nEnd;
	  }
	  if(i<nEnd)
		  i=nEnd;
	  else
		  i=i+1;
  }
  return TRUE;
}

/*51.位置標注,標注結構等*/
int POSTagging(pSpan p,PWORD_RESULT pWordItems,pDictionary dictCore,pDictionary dictUnknown)
{
    int i=0,j,nStartPos;
	Reset(p,FALSE);

    while(i>-1&&pWordItems[i].sWord[0]!=0)
	{
		nStartPos=i;
		i=GetFrom(p,pWordItems,nStartPos,dictCore,dictUnknown);
		GetBestPOS(p);
		switch(p->m_tagType)
		{
		case TT_NORMAL:
			j=1;
			while(p->m_nBestTag[j]!=-1&&j<p->m_nCurLength)
			{
				pWordItems[j+nStartPos-1].nHandle=p->m_nBestTag[j];

				if(pWordItems[j+nStartPos-1].dValue>0&&IsExist(dictCore,pWordItems[j+nStartPos-1].sWord,-1))
					pWordItems[j+nStartPos-1].dValue=GetFrequency(dictCore,pWordItems[j+nStartPos-1].sWord,p->m_nBestTag[j]);
				j+=1;
			}
			break;
		case TT_PERSON:
			PersonRecognize(p,dictUnknown);
			break;
		case TT_PLACE:
		case TT_TRANS_PERSON:
			PlaceRecognize(p,dictCore,dictUnknown);
			break;
		default:
			break;
		}
		Reset(p,TRUE);
	}
	return TRUE;
}

/*52.初始化標注結構*/
void ISpan(pSpan p)
{
	/*100或0*/
	if(p->m_tagType!=TT_NORMAL)
	      p->m_nTags[0][0]=100;
	else
	      p->m_nTags[0][0]=0;
	p->m_context=(pContextState)malloc(sizeof(struct ContextState));
	IContextState(p->m_context);
	p->m_nTags[0][1]=-1;
	p->m_dFrequency[0][0]=0;
	p->m_nCurLength=1;
	p->m_nUnknownIndex=0;
	p->m_nStartPos=0;
	p->m_nWordPosition[1]=0;
	p->m_sWords[0][0]=0;
	p->m_tagType=TT_NORMAL;
}


/*53.原子切分,送入句子,生成切分圖*/
int  AtomSegment(pSegGraph p,char *sSentence)
{
    unsigned int i=0,j=0;
	unsigned int 	nCurType,nNextType;
	char sChar[3];
	sChar[2]=0;
	p->m_sAtom[j][0]=0;
	p->m_nAtomLength[j]=0;
    if(strncmp(sSentence,SENTENCE_BEGIN,strlen(SENTENCE_BEGIN))==0)
	{
		strcpy(p->m_sAtom[j],SENTENCE_BEGIN);
		p->m_nAtomLength[j]=strlen(SENTENCE_BEGIN);
		p->m_nAtomPOS[j]=CT_SENTENCE_BEGIN;
		i+=p->m_nAtomLength[j];
		j+=1;
		p->m_sAtom[j][0]=0;
		p->m_nAtomLength[j]=0;
	}

	/* 連接上首尾*/
	while(i<strlen(sSentence))
	{
		if(strncmp(sSentence+i,SENTENCE_END,strlen(SENTENCE_END))==0)
		{
			strcpy(p->m_sAtom[j],SENTENCE_END);
			p->m_nAtomLength[j]=strlen(SENTENCE_END);
			p->m_nAtomPOS[j]=CT_SENTENCE_END;
			i+=p->m_nAtomLength[j];
			j+=1;
			p->m_sAtom[j][0]=0;
			p->m_nAtomLength[j]=0;
			continue;
		}
		sChar[0]=*(sSentence+i);
		sChar[1]=0;
		i+=1;
		if(sChar[0]<0)
		{
			sChar[1]=*(sSentence+i);
			i+=1;
		}
		strcat(p->m_sAtom[j],sChar);
		nCurType=charType((unsigned char *)sChar);
		if(sChar[0]=='.'&&(charType((unsigned char *)sSentence+i)==CT_NUM||(*(sSentence+i)>='0'&&*(sSentence+i)<='9')))
			nCurType=CT_NUM;
		p->m_nAtomPOS[j]=nCurType;
		if(nCurType==CT_CHINESE||nCurType==CT_INDEX||nCurType==CT_DELIMITER||nCurType==CT_OTHER)
		{
			p->m_nAtomLength[j]=strlen(p->m_sAtom[j]);
			j+=1;
			p->m_sAtom[j][0]=0;
		}
		else
		{
			nNextType=255;
			if(i<strlen(sSentence))
				nNextType=charType((unsigned char *)(sSentence+i));
			if(nNextType!=nCurType||i==strlen(sSentence))
			{
				p->m_nAtomLength[j]=strlen(p->m_sAtom[j]);
				j+=1;
				p->m_sAtom[j][0]=0;
			}
		}
	}
	p->m_nAtomCount=j;
	return TRUE;
}

/*54.產生詞節點,句子,切分圖,詞典*/
int GenerateWordNet(pSegGraph p,char *sSentence,pDictionary dictCore,int bOriginalFreq)
{
	unsigned int j,i=0;
 	char sWord[WORD_MAXLENGTH]="",sWordMatch[WORD_MAXLENGTH];
	int nHandleTemp,k,nPOS;
	int nMatchFreq[20],nMatchHandle[20],nTotalFreq,nMatchCount;
	double dValue=0;
	p->m_nAtomCount=0;
	if(p->m_segGraph){
		SetEmpty(p->m_segGraph);
	}
	AtomSegment(p,sSentence);
    for(i=0;i<p->m_nAtomCount;i++)
    {
		if(p->m_nAtomPOS[i]==CT_CHINESE)
		{
			if(!bOriginalFreq)
				SetElement(p->m_segGraph,i,i+1,log(MAX_FREQUENCE),0,0);
			else
				SetElement(p->m_segGraph,i,i+1,0,0,p->m_sAtom[i]);
		}
		else
		{
			strcpy(sWord,p->m_sAtom[i]);
			dValue=MAX_FREQUENCE;
			switch(p->m_nAtomPOS[i])
			{
			case CT_INDEX:
			case CT_NUM:
				nPOS=-27904;
				strcpy(sWord,"未##數");
				dValue=0;
				break;
			case CT_DELIMITER:
				nPOS=30464;
				break;
			case CT_LETTER:
				nPOS=-'n'*256-'x';
				dValue=0;
				strcpy(sWord,"未##串");
				break;
			case CT_SINGLE:
				if(GetCharCount("+-1234567890",p->m_sAtom[i])==(int)strlen(p->m_sAtom[i]))
				{
					nPOS=-27904;
					strcpy(sWord,"未##數");
				}
				else
				{
					nPOS=-'n'*256-'x';
					strcpy(sWord,"未##串");
				}
				dValue=0;
				break;
			default:
				nPOS=p->m_nAtomPOS[i];
				break;
			}
			if(!bOriginalFreq)
				SetElement(p->m_segGraph,i,i+1,0,nPOS,0);
			else
				SetElement(p->m_segGraph,i,i+1,dValue,nPOS,sWord);
		}
    }
	i=0;
	while(i<p->m_nAtomCount)
	{
		strcpy(sWord,p->m_sAtom[i]);
		j=i+1;
		if(strcmp(sWord,"月")==0&&strcmp(p->m_sAtom[i+1],"份")==0)
			j+=1;
		while(j<=p->m_nAtomCount&&GetMaxMatch(dictCore,sWord,sWordMatch,&nHandleTemp))
		{
			if(strcmp(sWordMatch,sWord)==0)
			{
				nTotalFreq=0;

				GetHandle(dictCore,sWord,&nMatchCount,nMatchHandle,nMatchFreq);
				for(k=0;k<nMatchCount;k++)
				{
					nTotalFreq+=nMatchFreq[k];
				}
				if(strlen(sWord)==4&&i>=1&&(IsAllNum((unsigned char *)p->m_sAtom[i-1])
					||IsAllChineseNum(p->m_sAtom[i-1]))&&(strncmp(sWord,"年",2)==0
					||strncmp(sWord,"月",2)==0))
				{
					if(CC_Find("末內中底前間初",sWord+2))
						break;
				}
				if(nMatchCount==1)
				{
					if(!bOriginalFreq)
						SetElement(p->m_segGraph,i,j,-log(nTotalFreq+1)+log(MAX_FREQUENCE),nMatchHandle[0],0);
					else
						SetElement(p->m_segGraph,i,j,nTotalFreq,nMatchHandle[0],sWord);
				}
				else
				{
					if(!bOriginalFreq)
						SetElement(p->m_segGraph,i,j,-log(nTotalFreq+1)+log(MAX_FREQUENCE),0,0);
					else
						SetElement(p->m_segGraph,i,j,nTotalFreq,0,sWord);
				}
			}
			strcat(sWord,p->m_sAtom[j++]);
		}
		i+=1;
	}
	return TRUE;
}

/*55.釋放切分圖*/
void USegGraph(pSegGraph p)
{
	free(p->m_segGraph);
	p->m_segGraph=NULL;
}

/*56.初始化切分圖*/
void ISegGraph(pSegGraph p)
{
    p->m_segGraph=(pDynamicArray)malloc(sizeof(struct DynamicArray));
	IDynamicArray(p->m_segGraph,FALSE);
	SetRowFirst(p->m_segGraph,TRUE);
}

/*57.最短路徑*/
int ShortPath(pNShortPath p)
{
	unsigned int nPreNode,i,nIndex,nCurNode;
	double eWeight;
	PARRAY_CHAIN pEdgeList;
    pEdgeList=(PARRAY_CHAIN)malloc(sizeof(ARRAY_CHAIN));
	/*節點個數循環*/
    for(nCurNode=1;nCurNode<p->m_nVertex;nCurNode++)
	{
	   pQueue queWork; 
	   queWork=(pQueue)malloc(sizeof(struct Queue));
	   IQueue(queWork);
	   /*從動態數組中相應的行列查找其元素的值*/
	   eWeight=GetElementValue(p->m_apCost,-1,nCurNode,NULL,&pEdgeList);
       while(pEdgeList!=0 && pEdgeList->col==nCurNode)
	   {
		   nPreNode=pEdgeList->row; 
		   eWeight=pEdgeList->value; 
           for(i=0;i<p->m_nValueKind;i++)
		   {
			   if(nPreNode>0) 
			   {
				   if(p->m_pWeight[nPreNode-1][i]==INFINITE_VALUE)
					   break;
				   /*初始化隊列的各個節點指針,頭指針和p->m_pLastAccess指針*/
		           Push(queWork,nPreNode,i,eWeight+p->m_pWeight[nPreNode-1][i]);
			   }
			   else
			   {
				   Push(queWork,nPreNode,i,eWeight);
				   break;
			   }
		   } 
           pEdgeList=pEdgeList->next;		   
	   } 	    
	   for(i=0;i<p->m_nValueKind;i++)
	   {
			p->m_pWeight[nCurNode-1][i]=INFINITE_VALUE;
	   } 
	   i=0;	   
       while(i<p->m_nValueKind&&Pop(queWork,&nPreNode,&nIndex,&eWeight,TRUE,TRUE)!=-1)
	   { 
		   if(p->m_pWeight[nCurNode-1][i]==INFINITE_VALUE)
			   p->m_pWeight[nCurNode-1][i]=eWeight;
		   else if(p->m_pWeight[nCurNode-1][i]<eWeight) 
		   {
			   i++; 
			   if(i==p->m_nValueKind) 
				   break;
			  p->m_pWeight[nCurNode-1][i]=eWeight;
		   }
            Push(&p->m_pParent[nCurNode-1][i],nPreNode,nIndex,0);
	   }
	}
	return 1;
}

/*58.獲取路徑*/
void GetPaths(pNShortPath p,unsigned int nNode,unsigned int nIndex,int **nResult,int bBest)
{
	
    pQueue queResult;
	int bFirstGet;
	unsigned int nCurNode,nCurIndex,nParentNode;
	unsigned int nParentIndex,nResultIndex=0;  
	queResult=(pQueue)malloc(sizeof(struct Queue));
	IQueue(queResult);	  
	if(p->m_nResultCount>=MAX_SEGMENT_NUM) 
		return ;
	nResult[p->m_nResultCount][nResultIndex]=-1; 
	Push(queResult,nNode,nIndex,0);
    nCurNode=nNode;
	nCurIndex=nIndex;  
    while(!IsEmpty(queResult,FALSE))
	{
		while(nCurNode>0) 
		{ 
			if(Pop(&p->m_pParent[nCurNode-1][nCurIndex],&nParentNode,&nParentIndex,0,FALSE,TRUE)!=-1)
			{
			   nCurNode=nParentNode;
			   nCurIndex=nParentIndex;
			}			
			if(nCurNode>0)
                Push(queResult,nCurNode,nCurIndex,0);
		}
		if(nCurNode==0)
		{  
  		   nResult[p->m_nResultCount][nResultIndex++]=nCurNode; 
		   bFirstGet=TRUE;
		   nParentNode=nCurNode;
		   while(Pop(queResult,&nCurNode,&nCurIndex,0,FALSE,bFirstGet)!=-1)
		   {
			   nResult[p->m_nResultCount][nResultIndex++]=nCurNode;
    	       bFirstGet=FALSE;
			   nParentNode=nCurNode;
		   }
		   nResult[p->m_nResultCount][nResultIndex]=-1; 
		   p->m_nResultCount+=1; 
		   if(p->m_nResultCount>=MAX_SEGMENT_NUM) 
				return ;
		   nResultIndex=0;
		   nResult[p->m_nResultCount][nResultIndex]=-1; 
		   if(bBest) 
			   return ;
		}
		Pop(queResult,&nCurNode,&nCurIndex,0,FALSE,TRUE); 
        while((IsEmpty(queResult,FALSE))==FALSE&&(IsSingle(&p->m_pParent[nCurNode-1][nCurIndex])||IsEmpty(&p->m_pParent[nCurNode-1][nCurIndex],TRUE)))
		{
	       Pop(queResult,&nCurNode,&nCurIndex,0,TRUE,TRUE); 
		   Pop(queResult,&nCurNode,&nCurIndex,0,FALSE,TRUE); 
		}
        if(IsEmpty(queResult,FALSE)==FALSE&&IsEmpty(&p->m_pParent[nCurNo

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品黄色| 午夜精品久久久久影视| 日韩一区二区免费在线观看| 91蝌蚪porny成人天涯| 国内一区二区视频| 蜜臀av性久久久久蜜臀av麻豆 | 日韩精品成人一区二区三区| 亚洲色图在线看| 国产精品色婷婷久久58| 久久亚洲精品小早川怜子| 欧美日韩国产综合一区二区三区 | 国产精品电影院| 91麻豆精品国产自产在线观看一区| 欧美在线一区二区| 日本福利一区二区| 91美女视频网站| 99国产精品久久久久久久久久 | 欧美极品另类videosde| www激情久久| 久久免费午夜影院| 欧美精品一区二区三区高清aⅴ| 欧美一区二区三级| 久久免费电影网| 久久久精品免费观看| 久久久国产一区二区三区四区小说| 精品99久久久久久| 亚洲精品一区在线观看| 日韩欧美精品在线| 国产日韩av一区| 国产精品国产精品国产专区不片 | 一区二区三区在线视频观看58 | 日韩精品一区二区三区老鸭窝| 日韩欧美123| 精品粉嫩超白一线天av| 久久亚洲一区二区三区明星换脸| 精品国产乱码久久久久久牛牛| 久久一夜天堂av一区二区三区| 日韩免费福利电影在线观看| 久久综合精品国产一区二区三区| 久久久三级国产网站| 国产视频一区二区三区在线观看| 欧美韩国日本综合| 国产福利一区二区三区| 国产精品亚洲第一| 在线视频亚洲一区| 91在线观看下载| 欧美色手机在线观看| 欧美一区二区三区在线| 久久久久久亚洲综合| 1024国产精品| 亚洲福利视频一区二区| 久久99精品国产| 99久久伊人网影院| 欧美日本不卡视频| 久久久影视传媒| 亚洲美女淫视频| 七七婷婷婷婷精品国产| 国产91清纯白嫩初高中在线观看| 99国产精品久久久久| 欧美日本韩国一区二区三区视频| 久久这里只有精品首页| 亚洲欧美日韩在线| 日韩黄色片在线观看| 极品少妇一区二区三区精品视频| 国产成人在线看| 欧美人与性动xxxx| 日本一区二区综合亚洲| 亚洲一区二区不卡免费| 日本特黄久久久高潮| 成人午夜碰碰视频| 欧美一级欧美三级在线观看 | 精品欧美一区二区在线观看| 国产农村妇女毛片精品久久麻豆| 一区二区三区欧美日| 精品影院一区二区久久久| 日本精品一区二区三区高清 | 亚洲蜜桃精久久久久久久| 久久国产麻豆精品| 91老司机福利 在线| 国产婷婷色一区二区三区| 天天亚洲美女在线视频| 丰满少妇在线播放bd日韩电影| 日韩一区二区三区免费看 | 韩国成人福利片在线播放| 欧美蜜桃一区二区三区| 中文字幕视频一区| 成人午夜激情片| 2017欧美狠狠色| 奇米色777欧美一区二区| 欧美日韩成人一区二区| 夜夜嗨av一区二区三区中文字幕| 成人avav影音| 中文字幕 久热精品 视频在线| 久久国产精品一区二区| 日韩欧美电影一二三| 日本不卡视频在线观看| 欧美在线free| 亚洲最大成人综合| 在线观看亚洲精品视频| 亚洲精品国产无天堂网2021| 91免费国产在线| 亚洲精品一二三区| 在线观看一区二区视频| 亚洲午夜精品在线| 欧美顶级少妇做爰| 蜜臀av一区二区三区| 日韩你懂的在线观看| 国产综合色精品一区二区三区| 日韩限制级电影在线观看| 男人的j进女人的j一区| 91精品国产黑色紧身裤美女| 免费精品视频在线| 精品国产精品一区二区夜夜嗨| 精品一区二区三区久久久| 久久尤物电影视频在线观看| 国产久卡久卡久卡久卡视频精品| 久久久久久亚洲综合| 成人免费观看男女羞羞视频| 中文字幕色av一区二区三区| 色偷偷一区二区三区| 亚洲午夜久久久久久久久久久| 欧美日韩一区在线观看| 秋霞国产午夜精品免费视频| 精品蜜桃在线看| 国产成人av一区二区三区在线观看| 国产精品久久久久三级| 在线观看日韩精品| 日本在线不卡视频| 欧美成人在线直播| 成人午夜电影小说| 一区二区高清在线| 日韩视频免费观看高清完整版| 精品一二线国产| 国产精品人人做人人爽人人添| 日本高清无吗v一区| 亚洲18色成人| 26uuu精品一区二区| 99精品视频一区| 亚洲高清免费在线| 久久免费电影网| 在线精品视频免费观看| 日本大胆欧美人术艺术动态 | 蜜桃视频一区二区三区在线观看| 久久综合中文字幕| 91污在线观看| 久久国产精品99久久久久久老狼| 国产精品麻豆视频| 欧美日韩一区高清| 国产精品夜夜嗨| 亚洲狠狠爱一区二区三区| 精品国产乱码久久久久久闺蜜| 91片在线免费观看| 美国欧美日韩国产在线播放| 国产精品久久久久影院色老大 | 国产清纯白嫩初高生在线观看91| 91麻豆精东视频| 久久av资源站| 亚洲精品免费在线| 久久久久九九视频| 欧美高清性hdvideosex| 97精品久久久久中文字幕 | 69p69国产精品| 风流少妇一区二区| 日本成人在线视频网站| 中文字幕一区二区三区蜜月 | 国产精品你懂的| 欧美一区二区三区人| 不卡视频一二三| 久久草av在线| 一区二区三区高清| 国产精品网站在线播放| 欧美一区二区大片| 91丨九色丨蝌蚪富婆spa| 激情成人综合网| 亚洲小少妇裸体bbw| 中文字幕av免费专区久久| 日韩午夜三级在线| 欧洲国内综合视频| 北条麻妃一区二区三区| 另类欧美日韩国产在线| 亚洲最大的成人av| 日韩伦理免费电影| 久久久久国色av免费看影院| 欧美精品乱码久久久久久| 色先锋久久av资源部| 成人激情综合网站| 国产suv一区二区三区88区| 麻豆精品蜜桃视频网站| 午夜精品福利一区二区蜜股av | 久久99国产精品久久| 亚洲成人免费影院| 一区二区三区在线不卡| 国产精品日韩成人| 国产欧美一区二区精品性色超碰| 欧美一级一区二区| 欧美一区二区久久久| 欧美体内she精视频| 91九色02白丝porn| 一本大道久久a久久综合| a亚洲天堂av|