gpt4 book ai didi

java - 如何检测多组词 OpenNLP

转载 作者:行者123 更新时间:2023-11-30 06:18:47 24 4
gpt4 key购买 nike

我正在使用 Java OpenNLP 进行 NER,但我不确定如何使用我训练过的自定义模型来检测多个单词(例如 New York、Bruno Mars、Hong Kong)。

我的训练数据确实涵盖了多个单词跨度:

<START:place> Hong Kong <END> ... <START:person> Putin <END>

我非常确定我的训练模型和训练数据运行良好。只是我不知道如何获取多词集。这是我所做的

    // testing the model
NameFinderME nameFinder = new NameFinderME(nameFinderModel);

String sentence = "India may US to Japan France so Putin should Hong Kong review Trump";
WhitespaceTokenizer whitespaceTokenizer = WhitespaceTokenizer.INSTANCE;

// Tokenizing the given paragraph
String tokens[] = whitespaceTokenizer.tokenize(sentence);
Span nameSpans[] = nameFinder.find(tokens);
for (Span s : nameSpans)
System.out.println(s.toString() + " " + tokens[s.getStart()]);

这是我得到的:

[0..1) place  India
[0..1) place US
[0..1) place Japan
[0..1) place France
[0..1) person Putin
[0..1) place Hong
[0..1) person Trump

但我想得到 [0..1) 地方香港,而不是把它们分成两类。

谢谢。

最佳答案

我定义了一个数组列表来包含所有多词地名,例如 {"Hong", "New", "North", "South"... } 然后用它来检查它是否包含标记[s。 getStart()]。如果是,请添加 tokens[s.getStart()] + ""+ tokens[s.getStart() + 1] 否则,添加 tokens[s.getStart()]。虽然这不是最好的方法,但现在对我来说已经足够了。

关于java - 如何检测多组词 OpenNLP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48616941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com