使用原因
最近接到的项目里有一个门户网站智能客服功能,找了一个开源的jar包,我在这里封装一些方法和DEMO以便大家使用
工具类
import me.midday.FoolNLTK;
import me.midday.lexical.AnalysisResult;
import me.midday.lexical.Entity;
import me.midday.lexical.LexicalAnalyzer;
import me.midday.lexical.Word;
import java.util.ArrayList;
import java.util.List;
/**
* @Description: 分词处理工具
*/
public class WordCutUtils {
/**
* 获取分词数组
* @param text
* @return
*/
public static List<String> wordCutToString(String text){
List<String> str = new ArrayList<>();
List<List<Word>> words = wordCut(text);
words.forEach((ws)-> ws.forEach((w)-> str.add(w.toString())));
return str;
}
/**
* 分词
* @param text
* @return
*/
public static List<List<Word>> wordCut(String text){
LexicalAnalyzer lexicalAnalyzer = FoolNLTK.getLSTMLexicalAnalyzer();
return lexicalAnalyzer.cut(text);
}
/**
* 词性标注
* @param text
* @return
*/
public static List<List<Word>> wordPos(String text){
LexicalAnalyzer lexicalAnalyzer = FoolNLTK.getLSTMLexicalAnalyzer();
return lexicalAnalyzer.pos(text);
}
/**
* 实体识别
* @param text
* @return
*/
public static List<List<Entity>> wordNer(String text){
LexicalAnalyzer lexicalAnalyzer = FoolNLTK.getLSTMLexicalAnalyzer();
return lexicalAnalyzer.ner(text);
}
/**
* 分词,词性,实体识别
* @param text
* @return
*/
public static List<AnalysisResult> wordAnalysis(String text){
LexicalAnalyzer lexicalAnalyzer = FoolNLTK.getLSTMLexicalAnalyzer();
return lexicalAnalyzer.analysis(text);
}
}
DEMO
public static void main(String[] args){
WordCutUtils w = new WordCutUtils();
String text = "个人怎么样转入转出呢?为什么还有list?好奇怪。我想去马尔代夫";
System.out.println("---------0-----------------");
// 分词 转成string
System.out.println(w.wordCutToString(text).toString());
System.out.println("---------1-----------------");
// 分词 ->得到数据
System.out.println(w.wordCut(text).toString());
System.out.println("---------2-----------------");
// 词性标注
System.out.println(w.wordPos(text).toString());
System.out.println("---------3-----------------");
// 实体识别
System.out.println(w.wordNer(text).toString());
System.out.println("---------4-----------------");
// 分词,词性,实体识别
System.out.println(w.wordAnalysis(text).toString());
}
执行结果
---------0-----------------
[个人, 怎么样, 转入, 转出, 呢, ?, 为什么, 还有, list, ?, 好, 奇怪, 。, 我, 想, 去, 马尔代夫]
---------1-----------------
[[个人, 怎么样, 转入, 转出, 呢, ?, 为什么, 还有, list, ?, 好, 奇怪, 。, 我, 想, 去, 马尔代夫]]
---------2-----------------
[[个人/n, 怎么样/r, 转入/v, 转出/v, 呢/y, ?/ww, 为什么/r, 还有/v, list/nx, ?/ww, 好/d, 奇怪/v, 。/wj, 我/r, 想/v, 去/v, 马尔代夫/ns]]
---------3-----------------
[[马尔代夫|location_29_32]]
---------4-----------------
[words: 个人/n 怎么样/r 转入/v 转出/v 呢/y ?/ww 为什么/r 还有/v list/nx ?/ww 好/d 奇怪/v 。/wj 我/r 想/v 去/v 马尔代夫/ns entities:马尔代夫|location_29_32 ]
Jar包下载链接
链接: https://download.csdn.net/download/qq_36757824/15420655
maven包依赖:
<!-- 处理分词 -->
<dependency>
<groupId>me.midday</groupId>
<artifactId>JFoolNLTK</artifactId>
<version>1.0</version>
</dependency>
使用场景
听说点赞的都去大厂了~