您可以通过使用解析器,chunker或词类标记器来标识动词短语和名词短语,从而推断出因果关系。这可以通过提取连续的动词和名词短语来完成。 这是如何使用的解析器,这将给你整个句子结构一起玩,你将需要下载解析器模型
使用这个类(我把你的句子之一)
public class ParseMap {
public static void main(String[] args) throws InvalidFormatException, IOException {
InputStream is = new FileInputStream("c:\\temp\\opennlpmodels\\en-parser-chunking.bin");
ParserModel model = new ParserModel(is);
is.close();
Parser parser = ParserFactory.create(model);
String sentence = "KARACHI: At least 12 people were gunned down in the city on Monday, two of them apparently killed in sectarian attacks and one of the other victims a Muttahida Qaumi Movement activist.";
Parse topParses[] = ParserTool.parseLine(sentence, parser, 1);
Parse p = topParses[0];
p.showCodeTree();
StringBuffer sb = new StringBuffer(sentence.length()*4);
p.show(sb);
System.out.println(sb);
}
}
输出看起来像这样(在StringBuffer的持有)
(TOP(S(``卡拉奇:)(S(NP(QP(在)(JJS至少)(CD 12))(NNS人)(VP(VBD))(VP(VBN枪杀)(ADVP(RB down))(PP(IN in) NP(NNP星期一)(CD二))(PP(IN))(NP(PRP他们))))))(ADVP(RB显然))(VP(VBD杀害)(PP(IN in)(NP(JJ教派))(NNS攻击)) ))))))(CC和)(S(NP(NP(CD一))(PP(IN))(NP(DT the)(JJ other)(NNS victim))))(NP(DT a)( NNP Muttahida)(NNP Qaumi)(NNP Movement)))(。 ))
注意你所寻找的因果关系是你的一个命名实体(卡拉奇)之后的名词动词组合。随着一些修补你可能会得到一些体面的结果。
编辑:只是要清楚,我写的是一个建议,得到的东西快速,你应该看一些这方面的语言启发,并确保实际上你想要什么是因果关系,而不仅仅是事件抽取,您可能能够实现NER模型的培训。
非常感谢,让我检查一下这个消息,然后回到你身边。 – Ashfaq
我已经训练了一个OPENNLP NER模型,有40条新闻,其中有 QUETTA 两名未成年人死亡, 3人当隋瓦斯在一所房子造成爆炸在星期二这里地理新闻报道。 然后,我用这个模型的一个看不见的消息,它开始给我所期望的输出... 你说这是一个好方法吗?我的意思是我训练了一些更多的新闻,我猜想它达到300的准确性更好.. –
Ashfaq
看起来很好(有趣的分类学),只要你训练足够,它会尽全力给你你需要的东西。 – markg