diff --git a/README.md b/README.md index af6f50c..02349ab 100644 --- a/README.md +++ b/README.md @@ -59,4 +59,24 @@ Learn about how to create dictionaries in NLP++: [YouTube Video Tutorial 11](htt ## Tutorial 12: New DICT files -Tutorial on the new dict files for NLP++ that greatly simplifies and organizes dictionaries. This tutorial uses the full english parser (parse-en-us) found in the example analyzers folder which comes with the VSCode NLP++ Language extension: [YouTube Video Tutorial 12](https://youtu.be/RohelF8CP2k) \ No newline at end of file +Tutorial on the new dict files for NLP++ that greatly simplifies and organizes dictionaries. This tutorial uses the full english parser (parse-en-us) found in the example analyzers folder which comes with the VSCode NLP++ Language extension: [YouTube Video Tutorial 12](https://youtu.be/RohelF8CP2k) + +## Tutorial 13: VisualText Version 2 + +This tutorial shows of verion 2 of the NLP Engine and VisualText. The main difference is the KB View with the new dictionary and KBB files and the great tools for building and maintaining NLP analyzers that feed one into another: [YouTube Video Tutorial 13](https://youtu.be/e-JQTnXEkcg) + +### Tutorial 13-a: + +This analyzer fetches informational pages from the web on the 50 American states. This is included in one video: [YouTube Video Tutorial 13](https://youtu.be/e-JQTnXEkcg) + +### Tutorial 13-b: + +This analyzer analyzes the 50 state webpages and creates dictionaries and a knowledge base. This is included in one video: [YouTube Video Tutorial 13](https://youtu.be/e-JQTnXEkcg) + +## Tutorial 14: Mod Files + +Mod files allow for bundling text, NLP++ code (passes), dictionaries, and knowledge base files into one file that can be easily created and loaded into VisualText (the NLP++ langauge extension for VSCode).: [YouTube Video Tutorial 14](https://youtu.be/dRpGY0SPLSo) + +# Tutorial 15: Resolving Ambiguity + +This tutorial you will learn about the new mechanisms to help resolve with ambiguity. Ambiguity is when a word in isolation can have more than one meaning. Dealing with ambiguity in NLP++ is a cordinated effort between dictionaries, knowledge bases, and rule matching. [YouTube Video Tutorial 14](https://youtu.be/XLEj1hsS4ME) \ No newline at end of file diff --git a/tutorial-02/spec/init.nlp b/tutorial-02/spec/init.nlp index 77d737a..58e0b6d 100644 --- a/tutorial-02/spec/init.nlp +++ b/tutorial-02/spec/init.nlp @@ -10,12 +10,8 @@ G("max header") = 0; -G("resume") = findconcept(findroot(),"resume"); -if (!G("resume")) G("resume") = makeconcept(findroot(),"resume"); -rmchildren(G("resume")); - -G("company") = findconcept(G("resume"),"company"); -if (!G("company")) G("company") = makeconcept(G("resume"),"company"); -rmchildren(G("company")); +# Simplified since tutorials were recorded +G("resume") = getconcept(findroot(),"resume"); +G("company") = getconcept(G("resume"),"company"); @@CODE \ No newline at end of file diff --git a/tutorial-03/spec/init.nlp b/tutorial-03/spec/init.nlp index 77d737a..58e0b6d 100644 --- a/tutorial-03/spec/init.nlp +++ b/tutorial-03/spec/init.nlp @@ -10,12 +10,8 @@ G("max header") = 0; -G("resume") = findconcept(findroot(),"resume"); -if (!G("resume")) G("resume") = makeconcept(findroot(),"resume"); -rmchildren(G("resume")); - -G("company") = findconcept(G("resume"),"company"); -if (!G("company")) G("company") = makeconcept(G("resume"),"company"); -rmchildren(G("company")); +# Simplified since tutorials were recorded +G("resume") = getconcept(findroot(),"resume"); +G("company") = getconcept(G("resume"),"company"); @@CODE \ No newline at end of file diff --git a/tutorial-06/spec/init.nlp b/tutorial-06/spec/init.nlp index 77d737a..58e0b6d 100644 --- a/tutorial-06/spec/init.nlp +++ b/tutorial-06/spec/init.nlp @@ -10,12 +10,8 @@ G("max header") = 0; -G("resume") = findconcept(findroot(),"resume"); -if (!G("resume")) G("resume") = makeconcept(findroot(),"resume"); -rmchildren(G("resume")); - -G("company") = findconcept(G("resume"),"company"); -if (!G("company")) G("company") = makeconcept(G("resume"),"company"); -rmchildren(G("company")); +# Simplified since tutorials were recorded +G("resume") = getconcept(findroot(),"resume"); +G("company") = getconcept(G("resume"),"company"); @@CODE \ No newline at end of file diff --git a/tutorial-08/spec/kbInit.nlp b/tutorial-08/spec/kbInit.nlp index 5bf2d74..73dcaf7 100644 --- a/tutorial-08/spec/kbInit.nlp +++ b/tutorial-08/spec/kbInit.nlp @@ -8,10 +8,8 @@ @CODE -G("person") = findconcept(findroot(),"person"); -if (!G("person")) G("person") = makeconcept(findroot(),"person"); - -G("sentences") = findconcept(findroot(),"sentences"); -if (!G("sentences")) G("sentences") = makeconcept(findroot(),"sentences"); +# Simplified since tutorials were recorded +G("person") = getconcept(findroot(),"person"); +G("sentences") = getconcept(findroot(),"sentences"); @@CODE \ No newline at end of file diff --git a/tutorial-14/README.md b/tutorial-14/README.md new file mode 100644 index 0000000..f3234fb --- /dev/null +++ b/tutorial-14/README.md @@ -0,0 +1,5 @@ +# Tutorial 14 - Mod Files + +This tutorial is about Mod files in NLP++. Mod files allow for the bundling of text files, nlp++ files, dictionaries and knowledge base files into one file that can be easily created and loaded. The idea behind mod files is to create useful analyzer capabilities that can be incorporated into exhisting analyzers. + +Click here to see the [Tutorial Video on YouTube](https://youtu.be/dRpGY0SPLSo). \ No newline at end of file diff --git a/tutorial-14/input/numbers.txt b/tutorial-14/input/numbers.txt new file mode 100644 index 0000000..8f974be --- /dev/null +++ b/tutorial-14/input/numbers.txt @@ -0,0 +1,15 @@ +one +four +ninety seven +eighty-five +seven hundred trillion and three +twenty-nine hundred million +two hundred seven billion four hundred fifteen million thirty-nine thousand eight hundred and forty-nine +eight-nine trillion six hundred twenty billion nine hundred ninety-nine million and three +six hundred fifty-six thousand seven hundred and ninety-two +nineteen hundred and fifty-nine +nineteen fifty nine +nine twenty +ten sixty-six +twenty twenty three + diff --git a/tutorial-14/kb/user/attr.kb b/tutorial-14/kb/user/attr.kb new file mode 100644 index 0000000..9ef2096 --- /dev/null +++ b/tutorial-14/kb/user/attr.kb @@ -0,0 +1,254 @@ +ind attr +"concept" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_CONCEPT" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "x" "xu" "xwhite" +pst +"true" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "c" "co" "constrain" +pst +"true" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "c" "cl" "closed" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "l" "li" "lit" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "s" "sp" "split" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "g" "ge" "gen" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "l" "lo" "locked" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "d" "di" "dirty" +pst +"true" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "q" "qu" "quicksem" +pst +"false" +end ind + + +ind attr +"concept" "sys" +0 +"concept" "sys" "attrs" "common" "var" +psym +"con_SYS" +end ind + + +ind attr +"concept" "sys" "attrs" +0 +"concept" "sys" "attrs" "common" "var" +psym +"sys_ATTRS" +end ind + + +ind attr +"concept" "sys" "attrs" "proxy" +0 +"concept" "sys" "attrs" "common" "var" +psym +"attrs_PROXY" +end ind + + +ind attr +"concept" "sys" "attrs" "proxy" "atom" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_ATOM" +end ind + + +ind attr +"concept" "sys" "attrs" "pproxy" +0 +"concept" "sys" "attrs" "common" "var" +psym +"attrs_PPROXY" +end ind + + +ind attr +"concept" "sys" "attrs" "pproxy" "phrase" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_PHRASE" +end ind + + +ind attr +"concept" "sys" "attrs" "common" +0 +"concept" "sys" "attrs" "common" "var" +psym +"attrs_COMMON" +end ind + + +ind attr +"concept" "sys" "attrs" "common" "var" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_VAR" +end ind + + +ind attr +"concept" "sys" "nlp" +0 +"concept" "sys" "attrs" "common" "var" +psym +"sys_NLP" +end ind + + +ind attr +"concept" "sys" "nlp" "lex" "slot" "cases" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_CASES" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_mslot_CASE" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" "cap" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_CAP" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" "allcap" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_ALLCAP" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" "mixed" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_MIXED" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "mixed" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_mslot_MIXED" +end ind + + +ind attr +"concept" "sys" "dict" +0 +"concept" "sys" "attrs" "common" "var" +psym +"sys_DICT" +end ind + + +ind attr +"concept" "sys" "dict" "a" +0 +"concept" "sys" "attrs" "common" "var" +psym +"dict_ALPHA" +end ind + + +ind attr +"concept" "sys" "dict" "unknown" +0 +"concept" "sys" "attrs" "common" "var" +psym +"dict_UNKNOWN" +end ind + + +quit + diff --git a/tutorial-14/kb/user/hier.kb b/tutorial-14/kb/user/hier.kb new file mode 100644 index 0000000..e17d616 --- /dev/null +++ b/tutorial-14/kb/user/hier.kb @@ -0,0 +1,755 @@ +add empty +add root +add hier "concept" "gram" +add hier "concept" "sys" +add hier "concept" "sys" "attrs" +add hier "concept" "sys" "attrs" "proxy" +add hier "concept" "sys" "attrs" "proxy" "atom" +add hier "concept" "sys" "attrs" "pproxy" +add hier "concept" "sys" "attrs" "pproxy" "phrase" +add hier "concept" "sys" "attrs" "common" +add hier "concept" "sys" "attrs" "common" "var" +add hier "concept" "sys" "attrs" "rule_elt" +add hier "concept" "sys" "vals" +add hier "concept" "sys" "vals" "boolean" +add hier "concept" "sys" "vals" "boolean" "false" +add hier "concept" "sys" "vals" "boolean" "true" +add hier "concept" "sys" "nlp" +add hier "concept" "sys" "nlp" "wht" +add hier "concept" "sys" "nlp" "punct" +add hier "concept" "sys" "nlp" "ctrl" +add hier "concept" "sys" "nlp" "lex" +add hier "concept" "sys" "nlp" "lex" "slot" +add hier "concept" "sys" "nlp" "lex" "slot" "cases" +add hier "concept" "sys" "mean" +add hier "concept" "sys" "mean" "slot" +add hier "concept" "sys" "mean" "slot" "case" +add hier "concept" "sys" "mean" "slot" "case" "cap" +add hier "concept" "sys" "mean" "slot" "case" "allcap" +add hier "concept" "sys" "mean" "slot" "case" "mixed" +add hier "concept" "sys" "mean" "slot" "mixed" +add hier "concept" "sys" "dict" +add hier "concept" "sys" "dict" "a" +add hier "concept" "sys" "dict" "a" "A" +add hier "concept" "sys" "dict" "a" "A" "A" +add hier "concept" "sys" "dict" "a" "A" "Aa" +add hier "concept" "sys" "dict" "a" "A" "Ab" +add hier "concept" "sys" "dict" "a" "A" "Ac" +add hier "concept" "sys" "dict" "a" "A" "Ad" +add hier "concept" "sys" "dict" "a" "A" "Ae" +add hier "concept" "sys" "dict" "a" "A" "Af" +add hier "concept" "sys" "dict" "a" "A" "Ag" +add hier "concept" "sys" "dict" "a" "A" "Ah" +add hier "concept" "sys" "dict" "a" "A" "Ai" +add hier "concept" "sys" "dict" "a" "A" "Aj" +add hier "concept" "sys" "dict" "a" "A" "Ak" +add hier "concept" "sys" "dict" "a" "A" "Al" +add hier "concept" "sys" "dict" "a" "A" "Am" +add hier "concept" "sys" "dict" "a" "A" "An" +add hier "concept" "sys" "dict" "a" "A" "Ap" +add hier "concept" "sys" "dict" "a" "A" "Aq" +add hier "concept" "sys" "dict" "a" "A" "Ar" +add hier "concept" "sys" "dict" "a" "A" "As" +add hier "concept" "sys" "dict" "a" "A" "At" +add hier "concept" "sys" "dict" "a" "A" "Au" +add hier "concept" "sys" "dict" "a" "A" "Av" +add hier "concept" "sys" "dict" "a" "A" "Aw" +add hier "concept" "sys" "dict" "a" "A" "Ax" +add hier "concept" "sys" "dict" "a" "A" "Ay" +add hier "concept" "sys" "dict" "a" "A" "Az" +add hier "concept" "sys" "dict" "a" "B" +add hier "concept" "sys" "dict" "a" "B" "B" +add hier "concept" "sys" "dict" "a" "B" "Ba" +add hier "concept" "sys" "dict" "a" "B" "Be" +add hier "concept" "sys" "dict" "a" "B" "Bi" +add hier "concept" "sys" "dict" "a" "B" "Bl" +add hier "concept" "sys" "dict" "a" "B" "Bo" +add hier "concept" "sys" "dict" "a" "B" "Br" +add hier "concept" "sys" "dict" "a" "B" "Bu" +add hier "concept" "sys" "dict" "a" "B" "By" +add hier "concept" "sys" "dict" "a" "C" +add hier "concept" "sys" "dict" "a" "C" "C" +add hier "concept" "sys" "dict" "a" "C" "Ca" +add hier "concept" "sys" "dict" "a" "C" "Ce" +add hier "concept" "sys" "dict" "a" "C" "Ch" +add hier "concept" "sys" "dict" "a" "C" "Ci" +add hier "concept" "sys" "dict" "a" "C" "Cl" +add hier "concept" "sys" "dict" "a" "C" "Co" +add hier "concept" "sys" "dict" "a" "C" "Cr" +add hier "concept" "sys" "dict" "a" "C" "Cu" +add hier "concept" "sys" "dict" "a" "C" "Cy" +add hier "concept" "sys" "dict" "a" "D" +add hier "concept" "sys" "dict" "a" "D" "D" +add hier "concept" "sys" "dict" "a" "D" "Da" +add hier "concept" "sys" "dict" "a" "D" "De" +add hier "concept" "sys" "dict" "a" "D" "Di" +add hier "concept" "sys" "dict" "a" "D" "Do" +add hier "concept" "sys" "dict" "a" "D" "Dr" +add hier "concept" "sys" "dict" "a" "D" "Du" +add hier "concept" "sys" "dict" "a" "D" "Dy" +add hier "concept" "sys" "dict" "a" "E" +add hier "concept" "sys" "dict" "a" "E" "E" +add hier "concept" "sys" "dict" "a" "E" "Ea" +add hier "concept" "sys" "dict" "a" "E" "Eb" +add hier "concept" "sys" "dict" "a" "E" "Ed" +add hier "concept" "sys" "dict" "a" "E" "Ee" +add hier "concept" "sys" "dict" "a" "E" "Ef" +add hier "concept" "sys" "dict" "a" "E" "Eg" +add hier "concept" "sys" "dict" "a" "E" "Eh" +add hier "concept" "sys" "dict" "a" "E" "Ei" +add hier "concept" "sys" "dict" "a" "E" "Ej" +add hier "concept" "sys" "dict" "a" "E" "El" +add hier "concept" "sys" "dict" "a" "E" "Em" +add hier "concept" "sys" "dict" "a" "E" "En" +add hier "concept" "sys" "dict" "a" "E" "Eo" +add hier "concept" "sys" "dict" "a" "E" "Ep" +add hier "concept" "sys" "dict" "a" "E" "Eq" +add hier "concept" "sys" "dict" "a" "E" "Er" +add hier "concept" "sys" "dict" "a" "E" "Es" +add hier "concept" "sys" "dict" "a" "E" "Et" +add hier "concept" "sys" "dict" "a" "E" "Eu" +add hier "concept" "sys" "dict" "a" "E" "Ev" +add hier "concept" "sys" "dict" "a" "E" "Ew" +add hier "concept" "sys" "dict" "a" "E" "Ex" +add hier "concept" "sys" "dict" "a" "E" "Ey" +add hier "concept" "sys" "dict" "a" "E" "Ez" +add hier "concept" "sys" "dict" "a" "F" +add hier "concept" "sys" "dict" "a" "F" "F" +add hier "concept" "sys" "dict" "a" "F" "Fa" +add hier "concept" "sys" "dict" "a" "F" "Fe" +add hier "concept" "sys" "dict" "a" "F" "Fi" +add hier "concept" "sys" "dict" "a" "F" "Fl" +add hier "concept" "sys" "dict" "a" "F" "Fo" +add hier "concept" "sys" "dict" "a" "F" "Fr" +add hier "concept" "sys" "dict" "a" "F" "Fu" +add hier "concept" "sys" "dict" "a" "F" "Fy" +add hier "concept" "sys" "dict" "a" "G" +add hier "concept" "sys" "dict" "a" "G" "G" +add hier "concept" "sys" "dict" "a" "G" "Ga" +add hier "concept" "sys" "dict" "a" "G" "Ge" +add hier "concept" "sys" "dict" "a" "G" "Gh" +add hier "concept" "sys" "dict" "a" "G" "Gi" +add hier "concept" "sys" "dict" "a" "G" "Gl" +add hier "concept" "sys" "dict" "a" "G" "Gn" +add hier "concept" "sys" "dict" "a" "G" "Go" +add hier "concept" "sys" "dict" "a" "G" "Gr" +add hier "concept" "sys" "dict" "a" "G" "Gu" +add hier "concept" "sys" "dict" "a" "G" "Gy" +add hier "concept" "sys" "dict" "a" "H" +add hier "concept" "sys" "dict" "a" "H" "H" +add hier "concept" "sys" "dict" "a" "H" "Ha" +add hier "concept" "sys" "dict" "a" "H" "He" +add hier "concept" "sys" "dict" "a" "H" "Hi" +add hier "concept" "sys" "dict" "a" "H" "Ho" +add hier "concept" "sys" "dict" "a" "H" "Hu" +add hier "concept" "sys" "dict" "a" "H" "Hy" +add hier "concept" "sys" "dict" "a" "I" +add hier "concept" "sys" "dict" "a" "I" "I" +add hier "concept" "sys" "dict" "a" "I" "Ia" +add hier "concept" "sys" "dict" "a" "I" "Ib" +add hier "concept" "sys" "dict" "a" "I" "Ic" +add hier "concept" "sys" "dict" "a" "I" "Id" +add hier "concept" "sys" "dict" "a" "I" "Ig" +add hier "concept" "sys" "dict" "a" "I" "Il" +add hier "concept" "sys" "dict" "a" "I" "Im" +add hier "concept" "sys" "dict" "a" "I" "In" +add hier "concept" "sys" "dict" "a" "I" "Io" +add hier "concept" "sys" "dict" "a" "I" "Ir" +add hier "concept" "sys" "dict" "a" "I" "Is" +add hier "concept" "sys" "dict" "a" "I" "It" +add hier "concept" "sys" "dict" "a" "J" +add hier "concept" "sys" "dict" "a" "J" "J" +add hier "concept" "sys" "dict" "a" "J" "Ja" +add hier "concept" "sys" "dict" "a" "J" "Je" +add hier "concept" "sys" "dict" "a" "J" "Ji" +add hier "concept" "sys" "dict" "a" "J" "Jo" +add hier "concept" "sys" "dict" "a" "J" "Ju" +add hier "concept" "sys" "dict" "a" "K" +add hier "concept" "sys" "dict" "a" "K" "K" +add hier "concept" "sys" "dict" "a" "K" "Ka" +add hier "concept" "sys" "dict" "a" "K" "Ke" +add hier "concept" "sys" "dict" "a" "K" "Kh" +add hier "concept" "sys" "dict" "a" "K" "Ki" +add hier "concept" "sys" "dict" "a" "K" "Kl" +add hier "concept" "sys" "dict" "a" "K" "Kn" +add hier "concept" "sys" "dict" "a" "K" "Ko" +add hier "concept" "sys" "dict" "a" "K" "Kr" +add hier "concept" "sys" "dict" "a" "K" "Ku" +add hier "concept" "sys" "dict" "a" "L" +add hier "concept" "sys" "dict" "a" "L" "L" +add hier "concept" "sys" "dict" "a" "L" "La" +add hier "concept" "sys" "dict" "a" "L" "Le" +add hier "concept" "sys" "dict" "a" "L" "Li" +add hier "concept" "sys" "dict" "a" "L" "Ll" +add hier "concept" "sys" "dict" "a" "L" "Lo" +add hier "concept" "sys" "dict" "a" "L" "Lu" +add hier "concept" "sys" "dict" "a" "L" "Ly" +add hier "concept" "sys" "dict" "a" "M" +add hier "concept" "sys" "dict" "a" "M" "M" +add hier "concept" "sys" "dict" "a" "M" "Ma" +add hier "concept" "sys" "dict" "a" "M" "Me" +add hier "concept" "sys" "dict" "a" "M" "Mi" +add hier "concept" "sys" "dict" "a" "M" "Mn" +add hier "concept" "sys" "dict" "a" "M" "Mo" +add hier "concept" "sys" "dict" "a" "M" "Mu" +add hier "concept" "sys" "dict" "a" "M" "My" +add hier "concept" "sys" "dict" "a" "N" +add hier "concept" "sys" "dict" "a" "N" "N" +add hier "concept" "sys" "dict" "a" "N" "Na" +add hier "concept" "sys" "dict" "a" "N" "Ne" +add hier "concept" "sys" "dict" "a" "N" "Ni" +add hier "concept" "sys" "dict" "a" "N" "No" +add hier "concept" "sys" "dict" "a" "N" "Nu" +add hier "concept" "sys" "dict" "a" "N" "Ny" +add hier "concept" "sys" "dict" "a" "O" +add hier "concept" "sys" "dict" "a" "O" "O" +add hier "concept" "sys" "dict" "a" "O" "Oa" +add hier "concept" "sys" "dict" "a" "O" "Ob" +add hier "concept" "sys" "dict" "a" "O" "Oc" +add hier "concept" "sys" "dict" "a" "O" "Od" +add hier "concept" "sys" "dict" "a" "O" "Oe" +add hier "concept" "sys" "dict" "a" "O" "Of" +add hier "concept" "sys" "dict" "a" "O" "Og" +add hier "concept" "sys" "dict" "a" "O" "Oh" +add hier "concept" "sys" "dict" "a" "O" "Oi" +add hier "concept" "sys" "dict" "a" "O" "Ok" +add hier "concept" "sys" "dict" "a" "O" "On" +add hier "concept" "sys" "dict" "a" "O" "Oo" +add hier "concept" "sys" "dict" "a" "O" "Op" +add hier "concept" "sys" "dict" "a" "O" "Oq" +add hier "concept" "sys" "dict" "a" "O" "Or" +add hier "concept" "sys" "dict" "a" "O" "Os" +add hier "concept" "sys" "dict" "a" "O" "Ot" +add hier "concept" "sys" "dict" "a" "O" "Ou" +add hier "concept" "sys" "dict" "a" "O" "Ov" +add hier "concept" "sys" "dict" "a" "O" "Ow" +add hier "concept" "sys" "dict" "a" "O" "Ox" +add hier "concept" "sys" "dict" "a" "O" "Oy" +add hier "concept" "sys" "dict" "a" "O" "Oz" +add hier "concept" "sys" "dict" "a" "P" +add hier "concept" "sys" "dict" "a" "P" "P" +add hier "concept" "sys" "dict" "a" "P" "Pa" +add hier "concept" "sys" "dict" "a" "P" "Pe" +add hier "concept" "sys" "dict" "a" "P" "Ph" +add hier "concept" "sys" "dict" "a" "P" "Pi" +add hier "concept" "sys" "dict" "a" "P" "Pl" +add hier "concept" "sys" "dict" "a" "P" "Pn" +add hier "concept" "sys" "dict" "a" "P" "Po" +add hier "concept" "sys" "dict" "a" "P" "Pr" +add hier "concept" "sys" "dict" "a" "P" "Pt" +add hier "concept" "sys" "dict" "a" "P" "Pu" +add hier "concept" "sys" "dict" "a" "P" "Py" +add hier "concept" "sys" "dict" "a" "Q" +add hier "concept" "sys" "dict" "a" "Q" "Q" +add hier "concept" "sys" "dict" "a" "Q" "Qa" +add hier "concept" "sys" "dict" "a" "Q" "Qu" +add hier "concept" "sys" "dict" "a" "R" +add hier "concept" "sys" "dict" "a" "R" "R" +add hier "concept" "sys" "dict" "a" "R" "Ra" +add hier "concept" "sys" "dict" "a" "R" "Re" +add hier "concept" "sys" "dict" "a" "R" "Rh" +add hier "concept" "sys" "dict" "a" "R" "Ri" +add hier "concept" "sys" "dict" "a" "R" "Ro" +add hier "concept" "sys" "dict" "a" "R" "Ru" +add hier "concept" "sys" "dict" "a" "R" "Ry" +add hier "concept" "sys" "dict" "a" "S" +add hier "concept" "sys" "dict" "a" "S" "S" +add hier "concept" "sys" "dict" "a" "S" "Sa" +add hier "concept" "sys" "dict" "a" "S" "Sc" +add hier "concept" "sys" "dict" "a" "S" "Se" +add hier "concept" "sys" "dict" "a" "S" "Sf" +add hier "concept" "sys" "dict" "a" "S" "Sh" +add hier "concept" "sys" "dict" "a" "S" "Si" +add hier "concept" "sys" "dict" "a" "S" "Sk" +add hier "concept" "sys" "dict" "a" "S" "Sl" +add hier "concept" "sys" "dict" "a" "S" "Sm" +add hier "concept" "sys" "dict" "a" "S" "Sn" +add hier "concept" "sys" "dict" "a" "S" "So" +add hier "concept" "sys" "dict" "a" "S" "Sp" +add hier "concept" "sys" "dict" "a" "S" "Sq" +add hier "concept" "sys" "dict" "a" "S" "St" +add hier "concept" "sys" "dict" "a" "S" "Su" +add hier "concept" "sys" "dict" "a" "S" "Sw" +add hier "concept" "sys" "dict" "a" "S" "Sy" +add hier "concept" "sys" "dict" "a" "T" +add hier "concept" "sys" "dict" "a" "T" "T" +add hier "concept" "sys" "dict" "a" "T" "Ta" +add hier "concept" "sys" "dict" "a" "T" "Te" +add hier "concept" "sys" "dict" "a" "T" "Th" +add hier "concept" "sys" "dict" "a" "T" "Ti" +add hier "concept" "sys" "dict" "a" "T" "To" +add hier "concept" "sys" "dict" "a" "T" "Tr" +add hier "concept" "sys" "dict" "a" "T" "Tu" +add hier "concept" "sys" "dict" "a" "T" "Tw" +add hier "concept" "sys" "dict" "a" "T" "Ty" +add hier "concept" "sys" "dict" "a" "U" +add hier "concept" "sys" "dict" "a" "U" "U" +add hier "concept" "sys" "dict" "a" "U" "Ua" +add hier "concept" "sys" "dict" "a" "U" "Un" +add hier "concept" "sys" "dict" "a" "U" "Up" +add hier "concept" "sys" "dict" "a" "U" "Ur" +add hier "concept" "sys" "dict" "a" "V" +add hier "concept" "sys" "dict" "a" "V" "V" +add hier "concept" "sys" "dict" "a" "V" "Va" +add hier "concept" "sys" "dict" "a" "V" "Ve" +add hier "concept" "sys" "dict" "a" "V" "Vi" +add hier "concept" "sys" "dict" "a" "V" "Vo" +add hier "concept" "sys" "dict" "a" "V" "Vu" +add hier "concept" "sys" "dict" "a" "W" +add hier "concept" "sys" "dict" "a" "W" "W" +add hier "concept" "sys" "dict" "a" "W" "Wa" +add hier "concept" "sys" "dict" "a" "W" "We" +add hier "concept" "sys" "dict" "a" "W" "Wh" +add hier "concept" "sys" "dict" "a" "W" "Wi" +add hier "concept" "sys" "dict" "a" "W" "Wo" +add hier "concept" "sys" "dict" "a" "W" "Wr" +add hier "concept" "sys" "dict" "a" "W" "Wu" +add hier "concept" "sys" "dict" "a" "X" +add hier "concept" "sys" "dict" "a" "X" "X" +add hier "concept" "sys" "dict" "a" "X" "Xa" +add hier "concept" "sys" "dict" "a" "X" "Xe" +add hier "concept" "sys" "dict" "a" "X" "Xi" +add hier "concept" "sys" "dict" "a" "X" "Xo" +add hier "concept" "sys" "dict" "a" "X" "Xu" +add hier "concept" "sys" "dict" "a" "X" "Xy" +add hier "concept" "sys" "dict" "a" "Y" +add hier "concept" "sys" "dict" "a" "Y" "Y" +add hier "concept" "sys" "dict" "a" "Y" "Ya" +add hier "concept" "sys" "dict" "a" "Y" "Ye" +add hier "concept" "sys" "dict" "a" "Y" "Yi" +add hier "concept" "sys" "dict" "a" "Y" "Yo" +add hier "concept" "sys" "dict" "a" "Y" "Yu" +add hier "concept" "sys" "dict" "a" "Z" +add hier "concept" "sys" "dict" "a" "Z" "Z" +add hier "concept" "sys" "dict" "a" "Z" "Za" +add hier "concept" "sys" "dict" "a" "Z" "Ze" +add hier "concept" "sys" "dict" "a" "Z" "Zi" +add hier "concept" "sys" "dict" "a" "Z" "Zo" +add hier "concept" "sys" "dict" "a" "Z" "Zu" +add hier "concept" "sys" "dict" "a" "Z" "Zy" +add hier "concept" "sys" "dict" "a" "a" +add hier "concept" "sys" "dict" "a" "a" "a" +add hier "concept" "sys" "dict" "a" "a" "aa" +add hier "concept" "sys" "dict" "a" "a" "ab" +add hier "concept" "sys" "dict" "a" "a" "ac" +add hier "concept" "sys" "dict" "a" "a" "ad" +add hier "concept" "sys" "dict" "a" "a" "ae" +add hier "concept" "sys" "dict" "a" "a" "af" +add hier "concept" "sys" "dict" "a" "a" "ag" +add hier "concept" "sys" "dict" "a" "a" "ah" +add hier "concept" "sys" "dict" "a" "a" "ai" +add hier "concept" "sys" "dict" "a" "a" "aj" +add hier "concept" "sys" "dict" "a" "a" "ak" +add hier "concept" "sys" "dict" "a" "a" "al" +add hier "concept" "sys" "dict" "a" "a" "am" +add hier "concept" "sys" "dict" "a" "a" "an" +add hier "concept" "sys" "dict" "a" "a" "ap" +add hier "concept" "sys" "dict" "a" "a" "aq" +add hier "concept" "sys" "dict" "a" "a" "ar" +add hier "concept" "sys" "dict" "a" "a" "as" +add hier "concept" "sys" "dict" "a" "a" "at" +add hier "concept" "sys" "dict" "a" "a" "au" +add hier "concept" "sys" "dict" "a" "a" "av" +add hier "concept" "sys" "dict" "a" "a" "aw" +add hier "concept" "sys" "dict" "a" "a" "ax" +add hier "concept" "sys" "dict" "a" "a" "ay" +add hier "concept" "sys" "dict" "a" "a" "az" +add hier "concept" "sys" "dict" "a" "b" +add hier "concept" "sys" "dict" "a" "b" "b" +add hier "concept" "sys" "dict" "a" "b" "ba" +add hier "concept" "sys" "dict" "a" "b" "be" +add hier "concept" "sys" "dict" "a" "b" "bi" +add hier "concept" "sys" "dict" "a" "b" "bl" +add hier "concept" "sys" "dict" "a" "b" "bo" +add hier "concept" "sys" "dict" "a" "b" "br" +add hier "concept" "sys" "dict" "a" "b" "bu" +add hier "concept" "sys" "dict" "a" "b" "by" +add hier "concept" "sys" "dict" "a" "c" +add hier "concept" "sys" "dict" "a" "c" "c" +add hier "concept" "sys" "dict" "a" "c" "ca" +add hier "concept" "sys" "dict" "a" "c" "ce" +add hier "concept" "sys" "dict" "a" "c" "ch" +add hier "concept" "sys" "dict" "a" "c" "ci" +add hier "concept" "sys" "dict" "a" "c" "cl" +add hier "concept" "sys" "dict" "a" "c" "co" +add hier "concept" "sys" "dict" "a" "c" "cr" +add hier "concept" "sys" "dict" "a" "c" "cu" +add hier "concept" "sys" "dict" "a" "c" "cy" +add hier "concept" "sys" "dict" "a" "d" +add hier "concept" "sys" "dict" "a" "d" "d" +add hier "concept" "sys" "dict" "a" "d" "da" +add hier "concept" "sys" "dict" "a" "d" "de" +add hier "concept" "sys" "dict" "a" "d" "di" +add hier "concept" "sys" "dict" "a" "d" "do" +add hier "concept" "sys" "dict" "a" "d" "dr" +add hier "concept" "sys" "dict" "a" "d" "du" +add hier "concept" "sys" "dict" "a" "d" "dy" +add hier "concept" "sys" "dict" "a" "e" +add hier "concept" "sys" "dict" "a" "e" "e" +add hier "concept" "sys" "dict" "a" "e" "ea" +add hier "concept" "sys" "dict" "a" "e" "eb" +add hier "concept" "sys" "dict" "a" "e" "ed" +add hier "concept" "sys" "dict" "a" "e" "ee" +add hier "concept" "sys" "dict" "a" "e" "ef" +add hier "concept" "sys" "dict" "a" "e" "eg" +add hier "concept" "sys" "dict" "a" "e" "eh" +add hier "concept" "sys" "dict" "a" "e" "ei" +add hier "concept" "sys" "dict" "a" "e" "ej" +add hier "concept" "sys" "dict" "a" "e" "el" +add hier "concept" "sys" "dict" "a" "e" "em" +add hier "concept" "sys" "dict" "a" "e" "en" +add hier "concept" "sys" "dict" "a" "e" "eo" +add hier "concept" "sys" "dict" "a" "e" "ep" +add hier "concept" "sys" "dict" "a" "e" "eq" +add hier "concept" "sys" "dict" "a" "e" "er" +add hier "concept" "sys" "dict" "a" "e" "es" +add hier "concept" "sys" "dict" "a" "e" "et" +add hier "concept" "sys" "dict" "a" "e" "eu" +add hier "concept" "sys" "dict" "a" "e" "ev" +add hier "concept" "sys" "dict" "a" "e" "ew" +add hier "concept" "sys" "dict" "a" "e" "ex" +add hier "concept" "sys" "dict" "a" "e" "ey" +add hier "concept" "sys" "dict" "a" "e" "ez" +add hier "concept" "sys" "dict" "a" "f" +add hier "concept" "sys" "dict" "a" "f" "f" +add hier "concept" "sys" "dict" "a" "f" "fa" +add hier "concept" "sys" "dict" "a" "f" "fe" +add hier "concept" "sys" "dict" "a" "f" "fi" +add hier "concept" "sys" "dict" "a" "f" "fl" +add hier "concept" "sys" "dict" "a" "f" "fo" +add hier "concept" "sys" "dict" "a" "f" "fr" +add hier "concept" "sys" "dict" "a" "f" "fu" +add hier "concept" "sys" "dict" "a" "f" "fy" +add hier "concept" "sys" "dict" "a" "g" +add hier "concept" "sys" "dict" "a" "g" "g" +add hier "concept" "sys" "dict" "a" "g" "ga" +add hier "concept" "sys" "dict" "a" "g" "ge" +add hier "concept" "sys" "dict" "a" "g" "gh" +add hier "concept" "sys" "dict" "a" "g" "gi" +add hier "concept" "sys" "dict" "a" "g" "gl" +add hier "concept" "sys" "dict" "a" "g" "gn" +add hier "concept" "sys" "dict" "a" "g" "go" +add hier "concept" "sys" "dict" "a" "g" "gr" +add hier "concept" "sys" "dict" "a" "g" "gu" +add hier "concept" "sys" "dict" "a" "g" "gy" +add hier "concept" "sys" "dict" "a" "h" +add hier "concept" "sys" "dict" "a" "h" "h" +add hier "concept" "sys" "dict" "a" "h" "ha" +add hier "concept" "sys" "dict" "a" "h" "he" +add hier "concept" "sys" "dict" "a" "h" "hi" +add hier "concept" "sys" "dict" "a" "h" "ho" +add hier "concept" "sys" "dict" "a" "h" "hu" +add hier "concept" "sys" "dict" "a" "h" "hy" +add hier "concept" "sys" "dict" "a" "i" +add hier "concept" "sys" "dict" "a" "i" "i" +add hier "concept" "sys" "dict" "a" "i" "ia" +add hier "concept" "sys" "dict" "a" "i" "ib" +add hier "concept" "sys" "dict" "a" "i" "ic" +add hier "concept" "sys" "dict" "a" "i" "id" +add hier "concept" "sys" "dict" "a" "i" "ig" +add hier "concept" "sys" "dict" "a" "i" "il" +add hier "concept" "sys" "dict" "a" "i" "im" +add hier "concept" "sys" "dict" "a" "i" "in" +add hier "concept" "sys" "dict" "a" "i" "io" +add hier "concept" "sys" "dict" "a" "i" "ir" +add hier "concept" "sys" "dict" "a" "i" "is" +add hier "concept" "sys" "dict" "a" "i" "it" +add hier "concept" "sys" "dict" "a" "j" +add hier "concept" "sys" "dict" "a" "j" "j" +add hier "concept" "sys" "dict" "a" "j" "ja" +add hier "concept" "sys" "dict" "a" "j" "je" +add hier "concept" "sys" "dict" "a" "j" "ji" +add hier "concept" "sys" "dict" "a" "j" "jo" +add hier "concept" "sys" "dict" "a" "j" "ju" +add hier "concept" "sys" "dict" "a" "k" +add hier "concept" "sys" "dict" "a" "k" "k" +add hier "concept" "sys" "dict" "a" "k" "ka" +add hier "concept" "sys" "dict" "a" "k" "ke" +add hier "concept" "sys" "dict" "a" "k" "kh" +add hier "concept" "sys" "dict" "a" "k" "ki" +add hier "concept" "sys" "dict" "a" "k" "kl" +add hier "concept" "sys" "dict" "a" "k" "kn" +add hier "concept" "sys" "dict" "a" "k" "ko" +add hier "concept" "sys" "dict" "a" "k" "kr" +add hier "concept" "sys" "dict" "a" "k" "ku" +add hier "concept" "sys" "dict" "a" "l" +add hier "concept" "sys" "dict" "a" "l" "l" +add hier "concept" "sys" "dict" "a" "l" "la" +add hier "concept" "sys" "dict" "a" "l" "le" +add hier "concept" "sys" "dict" "a" "l" "li" +add hier "concept" "sys" "dict" "a" "l" "ll" +add hier "concept" "sys" "dict" "a" "l" "lo" +add hier "concept" "sys" "dict" "a" "l" "lu" +add hier "concept" "sys" "dict" "a" "l" "ly" +add hier "concept" "sys" "dict" "a" "m" +add hier "concept" "sys" "dict" "a" "m" "m" +add hier "concept" "sys" "dict" "a" "m" "ma" +add hier "concept" "sys" "dict" "a" "m" "me" +add hier "concept" "sys" "dict" "a" "m" "mi" +add hier "concept" "sys" "dict" "a" "m" "mn" +add hier "concept" "sys" "dict" "a" "m" "mo" +add hier "concept" "sys" "dict" "a" "m" "mu" +add hier "concept" "sys" "dict" "a" "m" "my" +add hier "concept" "sys" "dict" "a" "n" +add hier "concept" "sys" "dict" "a" "n" "n" +add hier "concept" "sys" "dict" "a" "n" "na" +add hier "concept" "sys" "dict" "a" "n" "ne" +add hier "concept" "sys" "dict" "a" "n" "ni" +add hier "concept" "sys" "dict" "a" "n" "no" +add hier "concept" "sys" "dict" "a" "n" "nu" +add hier "concept" "sys" "dict" "a" "n" "ny" +add hier "concept" "sys" "dict" "a" "o" +add hier "concept" "sys" "dict" "a" "o" "o" +add hier "concept" "sys" "dict" "a" "o" "oa" +add hier "concept" "sys" "dict" "a" "o" "ob" +add hier "concept" "sys" "dict" "a" "o" "oc" +add hier "concept" "sys" "dict" "a" "o" "od" +add hier "concept" "sys" "dict" "a" "o" "oe" +add hier "concept" "sys" "dict" "a" "o" "of" +add hier "concept" "sys" "dict" "a" "o" "og" +add hier "concept" "sys" "dict" "a" "o" "oh" +add hier "concept" "sys" "dict" "a" "o" "oi" +add hier "concept" "sys" "dict" "a" "o" "ok" +add hier "concept" "sys" "dict" "a" "o" "on" +add hier "concept" "sys" "dict" "a" "o" "oo" +add hier "concept" "sys" "dict" "a" "o" "op" +add hier "concept" "sys" "dict" "a" "o" "oq" +add hier "concept" "sys" "dict" "a" "o" "or" +add hier "concept" "sys" "dict" "a" "o" "os" +add hier "concept" "sys" "dict" "a" "o" "ot" +add hier "concept" "sys" "dict" "a" "o" "ou" +add hier "concept" "sys" "dict" "a" "o" "ov" +add hier "concept" "sys" "dict" "a" "o" "ow" +add hier "concept" "sys" "dict" "a" "o" "ox" +add hier "concept" "sys" "dict" "a" "o" "oy" +add hier "concept" "sys" "dict" "a" "o" "oz" +add hier "concept" "sys" "dict" "a" "p" +add hier "concept" "sys" "dict" "a" "p" "p" +add hier "concept" "sys" "dict" "a" "p" "pa" +add hier "concept" "sys" "dict" "a" "p" "pe" +add hier "concept" "sys" "dict" "a" "p" "ph" +add hier "concept" "sys" "dict" "a" "p" "pi" +add hier "concept" "sys" "dict" "a" "p" "pl" +add hier "concept" "sys" "dict" "a" "p" "pn" +add hier "concept" "sys" "dict" "a" "p" "po" +add hier "concept" "sys" "dict" "a" "p" "pr" +add hier "concept" "sys" "dict" "a" "p" "pt" +add hier "concept" "sys" "dict" "a" "p" "pu" +add hier "concept" "sys" "dict" "a" "p" "py" +add hier "concept" "sys" "dict" "a" "q" +add hier "concept" "sys" "dict" "a" "q" "q" +add hier "concept" "sys" "dict" "a" "q" "qa" +add hier "concept" "sys" "dict" "a" "q" "qu" +add hier "concept" "sys" "dict" "a" "r" +add hier "concept" "sys" "dict" "a" "r" "r" +add hier "concept" "sys" "dict" "a" "r" "ra" +add hier "concept" "sys" "dict" "a" "r" "re" +add hier "concept" "sys" "dict" "a" "r" "rh" +add hier "concept" "sys" "dict" "a" "r" "ri" +add hier "concept" "sys" "dict" "a" "r" "ro" +add hier "concept" "sys" "dict" "a" "r" "ru" +add hier "concept" "sys" "dict" "a" "r" "ry" +add hier "concept" "sys" "dict" "a" "s" +add hier "concept" "sys" "dict" "a" "s" "s" +add hier "concept" "sys" "dict" "a" "s" "sa" +add hier "concept" "sys" "dict" "a" "s" "sc" +add hier "concept" "sys" "dict" "a" "s" "se" +add hier "concept" "sys" "dict" "a" "s" "sf" +add hier "concept" "sys" "dict" "a" "s" "sh" +add hier "concept" "sys" "dict" "a" "s" "si" +add hier "concept" "sys" "dict" "a" "s" "sk" +add hier "concept" "sys" "dict" "a" "s" "sl" +add hier "concept" "sys" "dict" "a" "s" "sm" +add hier "concept" "sys" "dict" "a" "s" "sn" +add hier "concept" "sys" "dict" "a" "s" "so" +add hier "concept" "sys" "dict" "a" "s" "sp" +add hier "concept" "sys" "dict" "a" "s" "sq" +add hier "concept" "sys" "dict" "a" "s" "st" +add hier "concept" "sys" "dict" "a" "s" "su" +add hier "concept" "sys" "dict" "a" "s" "sw" +add hier "concept" "sys" "dict" "a" "s" "sy" +add hier "concept" "sys" "dict" "a" "t" +add hier "concept" "sys" "dict" "a" "t" "t" +add hier "concept" "sys" "dict" "a" "t" "ta" +add hier "concept" "sys" "dict" "a" "t" "te" +add hier "concept" "sys" "dict" "a" "t" "th" +add hier "concept" "sys" "dict" "a" "t" "ti" +add hier "concept" "sys" "dict" "a" "t" "to" +add hier "concept" "sys" "dict" "a" "t" "tr" +add hier "concept" "sys" "dict" "a" "t" "tu" +add hier "concept" "sys" "dict" "a" "t" "tw" +add hier "concept" "sys" "dict" "a" "t" "ty" +add hier "concept" "sys" "dict" "a" "u" +add hier "concept" "sys" "dict" "a" "u" "u" +add hier "concept" "sys" "dict" "a" "u" "ua" +add hier "concept" "sys" "dict" "a" "u" "un" +add hier "concept" "sys" "dict" "a" "u" "up" +add hier "concept" "sys" "dict" "a" "u" "ur" +add hier "concept" "sys" "dict" "a" "v" +add hier "concept" "sys" "dict" "a" "v" "v" +add hier "concept" "sys" "dict" "a" "v" "va" +add hier "concept" "sys" "dict" "a" "v" "ve" +add hier "concept" "sys" "dict" "a" "v" "vi" +add hier "concept" "sys" "dict" "a" "v" "vo" +add hier "concept" "sys" "dict" "a" "v" "vu" +add hier "concept" "sys" "dict" "a" "w" +add hier "concept" "sys" "dict" "a" "w" "w" +add hier "concept" "sys" "dict" "a" "w" "wa" +add hier "concept" "sys" "dict" "a" "w" "we" +add hier "concept" "sys" "dict" "a" "w" "wh" +add hier "concept" "sys" "dict" "a" "w" "wi" +add hier "concept" "sys" "dict" "a" "w" "wo" +add hier "concept" "sys" "dict" "a" "w" "wr" +add hier "concept" "sys" "dict" "a" "w" "wu" +add hier "concept" "sys" "dict" "a" "x" +add hier "concept" "sys" "dict" "a" "x" "x" +add hier "concept" "sys" "dict" "a" "x" "xa" +add hier "concept" "sys" "dict" "a" "x" "xe" +add hier "concept" "sys" "dict" "a" "x" "xi" +add hier "concept" "sys" "dict" "a" "x" "xo" +add hier "concept" "sys" "dict" "a" "x" "xu" +add hier "concept" "sys" "dict" "a" "x" "xy" +add hier "concept" "sys" "dict" "a" "y" +add hier "concept" "sys" "dict" "a" "y" "y" +add hier "concept" "sys" "dict" "a" "y" "ya" +add hier "concept" "sys" "dict" "a" "y" "ye" +add hier "concept" "sys" "dict" "a" "y" "yi" +add hier "concept" "sys" "dict" "a" "y" "yo" +add hier "concept" "sys" "dict" "a" "y" "yu" +add hier "concept" "sys" "dict" "a" "z" +add hier "concept" "sys" "dict" "a" "z" "z" +add hier "concept" "sys" "dict" "a" "z" "za" +add hier "concept" "sys" "dict" "a" "z" "ze" +add hier "concept" "sys" "dict" "a" "z" "zi" +add hier "concept" "sys" "dict" "a" "z" "zo" +add hier "concept" "sys" "dict" "a" "z" "zu" +add hier "concept" "sys" "dict" "a" "z" "zy" +add hier "concept" "sys" "dict" "0" +add hier "concept" "sys" "dict" "0" "0" +add hier "concept" "sys" "dict" "0" "0" "0" +add hier "concept" "sys" "dict" "0" "0" "00" +add hier "concept" "sys" "dict" "0" "0" "01" +add hier "concept" "sys" "dict" "0" "0" "02" +add hier "concept" "sys" "dict" "0" "0" "03" +add hier "concept" "sys" "dict" "0" "0" "04" +add hier "concept" "sys" "dict" "0" "0" "05" +add hier "concept" "sys" "dict" "0" "0" "06" +add hier "concept" "sys" "dict" "0" "0" "07" +add hier "concept" "sys" "dict" "0" "0" "08" +add hier "concept" "sys" "dict" "0" "0" "09" +add hier "concept" "sys" "dict" "0" "1" +add hier "concept" "sys" "dict" "0" "1" "1" +add hier "concept" "sys" "dict" "0" "1" "10" +add hier "concept" "sys" "dict" "0" "1" "11" +add hier "concept" "sys" "dict" "0" "1" "12" +add hier "concept" "sys" "dict" "0" "1" "13" +add hier "concept" "sys" "dict" "0" "1" "14" +add hier "concept" "sys" "dict" "0" "1" "15" +add hier "concept" "sys" "dict" "0" "1" "16" +add hier "concept" "sys" "dict" "0" "1" "17" +add hier "concept" "sys" "dict" "0" "1" "18" +add hier "concept" "sys" "dict" "0" "1" "19" +add hier "concept" "sys" "dict" "0" "2" +add hier "concept" "sys" "dict" "0" "2" "2" +add hier "concept" "sys" "dict" "0" "2" "20" +add hier "concept" "sys" "dict" "0" "2" "21" +add hier "concept" "sys" "dict" "0" "2" "22" +add hier "concept" "sys" "dict" "0" "2" "23" +add hier "concept" "sys" "dict" "0" "2" "24" +add hier "concept" "sys" "dict" "0" "2" "25" +add hier "concept" "sys" "dict" "0" "2" "26" +add hier "concept" "sys" "dict" "0" "2" "27" +add hier "concept" "sys" "dict" "0" "2" "28" +add hier "concept" "sys" "dict" "0" "2" "29" +add hier "concept" "sys" "dict" "0" "3" +add hier "concept" "sys" "dict" "0" "3" "3" +add hier "concept" "sys" "dict" "0" "3" "30" +add hier "concept" "sys" "dict" "0" "3" "31" +add hier "concept" "sys" "dict" "0" "3" "32" +add hier "concept" "sys" "dict" "0" "3" "33" +add hier "concept" "sys" "dict" "0" "3" "34" +add hier "concept" "sys" "dict" "0" "3" "35" +add hier "concept" "sys" "dict" "0" "3" "36" +add hier "concept" "sys" "dict" "0" "3" "37" +add hier "concept" "sys" "dict" "0" "3" "38" +add hier "concept" "sys" "dict" "0" "3" "39" +add hier "concept" "sys" "dict" "0" "4" +add hier "concept" "sys" "dict" "0" "4" "4" +add hier "concept" "sys" "dict" "0" "4" "40" +add hier "concept" "sys" "dict" "0" "4" "41" +add hier "concept" "sys" "dict" "0" "4" "42" +add hier "concept" "sys" "dict" "0" "4" "43" +add hier "concept" "sys" "dict" "0" "4" "44" +add hier "concept" "sys" "dict" "0" "4" "45" +add hier "concept" "sys" "dict" "0" "4" "46" +add hier "concept" "sys" "dict" "0" "4" "47" +add hier "concept" "sys" "dict" "0" "4" "48" +add hier "concept" "sys" "dict" "0" "4" "49" +add hier "concept" "sys" "dict" "0" "5" +add hier "concept" "sys" "dict" "0" "5" "5" +add hier "concept" "sys" "dict" "0" "5" "50" +add hier "concept" "sys" "dict" "0" "5" "51" +add hier "concept" "sys" "dict" "0" "5" "52" +add hier "concept" "sys" "dict" "0" "5" "53" +add hier "concept" "sys" "dict" "0" "5" "54" +add hier "concept" "sys" "dict" "0" "5" "55" +add hier "concept" "sys" "dict" "0" "5" "56" +add hier "concept" "sys" "dict" "0" "5" "57" +add hier "concept" "sys" "dict" "0" "5" "58" +add hier "concept" "sys" "dict" "0" "5" "59" +add hier "concept" "sys" "dict" "0" "6" +add hier "concept" "sys" "dict" "0" "6" "6" +add hier "concept" "sys" "dict" "0" "6" "60" +add hier "concept" "sys" "dict" "0" "6" "61" +add hier "concept" "sys" "dict" "0" "6" "62" +add hier "concept" "sys" "dict" "0" "6" "63" +add hier "concept" "sys" "dict" "0" "6" "64" +add hier "concept" "sys" "dict" "0" "6" "65" +add hier "concept" "sys" "dict" "0" "6" "66" +add hier "concept" "sys" "dict" "0" "6" "67" +add hier "concept" "sys" "dict" "0" "6" "68" +add hier "concept" "sys" "dict" "0" "6" "69" +add hier "concept" "sys" "dict" "0" "7" +add hier "concept" "sys" "dict" "0" "7" "7" +add hier "concept" "sys" "dict" "0" "7" "70" +add hier "concept" "sys" "dict" "0" "7" "71" +add hier "concept" "sys" "dict" "0" "7" "72" +add hier "concept" "sys" "dict" "0" "7" "73" +add hier "concept" "sys" "dict" "0" "7" "74" +add hier "concept" "sys" "dict" "0" "7" "75" +add hier "concept" "sys" "dict" "0" "7" "76" +add hier "concept" "sys" "dict" "0" "7" "77" +add hier "concept" "sys" "dict" "0" "7" "78" +add hier "concept" "sys" "dict" "0" "7" "79" +add hier "concept" "sys" "dict" "0" "8" +add hier "concept" "sys" "dict" "0" "8" "8" +add hier "concept" "sys" "dict" "0" "8" "80" +add hier "concept" "sys" "dict" "0" "8" "81" +add hier "concept" "sys" "dict" "0" "8" "82" +add hier "concept" "sys" "dict" "0" "8" "83" +add hier "concept" "sys" "dict" "0" "8" "84" +add hier "concept" "sys" "dict" "0" "8" "85" +add hier "concept" "sys" "dict" "0" "8" "86" +add hier "concept" "sys" "dict" "0" "8" "87" +add hier "concept" "sys" "dict" "0" "8" "88" +add hier "concept" "sys" "dict" "0" "8" "89" +add hier "concept" "sys" "dict" "0" "9" +add hier "concept" "sys" "dict" "0" "9" "9" +add hier "concept" "sys" "dict" "0" "9" "90" +add hier "concept" "sys" "dict" "0" "9" "91" +add hier "concept" "sys" "dict" "0" "9" "92" +add hier "concept" "sys" "dict" "0" "9" "93" +add hier "concept" "sys" "dict" "0" "9" "94" +add hier "concept" "sys" "dict" "0" "9" "95" +add hier "concept" "sys" "dict" "0" "9" "96" +add hier "concept" "sys" "dict" "0" "9" "97" +add hier "concept" "sys" "dict" "0" "9" "98" +add hier "concept" "sys" "dict" "0" "9" "99" +add hier "concept" "sys" "dict" "A" +add hier "concept" "sys" "dict" "wht" +add hier "concept" "sys" "dict" "pnct" +add hier "concept" "sys" "dict" "ctrl" +add hier "concept" "sys" "dict" "unknown" + +quit + diff --git a/tutorial-14/kb/user/numbers.dict b/tutorial-14/kb/user/numbers.dict new file mode 100644 index 0000000..46425e8 --- /dev/null +++ b/tutorial-14/kb/user/numbers.dict @@ -0,0 +1,35 @@ +# Number words with numberic values + +one s=number numeric=1 +two s=number numeric=2 +three s=number numeric=3 +four s=number numeric=4 +five s=number numeric=5 +six s=number numeric=6 +seven s=number numeric=7 +eight s=number numeric=8 +nine s=number numeric=9 +ten s=number numeric=10 power=1 +eleven s=number numeric=11 power=1 +twelve s=number numeric=12 power=1 +thirteen s=number numeric=13 power=1 +fourteen s=number numeric=14 power=1 +fifteen s=number numeric=15 power=1 +sixteen s=number numeric=16 power=1 +seventeen s=number numeric=17 power=1 +eighteen s=number numeric=18 power=1 +nineteen s=number numeric=19 power=1 +twenty s=number numeric=20 power=1 +thirty s=number numeric=30 power=1 +forty s=number numeric=40 power=1 +fifty s=number numeric=50 power=1 +sixty s=number numeric=60 power=1 +seventy s=number numeric=70 power=1 +eighty s=number numeric=80 power=1 +ninety s=number numeric=90 power=1 +hundred s=number numeric=100 power=2 +thousand s=number numeric=1000 power=3 +million s=number numeric=1000000 power=4 +billion s=number numeric=1000000000 power=5 +trillion s=number numeric=1000000000000 power=6 + diff --git a/tutorial-14/kb/user/phr.kb b/tutorial-14/kb/user/phr.kb new file mode 100644 index 0000000..3b3c7fc --- /dev/null +++ b/tutorial-14/kb/user/phr.kb @@ -0,0 +1,3 @@ + +quit + diff --git a/tutorial-14/kb/user/word.kb b/tutorial-14/kb/user/word.kb new file mode 100644 index 0000000..36151ce --- /dev/null +++ b/tutorial-14/kb/user/word.kb @@ -0,0 +1,57 @@ +add word " +" +add word " " +add word " " +add word ">" +add word "<" +add word "/" +add word "\\" +add word "|" +add word "]" +add word "[" +add word "}" +add word "{" +add word "+" +add word "=" +add word "_" +add word "-" +add word ")" +add word "(" +add word "*" +add word "&" +add word "^" +add word "%" +add word "$" +add word "#" +add word "@" +add word "`" +add word "~" +add word "?" +add word "!" +add word "\"" +add word "'" +add word ":" +add word "," +add word "." +add word ";" +add word "closed" +add word "constrain" +add word "dirty" +add word "gen" +add word "lit" +add word "locked" +add word "quicksem" +add word "split" +add word "xwhite" +add word active +add word algo +add word building +add word comment +add word data +add word pass +add word passnum +add word state +add word type + +quit + diff --git a/tutorial-14/spec/Lines.nlp b/tutorial-14/spec/Lines.nlp new file mode 100644 index 0000000..34453fd --- /dev/null +++ b/tutorial-14/spec/Lines.nlp @@ -0,0 +1,21 @@ +################################################### +# FILE: lines.pat +# SUBJ: Gather Lines +# CREATED: 10/Mar/99 13:35:22 +# Date of this version: 31/Aug/01 +# Copyright 1999-2004, Text Analysis International +################################################### + +@NODES _ROOT + +@RULES + +_BLANKLINE <- + _xWILD [min=0 max=0 matches=(\ \t \r)] ### (1) + \n ### (2) + @@ + +_LINE <- + _xWILD [min=0 max=0 fails=(\r \n)] ### (1) + _xWILD [one match=(\n _xEND)] ### (2) + @@ diff --git a/tutorial-14/spec/RemoveWhiteSpace.nlp b/tutorial-14/spec/RemoveWhiteSpace.nlp new file mode 100644 index 0000000..d0332ac --- /dev/null +++ b/tutorial-14/spec/RemoveWhiteSpace.nlp @@ -0,0 +1,20 @@ +############################################### +# FILE: RemoveWhiteSpace.pat # +# SUBJ: Remove white space # +# AUTH: David de Hilster # +# CREATED: 10/May/00 17:29:33 # +# Date of this version: 31/Aug/01 # +# Copyright 2000, Text Analysis International # +############################################### + +@NODES _LINE + +@POST +excise(1,1); +noop(); + +@RULES + +_xNIL <- + _xWHITE [s] ### (1) + @@ diff --git a/tutorial-14/spec/analyzer.seq b/tutorial-14/spec/analyzer.seq new file mode 100644 index 0000000..3101b21 --- /dev/null +++ b/tutorial-14/spec/analyzer.seq @@ -0,0 +1,4 @@ +dicttok nil # Gen: Convert input to token list +nlp Lines # comment +nlp RemoveWhiteSpace # comment +nlp numbers # comment \ No newline at end of file diff --git a/tutorial-14/spec/numbers.nlp b/tutorial-14/spec/numbers.nlp new file mode 100644 index 0000000..6b766a0 --- /dev/null +++ b/tutorial-14/spec/numbers.nlp @@ -0,0 +1,57 @@ +############################################### +# FILE: numbers +# SUBJ: comment +# AUTH: David de Hilster +# CREATED: 2023-3-2 22:8:25 +# MODIFIED: +############################################### + +@NODES _LINE + +@POST + L("node") = N(1); + L("last") = 0; + L("final") = 0; + "number.txt" << phrasetext() << "\n"; + + while (L("node")) { + L("name") = pnname(L("node")); + if (L("name") != "," && L("name") != "-" && L("name") != "and" && L("name") != "&") { + L("num") = num(pnvar(L("node"),"numeric")); + L("power") = num(pnvar(L("node"),"power")); + "number.txt" << pnname(L("node")) << " " << L("num") << " " << L("last") << " => "; + + if (L("last power") <= 1 && L("power") == 1) { + L("last") = L("last") * 100 + L("num"); + } else if (L("power") <= 2) { + if (L("num") > L("last")) { + if (L("last")) + L("last") = L("last") * L("num"); + else + L("last") = L("num"); + } else { + L("last") = L("last") + L("num"); + } + "number.txt" << L("last"); + } else { + L("final") = L("final") + L("last") * L("num"); + "number.txt" << "final = " << L("final") << " "; + L("last") = 0; + } + + "number.txt" << "\n"; + L("last power") = L("power"); + } + L("node") = pnnext(L("node")); + } + L("final") = L("final") + L("last"); + "number.txt" << "=====> " << L("final") << "\n\n"; + S("numeric") = L("final"); + single(); + +@RULES +_number <- + _xWILD [plus match=(_number \- \, and \&)] ### (1) + @@ + + diff --git a/tutorial-14/tmp/README.md b/tutorial-14/tmp/README.md new file mode 100644 index 0000000..e4f67dc --- /dev/null +++ b/tutorial-14/tmp/README.md @@ -0,0 +1 @@ +This directory is for the function kbdumptree. The engine should create this but sometimes permission problems arrise. \ No newline at end of file diff --git a/tutorial-15/README.md b/tutorial-15/README.md new file mode 100644 index 0000000..01bf211 --- /dev/null +++ b/tutorial-15/README.md @@ -0,0 +1,5 @@ +# Tutorial 15: Resolving Ambiguity + +This tutorial you will learn about the new mechanisms to help resolve with ambiguity. Ambiguity is when a word in isolation can have more than one meaning. Dealing with ambiguity in NLP++ is a cordinated effort between dictionaries, knowledge bases, and rule matching. + +Click here to see the [Tutorial Video on YouTube](https://youtu.be/XLEj1hsS4ME). \ No newline at end of file diff --git a/tutorial-15/input/text.txt b/tutorial-15/input/text.txt new file mode 100644 index 0000000..795fc2b --- /dev/null +++ b/tutorial-15/input/text.txt @@ -0,0 +1,2 @@ +Did you google his friend? +He works at google. \ No newline at end of file diff --git a/tutorial-15/kb/user/ambigs.dict b/tutorial-15/kb/user/ambigs.dict new file mode 100644 index 0000000..d117d97 --- /dev/null +++ b/tutorial-15/kb/user/ambigs.dict @@ -0,0 +1,6 @@ +google pos=verb +google pos=noun +google pos=adj + +at pos=prep +his pos=pro \ No newline at end of file diff --git a/tutorial-15/kb/user/ambigs.kbb b/tutorial-15/kb/user/ambigs.kbb new file mode 100644 index 0000000..25dcfd1 --- /dev/null +++ b/tutorial-15/kb/user/ambigs.kbb @@ -0,0 +1,4 @@ +dictionary + google + m01: pos=verb, syn=search + m02: pos=noun, entity=company \ No newline at end of file diff --git a/tutorial-15/kb/user/attr.kb b/tutorial-15/kb/user/attr.kb new file mode 100644 index 0000000..9ef2096 --- /dev/null +++ b/tutorial-15/kb/user/attr.kb @@ -0,0 +1,254 @@ +ind attr +"concept" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_CONCEPT" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "x" "xu" "xwhite" +pst +"true" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "c" "co" "constrain" +pst +"true" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "c" "cl" "closed" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "l" "li" "lit" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "s" "sp" "split" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "g" "ge" "gen" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "l" "lo" "locked" +pst +"false" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "d" "di" "dirty" +pst +"true" +end ind + + +ind attr +"concept" "gram" +0 +"concept" "sys" "dict" "a" "q" "qu" "quicksem" +pst +"false" +end ind + + +ind attr +"concept" "sys" +0 +"concept" "sys" "attrs" "common" "var" +psym +"con_SYS" +end ind + + +ind attr +"concept" "sys" "attrs" +0 +"concept" "sys" "attrs" "common" "var" +psym +"sys_ATTRS" +end ind + + +ind attr +"concept" "sys" "attrs" "proxy" +0 +"concept" "sys" "attrs" "common" "var" +psym +"attrs_PROXY" +end ind + + +ind attr +"concept" "sys" "attrs" "proxy" "atom" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_ATOM" +end ind + + +ind attr +"concept" "sys" "attrs" "pproxy" +0 +"concept" "sys" "attrs" "common" "var" +psym +"attrs_PPROXY" +end ind + + +ind attr +"concept" "sys" "attrs" "pproxy" "phrase" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_PHRASE" +end ind + + +ind attr +"concept" "sys" "attrs" "common" +0 +"concept" "sys" "attrs" "common" "var" +psym +"attrs_COMMON" +end ind + + +ind attr +"concept" "sys" "attrs" "common" "var" +0 +"concept" "sys" "attrs" "common" "var" +psym +"cg_VAR" +end ind + + +ind attr +"concept" "sys" "nlp" +0 +"concept" "sys" "attrs" "common" "var" +psym +"sys_NLP" +end ind + + +ind attr +"concept" "sys" "nlp" "lex" "slot" "cases" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_CASES" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_mslot_CASE" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" "cap" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_CAP" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" "allcap" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_ALLCAP" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "case" "mixed" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_MIXED" +end ind + + +ind attr +"concept" "sys" "mean" "slot" "mixed" +0 +"concept" "sys" "attrs" "common" "var" +psym +"id_mslot_MIXED" +end ind + + +ind attr +"concept" "sys" "dict" +0 +"concept" "sys" "attrs" "common" "var" +psym +"sys_DICT" +end ind + + +ind attr +"concept" "sys" "dict" "a" +0 +"concept" "sys" "attrs" "common" "var" +psym +"dict_ALPHA" +end ind + + +ind attr +"concept" "sys" "dict" "unknown" +0 +"concept" "sys" "attrs" "common" "var" +psym +"dict_UNKNOWN" +end ind + + +quit + diff --git a/tutorial-15/kb/user/hier.kb b/tutorial-15/kb/user/hier.kb new file mode 100644 index 0000000..9d513bf --- /dev/null +++ b/tutorial-15/kb/user/hier.kb @@ -0,0 +1,756 @@ +add empty +add root +add hier "concept" "gram" +add hier "concept" "sys" +add hier "concept" "sys" "attrs" +add hier "concept" "sys" "attrs" "proxy" +add hier "concept" "sys" "attrs" "proxy" "atom" +add hier "concept" "sys" "attrs" "pproxy" +add hier "concept" "sys" "attrs" "pproxy" "phrase" +add hier "concept" "sys" "attrs" "common" +add hier "concept" "sys" "attrs" "common" "var" +add hier "concept" "sys" "attrs" "rule_elt" +add hier "concept" "sys" "vals" +add hier "concept" "sys" "vals" "boolean" +add hier "concept" "sys" "vals" "boolean" "false" +add hier "concept" "sys" "vals" "boolean" "true" +add hier "concept" "sys" "nlp" +add hier "concept" "sys" "nlp" "wht" +add hier "concept" "sys" "nlp" "punct" +add hier "concept" "sys" "nlp" "ctrl" +add hier "concept" "sys" "nlp" "lex" +add hier "concept" "sys" "nlp" "lex" "slot" +add hier "concept" "sys" "nlp" "lex" "slot" "cases" +add hier "concept" "sys" "mean" +add hier "concept" "sys" "mean" "slot" +add hier "concept" "sys" "mean" "slot" "case" +add hier "concept" "sys" "mean" "slot" "case" "cap" +add hier "concept" "sys" "mean" "slot" "case" "allcap" +add hier "concept" "sys" "mean" "slot" "case" "mixed" +add hier "concept" "sys" "mean" "slot" "mixed" +add hier "concept" "sys" "dict" +add hier "concept" "sys" "dict" "a" +add hier "concept" "sys" "dict" "a" "A" +add hier "concept" "sys" "dict" "a" "A" "A" +add hier "concept" "sys" "dict" "a" "A" "Aa" +add hier "concept" "sys" "dict" "a" "A" "Ab" +add hier "concept" "sys" "dict" "a" "A" "Ac" +add hier "concept" "sys" "dict" "a" "A" "Ad" +add hier "concept" "sys" "dict" "a" "A" "Ae" +add hier "concept" "sys" "dict" "a" "A" "Af" +add hier "concept" "sys" "dict" "a" "A" "Ag" +add hier "concept" "sys" "dict" "a" "A" "Ah" +add hier "concept" "sys" "dict" "a" "A" "Ai" +add hier "concept" "sys" "dict" "a" "A" "Aj" +add hier "concept" "sys" "dict" "a" "A" "Ak" +add hier "concept" "sys" "dict" "a" "A" "Al" +add hier "concept" "sys" "dict" "a" "A" "Am" +add hier "concept" "sys" "dict" "a" "A" "An" +add hier "concept" "sys" "dict" "a" "A" "Ap" +add hier "concept" "sys" "dict" "a" "A" "Aq" +add hier "concept" "sys" "dict" "a" "A" "Ar" +add hier "concept" "sys" "dict" "a" "A" "As" +add hier "concept" "sys" "dict" "a" "A" "At" +add hier "concept" "sys" "dict" "a" "A" "Au" +add hier "concept" "sys" "dict" "a" "A" "Av" +add hier "concept" "sys" "dict" "a" "A" "Aw" +add hier "concept" "sys" "dict" "a" "A" "Ax" +add hier "concept" "sys" "dict" "a" "A" "Ay" +add hier "concept" "sys" "dict" "a" "A" "Az" +add hier "concept" "sys" "dict" "a" "B" +add hier "concept" "sys" "dict" "a" "B" "B" +add hier "concept" "sys" "dict" "a" "B" "Ba" +add hier "concept" "sys" "dict" "a" "B" "Be" +add hier "concept" "sys" "dict" "a" "B" "Bi" +add hier "concept" "sys" "dict" "a" "B" "Bl" +add hier "concept" "sys" "dict" "a" "B" "Bo" +add hier "concept" "sys" "dict" "a" "B" "Br" +add hier "concept" "sys" "dict" "a" "B" "Bu" +add hier "concept" "sys" "dict" "a" "B" "By" +add hier "concept" "sys" "dict" "a" "C" +add hier "concept" "sys" "dict" "a" "C" "C" +add hier "concept" "sys" "dict" "a" "C" "Ca" +add hier "concept" "sys" "dict" "a" "C" "Ce" +add hier "concept" "sys" "dict" "a" "C" "Ch" +add hier "concept" "sys" "dict" "a" "C" "Ci" +add hier "concept" "sys" "dict" "a" "C" "Cl" +add hier "concept" "sys" "dict" "a" "C" "Co" +add hier "concept" "sys" "dict" "a" "C" "Cr" +add hier "concept" "sys" "dict" "a" "C" "Cu" +add hier "concept" "sys" "dict" "a" "C" "Cy" +add hier "concept" "sys" "dict" "a" "D" +add hier "concept" "sys" "dict" "a" "D" "D" +add hier "concept" "sys" "dict" "a" "D" "Da" +add hier "concept" "sys" "dict" "a" "D" "De" +add hier "concept" "sys" "dict" "a" "D" "Di" +add hier "concept" "sys" "dict" "a" "D" "Do" +add hier "concept" "sys" "dict" "a" "D" "Dr" +add hier "concept" "sys" "dict" "a" "D" "Du" +add hier "concept" "sys" "dict" "a" "D" "Dy" +add hier "concept" "sys" "dict" "a" "E" +add hier "concept" "sys" "dict" "a" "E" "E" +add hier "concept" "sys" "dict" "a" "E" "Ea" +add hier "concept" "sys" "dict" "a" "E" "Eb" +add hier "concept" "sys" "dict" "a" "E" "Ed" +add hier "concept" "sys" "dict" "a" "E" "Ee" +add hier "concept" "sys" "dict" "a" "E" "Ef" +add hier "concept" "sys" "dict" "a" "E" "Eg" +add hier "concept" "sys" "dict" "a" "E" "Eh" +add hier "concept" "sys" "dict" "a" "E" "Ei" +add hier "concept" "sys" "dict" "a" "E" "Ej" +add hier "concept" "sys" "dict" "a" "E" "El" +add hier "concept" "sys" "dict" "a" "E" "Em" +add hier "concept" "sys" "dict" "a" "E" "En" +add hier "concept" "sys" "dict" "a" "E" "Eo" +add hier "concept" "sys" "dict" "a" "E" "Ep" +add hier "concept" "sys" "dict" "a" "E" "Eq" +add hier "concept" "sys" "dict" "a" "E" "Er" +add hier "concept" "sys" "dict" "a" "E" "Es" +add hier "concept" "sys" "dict" "a" "E" "Et" +add hier "concept" "sys" "dict" "a" "E" "Eu" +add hier "concept" "sys" "dict" "a" "E" "Ev" +add hier "concept" "sys" "dict" "a" "E" "Ew" +add hier "concept" "sys" "dict" "a" "E" "Ex" +add hier "concept" "sys" "dict" "a" "E" "Ey" +add hier "concept" "sys" "dict" "a" "E" "Ez" +add hier "concept" "sys" "dict" "a" "F" +add hier "concept" "sys" "dict" "a" "F" "F" +add hier "concept" "sys" "dict" "a" "F" "Fa" +add hier "concept" "sys" "dict" "a" "F" "Fe" +add hier "concept" "sys" "dict" "a" "F" "Fi" +add hier "concept" "sys" "dict" "a" "F" "Fl" +add hier "concept" "sys" "dict" "a" "F" "Fo" +add hier "concept" "sys" "dict" "a" "F" "Fr" +add hier "concept" "sys" "dict" "a" "F" "Fu" +add hier "concept" "sys" "dict" "a" "F" "Fy" +add hier "concept" "sys" "dict" "a" "G" +add hier "concept" "sys" "dict" "a" "G" "G" +add hier "concept" "sys" "dict" "a" "G" "Ga" +add hier "concept" "sys" "dict" "a" "G" "Ge" +add hier "concept" "sys" "dict" "a" "G" "Gh" +add hier "concept" "sys" "dict" "a" "G" "Gi" +add hier "concept" "sys" "dict" "a" "G" "Gl" +add hier "concept" "sys" "dict" "a" "G" "Gn" +add hier "concept" "sys" "dict" "a" "G" "Go" +add hier "concept" "sys" "dict" "a" "G" "Gr" +add hier "concept" "sys" "dict" "a" "G" "Gu" +add hier "concept" "sys" "dict" "a" "G" "Gy" +add hier "concept" "sys" "dict" "a" "H" +add hier "concept" "sys" "dict" "a" "H" "H" +add hier "concept" "sys" "dict" "a" "H" "Ha" +add hier "concept" "sys" "dict" "a" "H" "He" +add hier "concept" "sys" "dict" "a" "H" "Hi" +add hier "concept" "sys" "dict" "a" "H" "Ho" +add hier "concept" "sys" "dict" "a" "H" "Hu" +add hier "concept" "sys" "dict" "a" "H" "Hy" +add hier "concept" "sys" "dict" "a" "I" +add hier "concept" "sys" "dict" "a" "I" "I" +add hier "concept" "sys" "dict" "a" "I" "Ia" +add hier "concept" "sys" "dict" "a" "I" "Ib" +add hier "concept" "sys" "dict" "a" "I" "Ic" +add hier "concept" "sys" "dict" "a" "I" "Id" +add hier "concept" "sys" "dict" "a" "I" "Ig" +add hier "concept" "sys" "dict" "a" "I" "Il" +add hier "concept" "sys" "dict" "a" "I" "Im" +add hier "concept" "sys" "dict" "a" "I" "In" +add hier "concept" "sys" "dict" "a" "I" "Io" +add hier "concept" "sys" "dict" "a" "I" "Ir" +add hier "concept" "sys" "dict" "a" "I" "Is" +add hier "concept" "sys" "dict" "a" "I" "It" +add hier "concept" "sys" "dict" "a" "J" +add hier "concept" "sys" "dict" "a" "J" "J" +add hier "concept" "sys" "dict" "a" "J" "Ja" +add hier "concept" "sys" "dict" "a" "J" "Je" +add hier "concept" "sys" "dict" "a" "J" "Ji" +add hier "concept" "sys" "dict" "a" "J" "Jo" +add hier "concept" "sys" "dict" "a" "J" "Ju" +add hier "concept" "sys" "dict" "a" "K" +add hier "concept" "sys" "dict" "a" "K" "K" +add hier "concept" "sys" "dict" "a" "K" "Ka" +add hier "concept" "sys" "dict" "a" "K" "Ke" +add hier "concept" "sys" "dict" "a" "K" "Kh" +add hier "concept" "sys" "dict" "a" "K" "Ki" +add hier "concept" "sys" "dict" "a" "K" "Kl" +add hier "concept" "sys" "dict" "a" "K" "Kn" +add hier "concept" "sys" "dict" "a" "K" "Ko" +add hier "concept" "sys" "dict" "a" "K" "Kr" +add hier "concept" "sys" "dict" "a" "K" "Ku" +add hier "concept" "sys" "dict" "a" "L" +add hier "concept" "sys" "dict" "a" "L" "L" +add hier "concept" "sys" "dict" "a" "L" "La" +add hier "concept" "sys" "dict" "a" "L" "Le" +add hier "concept" "sys" "dict" "a" "L" "Li" +add hier "concept" "sys" "dict" "a" "L" "Ll" +add hier "concept" "sys" "dict" "a" "L" "Lo" +add hier "concept" "sys" "dict" "a" "L" "Lu" +add hier "concept" "sys" "dict" "a" "L" "Ly" +add hier "concept" "sys" "dict" "a" "M" +add hier "concept" "sys" "dict" "a" "M" "M" +add hier "concept" "sys" "dict" "a" "M" "Ma" +add hier "concept" "sys" "dict" "a" "M" "Me" +add hier "concept" "sys" "dict" "a" "M" "Mi" +add hier "concept" "sys" "dict" "a" "M" "Mn" +add hier "concept" "sys" "dict" "a" "M" "Mo" +add hier "concept" "sys" "dict" "a" "M" "Mu" +add hier "concept" "sys" "dict" "a" "M" "My" +add hier "concept" "sys" "dict" "a" "N" +add hier "concept" "sys" "dict" "a" "N" "N" +add hier "concept" "sys" "dict" "a" "N" "Na" +add hier "concept" "sys" "dict" "a" "N" "Ne" +add hier "concept" "sys" "dict" "a" "N" "Ni" +add hier "concept" "sys" "dict" "a" "N" "No" +add hier "concept" "sys" "dict" "a" "N" "Nu" +add hier "concept" "sys" "dict" "a" "N" "Ny" +add hier "concept" "sys" "dict" "a" "O" +add hier "concept" "sys" "dict" "a" "O" "O" +add hier "concept" "sys" "dict" "a" "O" "Oa" +add hier "concept" "sys" "dict" "a" "O" "Ob" +add hier "concept" "sys" "dict" "a" "O" "Oc" +add hier "concept" "sys" "dict" "a" "O" "Od" +add hier "concept" "sys" "dict" "a" "O" "Oe" +add hier "concept" "sys" "dict" "a" "O" "Of" +add hier "concept" "sys" "dict" "a" "O" "Og" +add hier "concept" "sys" "dict" "a" "O" "Oh" +add hier "concept" "sys" "dict" "a" "O" "Oi" +add hier "concept" "sys" "dict" "a" "O" "Ok" +add hier "concept" "sys" "dict" "a" "O" "On" +add hier "concept" "sys" "dict" "a" "O" "Oo" +add hier "concept" "sys" "dict" "a" "O" "Op" +add hier "concept" "sys" "dict" "a" "O" "Oq" +add hier "concept" "sys" "dict" "a" "O" "Or" +add hier "concept" "sys" "dict" "a" "O" "Os" +add hier "concept" "sys" "dict" "a" "O" "Ot" +add hier "concept" "sys" "dict" "a" "O" "Ou" +add hier "concept" "sys" "dict" "a" "O" "Ov" +add hier "concept" "sys" "dict" "a" "O" "Ow" +add hier "concept" "sys" "dict" "a" "O" "Ox" +add hier "concept" "sys" "dict" "a" "O" "Oy" +add hier "concept" "sys" "dict" "a" "O" "Oz" +add hier "concept" "sys" "dict" "a" "P" +add hier "concept" "sys" "dict" "a" "P" "P" +add hier "concept" "sys" "dict" "a" "P" "Pa" +add hier "concept" "sys" "dict" "a" "P" "Pe" +add hier "concept" "sys" "dict" "a" "P" "Ph" +add hier "concept" "sys" "dict" "a" "P" "Pi" +add hier "concept" "sys" "dict" "a" "P" "Pl" +add hier "concept" "sys" "dict" "a" "P" "Pn" +add hier "concept" "sys" "dict" "a" "P" "Po" +add hier "concept" "sys" "dict" "a" "P" "Pr" +add hier "concept" "sys" "dict" "a" "P" "Pt" +add hier "concept" "sys" "dict" "a" "P" "Pu" +add hier "concept" "sys" "dict" "a" "P" "Py" +add hier "concept" "sys" "dict" "a" "Q" +add hier "concept" "sys" "dict" "a" "Q" "Q" +add hier "concept" "sys" "dict" "a" "Q" "Qa" +add hier "concept" "sys" "dict" "a" "Q" "Qu" +add hier "concept" "sys" "dict" "a" "R" +add hier "concept" "sys" "dict" "a" "R" "R" +add hier "concept" "sys" "dict" "a" "R" "Ra" +add hier "concept" "sys" "dict" "a" "R" "Re" +add hier "concept" "sys" "dict" "a" "R" "Rh" +add hier "concept" "sys" "dict" "a" "R" "Ri" +add hier "concept" "sys" "dict" "a" "R" "Ro" +add hier "concept" "sys" "dict" "a" "R" "Ru" +add hier "concept" "sys" "dict" "a" "R" "Ry" +add hier "concept" "sys" "dict" "a" "S" +add hier "concept" "sys" "dict" "a" "S" "S" +add hier "concept" "sys" "dict" "a" "S" "Sa" +add hier "concept" "sys" "dict" "a" "S" "Sc" +add hier "concept" "sys" "dict" "a" "S" "Se" +add hier "concept" "sys" "dict" "a" "S" "Sf" +add hier "concept" "sys" "dict" "a" "S" "Sh" +add hier "concept" "sys" "dict" "a" "S" "Si" +add hier "concept" "sys" "dict" "a" "S" "Sk" +add hier "concept" "sys" "dict" "a" "S" "Sl" +add hier "concept" "sys" "dict" "a" "S" "Sm" +add hier "concept" "sys" "dict" "a" "S" "Sn" +add hier "concept" "sys" "dict" "a" "S" "So" +add hier "concept" "sys" "dict" "a" "S" "Sp" +add hier "concept" "sys" "dict" "a" "S" "Sq" +add hier "concept" "sys" "dict" "a" "S" "St" +add hier "concept" "sys" "dict" "a" "S" "Su" +add hier "concept" "sys" "dict" "a" "S" "Sw" +add hier "concept" "sys" "dict" "a" "S" "Sy" +add hier "concept" "sys" "dict" "a" "T" +add hier "concept" "sys" "dict" "a" "T" "T" +add hier "concept" "sys" "dict" "a" "T" "Ta" +add hier "concept" "sys" "dict" "a" "T" "Te" +add hier "concept" "sys" "dict" "a" "T" "Th" +add hier "concept" "sys" "dict" "a" "T" "Ti" +add hier "concept" "sys" "dict" "a" "T" "To" +add hier "concept" "sys" "dict" "a" "T" "Tr" +add hier "concept" "sys" "dict" "a" "T" "Tu" +add hier "concept" "sys" "dict" "a" "T" "Tw" +add hier "concept" "sys" "dict" "a" "T" "Ty" +add hier "concept" "sys" "dict" "a" "U" +add hier "concept" "sys" "dict" "a" "U" "U" +add hier "concept" "sys" "dict" "a" "U" "Ua" +add hier "concept" "sys" "dict" "a" "U" "Un" +add hier "concept" "sys" "dict" "a" "U" "Up" +add hier "concept" "sys" "dict" "a" "U" "Ur" +add hier "concept" "sys" "dict" "a" "V" +add hier "concept" "sys" "dict" "a" "V" "V" +add hier "concept" "sys" "dict" "a" "V" "Va" +add hier "concept" "sys" "dict" "a" "V" "Ve" +add hier "concept" "sys" "dict" "a" "V" "Vi" +add hier "concept" "sys" "dict" "a" "V" "Vo" +add hier "concept" "sys" "dict" "a" "V" "Vu" +add hier "concept" "sys" "dict" "a" "W" +add hier "concept" "sys" "dict" "a" "W" "W" +add hier "concept" "sys" "dict" "a" "W" "Wa" +add hier "concept" "sys" "dict" "a" "W" "We" +add hier "concept" "sys" "dict" "a" "W" "Wh" +add hier "concept" "sys" "dict" "a" "W" "Wi" +add hier "concept" "sys" "dict" "a" "W" "Wo" +add hier "concept" "sys" "dict" "a" "W" "Wr" +add hier "concept" "sys" "dict" "a" "W" "Wu" +add hier "concept" "sys" "dict" "a" "X" +add hier "concept" "sys" "dict" "a" "X" "X" +add hier "concept" "sys" "dict" "a" "X" "Xa" +add hier "concept" "sys" "dict" "a" "X" "Xe" +add hier "concept" "sys" "dict" "a" "X" "Xi" +add hier "concept" "sys" "dict" "a" "X" "Xo" +add hier "concept" "sys" "dict" "a" "X" "Xu" +add hier "concept" "sys" "dict" "a" "X" "Xy" +add hier "concept" "sys" "dict" "a" "Y" +add hier "concept" "sys" "dict" "a" "Y" "Y" +add hier "concept" "sys" "dict" "a" "Y" "Ya" +add hier "concept" "sys" "dict" "a" "Y" "Ye" +add hier "concept" "sys" "dict" "a" "Y" "Yi" +add hier "concept" "sys" "dict" "a" "Y" "Yo" +add hier "concept" "sys" "dict" "a" "Y" "Yu" +add hier "concept" "sys" "dict" "a" "Z" +add hier "concept" "sys" "dict" "a" "Z" "Z" +add hier "concept" "sys" "dict" "a" "Z" "Za" +add hier "concept" "sys" "dict" "a" "Z" "Ze" +add hier "concept" "sys" "dict" "a" "Z" "Zi" +add hier "concept" "sys" "dict" "a" "Z" "Zo" +add hier "concept" "sys" "dict" "a" "Z" "Zu" +add hier "concept" "sys" "dict" "a" "Z" "Zy" +add hier "concept" "sys" "dict" "a" "a" +add hier "concept" "sys" "dict" "a" "a" "a" +add hier "concept" "sys" "dict" "a" "a" "aa" +add hier "concept" "sys" "dict" "a" "a" "ab" +add hier "concept" "sys" "dict" "a" "a" "ac" +add hier "concept" "sys" "dict" "a" "a" "ad" +add hier "concept" "sys" "dict" "a" "a" "ae" +add hier "concept" "sys" "dict" "a" "a" "af" +add hier "concept" "sys" "dict" "a" "a" "ag" +add hier "concept" "sys" "dict" "a" "a" "ah" +add hier "concept" "sys" "dict" "a" "a" "ai" +add hier "concept" "sys" "dict" "a" "a" "aj" +add hier "concept" "sys" "dict" "a" "a" "ak" +add hier "concept" "sys" "dict" "a" "a" "al" +add hier "concept" "sys" "dict" "a" "a" "am" +add hier "concept" "sys" "dict" "a" "a" "an" +add hier "concept" "sys" "dict" "a" "a" "ap" +add hier "concept" "sys" "dict" "a" "a" "aq" +add hier "concept" "sys" "dict" "a" "a" "ar" +add hier "concept" "sys" "dict" "a" "a" "as" +add hier "concept" "sys" "dict" "a" "a" "at" +add hier "concept" "sys" "dict" "a" "a" "au" +add hier "concept" "sys" "dict" "a" "a" "av" +add hier "concept" "sys" "dict" "a" "a" "aw" +add hier "concept" "sys" "dict" "a" "a" "ax" +add hier "concept" "sys" "dict" "a" "a" "ay" +add hier "concept" "sys" "dict" "a" "a" "az" +add hier "concept" "sys" "dict" "a" "b" +add hier "concept" "sys" "dict" "a" "b" "b" +add hier "concept" "sys" "dict" "a" "b" "ba" +add hier "concept" "sys" "dict" "a" "b" "be" +add hier "concept" "sys" "dict" "a" "b" "bi" +add hier "concept" "sys" "dict" "a" "b" "bl" +add hier "concept" "sys" "dict" "a" "b" "bo" +add hier "concept" "sys" "dict" "a" "b" "br" +add hier "concept" "sys" "dict" "a" "b" "bu" +add hier "concept" "sys" "dict" "a" "b" "by" +add hier "concept" "sys" "dict" "a" "c" +add hier "concept" "sys" "dict" "a" "c" "c" +add hier "concept" "sys" "dict" "a" "c" "ca" +add hier "concept" "sys" "dict" "a" "c" "ce" +add hier "concept" "sys" "dict" "a" "c" "ch" +add hier "concept" "sys" "dict" "a" "c" "ci" +add hier "concept" "sys" "dict" "a" "c" "cl" +add hier "concept" "sys" "dict" "a" "c" "co" +add hier "concept" "sys" "dict" "a" "c" "cr" +add hier "concept" "sys" "dict" "a" "c" "cu" +add hier "concept" "sys" "dict" "a" "c" "cy" +add hier "concept" "sys" "dict" "a" "d" +add hier "concept" "sys" "dict" "a" "d" "d" +add hier "concept" "sys" "dict" "a" "d" "da" +add hier "concept" "sys" "dict" "a" "d" "de" +add hier "concept" "sys" "dict" "a" "d" "di" +add hier "concept" "sys" "dict" "a" "d" "do" +add hier "concept" "sys" "dict" "a" "d" "dr" +add hier "concept" "sys" "dict" "a" "d" "du" +add hier "concept" "sys" "dict" "a" "d" "dy" +add hier "concept" "sys" "dict" "a" "e" +add hier "concept" "sys" "dict" "a" "e" "e" +add hier "concept" "sys" "dict" "a" "e" "ea" +add hier "concept" "sys" "dict" "a" "e" "eb" +add hier "concept" "sys" "dict" "a" "e" "ed" +add hier "concept" "sys" "dict" "a" "e" "ee" +add hier "concept" "sys" "dict" "a" "e" "ef" +add hier "concept" "sys" "dict" "a" "e" "eg" +add hier "concept" "sys" "dict" "a" "e" "eh" +add hier "concept" "sys" "dict" "a" "e" "ei" +add hier "concept" "sys" "dict" "a" "e" "ej" +add hier "concept" "sys" "dict" "a" "e" "el" +add hier "concept" "sys" "dict" "a" "e" "em" +add hier "concept" "sys" "dict" "a" "e" "en" +add hier "concept" "sys" "dict" "a" "e" "eo" +add hier "concept" "sys" "dict" "a" "e" "ep" +add hier "concept" "sys" "dict" "a" "e" "eq" +add hier "concept" "sys" "dict" "a" "e" "er" +add hier "concept" "sys" "dict" "a" "e" "es" +add hier "concept" "sys" "dict" "a" "e" "et" +add hier "concept" "sys" "dict" "a" "e" "eu" +add hier "concept" "sys" "dict" "a" "e" "ev" +add hier "concept" "sys" "dict" "a" "e" "ew" +add hier "concept" "sys" "dict" "a" "e" "ex" +add hier "concept" "sys" "dict" "a" "e" "ey" +add hier "concept" "sys" "dict" "a" "e" "ez" +add hier "concept" "sys" "dict" "a" "f" +add hier "concept" "sys" "dict" "a" "f" "f" +add hier "concept" "sys" "dict" "a" "f" "fa" +add hier "concept" "sys" "dict" "a" "f" "fe" +add hier "concept" "sys" "dict" "a" "f" "fi" +add hier "concept" "sys" "dict" "a" "f" "fl" +add hier "concept" "sys" "dict" "a" "f" "fo" +add hier "concept" "sys" "dict" "a" "f" "fr" +add hier "concept" "sys" "dict" "a" "f" "fu" +add hier "concept" "sys" "dict" "a" "f" "fy" +add hier "concept" "sys" "dict" "a" "g" +add hier "concept" "sys" "dict" "a" "g" "g" +add hier "concept" "sys" "dict" "a" "g" "ga" +add hier "concept" "sys" "dict" "a" "g" "ge" +add hier "concept" "sys" "dict" "a" "g" "gh" +add hier "concept" "sys" "dict" "a" "g" "gi" +add hier "concept" "sys" "dict" "a" "g" "gl" +add hier "concept" "sys" "dict" "a" "g" "gn" +add hier "concept" "sys" "dict" "a" "g" "go" +add hier "concept" "sys" "dict" "a" "g" "gr" +add hier "concept" "sys" "dict" "a" "g" "gu" +add hier "concept" "sys" "dict" "a" "g" "gy" +add hier "concept" "sys" "dict" "a" "h" +add hier "concept" "sys" "dict" "a" "h" "h" +add hier "concept" "sys" "dict" "a" "h" "ha" +add hier "concept" "sys" "dict" "a" "h" "he" +add hier "concept" "sys" "dict" "a" "h" "hi" +add hier "concept" "sys" "dict" "a" "h" "ho" +add hier "concept" "sys" "dict" "a" "h" "hu" +add hier "concept" "sys" "dict" "a" "h" "hy" +add hier "concept" "sys" "dict" "a" "i" +add hier "concept" "sys" "dict" "a" "i" "i" +add hier "concept" "sys" "dict" "a" "i" "ia" +add hier "concept" "sys" "dict" "a" "i" "ib" +add hier "concept" "sys" "dict" "a" "i" "ic" +add hier "concept" "sys" "dict" "a" "i" "id" +add hier "concept" "sys" "dict" "a" "i" "ig" +add hier "concept" "sys" "dict" "a" "i" "il" +add hier "concept" "sys" "dict" "a" "i" "im" +add hier "concept" "sys" "dict" "a" "i" "in" +add hier "concept" "sys" "dict" "a" "i" "io" +add hier "concept" "sys" "dict" "a" "i" "ir" +add hier "concept" "sys" "dict" "a" "i" "is" +add hier "concept" "sys" "dict" "a" "i" "it" +add hier "concept" "sys" "dict" "a" "j" +add hier "concept" "sys" "dict" "a" "j" "j" +add hier "concept" "sys" "dict" "a" "j" "ja" +add hier "concept" "sys" "dict" "a" "j" "je" +add hier "concept" "sys" "dict" "a" "j" "ji" +add hier "concept" "sys" "dict" "a" "j" "jo" +add hier "concept" "sys" "dict" "a" "j" "ju" +add hier "concept" "sys" "dict" "a" "k" +add hier "concept" "sys" "dict" "a" "k" "k" +add hier "concept" "sys" "dict" "a" "k" "ka" +add hier "concept" "sys" "dict" "a" "k" "ke" +add hier "concept" "sys" "dict" "a" "k" "kh" +add hier "concept" "sys" "dict" "a" "k" "ki" +add hier "concept" "sys" "dict" "a" "k" "kl" +add hier "concept" "sys" "dict" "a" "k" "kn" +add hier "concept" "sys" "dict" "a" "k" "ko" +add hier "concept" "sys" "dict" "a" "k" "kr" +add hier "concept" "sys" "dict" "a" "k" "ku" +add hier "concept" "sys" "dict" "a" "l" +add hier "concept" "sys" "dict" "a" "l" "l" +add hier "concept" "sys" "dict" "a" "l" "la" +add hier "concept" "sys" "dict" "a" "l" "le" +add hier "concept" "sys" "dict" "a" "l" "li" +add hier "concept" "sys" "dict" "a" "l" "ll" +add hier "concept" "sys" "dict" "a" "l" "lo" +add hier "concept" "sys" "dict" "a" "l" "lu" +add hier "concept" "sys" "dict" "a" "l" "ly" +add hier "concept" "sys" "dict" "a" "m" +add hier "concept" "sys" "dict" "a" "m" "m" +add hier "concept" "sys" "dict" "a" "m" "ma" +add hier "concept" "sys" "dict" "a" "m" "me" +add hier "concept" "sys" "dict" "a" "m" "mi" +add hier "concept" "sys" "dict" "a" "m" "mn" +add hier "concept" "sys" "dict" "a" "m" "mo" +add hier "concept" "sys" "dict" "a" "m" "mu" +add hier "concept" "sys" "dict" "a" "m" "my" +add hier "concept" "sys" "dict" "a" "n" +add hier "concept" "sys" "dict" "a" "n" "n" +add hier "concept" "sys" "dict" "a" "n" "na" +add hier "concept" "sys" "dict" "a" "n" "ne" +add hier "concept" "sys" "dict" "a" "n" "ni" +add hier "concept" "sys" "dict" "a" "n" "no" +add hier "concept" "sys" "dict" "a" "n" "nu" +add hier "concept" "sys" "dict" "a" "n" "ny" +add hier "concept" "sys" "dict" "a" "o" +add hier "concept" "sys" "dict" "a" "o" "o" +add hier "concept" "sys" "dict" "a" "o" "oa" +add hier "concept" "sys" "dict" "a" "o" "ob" +add hier "concept" "sys" "dict" "a" "o" "oc" +add hier "concept" "sys" "dict" "a" "o" "od" +add hier "concept" "sys" "dict" "a" "o" "oe" +add hier "concept" "sys" "dict" "a" "o" "of" +add hier "concept" "sys" "dict" "a" "o" "og" +add hier "concept" "sys" "dict" "a" "o" "oh" +add hier "concept" "sys" "dict" "a" "o" "oi" +add hier "concept" "sys" "dict" "a" "o" "ok" +add hier "concept" "sys" "dict" "a" "o" "on" +add hier "concept" "sys" "dict" "a" "o" "oo" +add hier "concept" "sys" "dict" "a" "o" "op" +add hier "concept" "sys" "dict" "a" "o" "oq" +add hier "concept" "sys" "dict" "a" "o" "or" +add hier "concept" "sys" "dict" "a" "o" "os" +add hier "concept" "sys" "dict" "a" "o" "ot" +add hier "concept" "sys" "dict" "a" "o" "ou" +add hier "concept" "sys" "dict" "a" "o" "ov" +add hier "concept" "sys" "dict" "a" "o" "ow" +add hier "concept" "sys" "dict" "a" "o" "ox" +add hier "concept" "sys" "dict" "a" "o" "oy" +add hier "concept" "sys" "dict" "a" "o" "oz" +add hier "concept" "sys" "dict" "a" "p" +add hier "concept" "sys" "dict" "a" "p" "p" +add hier "concept" "sys" "dict" "a" "p" "pa" +add hier "concept" "sys" "dict" "a" "p" "pe" +add hier "concept" "sys" "dict" "a" "p" "ph" +add hier "concept" "sys" "dict" "a" "p" "pi" +add hier "concept" "sys" "dict" "a" "p" "pl" +add hier "concept" "sys" "dict" "a" "p" "pn" +add hier "concept" "sys" "dict" "a" "p" "po" +add hier "concept" "sys" "dict" "a" "p" "pr" +add hier "concept" "sys" "dict" "a" "p" "pt" +add hier "concept" "sys" "dict" "a" "p" "pu" +add hier "concept" "sys" "dict" "a" "p" "py" +add hier "concept" "sys" "dict" "a" "q" +add hier "concept" "sys" "dict" "a" "q" "q" +add hier "concept" "sys" "dict" "a" "q" "qa" +add hier "concept" "sys" "dict" "a" "q" "qu" +add hier "concept" "sys" "dict" "a" "r" +add hier "concept" "sys" "dict" "a" "r" "r" +add hier "concept" "sys" "dict" "a" "r" "ra" +add hier "concept" "sys" "dict" "a" "r" "re" +add hier "concept" "sys" "dict" "a" "r" "rh" +add hier "concept" "sys" "dict" "a" "r" "ri" +add hier "concept" "sys" "dict" "a" "r" "ro" +add hier "concept" "sys" "dict" "a" "r" "ru" +add hier "concept" "sys" "dict" "a" "r" "ry" +add hier "concept" "sys" "dict" "a" "s" +add hier "concept" "sys" "dict" "a" "s" "s" +add hier "concept" "sys" "dict" "a" "s" "sa" +add hier "concept" "sys" "dict" "a" "s" "sc" +add hier "concept" "sys" "dict" "a" "s" "se" +add hier "concept" "sys" "dict" "a" "s" "sf" +add hier "concept" "sys" "dict" "a" "s" "sh" +add hier "concept" "sys" "dict" "a" "s" "si" +add hier "concept" "sys" "dict" "a" "s" "sk" +add hier "concept" "sys" "dict" "a" "s" "sl" +add hier "concept" "sys" "dict" "a" "s" "sm" +add hier "concept" "sys" "dict" "a" "s" "sn" +add hier "concept" "sys" "dict" "a" "s" "so" +add hier "concept" "sys" "dict" "a" "s" "sp" +add hier "concept" "sys" "dict" "a" "s" "sq" +add hier "concept" "sys" "dict" "a" "s" "st" +add hier "concept" "sys" "dict" "a" "s" "su" +add hier "concept" "sys" "dict" "a" "s" "sw" +add hier "concept" "sys" "dict" "a" "s" "sy" +add hier "concept" "sys" "dict" "a" "t" +add hier "concept" "sys" "dict" "a" "t" "t" +add hier "concept" "sys" "dict" "a" "t" "ta" +add hier "concept" "sys" "dict" "a" "t" "te" +add hier "concept" "sys" "dict" "a" "t" "th" +add hier "concept" "sys" "dict" "a" "t" "ti" +add hier "concept" "sys" "dict" "a" "t" "to" +add hier "concept" "sys" "dict" "a" "t" "tr" +add hier "concept" "sys" "dict" "a" "t" "tu" +add hier "concept" "sys" "dict" "a" "t" "tw" +add hier "concept" "sys" "dict" "a" "t" "ty" +add hier "concept" "sys" "dict" "a" "u" +add hier "concept" "sys" "dict" "a" "u" "u" +add hier "concept" "sys" "dict" "a" "u" "ua" +add hier "concept" "sys" "dict" "a" "u" "un" +add hier "concept" "sys" "dict" "a" "u" "up" +add hier "concept" "sys" "dict" "a" "u" "ur" +add hier "concept" "sys" "dict" "a" "v" +add hier "concept" "sys" "dict" "a" "v" "v" +add hier "concept" "sys" "dict" "a" "v" "va" +add hier "concept" "sys" "dict" "a" "v" "ve" +add hier "concept" "sys" "dict" "a" "v" "vi" +add hier "concept" "sys" "dict" "a" "v" "vo" +add hier "concept" "sys" "dict" "a" "v" "vu" +add hier "concept" "sys" "dict" "a" "w" +add hier "concept" "sys" "dict" "a" "w" "w" +add hier "concept" "sys" "dict" "a" "w" "wa" +add hier "concept" "sys" "dict" "a" "w" "we" +add hier "concept" "sys" "dict" "a" "w" "wh" +add hier "concept" "sys" "dict" "a" "w" "wi" +add hier "concept" "sys" "dict" "a" "w" "wo" +add hier "concept" "sys" "dict" "a" "w" "wr" +add hier "concept" "sys" "dict" "a" "w" "wu" +add hier "concept" "sys" "dict" "a" "x" +add hier "concept" "sys" "dict" "a" "x" "x" +add hier "concept" "sys" "dict" "a" "x" "xa" +add hier "concept" "sys" "dict" "a" "x" "xe" +add hier "concept" "sys" "dict" "a" "x" "xi" +add hier "concept" "sys" "dict" "a" "x" "xo" +add hier "concept" "sys" "dict" "a" "x" "xu" +add hier "concept" "sys" "dict" "a" "x" "xy" +add hier "concept" "sys" "dict" "a" "y" +add hier "concept" "sys" "dict" "a" "y" "y" +add hier "concept" "sys" "dict" "a" "y" "ya" +add hier "concept" "sys" "dict" "a" "y" "ye" +add hier "concept" "sys" "dict" "a" "y" "yi" +add hier "concept" "sys" "dict" "a" "y" "yo" +add hier "concept" "sys" "dict" "a" "y" "yu" +add hier "concept" "sys" "dict" "a" "z" +add hier "concept" "sys" "dict" "a" "z" "z" +add hier "concept" "sys" "dict" "a" "z" "za" +add hier "concept" "sys" "dict" "a" "z" "ze" +add hier "concept" "sys" "dict" "a" "z" "zi" +add hier "concept" "sys" "dict" "a" "z" "zo" +add hier "concept" "sys" "dict" "a" "z" "zu" +add hier "concept" "sys" "dict" "a" "z" "zy" +add hier "concept" "sys" "dict" "0" +add hier "concept" "sys" "dict" "0" "0" +add hier "concept" "sys" "dict" "0" "0" "0" +add hier "concept" "sys" "dict" "0" "0" "00" +add hier "concept" "sys" "dict" "0" "0" "01" +add hier "concept" "sys" "dict" "0" "0" "02" +add hier "concept" "sys" "dict" "0" "0" "03" +add hier "concept" "sys" "dict" "0" "0" "04" +add hier "concept" "sys" "dict" "0" "0" "05" +add hier "concept" "sys" "dict" "0" "0" "06" +add hier "concept" "sys" "dict" "0" "0" "07" +add hier "concept" "sys" "dict" "0" "0" "08" +add hier "concept" "sys" "dict" "0" "0" "09" +add hier "concept" "sys" "dict" "0" "1" +add hier "concept" "sys" "dict" "0" "1" "1" +add hier "concept" "sys" "dict" "0" "1" "10" +add hier "concept" "sys" "dict" "0" "1" "11" +add hier "concept" "sys" "dict" "0" "1" "12" +add hier "concept" "sys" "dict" "0" "1" "13" +add hier "concept" "sys" "dict" "0" "1" "14" +add hier "concept" "sys" "dict" "0" "1" "15" +add hier "concept" "sys" "dict" "0" "1" "16" +add hier "concept" "sys" "dict" "0" "1" "17" +add hier "concept" "sys" "dict" "0" "1" "18" +add hier "concept" "sys" "dict" "0" "1" "19" +add hier "concept" "sys" "dict" "0" "2" +add hier "concept" "sys" "dict" "0" "2" "2" +add hier "concept" "sys" "dict" "0" "2" "20" +add hier "concept" "sys" "dict" "0" "2" "21" +add hier "concept" "sys" "dict" "0" "2" "22" +add hier "concept" "sys" "dict" "0" "2" "23" +add hier "concept" "sys" "dict" "0" "2" "24" +add hier "concept" "sys" "dict" "0" "2" "25" +add hier "concept" "sys" "dict" "0" "2" "26" +add hier "concept" "sys" "dict" "0" "2" "27" +add hier "concept" "sys" "dict" "0" "2" "28" +add hier "concept" "sys" "dict" "0" "2" "29" +add hier "concept" "sys" "dict" "0" "3" +add hier "concept" "sys" "dict" "0" "3" "3" +add hier "concept" "sys" "dict" "0" "3" "30" +add hier "concept" "sys" "dict" "0" "3" "31" +add hier "concept" "sys" "dict" "0" "3" "32" +add hier "concept" "sys" "dict" "0" "3" "33" +add hier "concept" "sys" "dict" "0" "3" "34" +add hier "concept" "sys" "dict" "0" "3" "35" +add hier "concept" "sys" "dict" "0" "3" "36" +add hier "concept" "sys" "dict" "0" "3" "37" +add hier "concept" "sys" "dict" "0" "3" "38" +add hier "concept" "sys" "dict" "0" "3" "39" +add hier "concept" "sys" "dict" "0" "4" +add hier "concept" "sys" "dict" "0" "4" "4" +add hier "concept" "sys" "dict" "0" "4" "40" +add hier "concept" "sys" "dict" "0" "4" "41" +add hier "concept" "sys" "dict" "0" "4" "42" +add hier "concept" "sys" "dict" "0" "4" "43" +add hier "concept" "sys" "dict" "0" "4" "44" +add hier "concept" "sys" "dict" "0" "4" "45" +add hier "concept" "sys" "dict" "0" "4" "46" +add hier "concept" "sys" "dict" "0" "4" "47" +add hier "concept" "sys" "dict" "0" "4" "48" +add hier "concept" "sys" "dict" "0" "4" "49" +add hier "concept" "sys" "dict" "0" "5" +add hier "concept" "sys" "dict" "0" "5" "5" +add hier "concept" "sys" "dict" "0" "5" "50" +add hier "concept" "sys" "dict" "0" "5" "51" +add hier "concept" "sys" "dict" "0" "5" "52" +add hier "concept" "sys" "dict" "0" "5" "53" +add hier "concept" "sys" "dict" "0" "5" "54" +add hier "concept" "sys" "dict" "0" "5" "55" +add hier "concept" "sys" "dict" "0" "5" "56" +add hier "concept" "sys" "dict" "0" "5" "57" +add hier "concept" "sys" "dict" "0" "5" "58" +add hier "concept" "sys" "dict" "0" "5" "59" +add hier "concept" "sys" "dict" "0" "6" +add hier "concept" "sys" "dict" "0" "6" "6" +add hier "concept" "sys" "dict" "0" "6" "60" +add hier "concept" "sys" "dict" "0" "6" "61" +add hier "concept" "sys" "dict" "0" "6" "62" +add hier "concept" "sys" "dict" "0" "6" "63" +add hier "concept" "sys" "dict" "0" "6" "64" +add hier "concept" "sys" "dict" "0" "6" "65" +add hier "concept" "sys" "dict" "0" "6" "66" +add hier "concept" "sys" "dict" "0" "6" "67" +add hier "concept" "sys" "dict" "0" "6" "68" +add hier "concept" "sys" "dict" "0" "6" "69" +add hier "concept" "sys" "dict" "0" "7" +add hier "concept" "sys" "dict" "0" "7" "7" +add hier "concept" "sys" "dict" "0" "7" "70" +add hier "concept" "sys" "dict" "0" "7" "71" +add hier "concept" "sys" "dict" "0" "7" "72" +add hier "concept" "sys" "dict" "0" "7" "73" +add hier "concept" "sys" "dict" "0" "7" "74" +add hier "concept" "sys" "dict" "0" "7" "75" +add hier "concept" "sys" "dict" "0" "7" "76" +add hier "concept" "sys" "dict" "0" "7" "77" +add hier "concept" "sys" "dict" "0" "7" "78" +add hier "concept" "sys" "dict" "0" "7" "79" +add hier "concept" "sys" "dict" "0" "8" +add hier "concept" "sys" "dict" "0" "8" "8" +add hier "concept" "sys" "dict" "0" "8" "80" +add hier "concept" "sys" "dict" "0" "8" "81" +add hier "concept" "sys" "dict" "0" "8" "82" +add hier "concept" "sys" "dict" "0" "8" "83" +add hier "concept" "sys" "dict" "0" "8" "84" +add hier "concept" "sys" "dict" "0" "8" "85" +add hier "concept" "sys" "dict" "0" "8" "86" +add hier "concept" "sys" "dict" "0" "8" "87" +add hier "concept" "sys" "dict" "0" "8" "88" +add hier "concept" "sys" "dict" "0" "8" "89" +add hier "concept" "sys" "dict" "0" "9" +add hier "concept" "sys" "dict" "0" "9" "9" +add hier "concept" "sys" "dict" "0" "9" "90" +add hier "concept" "sys" "dict" "0" "9" "91" +add hier "concept" "sys" "dict" "0" "9" "92" +add hier "concept" "sys" "dict" "0" "9" "93" +add hier "concept" "sys" "dict" "0" "9" "94" +add hier "concept" "sys" "dict" "0" "9" "95" +add hier "concept" "sys" "dict" "0" "9" "96" +add hier "concept" "sys" "dict" "0" "9" "97" +add hier "concept" "sys" "dict" "0" "9" "98" +add hier "concept" "sys" "dict" "0" "9" "99" +add hier "concept" "sys" "dict" "A" +add hier "concept" "sys" "dict" "wht" +add hier "concept" "sys" "dict" "pnct" +add hier "concept" "sys" "dict" "ctrl" +add hier "concept" "sys" "dict" "emoji" +add hier "concept" "sys" "dict" "unknown" + +quit + diff --git a/tutorial-15/kb/user/phr.kb b/tutorial-15/kb/user/phr.kb new file mode 100644 index 0000000..3b3c7fc --- /dev/null +++ b/tutorial-15/kb/user/phr.kb @@ -0,0 +1,3 @@ + +quit + diff --git a/tutorial-15/kb/user/word.kb b/tutorial-15/kb/user/word.kb new file mode 100644 index 0000000..36151ce --- /dev/null +++ b/tutorial-15/kb/user/word.kb @@ -0,0 +1,57 @@ +add word " +" +add word " " +add word " " +add word ">" +add word "<" +add word "/" +add word "\\" +add word "|" +add word "]" +add word "[" +add word "}" +add word "{" +add word "+" +add word "=" +add word "_" +add word "-" +add word ")" +add word "(" +add word "*" +add word "&" +add word "^" +add word "%" +add word "$" +add word "#" +add word "@" +add word "`" +add word "~" +add word "?" +add word "!" +add word "\"" +add word "'" +add word ":" +add word "," +add word "." +add word ";" +add word "closed" +add word "constrain" +add word "dirty" +add word "gen" +add word "lit" +add word "locked" +add word "quicksem" +add word "split" +add word "xwhite" +add word active +add word algo +add word building +add word comment +add word data +add word pass +add word passnum +add word state +add word type + +quit + diff --git a/tutorial-15/spec/KBFuncs.nlp b/tutorial-15/spec/KBFuncs.nlp new file mode 100644 index 0000000..c4762f5 --- /dev/null +++ b/tutorial-15/spec/KBFuncs.nlp @@ -0,0 +1,597 @@ +############################################### +# FILE: KBFuncs.pat +# SUBJ: Call the DumpKB function +# AUTH: Your Name +# CREATED: 2020-11-19 8:40:53 +# MODIFIED: +############################################### + +@DECL + +############################################### +# General functions +############################################### + +AddUniqueCon(L("concept"),L("name")) { + L("con") = findconcept(L("concept"),L("name")); + if (!L("con")) L("con") = makeconcept(L("concept"),L("name")); + return L("con"); +} + +AddUniqueStr(L("concept"),L("attr"),L("value")) { + if (L("value")) { + L("val") = AttrValues(L("concept"),L("attr")); + while (L("val")) { + L("str") = getstrval(L("val")); + if (L("str") == L("value")) + return 0; + L("val") = nextval(L("val")); + } + addstrval(L("concept"),L("attr"),L("value")); + return 1; + } + return 0; +} + +AddUniqueNum(L("concept"),L("attr"),L("value")) { + if (L("value")) { + L("val") = AttrValues(L("concept"),L("attr")); + while (L("val")) { + L("num") = getnumval(L("val")); + if (L("num") == L("value")) + return 0; + L("val") = nextval(L("val")); + } + addnumval(L("concept"),L("attr"),L("value")); + return 1; + } + return 0; +} + +AddUniqueConVal(L("concept"),L("attr"),L("value")) { + "unique.txt" << L("attr") << " " << conceptpath(L("concept")) << " ==> " << L("attr") << " -- " << conceptpath(L("value")) << "\n"; + L("val") = AttrValues(L("concept"),L("attr")); + while (L("val")) { + L("con") = getconval(L("val")); + "unique.txt" << conceptname(L("con")) << "\n"; + if (conceptpath(L("con")) == conceptpath(L("value"))) + return 0; + L("val") = nextval(L("val")); + } + addconval(L("concept"),L("attr"),L("value")); + return 1; +} + +PathToConcept(L("parent"),L("hier")) { + L("cons") = split(L("hier")," "); + L("i") = 0; + L("con") = L("parent"); + while (L("cons")[L("i")]) { + L("c") = L("cons")[L("i")]; + L("name") = strsubst(L("c"),"\"",0); + if (L("name") != "concept") + L("con") = AddUniqueCon(L("con"),L("name")); + L("i")++; + } + return L("con"); +} + +CopyAttr(L("from"),L("to"),L("attr")) { + L("from value") = strval(L("from"),L("attr")); + if (L("from value")) { + L("to value") = strval(L("to"),L("attr")); + if (L("from value") && !L("to value")) + addstrval(L("to"),L("attr"),L("from value")); + } +} + +CopyAttrNew(L("from"),L("to"),L("attr from"),L("attr to")) { + L("from value") = strval(L("from"),L("attr from")); + if (L("from value")) { + L("to value") = strval(L("to"),L("attr to")); + if (L("from value") && !L("to value")) + addstrval(L("to"),L("attr to"),L("from value")); + } +} + +CopyConAttr(L("from"),L("to"),L("attr")) { + L("from value") = conval(L("from"),L("attr")); + if (L("from value")) { + L("to value") = conval(L("to"),L("attr")); + if (L("from value") && !L("to value")) + addconval(L("to"),L("attr"),L("from value")); + } +} + +CopyConAttrs(L("from"),L("to")) { + L("attrs") = findattrs(L("from")); + while (L("attrs")) { + L("vals") = attrvals(L("attrs")); + L("name") = attrname(L("attrs")); + L("type") = attrtype(L("from"),L("name")); + + while (L("vals")) { + if (L("type") == 1) { + addnumval(L("to"),L("name"),getnumval(L("vals"))); + } else if (L("type") == 2) { + addconval(L("to"),L("name"),getconval(L("vals"))); + } else if (L("type") == 3) { + addnumval(L("to"),L("name"),getfltval(L("vals"))); + } else { + addstrval(L("to"),L("name"),getstrval(L("vals"))); + } + L("vals") = nextval(L("vals")); + } + L("attrs") = nextattr(L("attrs")); + } +} + +AttrValues(L("con"),L("attr")) { + L("at") = findattr(L("con"),L("attr")); + if (L("at")) + return attrvals(L("at")); + return 0; +} + +ValCount(L("vals")) { + while (L("vals")) { + L("count")++; + L("vals") = nextval(L("vals")); + } + return L("count"); +} + +LastChild(L("parent")) { + L("child") = down(L("parent")); + while (L("child")) { + L("last") = L("child"); + L("child") = next(L("child")); + } + return L("last"); +} + +MakeCountCon(L("con"),L("count name")) { + L("count name") = CountName(L("con"),L("count name")); + return makeconcept(L("con"),L("count name")); +} + +IncrementCount(L("con"),L("countname")) { + L("count") = numval(L("con"),L("countname")); + if (L("count")) { + L("count") = L("count") + 1; + replaceval(L("con"),L("countname"),L("count")); + } else { + addnumval(L("con"),L("countname"),1); + L("count") = 1; + } + return L("count"); +} + +CountName(L("con"),L("root")) { + L("count") = IncrementCount(L("con"),L("root")); + return L("root") + str(L("count")); +} + +StripEndDigits(L("name")) { + if (strisdigit(L("name"))) return 0; + L("len") = strlength(L("name")) - 1; + L("i") = L("len") - 1; + L("str") = strpiece(L("name"),L("i"),L("len")); + while (strisdigit(L("str")) && L("i")) { + L("i")--; + L("str") = strpiece(L("name"),L("i"),L("len")); + } + return strpiece(L("name"),0,L("i")); +} + +############################################### +# KB Dump Functipns +############################################### + +DumpKB(L("con"),L("file")) { + L("dir") = G("$apppath") + "/kb/"; + L("filename") = L("dir") + L("file") + ".kb"; + if (!kbdumptree(L("con"),L("filename"))) { + "kb.txt" << "FAILED dump: " << L("filename") << "\n"; + } else { + "kb.txt" << "DUMPED: " << L("filename") << "\n"; + } +} + +TakeKB(L("filename")) { + L("path") = G("$apppath") + "/kb/" + L("filename") + ".kb"; + "kb.txt" << "Taking: " << L("path") << "\n"; + if (take(L("path"))) { + "kb.txt" << " Taken successfully: " << L("path") << "\n"; + } else { + "kb.txt" << " Taken FAILED: " << L("path") << "\n"; + } +} + +ChildCount(L("con")) { + L("count") = 0; + L("child") = down(L("con")); + while (L("child")) { + L("count")++; + L("child") = next(L("child")); + } + return L("count"); +} + +############################################### +# KBB DISPLAY FUNCTIONS +############################################### + +############################################### +# display type: +# 0 compact with ellipses on long attr values +# 1 full, more spread out +# 2 compact without ellipses on long attr values +############################################### + +SaveToKB(L("con"),L("name")) { + L("filepath") = G("$kbpath") + L("name") + ".kbb"; + L("file") = openfile(L("filepath")); + SaveKB(L("file"),L("con"),2); + closefile(L("file")); +} + +SaveKB(L("file"),L("top con"),L("display type")) { + DisplayKBRecurse(L("file"),L("top con"),0,L("display type")); + L("file") << "\n"; + return L("top con"); +} + +DisplayKB(L("top con"),L("display type")) { + L("file") = DisplayFileName(); + DisplayKBRecurse(L("file"),L("top con"),0,L("display type")); + L("file") << "\n"; + return L("top con"); +} + +KBHeader(L("text")) { + L("file") = DisplayFileName(); + L("file") << "#######################\n"; + L("file") << "# " << L("text") << "\n"; + L("file") << "#######################\n\n"; +} + +DisplayFileName() { + if (num(G("$passnum")) < 10) { + L("file") = "ana00" + str(G("$passnum")); + }else if (num(G("$passnum")) < 100) { + L("file") = "ana0" + str(G("$passnum")); + } else { + L("file") = "ana" + str(G("$passnum")); + } + L("file") = L("file") + ".kbb"; + return L("file"); +} + +DisplayKBRecurse(L("file"),L("parent"),L("level"),L("display type")) { + if (L("level") == 0) { + L("file") << conceptname(L("parent")) << "\n"; + } + L("con") = down(L("parent")); + while (L("con")) { + L("file") << SpacesStr(L("level")+1) << conceptname(L("con")); + DisplayAttributes(L("file"),L("con"),L("display type"),L("level")); + L("file") << "\n"; + if (down(L("con"))) { + L("lev") = 1; + DisplayKBRecurse(L("file"),L("con"),L("level")+L("lev"),L("display type")); + } + L("con") = next(L("con")); + } +} + +DisplayAttributes(L("file"),L("con"),L("display type"),L("level")) { + L("attrs") = findattrs(L("con")); + if (L("attrs")) L("file") << ": "; + if (L("display type") == 1 && L("attrs")) L("file") << "\n"; + L("first attr") = 1; + + while (L("attrs")) { + L("vals") = attrvals(L("attrs")); + L("count") = ValCount(L("vals")); + if (L("display type") != 1 && !L("first attr")) { + L("file") << ", "; + } + if (L("display type") == 1) { + if (!L("first attr")) L("file") << "\n"; + L("file") << SpacesStr(L("level")+2); + } + L("name") = attrname(L("attrs")); + L("file") << QuoteIfNeeded(L("name")) << "="; + L("first") = 1; + L("type") = attrtype(L("con"),L("name")); + + while (L("vals")) { + if (!L("first")) + L("file") << ","; + else if (L("type") != 2 && L("count") > 1) + L("file") << "["; + + if (L("type") == 1) { + L("num") = getnumval(L("vals")); + L("file") << str(L("num")); + + } else if (L("type") == 2) { + if (L("first")) + L("file") << "["; + L("c") = getconval(L("vals")); + L("file") << conceptpath(L("c")); + + } else if (L("type") == 3) { + L("flt") = getfltval(L("vals")); + L("file") << str(L("flt")); + + } else { + L("val") = getstrval(L("vals")); + if (L("display type") == 0 && strlength(L("val")) > 20) { + L("shorty") = strpiece(L("val"),0,20); + L("val") = L("shorty") + "..."; + } + L("file") << QuoteIfNeeded(str(L("val"))); + } + L("first") = 0; + L("vals") = nextval(L("vals")); + } + + if (L("type") == 2 || L("count") > 1) + L("file") << "]"; + L("first attr") = 0; + L("attrs") = nextattr(L("attrs")); + } +} + +QuoteIfNeeded(L("str")) { + if (!L("str")) + return 0; + L("new") = strsubst(L("str"),"\"","\\\""); + if (strcontains(" ",L("str")) || strhaspunct(L("str"))) + L("new") = "\"" + L("new") + "\""; + return L("new"); +} + +# Because NLP++ doesn't allow for empty strings, +# this function can only be called with "num" >= 1 +SpacesStr(L("num")) { + L("n") = 1; + L("spaces") = " "; + while (L("n") < L("num")) { + L("spaces") = L("spaces") + " "; + L("n")++; + } + return L("spaces"); +} + +PadStr(L("num str"),L("pad str"),L("pad len")) { + L("len") = strlength(L("num str")); + L("pad") = 0; + L("to pad") = L("pad len") - L("len"); + while (L("i")++ < L("to pad")) { + L("pad") = L("pad") + L("pad str"); + } + L("padded") = L("pad") + L("num str"); + return L("padded"); +} + +############################################### +# JSON FUNCTIONS +############################################### + +JsonKB(L("file"),L("con")) { + JsonKBRecurse(L("file"),L("con"),0); +} + +JsonKBRecurse(L("file"),L("parent"),L("level")) { + if (L("level") == 0) { + L("file") << "{\n"; + } + L("con") = down(L("parent")); + L("first") = 1; + while (L("con")) { + L("file") << SpacesStr(L("level")+1) << JsonStr(conceptname(L("con"))) << ": {\n"; + JsonAttributes(L("file"),L("con"),L("level")+1); + if (down(L("con"))) { + L("lev") = 1; + if (!L("first")) L("file") << ",\n"; + JsonKBRecurse(L("file"),L("con"),L("level")+L("lev")); + } + else { + L("file") << "\n"; + } + L("file") << SpacesStr(L("level")+1) << "}"; + if (next(L("con"))) { + L("file") << ","; + } + L("file") << "\n"; + L("first") = 0; + L("con") = next(L("con")); + } + if (L("level") == 0) { + L("file") << "}\n"; + } +} + +JsonAttributes(L("file"),L("con"),L("level")) { + L("attrs") = findattrs(L("con")); + if (L("display type") == 1 && L("attrs")) L("file") << "\n"; + L("first attr") = 1; + L("first") = 1; + + while (L("attrs")) { + L("vals") = attrvals(L("attrs")); + L("count") = ValCount(L("vals")); + if (!L("first attr")) { + L("file") << "\n"; + } + L("name") = attrname(L("attrs")); + L("file") << SpacesStr(L("level")+1) << JsonStr(L("name")) << ": "; + L("type") = attrtype(L("con"),L("name")); + + while (L("vals")) { + if (L("type") != 2 && L("count") > 1) + L("file") << "["; + + if (L("type") == 1) { + L("num") = getnumval(L("vals")); + L("file") << JsonStr(str(L("num"))); + + } else if (L("type") == 2) { + L("c") = getconval(L("vals")); + L("file") << JsonStr(conceptpath(L("c"))); + + } else if (L("type") == 3) { + L("flt") = getfltval(L("vals")); + L("file") << JsonStr(str(L("flt"))); + + } else { + L("val") = getstrval(L("vals")); + L("file") << JsonStr(str(L("val"))); + } + L("first") = 0; + L("vals") = nextval(L("vals")); + } + + L("first attr") = 0; + L("attrs") = nextattr(L("attrs")); + if (L("attrs")) L("file") << ","; + } +} + +JsonStr(L("str")) { + L("str") = strsubst(L("str"), "\\", "\\\\"); + L("str") = strsubst(L("str"), "\"", "\\\""); + return "\"" + L("str") + "\""; +} + +############################################### +# Ambiguity Functions +############################################### + +AmbigTrimPOS(L("node"),L("pos")) { + L("meaning") = pnvar(L("node"),"meaning"); + if (!L("meaning")) { + return; + } + L("con") = down(L("meaning")); + while (L("con")) { + L("p") = strval(L("con"),"pos"); + if (L("p") == L("pos")) { + AmbigCopyAttrs(L("con"),L("node")); + pnreplaceval(L("node"),"pos num",1); + pnreplaceval(L("node"),"meaning",L("con")); + } + L("con") = next(L("con")); + } + + L("names") = pnvarnames(L("node")); + while (L("names")[L("ii")]) { + L("name") = L("names")[ L("ii") ]; + if (IsPOS(L("name")) && L("name") != L("pos")) { + pnremoveval(L("node"),L("name")); + } + L("ii")++; + } +} + +AmbigCopyAttrs(L("con"),L("node")) { + L("attrs") = findattrs(L("con")); + + while (L("attrs")) { + L("vals") = attrvals(L("attrs")); + L("name") = attrname(L("attrs")); + L("type") = attrtype(L("con"),L("name")); + + if (L("name") != "pos") { + while (L("vals")) { + if (L("type") == 1) { + pnmakevar(L("node"),L("name"),getnumval(L("vals"))); + } else if (L("type") == 2) { + pnmakevar(L("node"),L("name"),getconval(L("vals"))); + } else if (L("type") == 3) { + pnmakevar(L("node"),L("name"),getfltval(L("vals"))); + } else { + pnmakevar(L("node"),L("name"),getstrval(L("vals"))); + } + L("vals") = nextval(L("vals")); + } + } + + L("attrs") = nextattr(L("attrs")); + } +} + +IsPOS(L("pos")) { + if (L("pos") == "noun" || L("pos") == "verb" || L("pos") == "adj" || L("pos") == "adv" || L("pos") == "prep" || L("pos") == "pron" || L("pos") == "conj" || L("pos") == "det" || L("pos") == "num" || L("pos") == "int" || L("pos") == "art" || L("pos") == "pro" || L("pos") == "punct") + return 1; + return 0; +} + +############################################### +# DICTIONARY FUNCTIONS (These are no longer needed. Relics of the past.) +############################################### + +DictionaryStart() { + G("attrs path") = G("$apppath") + "\\kb\\user\\attrs.kb"; + G("attrs") = openfile(G("attrs path")); +} + +DictionaryWord(L("word"),L("attrName"),L("value"),L("attrType")) { + addword(L("word")); + addword(L("attrName")); + G("attrs") << "ind attr\n" << findwordpath(L("word")) << "\n0\n"; + G("attrs") << findwordpath(L("attrName")) << "\n"; + if (L("attrType") == "str") + G("attrs") << "pst\n" << "\"" << L("value") << "\""; + else if (L("attrType") == "num") + G("attrs") << "pnum\n" << str(L("value")); + else if (L("attrType") == "con") + G("attrs") << "pcon\n" << conceptpath(L("value")); + G("attrs") << "\nend ind\n\n"; +} + +DictionaryEnd() { + G("attrs") << "\nquit\n\n"; + closefile(G("attrs")); +} + +OrderByCount(L("words"),L("order")) { + L("done") = 0; + L("sanity") = 0; + while (!L("done")) { + L("done") = 1; + L("conmax") = 0; + L("max") = 0; + L("word") = down(L("words")); + while (L("word")) { + L("check") = numval(L("word"),"checked"); + if (!L("check")) { + L("done") = 0; + L("count") = numval(L("word"),"count"); + if (L("count") > L("max")) { + "max.txt" << conceptname(L("word")) << " " << L("count") << "\n"; + L("max") = L("count"); + L("conmax") = L("word"); + } + } + L("word") = next(L("word")); + } + if (!L("done") && L("conmax")) { + L("word") = conceptname(L("conmax")); + L("con") = makeconcept(L("order"),L("word")); + if (!spellword(L("word"))) { + addnumval(L("con"),"unknown",1); + } + addnumval(L("con"),"count",L("max")); + addnumval(L("conmax"),"checked",1); + } + if (L("safety")++ > 300) { + L("done") = 1; + } + } +} + +@@DECL diff --git a/tutorial-15/spec/ambig.nlp b/tutorial-15/spec/ambig.nlp new file mode 100644 index 0000000..ce6c274 --- /dev/null +++ b/tutorial-15/spec/ambig.nlp @@ -0,0 +1,41 @@ +############################################### +# FILE: ambig +# SUBJ: comment +# AUTH: David de Hilster +# CREATED: 2024-7-9 16:35:17 +# MODIFIED: +############################################### + +@NODES _ROOT + +# He works at google. + +@PRE +<1,1> var("prep"); +<2,2> var("noun"); +<2,2> vargt("pos num",1); + +@POST +AmbigTrimPOS(N(2),"noun"); + +@RULES +_xNIL <- + _xALPHA ### (1) + _xALPHA ### (2) + @@ + +# Did you google his friend? + +@PRE +<1,1> var("verb"); +<1,1> vargt("pos num",1); +<2,2> var("pro"); + +@POST +AmbigTrimPOS(N(1),"verb"); + +@RULES +_xNIL <- + _xALPHA ### (1) + _xALPHA ### (2) + @@ \ No newline at end of file diff --git a/tutorial-15/spec/analyzer.seq b/tutorial-15/spec/analyzer.seq new file mode 100644 index 0000000..d6a0c7b --- /dev/null +++ b/tutorial-15/spec/analyzer.seq @@ -0,0 +1,4 @@ +dicttokz nil # Gen: Convert input to token list +nlp init # comment +nlp KBFuncs # comment +nlp ambig # comment \ No newline at end of file diff --git a/tutorial-15/spec/init.nlp b/tutorial-15/spec/init.nlp new file mode 100644 index 0000000..9f86270 --- /dev/null +++ b/tutorial-15/spec/init.nlp @@ -0,0 +1,15 @@ +############################################### +# FILE: init +# SUBJ: comment +# AUTH: David de Hilster +# CREATED: 2024-7-9 7:49:57 +# MODIFIED: +############################################### + +@CODE + +G("dictionary") = getconcept(findroot(),"dictionary"); +SaveKB("dictionary.kbb",G("dictionary"),2); +SaveKB("root.kbb",findroot(),2); + +@@CODE \ No newline at end of file diff --git a/tutorial-15/tmp/README.md b/tutorial-15/tmp/README.md new file mode 100644 index 0000000..e4f67dc --- /dev/null +++ b/tutorial-15/tmp/README.md @@ -0,0 +1 @@ +This directory is for the function kbdumptree. The engine should create this but sometimes permission problems arrise. \ No newline at end of file