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

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

?? segtofile(sen).c

?? 為自然語言處理領域的中文分詞程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
#include "segment.h"
#include <direct.h>
#include <io.h>
#include <string.h>



/**************************************************************************************
  判斷字串是否子串,有無半角分割符,是否都是分割符號構成,是否 全部是分割符,字符類型,漢字
  數字,字母
1.  判斷是否子串
***************************************************************************************/
char *CC_Find(const char *string, const char *strCharSet)
{
    /* 取第一串中與第二串相同的后續部分*/
	char *cp=strstr(string,strCharSet);
    /* cp非空同時cp與string不相同*/
   if(cp!=NULL&&(cp-string)%2==1)
   { 
	  return NULL;
   }
   return cp;
}


/**************************************************************************************
 2. 判斷串中有無半角分割符
***************************************************************************************/
int IsSpaceWord(unsigned char *sString)
{
	unsigned int nLen=strlen((const char *)sString),i=0;
	while(i<nLen-1&&(sString[i]==' '||sString[i]=='\r'||sString[i]=='\n'))
	{/*如果當前位置上取到的字符是分隔符,則繼續取下1字符分析*/
		i+=2;
	}
	if(i<nLen)/*存在其他類型字符,說明句串不是全分隔符*/
		return FALSE;
	return TRUE;

}
/**************************************************************************************
 3. 判斷句串sString是否都是分割符號構成
***************************************************************************************/
int IsAllDelimiter(unsigned char *sString)
{
	unsigned int nLen=strlen((const char *)sString),i=0;
	while(i<nLen-1&&(sString[i]==161||sString[i]==163))
	{/*如果當前位置上取到的字符是分隔符,則繼續取下1字符分析,161=,163=*/
		i+=2;
	}
	if(i<nLen)/*存在其他類型字符,說明句串不是全分隔符*/
		return FALSE;
	return TRUE;
}

/**************************************************************************************
 4. 判斷句串sString的符號類型,由unsigned char 判斷,<128是分割符,包括標點和括號等;162為索引;第一位163,176~185為數字
  ;第一位163,193~218或225~250為字母;163或161為分割符;176~247是漢字
  對于ASCII碼為:48~57,65~90,97~122
***************************************************************************************/	
int charType(unsigned char *sChar)
{  
  if(*sChar<128)
  { 
	 if(strchr("\042!,.?()[]{}+=",(int)*sChar)) 
		 return CT_DELIMITER; 
	 return CT_SINGLE; 
  }  
  else if(*sChar==162)
	  return CT_INDEX; 
  else if(*sChar==163&&*(sChar+1)>175&&*(sChar+1)<186)
	  return CT_NUM; 
  else if(*sChar==163&&(*(sChar+1)>=193&&*(sChar+1)<=218||*(sChar+1)>=225&&*(sChar+1)<=250))
	  return CT_LETTER; 
  else if(*sChar==161||*sChar==163)
	  return CT_DELIMITER; 
  else if(*sChar>=176&&*sChar<=247)
      return CT_CHINESE; 
  else
      return CT_OTHER; 
 
}

/**************************************************************************************
  5.判斷句串sString是否都是漢字構成,如果在176~247之間,且可一直加2。
***************************************************************************************/
int IsAllChinese(unsigned char *sString)
{
	unsigned int nLen=strlen((const char *)sString);  
	unsigned int i=0; 
	while(i<nLen-1&&sString[i]<248&&sString[i]>175)
	{ 
		i+=2; 
	}
	if(i<nLen) 
		return FALSE;
	return TRUE; 
	
}

/**************************************************************************************
  6.判斷句串sString是否都是單字節符號構成,<128
***************************************************************************************/
int IsAllSingleByte(unsigned char *sString)
{
	unsigned int nLen=strlen((const char *)sString),i=0;
	while(i<nLen&&sString[i]<128)
	{ 
		i=i+1;
	}
	if(i<nLen) 
		return FALSE;
	return TRUE;
}

/**************************************************************************************
  7.判斷句串sString是否都是數字構成,第一位=163,第二位176~185
***************************************************************************************/
int IsAllNum(unsigned char *sString)
{

	unsigned int nLen=strlen((const char *)sString),i=0;
	char sChar[3];
	sChar[2]=0;
	if(i<nLen)
	{
		sChar[0]=sString[i]; 
		i=i+1;
		if(sChar[0]<0) 
		{
			sChar[1]=sString[i]; 
		    i=i+1;
		}
		else 
			sChar[1]=0;
		if(!strstr("±+—-+",sChar))
		{ 
			i=0;
		}
	}
	while(i<nLen-1&&sString[i]==163&&sString[i+1]>175&&sString[i+1]<186)
	{ 
		i+=2;
	}
	if(i<nLen)
	{ 
		sChar[0]=sString[i]; 
		i=i+1;
		if(sChar[0]<0) 
		{
			sChar[1]=sString[i]; 
			i=i+1;
		}
		else 
			sChar[1]=0;
		if(CC_Find("∶·./",sChar)||sChar[0]=='.'||sChar[0]=='/')
		{ 
			while(i<nLen-1&&sString[i]==163&&sString[i+1]>175&&sString[i+1]<186)
			{ 
				i+=2;
			}
		}	
		else
		{ 
			i=i-strlen(sChar);
		}
	}

	if(i>=nLen) 
		return TRUE;
	while(i<nLen&&sString[i]>'0'-1&&sString[i]<'9'+1)
	{ 
		i+=1;
	}
	if(i<nLen)
	{ 
		sChar[0]=sString[i]; 
		i=i+1;
		if(sChar[0]<0) 
		{
			sChar[1]=sString[i]; 
			i=i+1;
		}
		else 
			sChar[1]=0;
		if(CC_Find("∶·./",sChar)||sChar[0]=='.'||sChar[0]=='/')
		{ 
			while(i<nLen&&sString[i]>'0'-1&&sString[i]<'9'+1)
			{ 
				i=i+1;
			}
		}	
		else
		{ 
			i=i-strlen(sChar);
		}
	}
	if(i<nLen)
	{ 
		sChar[0]=sString[i]; 
		i=i+1;
		if(sChar[0]<0) 
		{
			sChar[1]=sString[i]; 
			i=i+1;
		}
		else 
			sChar[1]=0;
		if(!CC_Find("百千萬億佰仟%‰",sChar)&&sChar[0]!='%')
			i=i-strlen(sChar); 
	}
	if(i>=nLen) 
		return TRUE;
	return FALSE;
}

/**************************************************************************************
  8.判斷句串sString是否都是字母構成,第一位163,第二位193~218,225~250
***************************************************************************************/
int IsAllLetter(unsigned char *sString)
{
	unsigned int nLen=strlen((const char *)sString),i=0;
	while(i<nLen-1&&sString[i]==163&&((sString[i+1]>=193&&sString[i+1]<=218)||(sString[i+1]>=225&&sString[i+1]<=250)))
	{ 
		i+=2;
	}
	if(i<nLen) 
		return FALSE;

	return TRUE;
}

/**************************************************************************************
 9. 二分查找:表長度,表指針,查找值val;中點=val?,<,Start=Mid+1;>,End=Mid-1,Mid=(Start+End)/2
***************************************************************************************/
int BinarySearch(int nVal, int *nTable,int nTableLen)
{
	int nStart=0,nEnd=nTableLen-1,nMid=(nStart+nEnd)/2; 
	while(nStart<=nEnd)
	{ 
       if(nTable[nMid]==nVal)
	   { 
			return nMid;
	   }
	   else if(nTable[nMid]<nVal)
	   { 
		   nStart=nMid+1;
	   }
	   else
       { 
		   nEnd=nMid-1;
	   }
	   nMid=(nStart+nEnd)/2; 
	}
	return -1; 
}

/**************************************************************************************
 10. 子串個數
***************************************************************************************/
int GetCharCount(char *sCharSet,char *sWord)
{
  unsigned int  k=0; 
  char tchar[3]; 
  int nCount=0;
  tchar[2]=0;
  while(k < strlen(sWord))
  { 
     tchar[0]=sWord[k];
 	 tchar[1]=0;
	 if(sWord[k]<0)
	 { 
		 tchar[1]=sWord[k+1];
		 k+=1;
	 }
	 k+=1;
	 if((tchar[0]<0&&CC_Find(sCharSet, tchar))||strchr(sCharSet,tchar[0]))
		  
          nCount=nCount+1;
  }
  return nCount;
}


/**************************************************************************************
  11.英,日或俄的翻譯人名個數
***************************************************************************************/
int GetForeignCharCount(char *sWord)
{
  unsigned int nForeignCount,nCount;
  nForeignCount=GetCharCount(TRANS_ENGLISH,sWord); 
  nCount=GetCharCount(TRANS_JAPANESE,sWord); 
  if(nForeignCount<=nCount)
	nForeignCount=nCount;
  nCount=GetCharCount(TRANS_RUSSIAN,sWord); 
  if(nForeignCount<=nCount)
	nForeignCount=nCount;
  return nForeignCount; 
}


/**************************************************************************************
 12. 是否大寫中文數字
***************************************************************************************/
int IsAllChineseNum(char *sWord)
{
  unsigned int  k; 
  char tchar[3];
  char ChineseNum[]="零○一二兩三四五六七八九十廿百千萬億壹貳叁肆伍陸柒捌玖拾佰仟∶·./點"; 
  char sPrefix[]="幾數第上成"; 
  for(k = 0; k < strlen(sWord); k+=2)
  {
     strncpy(tchar,sWord+k,2) ;
     tchar[2]='\0'; 
	 if(strncmp(sWord+k,"分之",4)==0) 
	 { 
		k+=2;
		continue;
	 }

	 if(!CC_Find(ChineseNum, tchar)&&!(k==0&&CC_Find(sPrefix, tchar)))
		 return FALSE; 
  }
  return TRUE;
}


/**************************************************************************************
 13. 去掉空格,漢字計算高字節和低字節,分割符返回標志
***************************************************************************************/
int PreProcessing(char *sWord, int *nId, char *sWordRet,int bAdd)
{
   int nType=charType((unsigned char *)sWord); 
   int nLen=strlen(sWord); 
   int nEnd=nLen-1,nBegin=0; 
   if(nLen==0) 
	   return FALSE;
   /*去掉sWord首尾空格個數*/
   while(nEnd>=0&&sWord[nEnd]==' ') 
		nEnd-=1;
   while(nBegin<=nEnd&&sWord[nBegin]==' ') 
		nBegin+=1; 
   if(nBegin>nEnd) 
	   return FALSE; 
    /*去掉sWord首尾空格*/
   if(nEnd!=nLen-1||nBegin!=0)
   { 
	   strncpy(sWord,sWord+nBegin,nEnd-nBegin+1);
	   sWord[nEnd-nBegin+1]=0;
   }
    /*如果漢字,計算高字節和低字節,并拷貝給sWordRet*/
   if(nType==CT_CHINESE)
   { 
	   *nId=CC_ID(sWord[0],sWord[1]); 
	   strcpy(sWordRet,&sWord[2]); 
	   return TRUE;
   }
    /*如果是分割符*/
   if(nType==CT_DELIMITER)
   { 
	   *nId=3755; 
       strcpy(sWordRet,sWord); 
	   return TRUE;
   }
   return FALSE; 
}

/**************************************************************************************
  14.是否年數
***************************************************************************************/
int IsYearTime(char *sNum)
{ 
	unsigned int nLen=strlen(sNum);
	char sTemp[3];
	strncpy(sTemp,sNum,2);
	sTemp[2]=0;
	if(IsAllSingleByte((unsigned char *)sNum)&&(nLen==4||nLen==2&&sNum[0]>'4')) 
		return TRUE;
	if(IsAllNum((unsigned char *)sNum)&&(nLen>=6||nLen==4&&CC_Find("56789",sTemp)))
		return TRUE;
	if(GetCharCount("零○一二三四五六七八九壹貳叁肆伍陸柒捌玖",sNum)==(int)nLen/2&&nLen>=3)
		return TRUE;
	if(nLen==8&&GetCharCount("千仟零○",sNum)==2) 
		return TRUE;
	if(nLen==2&&GetCharCount("千仟",sNum)==1)
		return TRUE;
	if(nLen==4&&GetCharCount("甲乙丙丁戊己庚辛壬癸",sNum)==1&&GetCharCount("子丑寅卯辰巳午未申酉戌亥",sNum+2)==1)
		return TRUE;
	return FALSE;
}


/**************************************************************************************
15.  北大973詞性標注
***************************************************************************************/
int PKU2973POS(int nHandle, char *sPOS973)
{
	int nHandleSet[46]={24832,24932,24935,24942,25088,25344,25600,25703,25856,26112,26368,26624,26880,27136,27392,27648,27904,28160,28263,28274,28275,28276,28280,28282,28416,28672,28928,29184,29440,29696,29799,29952,30052,30055,30058,30060,30070,30074,30208,30308,30311,30318,30464,30720,30976,31232};
	char sPOSRelated[46][3]={"a", "ad","ga","an","f", "c", "d", "d", "e","nd","g", "h", "i", "j", "k", "l", "m", "n", "gn","nh","ns","ni","ws", "nz","o", "p", "q", "r", "nl","nt","gt","u", "ud","ug","uj","ul","uv","uz","v", "vd","gv","vn","w", "x", "u", "a"};
	int nIndex=BinarySearch(nHandle,nHandleSet,46);
	if(nIndex==-1)
		strcpy(sPOS973,"@");
	else
		strcpy(sPOS973,sPOSRelated[nIndex]);
	return TRUE;
}

/**************************************************************************************
 16. 讀字典文件中的內容到鏈表中
***************************************************************************************/
int LoadDicFile(pDictionary p, char *sFilename,int bReset)
{
   FILE *fp;
   int i,j,nBuffer[3];
   if((fp=fopen(sFilename,"rb"))==NULL)
       return FALSE;

   /*鏈表中的指針為NULL*/
   for( i=0;i<CC_NUM;i++)
	{
		if(p->m_IndexTable[i].pWordItemHead)
		{
			for( j=0;j<p->m_IndexTable[i].nCount;j++)
			{
				if(p->m_IndexTable[i].pWordItemHead[j].sWord!=NULL)
				{
					free(p->m_IndexTable[i].pWordItemHead[j].sWord);
					p->m_IndexTable[i].pWordItemHead[j].sWord=NULL;
				}
			}
			free(p->m_IndexTable[i].pWordItemHead);
			p->m_IndexTable[i].pWordItemHead=NULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男人的天堂网| 国产无一区二区| 亚洲欧洲制服丝袜| 激情五月婷婷综合网| 欧美自拍偷拍午夜视频| 蜜桃精品视频在线观看| 99热精品一区二区| 精品国产成人系列| 日韩精品欧美成人高清一区二区| 成人免费高清视频| 久久午夜电影网| 日本欧美在线观看| 欧美日韩国产一级二级| 亚洲免费观看高清完整版在线观看 | 成人影视亚洲图片在线| 欧美一级免费观看| 午夜精品在线看| 色一情一乱一乱一91av| 国产精品免费视频观看| 国产一区二区三区最好精华液| 欧美二区在线观看| 亚洲线精品一区二区三区八戒| 97久久超碰精品国产| 日本一二三四高清不卡| 国产精品伊人色| 欧美电视剧在线看免费| 丝袜亚洲精品中文字幕一区| 欧美日韩在线亚洲一区蜜芽| 亚洲乱码中文字幕综合| eeuss鲁一区二区三区| 国产欧美精品一区二区色综合朱莉| 久久精品久久综合| 日韩视频一区二区在线观看| 天堂精品中文字幕在线| 欧美日韩一卡二卡三卡| 亚洲v日本v欧美v久久精品| 在线精品视频免费观看| 亚洲精品免费在线| 日本韩国欧美在线| 亚洲一区视频在线| 在线视频你懂得一区| 亚洲精品视频在线观看网站| 91视视频在线直接观看在线看网页在线看 | 精品在线亚洲视频| 欧美哺乳videos| 激情久久五月天| 精品福利av导航| 国产主播一区二区| 国产日本欧美一区二区| 成人性视频免费网站| 亚洲丝袜自拍清纯另类| 色欧美片视频在线观看在线视频| 亚洲欧美视频在线观看视频| 日本高清成人免费播放| 一区二区三区在线视频观看58 | 成人看片黄a免费看在线| 国产精品女主播av| 在线观看视频一区| 天天做天天摸天天爽国产一区| 欧美一区二区三区免费在线看| 蜜臀av性久久久久蜜臀aⅴ | 一区二区三区成人在线视频| 一本一道综合狠狠老| 亚洲在线免费播放| 91精选在线观看| 国产一区二区三区四| 亚洲国产成人午夜在线一区| 91免费国产视频网站| 亚欧色一区w666天堂| 日韩精品影音先锋| www.亚洲色图.com| 亚洲国产日韩在线一区模特| 91麻豆精品国产无毒不卡在线观看 | 日韩欧美资源站| 国产成人午夜99999| 亚洲色图制服丝袜| 91麻豆精品国产91久久久资源速度 | 美女视频黄免费的久久| 久久这里只有精品首页| jiyouzz国产精品久久| 亚洲国产一区二区视频| 欧美videossexotv100| 成人一区二区三区中文字幕| 亚洲一区二区三区爽爽爽爽爽| 日韩丝袜美女视频| 波多野结衣的一区二区三区| 亚洲激情图片一区| 欧美成人精品福利| 97se亚洲国产综合自在线不卡 | 成人黄色在线看| 午夜影院在线观看欧美| 久久精品夜色噜噜亚洲aⅴ| 色狠狠色噜噜噜综合网| 久久99最新地址| 亚洲靠逼com| 精品av综合导航| 日本精品一区二区三区高清 | 青青青伊人色综合久久| 国产精品网站在线| 91精品国产色综合久久不卡电影| 国产成人免费视频| 偷拍日韩校园综合在线| 中文字幕电影一区| 欧美一级免费观看| 一本大道久久a久久综合| 麻豆精品在线播放| 亚洲黄色小视频| 久久精品夜夜夜夜久久| 3d成人动漫网站| 色94色欧美sute亚洲线路一ni | 精品在线观看视频| 亚洲综合网站在线观看| 国产亚洲精品久| 日韩一级片在线观看| 色综合久久99| 高清beeg欧美| 久久99精品久久久| 亚洲电影激情视频网站| 国产精品国产三级国产普通话三级 | 不卡的av电影在线观看| 麻豆freexxxx性91精品| 一区二区不卡在线视频 午夜欧美不卡在 | 91热门视频在线观看| 国产一区在线观看视频| 三级在线观看一区二区| 亚洲人成7777| 国产精品久久毛片a| www成人在线观看| 3d成人动漫网站| 欧美片在线播放| 色先锋久久av资源部| 成人国产精品免费网站| 国精品**一区二区三区在线蜜桃| 三级一区在线视频先锋| 亚洲成人午夜影院| 亚洲综合偷拍欧美一区色| 亚洲人精品午夜| 一色桃子久久精品亚洲| 国产精品无遮挡| 中文字幕国产精品一区二区| 国产三级久久久| 国产亚洲一区二区三区| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩日日夜夜| 欧美自拍偷拍一区| 在线亚洲高清视频| 欧洲国产伦久久久久久久| 91年精品国产| 91视频观看免费| 91福利社在线观看| 91传媒视频在线播放| 日本久久一区二区| 欧美怡红院视频| 欧美视频第二页| 欧美日韩www| 欧美精品123区| 日韩免费视频一区二区| 日韩精品一区二| 国产亚洲欧美日韩在线一区| 国产精品一区二区久久不卡| 国内精品伊人久久久久av影院| 久久黄色级2电影| 国产又黄又大久久| 粉嫩在线一区二区三区视频| 国产成人免费视频| eeuss国产一区二区三区| 91免费国产在线| 欧美午夜电影在线播放| 欧美日韩国产大片| 欧美v日韩v国产v| 国产日产亚洲精品系列| 亚洲天堂免费在线观看视频| 亚洲精品国产一区二区精华液| 亚洲精品福利视频网站| 三级成人在线视频| 另类专区欧美蜜桃臀第一页| 国产精品自拍毛片| av资源网一区| 欧美体内she精高潮| 3d动漫精品啪啪一区二区竹菊| 日韩精品一区二区三区中文精品 | 欧美日韩日日摸| 日韩女同互慰一区二区| 国产欧美视频一区二区| 亚洲欧美国产三级| 五月天一区二区| 亚洲不卡av一区二区三区| 久久99精品久久久| 9i在线看片成人免费| 欧美三级午夜理伦三级中视频| 日韩一区二区三区视频在线| 久久综合九色综合欧美亚洲| 日韩理论片在线| 奇米影视一区二区三区小说| 岛国av在线一区| 欧美日韩国产色站一区二区三区| 精品久久人人做人人爽| 国产精品高潮久久久久无| 亚洲福利视频导航| 国产麻豆成人精品|