Delphi通过JNI封装的HanLP库
HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
此转换库允许从Delphi调用Java程序。由于Java程序与平台无关,因此它也适用于Linux。
在前面两个库的基础上进行二次封装,方便Delphi开发者使用汉语言处理功能。
- 下载jar包:hanlp-1.7.8.jar,和程序放在一起。
- 下载HanLP要用的数据文件并解压:data.zip。把hanlp.properties和程序放在一起,并配置好里面的root。
- 下载 Delphi-JNI,把源码路径添加到Delphi Options->Library。
- 下载本项目,把源码路径添加到Delphi Options->Library。
- 配置好JRE目录,jvm.dll要在搜索路径中,否则程序无法启动。
- 程序目标平台要与jvm相同(32位jvm配32位程序,64位jvm配64位程序)。
- 加载jvm时,option要写出jar包名称,比如:-Djava.class.path=./hanlp-1.7.8.jar.
- 调试模式下加载jvm会报access violation,调用时偶尔也报,just ignore it.
var
JVM: TJNIEnv;
HanLP: THanLP;
begin
// 指定参数加载jvm
JVM := Create_JVM(JNI_VERSION_1_8, ['-Djava.class.path=./hanlp-1.7.8.jar']);
// 创建HanLP
HanLP := THanLP.Create(JVM);
end;
var
TermList: TObjectList<TTerm>;
Term: TTerm;
S: string;
begin
// 全拼: chong zai bu shi zhong ren
Log(HanLP.ConvertToPinyinString('重载不是重任', ' ', False));
// 标准分词
TermList := HanLP.Segment('我的希望是希望张晚霞的背影被晚霞映红');
for Term in TermList do
begin
S := S + ' ' + Term.ToString();
end;
Log(S);
TermList.Free;
end;
更多代码请参考demo。
作者:caowm (remobjects.qq.com)