代码如下:
String question = "飞毛腿hw4x精品电池适用于哪些机型?";
//1、NER模型识别问题中的实体
List<String> list1 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getPerson(new String[]{question});
List<String> list2 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getPlace(new String[]{question});
List<String> list3 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getJG(new String[]{question});
List<String> list4 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getTranslatedName(new String[]{question});
List<String> list5 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getCRF(new String[]{question});
Set<String> stringSet = new HashSet<>();
stringSet.addAll(list1);
stringSet.addAll(list2);
stringSet.addAll(list3);
stringSet.addAll(list4);
stringSet.addAll(list5);
List<String> list7 = new ArrayList<>(stringSet);
//去除停用词
List<String> list6 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.removeStopWords(list7);
for (String str1 : list6) {
System.out.println(str1);
}
原理:
要在java中实现命名实体识别(ner)模型,可以使用开源的自然语言处理库stanford corenlp。以下是使用stanford corenlp实现ner的步骤:
1.安装和配置stanford corenlp:下载stanford corenlp并解压缩文件。配置java类路径以包含corenlp库,并启动corenlp服务器。
2.预处理文本:对输入文本进行预处理,如拆分成句子和标记化。这可以通过corenlp服务器上的rest api完成,或者通过编写java代码使用stanford corenlp提供的函数来实现。
3.训练ner模型:可以从头开始制作ner模型,但是stanford corenlp提供了预先训练好的模型,您可以直接使用它们。如果需要自定义模型,可以提供一个培训集合和一个xml配置文件,其中指定了要使用哪些特征和算法。
4.运行模型:使用corenlp服务器上的rest api或调用corenlp提供的java函数运行模型,并将结果输出到新文件或同一文件的新列中。
5.评估模型:评估模型的精度并根据需要对其进行微调,以达到所需的准确性水平。
以上是使用stanford corenlp实现ner的基本步骤。此外,还可以考虑使用其他开源工具,如opennlp或nltk。
hannlp是一个由中国清华大学自然语言处理与社会人文计算实验室开发的中文自然语言处理工具包。它旨在帮助用户快速进行各种自然语言处理任务,如中文分词、命名实体识别、依存句法分析、情感分析等等。
hannlp提供了基于java语言的api接口,可以方便地嵌入到java应用程序中。它还提供了python api和命令行界面,因此也可以方便地在python环境或终端上使用。
hannlp的主要特点包括:
1.高质量的中文自然语言处理:hannlp在中文自然语言处理方面表现出色,可以有效地解决复杂的自然语言处理问题。
2.广泛的自然语言处理功能:hannlp支持许多自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析等。
3.易于使用的api:hannlp的java api非常易于使用,开发者可以轻松地将其集成到自己的java应用程序中。
4.可定制性强:hannlp的用户可以根据自己的需求对其进行定制,以达到更好的性能。
5.开源且持续更新:hannlp是完全开源的,由清华大学自然语言处理与社会人文计算实验室维护和更新。
总之,hannlp是一个功能强大、易于使用且高度可定制的中文自然语言处理工具包,值得开发者选择和尝试。
在这里插入代码片
> 使用HanLP中的NER模型进行实体识别可以按照以下步骤进行:
1. 首先,需要导入HanLP和NER模型所需的依赖项。可以在以下网址下载模型文件和HanLP的jar包:https://github.com/hankcs/HanLP/releases
2. 创建一个 CRFSegment 对象,并加载NER模型文件。代码如下:
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer;
import java.io.IOException;
public class NER {
public static void main(String[] args) throws IOException {
String model = "D:/hanlp-model/ner/custom/ner-custom-model.crf"; // 下载的NER模型文件路径
CRFLexicalAnalyzer analyzer = new CRFLexicalAnalyzer(model);
String text = "据中国之声报道,10月22日,tiktok公司表示,他们正与美国政府就tiktok在美业务进行“建设性会谈”";
System.out.println(analyzer.analyze(text));
analyzer.close();
}
}
3. 其中, ner-custom-model.crf 是自定义的NER模型文件路径。在上述示例中,我们使用了一个带有自定义标签的NER模型。如果您使用的是HanLP内置的NER模型,可以使用以下代码:
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer;
import com.hankcs.hanlp.model.crf.NERecognizer;
import java.io.IOException;
public class NER {
public static void main(String[] args) throws IOException {
CRFLexicalAnalyzer analyzer = new CRFLexicalAnalyzer();
String text = "据中国之声报道,10月22日,tiktok公司表示,他们正与美国政府就tiktok在美业务进行“建设性会谈”";
NERecognizer recognizer = new NERecognizer(analyzer);
String result = recognizer.recognize(text);
System.out.println(result);
analyzer.close();
}
}
在上述示例中,我们使用了内置的NER模型和 NERecognizer 对象。
在这两个示例中,我们将要识别的文本输入到 analyzer.analyze(text) 方法中,然后使用 System.out.println(result) 打印包含识别实体的文本。
4. 运行代码,并查看输出结果。识别出的实体将被包含在括号中。对于上述示例,输出结果如下:
据 中国 之声 报道 , 10 月 22 日 , tiktok 公司 表示 , 他们 正 与 美国 政府 就 tiktok 在 美 业务 进行 “ 建设性 会谈 ”
在此示例中,“中国之声”和“tiktok”被成功识别为组织实体。