remove old backups (trust in vc)
authorKevin Brubeck Unhammer <pixiemotion@gmail.com>
Mon, 25 Oct 2010 11:55:56 +0000 (25 13:55 +0200)
committerKevin Brubeck Unhammer <pixiemotion@gmail.com>
Mon, 25 Oct 2010 11:55:56 +0000 (25 13:55 +0200)
26 files changed:
DMVCCM.html.~18~ [deleted file]
DMVCCM.html.~19~ [deleted file]
DMVCCM.html.~1~ [deleted file]
DMVCCM.html.~20~ [deleted file]
DMVCCM.html.~21~ [deleted file]
DMVCCM.html.~22~ [deleted file]
DMVCCM.html.~23~ [deleted file]
DMVCCM.html.~2~ [deleted file]
DMVCCM.html~20080525~ [deleted file]
DMVCCM.html~20080526~ [deleted file]
DMVCCM.html~20080527~ [deleted file]
DMVCCM.html~20080528~ [deleted file]
DMVCCM.org.~10~ [deleted file]
DMVCCM.org.~11~ [deleted file]
DMVCCM.org.~12~ [deleted file]
DMVCCM.org.~13~ [deleted file]
DMVCCM.org.~14~ [deleted file]
DMVCCM.org.~1~ [deleted file]
DMVCCM.org.~2~ [deleted file]
DMVCCM.org.~8~ [deleted file]
DMVCCM.org.~9~ [deleted file]
DMVCCM.org_archive.~1~ [deleted file]
DMVCCM.org_archive.~2~ [deleted file]
DMVCCM.org~20080525~ [deleted file]
DMVCCM.org~20080527~ [deleted file]
DMVCCM.org~20080528~ [deleted file]

diff --git a/DMVCCM.html.~18~ b/DMVCCM.html.~18~
deleted file mode 100755 (executable)
index 0e76892..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/06/03 13:56:12"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-2">1.1 Adjacency and combining it with inner()</a>
-<ul>
-<li><a href="#sec-3">1.1.1 document this adjacency stuff better</a></li>
-<li><a href="#sec-4">1.1.2 test and debug my brilliant idea</a></li>
-<li><a href="#sec-5">1.1.3 implement my brilliant idea.</a></li>
-<li><a href="#sec-6">1.1.4 [#A] test inner() on sentences with duplicate words</a></li>
-</ul>
-</li>
-<li><a href="#sec-7">1.2 [#A] P_STOP for IO/EM</a>
-<ul>
-<li><a href="#sec-8">1.2.1 How is the P_STOP formula different given other values for dir and adj?</a></li>
-</ul>
-</li>
-<li><a href="#sec-9">1.3 P_CHOOSE for IO/EM</a></li>
-<li><a href="#sec-10">1.4 Initialization   </a>
-<ul>
-<li><a href="#sec-11">1.4.1 Separate initialization to another file?</a></li>
-<li><a href="#sec-12">1.4.2 CCM Initialization    </a></li>
-<li><a href="#sec-13">1.4.3 DMV Initialization probabilities</a></li>
-<li><a href="#sec-14">1.4.4 DMV Initialization frequencies    </a></li>
-</ul>
-</li>
-<li><a href="#sec-17">1.5 [#C] Deferred</a>
-<ul>
-<li><a href="#sec-18">1.5.1 when reestimating P_STOP etc, remove rules with p &lt; epsilon</a></li>
-<li><a href="#sec-19">1.5.2 inner_dmv, short ranges and impossible attachment</a></li>
-<li><a href="#sec-20">1.5.3 Some (tagged) sentences are bound to come twice</a></li>
-<li><a href="#sec-21">1.5.4 tags as numbers or tags as strings?</a></li>
-</ul>
-</li>
-<li><a href="#sec-22">1.6 Expectation Maximation in IO/DMV-terms</a>
-<ul>
-<li><a href="#sec-23">1.6.1 Corpus access</a></li>
-<li><a href="#sec-24">1.6.2 sentences or rules as the "outer loop"?</a></li>
-</ul></li>
-</ul>
-</li>
-<li><a href="#sec-25">2 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-<div class="outline-3">
-<h3 id="sec-2">1.1 <span class="todo">TODO</span> Adjacency and combining it with inner()</h3>
-
-<p>Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-</p>
-<p>
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b-&gt;a<sub>0</sub>-&gt;a<sub>1</sub>,
-then b is non-adjacent to a<sub>0</sub> and should use probN (for the LRStop and
-the attachment of a<sub>0</sub>), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b-&gt;a<sub>1</sub>-&gt;a<sub>0</sub> for that. We want
-both. And in possibly much more complex versions.
-</p>
-<p>
-Ideas:
-</p><ul>
-<li>
-I first thought of decorating the individual words/tags in a
-sentence with their indices, and perhaps just duplicating the
-relevant rules (one for each index of the duplicate tags). But this
-gives an explosion in attachment rules (although a contained
-explosion, within the rules used in a sentence; but most sentences
-will have at least two NN's so it will be a problem).
-</li>
-<li>
-Then, I had a <i>brilliant</i> idea. Just let e(), the helper function of
-inner(), parametrize for an extra pair of boolean values for whether
-or not we've attached anything to the left or right yet ("yet"
-meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-possible values for (Lattach,Rattach). This makes e() lots more
-complex and DMV-specific though, so it's been rewritten in
-inner_dmv() in dmv.py.
-</li>
-</ul>
-<div class="outline-4">
-<h4 id="sec-3">1.1.1 <span class="todo">TODO</span> document this adjacency stuff better</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-4">1.1.2 <span class="todo">TODO</span> test and debug my brilliant idea</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-5">1.1.3 <span class="done">DONE</span> implement my brilliant idea.</h4>
-
-<p><span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-06-01 Sun 17:19</span><br/>
-<a href="src/dmv.py">e(sti) in dmv.py</a>
-</p>
-</div>
-
-<div class="outline-4">
-<h4 id="sec-6">1.1.4 <span class="done">DONE</span> [#A] test inner() on sentences with duplicate words</h4>
-
-<p>Works with eg. the sentence "h h h"
-</p>
-
-</div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-7">1.2 <span class="todo">TODO</span> [#A] P_STOP for IO/EM</h3>
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-</p>
-<p>
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P<sub>STOP</sub> updates:
-</p><ul>
-<li>
-b[(NOBAR, n<sub>h</sub>), 'h'] = 1.0       # always
-</li>
-<li>
-b[(RBAR, n<sub>h</sub>), 'h'] = h_.probA  # h_ is RBAR stop rule
-</li>
-<li>
-b[(LRBAR, n<sub>h</sub>), 'h'] = h_.probA * _ h_.probA
-
-</li>
-</ul>
-<div class="outline-4">
-<h4 id="sec-8">1.2.1 How is the P_STOP formula different given other values for dir and adj?</h4>
-
-<p>(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of _ h_ -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-9">1.3 <span class="todo">TODO</span> P_CHOOSE for IO/EM</h3>
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-<div class="outline-3">
-<h3 id="sec-10">1.4 Initialization   </h3>
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-</p>
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p>
-<div class="outline-4">
-<h4 id="sec-11">1.4.1 <span class="todo">TODO</span> Separate initialization to another file?                     &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span></h4>
-
-<p>(It's rather messy.)
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-12">1.4.2 <span class="todo">TOGROK</span> CCM Initialization    </h4>
-
-<p>P<sub>SPLIT</sub> used here&hellip; how, again?
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-13">1.4.3 <span class="done">DONE</span> DMV Initialization probabilities</h4>
-
-<p>(from initialization frequency)
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-14">1.4.4 <span class="done">DONE</span> DMV Initialization frequencies    </h4>
-
-<p><span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-</p>
-<div class="outline-5">
-<h5 id="sec-15">1.4.4.1 P_STOP    </h5>
-
-<p>P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-<pre>
- f_{STOP}( STOP|det, L, adj) +1
- f_{STOP}(-STOP|det, L, adj) +0  
- f_{STOP}( STOP|det, L, non_adj) +1
- f_{STOP}(-STOP|det, L, non_adj) +0
- f_{STOP}( STOP|det, R, adj) +0
- f_{STOP}(-STOP|det, R, adj) +1
-
- f_{STOP}( STOP|nn, L, adj) +0
- f_{STOP}(-STOP|nn, L, adj) +1
- f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
- f_{STOP}(-STOP|nn, L, non_adj) +0
-</pre>
-</p><ul>
-<li><span class="todo">TODO</span> tweak<br/>
-<a name="pstoptweak">&nbsp;</a>
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h &lt;= 1)     # first two words
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1)     
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-            f[head,  'STOP', 'RN'] += (i_h &gt;= n - 2) # last two words
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) 
-            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1) # not first two
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) # not last two
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs 
-"all words take the same number of arguments" interpreted as
-<pre>
-for all heads:
-    p_STOP(head, 'STOP', 'LN') = 0.3
-    p_STOP(head, 'STOP', 'LA') = 0.5
-    p_STOP(head, 'STOP', 'RN') = 0.4
-    p_STOP(head, 'STOP', 'RA') = 0.7
-</pre>
-
-</li>
-</ul>
-</div>
-
-<div class="outline-5">
-<h5 id="sec-16">1.4.4.2 P_CHOOSE</h5>
-
-<p>Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-</p><ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum_a f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></div>
-</div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-17">1.5 [#C] Deferred</h3>
-
-
-<div class="outline-4">
-<h4 id="sec-18">1.5.1 <span class="todo">TODO</span> when reestimating P_STOP etc, remove rules with p &lt; epsilon  &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-19">1.5.2 <span class="todo">TODO</span> inner_dmv, short ranges and impossible attachment            &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>If s-t &lt;= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-</p>
-<p>
-If s-t &lt;= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-</p>
-<p>
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-20">1.5.3 <span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice            &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-</p>
-<p>
-Is there much to gain here?
-</p>
-</div>
-
-<div class="outline-4">
-<h4 id="sec-21">1.5.4 <span class="todo">TOGROK</span> tags as numbers or tags as strings?                        &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>Need to clean up the representation.
-</p>
-<p>
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-</p></div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-22">1.6 Expectation Maximation in IO/DMV-terms</h3>
-
-<p>inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-</p>
-<p>
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-</p>
-<p>
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-<pre>
- h  -&gt; h  _a_
- h_ -&gt; h_ _a_
-</pre>
-</p>
-<p>
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-</p>
-
-<div class="outline-4">
-<h4 id="sec-23">1.6.1 <span class="todo">TODO</span> Corpus access</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-24">1.6.2 <span class="todo">TOGROK</span> sentences or rules as the "outer loop"?                    &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>In regard to the E/M-step, finding P<sub>STOP</sub>, P<sub>CHOOSE</sub>.
-</p>
-
-</div>
-</div>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-25">2 Python-stuff</h2>
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</li>
-<li>
-<a href="http://jaynes.colorado.edu/PythonIdioms.html">http://jaynes.colorado.edu/PythonIdioms.html</a>
-
-
-</li>
-</ul>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/06/03 13:56:12</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~19~ b/DMVCCM.html.~19~
deleted file mode 100755 (executable)
index 18563fc..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/06/03 14:04:08"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-2">1.1 Adjacency and combining it with inner()</a>
-<ul>
-<li><a href="#sec-3">1.1.1 document this adjacency stuff better</a></li>
-<li><a href="#sec-4">1.1.2 test and debug my brilliant idea</a></li>
-<li><a href="#sec-5">1.1.3 implement my brilliant idea.</a></li>
-<li><a href="#sec-6">1.1.4 [#A] test inner() on sentences with duplicate words</a></li>
-</ul>
-</li>
-<li><a href="#sec-7">1.2 [#A] P_STOP for IO/EM</a>
-<ul>
-<li><a href="#sec-8">1.2.1 How is the P_STOP formula different given other values for dir and adj?</a></li>
-</ul>
-</li>
-<li><a href="#sec-9">1.3 P_CHOOSE for IO/EM</a></li>
-<li><a href="#sec-10">1.4 Initialization   </a>
-<ul>
-<li><a href="#sec-11">1.4.1 Separate initialization to another file?</a></li>
-<li><a href="#sec-12">1.4.2 CCM Initialization    </a></li>
-<li><a href="#sec-13">1.4.3 DMV Initialization probabilities</a></li>
-<li><a href="#sec-14">1.4.4 DMV Initialization frequencies    </a></li>
-</ul>
-</li>
-<li><a href="#sec-17">1.5 [#C] Deferred</a>
-<ul>
-<li><a href="#sec-18">1.5.1 when reestimating P_STOP etc, remove rules with p &lt; epsilon</a></li>
-<li><a href="#sec-19">1.5.2 inner_dmv, short ranges and impossible attachment</a></li>
-<li><a href="#sec-20">1.5.3 Some (tagged) sentences are bound to come twice</a></li>
-<li><a href="#sec-21">1.5.4 tags as numbers or tags as strings?</a></li>
-</ul>
-</li>
-<li><a href="#sec-22">1.6 Expectation Maximation in IO/DMV-terms</a>
-<ul>
-<li><a href="#sec-23">1.6.1 Corpus access</a></li>
-<li><a href="#sec-24">1.6.2 sentences or rules as the "outer loop"?</a></li>
-</ul></li>
-</ul>
-</li>
-<li><a href="#sec-25">2 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-<div class="outline-3">
-<h3 id="sec-2">1.1 <span class="todo">TODO</span> Adjacency and combining it with inner()</h3>
-
-<p>Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-</p>
-<p>
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b-&gt;a<sub>0</sub>-&gt;a<sub>1</sub>,
-then b is non-adjacent to a<sub>0</sub> and should use probN (for the LRStop and
-the attachment of a<sub>0</sub>), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b-&gt;a<sub>1</sub>-&gt;a<sub>0</sub> for that. We want
-both. And in possibly much more complex versions.
-</p>
-<p>
-Ideas:
-</p><ul>
-<li>
-I first thought of decorating the individual words/tags in a
-sentence with their indices, and perhaps just duplicating the
-relevant rules (one for each index of the duplicate tags). But this
-gives an explosion in attachment rules (although a contained
-explosion, within the rules used in a sentence; but most sentences
-will have at least two NN's so it will be a problem).
-</li>
-<li>
-Then, I had a <i>brilliant</i> idea. Just let e(), the helper function of
-inner(), parametrize for an extra pair of boolean values for whether
-or not we've attached anything to the left or right yet ("yet"
-meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-possible values for (Lattach,Rattach). This makes e() lots more
-complex and DMV-specific though, so it's been rewritten in
-inner_dmv() in dmv.py.
-</li>
-</ul>
-<div class="outline-4">
-<h4 id="sec-3">1.1.1 <span class="todo">TODO</span> document this adjacency stuff better</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-4">1.1.2 <span class="todo">TODO</span> test and debug my brilliant idea</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-5">1.1.3 <span class="done">DONE</span> implement my brilliant idea.</h4>
-
-<p><span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-06-01 Sun 17:19</span><br/>
-<a href="src/dmv.py">e(sti) in dmv.py</a>
-</p>
-</div>
-
-<div class="outline-4">
-<h4 id="sec-6">1.1.4 <span class="done">DONE</span> [#A] test inner() on sentences with duplicate words</h4>
-
-<p>Works with eg. the sentence "h h h"
-</p>
-
-</div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-7">1.2 <span class="todo">TODO</span> [#A] P_STOP for IO/EM</h3>
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-</p>
-<p>
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P<sub>STOP</sub> updates:
-</p><ul>
-<li>
-b[(NOBAR, n<sub>h</sub>), 'h'] = 1.0       # always
-</li>
-<li>
-b[(RBAR, n<sub>h</sub>), 'h'] = h_.probA  # h_ is RBAR stop rule
-</li>
-<li>
-b[(LRBAR, n<sub>h</sub>), 'h'] = h_.probA * _ h_.probA
-
-</li>
-</ul>
-<div class="outline-4">
-<h4 id="sec-8">1.2.1 How is the P_STOP formula different given other values for dir and adj?</h4>
-
-<p>(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of _ h_ -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-9">1.3 <span class="todo">TODO</span> P_CHOOSE for IO/EM</h3>
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-<div class="outline-3">
-<h3 id="sec-10">1.4 Initialization   </h3>
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-</p>
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p>
-<div class="outline-4">
-<h4 id="sec-11">1.4.1 <span class="todo">TODO</span> Separate initialization to another file?                     &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span></h4>
-
-<p>(It's rather messy.)
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-12">1.4.2 <span class="todo">TOGROK</span> CCM Initialization    </h4>
-
-<p>P<sub>SPLIT</sub> used here&hellip; how, again?
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-13">1.4.3 <span class="done">DONE</span> DMV Initialization probabilities</h4>
-
-<p>(from initialization frequency)
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-14">1.4.4 <span class="done">DONE</span> DMV Initialization frequencies    </h4>
-
-<p><span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-</p>
-<div class="outline-5">
-<h5 id="sec-15">1.4.4.1 P_STOP    </h5>
-
-<p>P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-<pre>
- f_{STOP}( STOP|det, L, adj) +1
- f_{STOP}(-STOP|det, L, adj) +0  
- f_{STOP}( STOP|det, L, non_adj) +1
- f_{STOP}(-STOP|det, L, non_adj) +0
- f_{STOP}( STOP|det, R, adj) +0
- f_{STOP}(-STOP|det, R, adj) +1
-
- f_{STOP}( STOP|nn, L, adj) +0
- f_{STOP}(-STOP|nn, L, adj) +1
- f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
- f_{STOP}(-STOP|nn, L, non_adj) +0
-</pre>
-</p><ul>
-<li><span class="todo">TODO</span> tweak<br/>
-<a name="pstoptweak">&nbsp;</a>
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h &lt;= 1)     # first two words
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1)     
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-            f[head,  'STOP', 'RN'] += (i_h &gt;= n - 2) # last two words
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) 
-            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1) # not first two
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) # not last two
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs 
-"all words take the same number of arguments" interpreted as
-<pre>
-for all heads:
-    p_STOP(head, 'STOP', 'LN') = 0.3
-    p_STOP(head, 'STOP', 'LA') = 0.5
-    p_STOP(head, 'STOP', 'RN') = 0.4
-    p_STOP(head, 'STOP', 'RA') = 0.7
-</pre>
-
-</li>
-</ul>
-</div>
-
-<div class="outline-5">
-<h5 id="sec-16">1.4.4.2 P_CHOOSE</h5>
-
-<p>Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-</p><ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum_a f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></div>
-</div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-17">1.5 [#C] Deferred</h3>
-
-
-<div class="outline-4">
-<h4 id="sec-18">1.5.1 <span class="todo">TODO</span> when reestimating P_STOP etc, remove rules with p &lt; epsilon  &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-19">1.5.2 <span class="todo">TODO</span> inner_dmv, short ranges and impossible attachment            &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>If s-t &lt;= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-</p>
-<p>
-If s-t &lt;= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-</p>
-<p>
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-20">1.5.3 <span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice            &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-</p>
-<p>
-Is there much to gain here?
-</p>
-</div>
-
-<div class="outline-4">
-<h4 id="sec-21">1.5.4 <span class="todo">TOGROK</span> tags as numbers or tags as strings?                        &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>Need to clean up the representation.
-</p>
-<p>
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-</p></div>
-</div>
-
-<div class="outline-3">
-<h3 id="sec-22">1.6 Expectation Maximation in IO/DMV-terms</h3>
-
-<p>inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-</p>
-<p>
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-</p>
-<p>
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-<pre>
- h  -&gt; h  _a_
- h_ -&gt; h_ _a_
-</pre>
-</p>
-<p>
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-</p>
-
-<div class="outline-4">
-<h4 id="sec-23">1.6.1 <span class="todo">TODO</span> Corpus access</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-24">1.6.2 <span class="todo">TOGROK</span> sentences or rules as the "outer loop"?                    &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h4>
-
-<p>In regard to the E/M-step, finding P<sub>STOP</sub>, P<sub>CHOOSE</sub>.
-</p>
-
-</div>
-</div>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-25">2 Python-stuff</h2>
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</li>
-<li>
-<a href="http://jaynes.colorado.edu/PythonIdioms.html">http://jaynes.colorado.edu/PythonIdioms.html</a>
-
-
-</li>
-</ul>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/06/03 14:04:08</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~1~ b/DMVCCM.html.~1~
deleted file mode 100755 (executable)
index 8405caa..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="nn" xml:lang="nn">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/05/25 17:09:24"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Innhold</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-2">1.1 [#A] DMV-probabilities   </a></li>
-<li><a href="#sec-3">1.2 Initialization   </a></li>
-<li><a href="#sec-4">1.3 Meet Yoav again about dmvccm</a>
-<ul>
-<li><a href="#sec-5">1.3.1 Initialization</a></li>
-<li><a href="#sec-6">1.3.2 Corpus access?</a></li>
-<li><a href="#sec-7">1.3.3 How do we interpret DMV as an inside/outside process?</a></li>
-<li><a href="#sec-8">1.3.4 How do we know whether we are 'adjacent' or not? </a></li>
-<li><a href="#sec-9">1.3.5 What are the formulas for P<sub>CHOOSE</sub> etc?</a></li>
-</ul></li>
-</ul>
-</li>
-<li><a href="#sec-10">2 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-</p>
-<p>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="dmvccm/src/dmv.py">dmv.py</a>
-<a href="dmvccm/src/io.py">io.py</a>
-</p>
-<div class="outline-3">
-<h3 id="sec-2">1.1 <span class="todo">TODO</span> [#A] DMV-probabilities   </h3>
-
-<p><a href="/Home/stud6/kun041/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv.py</a>
-</p></div>
-
-<div class="outline-3">
-<h3 id="sec-3">1.2 <span class="todo">TOGROK</span> Initialization   </h3>
-
-
-
-</div>
-
-<div class="outline-3">
-<h3 id="sec-4">1.3 Meet Yoav again about dmvccm</h3>
-
-<p><span class="timestamp-kwd">SCHEDULED: </span> <span class="timestamp">2008-05-26 Mon</span><br/>
-13:30, P3.21.
-</p>
-<p>
-Questions:
-</p>
-<div class="outline-4">
-<h4 id="sec-5">1.3.1 Initialization</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-6">1.3.2 Corpus access?</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-7">1.3.3 How do we interpret DMV as an inside/outside process?</h4>
-
-<p>The upside-down P<sub>STOP</sub> formula (left-to-right also)
-c<sub>s</sub>(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P<sub>STOP</sub> and P<sub>CHOOSE</sub>, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-8">1.3.4 How do we know whether we are 'adjacent' or not? </h4>
-
-<p>Can we even know that without the full tree?
-</p>
-<p>
-if we have 
-\Tree [<sub>b</sub> [<sub>b</sub> b <u>c</u> ] <u>d</u> ] 
-then the lower tree [<sub>b</sub> b <u>c</u> ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [<sub>b</sub> [<sub>b</sub> &hellip; ] <u>d</u> ] is non-adjacent, since there is something in
-between&hellip; Is it thus always adjacent to the right if the the distance
-is 1?
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-9">1.3.5 What are the formulas for P<sub>CHOOSE</sub> etc?</h4>
-
-<p>Is this the regular "outer" summation?
-</p>
-
-
-
-
-</div>
-</div>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-10">2 Python-stuff</h2>
-
-<p><a href="dmvccm/src/pseudo.py">pseudo.py</a>
-</p>
-<p>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</p>
-
-</div>
-<div id="postamble"><p class="author"> Forfattar: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Dato: 2008/05/25 17:09:24</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~20~ b/DMVCCM.html.~20~
deleted file mode 100755 (executable)
index f292b30..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/06/03 16:12:36"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm</a></li>
-<li><a href="#sec-2">2 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p><ul>
-<li><span class="todo">TODO</span> Adjacency and combining it with inner()<br/>
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-<p>
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b-&gt;a<sub>0</sub>-&gt;a<sub>1</sub>,
-then b is non-adjacent to a<sub>0</sub> and should use probN (for the LRStop and
-the attachment of a<sub>0</sub>), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b-&gt;a<sub>1</sub>-&gt;a<sub>0</sub> for that. We want
-both. And in possibly much more complex versions.
-</p>
-<p>
-Ideas:
-</p><ul>
-<li>
-I first thought of decorating the individual words/tags in a
-sentence with their indices, and perhaps just duplicating the
-relevant rules (one for each index of the duplicate tags). But this
-gives an explosion in attachment rules (although a contained
-explosion, within the rules used in a sentence; but most sentences
-will have at least two NN's so it will be a problem).
-</li>
-<li>
-Then, I had a <i>brilliant</i> idea. Just let e(), the helper function of
-inner(), parametrize for an extra pair of boolean values for whether
-or not we've attached anything to the left or right yet ("yet"
-meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-possible values for (Lattach,Rattach). This makes e() lots more
-complex and DMV-specific though, so it's been rewritten in
-inner_dmv() in dmv.py.
-</li>
-<li><span class="todo">TODO</span> document this adjacency stuff better<br/>
-</li>
-<li><span class="todo">TODO</span> test and debug my brilliant idea<br/>
-</li>
-<li><span class="done">DONE</span> implement my brilliant idea.<br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-06-01 Sun 17:19</span><br/>
-<a href="src/dmv.py">e(sti) in dmv.py</a>
-
-</li>
-<li><span class="done">DONE</span> [#A] test inner() on sentences with duplicate words<br/>
-Works with eg. the sentence "h h h"
-
-
-</li>
-</ul>
-</li>
-<li><span class="todo">TODO</span> [#A] P_STOP for IO/EM<br/>
-<a href="src/dmv.py">dmv-P_STOP</a>
-Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-
-<p>
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P<sub>STOP</sub> updates:
-</p><ul>
-<li>
-b[(NOBAR, n<sub>h</sub>), 'h'] = 1.0       # always
-</li>
-<li>
-b[(RBAR, n<sub>h</sub>), 'h'] = h_.probA  # h_ is RBAR stop rule
-</li>
-<li>
-b[(LRBAR, n<sub>h</sub>), 'h'] = h_.probA * _ h_.probA
-
-</li>
-<li>How is the P_STOP formula different given other values for dir and adj?<br/>
-(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of _ h_ -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></li>
-</ul>
-</li>
-<li><span class="todo">TODO</span> P_CHOOSE for IO/EM<br/>
-Write the formulas! should be easy?
-</li>
-<li>Initialization   <br/>
-<a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p><ul>
-<li><span class="todo">TODO</span> Separate initialization to another file?                     &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-(It's rather messy.)
-</li>
-<li><span class="todo">TOGROK</span> CCM Initialization    <br/>
-P<sub>SPLIT</sub> used here&hellip; how, again?
-</li>
-<li><span class="done">DONE</span> DMV Initialization probabilities<br/>
-(from initialization frequency)
-</li>
-<li><span class="done">DONE</span> DMV Initialization frequencies    <br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-<ul>
-<li>P_STOP    <br/>
-P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-<pre>
- f_{STOP}( STOP|det, L, adj) +1
- f_{STOP}(-STOP|det, L, adj) +0  
- f_{STOP}( STOP|det, L, non_adj) +1
- f_{STOP}(-STOP|det, L, non_adj) +0
- f_{STOP}( STOP|det, R, adj) +0
- f_{STOP}(-STOP|det, R, adj) +1
-
- f_{STOP}( STOP|nn, L, adj) +0
- f_{STOP}(-STOP|nn, L, adj) +1
- f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
- f_{STOP}(-STOP|nn, L, non_adj) +0
-</pre>
-<ul>
-<li><span class="todo">TODO</span> tweak<br/>
-<a name="pstoptweak">&nbsp;</a>
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h &lt;= 1)     # first two words
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1)     
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-            f[head,  'STOP', 'RN'] += (i_h &gt;= n - 2) # last two words
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) 
-            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-</pre>
-vs
-<pre>
-            # this one requires some additional rewriting since it
-            # introduces divisions by zero
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1) # not first two
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) # not last two
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs 
-"all words take the same number of arguments" interpreted as
-<pre>
-for all heads:
-    p_STOP(head, 'STOP', 'LN') = 0.3
-    p_STOP(head, 'STOP', 'LA') = 0.5
-    p_STOP(head, 'STOP', 'RN') = 0.4
-    p_STOP(head, 'STOP', 'RA') = 0.7
-</pre>
-(which we easily may tweak in init_zeros())
-</li>
-</ul>
-</li>
-<li>P_CHOOSE<br/>
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-<ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum_a f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></li>
-</ul>
-</li>
-</ul>
-</li>
-<li>[#C] Deferred<br/>
-<ul>
-<li><span class="todo">TODO</span> inner_dmv() should disregard rules with heads not in sent    &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-<pre>
- rule.head() not in "nn vbd det nn".split()
-</pre>
-Also, we optimize this further by saying we don't even look at rules
-where
-<pre>
- rule.head() not in sent[ s :r+1]
- rule.head() not in sent[r+1:t+1]
-</pre>
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-
-<p>
-Since STOP rules necessarily come from attachment rules, this ensures
-we don't end up with pointless STOP rules either, and if we <i>started</i>
-with a pointless, we nevertheless stop at the first rewrite-round
-(although we could also make that check in the first call to e()).
-</p></li>
-<li><span class="todo">TODO</span> when reestimating P_STOP etc, remove rules with p &lt; epsilon  &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-</li>
-<li><span class="todo">TODO</span> inner_dmv, short ranges and impossible attachment            &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If s-t &lt;= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-<p>
-If s-t &lt;= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-</p>
-<p>
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-</p></li>
-<li><span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice            &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-
-<p>
-Is there much to gain here?
-</p>
-</li>
-<li><span class="todo">TOGROK</span> tags as numbers or tags as strings?                        &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Need to clean up the representation.
-
-<p>
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-</p></li>
-</ul>
-</li>
-<li>Expectation Maximation in IO/DMV-terms<br/>
-inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-
-<p>
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-</p>
-<p>
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-<pre>
- h  -&gt; h  _a_
- h_ -&gt; h_ _a_
-</pre>
-</p>
-<p>
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-</p>
-<ul>
-<li><span class="todo">TODO</span> Corpus access<br/>
-</li>
-<li><span class="todo">TOGROK</span> sentences or rules as the "outer loop"?                    &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-In regard to the E/M-step, finding P<sub>STOP</sub>, P<sub>CHOOSE</sub>.
-
-
-</li>
-</ul>
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-2">2 Python-stuff</h2>
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</li>
-<li>
-<a href="http://jaynes.colorado.edu/PythonIdioms.html">http://jaynes.colorado.edu/PythonIdioms.html</a>
-
-
-</li>
-</ul>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/06/03 16:12:36</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~21~ b/DMVCCM.html.~21~
deleted file mode 100755 (executable)
index 230081f..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/06/04 14:23:23"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm</a></li>
-<li><a href="#sec-2">2 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-3">3 [#A] P_STOP for IO/EM</a></li>
-<li><a href="#sec-4">4 P_CHOOSE for IO/EM</a></li>
-<li><a href="#sec-5">5 Initialization   </a></li>
-<li><a href="#sec-6">6 [#C] Deferred</a></li>
-<li><a href="#sec-7">7 Expectation Maximation in IO/DMV-terms</a></li>
-<li><a href="#sec-8">8 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p></div>
-
-<div class="outline-2">
-<h2 id="sec-2">2 <span class="todo">TODO</span> Adjacency and combining it with inner()</h2>
-
-<p>Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-</p>
-<p>
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b-&gt;a<sub>0</sub>-&gt;a<sub>1</sub>,
-then b is non-adjacent to a<sub>0</sub> and should use probN (for the LRStop and
-the attachment of a<sub>0</sub>), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b-&gt;a<sub>1</sub>-&gt;a<sub>0</sub> for that. We want
-both. And in possibly much more complex versions.
-</p>
-<p>
-Ideas:
-</p><ul>
-<li>
-I first thought of decorating the individual words/tags in a
-sentence with their indices, and perhaps just duplicating the
-relevant rules (one for each index of the duplicate tags). But this
-gives an explosion in attachment rules (although a contained
-explosion, within the rules used in a sentence; but most sentences
-will have at least two NN's so it will be a problem).
-</li>
-<li>
-Then, I had a <i>brilliant</i> idea. Just let e(), the helper function of
-inner(), parametrize for an extra pair of boolean values for whether
-or not we've attached anything to the left or right yet ("yet"
-meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-possible values for (Lattach,Rattach). This makes e() lots more
-complex and DMV-specific though, so it's been rewritten in
-inner_dmv() in dmv.py.
-</li>
-<li><span class="todo">TODO</span> document this adjacency stuff better<br/>
-</li>
-<li><span class="todo">TODO</span> test and debug my brilliant idea<br/>
-</li>
-<li><span class="done">DONE</span> implement my brilliant idea.<br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-06-01 Sun 17:19</span><br/>
-<a href="src/dmv.py">e(sti) in dmv.py</a>
-
-</li>
-<li><span class="done">DONE</span> [#A] test inner() on sentences with duplicate words<br/>
-Works with eg. the sentence "h h h"
-
-
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-3">3 <span class="todo">TODO</span> [#A] P_STOP for IO/EM</h2>
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-</p>
-<p>
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P<sub>STOP</sub> updates:
-</p><ul>
-<li>
-b[(NOBAR, n<sub>h</sub>), 'h'] = 1.0       # always
-</li>
-<li>
-b[(RBAR, n<sub>h</sub>), 'h'] = h_.probA  # h_ is RBAR stop rule
-</li>
-<li>
-b[(LRBAR, n<sub>h</sub>), 'h'] = h_.probA * _ h_.probA
-
-</li>
-<li>How is the P_STOP formula different given other values for dir and adj?<br/>
-(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of _ h_ -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-4">4 <span class="todo">TODO</span> P_CHOOSE for IO/EM</h2>
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-<div class="outline-2">
-<h2 id="sec-5">5 Initialization   </h2>
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-</p>
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p><ul>
-<li><span class="todo">TODO</span> Separate initialization to another file?                      &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-(It's rather messy.)
-</li>
-<li><span class="todo">TOGROK</span> CCM Initialization    <br/>
-P<sub>SPLIT</sub> used here&hellip; how, again?
-</li>
-<li><span class="done">DONE</span> DMV Initialization probabilities<br/>
-(from initialization frequency)
-</li>
-<li><span class="done">DONE</span> DMV Initialization frequencies    <br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-<ul>
-<li>P_STOP    <br/>
-P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-<pre>
- f_{STOP}( STOP|det, L, adj) +1
- f_{STOP}(-STOP|det, L, adj) +0  
- f_{STOP}( STOP|det, L, non_adj) +1
- f_{STOP}(-STOP|det, L, non_adj) +0
- f_{STOP}( STOP|det, R, adj) +0
- f_{STOP}(-STOP|det, R, adj) +1
-
- f_{STOP}( STOP|nn, L, adj) +0
- f_{STOP}(-STOP|nn, L, adj) +1
- f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
- f_{STOP}(-STOP|nn, L, non_adj) +0
-</pre>
-<ul>
-<li><span class="todo">TODO</span> tweak<br/>
-<a name="pstoptweak">&nbsp;</a>
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h &lt;= 1)     # first two words
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1)     
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-            f[head,  'STOP', 'RN'] += (i_h &gt;= n - 2) # last two words
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) 
-            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-</pre>
-vs
-<pre>
-            # this one requires some additional rewriting since it
-            # introduces divisions by zero
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1) # not first two
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) # not last two
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs 
-"all words take the same number of arguments" interpreted as
-<pre>
-for all heads:
-    p_STOP(head, 'STOP', 'LN') = 0.3
-    p_STOP(head, 'STOP', 'LA') = 0.5
-    p_STOP(head, 'STOP', 'RN') = 0.4
-    p_STOP(head, 'STOP', 'RA') = 0.7
-</pre>
-(which we easily may tweak in init_zeros())
-</li>
-</ul>
-</li>
-<li>P_CHOOSE<br/>
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-<ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum_a f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></li>
-</ul>
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-6">6 [#C] Deferred</h2>
-
-<ul>
-<li><span class="todo">TODO</span> inner_dmv() should disregard rules with heads not in sent     &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-<pre>
- rule.head() not in "nn vbd det nn".split()
-</pre>
-This is ruled out by getting rules from g.rules(LHS, sent).
-
-<p>
-Also, we optimize this further by saying we don't even recurse into
-attachment rules where
-<pre>
- rule.head() not in sent[ s :r+1]
- rule.head() not in sent[r+1:t+1]
-</pre>
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-</p></li>
-<li><span class="todo">TODO</span> when reestimating P_STOP etc, remove rules with p &lt; epsilon   &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-</li>
-<li><span class="todo">TODO</span> inner_dmv, short ranges and impossible attachment             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If s-t &lt;= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-<p>
-If s-t &lt;= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-</p>
-<p>
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-</p></li>
-<li><span class="todo">TODO</span> clean up the module files                                     &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-Is there better way to divide dmv and harmonic? There's a two-way
-dependency between the modules. Guess there could be a third file that
-imports both the initialization and the actual EM stuff, while a file
-containing constants and classes could be imported by all others:
-<pre>
- dmv.py imports dmv_EM.py imports dmv_classes.py
- dmv.py imports dmv_inits.py imports dmv_classes.py
-</pre>
-
-</li>
-<li><span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-
-<p>
-Is there much to gain here?
-</p>
-</li>
-<li><span class="todo">TOGROK</span> tags as numbers or tags as strings?                         &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Need to clean up the representation.
-
-<p>
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-</p></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-7">7 Expectation Maximation in IO/DMV-terms</h2>
-
-<p>inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-</p>
-<p>
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-</p>
-<p>
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-<pre>
- h  -&gt; h  _a_
- h_ -&gt; h_ _a_
-</pre>
-</p>
-<p>
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-</p>
-<ul>
-<li><span class="todo">TODO</span> Corpus access<br/>
-</li>
-<li><span class="todo">TOGROK</span> sentences or rules as the "outer loop"?                     &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-In regard to the E/M-step, finding P<sub>STOP</sub>, P<sub>CHOOSE</sub>.
-
-
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-8">8 Python-stuff</h2>
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</li>
-<li>
-<a href="http://jaynes.colorado.edu/PythonIdioms.html">http://jaynes.colorado.edu/PythonIdioms.html</a>
-
-
-</li>
-</ul>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/06/04 14:23:23</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~22~ b/DMVCCM.html.~22~
deleted file mode 100755 (executable)
index 7f06ac6..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/06/04 14:25:59"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm report and project</a></li>
-<li><a href="#sec-2">2 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-3">3 [#A] P_STOP for IO/EM</a></li>
-<li><a href="#sec-4">4 P_CHOOSE for IO/EM</a></li>
-<li><a href="#sec-5">5 Initialization   </a></li>
-<li><a href="#sec-6">6 [#C] Deferred</a></li>
-<li><a href="#sec-7">7 Expectation Maximation in IO/DMV-terms</a></li>
-<li><a href="#sec-8">8 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm report and project</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-But absolute, extended, really-quite-dead-now deadline: August 31&hellip;
-</p><ul>
-<li>
-<a href="src/dmv.py">dmv.py</a>
-</li>
-<li>
-<a href="src/io.py">io.py</a>
-</li>
-<li>
-<a href="src/harmonic.py">harmonic.py</a>
-</li>
-</ul></div>
-
-<div class="outline-2">
-<h2 id="sec-2">2 <span class="todo">TODO</span> Adjacency and combining it with inner()</h2>
-
-<p>Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-</p>
-<p>
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b-&gt;a<sub>0</sub>-&gt;a<sub>1</sub>,
-then b is non-adjacent to a<sub>0</sub> and should use probN (for the LRStop and
-the attachment of a<sub>0</sub>), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b-&gt;a<sub>1</sub>-&gt;a<sub>0</sub> for that. We want
-both. And in possibly much more complex versions.
-</p>
-<p>
-Ideas:
-</p><ul>
-<li>
-I first thought of decorating the individual words/tags in a
-sentence with their indices, and perhaps just duplicating the
-relevant rules (one for each index of the duplicate tags). But this
-gives an explosion in attachment rules (although a contained
-explosion, within the rules used in a sentence; but most sentences
-will have at least two NN's so it will be a problem).
-</li>
-<li>
-Then, I had a <i>brilliant</i> idea. Just let e(), the helper function of
-inner(), parametrize for an extra pair of boolean values for whether
-or not we've attached anything to the left or right yet ("yet"
-meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-possible values for (Lattach,Rattach). This makes e() lots more
-complex and DMV-specific though, so it's been rewritten in
-inner_dmv() in dmv.py.
-</li>
-<li><span class="todo">TODO</span> document this adjacency stuff better<br/>
-</li>
-<li><span class="todo">TODO</span> test and debug my brilliant idea<br/>
-</li>
-<li><span class="done">DONE</span> implement my brilliant idea.<br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-06-01 Sun 17:19</span><br/>
-<a href="src/dmv.py">e(sti) in dmv.py</a>
-
-</li>
-<li><span class="done">DONE</span> [#A] test inner() on sentences with duplicate words<br/>
-Works with eg. the sentence "h h h"
-
-
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-3">3 <span class="todo">TODO</span> [#A] P_STOP for IO/EM</h2>
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-</p>
-<p>
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P<sub>STOP</sub> updates:
-</p><ul>
-<li>
-b[(NOBAR, n<sub>h</sub>), 'h'] = 1.0       # always
-</li>
-<li>
-b[(RBAR, n<sub>h</sub>), 'h'] = h_.probA  # h_ is RBAR stop rule
-</li>
-<li>
-b[(LRBAR, n<sub>h</sub>), 'h'] = h_.probA * _ h_.probA
-
-</li>
-<li>How is the P_STOP formula different given other values for dir and adj?<br/>
-(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of _ h_ -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-4">4 <span class="todo">TODO</span> P_CHOOSE for IO/EM</h2>
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-<div class="outline-2">
-<h2 id="sec-5">5 Initialization   </h2>
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-</p>
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p><ul>
-<li><span class="todo">TODO</span> Separate initialization to another file?                      &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-(It's rather messy.)
-</li>
-<li><span class="todo">TOGROK</span> CCM Initialization    <br/>
-P<sub>SPLIT</sub> used here&hellip; how, again?
-</li>
-<li><span class="done">DONE</span> DMV Initialization probabilities<br/>
-(from initialization frequency)
-</li>
-<li><span class="done">DONE</span> DMV Initialization frequencies    <br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-<ul>
-<li>P_STOP    <br/>
-P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-<pre>
- f_{STOP}( STOP|det, L, adj) +1
- f_{STOP}(-STOP|det, L, adj) +0  
- f_{STOP}( STOP|det, L, non_adj) +1
- f_{STOP}(-STOP|det, L, non_adj) +0
- f_{STOP}( STOP|det, R, adj) +0
- f_{STOP}(-STOP|det, R, adj) +1
-
- f_{STOP}( STOP|nn, L, adj) +0
- f_{STOP}(-STOP|nn, L, adj) +1
- f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
- f_{STOP}(-STOP|nn, L, non_adj) +0
-</pre>
-<ul>
-<li><span class="todo">TODO</span> tweak<br/>
-<a name="pstoptweak">&nbsp;</a>
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h &lt;= 1)     # first two words
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1)     
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-            f[head,  'STOP', 'RN'] += (i_h &gt;= n - 2) # last two words
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) 
-            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-</pre>
-vs
-<pre>
-            # this one requires some additional rewriting since it
-            # introduces divisions by zero
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1) # not first two
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) # not last two
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs 
-"all words take the same number of arguments" interpreted as
-<pre>
-for all heads:
-    p_STOP(head, 'STOP', 'LN') = 0.3
-    p_STOP(head, 'STOP', 'LA') = 0.5
-    p_STOP(head, 'STOP', 'RN') = 0.4
-    p_STOP(head, 'STOP', 'RA') = 0.7
-</pre>
-(which we easily may tweak in init_zeros())
-</li>
-</ul>
-</li>
-<li>P_CHOOSE<br/>
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-<ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum_a f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></li>
-</ul>
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-6">6 [#C] Deferred</h2>
-
-<ul>
-<li><span class="todo">TODO</span> inner_dmv() should disregard rules with heads not in sent     &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-<pre>
- rule.head() not in "nn vbd det nn".split()
-</pre>
-This is ruled out by getting rules from g.rules(LHS, sent).
-
-<p>
-Also, we optimize this further by saying we don't even recurse into
-attachment rules where
-<pre>
- rule.head() not in sent[ s :r+1]
- rule.head() not in sent[r+1:t+1]
-</pre>
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-</p></li>
-<li><span class="todo">TODO</span> when reestimating P_STOP etc, remove rules with p &lt; epsilon   &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-</li>
-<li><span class="todo">TODO</span> inner_dmv, short ranges and impossible attachment             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If s-t &lt;= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-<p>
-If s-t &lt;= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-</p>
-<p>
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-</p></li>
-<li><span class="todo">TODO</span> clean up the module files                                     &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-Is there better way to divide dmv and harmonic? There's a two-way
-dependency between the modules. Guess there could be a third file that
-imports both the initialization and the actual EM stuff, while a file
-containing constants and classes could be imported by all others:
-<pre>
- dmv.py imports dmv_EM.py imports dmv_classes.py
- dmv.py imports dmv_inits.py imports dmv_classes.py
-</pre>
-
-</li>
-<li><span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-
-<p>
-Is there much to gain here?
-</p>
-</li>
-<li><span class="todo">TOGROK</span> tags as numbers or tags as strings?                         &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Need to clean up the representation.
-
-<p>
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-</p></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-7">7 Expectation Maximation in IO/DMV-terms</h2>
-
-<p>inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-</p>
-<p>
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-</p>
-<p>
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-<pre>
- h  -&gt; h  _a_
- h_ -&gt; h_ _a_
-</pre>
-</p>
-<p>
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-</p>
-<ul>
-<li><span class="todo">TODO</span> Corpus access<br/>
-</li>
-<li><span class="todo">TOGROK</span> sentences or rules as the "outer loop"?                     &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-In regard to the E/M-step, finding P<sub>STOP</sub>, P<sub>CHOOSE</sub>.
-
-
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-8">8 Python-stuff</h2>
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</li>
-<li>
-<a href="http://jaynes.colorado.edu/PythonIdioms.html">http://jaynes.colorado.edu/PythonIdioms.html</a>
-
-
-</li>
-</ul>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/06/04 14:25:59</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~23~ b/DMVCCM.html.~23~
deleted file mode 100755 (executable)
index de09476..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM &ndash; todo-list / progress</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/06/04 14:58:40"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM &ndash; todo-list / progress</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm report and project</a></li>
-<li><a href="#sec-2">2 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-3">3 [#A] P_STOP for IO/EM</a></li>
-<li><a href="#sec-4">4 P_CHOOSE for IO/EM</a></li>
-<li><a href="#sec-5">5 Initialization   </a></li>
-<li><a href="#sec-6">6 [#C] Deferred</a></li>
-<li><a href="#sec-7">7 Expectation Maximation in IO/DMV-terms</a></li>
-<li><a href="#sec-8">8 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm report and project</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-But absolute, extended, really-quite-dead-now deadline: August
-31&hellip; 
-</p><ul>
-<li>
-<a href="src/dmv.py">dmv.py</a>
-</li>
-<li>
-<a href="src/io.py">io.py</a>
-</li>
-<li>
-<a href="src/harmonic.py">harmonic.py</a>
-</li>
-</ul></div>
-
-<div class="outline-2">
-<h2 id="sec-2">2 <span class="todo">TODO</span> Adjacency and combining it with inner()</h2>
-
-<p>Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-</p>
-<p>
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b-&gt;a<sub>0</sub>-&gt;a<sub>1</sub>,
-then b is non-adjacent to a<sub>0</sub> and should use probN (for the LRStop and
-the attachment of a<sub>0</sub>), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b-&gt;a<sub>1</sub>-&gt;a<sub>0</sub> for that. We want
-both. And in possibly much more complex versions.
-</p>
-<p>
-Ideas:
-</p><ul>
-<li>
-I first thought of decorating the individual words/tags in a
-sentence with their indices, and perhaps just duplicating the
-relevant rules (one for each index of the duplicate tags). But this
-gives an explosion in attachment rules (although a contained
-explosion, within the rules used in a sentence; but most sentences
-will have at least two NN's so it will be a problem).
-</li>
-<li>
-Then, I had a <i>brilliant</i> idea. Just let e(), the helper function of
-inner(), parametrize for an extra pair of boolean values for whether
-or not we've attached anything to the left or right yet ("yet"
-meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-possible values for (Lattach,Rattach). This makes e() lots more
-complex and DMV-specific though, so it's been rewritten in
-inner_dmv() in dmv.py.
-</li>
-<li><span class="todo">TODO</span> document this adjacency stuff better<br/>
-</li>
-<li><span class="todo">TODO</span> test and debug my brilliant idea<br/>
-</li>
-<li><span class="done">DONE</span> implement my brilliant idea.<br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-06-01 Sun 17:19</span><br/>
-<a href="src/dmv.py">e(sti) in dmv.py</a>
-
-</li>
-<li><span class="done">DONE</span> [#A] test inner() on sentences with duplicate words<br/>
-Works with eg. the sentence "h h h"
-
-
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-3">3 <span class="todo">TODO</span> [#A] P_STOP for IO/EM</h2>
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-</p>
-<p>
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P<sub>STOP</sub> updates:
-</p><ul>
-<li>
-b[(NOBAR, n<sub>h</sub>), 'h'] = 1.0       # always
-</li>
-<li>
-b[(RBAR, n<sub>h</sub>), 'h'] = h_.probA  # h_ is RBAR stop rule
-</li>
-<li>
-b[(LRBAR, n<sub>h</sub>), 'h'] = h_.probA * _ h_.probA
-
-</li>
-<li>How is the P_STOP formula different given other values for dir and adj?<br/>
-(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of _ h_ -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-4">4 <span class="todo">TODO</span> P_CHOOSE for IO/EM</h2>
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-<div class="outline-2">
-<h2 id="sec-5">5 Initialization   </h2>
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-</p>
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p><ul>
-<li><span class="todo">TODO</span> Separate initialization to another file?                      &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-(It's rather messy.)
-</li>
-<li><span class="todo">TOGROK</span> CCM Initialization    <br/>
-P<sub>SPLIT</sub> used here&hellip; how, again?
-</li>
-<li><span class="done">DONE</span> DMV Initialization probabilities<br/>
-(from initialization frequency)
-</li>
-<li><span class="done">DONE</span> DMV Initialization frequencies    <br/>
-<span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-<ul>
-<li>P_STOP    <br/>
-P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-<pre>
- f_{STOP}( STOP|det, L, adj) +1
- f_{STOP}(-STOP|det, L, adj) +0  
- f_{STOP}( STOP|det, L, non_adj) +1
- f_{STOP}(-STOP|det, L, non_adj) +0
- f_{STOP}( STOP|det, R, adj) +0
- f_{STOP}(-STOP|det, R, adj) +1
-
- f_{STOP}( STOP|nn, L, adj) +0
- f_{STOP}(-STOP|nn, L, adj) +1
- f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
- f_{STOP}(-STOP|nn, L, non_adj) +0
-</pre>
-<ul>
-<li><span class="todo">TODO</span> tweak<br/>
-<a name="pstoptweak">&nbsp;</a>
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h &lt;= 1)     # first two words
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1)     
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-            f[head,  'STOP', 'RN'] += (i_h &gt;= n - 2) # last two words
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) 
-            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-</pre>
-vs
-<pre>
-            # this one requires some additional rewriting since it
-            # introduces divisions by zero
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h &lt;= 1) # not first two
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h &gt;= n - 2) # not last two
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs
-<pre>
-            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-</pre>
-vs 
-"all words take the same number of arguments" interpreted as
-<pre>
-for all heads:
-    p_STOP(head, 'STOP', 'LN') = 0.3
-    p_STOP(head, 'STOP', 'LA') = 0.5
-    p_STOP(head, 'STOP', 'RN') = 0.4
-    p_STOP(head, 'STOP', 'RA') = 0.7
-</pre>
-(which we easily may tweak in init_zeros())
-</li>
-</ul>
-</li>
-<li>P_CHOOSE<br/>
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-<ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum_a f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></li>
-</ul>
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-6">6 [#C] Deferred</h2>
-
-<ul>
-<li><span class="todo">TODO</span> inner_dmv() should disregard rules with heads not in sent     &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-<pre>
- rule.head() not in "nn vbd det nn".split()
-</pre>
-This is ruled out by getting rules from g.rules(LHS, sent).
-
-<p>
-Also, we optimize this further by saying we don't even recurse into
-attachment rules where
-<pre>
- rule.head() not in sent[ s :r+1]
- rule.head() not in sent[r+1:t+1]
-</pre>
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-</p></li>
-<li><span class="todo">TODO</span> when reestimating P_STOP etc, remove rules with p &lt; epsilon   &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-</li>
-<li><span class="todo">TODO</span> inner_dmv, short ranges and impossible attachment             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-If s-t &lt;= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-<p>
-If s-t &lt;= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-</p>
-<p>
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-</p></li>
-<li><span class="todo">TODO</span> clean up the module files                                     &nbsp;&nbsp;&nbsp;<span class="tag">PRETTIER</span><br/>
-Is there better way to divide dmv and harmonic? There's a two-way
-dependency between the modules. Guess there could be a third file that
-imports both the initialization and the actual EM stuff, while a file
-containing constants and classes could be imported by all others:
-<pre>
- dmv.py imports dmv_EM.py imports dmv_classes.py
- dmv.py imports dmv_inits.py imports dmv_classes.py
-</pre>
-
-</li>
-<li><span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-
-<p>
-Is there much to gain here?
-</p>
-</li>
-<li><span class="todo">TOGROK</span> tags as numbers or tags as strings?                         &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-Need to clean up the representation.
-
-<p>
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-</p></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-7">7 Expectation Maximation in IO/DMV-terms</h2>
-
-<p>inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-</p>
-<p>
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-</p>
-<p>
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-<pre>
- h  -&gt; h  _a_
- h_ -&gt; h_ _a_
-</pre>
-</p>
-<p>
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-</p>
-<ul>
-<li><span class="todo">TODO</span> Corpus access<br/>
-</li>
-<li><span class="todo">TOGROK</span> sentences or rules as the "outer loop"?                     &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span><br/>
-In regard to the E/M-step, finding P<sub>STOP</sub>, P<sub>CHOOSE</sub>.
-
-
-</li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-8">8 Python-stuff</h2>
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</li>
-<li>
-<a href="http://jaynes.colorado.edu/PythonIdioms.html">http://jaynes.colorado.edu/PythonIdioms.html</a>
-
-
-</li>
-</ul>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/06/04 14:58:40</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html.~2~ b/DMVCCM.html.~2~
deleted file mode 100755 (executable)
index 3da4a36..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/05/28 13:40:17"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<div id="text-table-of-contents">
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-1.1">1.1 [#A] P<sub>STOP</sub></a>
-<ul>
-<li><a href="#sec-1.1.1">1.1.1 Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also)</a></li>
-<li><a href="#sec-1.1.2">1.1.2 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</a></li>
-</ul>
-</li>
-<li><a href="#sec-1.2">1.2 P<sub>CHOOSE</sub></a></li>
-<li><a href="#sec-1.3">1.3 Some (tagged) sentences are bound to come twice</a></li>
-<li><a href="#sec-1.4">1.4 Initialization   </a>
-<ul>
-<li><a href="#sec-1.4.1">1.4.1 DMV Initialization frequencies    </a></li>
-<li><a href="#sec-1.4.2">1.4.2 DMV Initialization probabilities (from initialization frequency)</a></li>
-<li><a href="#sec-1.4.3">1.4.3 CCM Initialization    </a></li>
-</ul>
-</li>
-<li><a href="#sec-1.5">1.5 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-1.6">1.6 Is the E-step in DMV just inner() on the full sentence? </a></li>
-<li><a href="#sec-1.7">1.7 [#C] Corpus access</a></li>
-<li><a href="#sec-1.8">1.8 How do we interpret DMV as an inside/outside process?   </a></li>
-<li><a href="#sec-1.9">1.9 Technical: sentences or rules as the "outer loop"?</a></li>
-<li><a href="#sec-1.10">1.10 CCM-stuff</a></li>
-<li><a href="#sec-1.11">1.11 How do we know whether we are 'adjacent' or not? </a></li>
-</ul>
-</li>
-<li><a href="#sec-2">2 Python-stuff</a></li>
-</ul>
-</div>
-</div>
-
-<div id="outline-container-1" class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-<div id="text-1">
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-</div>
-
-<div id="outline-container-1.1" class="outline-3">
-<h3 id="sec-1.1">1.1 <span class="todo">TODO</span> [#A] P<sub>STOP</sub></h3>
-<div id="text-1.1">
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-</p>
-</div>
-
-<div id="outline-container-1.1.1" class="outline-4">
-<h4 id="sec-1.1.1">1.1.1 Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also)</h4>
-<div id="text-1.1.1">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.1.2" class="outline-4">
-<h4 id="sec-1.1.2">1.1.2 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</h4>
-<div id="text-1.1.2">
-
-<p>(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of <u>h</u> -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></div>
-</div>
-
-</div>
-
-<div id="outline-container-1.2" class="outline-3">
-<h3 id="sec-1.2">1.2 <span class="todo">TODO</span> P<sub>CHOOSE</sub></h3>
-<div id="text-1.2">
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.3" class="outline-3">
-<h3 id="sec-1.3">1.3 <span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h3>
-<div id="text-1.3">
-
-<p>Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-</p>
-<p>
-Is there much to gain here?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.4" class="outline-3">
-<h3 id="sec-1.4">1.4 Initialization   </h3>
-<div id="text-1.4">
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-</p>
-<p>
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p>
-</div>
-
-<div id="outline-container-1.4.1" class="outline-4">
-<h4 id="sec-1.4.1">1.4.1 <span class="done">DONE</span> DMV Initialization frequencies    </h4>
-<div id="text-1.4.1">
-
-<p><span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-</p>
-</div>
-
-<div id="outline-container-1.4.1.1" class="outline-5">
-<h5 id="sec-1.4.1.1">1.4.1.1 P<sub>STOP</sub>    </h5>
-<div id="text-1.4.1.1">
-
-<p>P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-</p><ul>
-<li>
-f<sub>STOP</sub>( STOP|det, L, adj) +1
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, L, adj) +0  
-</li>
-<li>
-f<sub>STOP</sub>( STOP|det, L, non<sub>adj</sub>) +1
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, L, non<sub>adj</sub>) +0
-</li>
-<li>
-f<sub>STOP</sub>( STOP|det, R, adj) +0
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, R, adj) +1
-
-</li>
-<li>
-f<sub>STOP</sub>( STOP|nn, L, adj) +0
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|nn, L, adj) +1
-</li>
-<li>
-f<sub>STOP</sub>( STOP|nn, L, non<sub>adj</sub>) +1  # since there's at least one to the left
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|nn, L, non<sub>adj</sub>) +0
-
-</li>
-</ul></div>
-
-</div>
-
-<div id="outline-container-1.4.1.2" class="outline-5">
-<h5 id="sec-1.4.1.2">1.4.1.2 P<sub>CHOOSE</sub></h5>
-<div id="text-1.4.1.2">
-
-<p>Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-</p><ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum<sub>a</sub> f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.2" class="outline-4">
-<h4 id="sec-1.4.2">1.4.2 <span class="todo">TOGROK</span> DMV Initialization probabilities (from initialization frequency)</h4>
-<div id="text-1.4.2">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.3" class="outline-4">
-<h4 id="sec-1.4.3">1.4.3 <span class="todo">TOGROK</span> CCM Initialization    </h4>
-<div id="text-1.4.3">
-
-<p>P<sub>SPLIT</sub> used here&hellip; how, again?
-</p>
-
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.5" class="outline-3">
-<h3 id="sec-1.5">1.5 <span class="todo">TOGROK</span> Adjacency and combining it with inner()</h3>
-<div id="text-1.5">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6" class="outline-3">
-<h3 id="sec-1.6">1.6 <span class="todo">TOGROK</span> Is the E-step in DMV just inner() on the full sentence? </h3>
-<div id="text-1.6">
-
-<p>and What exactly is the M-step of DMV? 
-</p>
-</div>
-
-</div>
-
-<div id="outline-container-1.7" class="outline-3">
-<h3 id="sec-1.7">1.7 <span class="todo">TODO</span> [#C] Corpus access</h3>
-<div id="text-1.7">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.8" class="outline-3">
-<h3 id="sec-1.8">1.8 <span class="todo">TOGROK</span> How do we interpret DMV as an inside/outside process?   </h3>
-<div id="text-1.8">
-
-<p>c<sub>s</sub>(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P<sub>STOP</sub> and P<sub>CHOOSE</sub>, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-</p>
-</div>
-
-</div>
-
-<div id="outline-container-1.9" class="outline-3">
-<h3 id="sec-1.9">1.9 Technical: sentences or rules as the "outer loop"?</h3>
-<div id="text-1.9">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.10" class="outline-3">
-<h3 id="sec-1.10">1.10 CCM-stuff</h3>
-<div id="text-1.10">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.11" class="outline-3">
-<h3 id="sec-1.11">1.11 <span class="done">DONE</span> How do we know whether we are 'adjacent' or not? </h3>
-<div id="text-1.11">
-
-
-</div>
-
-<div id="outline-container-1.11.0.1" class="outline-5">
-<h5 id="sec-1.11.0.1">1.11.0.1 One configuration that I'm fairly certain of: right w/CHOOSE</h5>
-<div id="text-1.11.0.1">
-
-<p>if we have 
-\Tree [<sub>b</sub> [<sub>b</sub> b <u>c</u> ] <u>d</u> ] 
-then the lower tree [<sub>b</sub> b <u>c</u> ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [<sub>b</sub> [<sub>b</sub> &hellip; ] <u>d</u> ] is non-adjacent, since there is something in
-between&hellip; Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-</p><ul>
-<li id="sec-1.11.0.1.1">Implementing this:<br/>
-Two different DMVRules? Or just two different prob-values per rule?
-</li>
-</ul>
-</div>
-
-</div>
-
-<div id="outline-container-1.11.0.2" class="outline-5">
-<h5 id="sec-1.11.0.2">1.11.0.2 left w/CHOOSE</h5>
-<div id="text-1.11.0.2">
-
-<p>Same deal here?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.11.0.3" class="outline-5">
-<h5 id="sec-1.11.0.3">1.11.0.3 R/L without CHOOSE, the "sealing operations"</h5>
-<div id="text-1.11.0.3">
-
-<p><u>h</u> -&gt; STOP h_ and h_ -&gt; h STOP
-</p>
-<p>
-What is "adjacency" here? That t - s == 1?
-</p>
-
-
-
-</div>
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-2" class="outline-2">
-<h2 id="sec-2">2 Python-stuff</h2>
-<div id="text-2">
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-
-
-</li>
-</ul>
-</div>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/05/28 13:40:17</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html~20080525~ b/DMVCCM.html~20080525~
deleted file mode 100755 (executable)
index adf9d5f..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/05/25 17:44:40"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-2">1.1 [#A] DMV-probabilities   </a></li>
-<li><a href="#sec-3">1.2 Initialization   </a></li>
-<li><a href="#sec-4">1.3 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-5">1.4 What exactly is the E-step of DMV? Is the M-step just inner on the full sentence?</a></li>
-<li><a href="#sec-6">1.5 Meet Yoav again about dmvccm</a>
-<ul>
-<li><a href="#sec-7">1.5.1 Initialization</a></li>
-<li><a href="#sec-8">1.5.2 Corpus access?</a></li>
-<li><a href="#sec-9">1.5.3 How do we interpret DMV as an inside/outside process?</a></li>
-<li><a href="#sec-10">1.5.4 How do we know whether we are 'adjacent' or not? </a></li>
-<li><a href="#sec-14">1.5.5 What are the formulas for P<sub>CHOOSE</sub> etc?</a></li>
-<li><a href="#sec-15">1.5.6 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</a></li>
-</ul></li>
-</ul>
-</li>
-<li><a href="#sec-16">2 Python-stuff</a></li>
-</ul>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-</p>
-<p>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-<div class="outline-3">
-<h3 id="sec-2">1.1 <span class="todo">TODO</span> [#A] DMV-probabilities   </h3>
-
-<p><a href="src/dmv.py">dmv.py</a>
-</p></div>
-
-<div class="outline-3">
-<h3 id="sec-3">1.2 <span class="todo">TOGROK</span> Initialization   </h3>
-
-</div>
-
-<div class="outline-3">
-<h3 id="sec-4">1.3 <span class="todo">TOGROK</span> Adjacency and combining it with inner()</h3>
-
-</div>
-
-<div class="outline-3">
-<h3 id="sec-5">1.4 <span class="todo">TOGROK</span> What exactly is the E-step of DMV? Is the M-step just inner on the full sentence?</h3>
-
-
-
-</div>
-
-<div class="outline-3">
-<h3 id="sec-6">1.5 Meet Yoav again about dmvccm</h3>
-
-<p><span class="timestamp-kwd">SCHEDULED: </span> <span class="timestamp">2008-05-26 Mon</span><br/>
-13:30, P3.21.
-</p>
-<p>
-Questions:
-</p>
-<div class="outline-4">
-<h4 id="sec-7">1.5.1 Initialization</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-8">1.5.2 Corpus access?</h4>
-
-</div>
-
-<div class="outline-4">
-<h4 id="sec-9">1.5.3 How do we interpret DMV as an inside/outside process?</h4>
-
-<p>The upside-down P<sub>STOP</sub> formula (left-to-right also)
-c<sub>s</sub>(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P<sub>STOP</sub> and P<sub>CHOOSE</sub>, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-10">1.5.4 How do we know whether we are 'adjacent' or not? </h4>
-
-<p>Can we even know that without the full tree?
-</p>
-<div class="outline-5">
-<h5 id="sec-11">1.5.4.1 One configuration that I'm fairly certain of: right w/CHOOSE</h5>
-
-<p>if we have 
-\Tree [<sub>b</sub> [<sub>b</sub> b <u>c</u> ] <u>d</u> ] 
-then the lower tree [<sub>b</sub> b <u>c</u> ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [<sub>b</sub> [<sub>b</sub> &hellip; ] <u>d</u> ] is non-adjacent, since there is something in
-between&hellip; Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-</p><ul>
-<li>Implementing this:<br/>
-Two different DMVRules? Or just two different prob-values per rule?
-</li>
-</ul>
-</div>
-
-<div class="outline-5">
-<h5 id="sec-12">1.5.4.2 left w/CHOOSE</h5>
-
-<p>Same deal here?
-</p></div>
-
-<div class="outline-5">
-<h5 id="sec-13">1.5.4.3 R/L without CHOOSE, the "sealing operations"</h5>
-
-<p><u>h</u> -&gt; STOP h_ and h_ -&gt; h STOP
-</p>
-<p>
-What is "adjacency" here? That t - s == 1?
-</p></div>
-</div>
-
-<div class="outline-4">
-<h4 id="sec-14">1.5.5 What are the formulas for P<sub>CHOOSE</sub> etc?</h4>
-
-<p>Is this the same as the regular E-step summation of Lari&amp;Young?
-(Equation 20)
-</p></div>
-
-<div class="outline-4">
-<h4 id="sec-15">1.5.6 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</h4>
-
-
-<p>
-(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of <u>h</u> -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-
-
-
-
-</div>
-</div>
-</div>
-
-<div class="outline-2">
-<h2 id="sec-16">2 Python-stuff</h2>
-
-<p><a href="src/pseudo.py">pseudo.py</a>
-</p>
-<p>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-</p>
-
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/05/25 17:44:40</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html~20080526~ b/DMVCCM.html~20080526~
deleted file mode 100755 (executable)
index 4d83aac..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/05/25 22:45:46"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<div id="text-table-of-contents">
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-1.1">1.1 [#A] P<sub>STOP</sub></a></li>
-<li><a href="#sec-1.2">1.2 P<sub>CHOOSE</sub></a></li>
-<li><a href="#sec-1.3">1.3 Initialization   </a></li>
-<li><a href="#sec-1.4">1.4 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-1.5">1.5 What exactly is the E-step of DMV? Is the M-step just inner on the full sentence?</a></li>
-<li><a href="#sec-1.6">1.6 Meet Yoav again about dmvccm</a>
-<ul>
-<li><a href="#sec-1.6.1">1.6.1 Initialization</a></li>
-<li><a href="#sec-1.6.2">1.6.2 Corpus access?</a></li>
-<li><a href="#sec-1.6.3">1.6.3 How do we interpret DMV as an inside/outside process?</a></li>
-<li><a href="#sec-1.6.4">1.6.4 The upside-down P<sub>STOP</sub> formula (left-to-right also)?</a></li>
-<li><a href="#sec-1.6.5">1.6.5 Technical: sentences or rules as the "outer loop"?</a></li>
-<li><a href="#sec-1.6.6">1.6.6 What are the formulas for P<sub>CHOOSE</sub> etc?</a></li>
-<li><a href="#sec-1.6.7">1.6.7 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</a></li>
-<li><a href="#sec-1.6.8">1.6.8 CCM-questions</a></li>
-<li><a href="#sec-1.6.9">1.6.9 (Answered already?) How do we know whether we are 'adjacent' or not? </a></li>
-</ul></li>
-</ul>
-</li>
-<li><a href="#sec-2">2 Python-stuff</a></li>
-</ul>
-</div>
-</div>
-
-<div id="outline-container-1" class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-<div id="text-1">
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-</div>
-
-<div id="outline-container-1.1" class="outline-3">
-<h3 id="sec-1.1">1.1 <span class="todo">TODO</span> [#A] P<sub>STOP</sub></h3>
-<div id="text-1.1">
-
-<p><a href="src/dmv.py">dmv.py</a>
-</p></div>
-
-</div>
-
-<div id="outline-container-1.2" class="outline-3">
-<h3 id="sec-1.2">1.2 <span class="todo">TOGROK</span> P<sub>CHOOSE</sub></h3>
-<div id="text-1.2">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.3" class="outline-3">
-<h3 id="sec-1.3">1.3 <span class="todo">TOGROK</span> Initialization   </h3>
-<div id="text-1.3">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4" class="outline-3">
-<h3 id="sec-1.4">1.4 <span class="todo">TOGROK</span> Adjacency and combining it with inner()</h3>
-<div id="text-1.4">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.5" class="outline-3">
-<h3 id="sec-1.5">1.5 <span class="todo">TOGROK</span> What exactly is the E-step of DMV? Is the M-step just inner on the full sentence?</h3>
-<div id="text-1.5">
-
-
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6" class="outline-3">
-<h3 id="sec-1.6">1.6 Meet Yoav again about dmvccm</h3>
-<div id="text-1.6">
-
-<p><span class="timestamp-kwd">SCHEDULED: </span> <span class="timestamp">2008-05-26 Mon</span><br/>
-13:30, P3.21.
-</p>
-<p>
-Questions:
-</p>
-</div>
-
-<div id="outline-container-1.6.1" class="outline-4">
-<h4 id="sec-1.6.1">1.6.1 Initialization</h4>
-<div id="text-1.6.1">
-
-<p>Do we have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.6.2" class="outline-4">
-<h4 id="sec-1.6.2">1.6.2 Corpus access?</h4>
-<div id="text-1.6.2">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6.3" class="outline-4">
-<h4 id="sec-1.6.3">1.6.3 How do we interpret DMV as an inside/outside process?</h4>
-<div id="text-1.6.3">
-
-<p>c<sub>s</sub>(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P<sub>STOP</sub> and P<sub>CHOOSE</sub>, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.6.4" class="outline-4">
-<h4 id="sec-1.6.4">1.6.4 The upside-down P<sub>STOP</sub> formula (left-to-right also)?</h4>
-<div id="text-1.6.4">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6.5" class="outline-4">
-<h4 id="sec-1.6.5">1.6.5 Technical: sentences or rules as the "outer loop"?</h4>
-<div id="text-1.6.5">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6.6" class="outline-4">
-<h4 id="sec-1.6.6">1.6.6 What are the formulas for P<sub>CHOOSE</sub> etc?</h4>
-<div id="text-1.6.6">
-
-<p>Is this the same as the regular E-step (M-step?) summation of
-Lari&amp;Young?  (Equation 20)
-</p></div>
-
-</div>
-
-<div id="outline-container-1.6.7" class="outline-4">
-<h4 id="sec-1.6.7">1.6.7 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</h4>
-<div id="text-1.6.7">
-
-
-<p>
-(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of <u>h</u> -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></div>
-
-</div>
-
-<div id="outline-container-1.6.8" class="outline-4">
-<h4 id="sec-1.6.8">1.6.8 CCM-questions</h4>
-<div id="text-1.6.8">
-
-<ul>
-<li>
-True or false: half of the CCM model probabilities (the one where
-the span is a constituent) are exactly inside and outside
-probabilities
-<ul>
-<li>
-
-<ul>
-</ul></li>
-</ul>
-<p>&hellip;
-</p>
-</li>
-</ul></div>
-
-</div>
-
-<div id="outline-container-1.6.9" class="outline-4">
-<h4 id="sec-1.6.9">1.6.9 (Answered already?) How do we know whether we are 'adjacent' or not? </h4>
-<div id="text-1.6.9">
-
-
-</div>
-
-<div id="outline-container-1.6.9.1" class="outline-5">
-<h5 id="sec-1.6.9.1">1.6.9.1 One configuration that I'm fairly certain of: right w/CHOOSE</h5>
-<div id="text-1.6.9.1">
-
-<p>if we have 
-\Tree [<sub>b</sub> [<sub>b</sub> b <u>c</u> ] <u>d</u> ] 
-then the lower tree [<sub>b</sub> b <u>c</u> ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [<sub>b</sub> [<sub>b</sub> &hellip; ] <u>d</u> ] is non-adjacent, since there is something in
-between&hellip; Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-</p><ul>
-<li id="sec-1.6.9.1.1">Implementing this:<br/>
-Two different DMVRules? Or just two different prob-values per rule?
-</li>
-</ul>
-</div>
-
-</div>
-
-<div id="outline-container-1.6.9.2" class="outline-5">
-<h5 id="sec-1.6.9.2">1.6.9.2 left w/CHOOSE</h5>
-<div id="text-1.6.9.2">
-
-<p>Same deal here?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.6.9.3" class="outline-5">
-<h5 id="sec-1.6.9.3">1.6.9.3 R/L without CHOOSE, the "sealing operations"</h5>
-<div id="text-1.6.9.3">
-
-<p><u>h</u> -&gt; STOP h_ and h_ -&gt; h STOP
-</p>
-<p>
-What is "adjacency" here? That t - s == 1?
-</p>
-
-
-
-
-</div>
-</div>
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-2" class="outline-2">
-<h2 id="sec-2">2 Python-stuff</h2>
-<div id="text-2">
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-
-
-</li>
-</ul>
-</div>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/05/25 22:45:46</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html~20080527~ b/DMVCCM.html~20080527~
deleted file mode 100755 (executable)
index c5feba1..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/05/26 15:19:21"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<div id="text-table-of-contents">
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-1.1">1.1 [#A] P<sub>STOP</sub></a>
-<ul>
-<li><a href="#sec-1.1.1">1.1.1 Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also)</a></li>
-<li><a href="#sec-1.1.2">1.1.2 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</a></li>
-</ul>
-</li>
-<li><a href="#sec-1.2">1.2 P<sub>CHOOSE</sub></a></li>
-<li><a href="#sec-1.3">1.3 Initialization   </a>
-<ul>
-<li><a href="#sec-1.3.1">1.3.1 P<sub>STOP</sub></a></li>
-<li><a href="#sec-1.3.2">1.3.2 P<sub>CHOOSE</sub></a></li>
-<li><a href="#sec-1.3.3">1.3.3 CCM</a></li>
-</ul>
-</li>
-<li><a href="#sec-1.4">1.4 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-1.5">1.5 Is the E-step in DMV just inner() on the full sentence?</a></li>
-<li><a href="#sec-1.6">1.6 What exactly is the M-step of DMV? </a></li>
-<li><a href="#sec-1.7">1.7 Corpus access</a></li>
-<li><a href="#sec-1.8">1.8 How do we interpret DMV as an inside/outside process?   </a></li>
-<li><a href="#sec-1.9">1.9 Technical: sentences or rules as the "outer loop"?</a></li>
-<li><a href="#sec-1.10">1.10 CCM-stuff</a></li>
-<li><a href="#sec-1.11">1.11 How do we know whether we are 'adjacent' or not? </a></li>
-</ul>
-</li>
-<li><a href="#sec-2">2 Python-stuff</a></li>
-</ul>
-</div>
-</div>
-
-<div id="outline-container-1" class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-<div id="text-1">
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-</div>
-
-<div id="outline-container-1.1" class="outline-3">
-<h3 id="sec-1.1">1.1 <span class="todo">TODO</span> [#A] P<sub>STOP</sub></h3>
-<div id="text-1.1">
-
-<p><a href="src/dmv.py">dmv.py</a>
-</p>
-</div>
-
-<div id="outline-container-1.1.1" class="outline-4">
-<h4 id="sec-1.1.1">1.1.1 Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also)</h4>
-<div id="text-1.1.1">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.1.2" class="outline-4">
-<h4 id="sec-1.1.2">1.1.2 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</h4>
-<div id="text-1.1.2">
-
-<p>(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of <u>h</u> -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></div>
-</div>
-
-</div>
-
-<div id="outline-container-1.2" class="outline-3">
-<h3 id="sec-1.2">1.2 <span class="todo">TODO</span> P<sub>CHOOSE</sub></h3>
-<div id="text-1.2">
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.3" class="outline-3">
-<h3 id="sec-1.3">1.3 <span class="todo">TOGROK</span> Initialization   </h3>
-<div id="text-1.3">
-
-<p>we Do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p>
-
-</div>
-
-<div id="outline-container-1.3.1" class="outline-4">
-<h4 id="sec-1.3.1">1.3.1 P<sub>STOP</sub></h4>
-<div id="text-1.3.1">
-
-<p>P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-</p><ul>
-<li>
-f<sub>STOP</sub>( STOP|det, L, adj) +1
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, L, adj) +0  
-</li>
-<li>
-f<sub>STOP</sub>( STOP|det, L, non<sub>adj</sub>) +1
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, L, non<sub>adj</sub>) +0
-</li>
-<li>
-f<sub>STOP</sub>( STOP|det, R, adj) +0
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, R, adj) +1
-
-</li>
-<li>
-f<sub>STOP</sub>( STOP|nn, L, adj) +0
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|nn, L, adj) +1
-</li>
-<li>
-f<sub>STOP</sub>( STOP|nn, L, non<sub>adj</sub>) +1  # since there's at least one to the left
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|nn, L, non<sub>adj</sub>) +0
-
-</li>
-</ul></div>
-
-</div>
-
-<div id="outline-container-1.3.2" class="outline-4">
-<h4 id="sec-1.3.2">1.3.2 P<sub>CHOOSE</sub></h4>
-<div id="text-1.3.2">
-
-<p>Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-</p><ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum<sub>a</sub> f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></div>
-
-</div>
-
-<div id="outline-container-1.3.3" class="outline-4">
-<h4 id="sec-1.3.3">1.3.3 CCM</h4>
-<div id="text-1.3.3">
-
-<p>P<sub>SPLIT</sub> used here&hellip; how, again?
-</p></div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4" class="outline-3">
-<h3 id="sec-1.4">1.4 <span class="todo">TOGROK</span> Adjacency and combining it with inner()</h3>
-<div id="text-1.4">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.5" class="outline-3">
-<h3 id="sec-1.5">1.5 <span class="todo">TOGROK</span> Is the E-step in DMV just inner() on the full sentence?</h3>
-<div id="text-1.5">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6" class="outline-3">
-<h3 id="sec-1.6">1.6 <span class="todo">TOGROK</span> What exactly is the M-step of DMV? </h3>
-<div id="text-1.6">
-
-
-</div>
-
-</div>
-
-<div id="outline-container-1.7" class="outline-3">
-<h3 id="sec-1.7">1.7 <span class="todo">TODO</span> Corpus access</h3>
-<div id="text-1.7">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.8" class="outline-3">
-<h3 id="sec-1.8">1.8 <span class="todo">TOGROK</span> How do we interpret DMV as an inside/outside process?   </h3>
-<div id="text-1.8">
-
-<p>c<sub>s</sub>(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P<sub>STOP</sub> and P<sub>CHOOSE</sub>, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-</p>
-</div>
-
-</div>
-
-<div id="outline-container-1.9" class="outline-3">
-<h3 id="sec-1.9">1.9 Technical: sentences or rules as the "outer loop"?</h3>
-<div id="text-1.9">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.10" class="outline-3">
-<h3 id="sec-1.10">1.10 CCM-stuff</h3>
-<div id="text-1.10">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.11" class="outline-3">
-<h3 id="sec-1.11">1.11 <span class="done">DONE</span> How do we know whether we are 'adjacent' or not? </h3>
-<div id="text-1.11">
-
-
-</div>
-
-<div id="outline-container-1.11.0.1" class="outline-5">
-<h5 id="sec-1.11.0.1">1.11.0.1 One configuration that I'm fairly certain of: right w/CHOOSE</h5>
-<div id="text-1.11.0.1">
-
-<p>if we have 
-\Tree [<sub>b</sub> [<sub>b</sub> b <u>c</u> ] <u>d</u> ] 
-then the lower tree [<sub>b</sub> b <u>c</u> ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [<sub>b</sub> [<sub>b</sub> &hellip; ] <u>d</u> ] is non-adjacent, since there is something in
-between&hellip; Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-</p><ul>
-<li id="sec-1.11.0.1.1">Implementing this:<br/>
-Two different DMVRules? Or just two different prob-values per rule?
-</li>
-</ul>
-</div>
-
-</div>
-
-<div id="outline-container-1.11.0.2" class="outline-5">
-<h5 id="sec-1.11.0.2">1.11.0.2 left w/CHOOSE</h5>
-<div id="text-1.11.0.2">
-
-<p>Same deal here?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.11.0.3" class="outline-5">
-<h5 id="sec-1.11.0.3">1.11.0.3 R/L without CHOOSE, the "sealing operations"</h5>
-<div id="text-1.11.0.3">
-
-<p><u>h</u> -&gt; STOP h_ and h_ -&gt; h STOP
-</p>
-<p>
-What is "adjacency" here? That t - s == 1?
-</p>
-
-
-
-</div>
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-2" class="outline-2">
-<h2 id="sec-2">2 Python-stuff</h2>
-<div id="text-2">
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-
-
-</li>
-</ul>
-</div>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/05/26 15:19:21</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.html~20080528~ b/DMVCCM.html~20080528~
deleted file mode 100755 (executable)
index d9d63b2..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
-lang="en" xml:lang="en">
-<head>
-<title>DMV/CCM</title>
-<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-<meta name="generator" content="Org-mode"/>
-<meta name="generated" content="2008/05/27 20:07:11"/>
-<meta name="author" content="Kevin Brubeck Unhammer"/>
-<link rel="stylesheet" type="text/css" href="http://www.student.uib.no/~kun041/org.css">
-</head><body>
-<h1 class="title">DMV/CCM</h1>
-<div id="table-of-contents">
-<h2>Table of Contents</h2>
-<div id="text-table-of-contents">
-<ul>
-<li><a href="#sec-1">1 dmvccm</a>
-<ul>
-<li><a href="#sec-1.1">1.1 [#A] P<sub>STOP</sub></a>
-<ul>
-<li><a href="#sec-1.1.1">1.1.1 Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also)</a></li>
-<li><a href="#sec-1.1.2">1.1.2 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</a></li>
-</ul>
-</li>
-<li><a href="#sec-1.2">1.2 P<sub>CHOOSE</sub></a></li>
-<li><a href="#sec-1.3">1.3 Some (tagged) sentences are bound to come twice</a></li>
-<li><a href="#sec-1.4">1.4 Initialization   </a>
-<ul>
-<li><a href="#sec-1.4.1">1.4.1 DMV Initialization frequencies    </a></li>
-<li><a href="#sec-1.4.2">1.4.2 DMV Initialization probabilities from initialization frequency    </a></li>
-<li><a href="#sec-1.4.3">1.4.3 CCM Initialization    </a></li>
-</ul>
-</li>
-<li><a href="#sec-1.5">1.5 Adjacency and combining it with inner()</a></li>
-<li><a href="#sec-1.6">1.6 Is the E-step in DMV just inner() on the full sentence? </a></li>
-<li><a href="#sec-1.7">1.7 [#C] Corpus access</a></li>
-<li><a href="#sec-1.8">1.8 How do we interpret DMV as an inside/outside process?   </a></li>
-<li><a href="#sec-1.9">1.9 Technical: sentences or rules as the "outer loop"?</a></li>
-<li><a href="#sec-1.10">1.10 CCM-stuff</a></li>
-<li><a href="#sec-1.11">1.11 How do we know whether we are 'adjacent' or not? </a></li>
-</ul>
-</li>
-<li><a href="#sec-2">2 Python-stuff</a></li>
-</ul>
-</div>
-</div>
-
-<div id="outline-container-1" class="outline-2">
-<h2 id="sec-1">1 dmvccm</h2>
-<div id="text-1">
-
-<p><span class="timestamp-kwd">DEADLINE: </span> <span class="timestamp">2008-06-30 Mon</span><br/>
-(But absolute, extended, really-quite-dead-now deadline: August 31&hellip;)
-<a href="src/dmv.py">dmv.py</a>
-<a href="src/io.py">io.py</a>
-</p>
-</div>
-
-<div id="outline-container-1.1" class="outline-3">
-<h3 id="sec-1.1">1.1 <span class="todo">TODO</span> [#A] P<sub>STOP</sub></h3>
-<div id="text-1.1">
-
-<p><a href="src/dmv.py">dmv-P_STOP</a>
-</p>
-</div>
-
-<div id="outline-container-1.1.1" class="outline-4">
-<h4 id="sec-1.1.1">1.1.1 Remember: The P<sub>STOP</sub> formula is upside-down (left-to-right also)</h4>
-<div id="text-1.1.1">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.1.2" class="outline-4">
-<h4 id="sec-1.1.2">1.1.2 How is the P<sub>STOP</sub> formula different given other values for dir and adj?</h4>
-<div id="text-1.1.2">
-
-<p>(Presumably, the P<sub>STOP</sub> formula where STOP is True is just the
-rule-probability of <u>h</u> -&gt; STOP h_ or h_ -&gt; h STOP, but how does
-adjacency fit in here?)
-</p>
-<p>
-(And P<sub>STOP</sub>(-STOP|&hellip;) = 1 - P<sub>STOP</sub>(STOP|&hellip;) )
-</p></div>
-</div>
-
-</div>
-
-<div id="outline-container-1.2" class="outline-3">
-<h3 id="sec-1.2">1.2 <span class="todo">TODO</span> P<sub>CHOOSE</sub></h3>
-<div id="text-1.2">
-
-<p>Write the formulas! should be easy?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.3" class="outline-3">
-<h3 id="sec-1.3">1.3 <span class="todo">TOGROK</span> Some (tagged) sentences are bound to come twice             &nbsp;&nbsp;&nbsp;<span class="tag">OPTIMIZE</span></h3>
-<div id="text-1.3">
-
-<p>Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
-['vbd','nn','det','nn'],
-['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
-(['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-</p>
-<p>
-Is there much to gain here?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.4" class="outline-3">
-<h3 id="sec-1.4">1.4 Initialization   </h3>
-<div id="text-1.4">
-
-<p><a href="/Users/kiwibird/Documents/Skole/V08/Probability/dmvccm/src/dmv.py">dmv-inits</a>
-we Do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-</p>
-</div>
-
-<div id="outline-container-1.4.1" class="outline-4">
-<h4 id="sec-1.4.1">1.4.1 <span class="done">DONE</span> DMV Initialization frequencies    </h4>
-<div id="text-1.4.1">
-
-<p><span class="timestamp-kwd">CLOSED: </span> <span class="timestamp">2008-05-27 Tue 20:04</span><br/>
-</p>
-</div>
-
-<div id="outline-container-1.4.1.1" class="outline-5">
-<h5 id="sec-1.4.1.1">1.4.1.1 P<sub>STOP</sub>    </h5>
-<div id="text-1.4.1.1">
-
-<p>P<sub>STOP</sub> is not well defined by K&amp;M. One possible interpretation given
-the sentence [det nn vb nn] is
-</p><ul>
-<li>
-f<sub>STOP</sub>( STOP|det, L, adj) +1
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, L, adj) +0  
-</li>
-<li>
-f<sub>STOP</sub>( STOP|det, L, non<sub>adj</sub>) +1
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, L, non<sub>adj</sub>) +0
-</li>
-<li>
-f<sub>STOP</sub>( STOP|det, R, adj) +0
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|det, R, adj) +1
-
-</li>
-<li>
-f<sub>STOP</sub>( STOP|nn, L, adj) +0
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|nn, L, adj) +1
-</li>
-<li>
-f<sub>STOP</sub>( STOP|nn, L, non<sub>adj</sub>) +1  # since there's at least one to the left
-</li>
-<li>
-f<sub>STOP</sub>(-STOP|nn, L, non<sub>adj</sub>) +0
-
-</li>
-</ul></div>
-
-</div>
-
-<div id="outline-container-1.4.1.2" class="outline-5">
-<h5 id="sec-1.4.1.2">1.4.1.2 P<sub>CHOOSE</sub></h5>
-<div id="text-1.4.1.2">
-
-<p>Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-</p><ul>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/1 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(vb|det, R) +1/2 + C
-</li>
-<li>
-f<sub>CHOOSE</sub>(nn|det, R) +1/3 + C
-<ul>
-<li>
-If this were the full corpus, P<sub>CHOOSE</sub>(nn|det, R) would have
-(1+1/3+2C) / sum<sub>a</sub> f<sub>CHOOSE</sub>(a|det, R)
-
-</li>
-</ul></li>
-</ul>
-<p>The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus&hellip;
-</p></div>
-</div>
-
-</div>
-
-<div id="outline-container-1.4.2" class="outline-4">
-<h4 id="sec-1.4.2">1.4.2 <span class="todo">TOGROK</span> DMV Initialization probabilities from initialization frequency    </h4>
-<div id="text-1.4.2">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.4.3" class="outline-4">
-<h4 id="sec-1.4.3">1.4.3 <span class="todo">TOGROK</span> CCM Initialization    </h4>
-<div id="text-1.4.3">
-
-<p>P<sub>SPLIT</sub> used here&hellip; how, again?
-</p>
-
-
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-1.5" class="outline-3">
-<h3 id="sec-1.5">1.5 <span class="todo">TOGROK</span> Adjacency and combining it with inner()</h3>
-<div id="text-1.5">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.6" class="outline-3">
-<h3 id="sec-1.6">1.6 <span class="todo">TOGROK</span> Is the E-step in DMV just inner() on the full sentence? </h3>
-<div id="text-1.6">
-
-<p>and What exactly is the M-step of DMV? 
-</p>
-</div>
-
-</div>
-
-<div id="outline-container-1.7" class="outline-3">
-<h3 id="sec-1.7">1.7 <span class="todo">TODO</span> [#C] Corpus access</h3>
-<div id="text-1.7">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.8" class="outline-3">
-<h3 id="sec-1.8">1.8 <span class="todo">TOGROK</span> How do we interpret DMV as an inside/outside process?   </h3>
-<div id="text-1.8">
-
-<p>c<sub>s</sub>(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P<sub>STOP</sub> and P<sub>CHOOSE</sub>, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-</p>
-</div>
-
-</div>
-
-<div id="outline-container-1.9" class="outline-3">
-<h3 id="sec-1.9">1.9 Technical: sentences or rules as the "outer loop"?</h3>
-<div id="text-1.9">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.10" class="outline-3">
-<h3 id="sec-1.10">1.10 CCM-stuff</h3>
-<div id="text-1.10">
-
-</div>
-
-</div>
-
-<div id="outline-container-1.11" class="outline-3">
-<h3 id="sec-1.11">1.11 <span class="done">DONE</span> How do we know whether we are 'adjacent' or not? </h3>
-<div id="text-1.11">
-
-
-</div>
-
-<div id="outline-container-1.11.0.1" class="outline-5">
-<h5 id="sec-1.11.0.1">1.11.0.1 One configuration that I'm fairly certain of: right w/CHOOSE</h5>
-<div id="text-1.11.0.1">
-
-<p>if we have 
-\Tree [<sub>b</sub> [<sub>b</sub> b <u>c</u> ] <u>d</u> ] 
-then the lower tree [<sub>b</sub> b <u>c</u> ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [<sub>b</sub> [<sub>b</sub> &hellip; ] <u>d</u> ] is non-adjacent, since there is something in
-between&hellip; Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-</p><ul>
-<li id="sec-1.11.0.1.1">Implementing this:<br/>
-Two different DMVRules? Or just two different prob-values per rule?
-</li>
-</ul>
-</div>
-
-</div>
-
-<div id="outline-container-1.11.0.2" class="outline-5">
-<h5 id="sec-1.11.0.2">1.11.0.2 left w/CHOOSE</h5>
-<div id="text-1.11.0.2">
-
-<p>Same deal here?
-</p></div>
-
-</div>
-
-<div id="outline-container-1.11.0.3" class="outline-5">
-<h5 id="sec-1.11.0.3">1.11.0.3 R/L without CHOOSE, the "sealing operations"</h5>
-<div id="text-1.11.0.3">
-
-<p><u>h</u> -&gt; STOP h_ and h_ -&gt; h STOP
-</p>
-<p>
-What is "adjacency" here? That t - s == 1?
-</p>
-
-
-
-</div>
-</div>
-</div>
-
-</div>
-
-<div id="outline-container-2" class="outline-2">
-<h2 id="sec-2">2 Python-stuff</h2>
-<div id="text-2">
-
-<ul>
-<li>
-<a href="src/pseudo.py">pseudo.py</a>
-</li>
-<li>
-<a href="http://nltk.org/doc/en/structured-programming.html">http://nltk.org/doc/en/structured-programming.html</a> recursive dynamic
-</li>
-<li>
-<a href="http://nltk.org/doc/en/advanced-parsing.html">http://nltk.org/doc/en/advanced-parsing.html</a> 
-
-
-</li>
-</ul>
-</div>
-</div>
-<div id="postamble"><p class="author"> Author: Kevin Brubeck Unhammer
-<a href="mailto:K.BrubeckUnhammer at student uva nl ">&lt;K.BrubeckUnhammer at student uva nl &gt;</a>
-</p>
-<p class="date"> Date: 2008/05/27 20:07:11</p>
-</div><p class="postamble">Skrive vha. emacs + <a href='http://orgmode.org/'>org-mode</a></p></body>
-</html>
diff --git a/DMVCCM.org.~10~ b/DMVCCM.org.~10~
deleted file mode 100755 (executable)
index 362417f..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_0->a_1,
-then b is non-adjacent to a_0 and should use probN (for the LRStop and
-the attachment of a_0), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_1->a_0 for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), parametrize for an extra pair of boolean values for whether
-  or not we've attached anything to the left or right yet. So now, e()
-  has a chart of the form [s, t, LHS, Lattach, Rattach], and of course
-  e(s,t,LHS) is the sum of the four possible values for
-  (Lattach,Rattach). This makes e() lots more complex and DMV-specific
-  though, so it's been rewritten in inner_dmv() in dmv.py.
-*** TODO document this adjacency stuff better
-*** TODO test and debug my brilliant idea
-*** DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-*** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-** TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_STOP formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P_STOP updates:
-- b[(NOBAR, n_h), 'h'] = 1.0       # always
-- b[(RBAR, n_h), 'h'] = h_ .probA  # h_ is RBAR stop rule
-- b[(LRBAR, n_h), 'h'] = h_ .probA * _ h_ .probA
-
-*** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_STOP(-STOP|...) = 1 - P_STOP(STOP|...) )
-** TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-** Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-*** TODO Separate initialization to another file?                    :PRETTIER:
-(It's rather messy.)
-*** TOGROK CCM Initialization    
-P_SPLIT used here... how, again?
-*** DONE DMV Initialization probabilities
-(from initialization frequency)
-*** DONE DMV Initialization frequencies    
-    CLOSED: [2008-05-27 Tue 20:04]
-**** P_STOP    
-P_STOP is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-- f_STOP( STOP|det, L, adj) +1
-- f_STOP(-STOP|det, L, adj) +0  
-- f_STOP( STOP|det, L, non_adj) +1
-- f_STOP(-STOP|det, L, non_adj) +0
-- f_STOP( STOP|det, R, adj) +0
-- f_STOP(-STOP|det, R, adj) +1
-
-- f_STOP( STOP|nn, L, adj) +0
-- f_STOP(-STOP|nn, L, adj) +1
-- f_STOP( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-- f_STOP(-STOP|nn, L, non_adj) +0
-
-**** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_CHOOSE(nn|det, R) +1/1 + C
-- f_CHOOSE(vb|det, R) +1/2 + C
-- f_CHOOSE(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_CHOOSE(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_CHOOSE(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-** [#C] Deferred
-*** TODO when reestimating P_STOP etc, remove rules with p < epsilon  :OPTIMIZE:
-*** TODO inner_dmv, short ranges and impossible attachment           :OPTIMIZE:
-If s-t <= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-If s-t <= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-*** TOGROK Some (tagged) sentences are bound to come twice           :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-*** TOGROK tags as numbers or tags as strings?                               :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-*** TOGROK Is the E-step in DMV just inner() on the full sentence? 
-and What exactly is the M-step of DMV? 
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-*** TODO Corpus access
-*** TOGROK sentences or rules as the "outer loop"?                   :OPTIMIZE:
-In regard to the E/M-step, finding P_STOP, P_CHOOSE.
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org.~11~ b/DMVCCM.org.~11~
deleted file mode 100755 (executable)
index ab825f2..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3 ^:{}
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_{0}->a_{1},
-then b is non-adjacent to a_{0} and should use probN (for the LRStop and
-the attachment of a_{0}), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_{1}->a_{0} for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), parametrize for an extra pair of boolean values for whether
-  or not we've attached anything to the left or right yet ("yet"
-  meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-  Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-  possible values for (Lattach,Rattach). This makes e() lots more
-  complex and DMV-specific though, so it's been rewritten in
-  inner_dmv() in dmv.py.
-*** TODO document this adjacency stuff better
-*** TODO test and debug my brilliant idea
-*** DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-*** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-** TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_{STOP} formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P_{STOP} updates:
-- b[(NOBAR, n_{h}), 'h'] = 1.0       # always
-- b[(RBAR, n_{h}), 'h'] = h_.probA  # h_ is RBAR stop rule
-- b[(LRBAR, n_{h}), 'h'] = h_.probA * _ h_.probA
-
-*** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_{STOP} formula where STOP is True is just the
-rule-probability of _ h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_{STOP}(-STOP|...) = 1 - P_{STOP}(STOP|...) )
-** TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-** Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-*** TODO Separate initialization to another file?                    :PRETTIER:
-(It's rather messy.)
-*** TOGROK CCM Initialization    
-P_{SPLIT} used here... how, again?
-*** DONE DMV Initialization probabilities
-(from initialization frequency)
-*** DONE DMV Initialization frequencies    
-    CLOSED: [2008-05-27 Tue 20:04]
-**** P_STOP    
-P_{STOP} is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-: f_{STOP}( STOP|det, L, adj) +1
-: f_{STOP}(-STOP|det, L, adj) +0  
-: f_{STOP}( STOP|det, L, non_adj) +1
-: f_{STOP}(-STOP|det, L, non_adj) +0
-: f_{STOP}( STOP|det, R, adj) +0
-: f_{STOP}(-STOP|det, R, adj) +1
-:
-: f_{STOP}( STOP|nn, L, adj) +0
-: f_{STOP}(-STOP|nn, L, adj) +1
-: f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-: f_{STOP}(-STOP|nn, L, non_adj) +0
-***** TODO tweak
-# <<pstoptweak>>
-:            f[head,  'STOP', 'LN'] += (i_h <= 1)     # first two words
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1)     
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-:            f[head,  'STOP', 'RN'] += (i_h >= n - 2) # last two words
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) 
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-vs
-:            # this one requires some additional rewriting since it
-:            # introduces divisions by zero
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1) # not first two
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) # not last two
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs 
-"all words take the same number of arguments" interpreted as
-:for all heads:
-:    p_STOP(head, 'STOP', 'LN') = 0.3
-:    p_STOP(head, 'STOP', 'LA') = 0.5
-:    p_STOP(head, 'STOP', 'RN') = 0.4
-:    p_STOP(head, 'STOP', 'RA') = 0.7
-(which we easily may tweak in init_zeros())
-**** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_{CHOOSE}(nn|det, R) +1/1 + C
-- f_{CHOOSE}(vb|det, R) +1/2 + C
-- f_{CHOOSE}(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_{CHOOSE}(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_{CHOOSE}(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-** [#C] Deferred
-*** TODO inner_dmv() should disregard rules with heads not in sent    :OPTIMIZE:
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-: rule.head() not in "nn vbd det nn".split()
-Also, we optimize this further by saying we don't even look at rules
-where
-: rule.head() not in sent[ s :r+1]
-: rule.head() not in sent[r+1:t+1]
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-
-Since STOP rules necessarily come from attachment rules, this ensures
-we don't end up with pointless STOP rules either, and if we /started/
-with a pointless, we nevertheless stop at the first rewrite-round
-(although we could also make that check in the first call to e()).
-*** TODO when reestimating P_STOP etc, remove rules with p < epsilon  :OPTIMIZE:
-*** TODO inner_dmv, short ranges and impossible attachment           :OPTIMIZE:
-If s-t <= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-If s-t <= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-*** TOGROK Some (tagged) sentences are bound to come twice           :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-*** TOGROK tags as numbers or tags as strings?                               :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-** Expectation Maximation in IO/DMV-terms
-inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-: h  -> h  _a_
-: h_ -> h_ _a_
-
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-
-*** TODO Corpus access
-*** TOGROK sentences or rules as the "outer loop"?                   :OPTIMIZE:
-In regard to the E/M-step, finding P_{STOP}, P_{CHOOSE}.
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org.~12~ b/DMVCCM.org.~12~
deleted file mode 100755 (executable)
index f67aeb2..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+OPTIONS: H:4 toc:3 ^:{}
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-* TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_{0}->a_{1},
-then b is non-adjacent to a_{0} and should use probN (for the LRStop and
-the attachment of a_{0}), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_{1}->a_{0} for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), parametrize for an extra pair of boolean values for whether
-  or not we've attached anything to the left or right yet ("yet"
-  meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-  Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-  possible values for (Lattach,Rattach). This makes e() lots more
-  complex and DMV-specific though, so it's been rewritten in
-  inner_dmv() in dmv.py.
-** TODO document this adjacency stuff better
-** TODO test and debug my brilliant idea
-** DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-* TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_{STOP} formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P_{STOP} updates:
-- b[(NOBAR, n_{h}), 'h'] = 1.0       # always
-- b[(RBAR, n_{h}), 'h'] = h_.probA  # h_ is RBAR stop rule
-- b[(LRBAR, n_{h}), 'h'] = h_.probA * _ h_.probA
-
-** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_{STOP} formula where STOP is True is just the
-rule-probability of _ h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_{STOP}(-STOP|...) = 1 - P_{STOP}(STOP|...) )
-* TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-* Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-** TODO Separate initialization to another file?                     :PRETTIER:
-(It's rather messy.)
-** TOGROK CCM Initialization    
-P_{SPLIT} used here... how, again?
-** DONE DMV Initialization probabilities
-(from initialization frequency)
-** DONE DMV Initialization frequencies    
-   CLOSED: [2008-05-27 Tue 20:04]
-*** P_STOP    
-P_{STOP} is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-: f_{STOP}( STOP|det, L, adj) +1
-: f_{STOP}(-STOP|det, L, adj) +0  
-: f_{STOP}( STOP|det, L, non_adj) +1
-: f_{STOP}(-STOP|det, L, non_adj) +0
-: f_{STOP}( STOP|det, R, adj) +0
-: f_{STOP}(-STOP|det, R, adj) +1
-:
-: f_{STOP}( STOP|nn, L, adj) +0
-: f_{STOP}(-STOP|nn, L, adj) +1
-: f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-: f_{STOP}(-STOP|nn, L, non_adj) +0
-**** TODO tweak
-# <<pstoptweak>>
-:            f[head,  'STOP', 'LN'] += (i_h <= 1)     # first two words
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1)     
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-:            f[head,  'STOP', 'RN'] += (i_h >= n - 2) # last two words
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) 
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-vs
-:            # this one requires some additional rewriting since it
-:            # introduces divisions by zero
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1) # not first two
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) # not last two
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs 
-"all words take the same number of arguments" interpreted as
-:for all heads:
-:    p_STOP(head, 'STOP', 'LN') = 0.3
-:    p_STOP(head, 'STOP', 'LA') = 0.5
-:    p_STOP(head, 'STOP', 'RN') = 0.4
-:    p_STOP(head, 'STOP', 'RA') = 0.7
-(which we easily may tweak in init_zeros())
-*** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_{CHOOSE}(nn|det, R) +1/1 + C
-- f_{CHOOSE}(vb|det, R) +1/2 + C
-- f_{CHOOSE}(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_{CHOOSE}(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_{CHOOSE}(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-* [#C] Deferred
-** TODO inner_dmv() should disregard rules with heads not in sent     :OPTIMIZE:
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-: rule.head() not in "nn vbd det nn".split()
-This is ruled out by getting rules from g.rules(LHS, sent).
-
-Also, we optimize this further by saying we don't even recurse into
-attachment rules where
-: rule.head() not in sent[ s :r+1]
-: rule.head() not in sent[r+1:t+1]
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-** TODO when reestimating P_STOP etc, remove rules with p < epsilon   :OPTIMIZE:
-** TODO inner_dmv, short ranges and impossible attachment            :OPTIMIZE:
-If s-t <= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-If s-t <= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-** TODO clean up the module files                                    :PRETTIER:
-Is there better way to divide dmv and harmonic? There's a two-way
-dependency between the modules. Guess there could be a third file that
-imports both the initialization and the actual EM stuff, while a file
-containing constants and classes could be imported by all others:
-: dmv.py imports dmv_EM.py imports dmv_classes.py
-: dmv.py imports dmv_inits.py imports dmv_classes.py
-
-** TOGROK Some (tagged) sentences are bound to come twice            :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-** TOGROK tags as numbers or tags as strings?                        :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-* Expectation Maximation in IO/DMV-terms
-inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-: h  -> h  _a_
-: h_ -> h_ _a_
-
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-
-** TODO Corpus access
-** TOGROK sentences or rules as the "outer loop"?                    :OPTIMIZE:
-In regard to the E/M-step, finding P_{STOP}, P_{CHOOSE}.
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org.~13~ b/DMVCCM.org.~13~
deleted file mode 100755 (executable)
index 872f243..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+OPTIONS: H:4 toc:3 ^:{}
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-
-
-* dmvccm report and project
-  DEADLINE: <2008-06-30 Mon>
-But absolute, extended, really-quite-dead-now deadline: August 31...
-- [[file:src/dmv.py][dmv.py]]
-- [[file:src/io.py][io.py]]
-- [[file:src/harmonic.py::harmonic%20py%20initialization%20for%20dmv][harmonic.py]]
-* TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_{0}->a_{1},
-then b is non-adjacent to a_{0} and should use probN (for the LRStop and
-the attachment of a_{0}), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_{1}->a_{0} for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), parametrize for an extra pair of boolean values for whether
-  or not we've attached anything to the left or right yet ("yet"
-  meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-  Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-  possible values for (Lattach,Rattach). This makes e() lots more
-  complex and DMV-specific though, so it's been rewritten in
-  inner_dmv() in dmv.py.
-** TODO document this adjacency stuff better
-** TODO test and debug my brilliant idea
-** DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-* TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_{STOP} formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P_{STOP} updates:
-- b[(NOBAR, n_{h}), 'h'] = 1.0       # always
-- b[(RBAR, n_{h}), 'h'] = h_.probA  # h_ is RBAR stop rule
-- b[(LRBAR, n_{h}), 'h'] = h_.probA * _ h_.probA
-
-** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_{STOP} formula where STOP is True is just the
-rule-probability of _ h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_{STOP}(-STOP|...) = 1 - P_{STOP}(STOP|...) )
-* TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-* Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-** TODO Separate initialization to another file?                     :PRETTIER:
-(It's rather messy.)
-** TOGROK CCM Initialization    
-P_{SPLIT} used here... how, again?
-** DONE DMV Initialization probabilities
-(from initialization frequency)
-** DONE DMV Initialization frequencies    
-   CLOSED: [2008-05-27 Tue 20:04]
-*** P_STOP    
-P_{STOP} is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-: f_{STOP}( STOP|det, L, adj) +1
-: f_{STOP}(-STOP|det, L, adj) +0  
-: f_{STOP}( STOP|det, L, non_adj) +1
-: f_{STOP}(-STOP|det, L, non_adj) +0
-: f_{STOP}( STOP|det, R, adj) +0
-: f_{STOP}(-STOP|det, R, adj) +1
-:
-: f_{STOP}( STOP|nn, L, adj) +0
-: f_{STOP}(-STOP|nn, L, adj) +1
-: f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-: f_{STOP}(-STOP|nn, L, non_adj) +0
-**** TODO tweak
-# <<pstoptweak>>
-:            f[head,  'STOP', 'LN'] += (i_h <= 1)     # first two words
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1)     
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-:            f[head,  'STOP', 'RN'] += (i_h >= n - 2) # last two words
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) 
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-vs
-:            # this one requires some additional rewriting since it
-:            # introduces divisions by zero
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1) # not first two
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) # not last two
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs 
-"all words take the same number of arguments" interpreted as
-:for all heads:
-:    p_STOP(head, 'STOP', 'LN') = 0.3
-:    p_STOP(head, 'STOP', 'LA') = 0.5
-:    p_STOP(head, 'STOP', 'RN') = 0.4
-:    p_STOP(head, 'STOP', 'RA') = 0.7
-(which we easily may tweak in init_zeros())
-*** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_{CHOOSE}(nn|det, R) +1/1 + C
-- f_{CHOOSE}(vb|det, R) +1/2 + C
-- f_{CHOOSE}(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_{CHOOSE}(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_{CHOOSE}(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-* [#C] Deferred
-** TODO inner_dmv() should disregard rules with heads not in sent     :OPTIMIZE:
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-: rule.head() not in "nn vbd det nn".split()
-This is ruled out by getting rules from g.rules(LHS, sent).
-
-Also, we optimize this further by saying we don't even recurse into
-attachment rules where
-: rule.head() not in sent[ s :r+1]
-: rule.head() not in sent[r+1:t+1]
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-** TODO when reestimating P_STOP etc, remove rules with p < epsilon   :OPTIMIZE:
-** TODO inner_dmv, short ranges and impossible attachment            :OPTIMIZE:
-If s-t <= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-If s-t <= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-** TODO clean up the module files                                    :PRETTIER:
-Is there better way to divide dmv and harmonic? There's a two-way
-dependency between the modules. Guess there could be a third file that
-imports both the initialization and the actual EM stuff, while a file
-containing constants and classes could be imported by all others:
-: dmv.py imports dmv_EM.py imports dmv_classes.py
-: dmv.py imports dmv_inits.py imports dmv_classes.py
-
-** TOGROK Some (tagged) sentences are bound to come twice            :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-** TOGROK tags as numbers or tags as strings?                        :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-* Expectation Maximation in IO/DMV-terms
-inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-: h  -> h  _a_
-: h_ -> h_ _a_
-
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-
-** TODO Corpus access
-** TOGROK sentences or rules as the "outer loop"?                    :OPTIMIZE:
-In regard to the E/M-step, finding P_{STOP}, P_{CHOOSE}.
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org.~14~ b/DMVCCM.org.~14~
deleted file mode 100755 (executable)
index e30cc76..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+OPTIONS: ^:{} H:4 toc:3
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM -- todo-list / progress
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-
-
-* dmvccm report and project
-  DEADLINE: <2008-06-30 Mon>
-But absolute, extended, really-quite-dead-now deadline: August
-31... 
-- [[file:src/dmv.py][dmv.py]]
-- [[file:src/io.py][io.py]]
-- [[file:src/harmonic.py::harmonic%20py%20initialization%20for%20dmv][harmonic.py]]
-* TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_{0}->a_{1},
-then b is non-adjacent to a_{0} and should use probN (for the LRStop and
-the attachment of a_{0}), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_{1}->a_{0} for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), parametrize for an extra pair of boolean values for whether
-  or not we've attached anything to the left or right yet ("yet"
-  meaning "below"). So now, e() has a chart of the form [s, t, LHS,
-  Lattach, Rattach], and of course e(s,t,LHS) is the sum of the four
-  possible values for (Lattach,Rattach). This makes e() lots more
-  complex and DMV-specific though, so it's been rewritten in
-  inner_dmv() in dmv.py.
-** TODO document this adjacency stuff better
-** TODO test and debug my brilliant idea
-** DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-* TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_{STOP} formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-
-Remember: Initialization makes some "short-cut" rules, these will also
-have to be updated along with the other P_{STOP} updates:
-- b[(NOBAR, n_{h}), 'h'] = 1.0       # always
-- b[(RBAR, n_{h}), 'h'] = h_.probA  # h_ is RBAR stop rule
-- b[(LRBAR, n_{h}), 'h'] = h_.probA * _ h_.probA
-
-** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_{STOP} formula where STOP is True is just the
-rule-probability of _ h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_{STOP}(-STOP|...) = 1 - P_{STOP}(STOP|...) )
-* TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-* Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-** TODO Separate initialization to another file?                     :PRETTIER:
-(It's rather messy.)
-** TOGROK CCM Initialization    
-P_{SPLIT} used here... how, again?
-** DONE DMV Initialization probabilities
-(from initialization frequency)
-** DONE DMV Initialization frequencies    
-   CLOSED: [2008-05-27 Tue 20:04]
-*** P_STOP    
-P_{STOP} is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-: f_{STOP}( STOP|det, L, adj) +1
-: f_{STOP}(-STOP|det, L, adj) +0  
-: f_{STOP}( STOP|det, L, non_adj) +1
-: f_{STOP}(-STOP|det, L, non_adj) +0
-: f_{STOP}( STOP|det, R, adj) +0
-: f_{STOP}(-STOP|det, R, adj) +1
-:
-: f_{STOP}( STOP|nn, L, adj) +0
-: f_{STOP}(-STOP|nn, L, adj) +1
-: f_{STOP}( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-: f_{STOP}(-STOP|nn, L, non_adj) +0
-**** TODO tweak
-# <<pstoptweak>>
-:            f[head,  'STOP', 'LN'] += (i_h <= 1)     # first two words
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1)     
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # very first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0)     
-:            f[head,  'STOP', 'RN'] += (i_h >= n - 2) # last two words
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) 
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1) # very last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) 
-vs
-:            # this one requires some additional rewriting since it
-:            # introduces divisions by zero
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h <= 1) # not first two
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h >= n - 2) # not last two
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs
-:            f[head,  'STOP', 'LN'] += (i_h == 1)     # second word
-:            f[head, '-STOP', 'LN'] += (not i_h == 1) # not second
-:            f[head,  'STOP', 'LA'] += (i_h == 0)     # first word
-:            f[head, '-STOP', 'LA'] += (not i_h == 0) # not first
-:            f[head,  'STOP', 'RN'] += (i_h == n - 2)     # second-to-last
-:            f[head, '-STOP', 'RN'] += (not i_h == n - 2) # not second-to-last
-:            f[head,  'STOP', 'RA'] += (i_h == n - 1)     # last word
-:            f[head, '-STOP', 'RA'] += (not i_h == n - 1) # not last
-vs 
-"all words take the same number of arguments" interpreted as
-:for all heads:
-:    p_STOP(head, 'STOP', 'LN') = 0.3
-:    p_STOP(head, 'STOP', 'LA') = 0.5
-:    p_STOP(head, 'STOP', 'RN') = 0.4
-:    p_STOP(head, 'STOP', 'RA') = 0.7
-(which we easily may tweak in init_zeros())
-*** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_{CHOOSE}(nn|det, R) +1/1 + C
-- f_{CHOOSE}(vb|det, R) +1/2 + C
-- f_{CHOOSE}(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_{CHOOSE}(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_{CHOOSE}(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-* [#C] Deferred
-** TODO inner_dmv() should disregard rules with heads not in sent     :OPTIMIZE:
-If the sentence is "nn vbd det nn", we should not even look at rules
-where
-: rule.head() not in "nn vbd det nn".split()
-This is ruled out by getting rules from g.rules(LHS, sent).
-
-Also, we optimize this further by saying we don't even recurse into
-attachment rules where
-: rule.head() not in sent[ s :r+1]
-: rule.head() not in sent[r+1:t+1]
-meaning, if we're looking at the span "vbd det", we only use
-attachment rules where both daughters are members of ['vbd','det']
-(although we don't (yet) care about removing rules that rewrite to the
-same tag if there are no duplicate tags in the span, etc., that would
-be a lot of trouble for little potential gain).
-** TODO when reestimating P_STOP etc, remove rules with p < epsilon   :OPTIMIZE:
-** TODO inner_dmv, short ranges and impossible attachment            :OPTIMIZE:
-If s-t <= 2, there can be only one attachment below, so don't recurse
-with both Lattach=True and Rattach=True.
-
-If s-t <= 1, there can be no attachment below, so only recurse with
-Lattach=False, Rattach=False.
-
-Put this in the loop under rewrite rules (could also do it in the STOP
-section, but that would only have an effect on very short sentences).
-** TODO clean up the module files                                    :PRETTIER:
-Is there better way to divide dmv and harmonic? There's a two-way
-dependency between the modules. Guess there could be a third file that
-imports both the initialization and the actual EM stuff, while a file
-containing constants and classes could be imported by all others:
-: dmv.py imports dmv_EM.py imports dmv_classes.py
-: dmv.py imports dmv_inits.py imports dmv_classes.py
-
-** TOGROK Some (tagged) sentences are bound to come twice            :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-** TOGROK tags as numbers or tags as strings?                        :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-* Expectation Maximation in IO/DMV-terms
-inner(s,t,LHS) calculates the expected number of trees headed by LHS
-from s to t (sentence positions). This uses the P_STOP and P_CHOOSE
-values, which have been conveniently distributed into CNF rules as
-probN and probA (non-adjacent and adjacent probabilites).
-
-When re-estimating, we use the expected values from inner() to get new
-values for P_STOP and P_CHOOSE. When we've re-estimated for the entire
-corpus, we distribute P_STOP and P_CHOOSE into the CNF rules again, so
-that in the next round we use new probN and probA to find
-inner-probabilites.
-
-The distribution of P_STOP and P_CHOOSE into CNF rules also happens in
-init_normalize() (here along with the creation of P_STOP and
-P_CHOOSE); P_STOP is used to create CNF rules where one branch of the
-rule is STOP, P_CHOOSE is used to create rules of the form 
-: h  -> h  _a_
-: h_ -> h_ _a_
-
-Since "adjacency" is not captured in regular CNF rules, we need two
-probabilites for each rule, and inner() has to know when to use which.
-
-** TODO Corpus access
-** TOGROK sentences or rules as the "outer loop"?                    :OPTIMIZE:
-In regard to the E/M-step, finding P_{STOP}, P_{CHOOSE}.
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org.~1~ b/DMVCCM.org.~1~
deleted file mode 100755 (executable)
index 35d4134..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: PUGGE(p) SPML(s) NORGLISH(n) DEFINISJON(d) INNLEVERING(i)
-#+STARTUP: hidestars
-#+TITLE: PG-DOP (and Beyond!)
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: nn
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:dmvccm/src/dmv.py][dmv.py]]
-[[file:dmvccm/src/io.py][io.py]]
-** TODO [#A] DMV-probabilities   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::DMV%20probabilities][dmv.py]]
-** TOGROK Initialization   
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-
-** Meet Yoav again about dmvccm
-   SCHEDULED: <2008-05-26 Mon>
-13:30, P3.21.
-
-Questions:
-*** Initialization
-*** Corpus access?
-*** How do we interpret DMV as an inside/outside process?
-The upside-down P_STOP formula (left-to-right also)
-c_s(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P_STOP and P_CHOOSE, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-
-
-
-
-
-* Python-stuff
-[[file:dmvccm/src/pseudo.py][pseudo.py]]
-
-[[file:~/org/gtd.org::*Python][Python-notat]] i gtd.org
-~/downloads/undecided/diveintopython-5.4/py/[[file:~/downloads/undecided/diveintopython-5.4/py/odbchelper.py][odbchelper.py]]
-[[file:/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/nltk]]
-
-http://nltk.org/doc/en/structured-programming.html recursive dynamic
-http://nltk.org/doc/en/advanced-parsing.html 
-
-
-* DONE [#A] Presentasjon av Klein & Manning-artiklar
-  DEADLINE: <2008-03-10 Mon> CLOSED: [2008-03-12 Wed 17:36]
-[[file:DMV/k_m_presentation/dependency_induction_notes.org::Weak%20vs%20strong%20generative%20capacity%20of%20models%20improving%20models%20over][notes]]
-[[file:DMV/k_m_presentation/dependency_induction.pdf][presentasjon]]
-
-
-
-* F1, P, R
-P = korrekte resultat fått / alle resultat fått, 
-dvs. P = (relevante snitt gjenhenta) / gjenhenta,
-positiv prediktiv verdi.
-
-R = korrekte resultat fått / resultat ein skulle fått,
-dvs. R = (relevante snitt gjenhenta) / relevante,
-sensitivitet.
-
-F1 = (2 * P * R)/(P + R), harmonisk snitt av P og R
-
-
-
-* EM-tutorial
-EM = Expectation Maximation
-** Relativ frekvensestimat
-_Relativ Frekvensestimat_ (RFE) er berre basert på faktisk observerte
-utfall, uobserverte har P=0 (utvalet er ukomplett). Me kan nytte
-_dekomposisjon_ for å tilnærme oss den faktiske distribusjonen, t.d. REF
-for kvar terning i staden for alle 20 som blir kasta sameleis (her
-føreset me at terningane er _uavhengige_), eller t.d. ved å definere ein
-språkmodell (n-gram, PCFG) som gir positivt sannsyn til uobserverte
-utfall.
-
-RFE på korpuset f: X → R er: \\
-~p: X → [0, 1] kor ~p = f(x) / |f|
-
-** Modellar og MLE
-Den _uavgrensa modellen_ /M(X)/ på /X/ er mengda av alla
-sannsynsdistribusjonar på /X/. Ei ikkje-tom mengd /M/ av
-sannsynsdistribusjonar på ei typemengd /X/ er ein _sannsynsmodell_ på /X/.
-
-Gitt f og /M/ vil me finne den «beste» instansen av /M/ som skildrar
-f. _Korpussannsynet_ L(f; p) kor p er ein sannsynsdistribusjon (strengt
-teke ein pmf?) er: \\
-L(f; p) = ∏_{x∈X} p(x)^{f(x)}
-
-^p ∈ /M/ er ein _sannsynsmaksimeringsestimator_ («Maximum Likelihood
-Estimate», MLE) for /M/ på /f/ viss han maksimerer korpussannsynet:\\
-L(f; ^p) = max_{p∈M} L(f; p)
-
-** MLE for PCFG-ar
-i M-steget av EM finn me 
-
-^p_A(r) = f_A(r) / |f_A| = f(r) / ∑_{r∈G_A} f(r),
-
-dvs., det oppdaterte sannsynet til kvar regel er regelfrekvens delt på
-tal på reglar med same lhs.
-** Entropi
-D(p||q), _Kullback-Leibler-divergens_, aka _relativ entropi_, er definert
-slik:\\
-for p, q ∈ /M(X)/: D(p||q) = ∑_{x∈X} p(x) log(p(x)/q(x)) \\
-eller D(p||q) = ∑_{x∈X} p(x) (log p(x) - log q(x)) \\
-eller D(p||q) = E_p (log p(x) - log q(x))
-
-(kor E_p er forventinga om p(x) og x∈X)
-
-Teorem (=Gibb='s Ulikskap, informasjonsulikskap): \\
-D(p||q) >= 0 ⋀ ( D(p||q) = 0 ↔ p=q )
-
-Teorem: ~p er RFE på /f/. ^p € /M/ er MLE til /M/ på /f/ viss og berre viss:
-\\
-D(~p||^p) = min_{p€M} D(~p||p)
-
-MLE treng ikkje vere unik eller ei gong finnast, men viss ~p € /M/ så er
-~p den unike MLE (men oftast vil modellane våre utelukke RFE sidan RFE
-gir ~p=0 til uobserverte utfall, og treningskorpuset har aldri alle
-moglege utfall).
-
-** PCFG-døme
-G er ein CFG og G_A = {r ∈ G : lhs(r) = A}; X er trea generert av G.\\
-f_r(x) er kor mange gonger regel r førekjem i tre x.
-
-M_G = { p ∈ M(X) : p(x) = p(x) ∏_{r∈G} p(r)^{f_r(x)} slik at ∑_{r∈G_A} p(r)=1 }
-
-f_T er eit korpus over X, og f er det induserte korpuset over reglar i
-G:\\
-f(r) = ∑_{x∈X} f_T(x) f_r(x)
-
-Så regelfrekvens = trefrekvens(x) * regelfrekvens_per_tre(x); f(r) er
-regelfrekvensen i det induserte korpuset.
-
-f_A(r) = { f(r) viss r ∈ G_A, elles 0 }
-
-Så ∑_{r∈G_NP} f_NP(r) gir tal på reglar frå NP til foo. 
-
-Korpussannsyn:\\
-L(f_T; p) = ∏_{r∈G} p(r)^f(r) \\
-L(f_T; p) = ∏_A ∏_{r∈G_A} p(r)^f(r) \\
-L(f_T; p) = ∏_A L(f_A; p)
-
-Kvar L(f_A; p) kan maksimerast vha. RFE, som vanlegvis gir positivt
-sannsyn for tre som ikkje er i f_T, så dette er /ikkje/ det relative
-frekvensestimatet på f_T. 
-
-
diff --git a/DMVCCM.org.~2~ b/DMVCCM.org.~2~
deleted file mode 100755 (executable)
index 7043926..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: OPTIMIZE 
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO [#A] P_STOP
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-*** Remember: The P_STOP formula is upside-down (left-to-right also)
-*** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_STOP(-STOP|...) = 1 - P_STOP(STOP|...) )
-** TODO P_CHOOSE
-Write the formulas! should be easy?
-** TOGROK Some (tagged) sentences are bound to come twice            :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-** Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-*** DONE DMV Initialization frequencies    
-    CLOSED: [2008-05-27 Tue 20:04]
-**** P_STOP    
-P_STOP is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-- f_STOP( STOP|det, L, adj) +1
-- f_STOP(-STOP|det, L, adj) +0  
-- f_STOP( STOP|det, L, non_adj) +1
-- f_STOP(-STOP|det, L, non_adj) +0
-- f_STOP( STOP|det, R, adj) +0
-- f_STOP(-STOP|det, R, adj) +1
-
-- f_STOP( STOP|nn, L, adj) +0
-- f_STOP(-STOP|nn, L, adj) +1
-- f_STOP( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-- f_STOP(-STOP|nn, L, non_adj) +0
-
-**** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_CHOOSE(nn|det, R) +1/1 + C
-- f_CHOOSE(vb|det, R) +1/2 + C
-- f_CHOOSE(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_CHOOSE(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_CHOOSE(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-*** TOGROK DMV Initialization probabilities (from initialization frequency)
-*** TOGROK CCM Initialization    
-P_SPLIT used here... how, again?
-
-
-
-** TOGROK Adjacency and combining it with inner()
-** TOGROK Is the E-step in DMV just inner() on the full sentence? 
-and What exactly is the M-step of DMV? 
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-** TODO [#C] Corpus access
-** TOGROK How do we interpret DMV as an inside/outside process?   
-c_s(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P_STOP and P_CHOOSE, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-
-** Technical: sentences or rules as the "outer loop"?
-** CCM-stuff
-** DONE How do we know whether we are 'adjacent' or not? 
-**** One configuration that I'm fairly certain of: right w/CHOOSE
-if we have 
-\Tree [_b [_b b _c_ ] _d_ ] 
-then the lower tree [_b b _c_ ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [_b [_b ... ] _d_ ] is non-adjacent, since there is something in
-between... Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-***** Implementing this:
-Two different DMVRules? Or just two different prob-values per rule?
-**** left w/CHOOSE
-Same deal here?
-**** R/L without CHOOSE, the "sealing operations"
-_h_ -> STOP h_ and h_ -> h STOP
-
-What is "adjacency" here? That t - s == 1?
-
-
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-
-
diff --git a/DMVCCM.org.~8~ b/DMVCCM.org.~8~
deleted file mode 100755 (executable)
index 94c01dd..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_0->a_1,
-then b is non-adjacent to a_0 and should use probN (for the LRStop and
-the attachment of a_0), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_1->a_0 for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), pass up an extra pair of boolean values for whether or not
-  we've attached anything to the left or right yet. So now, e() should
-  return a list of [prob, Lattach, Rattach]. Whether or not we've
-  attached anything is possible to see from the local rule and whether
-  there is attachment below.
-- Althought, this idea needed some refinement...
-*** TODO: implement my brilliant idea.
-[[file:src/io.py::def%20e%20s%20t%20LHS][e(sti) in io.py]]
-
-*** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-** TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_STOP formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-*** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_STOP(-STOP|...) = 1 - P_STOP(STOP|...) )
-** TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-** Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-*** TODO Separate initialization to another file?                    :PRETTIER:
-(It's rather messy.)
-*** TOGROK CCM Initialization    
-P_SPLIT used here... how, again?
-*** DONE DMV Initialization probabilities
-(from initialization frequency)
-*** DONE DMV Initialization frequencies    
-    CLOSED: [2008-05-27 Tue 20:04]
-**** P_STOP    
-P_STOP is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-- f_STOP( STOP|det, L, adj) +1
-- f_STOP(-STOP|det, L, adj) +0  
-- f_STOP( STOP|det, L, non_adj) +1
-- f_STOP(-STOP|det, L, non_adj) +0
-- f_STOP( STOP|det, R, adj) +0
-- f_STOP(-STOP|det, R, adj) +1
-
-- f_STOP( STOP|nn, L, adj) +0
-- f_STOP(-STOP|nn, L, adj) +1
-- f_STOP( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-- f_STOP(-STOP|nn, L, non_adj) +0
-
-**** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_CHOOSE(nn|det, R) +1/1 + C
-- f_CHOOSE(vb|det, R) +1/2 + C
-- f_CHOOSE(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_CHOOSE(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_CHOOSE(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-** [#C] Deferred
-*** TOGROK Some (tagged) sentences are bound to come twice           :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-*** TOGROK tags as numbers or tags as strings?                               :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-*** TOGROK Is the E-step in DMV just inner() on the full sentence? 
-and What exactly is the M-step of DMV? 
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-*** TODO Corpus access
-*** TOGROK sentences or rules as the "outer loop"?                   :OPTIMIZE:
-In regard to the E/M-step, finding P_STOP, P_CHOOSE.
-** TOGROK How do we know whether we are 'adjacent' or not? 
-**** One configuration that I'm fairly certain of: right w/CHOOSE
-if we have 
-\Tree [_b [_b b _c_ ] _d_ ] 
-then the lower tree [_b b _c_ ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [_b [_b ... ] _d_ ] is non-adjacent, since there is something in
-between... Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-***** Implementing this:
-Two different DMVRules? Or just two different prob-values per rule?
-**** left w/CHOOSE
-Same deal here?
-**** R/L without CHOOSE, the "sealing operations"
-_h_ -> STOP h_ and h_ -> h STOP
-
-What is "adjacency" here? That t - s == 1?
-
-
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org.~9~ b/DMVCCM.org.~9~
deleted file mode 100755 (executable)
index a3f2ad3..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: OPTIMIZE PRETTIER
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO Adjacency and combining it with inner()
-Each DMV_Rule now has both a probN and a probA, for
-adjacencies. inner() needs the correct one in each case.
-
-Adjacency gives a problem with duplicate words/tags, eg. in the
-sentence "a a b". If this has the dependency structure b->a_0->a_1,
-then b is non-adjacent to a_0 and should use probN (for the LRStop and
-the attachment of a_0), while the other rules should all use
-probA. But within the e(0,2,b) we can't just say "oh, a has index 0
-so it's not adjacent to 2", since there's also an a at index 1, and
-there's also a dependency structure b->a_1->a_0 for that. We want
-both. And in possibly much more complex versions.
-
-Ideas:
-- I first thought of decorating the individual words/tags in a
-  sentence with their indices, and perhaps just duplicating the
-  relevant rules (one for each index of the duplicate tags). But this
-  gives an explosion in attachment rules (although a contained
-  explosion, within the rules used in a sentence; but most sentences
-  will have at least two NN's so it will be a problem).
-- Then, I had a /brilliant/ idea. Just let e(), the helper function of
-  inner(), parametrize for an extra pair of boolean values for whether
-  or not we've attached anything to the left or right yet. So now, e()
-  has a chart of the form [s, t, LHS, Lattach, Rattach], and of course
-  e(s,t,LHS) is the sum of the four possible values for
-  (Lattach,Rattach). This makes e() lots more complex and DMV-specific
-  though, so it's been rewritten in inner_dmv() in dmv.py.
-*** TODO document this adjacency stuff better
-*** TODO test and debug my brilliant idea
-*** DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-*** DONE [#A] test inner() on sentences with duplicate words
-Works with eg. the sentence "h h h"
-
-
-** TODO [#A] P_STOP for IO/EM
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-Remember: The P_STOP formula is upside-down (left-to-right also).
-(In the article..not the thesis)
-*** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_STOP(-STOP|...) = 1 - P_STOP(STOP|...) )
-** TODO P_CHOOSE for IO/EM
-Write the formulas! should be easy?
-** Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-
-We do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-*** TODO Separate initialization to another file?                    :PRETTIER:
-(It's rather messy.)
-*** TOGROK CCM Initialization    
-P_SPLIT used here... how, again?
-*** DONE DMV Initialization probabilities
-(from initialization frequency)
-*** DONE DMV Initialization frequencies    
-    CLOSED: [2008-05-27 Tue 20:04]
-**** P_STOP    
-P_STOP is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-- f_STOP( STOP|det, L, adj) +1
-- f_STOP(-STOP|det, L, adj) +0  
-- f_STOP( STOP|det, L, non_adj) +1
-- f_STOP(-STOP|det, L, non_adj) +0
-- f_STOP( STOP|det, R, adj) +0
-- f_STOP(-STOP|det, R, adj) +1
-
-- f_STOP( STOP|nn, L, adj) +0
-- f_STOP(-STOP|nn, L, adj) +1
-- f_STOP( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-- f_STOP(-STOP|nn, L, non_adj) +0
-
-**** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_CHOOSE(nn|det, R) +1/1 + C
-- f_CHOOSE(vb|det, R) +1/2 + C
-- f_CHOOSE(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_CHOOSE(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_CHOOSE(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-** [#C] Deferred
-*** TOGROK Some (tagged) sentences are bound to come twice           :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-
-*** TOGROK tags as numbers or tags as strings?                               :OPTIMIZE:
-Need to clean up the representation.
-
-Stick with tag-strings in initialization then switch to numbers for
-IO-algorithm perhaps? Can probably afford more string-matching in
-initialization..
-*** TOGROK Is the E-step in DMV just inner() on the full sentence? 
-and What exactly is the M-step of DMV? 
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-*** TODO Corpus access
-*** TOGROK sentences or rules as the "outer loop"?                   :OPTIMIZE:
-In regard to the E/M-step, finding P_STOP, P_CHOOSE.
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-- http://jaynes.colorado.edu/PythonIdioms.html
-
-
diff --git a/DMVCCM.org_archive.~1~ b/DMVCCM.org_archive.~1~
deleted file mode 100644 (file)
index 1cc40d4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#    -*- mode: org -*-
-
-
-Archived entries from file /Users/kiwibird/dmvccm/DMVCCM.org
-* DONE [#A] test and debug my brilliant idea
-  CLOSED: [2008-06-08 Sun 10:28]
-  :PROPERTIES:
-  :ARCHIVE_TIME: 2008-06-08 Sun 12:55
-  :ARCHIVE_FILE: ~/dmvccm/DMVCCM.org
-  :ARCHIVE_OLPATH: Adjacency and combining it with inner()
-  :ARCHIVE_CATEGORY: DMVCCM
-  :ARCHIVE_TODO: DONE
-  :END:
-
-
diff --git a/DMVCCM.org_archive.~2~ b/DMVCCM.org_archive.~2~
deleted file mode 100644 (file)
index 2ab38eb..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#    -*- mode: org -*-
-
-
-Archived entries from file /Users/kiwibird/dmvccm/DMVCCM.org
-* DONE [#A] test and debug my brilliant idea
-  CLOSED: [2008-06-08 Sun 10:28]
-  :PROPERTIES:
-  :ARCHIVE_TIME: 2008-06-08 Sun 12:55
-  :ARCHIVE_FILE: ~/dmvccm/DMVCCM.org
-  :ARCHIVE_OLPATH: Adjacency and combining it with inner()
-  :ARCHIVE_CATEGORY: DMVCCM
-  :ARCHIVE_TODO: DONE
-  :END:
-* DONE implement my brilliant idea.
-    CLOSED: [2008-06-01 Sun 17:19]
-  :PROPERTIES:
-    :ARCHIVE_TIME: 2008-06-08 Sun 12:55
-    :ARCHIVE_FILE: ~/dmvccm/DMVCCM.org
-    :ARCHIVE_OLPATH: Adjacency and combining it with inner()
-    :ARCHIVE_CATEGORY: DMVCCM
-    :ARCHIVE_TODO: DONE
-  :END:
-[[file:src/dmv.py::def%20e%20s%20t%20LHS%20Lattach%20Rattach][e(sti) in dmv.py]]
-
-
-
diff --git a/DMVCCM.org~20080525~ b/DMVCCM.org~20080525~
deleted file mode 100755 (executable)
index bee9a8d..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: 
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO [#A] DMV-probabilities   
-[[file:src/dmv.py::DMV%20probabilities][dmv.py]]
-** TOGROK Initialization   
-** TOGROK Adjacency and combining it with inner()
-** TOGROK What exactly is the E-step of DMV? Is the M-step just inner on the full sentence?
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-
-** Meet Yoav again about dmvccm
-   SCHEDULED: <2008-05-26 Mon>
-13:30, P3.21.
-
-Questions:
-*** Initialization
-*** Corpus access?
-*** How do we interpret DMV as an inside/outside process?
-The upside-down P_STOP formula (left-to-right also)
-c_s(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P_STOP and P_CHOOSE, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-*** How do we know whether we are 'adjacent' or not? 
-Can we even know that without the full tree?
-**** One configuration that I'm fairly certain of: right w/CHOOSE
-if we have 
-\Tree [_b [_b b _c_ ] _d_ ] 
-then the lower tree [_b b _c_ ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [_b [_b ... ] _d_ ] is non-adjacent, since there is something in
-between... Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-***** Implementing this:
-Two different DMVRules? Or just two different prob-values per rule?
-**** left w/CHOOSE
-Same deal here?
-**** R/L without CHOOSE, the "sealing operations"
-_h_ -> STOP h_ and h_ -> h STOP
-
-What is "adjacency" here? That t - s == 1?
-*** What are the formulas for P_CHOOSE etc?
-Is this the same as the regular E-step summation of Lari&Young?
-(Equation 20)
-*** How is the P_STOP formula different given other values for dir and adj?
-
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-
-
-
-
-* Python-stuff
-[[file:src/pseudo.py][pseudo.py]]
-
-http://nltk.org/doc/en/structured-programming.html recursive dynamic
-http://nltk.org/doc/en/advanced-parsing.html 
-
-
diff --git a/DMVCCM.org~20080527~ b/DMVCCM.org~20080527~
deleted file mode 100755 (executable)
index cb9dae3..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: 
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO [#A] P_STOP
-[[file:src/dmv.py::DMV%20probabilities][dmv.py]]
-** TOGROK P_CHOOSE
-** TOGROK Initialization   
-** TOGROK Adjacency and combining it with inner()
-** TOGROK What exactly is the E-step of DMV? Is the M-step just inner on the full sentence?
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-
-** Meet Yoav again about dmvccm
-   SCHEDULED: <2008-05-26 Mon>
-13:30, P3.21.
-
-Questions:
-*** Initialization
-*** Corpus access?
-*** How do we interpret DMV as an inside/outside process?
-c_s(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P_STOP and P_CHOOSE, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-*** The upside-down P_STOP formula (left-to-right also)?
-*** Technical: sentences or rules as the "outer loop"?
-*** What are the formulas for P_CHOOSE etc?
-Is this the same as the regular E-step (M-step?) summation of
-Lari&Young?  (Equation 20)
-*** How is the P_STOP formula different given other values for dir and adj?
-
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_STOP(-STOP|...) = 1 - P_STOP(STOP|...) )
-*** How do we know whether we are 'adjacent' or not? 
-**** One configuration that I'm fairly certain of: right w/CHOOSE
-if we have 
-\Tree [_b [_b b _c_ ] _d_ ] 
-then the lower tree [_b b _c_ ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [_b [_b ... ] _d_ ] is non-adjacent, since there is something in
-between... Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-***** Implementing this:
-Two different DMVRules? Or just two different prob-values per rule?
-**** left w/CHOOSE
-Same deal here?
-**** R/L without CHOOSE, the "sealing operations"
-_h_ -> STOP h_ and h_ -> h STOP
-
-What is "adjacency" here? That t - s == 1?
-
-
-
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-
-
diff --git a/DMVCCM.org~20080528~ b/DMVCCM.org~20080528~
deleted file mode 100755 (executable)
index b16887c..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-# -*- coding: mule-utf-8-unix -*-
-#+STARTUP: overview
-#+TAGS: OPTIMIZE 
-#+STARTUP: hidestars
-#+TITLE: DMV/CCM
-#+AUTHOR: Kevin Brubeck Unhammer
-#+EMAIL: K.BrubeckUnhammer at student uva nl 
-#+LANGUAGE: en
-#+SEQ_TODO: TOGROK TODO DONE
-#+OPTIONS: H:4 toc:3
-
-* dmvccm
-  DEADLINE: <2008-06-30 Mon>
-(But absolute, extended, really-quite-dead-now deadline: August 31...)
-[[file:src/dmv.py][dmv.py]]
-[[file:src/io.py][io.py]]
-** TODO [#A] P_STOP
-[[file:src/dmv.py::DMV%20probabilities][dmv-P_STOP]]
-*** Remember: The P_STOP formula is upside-down (left-to-right also)
-*** How is the P_STOP formula different given other values for dir and adj?
-(Presumably, the P_STOP formula where STOP is True is just the
-rule-probability of _h_ -> STOP h_ or h_ -> h STOP, but how does
-adjacency fit in here?)
-
-(And P_STOP(-STOP|...) = 1 - P_STOP(STOP|...) )
-** TODO P_CHOOSE
-Write the formulas! should be easy?
-** TOGROK Some (tagged) sentences are bound to come twice            :OPTIMIZE:
-Eg, first sort and count, so that the corpus
-[['nn','vbd','det','nn'],
- ['vbd','nn','det','nn'],
- ['nn','vbd','det','nn']]
-becomes
-[(['nn','vbd','det','nn'],2),
- (['vbd','nn','det','nn'],1)]
-and then in each loop through sentences, make sure we handle the
-frequency correctly.
-          
-Is there much to gain here?
-** Initialization   
-[[file:~/Documents/Skole/V08/Probability/dmvccm/src/dmv.py::Initialization%20todo][dmv-inits]]
-we Do have to go through the corpus, since the probabilities are based
-on how far away in the sentence arguments are from their heads.
-*** DONE DMV Initialization frequencies    
-    CLOSED: [2008-05-27 Tue 20:04]
-**** P_STOP    
-P_STOP is not well defined by K&M. One possible interpretation given
-the sentence [det nn vb nn] is
-- f_STOP( STOP|det, L, adj) +1
-- f_STOP(-STOP|det, L, adj) +0  
-- f_STOP( STOP|det, L, non_adj) +1
-- f_STOP(-STOP|det, L, non_adj) +0
-- f_STOP( STOP|det, R, adj) +0
-- f_STOP(-STOP|det, R, adj) +1
-
-- f_STOP( STOP|nn, L, adj) +0
-- f_STOP(-STOP|nn, L, adj) +1
-- f_STOP( STOP|nn, L, non_adj) +1  # since there's at least one to the left
-- f_STOP(-STOP|nn, L, non_adj) +0
-
-**** P_CHOOSE
-Go through the corpus, counting distances between heads and
-arguments. In [det nn vb nn], we give 
-- f_CHOOSE(nn|det, R) +1/1 + C
-- f_CHOOSE(vb|det, R) +1/2 + C
-- f_CHOOSE(nn|det, R) +1/3 + C
-  - If this were the full corpus, P_CHOOSE(nn|det, R) would have
-    (1+1/3+2C) / sum_a f_CHOOSE(a|det, R)
-
-The ROOT gets "each argument with equal probability", so in a sentence
-of three words, 1/3 for each (in [nn vb nn], 'nn' gets 2/3). Basically
-just a frequency count of the corpus...
-*** TOGROK DMV Initialization probabilities from initialization frequency    
-*** TOGROK CCM Initialization    
-P_SPLIT used here... how, again?
-** TOGROK Adjacency and combining it with inner()
-** TOGROK Is the E-step in DMV just inner() on the full sentence?
-** TOGROK What exactly is the M-step of DMV? 
-*** COMMENT 
-E: «For the initial symbols, I think we're supposed to
-implement someone-or-other's POS tagger and use the parts of speech as
-our tags. (K&M say they used parts of speech, anyway, and we can't use
-the ones from the annotated corpus or else we won't be unsupervised
-anymore.) I think you're right about how the tree is formed. The only
-thing I'm not sure about is whether those left and right marks are
-supposed to be part of the tree. I guess not because in a well-formed
-tree, every word needs a stop on both sides, so actually all nodes
-would be left and right marked in the end, which is the same as not
-using them at all. So I guess they're relevant in the E step of EM,
-but not the M step.» [[https://mail.google.com/mail/%3Ffs%3D1&tf%3D1&source%3Datom&view%3Dcv&search%3Dall&th%3D119b3e3d7d8f1d1f&shva%3D1&ui%3D1&disablechatbrowsercheck%3D1][gmail]]
-
-K: About initialization, when they say they start with an M-step and get
-a harmonic distribution (where close dependencies have higher
-probabilities than far-away ones), I guess we could do this either in
-a function of its own, or as a special case of the IO-algorithm -- I'm
-not sure how different the harmonizing step will be from the regular
-M-step. But I'm pretty sure harmonizing means having to go through the
-whole corpus, since that's the only way we can find out distances for
-each dependency (without having actual distance-numbers in the rules
-in the first place). If sentence s is ABCD, rules from A to B should
-have higher probability than rules from A to D. Assuming we find some
-average distance between A and B, and A and D, etc. throughout the
-corpus, we then have to turn those numbers into probabilities that sum
-to 1; do you have any idea how to do that?
-
-E: I think what it means to start with an M step is that we set the
-probabilities without regard for the initial corpus. They say that
-they start with an initial guess at "posterior distributions". I bet
-the word "posterior" is important, but I don't know what it means
-here. Do you?
-** TODO Corpus access
-** TOGROK How do we interpret DMV as an inside/outside process?   
-c_s(x : i, j) is "the expected fraction of parses of s" with x from
-i to j; expectation then uses the probabilities gotten from
-initialization and previously gained probabilities, but these are of
-the form P_STOP and P_CHOOSE, how do we translate this to inside
-outside, which just uses the probabilities of CFG-rules?
-
-** Technical: sentences or rules as the "outer loop"?
-** CCM-stuff
-** DONE How do we know whether we are 'adjacent' or not? 
-**** One configuration that I'm fairly certain of: right w/CHOOSE
-if we have 
-\Tree [_b [_b b _c_ ] _d_ ] 
-then the lower tree [_b b _c_ ] is adjacent since, working your way up
-the tree, no argument has been created to the right "yet"; while the
-outer tree [_b [_b ... ] _d_ ] is non-adjacent, since there is something in
-between... Is it thus always adjacent to the right if the distance
-is 2? (That is, in e(s,t,i) for the adjacent rule: t - s == 2; while
-in the non_adj rule: t - s == 4) 
-***** Implementing this:
-Two different DMVRules? Or just two different prob-values per rule?
-**** left w/CHOOSE
-Same deal here?
-**** R/L without CHOOSE, the "sealing operations"
-_h_ -> STOP h_ and h_ -> h STOP
-
-What is "adjacency" here? That t - s == 1?
-
-
-
-
-* Python-stuff
-- [[file:src/pseudo.py][pseudo.py]]
-- http://nltk.org/doc/en/structured-programming.html recursive dynamic
-- http://nltk.org/doc/en/advanced-parsing.html 
-
-