Skip to content

vchangpengfei/chanlp4j

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chanlp4j

trick for nlp 高性能表达式过滤文本

#高性能表达式过滤文本

nlp处理处理文本的过程中 经常会遇到 一个句子中即包含 哪个词 又包含哪个词 并且不包含 哪个词 类似的需求

这里通过一个表达式来解决,表达式支持

  • 括号 ()
  • 并且 &&
  • 或 ||
  • 非 !
  • 不包含 -
  • 数字

实例如下

Map<String,String> exressionMap=new HashMap();
exressionMap.put("16","(洗衣 || 干洗 || 熨衣 || 挂烫机 || 熨斗) && (有 || 提供 || 服务 || 可 || 帮) && !(洗衣液 || 洗衣粉)");
exressionMap.put("120","<int>钱 || <int>元 || 多少钱");
exressionMap.put("110","床-大床房-双床房");
ExpressionParser.getInstance().load(exressionMap);

System.out.println(ExpressionParser.getInstance().getMatchItems("酒店房间115元"));
System.out.println(ExpressionParser.getInstance().getMatchItems("钱"));
System.out.println(ExpressionParser.getInstance().getMatchItems("酒店房间没多少钱"));
System.out.println(ExpressionParser.getInstance().getMatchItems("想洗衣服没洗衣粉"));
System.out.println(ExpressionParser.getInstance().getMatchItems("大床房的床很大"));
System.out.println(ExpressionParser.getInstance().getMatchItems("大床房和双床房的床很大"));
System.out.println(ExpressionParser.getInstance().getMatchItems("大床房和双床房很大"));
System.out.println(ExpressionParser.getInstance().getMatchItems("大床房很大"));

//输出
[120]
[]
[120]
[]
[110]
[110]
[]
[]

cd javacc java -cp javacc-7.0.9.jar javacc termquery.jj

Releases

No releases published

Packages

No packages published

Languages