zoukankan      html  css  js  c++  java
  • ICTCLAS 平台调用的封装

    ICTCLAS30 已经给了开放函数的头文件,可以直接从C#调用

    [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;

    }

    /// <summary>
    /// Description of ICTCLAS.
    /// </summary>
    public 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()
        {

        }
    }

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

    使用实例的代码片段

    ICTCLAS30.Init(null);//Configure.xml所在的目录,为null表示当前目录

    string resultString = ICTCLAS.ParagraphProcess(strInput,0);//分词

    int count = ICTCLAS.GetParagraphProcessAWordCount(strInput);
    result_t[] rt 
    =new result_t[count];
    ICTCLAS.ParagraphProcessAW(count, rt);
    //获得分析信息
  • 相关阅读:
    拉格朗日乘数法
    凸优化
    2018-2-13-安装visualStudio-出现-cant-install-Microsoft.TeamFoundation.OfficeIntegration.Resources...
    2019-11-9-win10-支持默认把触摸提升-Pointer-消息
    2019-7-1-Roslyn-让编译时候-Message-内容默认输出
    2019-8-31-win2d-通过-CanvasActiveLayer-画出透明度和裁剪
    2019-10-4-C#-极限压缩-dotnet-core-控制台发布文件
    2019-8-31-dotnet-获取指定进程的输入命令行
    2019-8-30-PowerShell-通过-WMI-获取系统安装的驱动
    2018-8-10-VisualStudio-2017-项目格式-自动生成版本号
  • 原文地址:https://www.cnblogs.com/format/p/1597331.html
Copyright © 2011-2022 走看看