Я борюсь с Stanford's SequenceMatchRules за распознавание следующего ввода как двух дат:
Анаксимандр (ок. 610 - ок. 546 г. до н., город Иония (в современной Турции).
(взят из набора данных Пантеона, например, http://pantheon.media.mit.edu)
'546 до н.э. работыпросто отлично, но я также хочу распознать '610' как '610 до н.э. (предпочтительно НЕ как продолжительность).
То, что я сделал до сих пор, только дляначать работу:
Изменено english.sutime.txt
:
Изменено
$POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | $INT1000TO3000 );
на
$POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | /c\.\ / $INT | $INT1000TO3000 );
И в правиле извлечения pattern: ( $POSSIBLE_YEAR)...
:
Tag($0, "YEAR_ERA",
:case {
$0 =~ ( $INT /a\.?d\.?/ ) => ERA_AD,
$0 =~ ( $INT /b\.?c\.?/ ) => ERA_BC,
:else => ERA_UNKNOWN
}
)
до
Tag($0, "YEAR_ERA",
:case {
$0 =~ ( $INT /a\.?d\.?/ ) => ERA_AD,
$0 =~ ( /c\.\ / $INT ) => ERA_BC,
$0 =~ ( $INT /b\.?c\.?/ ) => ERA_BC,
:else => ERA_UNKNOWN
}
)
Во-первых, это некрасиво, во-вторых, это вообще не сработало.
С чего мне начать, чтобы получить это право?
Я использую stanford-corenlp-full-2018-10-05
.
Я должен отметить, что Пантеон не совсем нормализован, поэтому мне придется иметь дело с дополнительными вещами, такими как CE / BCE, пропусками пробелов вокруг дат и т. Д.был бы хорош расширяемый подход.