lingpipe使用方法简介

时间:2022-01-08 01:38:14

    以下信息均来自于lingpipe的说明页面:

    http://alias-i.com/lingpipe/demos/tutorial/read-me.html

    lingpipe的功能中对我们有帮助的有:

分类,聚类;实体识别,中文分词,情感分析;矩阵分解,条件随机场,EM算法,逻辑回归。

lingpipe有一个免费的软件包,版本为4.1.0。在下载之后会得到一个文件夹,在文件目录下我们会看到一个名为src的文件夹,lingpipe的全部功能基本就是在这个文件夹中的程序实现的。程序都是由java编写的,具体的用法可以参照上面的连接,简单得来说就是调取一些写好的函数就可以了,比较方便。下面,我以实体识别为例来将以下怎么用这个工具。

Algorithms 1:

importcom.aliasi.chunk.Chunker;

importcom.aliasi.chunk.Chunking;

importcom.aliasi.util.AbstractExternalizable;

importjava.io.File;

//以上是一些声明

public classRunChunker {

 

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

       File modelFile = new File(args[0]);

       //读取识别模块,即识别实体的方法,会在后面讲怎么学。

       System.out.println("Reading chunkerfrom file=" + modelFile);

       Chunker chunker

          = (Chunker) AbstractExternalizable.readObject(modelFile);

 

       for (int i = 1; i < args.length; ++i) {

           Chunking chunking = chunker.chunk(args[i]);

           System.out.println("Chunking="+ chunking);

       }

       //输入你要进行识别的句子,在这里当然可以以读取文件的形式来实现

    }

 

}

输出的形式:[0-3:GENE@-Infinity, 20-54:GENE@-Infinity, 81-92:GENE@-Infinity]

数字,比如0-3是实体的位置,冒号后面是对应的实体类别名。

 

Algorithm 2

import com.aliasi.chunk.CharLmHmmChunker;

import com.aliasi.hmm.HmmCharLmEstimator;

import com.aliasi.tokenizer.IndoEuropeanTokenizerFactory;

import com.aliasi.tokenizer.TokenizerFactory;

import com.aliasi.util.AbstractExternalizable;

import com.aliasi.util.Streams;

import java.io.File;

import java.io.IOException;

//以上是声明

public classTrainGeneTag {

 

    static final int MAX_N_GRAM = 8;

    static final int NUM_CHARS = 256;

    static final double LM_INTERPOLATION = MAX_N_GRAM;// default behavior

 

    // java TrainGeneTag <trainingInputFile><modelOutputFile>

    @SuppressWarnings("deprecation")

    public static void main(String[] args) throwsIOException {

        File corpusFile = new File(args[0]);

        File modelFile = new File(args[1]);

 

        System.out.println("Setting upChunker Estimator");

        TokenizerFactory factory

            = IndoEuropeanTokenizerFactory.INSTANCE;

        HmmCharLmEstimator hmmEstimator

            = new HmmCharLmEstimator(MAX_N_GRAM,NUM_CHARS,LM_INTERPOLATION);

        CharLmHmmChunker chunkerEstimator

            = new CharLmHmmChunker(factory,hmmEstimator);

 

        System.out.println("Setting upData Parser");

        @SuppressWarnings("deprecation")

        com.aliasi.corpus.parsers.GeneTagParserparser

            = new com.aliasi.corpus.parsers.GeneTagParser();  // PLEASE IGNORE DEPRECATION WARNING

        parser.setHandler(chunkerEstimator);

 

        System.out.println("Training withData from File=" + corpusFile);

        parser.parse(corpusFile);

 

        System.out.println("Compiling andWriting Model to File=" + modelFile);

        AbstractExternalizable.compileTo(chunkerEstimator,modelFile);

    }

 

}//这个函数有点没看懂…

由于我现在还没使过java,究竟怎么把这些程序跑出来不是很清楚。这个工具还必须自己找训练集来进行学习,这是最麻烦的一点,他也给出了相应的训练集。我们按照训练集的格式来创建数据库,就可以使用它了。以下是一个训练数据库样例:

ftp://ftp.ncbi.nlm.nih.gov/pub/lsmith/MedTag/medtag.tar.gz