Machine learning 如何使用NLP库从报纸文章中提取信息?

Machine learning 如何使用NLP库从报纸文章中提取信息?,machine-learning,nlp,opennlp,Machine Learning,Nlp,Opennlp,我正在做大学最后一年的项目,我的任务是从包含犯罪的新闻中提取因果关系。我还需要提取犯罪地点。我使用OPENNLP名称实体识别器提取位置。我训练了一个地点名称模型,到目前为止,它在我的场景中运行良好。现在我正在寻找一些东西(一种方法或一个图书馆)来提取因果关系。这是我正在使用的一条新闻的快照,粗体和斜体文本是我想要提取的。需要像OPENNLP一样的库的帮助,或者任何对我有用的东西来执行此任务 新闻1: 卡拉奇:周一,该市至少有12人被枪杀,其中两人 显然在宗派袭击中丧生,另一名受害者是Muttah

我正在做大学最后一年的项目,我的任务是从包含犯罪的新闻中提取因果关系。我还需要提取犯罪地点。我使用OPENNLP名称实体识别器提取位置。我训练了一个地点名称模型,到目前为止,它在我的场景中运行良好。现在我正在寻找一些东西(一种方法或一个图书馆)来提取因果关系。这是我正在使用的一条新闻的快照,粗体和斜体文本是我想要提取的。需要像OPENNLP一样的库的帮助,或者任何对我有用的东西来执行此任务

新闻1:

卡拉奇:周一,该市至少有12人被枪杀,其中两人 显然在宗派袭击中丧生,另一名受害者是Muttahida Qaumi 运动活动家

新闻2:

卡拉奇:据《地理新闻》报道,警方周二在Gulistan-e-Jauhar和旅区的不同突袭行动中逮捕了三名被告

新闻3:

卡拉奇:据《地理新闻》报道,周一,在巴尔迪亚镇一户人家的房子里发现五名成员死亡

新闻4:

卡拉奇:据《地理新闻》报道,信德省游骑兵昨晚在该市继续进行有针对性的行动,围捕了8名职业罪犯,并从他们手中收缴了武器


您可以使用解析器、chunker或词性标记器来识别动词短语和名词短语,从而找出因果关系。这可以通过提取连续的动词和名词短语来实现。 这就是如何使用解析器,它将为您提供完整的句子结构,您需要下载解析器模型

使用这门课(我把你的一句话放进课堂)

输出如下所示(保存在stringbuffer中)

(上)(卡拉奇)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下星期一)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下)(下))(民进党(民进党)(民进党(民进党)(民进党)(民进党)(民进党运动)(民进党)(民进党运动))民进党(民进党(民进党)(民进党运动)(民进党)民进党(民进党)民进党(民进党)民进党(民进党)民进党(民进党)民进党(民进党运动)(民进党)

请注意,您正在寻找的因果关系是一个名词-动词组合,位于一个命名实体(卡拉奇)之后。通过一些修补,你可能会得到一些不错的结果


编辑:我只是想说清楚,我写的是一个建议,建议你尽快做点什么,你应该看看一些语言启发法,并确保你想要的是真正的因果关系,而不仅仅是事件提取,你可以通过训练一个NER模型来实现这一点。

非常感谢,让我通过一些新闻检查一下,然后再回到美国。我已经训练了一个OPENNLP NER模型,其中有40条新闻,比如奎达。据《地理新闻》报道,周二,一所房子里泄漏的Sui气体导致爆炸,导致两名未成年人死亡,另外三人受伤。然后我把这个模型用于一个看不见的新闻,它开始给出我想要的输出。。。你说这是一个好方法吗?我的意思是我通过更多的新闻来训练它,我想高达300它的准确性会更好。看起来不错(有趣的分类法),只要你训练足够,它会尽最大努力给你你需要的。
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);
  }
}