NlpCraft IDL Intent-Sprache

Dieser Artikel ist eine Fortsetzung des Artikels „ Entwerfen von Absichten mit Apache NlpCraft “ und enthält eine detaillierte Beschreibung der Funktionen der NlpCraft IDL-Absichtsdefinitionssprache, die für die Verwendung in NLP-Projekten basierend auf dem Apache NlpCraft- System erstellt wurde . NlpCraft IDL-Unterstützung wurde dem System seit Version 0.7.5 hinzugefügt .   





Die neue Version der deklarativen Absichtsdefinitionssprache mit dem Namen NlpCraft IDL (NlpCraft Intents Definition Language) vereinfachte die Arbeit mit Absichten in Dialog- und Suchmaschinen, die auf dem Apache NlpCraft- Projekt basieren, erheblich und erweiterte gleichzeitig die Funktionen vom System.  





NlpCraft IDL ist eine deklarative Sprache, mit der Sie Absichtsdefinitionen zur Verwendung in Apache NlpCraft- Modellen erstellen können.





Beginnen wir mit Beispielen, die die allgemeinen Fähigkeiten der Sprache demonstrieren, liefern die notwendigen Erklärungen und beschreiben dann die Konstruktionen der Sprache etwas formeller. 





, , NLP , .





, NlpCraft IDL

intent=xa
    flow="^(?:login)(^:logout)*$"
    meta={'enabled': true}
    term(a)={!(tok_id()) != "z"}[1,3]
    term(b)={
        meta_intent('enabled') == true &&
        month() == 1
    } 
    term(c)~{
        @tokId = tok_id()
        @usrTypes = meta_model('user_types')

        (tokId == 'order' || tokId == 'order_cancel') &&   
         has_all(@usrTypes, list(1, 2, 3) &&
         abs(meta_tok('order:size')) > 10
        )
   } 
      
      



:





  • - “xa”. 





  • terms. Term - , , .





    • (a) - “z”,  ( term =) . 





    • (b) - -  ”enabled” . , - month().





    • (c) - ( term ~) “order” “order_cancel”. , . , . 





  • Flow. , , “login”, “logout”. , . .     





  • Meta. , , .





intent=xb
    flow=/#flowModelMethod/
    ordered=true
    term(a)=/org.mypackage.MyClass#termMethod/?
    fragment(frag)
      
      



:  





  • - “xb”. 





  • term (”a”, , “?“, ), -  org.mypackage.MyClass#termMethod. 





  • Fragment “frag” terms ,  , terms. “frag” import.





  • Flow , flowModelMethod.





- .  









, NlpCraft IDL . .





  • , NlpCraft IDL   . .





  • . .  





  • , . URL import. , IDE (, , Intellij Idea , ). , . : 1, 2.  





NlpCraft IDL

flow, fragment, import, intent, meta, ordered, term, true, false, null.





  • intent, flow, fragment, meta, ordered, term - . 





  • fragment terms, . 





  • import - fragment, intent import.





  • true, false, null - , .





NlpCraft IDL

, :





  • import





  • fragment





  • intent





. , IDE . import fragment .  





“import” URL .





: import('http://mysite.com/nlp/idls/external.idl)







“fragment” terms. Terms . 





fragment:





fragment=buzz term~{tok_id() == 'x:alarm'}







fragment c ‘a’ ‘b’:





fragment=p1
    term={
        meta_frag('a') &&
        has_any(get(meta_frag('b'), ''), list(1, 2))
    }
      
      



fragment . ‘a’ ‘b’ . 





intent=i1
    fragment(p1, {'a': true, 'b': {'': [1, 2, 3]}})
      
      



. - , . "timeIntent". 





@NCIntentRef("timeIntent")
fun onTimeMatch(
    ctx: NCIntentMatch, 
    @NCIntentTerm("t1") tok: NCToken
): NCResult { ... }
      
      



terms

. Term - . term , term. - . 





term:





  • term. .





  • . . , , “t1”.





  • term. . term: 





    • “~“ - .





    • “=“ - .  





    : term(nums)~{tok_id() == 'nlpcraft:num'}







    term terms , . 





  • term. . term: . 





    :





    • term(nums)={tok_id() == 'nlpcraft:num'}







    • term(nums)~{true}







    • term~/org.mypackage.MyClass#termMethod/?







    term. 





  • . . : 





    • [M, N] - N M .





    • * - , [0, ∞]





    • + - , [1, ∞]





    • ? - 0 1 , [0, 1]





    :





    • term(nums)={tok_id() == 'nlpcraft:num'}[1,2]



      - “nlpcraft:num”.





    • term(nums)={tok_id() == 'nlpcraft:num'}*



      - “nlpcraft:num”.





NlpCraft IDL. 





:





  • - , . : tok_id(), tok_groups(), tok_parent().





  • NLP - , , , -. : tok_lemma(), tok_is_wordnet(), tok_swear().





  • , - ..  : tok_value(), tok_is_permutated(), tok_is_direct().





  • - , user agent. : req_tstamp(), req_addr(), req_agent().





  • - , , ..  : meta_model('my:prop'), meta_tok('nlpcraft:num:unit'), meta_user('my:prop').





  • , NER . , “geo:city“ ,  . 





  • - , . : user_admin(), comp_name(), user_signup_tstamp().





  • - , .. : meta_sys('java.home'), now(), day_of_week().





  • , , .. : lowercase("TeXt"), abs(-1.5), distinct(list(1, 2, 2, 3, 1)).





-





term - , . 





, , :





term(t2)={
    @a = meta_model('a')
    @list = list(1, 2, 3, 4)

    (@a == 42 || @a == 44) && has_all(@list, list(3, 2))
}
      
      



@. . 





, NlpCraft IDL term . java, scala, kotlin, groovy java based term. NlpCraft IDL , .    





: term(a)=/MyClass#myMethod/







, , .





Fragment

Fragment terms, .





Flow

, . 





regex, .  





: flow="^(?:login)(^:logout)*$"



 





, , “login”, “logout”. 





, , Java-based , term. 









@NCIntent("intent=x 
    flow=/com.company.dialog.Flow#customFlow/ 
    term~{tok_id() == 'some_id'}"
)
def onX(): NCResult = { .. }
      
      



, customFlow(), , , boolean. 





Meta

. JSON.





Ordered flag

. false. - terms .  





, , NlpCraft IDL, java based . ? , , - . 





NlpCraft IDL.





  • . DSL . . 





  • NlpCraft IDL , IDL , , .





  • . . , DSL .  





  • java based . Apache NlpCraft . NlpCraft IDL .





Ich hoffe, Sie konnten sich einen ersten Eindruck von den Funktionen der NlpCraft IDL Intent-Sprache und den Arten von Problemen verschaffen, die mit ihrer Hilfe gelöst werden können. Hier finden Sie eine detaillierte Beschreibung der Sprache und ihrer Fähigkeiten. Weitere Beispiele für Modelle, die in Java, Kotlin, Groovy und Scala erstellt wurden und mit NlpCraft IDL Absichten definieren, finden Sie im Projekt Github .








All Articles