知识大全 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#传值调用与引用调用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingSystem;
C#调用WebService示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C#调用WebS
C#定时调用方法(线程) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! //这些是C#线程的思路
C#程序调用外部程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! /* * 编程语言Visu
知识大全 Delphi调用WebServices(C#)代码
Delphi调用WebServices(C#)代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
c#动态调用WebService 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
C#调用存储过程简单完整例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! CREATEPROC
C#调用WindowsAPI函数 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Api函数是构筑
JavaWS和C#调用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 互操作性是WebServi
C#实现动态调用WindowsDLL 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 部分代码来自