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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? segtofile(sen).c

?? 為自然語(yǔ)言處理領(lǐng)域的中文分詞程序
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
#include "segment.h"
#include <direct.h>
#include <io.h>
#include <string.h>



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


/**************************************************************************************
 2. 判斷串中有無(wú)半角分割符
***************************************************************************************/
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'))
	{/*如果當(dāng)前位置上取到的字符是分隔符,則繼續(xù)取下1字符分析*/
		i+=2;
	}
	if(i<nLen)/*存在其他類(lèi)型字符,說(shuō)明句串不是全分隔符*/
		return FALSE;
	return TRUE;

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

/**************************************************************************************
 4. 判斷句串sString的符號(hào)類(lèi)型,由unsigned char 判斷,<128是分割符,包括標(biāo)點(diǎn)和括號(hào)等;162為索引;第一位163,176~185為數(shù)字
  ;第一位163,193~218或225~250為字母;163或161為分割符;176~247是漢字
  對(duì)于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是否都是漢字構(gòu)成,如果在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是否都是單字節(jié)符號(hào)構(gòu)成,<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是否都是數(shù)字構(gòu)成,第一位=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("百千萬(wàn)億佰仟%‰",sChar)&&sChar[0]!='%')
			i=i-strlen(sChar); 
	}
	if(i>=nLen) 
		return TRUE;
	return FALSE;
}

/**************************************************************************************
  8.判斷句串sString是否都是字母構(gòu)成,第一位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. 二分查找:表長(zhǎng)度,表指針,查找值val;中點(diǎn)=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. 子串個(gè)數(shù)
***************************************************************************************/
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.英,日或俄的翻譯人名個(gè)數(shù)
***************************************************************************************/
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. 是否大寫(xiě)中文數(shù)字
***************************************************************************************/
int IsAllChineseNum(char *sWord)
{
  unsigned int  k; 
  char tchar[3];
  char ChineseNum[]="零○一二兩三四五六七八九十廿百千萬(wàn)億壹貳叁肆伍陸柒捌玖拾佰仟∶·./點(diǎn)"; 
  char sPrefix[]="幾數(shù)第上成"; 
  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. 去掉空格,漢字計(jì)算高字節(jié)和低字節(jié),分割符返回標(biāo)志
***************************************************************************************/
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首尾空格個(gè)數(shù)*/
   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;
   }
    /*如果漢字,計(jì)算高字節(jié)和低字節(jié),并拷貝給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.是否年數(shù)
***************************************************************************************/
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詞性標(biāo)注
***************************************************************************************/
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. 讀字典文件中的內(nèi)容到鏈表中
***************************************************************************************/
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;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区亚洲人成毛片| av中文字幕一区| 国产在线精品国自产拍免费| 国产mv日韩mv欧美| 99精品欧美一区| 5566中文字幕一区二区电影| 久久久电影一区二区三区| 中文字幕佐山爱一区二区免费| 亚洲一区二区在线免费看| 看电视剧不卡顿的网站| 成人av在线一区二区三区| 欧美日韩免费观看一区二区三区 | 欧美激情中文不卡| 亚洲综合激情另类小说区| 蓝色福利精品导航| 91在线视频免费观看| 日韩一区二区三| 日韩毛片在线免费观看| 麻豆91在线观看| 91啪九色porn原创视频在线观看| 在线电影一区二区三区| 国产精品白丝在线| 蜜桃av一区二区| 色婷婷综合久久久久中文一区二区 | 欧美大胆一级视频| 亚洲人妖av一区二区| 极品瑜伽女神91| 欧美吻胸吃奶大尺度电影| 久久久99精品免费观看不卡| 五月天丁香久久| 91婷婷韩国欧美一区二区| 日韩一级黄色片| 亚洲人成7777| 国产999精品久久久久久| 欧美人体做爰大胆视频| 综合av第一页| 国产精品一二三四五| 91精品在线免费观看| 最新日韩av在线| 国产精选一区二区三区| 日韩一级成人av| 一区二区三区四区激情| 国产91露脸合集magnet| 日韩一级片在线播放| 亚洲一区二区在线播放相泽| a级精品国产片在线观看| 久久男人中文字幕资源站| 日韩主播视频在线| 日本道精品一区二区三区| 久久久久久久久久久久久夜| 日本不卡一二三区黄网| 欧美日韩一区二区三区在线| 亚洲免费在线看| a在线欧美一区| 亚洲国产经典视频| 国产综合久久久久影院| 日韩欧美激情四射| 肉色丝袜一区二区| 欧美伊人久久大香线蕉综合69| 国产精品盗摄一区二区三区| 国产成都精品91一区二区三| 久久天堂av综合合色蜜桃网| 久久99精品久久久久久国产越南| 欧美一区二区在线观看| 日韩精品电影在线观看| 欧美日韩国产中文| 亚洲制服丝袜在线| 欧美色区777第一页| 亚洲精品伦理在线| 色综合久久中文综合久久牛| 亚洲免费伊人电影| 欧美专区日韩专区| 亚洲一二三区不卡| 国产亚洲精品资源在线26u| 国产综合久久久久久久久久久久| 日韩女优视频免费观看| 美女国产一区二区三区| 日韩欧美一区二区不卡| 免费成人深夜小野草| 精品奇米国产一区二区三区| 久久国产生活片100| 久久综合久色欧美综合狠狠| 国产综合色视频| 国产日韩精品久久久| av日韩在线网站| 亚洲最新在线观看| 91精品国产91热久久久做人人| 香蕉成人伊视频在线观看| 91精品国产91久久久久久一区二区| 日韩av高清在线观看| 亚洲精品在线电影| 成人激情免费网站| 亚洲日本va午夜在线电影| 欧美色综合久久| 蜜臀a∨国产成人精品| 欧美v日韩v国产v| 国产成人av一区| 国产精品久久久久影院色老大| 91亚洲永久精品| 三级精品在线观看| 久久久一区二区三区| 成人黄色在线视频| 亚洲激情综合网| 91精品综合久久久久久| 国产精品综合在线视频| 亚洲男女一区二区三区| 欧美日韩综合在线| 六月丁香婷婷久久| 国产精品理伦片| 欧美日韩一级片网站| 蜜臂av日日欢夜夜爽一区| 久久精品欧美一区二区三区不卡| 不卡影院免费观看| 午夜精品久久久久影视| 亚洲精品在线网站| 日本乱人伦aⅴ精品| 久久国内精品自在自线400部| 国产精品久久久久影院| 欧美人与性动xxxx| 国产成人精品影视| 午夜电影久久久| 欧美—级在线免费片| 精品视频一区三区九区| 国产精品亚洲成人| 亚洲国产一区视频| 国产亚洲精品免费| 欧美日韩激情一区| 成人国产电影网| 青青草国产精品97视觉盛宴 | 99久久国产综合色|国产精品| 午夜视黄欧洲亚洲| 国产精品网站导航| 欧美一区二区三区四区视频| 成人av高清在线| 免费成人结看片| 一区二区在线电影| 久久伊人中文字幕| 精品视频免费看| 成人福利在线看| 韩国精品免费视频| 亚洲国产精品视频| 国产精品久久三区| 欧美va亚洲va| 欧美日韩一区二区三区在线看| 成人性生交大片| 蜜臀av一区二区在线免费观看| 亚洲免费看黄网站| 欧美国产日本视频| 精品久久一区二区| 欧美精品一级二级| 色婷婷av一区二区三区软件| 国产福利一区二区三区视频在线| 天天影视色香欲综合网老头| 日韩伦理电影网| 国产精品网站在线| 久久久一区二区三区捆绑**| 制服丝袜中文字幕一区| 91黄色激情网站| www.亚洲色图.com| 国产成人福利片| 久久99精品久久久久久国产越南 | 欧美高清精品3d| 91精彩视频在线观看| 91在线看国产| 国产iv一区二区三区| 国产乱码一区二区三区| 久久成人免费网| 美女视频网站黄色亚洲| 水蜜桃久久夜色精品一区的特点| 亚洲欧美日韩国产成人精品影院| 欧美国产日韩精品免费观看| 久久日韩粉嫩一区二区三区| 日韩欧美在线123| 日韩一区国产二区欧美三区| 欧美日韩高清影院| 欧美网站一区二区| 欧美三级电影在线看| 在线免费一区三区| 色综合中文综合网| 国产精品影视在线| 狠狠色综合色综合网络| 另类成人小视频在线| 久久99国内精品| 精品无码三级在线观看视频 | 久久精品这里都是精品| 久久久精品中文字幕麻豆发布| 久久夜色精品一区| 久久精品一区二区三区四区| 国产欧美日韩精品在线| 国产精品三级久久久久三级| 国产精品毛片高清在线完整版| 中文字幕乱码一区二区免费| 国产精品水嫩水嫩| 亚洲视频中文字幕| 一区二区三区日韩精品| 亚洲资源中文字幕| 日韩 欧美一区二区三区| 美日韩一级片在线观看| 精品在线视频一区| 国产+成+人+亚洲欧洲自线|