知识大全 C#调用ICTCLAS30

Posted

篇首语:书本上的知识而外,尚须从生活的人生中获得知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#调用ICTCLAS30相关的知识,希望对你有一定的参考价值。

C#调用ICTCLAS30  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SharpICTCLAS虽说是开源的 但 年以后就没有人再进行维护 跑搜狗的语料问题不少 就连C#版本的作者也承认有不少问题

  想得到更为准确的分词结果 还是研究SharpICTCLAS 也就是ICTCLAS 版 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( )]

  public int start;

  [FieldOffset( )]

  public int length;

  [FieldOffset( )]

  public int sPos;

  [FieldOffset( )]

  public int sPosLow;

  [FieldOffset( )]

  public int POS_id;

  [FieldOffset( )]

  public int word_ID;

  [FieldOffset( )]

  public int word_type;

  [FieldOffset( )]

  public int weight;

  

  class ICTCLAS

  

  const string path = @ ICTCLAS 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 ICTCLAS ()

  

  

  

  

  调用

  代码

  if (!ICTCLAS Init(null))

  

  System Console WriteLine( Init ICTCLAS failed! );

  return;

  

  System Console WriteLine( Init ICTCLAS Success! );

  String pResult;

  pResult = ICTCLAS ParagraphProcess( 点击下载超女纪敏佳深受观众喜爱 禽流感爆发在非典之后 );

  System Console WriteLine(pResult);

  ICTCLAS Exit();

  注

  使用的时候把ICTCLAS dll Configure xml和Data文件夹copy到程序exe运行的位置 否则需要制定他们的位置

  如何把pResult搞成昨天博文里的wordResult格式还是个问题 还需要好好研究

  附上 官方网站的C#调用示例

  代码

  using System;

  using System IO;

  using System Runtime InteropServices;

  namespace win_csharp

  

  [StructLayout(LayoutKind Explicit)]

  public struct result_t

  

  [FieldOffset( )]

  public int start;

  [FieldOffset( )]

  public int length;

  [FieldOffset( )]

  public int POS_id;

  [FieldOffset( )]

  public int word_ID;

  

  /// <summary>

  /// Class 的摘要说明

  /// </summary>

  class Class

  

  const string path = @ ICTCLAS 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( 点击下载超女纪敏佳深受观众喜爱 禽流感爆发在非典之后 );

  System Console WriteLine(pResult);

  ICTCLAS_Exit();

  

  

  

  参考 format Blog  

cha138/Article/program/net/201311/12707

相关参考

知识大全 C#传值调用与引用调用

C#传值调用与引用调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSystem; 

知识大全 C#调用WebService示例

C#调用WebService示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#调用WebS

知识大全 C#定时调用方法(线程)

C#定时调用方法(线程)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //这些是C#线程的思路

知识大全 C#程序调用外部程序

C#程序调用外部程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  /*  * 编程语言Visu

知识大全 Delphi调用WebServices(C#)代码

Delphi调用WebServices(C#)代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 c#动态调用Web Service

c#动态调用WebService  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 C#调用存储过程简单完整例子

C#调用存储过程简单完整例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  CREATEPROC

知识大全 C#调用Windows API函数

C#调用WindowsAPI函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Api函数是构筑

知识大全 Java WS和C#调用

JavaWS和C#调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  互操作性是WebServi

知识大全 C#实现动态调用Windows DLL

C#实现动态调用WindowsDLL  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  部分代码来自