SharpICTCLASè½è¯´æ¯å¼æºçï¼ä½07年以å就没æ人åè¿è¡ç»´æ¤ï¼è·æççè¯æé®é¢ä¸å°ï¼å°±è¿C#çæ¬çä½è ä¹æ¿è®¤æä¸å°é®é¢ã
ããå³æ¶é讯软件 æ³å¾å°æ´ä¸ºåç¡®çåè¯ç»æï¼è¿æ¯ç 究SharpICTCLAS3.0ï¼ä¹å°±æ¯ICTCLAS 2009çãdll æ件ä¸æ¯C#å¼åçï¼æ以å¼å ¥è¦éè¿DllImport
ããå èªå·±åäºä¸ªç±»
ãã代ç
ããusing System;
ããusing System.Collections.Generic;
ããusing System.Text;
ããusing System.Runtime.InteropServices;
ããnamespace test
ãã{
ãã[StructLayout(LayoutKind.Explicit)]
ããpublic struct result_t
ãã{
ãã[FieldOffset(0)]
ããpublic int start;
ãã[FieldOffset(4)]
ããpublic int length;
ãã[FieldOffset(8)]
ããpublic int sPos;
ãã[FieldOffset(12)]
ããpublic int sPosLow;
ãã[FieldOffset(16)]
ããpublic int POS_id;
ãã[FieldOffset(20)]
ããpublic int word_ID;
ãã[FieldOffset(24)]
ããpublic int word_type;
ãã[FieldOffset(28)]
ããpublic int weight;
ãã}
ããclass ICTCLAS30
ãã{
ããconst string path = @"ICTCLAS30.dll";
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Init")]
ããpublic static extern bool Init(String sInitDirPath);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcess")]
ããpublic static extern String ParagraphProcess(String sParagraph, int bPOStagged);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Exit")]
ããpublic static extern bool Exit();
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ImportUserDict")]
ããpublic static extern int ImportUserDict(String sFilename);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_FileProcess")]
ããpublic static extern bool FileProcess(String sSrcFilename, String sDestFilename, int bPOStagged);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_FileProcessEx")]
ããpublic static extern bool FileProcessEx(String sSrcFilename, String sDestFilename);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_GetParagraphProcessAWordCount")]
ããpublic static extern int GetParagraphProcessAWordCount(String sParagraph);
ãã//ICTCLAS_GetParagraphProcessAWordCount
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcessAW")]
ããpublic static extern void ParagraphProcessAW(int nCount, [Out, MarshalAs(UnmanagedType.LPArray)] result_t[] result);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_AddUserWord")]
ããpublic static extern int AddUserWord(String sWord);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_SaveTheUsrDic")]
ããpublic static extern int SaveTheUsrDic();
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_DelUsrWord")]
ããstatic extern int DelUsrWord(String sWord);
ããpublic ICTCLAS30()
ãã{
ãã}
ãã}
ãã}
ããè°ç¨ï¼
ãã代ç
ããif (!ICTCLAS30.Init(null))
ãã{
ããSystem.Console.WriteLine("Init ICTCLAS failed!");
ããreturn;
ãã}
ããSystem.Console.WriteLine("Init ICTCLAS Success!");
ããString pResult;
ããpResult = ICTCLAS30.ParagraphProcess("ç¹å»ä¸è½½è¶ 女纪æ佳深åè§ä¼åç±ã禽æµæçåå¨éå ¸ä¹åã", 1);
ããSystem.Console.WriteLine(pResult);
ããICTCLAS30.Exit();
ãã注ï¼
ãã使ç¨çæ¶åæICTCLAS30.dllï¼Configure.xmlåDataæ件夹copyå°ç¨åºexeè¿è¡çä½ç½®ï¼å¦åéè¦å¶å®ä»ä»¬çä½ç½®ã
ããå¦ä½æpResultæææ¨å¤©åæéçwordResultæ ¼å¼è¿æ¯ä¸ªé®é¢ãè¿éè¦å¥½å¥½ç 究www.qichepeijian.comãããã
ããéä¸ï¼å®æ¹ç½ç«çC#è°ç¨ç¤ºä¾
ãã代ç
ããusing System;
ããusing System.IO;
ããusing System.Runtime.InteropServices;
ããnamespace win_csharp
ãã{
ãã[StructLayout(LayoutKind.Explicit)]
ããpublic struct result_t
ãã{
ãã[FieldOffset(0)]
ããpublic int start;
ãã[FieldOffset(4)]
ããpublic int length;
ãã[FieldOffset(8)]
ããpublic int POS_id;
ãã[FieldOffset(12)]
ããpublic int word_ID;
ãã}
ãã/// <summary>
ãã/// Class1 çæè¦è¯´æã
ãã/// </summary>
ããclass Class1
ãã{
ããconst string path = @"ICTCLAS30.dll";
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Init")]
ããpublic static extern bool ICTCLAS_Init(String sInitDirPath);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_ParagraphProcess")]
ããpublic static extern String ICTCLAS_ParagraphProcess(String sParagraph, int bPOStagged);
ãã[DllImport(path, CharSet = CharSet.Ansi, EntryPoint = "ICTCLAS_Exit")]
ããpublic static extern bool ICTCLAS_Exit();
ãã/// <summary>
ãã/// åºç¨ç¨åºçä¸»å ¥å£ç¹ã
ãã/// </summary>
ãã[STAThread]
ããstatic void Main(string[] args)
ãã{
ãã//
ãã// TODO: å¨æ¤å¤æ·»å 代ç 以å¯å¨åºç¨ç¨åº
ãã//
ããif (!ICTCLAS_Init(null))
ãã{
ããSystem.Console.WriteLine("Init ICTCLAS failed!");
ããreturn;
ãã}
ããSystem.Console.WriteLine("Init ICTCLAS Success!");
ããString pResult;
ããpResult = ICTCLAS_ParagraphProcess("ç¹å»ä¸è½½è¶ 女纪æ佳深åè§ä¼åç±ã禽æµæçåå¨éå ¸ä¹åã", 1);
ããSystem.Console.WriteLine(pResult);
ããICTCLAS_Exit();
ãã}
ãã}
ãã}