以下信息均来自于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