gpt4 book ai didi

java - 借助 NLP 分析句子并提取人名、组织和位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:12 25 4
gpt4 key购买 nike

我需要使用 NLP 解决以下问题,你能给我一些关于如何使用 OpenNLP API 实现这个的指示吗

一个。如何判断一个句子是否暗示过去、现在或将来的某个 Action 。

(e.g.) I was very sad last week - past
I feel like hitting my neighbor - present
I am planning to go to New York next week - future

如何找到一个人或公司或国家对应的词

(e.g.) John is planning to specialize in Electrical Engineering in UC Berkley and pursue a career with IBM).

人 = 约翰

公司 = IBM

位置 = 伯克利

谢谢

最佳答案

我可以提供解决方案

b.的解

代码如下:

    public class tikaOpenIntro {

public String Tokens[];

public static void main(String[] args) throws IOException, SAXException,
TikaException {

tikaOpenIntro toi = new tikaOpenIntro();


String cnt;

cnt="John is planning to specialize in Electrical Engineering in UC Berkley and pursue a career with IBM.";

toi.tokenization(cnt);

String names = toi.namefind(toi.Tokens);
String org = toi.orgfind(toi.Tokens);

System.out.println("person name is : "+names);
System.out.println("organization name is: "+org);

}
public String namefind(String cnt[]) {
InputStream is;
TokenNameFinderModel tnf;
NameFinderME nf;
String sd = "";
try {
is = new FileInputStream(
"/home/rahul/opennlp/model/en-ner-person.bin");
tnf = new TokenNameFinderModel(is);
nf = new NameFinderME(tnf);

Span sp[] = nf.find(cnt);

String a[] = Span.spansToStrings(sp, cnt);
StringBuilder fd = new StringBuilder();
int l = a.length;

for (int j = 0; j < l; j++) {
fd = fd.append(a[j] + "\n");

}
sd = fd.toString();

} catch (FileNotFoundException e) {

e.printStackTrace();
} catch (InvalidFormatException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
return sd;
}

public String orgfind(String cnt[]) {
InputStream is;
TokenNameFinderModel tnf;
NameFinderME nf;
String sd = "";
try {
is = new FileInputStream(
"/home/rahul/opennlp/model/en-ner-organization.bin");
tnf = new TokenNameFinderModel(is);
nf = new NameFinderME(tnf);
Span sp[] = nf.find(cnt);
String a[] = Span.spansToStrings(sp, cnt);
StringBuilder fd = new StringBuilder();
int l = a.length;

for (int j = 0; j < l; j++) {
fd = fd.append(a[j] + "\n");

}

sd = fd.toString();

} catch (FileNotFoundException e) {

e.printStackTrace();
} catch (InvalidFormatException e) {

e.printStackTrace();
} catch (IOException e) {

e.printStackTrace();
}
return sd;

}


public void tokenization(String tokens) {

InputStream is;
TokenizerModel tm;

try {
is = new FileInputStream("/home/rahul/opennlp/model/en-token.bin");
tm = new TokenizerModel(is);
Tokenizer tz = new TokenizerME(tm);
Tokens = tz.tokenize(tokens);
// System.out.println(Tokens[1]);
} catch (IOException e) {
e.printStackTrace();
}
}

}

并且您还想要位置,然后还导入位置模型,该模型在openNLP source Forge 上可用。 . 您可以下载并使用它们。

我不确定名称、位置和组织提取的概率是多少,但它几乎可以识别所有名称、位置、组织。

如果觉得 openNLP 不够用,则使用 Stanford Parser 进行名称实体识别。

关于java - 借助 NLP 分析句子并提取人名、组织和位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17990673/

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