温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在CSharp中调用HanLP

发布时间:2021-08-27 14:25:05 来源:亿速云 阅读:197 作者:chen 栏目:数据库

这篇文章主要介绍“怎么在CSharp中调用HanLP”,在日常操作中,相信很多人在怎么在CSharp中调用HanLP问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在CSharp中调用HanLP”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

IKVM简介

IKVM.NET是一款开源的Java虚拟机,可以将hanlp.jar类库转为dll直接供C#程序调用,也可以直接当JVM让hanlp.jar运行在.NET平台上。请自行下载 IKVM ,本文使用的是ikvm-7.2.4630.5。

HanLP简介

HanLP 是一个致力于向生产环境普及NLP技术的开源Java工具包,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析(MaxEnt依存句法分析、神经网络依存句法分析)。

HanLP由3部分组成:类库hanlp.jar包、模型data包、配置文件hanlp.properties,请前往项目主页下载最新版: https://github.com/hankcs/HanLP/releases

下载后,你需要编辑配置文件第一行的root指向data的父目录, 详见文档 。

在IKVM中运行hanlp.jar

准备工作

Native JVM情况下,我们是这样调用hanlp.jar的,新建一个目录(假定为C:\hanlp),把hanlp.jar和hanlp.properties放进去:

怎么在CSharp中调用HanLP

然后cd到这个目录内,一句命令行:

java -cp .;hanlp-1.2.7.jar com.hankcs.hanlp.summary.TextRankSentence

就能运行成功了:

[无限算法的产生是由于未能确定的定义终止条件, 这类算法在有限的时间内终止, 有限的非确定算法]

这里通过-cp选项指定了classpath为当前目录,这样 HanLP 就能找到hanlp.properties了。

另外,在新版HanLP中,移除了所有的main方法,所以可能会报找不到main方法的异常。新版用户不必纠结于命令行调用,直接写代码调用即可。

IKVM命令行

使用IKVM的话,只要将java换成ikvm即可:

C:\ikvm-7.2.4630.5\bin\ikvm -cp .;hanlp-1.2.7.jar com.hankcs.hanlp.summary.TextRankSentence

效果是一样的:

怎么在CSharp中调用HanLP

在C#中调用HanLP

将hanlp.jar转为hanlp.dll

CSharp是不能直接调用jar包的,需要转为dll。IKVM提供了一个转换工具ikvmc,使用方法如下:

C:\hanlp>C:\ikvm-7.2.4630.5\bin\ikvmc -target:library C:\hanlp\hanlp-1.2.7.jar

ikvmc会输出消息:

IKVM.NET Compiler version 7.2.4630.5Copyright (C) 2002-2012 Jeroen Frijtershttp://www.ikvm.net/ note IKVMC0002: Output file is "hanlp-1.2.7.dll"

同时会在C:\hanlp目录下生成hanlp-1.2.7.dll。

在Visual Studio中使用hanlp.dll

首先新建一个CSharp项目:

怎么在CSharp中调用HanLP

然后引用刚才生成的hanlp.dll和ikvm-7.2.4630.5\bin目录下的IKVM.OpenJDK.Core.dll这两个dll:

怎么在CSharp中调用HanLP

确定后就能在解决方案资源管理器中看到这两个dll了:

怎么在CSharp中调用HanLP

双击hanlp还能进入到类视图:

怎么在CSharp中调用HanLP

那么就可以愉快地写代码调用 HanLP 了:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using com.hankcs.hanlp;  namespace HanLPSharp{    class Program    {        static void Main(string[] args)        {            java.lang.System.getProperties().setProperty("java.class.path", "C:\\hanlp");            Console.WriteLine(HanLP.segment("你好,欢迎在CSharp中调用HanLP的API!"));            Console.ReadKey();        }    }}

解释一下,

java.lang.System.getProperties().setProperty("java.class.path", "C:\\hanlp");

这句的作用是设置classpath到hanlp.properties所在的目录,请根据情况自由调整。

编译运行,效果如下:

怎么在CSharp中调用HanLP

这说明HanLP在CSharp中工作良好。

更多丰富的API

请参考HanLP的项目主页: https://github.com/hankcs/HanLP

Reference

http://stackoverflow.com/questions/3466698/where-does-ikvm-get-its-classpath-from

http://www.ikvm.net/uses.html

怎么在CSharp中调用HanLP

到此,关于“怎么在CSharp中调用HanLP”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI