2017-02-22 5 views
0

Мне нужно аннотировать ниже случаи. У меня есть блок текстов & необходимо получить подблоки текстов, содержащих банки. Например, ниже приведен полный текстовый блок. Мне нужно аннотировать Bank of America как название банка.Правило Uima Ruta для регулярного выражения

  • далее описано и далее как владелец и Банк Америки Н.А., правопреемников от

Там может быть много случаев для названия банка

  • Банка Америка [Банк в начале]
  • Королевский Банк Шотландии [Банк в средней]
  • Да Банк [Банк в конце] и т.д.

Так текст должен быть аннотирования полностью зависит от банка я не в состоянии написать общий правило для охвата всех дел до сих пор я пробовал ниже правил

- Rule 1 



    W[0,3] BankNameKeyWord W[0,3] {-> MARK(BANKNAME,1,3)};(looking around bank for 3 words) 

- Rule 2 

     W? W? W? BankNameKeyWord W? W? W? {-> MARK(BANKNAME,1,7)}; 

Я ищу общий подход для покрытия всех случаев.

+0

Может быть, я ошибаюсь; но учитывая, что вы используете тег java, вам не нужно показывать код Java? – GhostCat

+0

Вы не можете охватить все случаи; эта проблема не разрешима с любым видом регулярного выражения. Для этого требуется подход к обработке на естественном языке, но он никогда не достигнет 100-процентной точности. –

+0

@GhostCat добавил java тег по ошибке – Gaurav

ответ

0

Вы могли бы, возможно, применить правило, как:

(CW[0,3] @BankNameKeyWord SW.ct=="of"? CW[0,3]) {-> MARK(BANKNAME,1,3)}; 

, но это не решает проблему. Как отмечает commnets, вам нужна лингвистическая препроцессия, как chunker. Если это просто имена банков, вы можете рассмотреть словарь.

ОТКАЗ: Я разработчик UIMA Ruta

Смежные вопросы