2016-06-18 4 views
0

Ich versuche, Jape-Regeln zu entwickeln, um Text basierend auf den zuvor erstellten Tags zu klassifizieren.Mehrere negative Einschränkungen funktionieren nicht in JAPE

Dann erstelle ich diese Regeln:

//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} 

Wie Sie sehen können, dass ich mehrere Bedingungen haben für jeden prediction, insbesondere zur Vorhersage B und C. Aber diese Regeln noch geben Vorhersage B obwohl es passend sind Indicator.rule == a in der RECORD, die ich annehme, dass ich es bereits in der Regel oben negiere.

Was ist falsch an meinem Code?

Alle Hilfen werden geschätzt.

Thanks :)

Antwort

1

Haben Sie versucht "notContains"?

Wie in:

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

ich glaube, das! negiert die ganze Aussage und "! RECORD enthält Indikator A" wird mit allem übereinstimmen, was kein RECORD ist, der Indikator A enthält (zum Beispiel ein Token oder RECORD, der Indikator B enthält).

Mit notContains wissen Sie auch, dass es die gleiche RECORD Annotation in den beiden Anweisungen ist.

Verwandte Themen