Actually added the documentation to the repository. D'oh!

This commit is contained in:
Simon Brooke 2020-05-01 12:10:12 +01:00
parent 12a2eb71c8
commit 38a4610f0e
No known key found for this signature in database
GPG key ID: A7A4F18D1D4DF987
9 changed files with 757 additions and 8 deletions

View file

@ -8,7 +8,7 @@ Download from http://example.com/FIXME.
## Usage ## Usage
**WARNING**: does not even nearly work yet, and may nver do so. The value of this archive is probably mainly as something to mine for algorithms and ideas, especially for those doing natural language interpreteation and generation. **WARNING**: does not even nearly work yet, and may never do so. The value of this archive is probably mainly as something to mine for algorithms and ideas, especially for those doing natural language interpreteation and generation.
**WARNING**: nothing in this is stable. Nothing should be treated as an API. Feel free to steal ideas and code, but don't depend on `wwui` as a library. **WARNING**: nothing in this is stable. Nothing should be treated as an API. Feel free to steal ideas and code, but don't depend on `wwui` as a library.

View file

@ -30,7 +30,7 @@
<td class="with-number">7</td><td class="with-number">1</td><td class="with-number">3</td> <td class="with-number">7</td><td class="with-number">1</td><td class="with-number">3</td>
</tr> </tr>
<tr> <tr>
<td><a href="wwui/propositions.clj.html">wwui.propositions</a></td><td class="with-bar"><div class="covered" <td><a href="wwui/parser.clj.html">wwui.parser</a></td><td class="with-bar"><div class="covered"
style="width:58.17307692307692%; style="width:58.17307692307692%;
float:left;"> 484 </div><div class="not-covered" float:left;"> 484 </div><div class="not-covered"
style="width:41.82692307692308%; style="width:41.82692307692308%;

View file

@ -0,0 +1,692 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../coverage.css"/> <title> wwui/parser.clj </title>
</head>
<body>
<span class="covered" title="1 out of 1 forms covered">
001&nbsp;&nbsp;(ns&nbsp;wwui.parser
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
002&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[clojure.math.combinatorics&nbsp;:as&nbsp;combi]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.pprint&nbsp;:refer&nbsp;[pprint]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.string&nbsp;:as&nbsp;s]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[opennlp.nlp&nbsp;:as&nbsp;nlp]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[opennlp.treebank&nbsp;:as&nbsp;tb]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[taoensso.timbre&nbsp;:as&nbsp;log&nbsp;:refer&nbsp;[debug&nbsp;error&nbsp;info&nbsp;spy]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[wildwood.knowledge-accessor&nbsp;:refer&nbsp;[Accessor]]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
009&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
010&nbsp;&nbsp;;;&nbsp;Position&nbsp;tags&nbsp;used&nbsp;by&nbsp;OpenNLP&nbsp;for&nbsp;English&nbsp;are&nbsp;documented&nbsp;here:
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
011&nbsp;&nbsp;;;&nbsp;https:&#x2F;&#x2F;dpdearing.com&#x2F;posts&#x2F;2011&#x2F;12&#x2F;opennlp-part-of-speech-pos-tags-penn-english-treebank&#x2F;
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
012&nbsp;&nbsp;
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
013&nbsp;&nbsp;(def&nbsp;get-sentences&nbsp;(nlp&#x2F;make-sentence-detector&nbsp;&quot;models&#x2F;en-sent.bin&quot;))
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
014&nbsp;&nbsp;(def&nbsp;tokenize&nbsp;(nlp&#x2F;make-tokenizer&nbsp;&quot;models&#x2F;en-token.bin&quot;))
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
015&nbsp;&nbsp;(def&nbsp;pos-tag&nbsp;(nlp&#x2F;make-pos-tagger&nbsp;&quot;models&#x2F;en-pos-maxent.bin&quot;))
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
016&nbsp;&nbsp;(def&nbsp;name-find&nbsp;(nlp&#x2F;make-name-finder&nbsp;&quot;models&#x2F;namefind&#x2F;en-ner-person.bin&quot;))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
017&nbsp;&nbsp;;;&nbsp;(def&nbsp;chunker&nbsp;(make-treebank-chunker&nbsp;&quot;models&#x2F;en-chunker.bin&quot;))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
018&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
019&nbsp;&nbsp;(def&nbsp;grammar
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
020&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;objective&nbsp;of&nbsp;this&nbsp;grammar&nbsp;is&nbsp;to&nbsp;allow&nbsp;us&nbsp;to&nbsp;take&nbsp;a&nbsp;sequence&nbsp;of&nbsp;tagged&nbsp;symbols,&nbsp;and
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;&nbsp;&nbsp;produce&nbsp;a&nbsp;higher-level&nbsp;tagging&nbsp;of&nbsp;parts&nbsp;of&nbsp;speech,&nbsp;and&nbsp;ultimately&nbsp;propositions,&nbsp;from&nbsp;them.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
022&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
023&nbsp;&nbsp;&nbsp;&nbsp;*NOTE&nbsp;THAT*&nbsp;tags&nbsp;in&nbsp;this&nbsp;grammar&nbsp;are&nbsp;always&nbsp;keywords,&nbsp;to&nbsp;distinguish&nbsp;them&nbsp;from&nbsp;OpenNLP
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;&nbsp;&nbsp;tags,&nbsp;which&nbsp;tag&nbsp;individual&nbsp;tokens&nbsp;and&nbsp;are&nbsp;represented&nbsp;as&nbsp;strings.&quot;
</span><br/>
<span class="covered" title="22 out of 22 forms covered">
025&nbsp;&nbsp;&nbsp;&nbsp;{:contextual-reference&nbsp;[[&quot;PRP&quot;]]&nbsp;;;&nbsp;the&nbsp;documentation&nbsp;says&nbsp;PRP&nbsp;is&nbsp;&#x27;peronal&nbsp;pronoun&#x27;,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
026&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;but&nbsp;it&nbsp;seems&nbsp;to&nbsp;be&nbsp;all&nbsp;pronouns.
</span><br/>
<span class="covered" title="9 out of 9 forms covered">
027&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:noun&nbsp;[[&quot;NN&quot;][&quot;NNS&quot;][&quot;NNP&quot;][&quot;NNPS&quot;]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:full-name&nbsp;[[&quot;NNP&quot;]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
029&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;NNP&quot;&nbsp;:full-name]]&nbsp;;;&nbsp;an&nbsp;unpunctuated&nbsp;sequence&nbsp;of&nbsp;proper&nbsp;nouns
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;probably&nbsp;represents&nbsp;a&nbsp;full&nbsp;name
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
031&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:noun-phrase&nbsp;[[:contextual-reference]
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:noun]
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:full-name]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;DT&quot;&nbsp;:noun]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adjectives&nbsp;:noun]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;DT&quot;&nbsp;:adjectives&nbsp;:noun]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:noun-phrases&nbsp;[[:noun-phrase]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:noun-phrase&nbsp;&quot;CC&quot;&nbsp;:noun-phrases]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:noun-phrase&nbsp;&quot;,&quot;&nbsp;:noun-phrases]]
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:adjective&nbsp;[[&quot;JJ&quot;][&quot;JJR&quot;][&quot;JJS&quot;]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:adjectives&nbsp;[[:adjective]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adjective&nbsp;:adjectives]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adjective&nbsp;&quot;,&quot;&nbsp;:adjectives]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adjective&nbsp;&quot;CC&quot;&nbsp;:adjectives]]
</span><br/>
<span class="covered" title="13 out of 13 forms covered">
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:verb&nbsp;[[&quot;VB&quot;][&quot;VBD&quot;][&quot;VBG&quot;][&quot;VBN&quot;][&quot;VBP&quot;][&quot;VBZ&quot;]]
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:adverb&nbsp;[[&quot;RB&quot;][&quot;RBR&quot;][&quot;RBS&quot;]]&nbsp;;;&nbsp;beware&nbsp;here&nbsp;that&nbsp;negation&nbsp;and&nbsp;qualification&nbsp;show&nbsp;up&nbsp;only&nbsp;as&nbsp;adverbs
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:adverbs&nbsp;[[:adverb]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adverb&nbsp;&quot;,&quot;&nbsp;:adverbs]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adverb&nbsp;&quot;CC&quot;&nbsp;:adverbs]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:verb-phrase&nbsp;[[:verb]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:adverbs&nbsp;:verb]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:verb&nbsp;:adverbs&nbsp;:verb]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:verb&nbsp;:adverbs]
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:verb&nbsp;:adverbs&nbsp;:verb&nbsp;&quot;TO&quot;]]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:locator&nbsp;[[&quot;IN&quot;&nbsp;:noun-phrases]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:locators&nbsp;[[:locator]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:locator&nbsp;:locators]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:locator&nbsp;&quot;,&quot;&nbsp;:locators]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:location&nbsp;[[:locators]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:subject&nbsp;[[:noun-phrases]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
061&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:object&nbsp;[[:noun-phrases]]
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
062&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:proposition&nbsp;[[:subject&nbsp;:verb-phrase&nbsp;:object]
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:location&nbsp;&quot;,&quot;&nbsp;:subject&nbsp;:verb-phrase&nbsp;:object]
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
064&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:subject&nbsp;&quot;,&quot;&nbsp;:location&nbsp;&quot;,&quot;&nbsp;:verb-phrase&nbsp;:object]
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
065&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:subject&nbsp;:verb-phrase&nbsp;:object&nbsp;:location]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
066&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:propositions&nbsp;[[:proposition]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
067&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:proposition&nbsp;&quot;CC&quot;&nbsp;:propositions]
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
068&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:proposition&nbsp;&quot;,&quot;&nbsp;&quot;CC&quot;&nbsp;:propositions]]})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
069&nbsp;&nbsp;
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
070&nbsp;&nbsp;(declare&nbsp;reparse&nbsp;rdp-seek)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
071&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
072&nbsp;&nbsp;(defn&nbsp;rdp-seek
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
073&nbsp;&nbsp;&nbsp;&nbsp;&quot;Seek&nbsp;a&nbsp;phrase&nbsp;which&nbsp;satisfies&nbsp;this&nbsp;`goal`&nbsp;(expected&nbsp;to&nbsp;be&nbsp;a&nbsp;keyword)&nbsp;in
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
074&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;`tagged-sentence`&nbsp;using&nbsp;this&nbsp;`grammar`.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
075&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
076&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;a&nbsp;cons&nbsp;comprising
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
077&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;the&nbsp;first&nbsp;matching&nbsp;phrase&nbsp;for&nbsp;the&nbsp;goal,&nbsp;tagged&nbsp;with&nbsp;the&nbsp;goal,&nbsp;or&nbsp;`nil`&nbsp;if
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
078&nbsp;&nbsp;&nbsp;&nbsp;no&nbsp;match;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
079&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;the&nbsp;tail&nbsp;of&nbsp;the&nbsp;sentence&nbsp;when&nbsp;the&nbsp;parts&nbsp;comprising&nbsp;the&nbsp;phrase&nbsp;are&nbsp;removed.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
080&nbsp;&nbsp;&nbsp;&nbsp;[tagged-sentence&nbsp;grammar&nbsp;goal]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
081&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(keyword?&nbsp;goal)
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
082&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when&nbsp;(not&nbsp;(empty?&nbsp;tagged-sentence))
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
083&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-let&nbsp;[result&nbsp;(first
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
084&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(sort
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(&lt;&nbsp;(count&nbsp;%1)&nbsp;(count&nbsp;%2))
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
086&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
087&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty?
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
088&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
089&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(reparse&nbsp;tagged-sentence&nbsp;grammar&nbsp;%)
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
090&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(goal&nbsp;grammar)))))]
</span><br/>
<span class="covered" title="13 out of 13 forms covered">
091&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons&nbsp;(cons&nbsp;(first&nbsp;result)&nbsp;(list&nbsp;goal))&nbsp;(rest&nbsp;result))))
</span><br/>
<span class="not-covered" title="0 out of 16 forms covered">
092&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(throw&nbsp;(Exception.&nbsp;(str&nbsp;&quot;Non-keyword&nbsp;passed&nbsp;to&nbsp;rdp-seek:&nbsp;`&quot;&nbsp;goal&nbsp;&quot;`&nbsp;(type&nbsp;&quot;&nbsp;(or&nbsp;(type&nbsp;goal)&nbsp;&quot;nil&quot;)&nbsp;&quot;)&quot;)))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
093&nbsp;&nbsp;
</span><br/>
<span class="covered" title="19 out of 19 forms covered">
094&nbsp;&nbsp;(defmacro&nbsp;tag
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
095&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;tag,&nbsp;on&nbsp;a&nbsp;`tagged-token`,&nbsp;is&nbsp;just&nbsp;the&nbsp;second&nbsp;element.&nbsp;Written&nbsp;as&nbsp;a&nbsp;macro
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
096&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;readability.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
097&nbsp;&nbsp;&nbsp;&nbsp;[tagged-token]
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
098&nbsp;&nbsp;&nbsp;&nbsp;`(nth&nbsp;~tagged-token&nbsp;1))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
099&nbsp;&nbsp;
</span><br/>
<span class="covered" title="44 out of 44 forms covered">
100&nbsp;&nbsp;(defmacro&nbsp;coll-or-nil?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
101&nbsp;&nbsp;&nbsp;&nbsp;[o]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
102&nbsp;&nbsp;&nbsp;&nbsp;&quot;For&nbsp;fuck&#x27;s&nbsp;sake,&nbsp;`nil`&nbsp;isn&#x27;t&nbsp;a&nbsp;collection?&nbsp;What&nbsp;planet&nbsp;are&nbsp;these&nbsp;people&nbsp;on?&quot;
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
103&nbsp;&nbsp;&nbsp;&nbsp;`(or&nbsp;(nil?&nbsp;~o)&nbsp;(coll?&nbsp;~o)))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
104&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
105&nbsp;&nbsp;(defn&nbsp;rdp-extend
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
106&nbsp;&nbsp;&nbsp;&nbsp;&quot;Seek&nbsp;a&nbsp;phrase&nbsp;which&nbsp;satisfies&nbsp;this&nbsp;`goal`&nbsp;(expected&nbsp;to&nbsp;be&nbsp;a&nbsp;collection&nbsp;of&nbsp;tags)&nbsp;in
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
107&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;`tagged-sentence`&nbsp;using&nbsp;this&nbsp;`grammar`.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
108&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
109&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;a&nbsp;cons&nbsp;comprising
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
110&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;the&nbsp;first&nbsp;matching&nbsp;phrase&nbsp;for&nbsp;the&nbsp;goal,&nbsp;or&nbsp;`nil`&nbsp;if&nbsp;no&nbsp;match;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
111&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;the&nbsp;tail&nbsp;of&nbsp;the&nbsp;sentence&nbsp;when&nbsp;the&nbsp;parts&nbsp;comprising&nbsp;the&nbsp;phrase&nbsp;are&nbsp;removed.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
112&nbsp;&nbsp;&nbsp;&nbsp;[tagged-sentence&nbsp;grammar&nbsp;goal]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
113&nbsp;&nbsp;&nbsp;&nbsp;(cond
</span><br/>
<span class="covered" title="10 out of 10 forms covered">
114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(not&nbsp;(coll-or-nil?&nbsp;goal))
</span><br/>
<span class="not-covered" title="0 out of 16 forms covered">
115&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(throw&nbsp;(Exception.&nbsp;(str&nbsp;&quot;Non-collection&nbsp;passed&nbsp;to&nbsp;rdp-extend:&nbsp;`&quot;&nbsp;goal&nbsp;&quot;`&nbsp;(type&nbsp;&quot;&nbsp;(or&nbsp;(type&nbsp;goal)&nbsp;&quot;nil&quot;)&nbsp;&quot;)&quot;)))
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;goal)
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons&nbsp;(list)&nbsp;tagged-sentence)
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(not&nbsp;(empty?&nbsp;tagged-sentence))
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
119&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[[tt&nbsp;&amp;&nbsp;st]&nbsp;tagged-sentence
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
120&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[target&nbsp;&amp;&nbsp;gt]&nbsp;goal]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(keyword?&nbsp;target)
</span><br/>
<span class="covered" title="11 out of 11 forms covered">
123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-let&nbsp;[[h&nbsp;&amp;&nbsp;t](reparse&nbsp;tagged-sentence&nbsp;grammar&nbsp;target)]
</span><br/>
<span class="covered" title="11 out of 11 forms covered">
124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-let&nbsp;[[dh&nbsp;&amp;&nbsp;dt]&nbsp;(reparse&nbsp;t&nbsp;grammar&nbsp;gt)]
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons&nbsp;(cons&nbsp;h&nbsp;dh)&nbsp;dt)))
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(=&nbsp;target&nbsp;(tag&nbsp;tt))
</span><br/>
<span class="covered" title="11 out of 11 forms covered">
127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-let&nbsp;[[dh&nbsp;&amp;&nbsp;dt]&nbsp;(reparse&nbsp;st&nbsp;grammar&nbsp;gt)]
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons&nbsp;(cons&nbsp;tt&nbsp;dh)&nbsp;dt))))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
129&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
130&nbsp;&nbsp;(defn&nbsp;reparse
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
131&nbsp;&nbsp;&nbsp;&nbsp;&quot;Reparse&nbsp;this&nbsp;`tagged-sentence`&nbsp;using&nbsp;this&nbsp;grammar&nbsp;to&nbsp;seek&nbsp;this&nbsp;`goal`.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
132&nbsp;&nbsp;&nbsp;&nbsp;Parse&nbsp;greedily,&nbsp;seeking&nbsp;the&nbsp;most&nbsp;extended&nbsp;goal.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
133&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
134&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;a&nbsp;sequence&nbsp;comprising
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
135&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;the&nbsp;first&nbsp;matching&nbsp;phrase&nbsp;for&nbsp;the&nbsp;goal,&nbsp;tagged&nbsp;with&nbsp;the&nbsp;goal,&nbsp;or&nbsp;`nil`
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
136&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;no&nbsp;match;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
137&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;the&nbsp;tail&nbsp;of&nbsp;the&nbsp;sentence&nbsp;when&nbsp;the&nbsp;parts&nbsp;comprising&nbsp;the&nbsp;phrase&nbsp;are&nbsp;removed.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
138&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
139&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;function&nbsp;is&nbsp;called&nbsp;`reparse`&nbsp;because:
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
140&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;it&nbsp;is&nbsp;designed&nbsp;to&nbsp;parse&nbsp;sentences&nbsp;which&nbsp;have&nbsp;already&nbsp;been&nbsp;parsed&nbsp;by
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
141&nbsp;&nbsp;&nbsp;&nbsp;OpenNLP:&nbsp;it&nbsp;will&nbsp;not&nbsp;work&nbsp;on&nbsp;raw&nbsp;sentences;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
142&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;it&nbsp;is&nbsp;a&nbsp;recursive&nbsp;descent&nbsp;parser.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
143&nbsp;&nbsp;&nbsp;&nbsp;[tagged-sentence&nbsp;grammar&nbsp;goal]
</span><br/>
<span class="partial" title="13 out of 16 forms covered">
144&nbsp;&nbsp;&nbsp;&nbsp;(log&#x2F;debug&nbsp;&quot;=&gt;&nbsp;Choosing&nbsp;strategy&nbsp;for&nbsp;&quot;
</span><br/>
<span class="not-covered" title="0 out of 19 forms covered">
145&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;goal&nbsp;&quot;&nbsp;in&nbsp;&quot;&nbsp;(with-out-str&nbsp;(pprint&nbsp;tagged-sentence)))
</span><br/>
<span class="partial" title="3 out of 4 forms covered">
146&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[r&nbsp;(cond
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
147&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(keyword?&nbsp;goal)&nbsp;(rdp-seek&nbsp;tagged-sentence&nbsp;grammar&nbsp;goal)
</span><br/>
<span class="covered" title="13 out of 13 forms covered">
148&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(coll-or-nil?&nbsp;goal)&nbsp;(rdp-extend&nbsp;tagged-sentence&nbsp;grammar&nbsp;goal))]
</span><br/>
<span class="partial" title="13 out of 18 forms covered">
149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(log&#x2F;debug&nbsp;&quot;&lt;=&nbsp;&quot;&nbsp;goal&nbsp;&quot;&nbsp;in&nbsp;&quot;
</span><br/>
<span class="not-covered" title="0 out of 20 forms covered">
150&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(s&#x2F;trim&nbsp;(with-out-str&nbsp;(pprint&nbsp;tagged-sentence)))
</span><br/>
<span class="not-covered" title="0 out of 20 forms covered">
151&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;returned&nbsp;&quot;&nbsp;(s&#x2F;trim&nbsp;(with-out-str&nbsp;(pprint&nbsp;r))))
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
152&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
153&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
154&nbsp;&nbsp;(defn&nbsp;identify
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
155&nbsp;&nbsp;&nbsp;&nbsp;[parse-tree&nbsp;knowledge-accessor]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
156&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;TODO:&nbsp;we&nbsp;don&#x27;t&nbsp;yet&nbsp;have&nbsp;a&nbsp;working&nbsp;knowledge&nbsp;accessor.&nbsp;When&nbsp;we&nbsp;do,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
157&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;construct&nbsp;a&nbsp;query&nbsp;from&nbsp;the&nbsp;contents&nbsp;of&nbsp;this&nbsp;parse-tree,&nbsp;and&nbsp;pass&nbsp;it
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
158&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;to&nbsp;the&nbsp;knowledge&nbsp;accessor&nbsp;in&nbsp;the&nbsp;hope&nbsp;of&nbsp;finding&nbsp;a&nbsp;true&nbsp;name.
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
159&nbsp;&nbsp;&nbsp;&nbsp;parse-tree)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
160&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
161&nbsp;&nbsp;(defn&nbsp;normalise
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
162&nbsp;&nbsp;&nbsp;&nbsp;[parse-tree&nbsp;ka]
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
163&nbsp;&nbsp;&nbsp;&nbsp;(if
</span><br/>
<span class="not-covered" title="0 out of 23 forms covered">
164&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(coll?&nbsp;parse-tree)&nbsp;(=&nbsp;(count&nbsp;parse-tree)&nbsp;2)(keyword?&nbsp;(nth&nbsp;parse-tree&nbsp;1)))
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
165&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;(nth&nbsp;parse-tree&nbsp;1)
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
166&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:proposition&nbsp;(list
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
167&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
168&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
169&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{}
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
170&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
171&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;TODO:&nbsp;use&nbsp;combinatorics&nbsp;to&nbsp;extract&nbsp;all&nbsp;propositions&nbsp;from
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
172&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;a&nbsp;proposition&nbsp;having&nbsp;multiple&nbsp;locations,&nbsp;multiple&nbsp;subject,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
173&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;objects&nbsp;and&#x2F;or&nbsp;verbs
</span><br/>
<span class="not-covered" title="0 out of 13 forms covered">
174&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(assoc&nbsp;{}&nbsp;(nth&nbsp;%&nbsp;1)&nbsp;(identify&nbsp;(first&nbsp;%)&nbsp;ka))
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
175&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(normalise&nbsp;%&nbsp;ka)&nbsp;(first&nbsp;parse-tree)))))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
176&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:location&nbsp;:subject&nbsp;:object)
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
177&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
178&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
179&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
180&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
181&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty?
</span><br/>
<span class="not-covered" title="0 out of 30 forms covered">
182&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(normalise&nbsp;%&nbsp;ka)&nbsp;(first&nbsp;parse-tree))))
</span><br/>
<span class="not-covered" title="0 out of 18 forms covered">
183&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(nth&nbsp;parse-tree&nbsp;1)))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
184&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:propositions&nbsp;:locators&nbsp;:noun-phrases&nbsp;:verbs)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
185&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
186&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
187&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
188&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty?
</span><br/>
<span class="not-covered" title="0 out of 40 forms covered">
189&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(normalise&nbsp;%&nbsp;ka)&nbsp;(first&nbsp;parse-tree))))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
190&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;else
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
191&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parse-tree)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
192&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parse-tree))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
193&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
194&nbsp;&nbsp;(defn&nbsp;propositions
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
195&nbsp;&nbsp;&nbsp;&nbsp;&quot;Given&nbsp;a&nbsp;`tagged-sentence`,&nbsp;return&nbsp;a&nbsp;list&nbsp;of&nbsp;propositions&nbsp;detected&nbsp;in&nbsp;that
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
196&nbsp;&nbsp;&nbsp;&nbsp;sentence;&nbsp;if&nbsp;`knowledge-accessor`&nbsp;is&nbsp;passed,&nbsp;try&nbsp;to&nbsp;resolve&nbsp;names&nbsp;and&nbsp;noun
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
197&nbsp;&nbsp;&nbsp;&nbsp;phrases&nbsp;to&nbsp;entities&nbsp;known&nbsp;to&nbsp;that&nbsp;knowledge&nbsp;accessor.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
198&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
199&nbsp;&nbsp;&nbsp;&nbsp;TODO:&nbsp;Note&nbsp;that&nbsp;if&nbsp;`:subject`,&nbsp;`:object`&nbsp;or&nbsp;`:locator`&nbsp;resolves&nbsp;to&nbsp;multiple
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
200&nbsp;&nbsp;&nbsp;&nbsp;objects,&nbsp;then&nbsp;that&nbsp;is&nbsp;essentially&nbsp;one&nbsp;proposition&nbsp;for&nbsp;each&nbsp;unique
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
201&nbsp;&nbsp;&nbsp;&nbsp;combination.&nbsp;This&nbsp;is&nbsp;not&nbsp;yet&nbsp;implemented!&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
202&nbsp;&nbsp;&nbsp;&nbsp;([tagged-sentence]
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
203&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(propositions&nbsp;tagged-sentence&nbsp;nil))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
204&nbsp;&nbsp;&nbsp;&nbsp;([tagged-sentence&nbsp;;;&nbsp;^wildwood.knowledge-accessor.Accessor
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
205&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;knowledge-accessor]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
206&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;TODO:&nbsp;doesn&#x27;t&nbsp;work&nbsp;yet.
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
207&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
208&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
209&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
210&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty?
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
211&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
212&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(normalise&nbsp;%&nbsp;knowledge-accessor)
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
213&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(first&nbsp;(first&nbsp;(reparse&nbsp;tagged-sentence&nbsp;grammar&nbsp;:propositions))))))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
214&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
215&nbsp;&nbsp;(defn&nbsp;propositions-from-file
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
216&nbsp;&nbsp;&nbsp;&nbsp;[file-path]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
217&nbsp;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
218&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
219&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
220&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty?
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
221&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="not-covered" title="0 out of 7 forms covered">
222&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(propositions&nbsp;(pos-tag&nbsp;(tokenize&nbsp;%)))
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
223&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(get-sentences&nbsp;(slurp&nbsp;file-path))))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
224&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
225&nbsp;&nbsp;;;&nbsp;(reparse&nbsp;(pos-tag&nbsp;(tokenize&nbsp;&quot;True&nbsp;love&nbsp;is&nbsp;the&nbsp;daughter&nbsp;of&nbsp;temperance,&nbsp;and&nbsp;temperance&nbsp;is&nbsp;utterly&nbsp;opposed&nbsp;to&nbsp;the&nbsp;madness&nbsp;of&nbsp;bodily&nbsp;pleasure.&quot;))&nbsp;grammar&nbsp;:propositions)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
226&nbsp;&nbsp;;;&nbsp;(reparse&nbsp;[[&quot;temperance&quot;&nbsp;&quot;NN&quot;]&nbsp;[&quot;is&quot;&nbsp;&quot;VBZ&quot;]&nbsp;[&quot;utterly&quot;&nbsp;&quot;RB&quot;]&nbsp;[&quot;opposed&quot;&nbsp;&quot;VBN&quot;]&nbsp;[&quot;to&quot;&nbsp;&quot;TO&quot;]&nbsp;[&quot;the&quot;&nbsp;&quot;DT&quot;]&nbsp;[&quot;madness&quot;&nbsp;&quot;NN&quot;]&nbsp;[&quot;of&quot;&nbsp;&quot;IN&quot;]&nbsp;[&quot;bodily&quot;&nbsp;&quot;JJ&quot;]&nbsp;[&quot;pleasure&quot;&nbsp;&quot;NN&quot;]]&nbsp;grammar&nbsp;:subject)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
227&nbsp;&nbsp;;;&nbsp;(reparse&nbsp;[[&quot;is&quot;&nbsp;&quot;VBZ&quot;]&nbsp;[&quot;utterly&quot;&nbsp;&quot;RB&quot;]&nbsp;[&quot;opposed&quot;&nbsp;&quot;VBN&quot;]&nbsp;[&quot;to&quot;&nbsp;&quot;TO&quot;]&nbsp;[&quot;the&quot;&nbsp;&quot;DT&quot;]&nbsp;[&quot;madness&quot;&nbsp;&quot;NN&quot;]&nbsp;[&quot;of&quot;&nbsp;&quot;IN&quot;]&nbsp;[&quot;bodily&quot;&nbsp;&quot;JJ&quot;]&nbsp;[&quot;pleasure&quot;&nbsp;&quot;NN&quot;]]&nbsp;grammar&nbsp;:verb-phrase)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
228&nbsp;&nbsp;;;&nbsp;(reparse&nbsp;[[&quot;is&quot;&nbsp;&quot;VBZ&quot;]&nbsp;[&quot;utterly&quot;&nbsp;&quot;RB&quot;]&nbsp;[&quot;opposed&quot;&nbsp;&quot;VBN&quot;]&nbsp;[&quot;to&quot;&nbsp;&quot;TO&quot;]&nbsp;[&quot;the&quot;&nbsp;&quot;DT&quot;]&nbsp;[&quot;madness&quot;&nbsp;&quot;NN&quot;]&nbsp;[&quot;of&quot;&nbsp;&quot;IN&quot;]&nbsp;[&quot;bodily&quot;&nbsp;&quot;JJ&quot;]&nbsp;[&quot;pleasure&quot;&nbsp;&quot;NN&quot;]]&nbsp;grammar&nbsp;:verb-phrase)
</span><br/>
</body>
</html>

View file

@ -1,3 +1,3 @@
<!DOCTYPE html PUBLIC "" <!DOCTYPE html PUBLIC ""
""> "">
<html><head><meta charset="UTF-8" /><title>Wwui 0.1.0-SNAPSHOT</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.propositions.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>propositions</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></h1><h5 class="license">Released under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GNU General Public License,version 2.0 or (at your option) any later version</a></h5><div class="doc"><p>Experimental work towards a conversational interface to Wildwood.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[wwui "0.1.0-SNAPSHOT"]</pre><h2>Topics</h2><ul class="topics"><li><a href="intro.html">Introduction to wwui</a></li></ul><h2>Namespaces</h2><div class="namespace"><h3><a href="wwui.core.html">wwui.core</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="wwui.core.html#var--main">-main</a> </li></ul></div></div><div class="namespace"><h3><a href="wwui.propositions.html">wwui.propositions</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="wwui.propositions.html#var-coll-or-nil.3F">coll-or-nil?</a> </li><li> <a href="wwui.propositions.html#var-get-sentences">get-sentences</a> </li><li> <a href="wwui.propositions.html#var-grammar">grammar</a> </li><li> <a href="wwui.propositions.html#var-identify">identify</a> </li><li> <a href="wwui.propositions.html#var-name-find">name-find</a> </li><li> <a href="wwui.propositions.html#var-normalise">normalise</a> </li><li> <a href="wwui.propositions.html#var-pos-tag">pos-tag</a> </li><li> <a href="wwui.propositions.html#var-propositions">propositions</a> </li><li> <a href="wwui.propositions.html#var-propositions-from-file">propositions-from-file</a> </li><li> <a href="wwui.propositions.html#var-rdp-extend">rdp-extend</a> </li><li> <a href="wwui.propositions.html#var-rdp-seek">rdp-seek</a> </li><li> <a href="wwui.propositions.html#var-reparse">reparse</a> </li><li> <a href="wwui.propositions.html#var-tag">tag</a> </li><li> <a href="wwui.propositions.html#var-tokenize">tokenize</a> </li></ul></div></div></div></body></html> <html><head><meta charset="UTF-8" /><title>Wwui 0.1.0-SNAPSHOT</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li><li class="depth-1 "><a href="parsing.html"><div class="inner"><span>Parsing</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></h1><h5 class="license">Released under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GNU General Public License,version 2.0 or (at your option) any later version</a></h5><div class="doc"><p>Experimental work towards a conversational interface to Wildwood.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[wwui "0.1.0-SNAPSHOT"]</pre><h2>Topics</h2><ul class="topics"><li><a href="intro.html">Introduction to wwui</a></li><li><a href="parsing.html">Parsing</a></li></ul><h2>Namespaces</h2><div class="namespace"><h3><a href="wwui.core.html">wwui.core</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="wwui.core.html#var--main">-main</a> </li></ul></div></div><div class="namespace"><h3><a href="wwui.parser.html">wwui.parser</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="wwui.parser.html#var-coll-or-nil.3F">coll-or-nil?</a> </li><li> <a href="wwui.parser.html#var-get-sentences">get-sentences</a> </li><li> <a href="wwui.parser.html#var-grammar">grammar</a> </li><li> <a href="wwui.parser.html#var-identify">identify</a> </li><li> <a href="wwui.parser.html#var-name-find">name-find</a> </li><li> <a href="wwui.parser.html#var-normalise">normalise</a> </li><li> <a href="wwui.parser.html#var-pos-tag">pos-tag</a> </li><li> <a href="wwui.parser.html#var-propositions">propositions</a> </li><li> <a href="wwui.parser.html#var-propositions-from-file">propositions-from-file</a> </li><li> <a href="wwui.parser.html#var-rdp-extend">rdp-extend</a> </li><li> <a href="wwui.parser.html#var-rdp-seek">rdp-seek</a> </li><li> <a href="wwui.parser.html#var-reparse">reparse</a> </li><li> <a href="wwui.parser.html#var-tag">tag</a> </li><li> <a href="wwui.parser.html#var-tokenize">tokenize</a> </li></ul></div></div></div></body></html>

View file

@ -1,4 +1,18 @@
<!DOCTYPE html PUBLIC "" <!DOCTYPE html PUBLIC ""
""> "">
<html><head><meta charset="UTF-8" /><title>Introduction to wwui</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.propositions.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>propositions</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#introduction-to-wwui" name="introduction-to-wwui"></a>Introduction to wwui</h1> <html><head><meta charset="UTF-8" /><title>Introduction to wwui</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li><li class="depth-1 "><a href="parsing.html"><div class="inner"><span>Parsing</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#introduction-to-wwui" name="introduction-to-wwui"></a>Introduction to wwui</h1>
<p>TODO: write <a href="http://jacobian.org/writing/what-to-write/">great documentation</a></p></div></div></div></body></html> <p>The long term objective for WWUI is to provide a conversational, natural language interface to Wildwood: that is, that you should be able to question Wildwood agents in normal, everyday natural language - initially only English - and have it reply in the same way. It may possibly also display on a screen diagrams and documents which support its answer and reasoning, but the primary intention is that it should converse.</p>
<p>This boils down to two things: parsing, and idiomatic language generation. The intention here is not to have full general comrehension of a natural language. Questions which may sensibly be asked of an agent essentially query the truth value of a proposition, or the value of some fact, such as:</p>
<ul>
<li>Is Brutus honourable?</li>
<li>Where did Caesar die?</li>
<li>Did Brutus kill Caesar?</li>
</ul>
<p>and its perfectly OK, if a question doesnt conform to this general form, for the interface to respond with some text of the general form I dont understand, or I dont know about…</p>
<p>In the past, other conversational artificial intelligence systems, e.g. <a href="https://simon-brooke.github.io/wildwood/codox/History.html#mycin">Mycin</a>, <a href="https://simon-brooke.github.io/wildwood/codox/History.html#apes">APES</a> have allowed the user to query <strong>how</strong> a result was achieved. Im hoping that whe working of Wildwood will be sufficiently transparent that this question is largely redundant; however, its entirely possible that I shall implement a response to both the primitive <strong>how</strong> question (How do you know that?, where the proposition being asked about is inferred from the conversational context) and a more general (How do you know that <code>P</code>?, where <code>P</code> is any proposition). Indeed, the former is a special case of the latter.</p>
<h2><a href="#major-components" name="major-components"></a>Major components</h2>
<h3><a href="#parser" name="parser"></a>Parser</h3>
<p>Initial work so far is on parsing propositions out of continuous English text. At present (1<sup>st</sup> May 2020), Im finding 63 propositions in the 5,285 sentences of Jowetts translation into English of Platos Republic, which is not a good strike rate. More discussion of the parser is found <a href="parsing.html">here</a>.</p>
<p>A critical point about the parser is that it must be able not only to parse user input, but also to parse documents in order to extract knowledge from them.</p>
<h3><a href="#generator" name="generator"></a>Generator</h3>
<p>The generator is in principle much simpler than the parser; it merely needs to be able to output, as idiomatic natural language, the trace of the moves in <a href="https://simon-brooke.github.io/wildwood/codox/Arden.html#legitimate-moves-in-an-explanation-game">the inference game</a>, and the proposition which is the conclusion of the inference. To make this flow naturally, several templates will need to be stored for each potential output form, in order that these can be varied to prevent unduly repetitive output; and there may be some heuristics which guide when to use particular templates.</p></div></div></div></body></html>

34
docs/codox/parsing.html Normal file
View file

@ -0,0 +1,34 @@
<!DOCTYPE html PUBLIC ""
"">
<html><head><meta charset="UTF-8" /><title>Parsing</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li><li class="depth-1 current"><a href="parsing.html"><div class="inner"><span>Parsing</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#parsing" name="parsing"></a>Parsing</h1>
<p>Generally, The <code>wwui</code> parser needs to be able to recognise, and to extract in a form usable by <code>wildwood</code>, two general forms of utterances:</p>
<ol>
<li>Propositions, and</li>
<li>Questions;</li>
</ol>
<p>where questions can be further subdivided:</p>
<ol>
<li>is (proposition) true at present?</li>
<li>was (proposition) true in the past?</li>
<li>will (proposition) be true in the future?</li>
<li>is (proposition) true at this (time or time range specification)?</li>
<li>what is the value of (property) of (entity)?</li>
<li>how do you know that (proposition) has (truth-value)?</li>
<li>how do you know that (property) of (entity) has (value)?</li>
</ol>
<p>So the key things we need to know about and identify in natural language input are</p>
<ol>
<li>Propositions;</li>
<li>Entities;</li>
<li>Properties;</li>
<li>Values</li>
</ol>
<p>At the current stage of development of the current iteration, is is anticipated that the key construct that <code>wildwood</code> will reason with are <a href="https://simon-brooke.github.io/wildwood/codox/Bialowieza.html#propositions">located two position propositions</a>; that is to say propositions having</p>
<ol>
<li>A <strong>verb</strong>;</li>
<li>A <strong>subject</strong>, being an entity;</li>
<li>An <strong>object</strong>, being an entity;</li>
<li>Optionally, a <strong>spatial location</strong>;</li>
<li>Optionally, a <strong>temporal location</strong>.</li>
</ol>
<p>The principle behind <code>wildwood</code> - at least in its current iteration - is that for the inference game to work, there has to be, for every entity, a true name or unique identifier consensually agreed by each agent for each entity. The parser, obviously, can only parse noun phrases, so to be able to resolve noun phrases to true names there must be an API for the parser to pass a noun phrase, possibly with some context, to a knowledge accessor and receive a true name back.</p></div></div></div></body></html>

View file

@ -1,3 +1,3 @@
<!DOCTYPE html PUBLIC "" <!DOCTYPE html PUBLIC ""
""> "">
<html><head><meta charset="UTF-8" /><title>wwui.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch current"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.propositions.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>propositions</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wwui.core.html#var--main"><div class="inner"><span>-main</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wwui.core</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="public anchor" id="var--main"><h3>-main</h3><div class="usage"><code>(-main &amp; args)</code></div><div class="doc"><div class="markdown"><p>I dont do a whole lot … yet.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/core.clj#L4">view source</a></div></div></div></body></html> <html><head><meta charset="UTF-8" /><title>wwui.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li><li class="depth-1 "><a href="parsing.html"><div class="inner"><span>Parsing</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch current"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2"><a href="wwui.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wwui.core.html#var--main"><div class="inner"><span>-main</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wwui.core</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="public anchor" id="var--main"><h3>-main</h3><div class="usage"><code>(-main &amp; args)</code></div><div class="doc"><div class="markdown"><p>I dont do a whole lot … yet.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/core.clj#L4">view source</a></div></div></div></body></html>

View file

@ -0,0 +1,9 @@
<!DOCTYPE html PUBLIC ""
"">
<html><head><meta charset="UTF-8" /><title>wwui.parser documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Wwui</span> <span class="project-version">0.1.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>Introduction to wwui</span></div></a></li><li class="depth-1 "><a href="parsing.html"><div class="inner"><span>Parsing</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>wwui</span></div></div></li><li class="depth-2 branch"><a href="wwui.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 current"><a href="wwui.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="wwui.parser.html#var-coll-or-nil.3F"><div class="inner"><span>coll-or-nil?</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-get-sentences"><div class="inner"><span>get-sentences</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-grammar"><div class="inner"><span>grammar</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-identify"><div class="inner"><span>identify</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-name-find"><div class="inner"><span>name-find</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-normalise"><div class="inner"><span>normalise</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-pos-tag"><div class="inner"><span>pos-tag</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-propositions"><div class="inner"><span>propositions</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-propositions-from-file"><div class="inner"><span>propositions-from-file</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-rdp-extend"><div class="inner"><span>rdp-extend</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-rdp-seek"><div class="inner"><span>rdp-seek</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-reparse"><div class="inner"><span>reparse</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-tag"><div class="inner"><span>tag</span></div></a></li><li class="depth-1"><a href="wwui.parser.html#var-tokenize"><div class="inner"><span>tokenize</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">wwui.parser</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="public anchor" id="var-coll-or-nil.3F"><h3>coll-or-nil?</h3><h4 class="type">macro</h4><div class="usage"><code>(coll-or-nil? o)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L100">view source</a></div></div><div class="public anchor" id="var-get-sentences"><h3>get-sentences</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L13">view source</a></div></div><div class="public anchor" id="var-grammar"><h3>grammar</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The objective of this grammar is to allow us to take a sequence of tagged symbols, and produce a higher-level tagging of parts of speech, and ultimately propositions, from them.</p>
<p><em>NOTE THAT</em> tags in this grammar are always keywords, to distinguish them from OpenNLP tags, which tag individual tokens and are represented as strings.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L19">view source</a></div></div><div class="public anchor" id="var-identify"><h3>identify</h3><div class="usage"><code>(identify parse-tree knowledge-accessor)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L154">view source</a></div></div><div class="public anchor" id="var-name-find"><h3>name-find</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L16">view source</a></div></div><div class="public anchor" id="var-normalise"><h3>normalise</h3><div class="usage"><code>(normalise parse-tree ka)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L161">view source</a></div></div><div class="public anchor" id="var-pos-tag"><h3>pos-tag</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L15">view source</a></div></div><div class="public anchor" id="var-propositions"><h3>propositions</h3><div class="usage"><code>(propositions tagged-sentence)</code><code>(propositions tagged-sentence knowledge-accessor)</code></div><div class="doc"><div class="markdown"><p>Given a <code>tagged-sentence</code>, return a list of propositions detected in that sentence; if <code>knowledge-accessor</code> is passed, try to resolve names and noun phrases to entities known to that knowledge accessor.</p>
<p>TODO: Note that if <code>:subject</code>, <code>:object</code> or <code>:locator</code> resolves to multiple objects, then that is essentially one proposition for each unique combination. This is not yet implemented!</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L194">view source</a></div></div><div class="public anchor" id="var-propositions-from-file"><h3>propositions-from-file</h3><div class="usage"><code>(propositions-from-file file-path)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L215">view source</a></div></div><div class="public anchor" id="var-rdp-extend"><h3>rdp-extend</h3><div class="usage"><code>(rdp-extend tagged-sentence grammar goal)</code></div><div class="doc"><div class="markdown"><p>Seek a phrase which satisfies this <code>goal</code> (expected to be a collection of tags) in this <code>tagged-sentence</code> using this <code>grammar</code>.</p>
<p>Return a cons comprising 1. the first matching phrase for the goal, or <code>nil</code> if no match; 2. the tail of the sentence when the parts comprising the phrase are removed.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L105">view source</a></div></div><div class="public anchor" id="var-rdp-seek"><h3>rdp-seek</h3><div class="usage"><code>(rdp-seek tagged-sentence grammar goal)</code></div><div class="doc"><div class="markdown"><p>Seek a phrase which satisfies this <code>goal</code> (expected to be a keyword) in this <code>tagged-sentence</code> using this <code>grammar</code>.</p>
<p>Return a cons comprising 1. the first matching phrase for the goal, tagged with the goal, or <code>nil</code> if no match; 2. the tail of the sentence when the parts comprising the phrase are removed.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L72">view source</a></div></div><div class="public anchor" id="var-reparse"><h3>reparse</h3><div class="usage"><code>(reparse tagged-sentence grammar goal)</code></div><div class="doc"><div class="markdown"><p>Reparse this <code>tagged-sentence</code> using this grammar to seek this <code>goal</code>. Parse greedily, seeking the most extended goal.</p>
<p>Return a sequence comprising 1. the first matching phrase for the goal, tagged with the goal, or <code>nil</code> if no match; 2. the tail of the sentence when the parts comprising the phrase are removed.</p>
<p>This function is called <code>reparse</code> because: 1. it is designed to parse sentences which have already been parsed by OpenNLP: it will not work on raw sentences; 2. it is a recursive descent parser.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L130">view source</a></div></div><div class="public anchor" id="var-tag"><h3>tag</h3><h4 class="type">macro</h4><div class="usage"><code>(tag tagged-token)</code></div><div class="doc"><div class="markdown"><p>The tag, on a <code>tagged-token</code>, is just the second element. Written as a macro for readability.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L94">view source</a></div></div><div class="public anchor" id="var-tokenize"><h3>tokenize</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/wwui/blob/master/src/wwui/parser.clj#L14">view source</a></div></div></div></body></html>

View file

@ -1,6 +1,6 @@
(ns wwui.propositions-test (ns wwui.parser-test
(:require [clojure.test :refer :all] (:require [clojure.test :refer :all]
[wwui.propositions :refer :all] [wwui.parser :refer :all]
[taoensso.timbre :as log :refer [set-level!]])) [taoensso.timbre :as log :refer [set-level!]]))
(log/set-level! :error) (log/set-level! :error)