Пользовательские правила для sutime (Stanford Temporal Tagger)

Я пытался добавить пользовательские правила в SUTime, и я застрял с одним из них. Я пробовал разные подходы, и ни один из них, похоже, не дал желаемого результата.

5 - 8 years returns the following.

{
    'text'  : '5 - 8 years',
    'type'  : 'DURATION',
    'value' : 'P5Y/P8Y'
}

5-8 years return the following. (no space between the hyphens)


{
    'text'  : 'years',
    'type'  : 'DURATION',
    'value' : 'PXY'
}

This is my understanding
- '5-8' and 'years' are the tokens it produces
- 5-8 is not mapped to anything and therefore is not considered relevant

Что я пробовал:-

These are results on running them on '5-8 years'

{ text: /(\d+)[-](\d+)[\s]+($TEUnits)(s)?/ =>
    Duration( TIMEUNIT_MAP[Lowercase($3)], $2) }

    gives 'value': 'P8Y' as expected. I want 'P5Y/P8Y' as the value.
  • Я пробовал различные составные правила, но, в конце концов, приблизился к решению только с помощью вышеупомянутого текстового правила.
  • Я пытался использовать различные формы продолжительности, как Duration( $1, $2, TIMEUNIT_MAP[Lowercase($3)] ), Duration( $1, $2, TIMEUNIT_MAP[Lowercase($3)], TIME_UNKNOWN, TIME_REF ) и многие другие комбинации, даже если они не имеют смысла. Все они привели к игнорированию правила и, следовательно, к тому же результату.
  • Я попытался очистить данные, заменив (цифра-цифра) на (цифра-цифра), но это привело к проблемам в определении дат.

Суть

Как я могу получить теги значения формы P5Y/P8Y из текста "I've been reading from the last 5-8 years"?

Я приложил немало усилий и несколько раз просмотрел большую часть файла правил, сопроводительную документацию и 3 других вопроса о переполнении стека. У меня также есть три других правила для работы.

0 ответов

Другие вопросы по тегам