中科院分词工具使用

  中科院分词工具java的配置与里面自带的讲解相同,下面是代码

package xieru;

import hello.Hello.CLibrary;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.regex.Pattern;

import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import com.sun.jna.Library;
import com.sun.jna.Native;

public class WriteSeparatewords {
    public interface CLibrary extends Library {

        // 定义并初始化接口的静态变量
        CLibrary Instance = (CLibrary) Native.loadLibrary(
                "E:\\workplace\\hello\\NLPIR", CLibrary.class);

        // printf函数声明
        public boolean NLPIR_Init(byte[] sDataPath, int encoding,
                byte[] sLicenceCode);

        public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);

        public String NLPIR_GetKeyWords(String sLine,int nMaxKeyLimit,boolean bWeightOut);

        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 it(String inFile,String outFile)throws IOException {

        File file=new File(inFile);
        FileInputStream fi=new FileInputStream(file);
          CsvReader cr=new CsvReader(fi,‘,‘, Charset.forName("GBK"));
          cr.readHeaders();
          String[] readerS;
          FileWriter wr=new FileWriter(outFile);
          BufferedWriter bw=new BufferedWriter(wr);
          while(cr.readRecord()){
              readerS=cr.getValues();
              if(readerS[10].equals("技术")){
                  for(int i=0;i<readerS.length-1;i++)
                    bw.write("\""+readerS[i]+"\""+",");
                  bw.write("\""+readerS[readerS.length-1]+"\"");
                  bw.newLine();
              }

          }
          bw.flush();
          bw.close();

    }
    public static void fenci(String inFile,String outFile) throws IOException{
        String argu = "";

        String system_charset = "UTF-8";
        int charset_type = 1;
        // int charset_type = 0;
        // 调用printf打印信息
        if (!CLibrary.Instance.NLPIR_Init(argu.getBytes(system_charset),
                charset_type, "0".getBytes(system_charset))) {
            System.err.println("初始化失败!");
        }
        String filePath=inFile;
        File file=new File(filePath);
        FileInputStream fi=new FileInputStream(file);
        CsvReader cr=new CsvReader(fi,‘,‘, Charset.forName("GBK"));
        cr.readHeaders();
        String[] readerS;
       FileWriter wr=new FileWriter(outFile);
       BufferedWriter bw = new BufferedWriter(wr);

        while(cr.readRecord()){

            readerS=cr.getValues();

            String nativeBytes=null;
            nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(readerS[1], 3);
            bw.write(readerS[0]+","+"\""+nativeBytes+"\""+",");
            System.out.println("分词结果为: " + nativeBytes);
            String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(readerS[1],10,true);
            bw.write(nativeByte);
            System.out.println("关键词提取结果是:"+nativeByte);
            bw.newLine();
            System.out.println("-----------------------------------");

        }
        bw.flush();
        bw.close();

            CLibrary.Instance.NLPIR_Exit();

    }
    public static void main(String[] args) throws Exception {
//        WriteSeparatewords.fenci("F:/c/zhiweiyaoqiu.csv", "F:/c/fenci.csv");
            WriteSeparatewords.it("F:/c/zhaopinxinxi.csv", "F:/c/it.csv");

    }
}
时间: 2024-08-25 21:11:42

中科院分词工具使用的相关文章

ICTCLA中科院分词工具用法(java)

摘要:为解决中文搜索的问题,最开始使用PHP版开源的SCWS,但是处理人名和地名时,会出现截断人名地名出现错误.开始使用NLPIR分词,在分词准确性上效果要比SCWS好.本文介绍如何在windows系统下编译JAVA ,生成可以执行的jar文件. NLPIR的下载地址: http://ictclas.nlpir.org/downloads GitHub的地址: https://github.com/NLPIR-team/NLPIR 两个版本有一些不同,本文将分别讲解如何利用Eclipse建立工程

[遇见时光]中科院分词工具NLPIR,Not valid license or your license expired!

第一词运行的时候下载的版本不新,然后就报错Not valid license or your license expired!,后来在网上查了许久才发现,NLPIR经常更新,要使用最新的Data才可以. 去官网下载最新的工具包,解压后把Data替换旧的Data文件夹,再运行就不会出错了. 友情提示,如何配置NLPIR参考我二师兄的博客http://www.cnblogs.com/CheeseZH/p/4585477.html

java读取中文分词工具(三)

import java.io.EOFException; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; /* * 文件格式:已分词的文本,词语之间用空格,换行等空白符分割. * 到了文件末尾就结束 * 适合读取一行很大的文本,因为这里的缓冲不是一行,

java读取中文分词工具(四)

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.RandomAccessFile; import java.io.Serializable; import java.util.ArrayList; import java.ut

几种开源分词工具的比較

搜集了一些资料,与同学一起进行了简单的測试,总结例如以下. 分词工  具 特点 支持语言 原理 词典及扩展性 StandardAnalyzer 中文.英文(unicode) 中文:单字符切分 英文:依据空格切分 ChineseAnalyzer 中文,不支持中文和英文及数字混合的文本分词 按字分词,与StandardAnalyzer对中文的分词没有大的差别 CJKAnalyzer 中文,英文,不支持中文和英文及数字混合的文本分词 採用的双字切分,也就是对一段文字按每两个字来进行切分 IKAnaly

java分词工具-ANSJ与IKAnalyzer比较分析

最近做情感分析,想研究下具体哪个java分词工具好,于是测试了ANSJ和IKAnalyzer的比较: 都是用了默认值,没有进行添加词库和停用词. ANSJ的代码:scala调用. /** * 中文分词 * example : println("segment分词测试") val stopWords = Config.STOP_WORDS.split("\\|",-1).toArray val str = """据新华社电 中共中央总书记

java中科院分词配置(ICTCLAS)

之前零零散散用过几次,配置好了就没管过.后来再用的时候就忘了怎么配置,又找了很多资料(太麻烦了).现总结一下当作笔记: 首先,下载中科院分词项目. github网址:https://github.com/NLPIR-team/NLPIR/tree/master/NLPIR%20SDK/NLPIR-ICTCLAS 使用的时候两种方法 一种直接在eclipse中导入如图所示的项目 在这个java文件中配置两个路径 第一个: // 定义并初始化接口的静态变量 CLibrary Instance = (

java读取中文分词工具(2)

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; /* * 文件格式:已分词的中文文本,每个词语空格分割,每行一个段落. * 这个类适

基于开源中文分词工具pkuseg-python,我用张小龙的3万字演讲做了测试

做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它的意思. 因此,中文分词技术一直是nlp领域中的一大挑战.Python 中有个比较著名的分词库是结巴分词,从易用性来说对用户是非常友好的,但是准确度不怎么好.这几天发现另外一个库,pkuseg-python,看起来应该是北大的某个学生团队弄出来的,因为这方面没看到过多的介绍,pkuseg-pytho