n元语法模型在这里不进行介绍,大家可以根据这两篇博客了解下:关于N-Gram模型或者自然语言处理中的N-Gram。
写这篇博客主要是要用到OpenNLP中的ngram模型(我用的opennlp-tools-1.7.0,版本,opennlp.tools.ngram包中),在这里对里面的类和方法的功能简要介绍。
一、NGramGenerator 类
1.功能:对给定的序列使用自定义的分隔符生成一个ngram,并将所有的ngram存储在String类型的List中
2.方法:
(1)public static List<String> generate(List<String> input, int n, String separator){...}
String类型的List作为输入input,用户根据n自定义要生成几元语法类型(n = 2,3 为bigram或者trigram),并且根据separator自定义字符分割标签
(2)public static List<String> generate(char[] input, int n, String separator){...}
该方法除了输入类型为char型数组外,与上一方法用法一样
3.例子:
public class App
{
public static void main( String[] args )
{
String setence = "我爱自然语言处理。";
char[] ch = setence.toCharArray();
List<String> trigram = NGramGenerator.generate(ch, 3, "/");
System.out.println(trigram);
}
}
该程序运行的结果为:[我/爱/自, 爱/自/然, 自/然/语, 然/语/言, 语/言/处, 言/处/理, 处/理/。]
二、NGramModel类
1.功能:用来生成ngrams 和 character ngrams
2.方法:
(1