diff --git a/README.md b/README.md index 88c1831..02349ab 100644 --- a/README.md +++ b/README.md @@ -75,4 +75,8 @@ This analyzer analyzes the 50 state webpages and creates dictionaries and a know ## 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) \ No newline at end of file +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-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