⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diction.h

📁 计算机英汉机器翻译系统中的英语词性标注方法实现
💻 H
📖 第 1 页 / 共 2 页
字号:
	int m_nChinNum;
	DictChin *m_pFirstChin;
	DictChin *AppendEmptyChin(); // 在m_pFirstChin的尾部追加一个空的
								 // DictChin结点,返回新添加的结点的指针
	DictChin *GetPointedChin(int nPointedIndex);
	void DeletePointedChin(int nPointedIndex);

//LXHBegin
	//char	lxh_m_pszOrig[20]; // 原形,临时
	int	m_byMaxPhraseLen;	//如果 m_pszEnglish为一个单词,
							// 记录短语第一个为该词的短语最大长度
	int	m_byForm;	
	/*
	0:original,
	1:-ed1,2:ed2,3:-ing,4:-s,5:ed1,ed2; 6; er;7;est;	
	8: 待定 is or has;9: 待定 would or had 10: unknown word,	
	11:number
	*/
	//int		m_byDe;		//1:所有格
	LPSTR	m_nLxhCate;
	int		m_nLxhCateLen;
	BYTE	m_byGenetive;	//1:所有格
	int		m_byNumber;	//0:单数,	1:复数
	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:复数
//LXHEnd


//CDQBegin
	LPSTR		m_pszPostag;		//统计算法词性标注结果
	LPSTR		m_pszBaseNPtag;		//BaseNP标注结果
//CDQEnd

//xunedBegin
	DictNode();
	~DictNode();
	DictChin*	m_pCurrSele;		//当前完成译文选择的词典一行		
	LPSTR		m_pszTranslation;	//生成或选择后的译文
	int			m_nTranslationLen;
	LPSTR		m_pszParseRule;		//分析数的中间结点的分析规则
	int			m_nParseRule;	   	
	LPSTR		m_pszTransferRule;	//分析数的中间结点的转换生成规则
	int			m_nTransferRule;
	LPSTR		m_pszDynamicInfo;	//翻译过程中动态生成的信息
	int			m_nDynamicInfo;
	BOOL		m_bIsSentBegin;		//当前结点是否为句子头
	BOOL		m_bIsSentEnd;		//当前结点是否为句子尾
	BOOL		m_bIsLeafNode;		//当前结点是否为分析树的叶结点
	DictNode*	m_pChild;			//当前结点的儿子结点
	DictNode*	m_pParent;			//当前结点的父亲结点
	DictNode*	m_pLeftBrother;		//当前结点的左兄弟结点
	DictNode*	m_pRightBrother;	//当前结点的右兄弟结点
	DictNode*	m_pLeftCousin;		//当前结点的左堂兄弟结点
	DictNode*	m_pRightCousin;		//当前结点的右堂兄弟结点
//xunedEnd

} DictNode;


/*class CTranRule{
public:
	CTranRule();
	~CTranRule();

	LPSTR m_pszTranRule; // 规则 #VP-->vd NP THCL
	int m_nTranRuleLen; // 规则长度
	
	// 注:m_pszAttrTrans,m_pszRuleRestr,m_pszProdRuleLeft并非完全由
	// 字符串组成,中间可能会出现字符串结束符'\0',因此判断长度
	// 请用m_nAttrTransLen,复制用memcpy等.
	LPSTR m_pszAttrTrans; // 属性传递 @ F=0
	int m_nAttrTransLen; // 属性传递长度
	
	LPSTR m_pszRuleRestr; // 规则限制 $ 1:Head=Human | 1:Head=Orgnz
	int m_nRuleRestr; // 规则限制长度
	
	LPSTR m_pszAttrRestr; // 属性约束 % SD: !C=qm & SB: C=be
	int m_nAttrRestrLen; // 属性约束长度
	
	//^2:Head=Human-->2:*+1:*+I:干什么的
	LPSTR m_pszProdRuleLeft; // 生成规则左部 ^2:Head=Human
	int m_nProdRuleLeftLen; // 生成规则左部长度
	
	LPSTR m_pszProdRuleRight; // 生成规则右部 ^-->0:+1:*+2:就是这样
	int m_nProdRuleRightLen; // 生成规则右部长度
};
*/
class DictSearch
{
public:
	DictSearch();
	~DictSearch();
	
	DictNode *m_pDictNode;
	//yys 98.5.26 Bgn
//qlp delete
	/*	Dictionary *m_obDiction;
	Dictionary *m_obSysDiction;		//系统词典数据
	Dictionary *m_obAddtionDiction;	//系统附加词典数据
	Dictionary *m_obUserDiction;	//用户词典数据
	*/
	FILE *m_fpIndexDat;
/*	FILE *m_fpSysIndexDat;			//系统词典索引
	FILE *m_fpAddtionIndexDat;		//系统附加词典索引
	FILE *m_fpUserIndexDat;			//用户词典索引
*/	
	BOOL bSearchSysDict;			//是否搜索系统词典
	BOOL bSearchUserDict;			//是否搜索用户词典
	BOOL bHaveAllocMemory ;			//是否已经为m_pszSys/UserHashTable分配过内存
	char szUserDictName[255];		//用户词典名
	
	//yys 98.5.26 End
	
	//CHuffman m_Huffman;
	
	// Debug Use
	FILE *m_fpSearchWord;

	int m_narrayDector[BYTES_BIT_NUM+1];
	int m_nHashTableOffset; // HASH表的偏移地址
//	int m_nHashTableSize; // HASH表的长度(以BIT为单位)
	LPSTR m_pszHashTable;
//qlp delete 5.27
	/*
	LPSTR m_pszSysHashTable;
	LPSTR m_pszAddtionHashTable;
	LPSTR m_pszUserHashTable;
*/
	// Debug Use variables Begin
	int m_nSameHushWordsNum; // 具有相同HASH值的单词数
	// Debug Use variables End
protected:
	int FillChin(DictChin *pCurrChin,LPSTR pszWordInfo);
	void FillNode(LPSTR pszWordInfo,int nWordInfoLen);
	void InitNode();

public:
	//yys 98.5.26 Bgn	
	//获取用户词典文件名
	BOOL GetUserIndexName( char *szUserDictName );
	FILE *OpenIndex( char *pszDicIndexName );
	//初始化词典
	Dictionary *DictInit( LPSTR pszDicIndexName , 
						  FILE *m_fpIndexDat );

	BOOL InitUserDict( char *szUserDict );
	BOOL UserDictExit();
	//yys 98.5.26 End
	
	BOOL SearchWordInit(LPSTR pszDicIndexName,
						LPSTR pszHuffmanFreqDataName);
	void SearchWordExit();
	void FreeNode(DictNode *pDictNode);
	DictNode *SearchWord(LPCSTR pszEnglishWord,int nSearchCondi);
	DictNode *SearchWord(LPCSTR pszEnglishWord);
	BOOL UpdateWordInfo(LPCSTR pszEnglishWord,LPSTR pszWordInfo,
						int nWordInfoLen);
/*	void FillRule(CTranRule *pTranRule,LPSTR pszWordInfo);
	CTranRule *SearchRuleCore(LPSTR pszRuleKeyword,int nRuleKeywordLen);
	CTranRule *SearchRule(int nRuleNum);
	CTranRule *SearchRule(LPSTR pszRuleRight,int nRuleRightLen);
	// 解码词典
	//nMethor = 1系统/2附加/3用户   by YYS 98.7.21
*/	BOOL DumpTotalDictToFile(FILE *fpOutDic,SlotDecode *pSlotDecode,int nMethor);
	BOOL OutputNodeToFile(FILE *fpOutDic,SlotDecode *pSlotDecode);

	void SetHashTableValue(LPCSTR pszKeyword);
	BOOL HashFindPossible(LPCSTR pszKeyword);
	inline UINT HashKey(LPCSTR pszKeyword,UINT nHashLen) const;
	void SetHableTableSize();
	BOOL AllocHashTableMemory();
	void FreeHashTableMemory();
	BOOL CreateSingleDictHashTable(LPSTR pszDictName);
	//yys 98.5.14 Bgn
	//添加一个形参szDicName
	BOOL CreateHashTableAndAddToDat(FILE *fpIndexDat,DictHeader &phHead,char *szDicName);
	//yys 98.5.14 End
	BOOL LoadHushTable();
	//yys 98.5.14 Bgn
	//添加一个形参m_fpUserIndexDat
	int LoadSysHushTableFromIndexDat(FILE *fpSysIndexDat,FILE *fpAddtionIndexDat);
	BOOL LoadUserHushTableFromIndexDat(FILE *fpUserIndexDat);
	//添加一个形参szDicName
	BOOL CreateHashTable(char *szDicName);
	//yys 98.5.14 End
	BOOL HashFindInit(DictHeader dictHead);
	void HashFindExit();
};

extern LPSTR myfgets(LPSTR pszString,int n,FILE *fp);
extern long WriteIndexData(FILE *fpIndexDat,LPCTSTR pszIndexData,
						   int nLen);
extern void ReadIndexData(FILE *fpIndexDat,LPSTR pszIndexData,
						  long lOffset,int nLen);
extern void CompressIndexOffsetInfo(long lOffset,int nLen,
									LPSTR pszTarOffset);
extern void DecompressIndexOffsetInfo(LPSTR pszSouOffset,long &lOffset,int &nLen);
//yys 98.5.18 Bgn
extern BOOL BuildUserIndex(char *szUserDicName , char *szDicIndexName);
//yys 98.5.18 End
// yys 98.5.14 Bgn
// 加入一个形式参数 szDicName  
extern BOOL BuildIndexStepOne(LPSTR pszInDefineName,LPSTR pszOutDefineName,
				LPSTR pszDicIndexName,LPSTR pszEngInfoName,LPSTR pszCodeTable,
				char *szDicName);
// yys 98.5.14 End

extern BOOL BuildIndexStepTwo(LPSTR pszEngInfoName,
							  LPSTR pszHuffmanFreqDataName,
							  LPSTR pszEngHuffName);
//yys 98.5.14 Bgn
// 加入一个形式参数 szDicName  
extern BOOL BuildIndexStepThree(LPSTR pszEngHuffName,
								LPSTR pszDicIndexName,
								char *szDicName);
//yys 98.5.14 End
extern void DecodeWordRule(LPSTR pszCodedRule,LPSTR pszOrgRule);
extern void EncodeWordRule(LPCSTR pszSouCode,LPSTR pszTarCode,
						   int &nTarCodeLen);
extern BOOL DumpDict(LPSTR pszOutDictName,int nMethor);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -