博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用opennlp自定义命名实体
阅读量:6277 次
发布时间:2019-06-22

本文共 2341 字,大约阅读时间需要 7 分钟。

本文主要研究一下如何使用opennlp自定义命名实体,标注训练及模型运用。

maven

org.apache.opennlp
opennlp-tools
1.8.4

实践

训练模型

// train the name finder        String typedEntities = "
NATO
\n" + "
United States
\n" + "
NATO Parliamentary Assembly
\n" + "
Edinburgh
\n" + "
Britain
\n" + "
Anders Fogh Rasmussen
\n" + "
U . S .
\n" + "
Barack Obama
\n" + "
Afghanistan
\n" + "
Rasmussen
\n" + "
Afghanistan
\n" + "
2010
"; ObjectStream
sampleStream = new NameSampleDataStream( new PlainTextByLineStream(new MockInputStreamFactory(typedEntities), "UTF-8")); TrainingParameters params = new TrainingParameters(); params.put(TrainingParameters.ALGORITHM_PARAM, "MAXENT"); params.put(TrainingParameters.ITERATIONS_PARAM, 70); params.put(TrainingParameters.CUTOFF_PARAM, 1); TokenNameFinderModel nameFinderModel = NameFinderME.train("eng", null, sampleStream, params, TokenNameFinderFactory.create(null, null, Collections.emptyMap(), new BioCodec()));
opennlp使用<START> 及 <END>来进行自定义标注实体,命名实体的话则在START之后用冒号标明,比如<START:person>

参数说明

  • ALGORITHM_PARAM
On the engineering level, using maxent is an excellent way of creating programs which perform very difficult classification tasks very well.
  • ITERATIONS_PARAM
number of training iterations, ignored if -params is used.
  • CUTOFF_PARAM
minimal number of times a feature must be seen

使用模型

上面训练完模型之后,就可以使用该模型进行解析
NameFinderME nameFinder = new NameFinderME(nameFinderModel);        // now test if it can detect the sample sentences        String[] sentence = "NATO United States Barack Obama".split("\\s+");        Span[] names = nameFinder.find(sentence);        Stream.of(names)                .forEach(span -> {                    String named = IntStream.range(span.getStart(),span.getEnd())                            .mapToObj(i -> sentence[i])                            .collect(Collectors.joining(" "));                    System.out.println("find type: "+ span.getType()+",name: " + named);                });

输出如下:

find type: organization,name: NATOfind type: location,name: United Statesfind type: person,name: Barack Obama

小结

opennlp的自定义命名实体的标注,给以了一定定制空间,方便开发者定制各自领域特殊的命名实体,以提高特定命名实体分词的准确性。

doc

转载地址:http://iogpa.baihongyu.com/

你可能感兴趣的文章
电商网站的支付接入该怎么做呢?
查看>>
六顶帽子思考法的好处
查看>>
关于Expression Tree和IL Emit的所谓的"性能差别"
查看>>
svn导出项目后报错汇总
查看>>
SAP数字化转型成不成功用事实说话:S/4HANA已获得3200家客户
查看>>
《社交网站界面设计(原书第2版)》——3.15 你是否在犯4种常见的用户onboarding错误...
查看>>
Salesforce即将推出Einstein人工智能CRM平台
查看>>
中国人工智能学会通讯——融合经济学原理的个性化推荐 1.4 未来展望
查看>>
美最大征信机构Equifax数据泄露 1.43亿美国公民个人信息被“曝光”
查看>>
如何在Linux命令行下浏览天气预报
查看>>
中国人工智能学会通讯——深度学习的迁移模型 一、迁移学习的三大优点
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
《中国人工智能学会通讯》——12.16 时空众包工作流程
查看>>
英国脱欧:3/4的技术初创公司将面临严峻时期
查看>>
JavaScript API 设计原则
查看>>
WiFi信号可进行隔墙观测 透过衣服观察人体轮廓
查看>>
蓝点数据携手北京大数据产业人才实训基地培养大数据人才
查看>>
数据价值无上限!Windows如何保护重要文件
查看>>
黑客大赛GeekPwn攻破主流厂商众多产品
查看>>
中国通信业抱团 加快布局5G时代
查看>>