DynamicArray.h
上传用户:yxl0916
上传日期:2007-05-25
资源大小:2245k
文件大小:3k
源码类别:

多国语言处理

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////
  2. //ICTCLAS简介:计算所汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),
  3. //             功能有:中文分词;词性标注;未登录词识别。
  4. //             分词正确率高达97.58%(973专家评测结果),
  5. //             未登录词识别召回率均高于90%,其中中国人名的识别召回率接近98%;
  6. //             处理速度为31.5Kbytes/s。
  7. //著作权:  Copyright?2002-2005中科院计算所 职务著作权人:张华平 刘群
  8. //遵循协议:自然语言处理开放资源许可证1.0
  9. //Email: zhanghp@software.ict.ac.cn
  10. //Homepage:www.nlp.org.cn;mtgroup.ict.ac.cn
  11. /****************************************************************************
  12.  *
  13.  * Copyright (c) 2000, 2001 
  14.  *     Software Research Lab.
  15.  *     Institute of Computing Tech.
  16.  *     Chinese Academy of Sciences
  17.  *     All rights reserved.
  18.  *
  19.  * This file is the confidential and proprietary property of 
  20.  * Institute of Computing Tech. and the posession or use of this file requires 
  21.  * a written license from the author.
  22.  *
  23.  * Abstract:
  24.  *           Dynamic array, and the array is generally great and sparse.
  25.  *           Dynamic Array Definition 
  26.  * Author: Kevin Chang (zhanghp@software.ict.ac.cn)
  27.  *
  28.  * Notes:
  29.  *                
  30.  * 
  31.  ****************************************************************************/
  32. // DynamicArray.h: interface for the CDynamicArray class.
  33. //
  34. //////////////////////////////////////////////////////////////////////
  35. #if !defined(AFX_DYNAMICARRAY_H__C47E8C64_17A2_467F_8094_1DFDCC39A943__INCLUDED_)
  36. #define AFX_DYNAMICARRAY_H__C47E8C64_17A2_467F_8094_1DFDCC39A943__INCLUDED_
  37. #if _MSC_VER > 1000
  38. #pragma once
  39. #endif // _MSC_VER > 1000
  40. #define MIN_PROBLEM 1
  41. #if MIN_PROBLEM==1//The shortest path
  42. #define INFINITE_VALUE 10000.00//infinite value
  43. #else//The longest path
  44. #define INFINITE_VALUE 0.00//infinite value
  45. #endif
  46. #define ELEMENT_TYPE double//the type of element
  47. //#define ROW_FIRST 0//Row first in the array store
  48. struct tagArrayChain{
  49. unsigned int col,row;//row and column
  50.     ELEMENT_TYPE value;//The value of the array
  51. int nPOS;
  52. int nWordLen;
  53. char *sWord;
  54. //The possible POS of the word related to the segmentation graph
  55.     struct tagArrayChain *next;
  56. };
  57. typedef struct tagArrayChain ARRAY_CHAIN,*PARRAY_CHAIN;
  58. class CDynamicArray  
  59. {
  60. public:
  61. bool SetRowFirst(bool RowFirst=true);
  62. unsigned int GetTail(PARRAY_CHAIN *pTailRet);
  63. //Get the tail Element buffer and return the count of elements
  64. PARRAY_CHAIN GetHead();
  65. //Get the head Element
  66. bool GetElement(int nRow, int nCol,ELEMENT_TYPE  *pRetValue,int *pRetPOS=0,char *sRetWord=0);
  67. void SetEmpty();
  68. CDynamicArray(bool bRowFirst=false);
  69. virtual ~CDynamicArray();
  70. const CDynamicArray & operator =(const CDynamicArray &);
  71. bool operator ==(const CDynamicArray &array);
  72. ELEMENT_TYPE GetElement( int nRow, int nCol,PARRAY_CHAIN pStart=0,PARRAY_CHAIN *pRet=0);
  73. int SetElement(unsigned int nRow, unsigned int nCol, ELEMENT_TYPE fValue,int nPOS,char *sWord=0);
  74. unsigned int m_nCol,m_nRow;//The row and col of the array
  75. bool m_bRowFirst;
  76. private:
  77.     PARRAY_CHAIN m_pHead;//The head pointer of array chain
  78. };
  79. #endif // !defined(AFX_DYNAMICARRAY_H__C47E8C64_17A2_467F_8094_1DFDCC39A943__INCLUDED_)