Как выполнить извлечение информации из газетных статей с помощью библиотеки НЛП?

Я работаю над университетским выпускным проектом. Моя задача - выявить причинно-следственные связи из новостей, содержащих криминал. Мне нужно извлечь также место преступления. Я использовал распознаватель имен OPENNLP для извлечения местоположения. Я обучил модель для названий местоположений, и до сих пор она отлично работала для моего сценария. Теперь я ищу что-то (способ ИЛИ библиотеку), чтобы извлечь причинно-следственную связь. Вот снимок новости, которую я использую, и текст, выделенный жирным шрифтом и курсивом, — это то, что я хочу извлечь. Нужна помощь в библиотеке для этой цели, такой же, как OPENNLP, или любая вещь, которая может быть полезна или мне для выполнения этой задачи.

Новости 1:

КАРАЧИ: По меньшей мере 12 человек были застрелены в городе в понедельник, двое из них, по-видимому, были убиты в результате межконфессиональных нападений, а одна из других жертв — активист движения Муттахида Кауми.

Новости 2:

КАРАЧИ: Полиция во вторник арестовала трех обвиняемых в ходе различных рейдов в районах Гулистан-э-Джаухар и Бригада, сообщает Geo News.

Новости 3:

КАРАЧИ: Пять членов семьи были найдены мертвыми в своем доме в городе Балдия в понедельник, сообщает Geo News.

Новости 4:

КАРАЧИ: Рейнджеры Синда в ходе своей продолжающейся целенаправленной операции в городе прошлой ночью задержали восемь профессиональных преступников и изъяли у них оружие, сообщает Geo News.


person Ashfaq    schedule 11.12.2013    source источник


Ответы (1)


Вы можете выявить причинно-следственную связь, используя синтаксический анализатор, блокировщик или тегировщик частей речи, чтобы идентифицировать глагольные фразы и именные фразы. Это можно сделать, например, извлекая последовательные глагольные и именные фразы. вот как использовать синтаксический анализатор, который даст вам всю структуру предложения для игры, вам нужно будет загрузить модель синтаксического анализатора

используйте этот класс (я добавил одно из ваших предложений)

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);
  }
}

вывод выглядит так (хранится в строковом буфере)

(TOP(S(``КАРАЧИ:) (S(NP(QP(IN At)(JJS наименьший) (CD 12))(NNS люди))(VP(VBD были)(VP(VBN расстреляны)( АДВП (РБ вниз)) (ПП (В в) (НП (НП (ДТ в) (НН град)) (ПП (В вкл) (НП (НП (ННП в понедельник) (КД два)) ( ПП (ВО оф) (НП (ПРП их))))))) (АДВП (РБ видимо)) (ВП (ВБД убит) (ПП (ВО оф) (НП (ЖЖ сектант) (ННС атакует))))) )) (CC и) (S (NP (NP (CD one)) (PP (IN of) (NP (DT the) (JJ other) (NNS жертвы)))) (NP (DT a) (NNP Muttahida) (ННП Кауми) (Движение ННП))) (активистка.)))

обратите внимание, что причинно-следственная связь, которую вы ищете, представляет собой комбинацию существительного и глагола, следующего за одной из названных вами сущностей (Карачи). Немного повозившись, можно добиться хороших результатов.

РЕДАКТИРОВАТЬ: просто для ясности: то, что я написал, было предложением получить что-то быстрое, для этого вам следует изучить некоторые лингвистические эвристики и убедиться, что то, что вы хотите, на самом деле является причинно-следственной связью, а не просто событие извлечение, которое вы можете выполнить для обучения модели NER.

person markgiaconia    schedule 11.12.2013
comment
Большое спасибо, позвольте мне проверить некоторые новости, а затем вернусь к вам. - person Ashfaq; 12.12.2013
comment
Я обучил модель OPENNLP NER с 40 подобными новостями ‹START:местоположение› QUETTA ‹END› ‹START:убито› два несовершеннолетних ‹END› были убиты и ‹START:ранены› трое ‹END› получили травмы, когда ‹START :crimeType› утечка газа Sui ‹END› в доме вызвала ‹START:crimeType› взрыв ‹END› в ‹START:день› во вторник ‹END›, сообщает Geo News. Затем я использовал эту модель для невидимых новостей, и она начала давать желаемый результат ... Что вы говорите, это хороший способ? Я имею в виду, что я тренирую ее на еще нескольких новостях, я думаю, до 300, ее точность стала лучше. - person Ashfaq; 14.12.2013
comment
Выглядит хорошо (интересная таксономия), пока вы достаточно тренируетесь, он сделает все возможное, чтобы дать вам то, что вам нужно. - person markgiaconia; 14.12.2013