Closed edgar2597 closed 5 years ago
Написать 2 правила: для даты и для времени. Извлекать обе сущности, для "06.12.2018" сработает правило для даты потому что у него выше покрытие (метч длиннее). Дальше метчи для даты игнорировать
ок, но разве можно извлекать две сущности одновременно? то есть я создал два отдельных правила для времени и для даты, но как их можно применить одновременно для одного парсера?
A = rule(...)
B = rule(...)
С = or_(A, B)
parser = Parser(C)
parser.findall(...)
но с таким парсером нельзя извлекать факты for match in parser.findall(text): print(match.fact). Выдается ValueError: no .interpretation(...) for root rule
Можно ввести прокси-факт с одним полем:
AFact = fact(...)
BFact = fact(...)
CFact = fact('C', ['value'])
A = rule(...).interpretation(AFact).interpretation(CFact.value)
B = rule(...).interpretation(BFact).interpretation(CFact.value)
С = or_(A, B).interpretation(CFact)
parser = Parser(C)
for match in parser.findall(...):
print(match.fact.value)
Как задать rule с ограничением все кроме... То есть если в тексте есть дата "06.12.2018" и время "07.20" и нужно извлекать время , как можно в rule для парсера настроить ограничение что наличие последующей точки после минуты означало бы что вариант не подходит? Я не нашел подобного в справочнике