Span.h
上传用户:chen_dj
上传日期:2013-04-22
资源大小:111k
文件大小:3k
源码类别:

多国语言处理

开发平台:

C/C++

  1. /****************************************************************************
  2.  *
  3.  * Copyright (c) 2000, 2001 
  4.  *     Machine Group
  5.  *     Software Research Lab.
  6.  *     Institute of Computing Tech.
  7.  *     Chinese Academy of Sciences
  8.  *     All rights reserved.
  9.  *
  10.  * This file is the confidential and proprietary property of 
  11.  * Institute of Computing Tech. and the posession or use of this file requires 
  12.  * a written license from the author.
  13.  * Filename: Span.h: 
  14.  * Abstract:
  15.  *          interface for the CSpan class.
  16.  * Author:   Kevin Zhang 
  17.  *          (zhanghp@software.ict.ac.cn)
  18.  * Date:     2002-4-23
  19.  *
  20.  * Notes:    Tagging with Hidden Markov Model
  21.  *                
  22.  ****************************************************************************/
  23. #if !defined(AFX_SPAN_H__178113DA_8D45_4D47_B6DA_CB62C001BC35__INCLUDED_)
  24. #define AFX_SPAN_H__178113DA_8D45_4D47_B6DA_CB62C001BC35__INCLUDED_
  25. #if _MSC_VER > 1000
  26. #pragma once
  27. #endif // _MSC_VER > 1000
  28. #include "..\Utility\Dictionary.h"
  29. #include "..\Utility\ContextStat.h"
  30. #include "..\Segment\DynamicArray.h"
  31. #define MAX_WORDS_PER_SENTENCE 120
  32. #define MAX_UNKNOWN_PER_SENTENCE 200
  33. #define MAX_POS_PER_WORD 20
  34. #define LITTLE_FREQUENCY 6
  35. enum TAG_TYPE{
  36. TT_NORMAL,
  37. TT_PERSON,
  38. TT_PLACE,
  39. TT_TRANS
  40. };
  41. class CSpan  
  42. {
  43. public:
  44. bool TransRecognize(CDictionary &dictCore,CDictionary &transDict);
  45. bool PlaceRecognize(CDictionary &dictCore,CDictionary &placeDict);
  46. bool PersonRecognize(CDictionary &personDict);
  47. bool POSTagging(PWORD_RESULT pWordItems,CDictionary &dictCore,CDictionary &dictUnknown);
  48. //POS tagging with Hidden Markov Model
  49. void SetTagType(enum TAG_TYPE nType=TT_NORMAL);
  50. //Set the tag type
  51. bool LoadContext(char *sFilename);
  52. CSpan();//CDictionary &dict
  53. virtual ~CSpan();
  54. int m_nUnknownIndex;
  55. //The number of unknown word
  56. int m_nUnknownWords[MAX_UNKNOWN_PER_SENTENCE][2];
  57. //The start and ending possition of unknown position
  58. ELEMENT_TYPE m_dWordsPossibility[MAX_UNKNOWN_PER_SENTENCE];
  59. //The possibility of unknown words
  60. CContextStat m_context;//context
  61. protected:
  62. ELEMENT_TYPE  ComputePossibility(int nStartPos,int nLength,CDictionary &dict);
  63. int GetFrom(PWORD_RESULT pWordItems,int nIndex,CDictionary &dictCore,CDictionary &dictUnknown);
  64. //Get words from the word items, start from nIndex, Function for unknown words recognition
  65. bool GuessPOS(int nIndex,int *pSubIndex);
  66. bool GetBestPOS();
  67. bool Reset(bool bContinue=true);
  68. bool UnknownMatch();
  69. bool SplitPersonPOS(CDictionary &unlistDict);
  70. bool Disamb();
  71. private:
  72. enum TAG_TYPE m_tagType;//The type of tagging
  73. int m_nStartPos;
  74. int m_nBestTag[MAX_WORDS_PER_SENTENCE];
  75. //Record the Best Tag
  76. char m_sWords[MAX_WORDS_PER_SENTENCE][WORD_MAXLENGTH];
  77. int m_nWordPosition[MAX_WORDS_PER_SENTENCE];
  78. int m_nTags[MAX_WORDS_PER_SENTENCE][MAX_POS_PER_WORD];
  79. char m_nBestPrev[MAX_WORDS_PER_SENTENCE][MAX_POS_PER_WORD];
  80. char m_nCurLength;
  81. double m_dFrequency[MAX_WORDS_PER_SENTENCE][MAX_POS_PER_WORD];
  82. };
  83. #endif // !defined(AFX_SPAN_H__178113DA_8D45_4D47_B6DA_CB62C001BC35__INCLUDED_)