ICTCLAS30.h
上传用户:dfahe421ef
上传日期:2021-11-07
资源大小:12279k
文件大小:11k
源码类别:

词法分析

开发平台:

Visual C++

  1. /****************************************************************************
  2.  *
  3.  * Copyrig_ht (c) 2001-2006
  4.  *     Institute of Computing Tech.
  5.  *     Chinese Academy of Sciences
  6.  *     All rights reserved.
  7.  *
  8.  * This file is the confidential and proprietary property of 
  9.  * Institute of Computing_ Tech. and the possession or use of this file requires 
  10.  * a written license from the author.
  11.  * Filename: 
  12.  * Abstract:
  13.  *            ICTCLAS30.h: definition of the ICTCLAS30
  14.  * Author:   Kevin Zhang_ 
  15.  *          (zhang_hp@software.ict.ac.cn)
  16.  * Date:     2005-12-27
  17.  *
  18.  * Notes:
  19.  *                
  20.  ****************************************************************************/
  21. #if !defined(__ICTCLAS_LIB_INCLUDED__)
  22. #define __ICTCLAS_LIB_INCLUDED__
  23. #ifdef OS_LINUX
  24. #define ICTCLAS_API 
  25. #else
  26. #ifdef ICTCLAS_EXPORTS
  27. #define ICTCLAS_API extern "C" __declspec(dllexport)
  28. #else
  29. #define ICTCLAS_API extern "C"
  30. #endif
  31. #endif
  32. //#define ICTCLAS_API extern "C"  __declspec(dllexport)
  33. #define ICTCLAS_DEBUG
  34. #define POS_MAP_NUMBER 4 //add by qp 2008.11.25
  35. #define ICT_POS_MAP_FIRST 1  //计算所一级标注集
  36. #define ICT_POS_MAP_SECOND 0 //计算所二级标注集
  37. #define  PKU_POS_MAP_SECOND 2 //北大二级标注集
  38. #define PKU_POS_MAP_FIRST 3 //北大一级标注集
  39. #define  POS_SIZE 8
  40. struct result_t{
  41.   int start; //start position,词语在输入句子中的开始位置
  42.   int length; //length,词语的长度
  43.   char  sPOS[POS_SIZE];//word type,词性ID值,可以快速的获取词性表
  44.   int iPOS;
  45.   int word_ID; //如果是未登录词,设成0或者-1
  46.   int word_type; //add by qp 2008.10.29 区分用户词典;1,是用户词典中的词;0,非用户词典中的词
  47.   int weight;//add by qp 2008.11.17 word weight
  48.  };
  49. /*********************************************************************
  50.  *
  51.  *  Func Name  : Init
  52.  *
  53.  *  Description: Init ICTCLAS30
  54.  *              The function must be invoked before any operation listed as following
  55.  *
  56.  *  Parameters : const char * sInitDirPath=NULL
  57.  *       sInitDirPath: Initial Directory Path, where file Configure.xml and Data directory stored.
  58.  * the default value is NULL, it indicates the initial directory is current working directory path
  59.  *
  60.  *  Returns    : success or fail
  61.  *  Author     : Kevin Zhang  
  62.  *  History    : 
  63.  *              1.create 2002-8-6
  64.  *********************************************************************/
  65. ICTCLAS_API bool ICTCLAS_Init(const char * sInitDirPath=0);
  66. /*********************************************************************
  67.  *
  68.  *  Func Name  : ICTCLAS_Exit
  69.  *
  70.  *  Description: Exist ICTCLAS30 and free related buffer
  71.  *              Exit the program and free memory
  72.  *The function must be invoked while you needn't any lexical anlysis
  73.  *
  74.  *  Parameters : None
  75.  *
  76.  *  Returns    : success or fail
  77.  *  Author     : Kevin Zhang  
  78.  *  History    : 
  79.  *              1.create 2002-8-6
  80.  *********************************************************************/
  81. ICTCLAS_API bool ICTCLAS_Exit();
  82. /*********************************************************************
  83.  *
  84.  *  Func Name  : ImportUserDict
  85.  *
  86.  *  Description: Import User-defined dictionary
  87.  *  Parameters : Text filename for user dictionary 
  88.  *  Returns    : The  number of  lexical entry imported successfully
  89.  *  Author     : Kevin Zhang
  90.  *  History    : 
  91.  *              1.create 2003-11-28
  92.  *********************************************************************/
  93. ICTCLAS_API unsigned int ICTCLAS_ImportUserDict(const char *sFilename);
  94. /*********************************************************************
  95.  *
  96.  *  Func Name  : ParagraphProcessing
  97.  *
  98.  *  Description: Process a paragraph
  99.  *    
  100.  *
  101.  *  Parameters : sParagraph: The source paragraph 
  102.  *               sResult: The result
  103.  *  bPOStagged:Judge whether need POS tagging, 0 for no tag;default:1
  104.  *  i.e.  张华平于1978年3月9日出生于江西省波阳县。
  105.  *        Result: 张/nr  华平/nr  于/p  1978年/t  3月/t  9日/t  出生于/v  江西省/ns  波阳县/ns  。/w   
  106.  *  Returns    : the result buffer pointer 
  107.  *
  108.  *  Author     : Kevin Zhang  
  109.  *  History    : 
  110.  *              1.create 2003-12-22
  111.  *********************************************************************/
  112. ICTCLAS_API const char * ICTCLAS_ParagraphProcess(const char *sParagraph,int bPOStagged=1);
  113. /*********************************************************************
  114.  *
  115.  *  Func Name  : ParagraphProcessingA
  116.  *
  117.  *  Description: Process a paragraph
  118.  *    
  119.  *
  120.  *  Parameters : sParagraph: The source paragraph 
  121.  *               pResultCount: pointer to result vector size
  122.  *  Returns    : the pointer of result vector, it is managed by system,user cannot alloc and free it 
  123.  *  Author     :  
  124.  *  History    : 
  125.  *              1.create 2006-10-26
  126.  *********************************************************************/
  127. ICTCLAS_API const result_t * ICTCLAS_ParagraphProcessA(const char *sParagraph,int *pResultCount);
  128. /*********************************************************************
  129.  *
  130.  *  Func Name  : ICTCLAS_GetParagraphProcessAWordCount
  131.  *
  132.  *  Description: Get ProcessAWordCount, API for C#
  133.  *    
  134.  *
  135.  *  Parameters : sParagraph: The source paragraph 
  136.  *               pResultCount: pointer to result vector size
  137.  *  Returns    : the pointer of result vector, it is managed by system,user cannot alloc and free it 
  138.  *  Author     :  
  139.  *  History    : 
  140.  *              1.create 2007-3-15
  141.  *********************************************************************/
  142. ICTCLAS_API int ICTCLAS_GetParagraphProcessAWordCount(const char *sParagraph);
  143. /*********************************************************************
  144.  *
  145.  *  Func Name  : ICTCLAS_ParagraphProcessAW
  146.  *
  147.  *  Description: Process a paragraph, API for C#
  148.  *    
  149.  *
  150.  *  Parameters : sParagraph: The source paragraph 
  151.  *               pResultCount: pointer to result vector size
  152.  *  Returns    : the pointer of result vector, it is managed by system,user cannot alloc and free it 
  153.  *  Author     :  
  154.  *  History    : 
  155.  *              1.create 2007-3-15
  156.  *********************************************************************/
  157. ICTCLAS_API void ICTCLAS_ParagraphProcessAW(int nCount,result_t * result);
  158. /*********************************************************************
  159.  *
  160.  *  Func Name  : ICTCLAS_FileProcess
  161.  *
  162.  *  Description: Process a text file
  163.  *    
  164.  *
  165.  *  Parameters : sSourceFilename: The source file name  
  166.  *               sResultFilename: The result file name 
  167.  *  bPOStagged:Judge whether need POS tagging, 0 for no tag;default:1
  168.  *  i.e. FileProcess("E:\Sample\Corpus_NewPOS\199802_Org.txt","E:\Sample\Corpus_NewPOS\199802_Org_cla.txt");
  169.  *  Returns    : success: 
  170.  *               fail: 
  171.  *  Author     : Kevin Zhang  
  172.  *  History    : 
  173.  *              1.create 2005-11-22
  174.  *********************************************************************/
  175. ICTCLAS_API double ICTCLAS_FileProcess(const char *sSourceFilename,const char *sResultFilename,int bPOStagged=1);
  176. /*********************************************************************
  177.  *
  178.  *  Func Name  : ICTCLAS_FileProcessEx
  179.  *
  180.  *  Description: Process a text file
  181.  *               (string,frequency) sort by frequency
  182.  *
  183.  *  Parameters : sSourceFilename: The source file name  
  184.  *               sResultFilename: The result file name 
  185.  *  i.e. FileProcess("E:\Sample\Corpus_NewPOS\199802_Org.txt","E:\Sample\Corpus_NewPOS\199802_Org_cla.txt");
  186.  *  Returns    : success: 
  187.  *               fail: 
  188.  *  Author     : Kevin Zhang  
  189.  *  History    : 
  190.  *              1.create 2007-04-07
  191.  *********************************************************************/
  192. ICTCLAS_API double ICTCLAS_FileProcessEx(const char *sSourceFilename,const char *sResultFilename);
  193. /*********************************************************************
  194. *
  195. *  Func Name  : ICTCLAS_AddUserWord
  196. *
  197. *  Description: add a word to the user dictionary ,example:你好
  198. *  i3s n
  199. *
  200. *  Parameters : sFilename: file name
  201. *               
  202. *  Returns    : 1,true ; 0,false
  203. *
  204. *  Author     :   
  205. *  History    : 
  206. *              1.create 11:10:2008
  207. *********************************************************************/
  208. ICTCLAS_API int ICTCLAS_AddUserWord(const char *sWord);//add by qp 2008.11.10
  209. /*********************************************************************
  210. *
  211. *  Func Name  : Save
  212. *
  213. *  Description: Save dictionary to file
  214. *
  215. *  Parameters :
  216. *               
  217. *  Returns    : 1,true; 2,false
  218. *
  219. *  Author     :   
  220. *  History    : 
  221. *              1.create 11:10:2008
  222. *********************************************************************/
  223. ICTCLAS_API int ICTCLAS_SaveTheUsrDic();
  224. /*********************************************************************
  225. *
  226. *  Func Name  : ICTCLAS_DelUsrWord
  227. *
  228. *  Description: delete a word from the  user dictionary
  229. *
  230. *  Parameters : 
  231. *  Returns    : -1, the word not exist in the user dictionary; else, the handle of the word deleted
  232. *
  233. *  Author     :   
  234. *  History    : 
  235. *              1.create 11:10:2008
  236. *********************************************************************/
  237. ICTCLAS_API int ICTCLAS_DelUsrWord(const char *sWord);
  238. /*********************************************************************
  239. *
  240. *  Func Name  : ICTCLAS_KeyWord
  241. *
  242. *  Description: Extract keyword from paragraph
  243. *
  244. *  Parameters : resultKey, the returned key word 
  245. nCountKey, the returned key num
  246. *  Returns    : 0, failed; else, 1, successe
  247. *
  248. *  Author     :   
  249. *  History    : 
  250. *              1.create 11:10:2008
  251. *********************************************************************/
  252. ICTCLAS_API int ICTCLAS_KeyWord(result_t * resultKey, int &nCountKey);
  253. /*********************************************************************
  254. *
  255. *  Func Name  : ICTCLAS_FingerPrint
  256. *
  257. *  Description: Extract a finger print from the paragraph
  258. *
  259. *  Parameters :
  260. *  Returns    : 0, failed; else, the finger print of the content
  261. *
  262. *  Author     :   
  263. *  History    : 
  264. *              1.create 11:10:2008
  265. *********************************************************************/
  266. ICTCLAS_API unsigned long ICTCLAS_FingerPrint();
  267. /*********************************************************************
  268. *
  269. *  Func Name  : ICTCLAS_SetPOSmap
  270. *
  271. *  Description: select which pos map will use
  272. *
  273. *  Parameters :nPOSmap, ICT_POS_MAP_FIRST  计算所一级标注集
  274. ICT_POS_MAP_SECOND  计算所二级标注集
  275. PKU_POS_MAP_SECOND   北大二级标注集
  276. PKU_POS_MAP_FIRST    北大一级标注集
  277. *  Returns    : 0, failed; else, success
  278. *
  279. *  Author     :   
  280. *  History    : 
  281. *              1.create 11:10:2008
  282. *********************************************************************/
  283. ICTCLAS_API int ICTCLAS_SetPOSmap(int nPOSmap);
  284. /*********************************************************************
  285. *
  286. *  class CICTCLAS30
  287. *   描述:
  288. *    ICTCLAS30 类,使用之前必须调用ICTCLAS_Init(),退出必须调用ICTCLAS_Exit
  289. *    在使用过程中可以使用多份CICTCLAS30,支持多线程分词处理
  290. *
  291. *  History    : 
  292. *              1.create 2005-11-10
  293. *********************************************************************/
  294. #ifdef OS_LINUX
  295. class  CICTCLAS30 {
  296. #else
  297. class  __declspec(dllexport) CICTCLAS30 {
  298. #endif
  299. public:
  300. CICTCLAS30();
  301. ~CICTCLAS30();
  302. bool FileProcess(const char *sSourceFilename,const char *sResultFilename,int bPOStagged=1);
  303. //Process a file,类似于C下的ICTCLAS_FileProcess
  304. const char * ParagraphProcess(const char *sLine,int bPOStagged=1); 
  305. //Process a file,类似于C下的ICTCLAS_FileProcess
  306. private:
  307. unsigned int m_nHandle;//该成员作为该类的Handle值,有系统自动分配,用户不可修改
  308. };
  309. #endif//#define __ICTCLAS_LIB_INCLUDED__