Множественные отрицательные ограничения не работают в JAPE

Я пытаюсь разработать правила шутки для классификации текста на основе ранее созданных тегов.

Затем я создаю эти правила:

//Prediction A
Rule: A_Predictor
(
    {RECORD contains {Indicator.rule == A}}
): predict_A
-->
:predict_A.Prediction = {prediction = A}


//Prediction B
Rule: B_Predictor
(
    {RECORD contains {Indicator.rule == B}, !RECORD contains {Indicator.rule == A}}
): predict_B
-->
:predict_B.Prediction = {prediction = B}

//Prediction C
Rule: C_Predictor
(
    {RECORD contains {Indicator.rule == C}, !RECORD contains {Indicator.rule == A}, !RECORD contains {Indicator.rule == B}}
): predict_C
-->
:predict_C.Prediction = {prediction = C}

Как вы можете видеть, у меня есть несколько условий для соответствия каждому prediction, особенно для предсказания B и C. Но эти правила по-прежнему дают предсказание B, даже если в RECORD есть Indicator.rule == a, которые, как я предполагаю, я уже отрицал в правило выше.

Что не так с моим кодом?

Любая помощь будет оценена.

Спасибо :)


person A. U.    schedule 18.06.2016    source источник


Ответы (1)


Вы пробовали "не содержит"?

As in:

Rule: B_Predictor
(
    {RECORD contains {Indicator.rule == B}, RECORD notContains {Indicator.rule == A}}
): predict_B
-->
:predict_B.Prediction = {prediction = B}

Я думаю ! отрицает весь оператор, и «!RECORD содержит индикатор A» будет соответствовать всему, что не является RECORD, который содержит индикатор A (например, Token или RECORD, который содержит индикатор B).

С notContains вы также знаете, что это одна и та же аннотация RECORD в двух операторах.

person Yasen    schedule 20.06.2016