我们可以去官网下载压缩包:http://ictclas.nlpir.org/newsdownloads?DocId=389

然而仅仅靠官网上给的资源像我这种菜鸟是看不懂的。

于是我就百度:nlpir java  接口的使用

好吧,我百度到的没一个用的了的,有版本的差异,有编译工具 差异,有操作系统的差异(反正我是不能懂)

今天早上,我发现了一个哥们的能用,贴出地址:http://www.cnblogs.com/liuchaogege/p/5405659.html

然后我跟着他做一步步做,居然实现了java的分词和提取关键字。

我用的开发工具是myeclipse,下载的压缩包名字是20161115173728_ICTCLAS2016分词系统下载包 .zip,操作系统的win10  32位。

1、我们首先建一个java工程(例如:CWordMeg)

2、然后在src目录下建一个cwordmsg包,在该包下建一个类CWordMsg

3、这个类里面的东西跟官网里的差不多

有一个 import  util.SystemParas;包用不到,我们先注释吧.

然后就是2个路径的问题了

CLibrary Instance = (CLibrary) Native.loadLibrary("E:\\myeclipse\\workspace\\CWordMeg\\file\\win32\\NLPIR", CLibrary.class);这个路径是我们选择的操作系统(我的是win32)下的NLPIR.dll文件所在的目录,不需要加后缀dll

还有一个就是

String argu = "E:\\myeclipse\\workspace\\CWordMeg\\file";这个路径是我们的语言库data所在的路径

4、我们在项目(CWordMeg)目录下(不是src下)建立一个file文件夹,然后把我们解压出来的Data直接复制到file文件夹下,是直接把Data和文件一起复制过来,再把你操作系统(win32)下面的2个文件包括文件夹也复制到file目录下。

5、我们再在项目(CWordMeg)目录下建一个新的文件夹lib,用来存放我们的jar包,我们把jna-4.0.0.jar包拷贝到lib目录下,点击包,右键 -> bulid Path ->第一个吧,把jar包导入库.

6、再src目录建立一个新的包,utils,然后把解压后的例子JnaTest_NLPIR项目中的2个工具类放到utils下面。(这2个类好像没有用到)

7、解压后根目录下可以看到有个sample,这就是官网给出的例子,我们点开sample就直接可以看到我们的项目JnaTest_NLPIR了,与该项目同级的java中还有2个java项目,与这个差不多,我只能说,有一个(第一个)几乎是和它一模一样。

说了这么多也没用,贴张图上来吧。

...(这个图不能直接贴在这里的吗?还是我不会帖!)

Data文件夹下东西太多,就不展开了

贴2个代码

String sInput = "据悉,质检总局已将最新有关情况再次通报美方,要求美方加强对输华玉米的产地来源、运输及仓储等环节的管控措施,有效避免输华玉米被未经我国农业部安全评估并批准的转基因品系污染。";

try{

nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);

// 1的意思是显示分词后的词性,0是不显示分词后的词性,其他的非0的都是显示词性
            System.out.println("分词结果为: " + nativeBytes);
        
            String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);
   // false的意思是不现实词性,如果设置为true,就会显示词性
            System.out.println("关键词提取结果是:" + nativeByte);

...}

最后:我找到了Java的十多个接口,在这里分享给大家

import com.sun.jna.Library;

public interface CLibrary extends Library{

//初始化
    public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode);

//对字符串进行分词
    public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);

//对TXT文件内容进行分词
    public double NLPIR_FileProcess(String sSourceFilename,String sResultFilename, int bPOStagged);

//从字符串中提取关键词
    public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut);

//从TXT文件中提取关键词
    public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut);

//添加单条用户词典
    public int NLPIR_AddUserWord(String sWord);

//删除单条用户词典
    public int NLPIR_DelUsrWord(String sWord);

//从TXT文件中导入用户词典
    public int NLPIR_ImportUserDict(String sFilename);

//将用户词典保存至硬盘
    public int NLPIR_SaveTheUsrDic();

//从字符串中获取新词
    public String NLPIR_GetNewWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);

//从TXT文件中获取新词
    public String NLPIR_GetFileNewWords(String sTextFile,int nMaxKeyLimit, boolean bWeightOut);

//获取一个字符串的指纹值
    public long NLPIR_FingerPrint(String sLine);

//设置要使用的POS map
    public int NLPIR_SetPOSmap(int nPOSmap);

//获取报错日志
    public String NLPIR_GetLastErrorMsg();

//退出
    public void NLPIR_Exit();    
}

还有我在github
https://github.com/NLPIR-team/NLPIR?files=1

找到的2大块内容,留着我自己以后看,我怕自己会淡忘

NLPIR SDK

NLPIR SDK存放了13种组件包:

Classify规则组件
    Cluster聚类组件
    DeepClassifier训练分类组件
    DocExtractor实体抽取组件
    HTMLPaser网站正文提取组件
    NLPIR-ICTCLAS分词组件
    JZsearch精准搜索组件
    JZSearch精准搜索客户端组件
    KeyExtract关键词提取组件
    RedupRemover文档去重组件
    Sentiment情感组件
    SentimentAnalysis情感分析组件
    Summary摘要组件

组件包内容介绍

doc:使用说明文档和API文档
    include:头文件
    lib:linux32,linux64,win32,win64等不同版本的库
    projects:开发工程包
    sample:C#,C++,java等不同语言的案例
    Data:数据库

组件文件夹说明:
    NLPIR   Demo
########################################################
    |                                |
1    |       Classifier         |
    |     文本分类组件           |
########################################################
    |                 |
2    |          Cluster          |
        |     文本聚类组件        |
########################################################
    |                 |
3    |          DocExtractor          |
        |    情感正负度和实体抽取组件       |
########################################################
    |                 |
4    |          JZSearch          |
        |    精准分析搜索组件            |
########################################################
    |                 |
5    |          KeyExtract          |
        |    关键词提取组件            |
########################################################
    |                 |
6    |    LJSentimentAnalysis      |
        |    细粒度情感分析组件        |
########################################################
    |                 |
7    |    Summary              |
        |    文本摘要组件            |
########################################################
    |                 |
8    |    WordFreq              |
        |    词频统计组件            |
########################################################
    |                 |
9    |    DupRemover              |
        |    文本去重组件            |
########################################################

有一个是说能在tomcat上跑起来这个,不知道能不能

最近在用 NLPIR中文分词系统,用NLPIR的sample运行正常,但是要应用web程序中报错。
Caused by: java.lang.UnsatisfiedLinkError: no NLPIR_JNI in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at kevin.zhang.NLPIR.(NLPIR.java:132)
最后把NLPIR.dll文件盒Data文件夹放在tomcat的bin目录下运行正常。

最后,我还是把我的代码贴上来吧,我怕我以后会弄丢

package cwordmeg;

import java.io.UnsupportedEncodingException;
//import utils.SystemParas;//这个包这里面没用到
import com.sun.jna.Library;
import com.sun.jna.Native;

public class CWordMeg{

// 定义接口CLibrary,继承自com.sun.jna.Library
    public interface CLibrary extends Library {
        // 定义并初始化接口的静态变量
        CLibrary Instance = (CLibrary) Native.loadLibrary(
                "E:\\myeclipse\\workspace\\CWordSeg\\file\\win32\\NLPIR", CLibrary.class);
        初始化函数申明
        public int NLPIR_Init(String sDataPath, int encoding,
                String sLicenceCode);
        //初始化分词函数    
        public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
        //初始化获取字符串关键字函数
        public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,
                boolean bWeightOut);
        //初始化获取文章关键字的函数,第二个参数可以设置关键字的上限
        public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,
                boolean bWeightOut);
        //初始化增加用户词典的函数
        public int NLPIR_AddUserWord(String sWord);
        //初始化删除用户词典的函数
        public int NLPIR_DelUsrWord(String sWord);
        //初始化提示信息的寒素
        public String NLPIR_GetLastErrorMsg();
        //初始化退出函数
        public void NLPIR_Exit();
    }

//这段我目前还不知道是干嘛的,毕竟自己是一个菜鸟
    public static String transString(String aidString, String ori_encoding,
            String new_encoding) {
        try {
            return new String(aidString.getBytes(ori_encoding), new_encoding);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

public static void main(String[] args) throws Exception {
        String argu = "E:\\myeclipse\\workspace\\CWordSeg\\file";
        // String system_charset = "GBK";//GBK----0
        String system_charset = "UTF-8";
        int charset_type = 1;
        
        int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
        String nativeBytes = null;

if (0 == init_flag) {
            nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
            System.err.println("初始化失败!fail reason is "+nativeBytes);
            return;
        }

String sInput = "据悉,质检总局已将最新有关情况再次通报美方,要求美方加强对输华玉米的产地来源、运输及仓储等环节的管控措施,有效避免输华玉米被未经我国农业部安全评估并批准的转基因品系污染。";

//String nativeBytes = null;
        try {
            //输出字符串分词后的结果,设置第二个参数为1,就是显示词性;为0,不显示词性;其实,非0的都不显示词性
            nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);

System.out.println("分词结果为: " + nativeBytes);
            
            //增加用户词典
            CLibrary.Instance.NLPIR_AddUserWord("要求美方加强对输 n");
            CLibrary.Instance.NLPIR_AddUserWord("华玉米的产地来源 n");
            nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
            System.out.println("增加用户词典后分词结果为: " + nativeBytes);
            
            //删除用户词典
            CLibrary.Instance.NLPIR_DelUsrWord("要求美方加强对输");
            nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
            System.out.println("删除用户词典后分词结果为: " + nativeBytes);
            
            
            int nCountKey = 0;
            //获取字符串的关键字,上限为10个,并且设置词性不显示
            String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);

System.out.println("关键词提取结果是:" + nativeByte);
            
            //获取文章的关键字,设置上限为10个,并且词性不显示(false)
            nativeByte = CLibrary.Instance.NLPIR_GetFileKeyWords("D:\\download\\fenci\\test\\用户词典.doc", 10,false);

System.out.print("关键词提取结果是:" + nativeByte);

//退出函数
            CLibrary.Instance.NLPIR_Exit();

} catch (Exception e) {
            e.printStackTrace();
        }

}
}

有什么错误欢迎大家指出来,毕竟我i只是个菜鸟,留着自己以后看,时间久了终究会淡忘的。

简单的NLPIR分词 JAVA 实现相关推荐

  1. 张华平 java_张华平分词(又名中科院分词/NLPIR分词)的使用(Java版本)

    张华平分词(又名中科院分词/NLPIR分词)的使用(Java版本) 标签:#分词##工具##编程# 时间:2017/03/03 20:31:23 作者:小木 其实步骤很简单,主要就是下载,解压,导入, ...

  2. 中科院NLPIR中文分词java版

    中科院NLPIR中文分词java版 中科院NLPIR中文分词java版

  3. java nlpir_中科院NLPIR中文分词java版

    摘要:为解决中文搜索的问题,最开始使用 版 SCWS ,但是处理人名和地名时,会出现截断人名地名出现错误.开始使用 NLPIR 分词,在分词准确性上效果要比 SCWS 好.本文介绍如何在 系统下 JA ...

  4. mysql使用结巴语句_结巴分词 java 高性能实现,是 huaban jieba 速度的 2倍

    Segment Segment 是基于结巴分词词库实现的更加灵活,高性能的 java 分词实现. 创作目的 分词是做 NLP 相关工作,非常基础的一项功能. jieba-analysis 作为一款非常 ...

  5. 一个简单的例子看java线程机制

    一个简单的例子看java线程机制 作者: zyf0808 发表日期: 2006-03-26 11:20 文章属性: 原创 复制链接 import java.util.*; public class T ...

  6. java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...

    一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...

  7. sqllite java 代码,非常简单的SQLite的Java程序

    /* 在你的代码中引用这个驱动: Class.forName("org.sqlite.JDBC"); Connection conn = DriverManager.getConn ...

  8. 简单的中文分词加上kmean聚类 (c++)

    简单的中文分词加上kmean聚类 (c++) 程序代码参考了csdn某博客,具体名字忘记了 变量命名的头文件 //common.h #ifndef COMM_H #define COMM_H#incl ...

  9. php比java简单吗_php比java简单吗

    php比java简单吗 php比java简单. ● php是解释执行的服务器脚本语言,首先php有简单容易上手的特点.语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发.而java需 ...

  10. java 内存例子_简单的例子 关于Java内存管理的讲解

    我想做的是,逐行读取文件,然后用该行的电影名去获取电影信息.因为源文件较大,readlines()不能完全读取所有电影名,所以我们逐行读取. 就这段代码,我想要在位置二处使用base64,然后结果呢? ...

最新文章

  1. Bio-protocol第一届生物实验短视频大赛集锦(三)——软件使用篇
  2. mysql数据库c 操作o_linux下c操作mysql数据库。gcc报错。谁能帮忙看下啊。
  3. == ===区别,利用!= !==判空。
  4. UVa10672 - Marbles on a tree(BFS)
  5. Jenkins将致力于提升稳定性、易用性和云原生兼容性
  6. elk的一些零碎知识
  7. springboot最佳实践-SpringBoot应用如何编写
  8. PHP求体重成绩函数,PHP数组
  9. SpringBoot2 整合 Zookeeper组件,管理架构中服务协调
  10. HTML 5适合小公司,适合在大平台上做内容
  11. NuCypher 已将共享策略访问周期持续时间从 24 小时延长至 7 天
  12. 客户流失预警模型怎么做?
  13. 用户 'sa' 登录失败。 连接SQL2000出现的问题。
  14. 编译原理第一章笔记--绪论
  15. 服务性能测试和内存监控
  16. 微信3.1.0.67逆向-微信3.1.0.67HOOK接口(WeChatHelper3.1.0.67.dll)使用说明
  17. mac u盘linux 双系统安装教程,苹果电脑怎么安装双系统 苹果电脑安装双系统教程...
  18. 手机RAM、ROM和储存卡的那些事
  19. 国内外学习游戏的网站
  20. 清零术——Stay hungry,Stay foolish

热门文章

  1. 面向对象9:方法的重写、super关键字、子类对象的实例化过程
  2. MySQL docker yml 3_分享一个mysql的docker-compose.yml
  3. html5 restore,HTML5 canvas save和restore方法讲解
  4. 学计算机用16g内存,说出去就是个笑话,两万多电脑内存才16G,我认为这配置不合理!...
  5. picker封装 uniapp_uni-app之picker
  6. python中3个while循环_python的input和while循环
  7. ps去水印教程_叫板 PS!去水印、抠图、加滤镜,这款超强修图应用到底什么来头...
  8. java get resttemplate 请求传递数组_Java面试中遇到的坑【4】
  9. 知识竞赛时,竞赛活动主题及环节主题如何修改?
  10. linux ssh-copy-id命令本地主机的公钥复制到远程主机的authorized_keys文件上