Пользовательские правила для 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 других вопроса о переполнении стека. У меня также есть три других правила для работы.