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

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

?? tense.cpp

?? 計算機英漢機器翻譯系統中的英語詞性標注方法實現
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
	
#include "stdafx.h"
#include "PosTag.h"
#include "ChildFrm.h"
#include "mainstru.h"

#ifndef	_LXH_H
#include "lxh.h"
#endif

#ifndef DICTDEF_H 
#include "dictdef.h"
#endif
#define	Cate_v	Cate_END+100

/*
	int	m_byMaxPhraseLen;	//如果 m_pszEnglish為一個單詞,記錄短語第一個為該詞的短語最大長度
	DictNode	*m_pNextWordNode;	//下一個 詞結點
	DictNode	*m_pPrevWordNode;	//前一個 詞結點 

	int		m_byDictForm;
	BYTE	m_byDictGenetive;		//1:所有格
	char	m_cDictTense;			//時態:0現在,1過去,2將來,3過去將來
	char	m_cDictAspect;			//體態:0一般,1進行,2完成,3完成進行
	char	m_cDictVoice;			//0:主動,1:被動
	char	m_cDictNegative;		//0:肯定,1:否定,
	BYTE	m_byDictPerson;			//1:第一人稱,2:第二人稱,3:第三人稱
	BYTE	m_byDictNumber;			//0:單數,1:復數
*/																	
extern	char * Mystrcpy(DictNode *pDictNode,char *Word,int Option);
//DictNode *CombineNodes(DictNode *Begin,DictNode *End,DictNode *Center);
DictNode *HaveWord(struct DictNode *begin, char *word,	int	form);
#define	Tail_s	1
#define	Tail_d	2
#define	Tail_re	3
#define	Tail_ll	4
#define	Tail_ve	5
#define	Tail_m	6
#define	Tail_t	7
//Xuned Change End


#define	MaxWordNo	150
#define	MaxWordLength	200//xuned change
#define	TooManyWords	-1
#define	WordIsTooLong	-2
#define	SenIsOK		1
#define	Orig_Form	STYLE_ORIG
#define	Ed1_Form	STYLE_ED1
#define	Ed2_Form	STYLE_ED2
#define	Ing_Form	STYLE_ING
#define	S_Form		STYLE_S
#define	Ed1_2_Form	STYLE_ED
#define	Ing_Form		STYLE_ING
#define	Er_Form			906
#define	Est_Form		907
#define	Is_Has_Form		908	//'s 可能是is, 也可能是has
#define	Would_had_Form	909		//'s 可能是would, 也可能是had
#define	Unknown_Form	910
#define	Number_Form		911

#define	Sing_Number		0
#define	Multi_Number	1

#define	Pre_Tense		0
#define	Past_Tense		1
#define	Future_Tense	2
#define	Pastfuture_Tense	3

#define	Simple_Aspect		0
#define	Progressive_Aspect	1
#define	Perfect_Aspect		2
#define	PerfectProgressive_Aspect		3

#define	Declarative_Mood	0
#define	General_Question_Mood	1
#define	Special_Question_Mood	2
#define	Exclaim_Mood		3
#define	Imperative_Mood		4

#define	Active_Voice		0
#define	Passive_Voice		1

#define	Positive		0
#define	Negative		1

#define	First_Person	1
#define	Second_Person	2
#define	Third_Person	3
#define	No_Genetive		0
#define	Have_Genetive	1


//extern DictSearch g_objLexSearch;
//LookUp的返回信息尚未利用
//BTNode的m_pszAmbig屬性不需從詞典中讀的未寫,
SentenceType g_objMorSent;

char * Mystrcpy(DictNode *pDictNode,char *Word,int Option);
void	ModifyPreWord();
DictNode* CreateNewWord(char * Word);
DictNode* CreateComposeWord(DictNode *pDictNode2,
							DictNode *pDictNode3,
							char * ComposeWord); // cdq add
DictNode* CreateOrdinalWord(DictNode *pDictNode2,char *Word);// cdq add
int	MorphorAnalyze(char	*sen);
DictNode* WordRestore(char *inputword, int nSearchMod);
BOOL	SearchCate(DictNode *pDictNode,int	Cate);

void	DictWordInit(DictNode* pDictNode);	//called by Caim

//void	PhraseCombine();
BOOL	IsDigitalWord(char	*Word,int WordLen);
void	FreeSentence(SentenceType * Sen);
void	SearchLxh();
void	OutputDictInformation(DictNode	* pDict, FILE *fpres);
//extern	void	SetDefTense();


#define	Cate_v	Cate_END+100
BOOL bNoTranCapStr=TRUE;


DictNode *HaveWord(struct DictNode *begin, char *word,	int	form)
{	// 在句子第begin個詞是否為具有形態form的單詞word,,失敗返回-1,
	
	if(begin == NULL)
		return	NULL;
	if(word==NULL)           
	{
		if(begin->m_byDictForm==form || 
		((form==Ed1_Form || form ==Ed2_Form)&& begin->m_byDictForm==Ed1_2_Form))
			return	begin;
	}
	else if(form!=-1)	//查特定形態的詞
	{
		if((begin->m_byDictForm==form ||
		((form==Ed1_Form || form ==Ed2_Form)&& begin->m_byDictForm==Ed1_2_Form)) &&
		strcmp(begin->m_pszEnglish,word)==0)
			return	begin;
	}
	else //form=-1		//查特定的詞,形態任意
	{
		if((begin->m_pszOrig != NULL && strcmp(begin->m_pszOrig,word)==0) ||
		(begin->m_pszEnglish != NULL && strcmp(begin->m_pszEnglish,word)==0))
			return	begin;
	}
	return	NULL;
}
/*
BOOL	CompareWord(struct DictNode *Node,char	*word)
{
	// 句子第pos個詞是否等于單詞word
	if(Node==NULL)
		return	FALSE;
	return( !strcmp(Node->m_pszEnglish,word));
}

BOOL	CompareForm(struct DictNode *Node,int	form)
{	// 句子第pos個詞是否為詞形form
	if(Node==NULL)
		return	FALSE;
	if(Node->m_byDictForm==form || 
		((form==Ed1_Form || form ==Ed2_Form)&& Node->m_byDictForm==Ed1_2_Form))
		return	TRUE;
	else
		return	FALSE;
}


void	SetDefTense()
{
	g_objMorSent.m_cTense=Pre_Tense;	//default value
	g_objMorSent.m_cAspect=Simple_Aspect;
	g_objMorSent.m_cMood =Declarative_Mood;
	g_objMorSent.m_cVoice = Active_Voice;
	g_objMorSent.m_cNegative=Positive;
	g_objMorSent.m_byPerson=Third_Person;
	g_objMorSent.m_byNumber=Sing_Number;	//default value
}

DictNode *CombineNodes(DictNode *Begin,DictNode *End,DictNode *Center)
{
	DictNode * TobeDelete, *PrevNode, *NextNode;
	char	Phrase[150],PhraseOrig[150];
	Center->m_byDictForm	= Begin->m_byDictForm	;
	Center->m_byDictGenetive= Begin->m_byDictGenetive;
	Center->m_cDictTense	= Begin->m_cDictTense	;
	Center->m_cDictAspect	= Begin->m_cDictAspect	;
	Center->m_cDictVoice	= Begin->m_cDictVoice	;
	Center->m_cDictNegative	= Begin->m_cDictNegative;
	Center->m_byDictPerson	= Begin->m_byDictPerson	;
	Center->m_byDictNumber	= Begin->m_byDictNumber	;
	
	//cdq changed 12.10
	if ( strcmp(Begin->m_pszOrig,"have")==0 &&
		strcmp(End->m_pszEnglish,"been")==0 )
	{
		Mystrcpy(Center,"@Cate=be",3);
	}
	else
	{
		Mystrcpy(Center,"@Cate=v",3);
	}

	PrevNode = Begin->m_pPrevWordNode;
	NextNode = End->m_pNextWordNode;
	strcpy(Phrase,"\0");
	strcpy(PhraseOrig,"\0");
	while(Begin != End && Begin!=NULL)
	{
		TobeDelete = Begin;
		strcat(Phrase,Begin->m_pszEnglish);
		strcat(Phrase," ");
		strcat(PhraseOrig,Begin->m_pszOrig);
		strcat(PhraseOrig," ");
		
		Begin = Begin->m_pNextWordNode;
		if(TobeDelete != Center)
			g_objLexSearch.FreeNode(TobeDelete);
	}
	strcat(Phrase,End->m_pszEnglish);
	strcat(PhraseOrig,End->m_pszOrig);
	Mystrcpy(Center,Phrase,1);
	Mystrcpy(Center,PhraseOrig,2);
	if(End != Center)
		g_objLexSearch.FreeNode(End);
	Center->m_pPrevWordNode	= PrevNode;
	Center->m_pNextWordNode = NextNode;
	if(PrevNode != NULL)
		PrevNode->m_pNextWordNode = Center;
	if(NextNode != NULL)
		NextNode->m_pPrevWordNode = Center;

	return	Center;
}

DictNode *TenseAnalyse(DictNode *pDict)
{
	//int	CurPosOuter,CurPosMiddle,CurPosInner;
	struct DictNode *CurPosOuter,*CurPosMiddle,*end;
	if((CurPosOuter=HaveWord(pDict,"be",-1))!=NULL)	
	{	//is, am, are, was,were
		if(CompareForm(CurPosOuter,Ed1_Form))	//was,were
		{
			pDict->m_cDictTense=Past_Tense;
			if(CompareWord(CurPosOuter,"was"))	//was
			{
				pDict->m_byDictPerson=Third_Person;
				pDict->m_byDictNumber=Sing_Number;
			}
			else	//were
			{
				pDict->m_byDictNumber=Multi_Number;
			}
		}
		else if(CompareForm(CurPosOuter,Ed2_Form))	//been
			return	pDict;
		else 
		{
			if(CompareWord(CurPosOuter,"is"))	//is
			{
				pDict->m_byDictPerson=Third_Person;
				pDict->m_byDictNumber=Sing_Number;
			}
			else if(CompareWord(CurPosOuter,"am"))	//am
			{
				pDict->m_byDictPerson=First_Person;
				pDict->m_byDictNumber=Sing_Number;
			}
			else if(CompareWord(CurPosOuter,"are"))	//are
			{
				pDict->m_byDictNumber=Multi_Number;
			}
		}
		if(CompareWord(CurPosOuter->m_pNextWordNode,"not"))	//negative
		{

			pDict->m_cDictNegative=Negative;
			CurPosOuter = CurPosOuter->m_pNextWordNode;
		}
		if((CurPosMiddle=HaveWord(CurPosOuter->m_pNextWordNode,NULL,Ed2_Form))!=NULL)	//ed2
		{
			pDict->m_cDictVoice = Passive_Voice;
			pDict = CombineNodes(pDict,CurPosMiddle,CurPosMiddle);
			return	pDict;		//state = 2 or 6, 一般現在(過去)被動
		}
		else if(CompareWord(CurPosOuter->m_pNextWordNode,"being"))//being  //cdq changed 12.22
		{
			end = CurPosOuter->m_pNextWordNode->m_pNextWordNode;
			if((HaveWord(end,NULL,Ed2_Form))!=NULL)	//ed2
			{
				pDict->m_cDictAspect=Progressive_Aspect;
				pDict->m_cDictVoice = Passive_Voice;
				pDict = CombineNodes(pDict,end,end);
				return	pDict;		//state = 4 or 8	現在(過去)進行時,被動
			}
		}
		else if((CurPosMiddle=HaveWord(CurPosOuter->m_pNextWordNode,NULL,Ing_Form))!=NULL)//ing
		{
			pDict->m_cDictAspect=Progressive_Aspect;
			pDict = CombineNodes(pDict,CurPosMiddle,CurPosMiddle);
			return	pDict;		//state = 3 or 7 現在(過去)進行
		}
	}
	else if((CurPosOuter=HaveWord(pDict,"have",-1))!=NULL)	//have,has,had
	{
		if(CompareForm(CurPosOuter,Ed1_2_Form))	//had
			pDict->m_cDictTense=Past_Tense;
		else
		{
			pDict->m_cDictTense=Pre_Tense;
			if(CompareWord(CurPosOuter,"has"))	//has
			{
				pDict->m_byDictPerson=Third_Person;
				pDict->m_byDictNumber=Sing_Number;
			}
			else	//have
			{
				pDict->m_byDictNumber=Multi_Number;
			}
		}
		if(CompareWord(CurPosOuter->m_pNextWordNode,"not"))	//negative
		{
			pDict->m_cDictNegative=Negative;
			CurPosOuter = CurPosOuter->m_pNextWordNode;
		}
		if(CompareWord(CurPosOuter->m_pNextWordNode,"been"))//been
		{
			end = CurPosOuter->m_pNextWordNode->m_pNextWordNode;
			if(CompareForm(end,Ed2_Form))//ed2
			{
				pDict->m_cDictAspect =Perfect_Aspect;
				pDict = CombineNodes(pDict,end,end);
				return	pDict;		//state = 12 or 13 現在(過去)完成時,被動
			}
			else
			if(CompareForm(end,Ing_Form))//ing
			{
				pDict->m_cDictAspect =PerfectProgressive_Aspect;
				pDict = CombineNodes(pDict,end,end);
				return	pDict;		//state = 14 or 15 現在(過去)完成進行時
			}
			//cdq changed
			/*
			else
			if(CompareWord(end,"to"))
			{
					DictNode* pDictNode;
					int	i;
					pDictNode = new DictNode;
					i = strlen("been to");
					pDictNode->m_nLxhCate = NULL;

					pDictNode->m_pszEnglish = new char[i+1];
					pDictNode->m_pszOrig = new char[i+1]; 
					
					strcpy(pDictNode->m_pszEnglish,"been to");
					strcpy(pDictNode->m_pszOrig,"been to");
					pDictNode->m_byDictForm = STYLE_ORIG;
					pDictNode->m_byDictNumber = Sing_Number;
					pDictNode->m_byMaxPhraseLen = DefaMaxPhraseLen;
					pDictNode->m_pNextWordNode = end->m_pNextWordNode;
					pDictNode->m_pPrevWordNode = CurPosOuter;

					pDictNode->m_nEnglishLen = i;
					pDictNode->m_bIsExistOrig = TRUE;
					pDictNode->m_nOrigLen = i;
					pDictNode->m_nWordStyle = 0;
					pDictNode->m_bIsExistAmbig = 0;
					pDictNode->m_pszAmbig = NULL;
					pDictNode->m_nAmbigLen = 0;
					pDictNode->m_nChinNum = 1;
					pDictNode->m_pFirstChin = new DictChin;

					pDictNode->m_pFirstChin->m_pszChinese=new char[6];
					strcpy(pDictNode->m_pFirstChin->m_pszChinese,"去過");
					pDictNode->m_pFirstChin->m_nChineseLen=
							strlen(pDictNode->m_pFirstChin->m_pszChinese);
					pDictNode->m_pFirstChin->m_nCate=Cate_vt;

					end=pDictNode;
					CurPosOuter->m_pNextWordNode=end;
					CurPosOuter->m_pNextWordNode->m_pNextWordNode->m_pPrevWordNode=end;


				pDict->m_cDictAspect =PerfectProgressive_Aspect;
				pDict = CombineNodes(pDict,end,end);
				return	pDict;
			}
			*/
/*			else
			{
				pDict->m_cDictAspect =Perfect_Aspect;
				end =CurPosOuter->m_pNextWordNode;
				pDict = CombineNodes(pDict,end,end);
				return	pDict;		//state = 10 or 11	現在(過去)完成時
			}
		}
		else if((CurPosMiddle=HaveWord(CurPosOuter->m_pNextWordNode,NULL,Ed2_Form))!=NULL)	//ed2
		{
			pDict->m_cDictAspect =Perfect_Aspect;
			pDict = CombineNodes(pDict,CurPosMiddle,CurPosMiddle);
			return	pDict;		//state = 10 or 11	現在(過去)完成時
		}
		
	}
	else if((CurPosOuter=HaveWord(pDict,"will",-1))!=NULL)	//will,would
	{
		if(CompareForm(CurPosOuter,Ed1_Form))
			pDict->m_cDictTense=Pastfuture_Tense;
		else
			pDict->m_cDictTense=Future_Tense;
		if(CompareWord(CurPosOuter->m_pNextWordNode,"not"))	//negative
		{
			pDict->m_cDictNegative=Negative;
			CurPosOuter = CurPosOuter->m_pNextWordNode;
		}
		if(CompareWord(CurPosOuter->m_pNextWordNode,"be"))	//be
		{
			end = CurPosOuter->m_pNextWordNode->m_pNextWordNode;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一二三区在线观看| 国产日产欧美一区二区视频| 欧美成人午夜电影| 中文字幕佐山爱一区二区免费| 亚洲成人综合在线| 成人午夜精品在线| 91精品在线观看入口| 亚洲视频免费在线| 国产老肥熟一区二区三区| 欧美午夜精品久久久| 国产日本亚洲高清| 激情久久五月天| 在线播放国产精品二区一二区四区 | 国产精品午夜免费| 男人的j进女人的j一区| 色综合久久综合| 国产精品久久久久永久免费观看| 美女在线视频一区| 6080日韩午夜伦伦午夜伦| 亚洲欧洲韩国日本视频| 国产精品18久久久久久久网站| 91精品国产高清一区二区三区 | 国产呦萝稀缺另类资源| 欧美视频精品在线观看| 亚洲精品视频在线看| 国产91丝袜在线播放九色| 精品伦理精品一区| 麻豆精品一区二区av白丝在线| 在线中文字幕一区二区| 亚洲精品成人悠悠色影视| 99re这里只有精品视频首页| 国产精品日韩成人| 不卡视频免费播放| 国产精品欧美一级免费| 大胆亚洲人体视频| 国产精品动漫网站| 91影院在线免费观看| 中文字幕一区二区三区精华液 | 久久成人久久爱| 日韩欧美国产综合| 久久99九九99精品| 久久久91精品国产一区二区精品| 精品在线亚洲视频| 国产欧美精品日韩区二区麻豆天美| 国产一区二区三区观看| 国产亚洲精品bt天堂精选| 精品一区二区日韩| 日韩免费在线观看| 国产精品69久久久久水密桃| 日韩免费高清av| 精品一区二区三区在线观看| 欧美三级韩国三级日本三斤| 亚洲国产综合在线| 欧美视频在线播放| 婷婷中文字幕一区三区| 欧美精品第1页| 亚洲欧洲精品一区二区三区不卡 | 午夜电影网亚洲视频| 欧美亚洲日本一区| 亚洲成人av中文| 欧美日韩国产精品自在自线| 亚洲成va人在线观看| 欧美色大人视频| 日本一区中文字幕| 欧美xxxx老人做受| 国产91丝袜在线播放0| 成人免费在线视频观看| 欧美三级日本三级少妇99| 亚洲成人激情自拍| 亚洲国产精品国自产拍av| 不卡的av网站| 亚洲成av人在线观看| 日韩视频一区二区在线观看| 国产一区二区三区蝌蚪| 国产精品传媒入口麻豆| 欧美在线观看一二区| 男男成人高潮片免费网站| 亚洲精品在线网站| 在线观看视频91| 偷拍一区二区三区四区| 国产欧美精品一区二区色综合| 91麻豆国产香蕉久久精品| 日韩高清在线一区| 国产欧美日韩在线看| 日本电影亚洲天堂一区| 男男gaygay亚洲| 中文字幕亚洲成人| 欧美一区二区久久久| 国产精品夜夜嗨| 亚洲色图制服丝袜| 26uuu亚洲综合色欧美| av成人免费在线观看| 日韩不卡一区二区| 日韩一区中文字幕| 精品三级av在线| 欧洲亚洲国产日韩| 国产不卡视频一区二区三区| 国产精品理论片在线观看| 精品人在线二区三区| 91丨九色丨国产丨porny| 久久不见久久见中文字幕免费| 亚洲人成影院在线观看| 精品国产伦一区二区三区观看体验| 日本韩国欧美在线| 国产精品99久久久久久久vr| 亚洲成人7777| 亚洲综合清纯丝袜自拍| 亚洲精品在线电影| 欧美日韩精品免费| 91小视频免费观看| 国产二区国产一区在线观看| 日韩高清一级片| 亚洲午夜激情av| 国产精品网站一区| 精品成人一区二区三区| 欧美日韩高清一区二区不卡 | 国产激情91久久精品导航 | 日韩欧美123| 欧美久久一二区| 久久亚洲私人国产精品va媚药| 欧美在线不卡一区| 99久久婷婷国产精品综合| 国产精品亚洲成人| 精品一区二区在线视频| 亚洲视频图片小说| 国产精品美女视频| 国产精品美女久久久久久久久久久| 欧美第一区第二区| 日韩欧美激情在线| 欧美一区二区三区公司| 欧美无人高清视频在线观看| 91麻豆产精品久久久久久| 色综合久久天天| 99久久婷婷国产精品综合| 精品制服美女久久| 国产在线一区二区| 国产激情一区二区三区四区| 麻豆精品在线观看| 国产久卡久卡久卡久卡视频精品| 另类小说欧美激情| 国产一区二区按摩在线观看| 经典三级视频一区| 国产成人欧美日韩在线电影| 国产精品一区二区91| 一本色道久久综合亚洲精品按摩| 91久久线看在观草草青青| 91传媒视频在线播放| 欧美日韩在线播放一区| 欧美一卡二卡在线| 久久午夜电影网| 中文字幕的久久| √…a在线天堂一区| 一区二区三区蜜桃网| 国产日本亚洲高清| 亚洲资源中文字幕| 七七婷婷婷婷精品国产| 国产乱码字幕精品高清av| 成人免费的视频| 欧美亚洲综合色| 国产亚洲成aⅴ人片在线观看| 国产精品不卡在线| 天天综合天天做天天综合| 激情综合网最新| 91丝袜国产在线播放| 国产精品女上位| 亚洲一区二区高清| 国产精品99久久久久久似苏梦涵| 91色婷婷久久久久合中文| 欧美高清一级片在线| 精品国产免费一区二区三区四区| 国产日韩精品一区| 亚洲aⅴ怡春院| 国产精品系列在线观看| 成人av在线影院| 亚洲精品在线观看网站| 亚洲免费观看高清完整版在线观看| 人人精品人人爱| 成人综合激情网| 欧美一区二区在线视频| 18欧美乱大交hd1984| 亚洲成av人片一区二区| 色综合激情五月| 久久免费国产精品| 亚洲丝袜另类动漫二区| 久久99精品一区二区三区三区| 色噜噜狠狠色综合中国| 久久精品亚洲麻豆av一区二区 | 欧美一区二区在线不卡| 国产三级一区二区| 日韩成人午夜精品| 91麻豆国产香蕉久久精品| 欧美精品一区二区三| 依依成人精品视频| 91视频观看免费| 中文字幕第一区第二区| 国产一区二区女| 91麻豆精品91久久久久久清纯| 亚洲日本韩国一区| 国产成人综合网| xvideos.蜜桃一区二区|