2016-06-18 2 views
0

Я пытаюсь разработать правила jape для классификации текста на основе ранее созданных тегов на нем.Несколько отрицательных ограничений не работают в 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 хотя Indicator.rule == a в RECORD, что, я полагаю, я уже отрицал это в правиле выше.

Что случилось с моим кодом?

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

Спасибо :)

ответ

1

Вы пробовали "notContains"?

Как и в:

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 в двух утверждениях.

Смежные вопросы