当前位置: 首页 > 知识库问答 >
问题:

opennlp TokenNameFinder,用于不同于名称的实体

闾丘京
2023-03-14

我是openNlp的新手。我开始训练一个模型(TokenNameFinderTrainer),以识别名称。到目前为止还不错,但现在我想识别组织(例如“Microsoft”)。

我的问题是:opennlp默认识别哪些类型的实体?(如果有的话...)

我看到它可以处理

但是可以创建如下内容:

含义:我可以随心所欲地标记类别吗?或者

我必须使用默认类别吗?。在这种情况下,哪些是默认的?

编辑:

我通过进一步阅读找到了答案。我现在请求确认。。。

我可以随心所欲地给实体贴标签,每个实体制作一个模型更明智,对吗?。

例如:1代表地点,1代表名称,1代表公司?

在同一家(例如)公司写的像:微软,还有微软的地方,你有什么想法吗?

谢谢你的帮助!


共有1个答案

能旭
2023-03-14

你可以为任何你想要的NER模型做一个模型,我推荐每种类型一个模型。OpenNLP使用机器学习来查找实体,因此它将查找模型告诉它的内容。因此,如果你给微软和微软加上注释,甚至是微软的拼写错误,它都会试图找到它。如果您有一个小的名称列表,每个名称只有几个变体,并且需要对结果进行规范化,请考虑使用RegexNameFinder。如果拉动主干,可以使用一个映射将标签映射到一组正则表达式模式的映射来构造RegexNameFinder。

编辑:这里是RegexNameFinder的OpenNLP单元测试用例的链接。这是1.6快照

http://svn.apache.org/viewvc/opennlp/trunk/opennlp-tools/src/test/java/opennlp/tools/namefind/RegexNameFinderTest.java?view=co

如果链接不起作用,下面是一个基本示例。

  public void test() {

    Pattern testPattern = Pattern.compile("test");
    String sentence[] = new String[]{"a", "test", "b", "c"};


    Pattern[] patterns = new Pattern[]{testPattern};
    Map<String, Pattern[]> regexMap = new HashMap<>();
    String type = "testtype";

    regexMap.put(type, patterns);

    RegexNameFinder finder =
            new RegexNameFinder(regexMap);

    Span[] result = finder.find(sentence);


  }
 类似资料:
  • 我有一个类(消息),它有一些实例变量。其中一个变量的类型是interface(MessageContent)。在将这个类序列化为json的过程中,我希望使用依赖于实现的名称序列化这个变量(内容)。下面是详细信息的代码片段: 我的要求是,当消息序列化并且内容类型为VideoMessage时,序列化的json应该是: 如何通过fasterxml Jackson实现?我正在使用ObjectMapper的

  • 我正在尝试为封装在父元素中但具有不同元素名称的元素使用应用模板。在我的示例中,我想将其应用于元素,并选择其中任何一个具有值。此任务是我问的另一个问题的延续。我使用以下XML 我正在使用java应用以下XSLT 1.0。在上面的示例中,我希望模板应用于firstName和lastName,但在firstName中显示值,因为它是第一个有值的。 Java代码是Oracle tuorial页面示例中的S

  • 我正在编写一些代码来执行命名实体识别(NER),这对于英文文本来说非常好。然而,我希望能够将NER应用于任何语言。为此,我想1)识别文本的语言,然后2)将NER应用于识别的语言。对于第2步,我怀疑A)将文本翻译成英语,然后应用NER(英语),或B)将NER应用于所识别的语言。 以下是我目前掌握的代码。我想让NER在这种语言首次被识别后,为text2或任何其他语言工作: 有人有这方面的经验吗?非常感

  • 问题内容: MySQL具有方便的功能: 这可用于为应用程序创建简单但非常具体的基于名称的锁。但是,它需要数据库连接。 我有很多情况,例如: 简单地同步此方法是没有意义的,因为,例如,如果在此期间同时为用户B调用了此方法,则用户B无需等待用户A完成操作就可以开始操作,而只需为用户进行操作A和功能X的组合需要等待。 使用MySql锁,我可以执行以下操作: 由于Java锁定基于对象,因此似乎需要创建一个

  • 我得到了(超过)两个Api POSTendpoint。每一个都需要一个json作为参数。但是当我在两个endpoint参数类中使用相同的类名负载时,Swagger就不起作用了。当我改变其中的一个,例如从有效载荷到有效载荷1时,它就不起作用了。当然,我在包装类中设置了正确的名称空间,以便它找到负载。但我希望每次都使用相同的名称“有效载荷”。如何使用相同的类名负载?在这两种情况下,我都可以保留json

  • 我有两个存储库。在其中一个中,我对文件进行了更改。我提交了更改,并使用从该提交中创建一个补丁。现在,我有了第二个存储库,其中包含一个与hello.test内容相同的文件,但以不同的名称放置在不同的目录中:。如何将上述补丁应用于 文件?我试过