Skip to content

分词结果过滤

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]