FNLP入门
1.下载跟编译
GitHub上下载FNLP压缩包;
下载相应的模型文件,放在第一步下载的文件里的models目录;
下载Maven,并按照教程配置(其实就是解压缩和配置环境变量)
在命令行中进入FNLP的源码目录(即“README.md”所在的目录),执行如下命令进行编译:
mvn install -Dmaven.test.skip=true
(更新2018.4.25:win10系统如果进入的是powershell, 则使用命令
mvn install ‘-Dmaven.test.skip=true’ )
这会编译四个Jar包:fnlp-core、fnlp-dev、fnlp-train、fnlp-app、fnlp-demo。它们分别位于源码目录中,各自对应目录中的”target”目录之中,例如fnlp-core的软件包位于: fnlp-core/target/fnlp-core-2.0-SNAPSHOT.jar
2.命令行使用
FNLP的源码目录下的命令行(可以Win+R 输入cmd,然后进入源码目录;也可以在源码目录下,按住shift右键进入命令行),执行maven命令:
mvn dependency:copy-dependencies -DoutputDirectory=libs
这样jar包都会copy到工程目录下的libs里面
输入 java -Xmx1024m -Dfile.encoding=UTF-8 -classpath “.;fnlp-core/target/fnlp-core-2.1-SNAPSHOT.jar;libs/trove4j-3.0.3.jar;libs/commons-cli-1.2.jar” org.fnlp.nlp.cn.tag.CWSTagger -s models/seg.m “自然语言是人类交流和思维的主要工具,是人类智慧的结晶。” 可以使用分词功能,也可以测试是否安装成功(windows系统下)。结果如图:
3.调用FNLP库(eclipse下使用)
在eclipse左侧的Project Explorer中选择项目名称,右击,在菜单中选择Build Path,Add External Archives…,则会弹出文件选择对话框,依次查找并添加下列文件(第二步获得的一些jar包,可以在lib等文件夹下找到):
fnlp-core-2.1-SNAPSHOT.jar
trove4j-3.0.3.jar
commons-cli-1.2.jar
修改虚拟机最大内存量(网上有教程);
模型文件指词典、训练后的中文分词器、POS标注器等,它们位于FNLP源码目录下的“models”目录之中。将此目录复制到Eclipse项目目录之下即可。
接下来就可以编程调用了。
FNLP提供了一系列中文处理工具,其中中文分词、词性标注、实体名识别等基础功能已经封装在工厂类CNFactory之中。CNFactory位于org.fnlp.nlp.cn包之中,经过初始化后就可以使用其提供的全部功能:
import org.fnlp.nlp.cn.CNFactory;
CNFactory factory = CNFactory.getInstance(“models”);12
以上代码创建了一个CNFactory对象,并载入位于“models”目录下的模型文件。接下来就可以使用CNFactory的对象来进行各种中文语言处理任务。
中文分词
public static void main(String[] args) throws Exception {
// 创建中文处理工厂对象,并使用“models”目录下的模型文件初始化
CNFactory factory = CNFactory.getInstance("models");
// 使用分词器对中文句子进行分词,得到分词结果
String[] words = factory.seg("关注自然语言处理、语音识别、深度学习等方向的前沿技术和业界动态。");
// 打印分词结果
for(String word : words) {
System.out.print(word + " ");
}
System.out.println();
}
结果: 关注 自然 语言 处理 、 语音 识别 、 深度 学习 等 方向 的 前沿 技术 和 业界 动态 。
中文词性标注
public static void main(String[] args) throws Exception {
// 创建中文处理工厂对象,并使用“models”目录下的模型文件初始化
CNFactory factory = CNFactory.getInstance("models");
// 使用标注器对中文句子进行标注,得到标注结果
String result = factory.tag2String("关注自然语言处理、语音识别、深度学习等方向的前沿技术和业界动态。");
// 显示标注结果
System.out.println(result);
}
结果:关注/动词 自然/名词 语言/名词 处理/动词 、/标点 语音/名词 识别/名词 、/标点 。。。
实体名识别
public static void main(String[] args) throws Exception {
// 创建中文处理工厂对象,并使用“models”目录下的模型文件初始化
CNFactory factory = CNFactory.getInstance("models");
// 使用标注器对包含实体名的句子进行标注,得到结果
HashMap<String, String> result = factory.ner("詹姆斯·默多克和丽贝卡·布鲁克斯 鲁珀特·默多克旗下的美国小报《纽约邮报》的职员被公司律师告知,保存任何也许与电话窃听及贿赂有关的文件。");
// 显示标注结果
System.out.println(result);
}
结果:
{詹姆斯·默多克=人名, 鲁珀特·默多克旗=人名, 丽贝卡·布鲁克斯=人名, 纽约=地名, 美国=地名}
本文来自 黄骨鱼骨 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/jiafgn/article/details/72614635?utm_source=copy