<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flying memes &#187; abacus</title>
	<atom:link href="http://sandropaganotti.com/tag/abacus/feed/" rel="self" type="application/rss+xml" />
	<link>http://sandropaganotti.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 08 Jan 2012 16:00:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Abacus, Pierre Hérigone e la mnemotecnica</title>
		<link>http://sandropaganotti.com/2010/02/28/abacus-pierre-herigone-e-la-mnemotecnica/</link>
		<comments>http://sandropaganotti.com/2010/02/28/abacus-pierre-herigone-e-la-mnemotecnica/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 16:31:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Librerie]]></category>
		<category><![CDATA[abacus]]></category>
		<category><![CDATA[Hérigone]]></category>
		<category><![CDATA[mnemotecnica]]></category>

		<guid isPermaLink="false">http://sandropaganotti.com/?p=306</guid>
		<description><![CDATA[Ho recentemente acquistato un libro che mi stà regalando una serie di spunti per interessanti approfondimenti e delle simpatiche occasioni per scrivere due righe di codice. Il libro in questione si chiama &#8220;Enigmi e giochi matematici&#8221; di Martin Gardner e raccoglie gli articoli che lo stesso Martin pubblicò negli anni sulla rivista Scientific American. Il [...]]]></description>
			<content:encoded><![CDATA[<p>Ho recentemente acquistato un libro che mi stà regalando una serie di spunti per interessanti approfondimenti e delle simpatiche occasioni per scrivere due righe di codice. Il libro in questione si chiama &#8220;<a href="http://www.ibs.it/code/9788817127479/gardner-martin/enigmi-giochi-matematici.html" target="_blank">Enigmi e giochi matematici</a>&#8221; di <a href="http://it.wikipedia.org/wiki/Martin_Gardner" target="_blank">Martin Gardner</a> e raccoglie gli articoli che lo stesso Martin pubblicò negli anni sulla rivista Scientific American.</p>
<p><span id="more-306"></span></p>
<p>Il capitolo numero 11 tratta di mnemotecnica, la disciplina che studia il modo di memorizzare lunghe sequenze di numeri, e tratta del metodo di <a href="http://en.wikipedia.org/wiki/Herigone%27s_mnemonic_system" target="_blank">Pierre Hérigone</a>, che può essere riassunto nel seguente modo:</p>
<ol>
<li>Associa le cifre del numero che vuoi memorizzare a delle consonanti secondo <a href="http://it.wikipedia.org/wiki/Mnemotecnica#La_conversione_fonetica" target="_blank">una tabella nota</a>; ad esempio la temperatura di ebollizione del mercurio, 357°C, diverrebbe mlk;</li>
<li>Trova una parola che contenga quelle consonanti in quell&#8217;ordine (senza altre &#8216;consonanti di disturbo in mezzo&#8217;); ad esempio per mlk andrebbe benissimo milk, mentre non andrebbe bene multik;</li>
<li>Associa la parola appena trovata ad una frase che in qualche modo leghi con il significato originario della cifra, possibilmente in modo che la frase risultante contenga uno stimolo visuale; ad esempio si può immaginare un allevatore stupito dal fatto che le sue mucche producano mercurio invece che latte.</li>
<li>Se la cifra dovesse essere molto lunga utilizza una sequenza di più parole seguendo lo schema appena descritto.</li>
</ol>
<p>Nel tempo libero stò cercando di trasporre questi quattro semplici passaggi all&#8217;interno di una gemma: <a href="http://rubygems.org/gems/abacus" target="_blank">abacus</a>, della quale ho rilasciato giusto oggi la versione 0.0.1; vediamo come si usa:</p>
<pre><code class="ruby">&gt;&gt; require 'abacus'
=&gt; true
&gt;&gt; include Abacus
=&gt; Object
&gt;&gt; number = HerigoneNumber.find_by_number(357)
=&gt; #&lt;Abacus::HerigoneNumber id: 19081, system: "default", number: 357&gt;
&gt;&gt; number.article_keys.map{|article_key| article_key.the_key}
=&gt; ["hemlock", "milk", "milky"]
</code></pre>
<p>Per poter funzionare Abacus utilizza un database sqllite che crea all&#8217;interno della cartella home dell&#8217;utente (il percorso in realtà è configurabile, ma per questi dettagli vi rimando <a href="http://github.com/sandropaganotti/Abacus/blob/master/README.markdown" target="_blank">alle note di installazione su github</a>) e nel quale struttura il/i dizionari di riferimento.</p>
<p>Abacus implementa un parser (molto base ad oggi) <a href="http://xdxf.sourceforge.net/" target="_blank">XDXF</a>, un formato open per la memorizzazione di dizionari: esistono già parecchie opere convertite più o meno bene in questo formato che possono essere <a href="http://xdxf.revdanica.com/down/" target="_blank">scaricate gratuitamente</a>, io ad esempio ho utilizzato <a href="http://downloads.sourceforge.net/xdxf/comn_sdict05_eng_eng_main.tar.bz2" target="_blank">questo dizionario base di inglese</a>:</p>
<pre><code># da shell:
sudo gem install abacus
wget http://downloads.sourceforge.net/xdxf/comn_sdict05_eng_eng_main.tar.bz2
tar -xjvf comn_sdict05_eng_eng_main.tar.bz2
abacus db:create
abacus db:xdxf:import  eng_eng_main/dict.xdxf
abacus db:herigone:generate
</code></pre>
<p>La sfida più interessante di questo piccolo progetto è stata mantenere delle performances adeguate durante la sessione di traduzione numero -&gt; parola, per fare questo in fase di import (con il comando db:herigone:generate) la gemma traduce ogni lemma del dizionario nel suo corrispettivo numerico rendendo la fase di ricerca una semplice SELECT su di un campo indicizzato.</p>
<p>In futuro vorrei estendere questo piccolo progetto aggiungendo due funzionalità di aggregazione semantica: in caso di sequenze di cifre lunghe mi piacerebbe infatti includere un generatore di linguaggio naturale con l&#8217;obiettivo creare una frase che almento nell&#8217;apparenza manifesti una certa correttezza (sarebbe bellissimo tradurre le prima 1000 cifre del PI in uno strampalato poema no?). Sarebbe inoltre interessante utilizzare <a href="http://wordnet.princeton.edu/" target="_blank">wordnet</a> per ridurre la variabilità semantica delle singole parole trovate a quanto di più vicino ad una parola che serva da &#8216;rappresentante logico&#8217; per la cifra in ingresso (ad esempio per 357 il rappresentante logico sarebbe &#8216;mercurio&#8217;).</p>
<p>Nel frattempo, per chiunque fosse interessato, i sorgenti della gemma sono disponibili <a href="http://github.com/sandropaganotti/Abacus" target="_blank">sul mio account di GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sandropaganotti.com/2010/02/28/abacus-pierre-herigone-e-la-mnemotecnica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

