NLPIR汉语分词系统

2018-12-10  本文已影响0人  帅猪2333

官网:http://ictclas.nlpir.org/    含有下载地址及网站事例

工具github地址:https://github.com/NLPIR-team

首先NLPIR拥有非常强大的功能

看到首页下面这些工具的位置

NLPIR种包含这些功能的许可证,SDK开发文档,NLPIR是一个开源系统,许可证免费下载,使用期一个月,过期后重新下载

一. NLPIR-ICTCLAS 中文分词工具

(1)介绍

在https://github.com/NLPIR-team页面可以找到NLPIR-ICTCLAS项目


点击clone and download ,加压压缩包,得到的目录如下

在idea或eclipse中打开项目(该项目是由eclipse编译的,使用eclipse能更少出错),我在这里使用的是idea

文件目录下看到文件结构如下

data_train代表测试数据

lib代表需要依赖的包

resources代表一些操作系统上的支持工具 支持linux和windows

seg.txt代表运行结果产生的文本

/src/.../test 里面的NLPIRTest代表测试写的类

/src/... 中的NLPIR代表开发的类,类中的函数代表可以调用的函数 ,开发文档为https://github.com/NLPIR-team/NLPIR/tree/master/NLPIR%20SDK/NLPIR-ICTCLAS/doc

(2)运行sample

在运行sample的时候可能会遇到问题,比如不兼容,项目找不到资源文件,许可证过期的情况

对于许可证过期的情况:

在地址https://github.com/NLPIR-team/NLPIR/tree/master/License/license%20for%20a%20month/NLPIR-ICTCLAS%E5%88%86%E8%AF%8D%E7%B3%BB%E7%BB%9F%E6%8E%88%E6%9D%83中下载许可证

将下载的许可证复制到项目的/lib/data下面,替代原来的许可证

运行之后,看到下图代表成功

结果在seg.txt中

(3)NLPIRTest.java代码解析

package com.lingjoin.nlpir.test;

import java.io.File;

import java.io.FileWriter;

import java.io.RandomAccessFile;

import java.util.ArrayList;

import java.util.List;

import com.lingjoin.nlpir.NLPIR;

public class NLPIRTest {

Listfiles=new ArrayList();

  public void getAllfiles(File filePath){//遍历路径下的所有文件

      File[] fsFiles=filePath.listFiles();

      for(File f:fsFiles){

if(f.isFile()&&!f.getName().equals(".DS_Store"))files.add(f.getPath());

        if(f.isDirectory())this.getAllfiles(f);

      }

}

public StringgetContent(File file)throws Exception{//获取每个文本的内容,并处理

      RandomAccessFile f=new RandomAccessFile(file, "r");

      byte[] b=new byte[(int) file.length()];

      f.read(b);

      f.close();

      String c=new String(b,"GBK").replaceAll("\\s", "");//每两个字节组成一个汉字并去掉空格

      return c;

  }

public static void main(String[] args)throws Exception{

NLPIR.init("lib");//初始化支持库

      //NLPIR.importUserDict("");

      FileWriter fw=new FileWriter(new File("seg.txt"));

      String fPath="data_train";

      NLPIRTest test=new NLPIRTest();

      test.getAllfiles(new File(fPath));

      for(String f:test.files){//遍历每一个文件

        System.out.println(f);//输出文件名

        String con=test.getContent(new File(f));//获取文本内容

        fw.write(new File(f).getName()+"\t"+NLPIR.paragraphProcess(con, 1).replaceAll(" ", "\t")+"\n");

        //文件输出到seg.txt,格式为文件名+每个分词+空格;分完一个文本后回车

      }

fw.flush();

      fw.close();

  }

}

(4)结果部分展示

4-1_01 新华社/nt 照片/n ,/wd 枣庄/ns (/wkz 山东/ns )/wky ,/wd 2016年/t 8月/t 30日/t 山东/ns 枣庄/ns 出现/v “/wyz 鱼鳞/n 云/vg ”/wyy 这/rzv 是/vshi 8月/t 30日/t 在/p 山东省/ns 枣庄市/ns 山亭区/ns

(5)分词后缀解释

汉语词性对照表地址:https://blog.csdn.net/kevin_darkelf/article/details/39520881

上一篇下一篇

猜你喜欢

热点阅读