-
Notifications
You must be signed in to change notification settings - Fork 2.3k
词性标注工具类
yiflow edited this page Jul 18, 2017
·
3 revisions
#词性标注
Ansj具有词性标注的功能,ps:我以前做搜索的,觉得这玩意没大用,但是随着在工程上的应用。词性标注越来越重要了。 所以有必要单拿出来,和大家分享一下
-
Ansj词性标注是基于HMM的。
主要利用了ngram的方式,相对而言作的还是比较粗糙
-
词性标注的规范
说句实话,这个自由度一直很高,因为既要支持用户自定义辞典。而用户的词性关我屁事。所以没有一个完整的统一。但是在实际使用中我们还是尽量以北大标注为准,在另一个文档中,有一份词性说明。我自己增加了nw词性,这个词性意思是是一个新词,但是具体是什么。我不知道。
-
什么地方需要词性标注
除了nlpanalysis 自带词性标注。其他的方式都是需要词性标注的。词性标注的方式是以工具类的形式调用。下面是调用代码,可以看到我们是利用
new NatureRecognition(terms).recognition();
对分词结果进行的标注。
package org.ansj.demo;
import java.io.IOException;
import java.util.List;
import org.ansj.domain.Term;
import org.ansj.recognition.impl.NatureRecognition;
import org.ansj.splitWord.analysis.ToAnalysis;
/**
* 词性标注
*
* @author ansj
*
*/
public class NatureDemo {
public static void main(String[] args) throws IOException {
List<Term> terms = ToAnalysis.parse("Ansj中文分词是一个真正的ict的实现.并且加入了自己的一些数据结构和算法的分词.实现了高效率和高准确率的完美结合!");
new NatureRecognition(terms).recognition(); //词性标注
System.out.println(terms);
}
}
- 我只想用ansj的词性标注。我没有分词结果
好吧,你怎么这么多事,:-)开玩笑。是因为我在实际工程中遇到了这个问题看下面demo
package org.ansj.demo;
import java.util.Arrays;
import java.util.List;
import org.ansj.domain.Term;
import org.ansj.recognition.impl.NatureRecognition;
/**
* 对非ansj的分词结果进行词性标注
* @author ansj
*
*/
public class NatureTagDemo {
public static void main(String[] args) {
String[] strs = {"对", "非", "ansj", "的", "分词", "结果", "进行", "词性", "标注"} ;
List<String> lists = Arrays.asList(strs) ;
List<Term> recognition = NatureRecognition.recognition(lists, 0) ;
System.out.println(recognition);
}
}