-
Notifications
You must be signed in to change notification settings - Fork 90
分词结果过滤
Xusheng edited this page Mar 3, 2020
·
2 revisions
很多时候,还需要对分词结果进行一些过滤操作,比如过滤掉标点符号、挑选出实词等等。
注意: 所有的过滤操作都会直接修改掉原始的分词结果,并不会创建新的列表!
词性标注请参见《HanLP 词性标注集》。
void removePunc(List<Term> segResult)
过滤掉分词结果中的标点符号
- segResult: 分词结果
- return: 无
List<Term> segResult = AHANLP.StandardSegment("你好,欢迎使用AHANLP中文自然语言处理包!");
POSFilter.removePunc(segResult);
System.out.println(segResult);
[你好/vl, 欢迎/v, 使用/v, AHANLP/nx, 中文/nz, 自然语言处理/nz, 包/v]
void removePOS(List<Term> segResult, List<String> removePOS)
除了标点符号外,还可以通过 removePOS
自定义要过滤的词性
- segResult: 分词结果
- removePOS: 要过滤的词性,列表形式
- return: 无
List<Term> segResult = AHANLP.StandardSegment("你好,欢迎使用AHANLP中文自然语言处理包!");
POSFilter.removePOS(segResult, Arrays.asList("v", "vd", "vn"));
System.out.println(segResult);
[你好/vl, ,/w, AHANLP/nx, 中文/nz, 自然语言处理/nz, !/w]
void selectRealWords(List<Term> segResult)
只保留分词结果中的实词
- segResult: 分词结果
- return: 无
List<Term> segResult = AHANLP.StandardSegment("你好,欢迎使用AHANLP中文自然语言处理包!");
POSFilter.selectRealWords(segResult);
System.out.println(segResult);
[欢迎/v, 使用/v, 中文/nz, 自然语言处理/nz, 包/v]
void selectPOS(List<Term> segResult, List<String> selectPOS)
指定分词结果需要保留的词性
- segResult: 分词结果
- selectPOS: 需要保留的词性
- return: 无
List<Term> segResult = AHANLP.StandardSegment("你好,欢迎使用AHANLP中文自然语言处理包!");
POSFilter.selectPOS(segResult, Arrays.asList("n", "ns", "nr", "nt", "nz", "v", "vd", "vn", "a", "ad", "an", "d"));
System.out.println(segResult);
[欢迎/v, 使用/v, 中文/nz, 自然语言处理/nz, 包/v]