<?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>Infomotions Mini-Musings</title>
	<atom:link href="./index.html" rel="self" type="application/rss+xml" />
	<link>./../index.html</link>
	<description>Artist- and Librarian-At-Large</description>
	<lastBuildDate>
	Sat, 19 Dec 2020 16:15:48 +0000	</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.8</generator>
	<item>
		<title>Final blog posting</title>
		<link>./../2020/12/final-blog-posting/index.html</link>
				<pubDate>Sat, 19 Dec 2020 16:02:35 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">./../index.html?p=1384</guid>
				<description><![CDATA[This is probably my final blog posting using the WordPress software, and I hope to pick up posting on Infomotions&#8217; Musings. WordPress is a significant piece of software, and while its functionality is undeniable, maintaining the software in a constant process. It has become too expensive for me. Moreover over, blog software, such as WordPress, [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This is probably my final blog posting using the WordPress software, and I hope to pick up posting on <a href="http://infomotions.com/musings/">Infomotions&#8217; Musings</a>.</p>
<p><img border="5" align="right" width="120" src="./../wp-content/uploads/2020/12/wall-paper-by-eric.jpeg">WordPress is a significant piece of software, and while its functionality is undeniable, maintaining the software in a constant process. It has become too expensive for me.</p>
<p>Moreover over, blog software, such as WordPress, was suppose to enable two additional types of functionality that have not really come to fruition. The first is/was syndication. Blog software was expected to support things like RSS feeds. While blog software does support RSS, people to not seem to create/maintain lists of blogs and RSS feeds for reading. The idea of RSS has not come to fruition in the expected way. Similarly, blog were expected to support commenting in the form of academic dialog, but that has not really come to fruition either; blog comments are usually terse and do not really foster discussion.</p>
<p>For these reasons, I am foregoing WordPress, and I hope to return to use the of my personal TEI publishing process. I feel as if my personal process will be more long-lasting.</p>
<p>In order to make this transition, I have used a WordPress plug-in called <a href="https://www.simplystatic.co/">Simply Static</a>. Install the software, play with the settings, create a static site, review results, and repeat if necessary. The software seems to work pretty well. Also, paying the roll of librarian, I have made an effort classify my blog postings while diminishing the number of items in the &#8220;miscellaneous&#8221; category.</p>
<p>By converting my blog to a static site and removing WordPress from my site, I feel as if I am making the Infomotions web presence simpler and easier to maintain. Sure, I am loosing some functionality, but that loss is smaller than the amount of time, effort, and worry I incur by running software I know too little about.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Charting &#038; graphing with Tableau Public</title>
		<link>./../2018/05/tableau/index.html</link>
				<pubDate>Fri, 04 May 2018 16:02:36 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1224</guid>
				<description><![CDATA[They say, &#8220;A picture is worth a thousand words&#8221;, and through use of something like Tableau this can become a reality in text mining. After extracting features from a text, you will have almost invariably created lists. Each of the items on the lists will be characterized with bits of context thus transforing the raw [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>They say, &#8220;A picture is worth a thousand words&#8221;, and through use of something like Tableau this can become a reality in text mining.</p>
<p>After extracting features from a text, you will have almost invariably created lists. Each of the items on the lists will be characterized with bits of context thus transforing the raw data into information. These lists will probably take the shape of matrices (sets of rows &amp; columns), but other data structures exist as well, such as networked graphs. Once the data has been transformed into information, you will want to make sense of the information &#8212; turn the information into knowledge. Charting &amp; graphing the data is one way to make that happen.</p>
<p>For example, the reader may have associated each word in a text with a part-of-speech, and then this association was applied across a corpus. The reader might then ask, &#8220;To what degree are words associated with each part-of-speech similar or different across items in the corpus? Do different items include similar or different personal pronouns, and therefore, are some documents more male, more female, or more gender neutral?&#8221; Alternatively, suppose the named entities have been extracted from items in a corpus, then the reader may want to know, &#8220;What countries, states, and/or cities are mentioned in the text/corpus, and to what degree? Are these texts &#8216;European&#8217; in scope?&#8221;</p>
<p>A charting &amp; graphing application like Tableau (or Tableau Public) can address these questions. [1] The first can be answered by enabling the reader to select one more more items from a corpus, select one or more parts-of-speech, counting &amp; tabulating the intersected words, and displaying the result as a word cloud. The second question can be addressed similarly. Allow the reader to select items from a corpus, extract the names of places (countries, states, and cities), and plot the geographic coordinates on a global map. Once these visualizations are complete, they can be saved on the Web for others to use, for example:</p>
<table>
<tbody>
<tr>
<td><a href="https://tabsoft.co/2JQimPd"><img width="200" src="./../wp-content/uploads/2018/05/cloud.png" alt="word cloud"></a></td>
<td><a href="https://tabsoft.co/2FJ6g83"><img width="200" src="./../wp-content/uploads/2018/05/map.png" alt="map"></a></td>
</tr>
</tbody>
</table>
<p>Creating visualizations with Tableau (or Tableau Public) takes practice. Not only does the reader need to have structured data in hand, but one needs to be patient in the learning of the interface. To the author&#8217;s mind, the whole thing is reminiscent of the venerable HyperCard program from the 1980&#8217;s where one was presented with a number of &#8220;cards&#8221;, and programming interfaces were created by placing &#8220;objects&#8221; on them.</p>
<p><img width="600" src="./../wp-content/uploads/2018/05/interface.png" alt="tableau interface"></p>
<p>This workshop comes with two previously created Tableau workbooks located in the etc directory (<a href="./../wp-content/uploads/2018/05/word-clouds.twbx">word-clouds.twbx</a> and <a href="./../wp-content/uploads/2018/05/maps.twbx">maps.twbx</a>). Describing the process to create them is beyond the scope of this workshop, but an outline follows:</p>
<ol>
<li>amass sets of data, like parts-of-speech or named entities</li>
<li>import the data into Tableau</li>
<li>in the case of the named entities, convert the data to &#8220;Geographic Roles&#8221;</li>
<li>drag data elements to the Marks, Rows, or Columns cards</li>
<li>make liberal use of the Show Me feature</li>
<li>drag data elements to the Filters card</li>
<li>observe the visualizations and turn your information into knowledge</li>
</ol>
<p>Tableau is not really intended to be used against textual data/information; Tableau is more useful and more functional when applied to tabular numeric data. After all, the program is called&#8230; Tableau. This does not mean Tableau can not be exploited by the text miner. It just means it requires practice and an ability to articulate a question to be answered with the help of a visualization.</p>
<h2>Links</h2>
<p>[1] Tableau Public &#8211; <a href="https://public.tableau.com/">https://public.tableau.com/</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>Extracting parts-of-speech and named entities with Stanford tools</title>
		<link>./../2018/04/pos-ner/index.html</link>
				<pubDate>Fri, 27 Apr 2018 01:25:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1215</guid>
				<description><![CDATA[Extracting specific parts-of-speech as well as &#8220;named entities&#8221;, and then counting &#38; tabulating them can be quite insightful. Parts-of-speech include nouns, verbs, adjectives, adverbs, etc. Named entities are specific types of nouns, including but not limited to, the names of people, places, organizations, dates, times, money amounts, etc. By creating features out of parts-of-speech and/or [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Extracting specific parts-of-speech as well as &#8220;named entities&#8221;, and then counting &amp; tabulating them can be quite insightful.</p>
<p>Parts-of-speech include nouns, verbs, adjectives, adverbs, etc. Named entities are specific types of nouns, including but not limited to, the names of people, places, organizations, dates, times, money amounts, etc. By creating features out of parts-of-speech and/or named entities, the reader can answer questions such as:</p>
<ul>
<li>What is discussed in this document?</li>
<li>What do things do in this document?</li>
<li>How are things described, and how might those descriptions be characterized?</li>
<li>To what degree is the text male, female, or gender neutral?</li>
<li>Who is mentioned in the text?</li>
<li>To what places are things referring?</li>
<li>What happened in the text?</li>
</ul>
<p>There are a number of tools enabling the reader to extract parts-of-speech, including the venerable Brill part-of-speech tagger implemented in a number of programming languages, CLAWS, the Apache OpenNLP, and a specific part of the Stanford NLP suite of tools called the Stanford Log-linear Part-Of-Speech Tagger. [1]  Named entities can be extracted with the Stanford Named Entity Recognizer (NER). [2] This workshop exploits the Standford tools.</p>
<p>The Stanford Log-linear Part-Of-Speech Tagger is written in Java, making it a bit difficult for most readers to use in the manner it was truly designed, the author included. Luckily, the distribution comes with a command-line interface allowing the reader to use the tagger sans any Java programing. Because any part-of-speech or named entity extraction application is the result of a machine learning process, it is necessary to use a previously created computer model. The Stanford tools comes quite a few models from which to choose. The command-line interface also enables the reader to specify different types of output: tagged, XML, tab-delimited, etc. Because of all these options, and because the whole thing uses Java &#8220;archives&#8221; (read programming libraries or modules), the command-line interface is daunting, to say the least.</p>
<p>After downloading the distribution, the reader ought to be able to change to the bin directory, and execute either one of the following commands:</p>
<ul>
<li style="list-style-type:none"><code>$ stanford-postagger-gui.sh</code></li>
<li style="list-style-type:none"><code>&gt; stanford-postagger-gui.bat</code></li>
</ul>
<p>The result will be a little window prompting for a sentence. Upon entering a sentence, tagged output will result. This is a toy interface, but demonstrates things quite nicely.</p>
<p><img src="./../wp-content/uploads/2018/04/pos.png" alt="pos gui"></p>
<p>The full-blown command-line interface is bit more complicated. From the command-line one can do either of the following, depending on the operating system:</p>
<ul>
<li style="list-style-type:none"><code>$ stanford-postagger.sh models/english-left3words-distsim.tagger walden.txt</code></li>
<li style="list-style-type:none"><code>&gt; stanford-postagger.bat models\english-left3words-distsim.tagger walden.tx</code>t</li>
</ul>
<p>The result will be a long stream of tagged sentences, which I find difficult to parse. Instead, I prefer the inline XML output, which is much more difficult to execute but much more readable. Try either:</p>
<ul>
<li style="list-style-type:none"><code>$ java -cp stanford-postagger.jar: edu.stanford.nlp.tagger.maxent.MaxentTagger -model models/english-left3words-distsim.tagger -outputFormat inlineXML -outputFormatOptions lemmatize -textFile walden.txt</code></li>
<li style="list-style-type:none"><code>&gt; java -cp stanford-postagger.jar: edu.stanford.nlp.tagger.maxent.MaxentTagger -model models\english-left3words-distsim.tagger -outputFormat inlineXML -outputFormatOptions lemmatize -textFile walden.txt</code></li>
</ul>
<p>In these cases, the result will be a long string of ill-formed XML. With a bit of massaging, this XML is much easier to parse with just about any compute programming language, believe it or not. The tagger can also be run in server mode, which makes batch processing a whole lot easier. The workshop&#8217;s distribution comes a server and client application for exploiting these capabilities, but, unfortunately, they won&#8217;t run on Windows computers unless some sort of Linux shell has been installed. Some people can issue the following command to launch the server from the workshop&#8217;s distribution:</p>
<p><code>$ ./bin/pos-server.sh</code></p>
<p>The reader can run the client like this:</p>
<p><code>$ ./bin/pos-client.pl walden.txt</code></p>
<p>The result will be a well-formed XML file, which can be redirected to a file, processed by another script converting it into a tab-delimited file, and finally saved to a second file for reading by a spreadsheet, database, or data analysis tool:</p>
<p><code>$ ./bin/pos-client.pl walden.txt &gt; walden.pos; ./bin/pos2tab.pl walden.pos &gt; walden.tsv</code></p>
<p>For the purposes of this workshop, the whole of the harvested data has been pre-processed with the Stanford Log-linear Part-Of-Speech Tagger. The result is been mirrored in the parts-of-speech folder/directory. The reader can open the files in the parts-of-speech folder/directory for analysis. For example, you might open them in OpenRefine and try to see what verbs appear most frequently in a given document. My guess the answer will be the lemmas &#8220;be&#8221; or &#8220;have&#8221;. The next set of most frequently used verb lemmas will probably be more indicative of the text.</p>
<p>The process of extrating features of name entities is very similar with the Stanford NER. The original Stanford NER distribution comes with a number of jar files, models, and configuration/parameter files. After downloading the distribution, the reader can run a little GUI application, import some text, and run NER. The result will look something like this:</p>
<p><img src="./../wp-content/uploads/2018/04/ner.png" alt="ner gui"></p>
<p>The simple command-line interface takes a single file as input, and it outputs a stream of tagged sentences. For example:</p>
<ul>
<li style="list-style-type:none"><code>$ ner.sh walden.txt</code></li>
<li style="list-style-type:none"><code>&gt; ner.bat walden.txt</code></li>
</ul>
<p>Each tag denotes an entity (i.e. the name of a person, the name of a place, the name of an organization, etc.). Like the result of all machine learning algorithms, the tags are not necessarily correct, but upon closer examination, most of them are pretty close. Like the POS Tagger, this workshop&#8217;s distribution comes with a set of scripts/programs that can make the Stanford NER tool locally available as a server. It also comes with a simple client to query the server. Like the workshop&#8217;s POS tool, the reader (with a Macintosh or Linux computer) can extract named entities all in two goes:</p>
<p><code>$ ./bin/pos-server.sh</code><br />
<code>$ ./bin/pos-client.pl walden.txt &gt; walden.ner; ./bin/pos2tab.pl walden.ner &gt; walden.tsv</code></p>
<p>Like the workshop&#8217;s pre-processed part-of-speech files, the workshop&#8217;s corpus has been pre-processed with the NER tool. The preprocessed files ought to be in a folder/directory named&#8230; named-entities. And like the parts-of-speech files, the &#8220;ner&#8221; files are tab-delimited text files readable by spreadsheets, databases, OpenRefine, etc. For example, you might open one of them in OpenRefine and see what names of people trend in a given text. Try to create a list of places (which is not always easy), export them to a file, and open them with Tabeau Public for the purposes of making a geographic map.</p>
<p>Extracting parts-of-speech and named entities straddles simple text mining and natural language processing. Simple text mining is often about counting &amp; tabulating features (words) in a text. These features have little context sans proximity to other features. On the other hand, parts-of-speech and named entities denote specific types of things, namely specific types of nouns, verbs, adjectives, etc. While these thing do not necessarily denote meaning, they do provide more context than simple features. Extracting parts-of-speech and named entities is (more or less) a easy text mining task with more benefit than cost. Extracting parts-of-speech and named entities goes beyond the basics.</p>
<h2>Links</h2>
<ol>
<li>[1] Stanford Log-linear Part-Of-Speech Tagger &#8211; <a href="https://nlp.stanford.edu/software/tagger.shtml">https://nlp.stanford.edu/software/tagger.shtml</a></li>
<li>[2] Stanford Named Entity Recognizer (NER) &#8211; <a href="https://nlp.stanford.edu/software/CRF-NER.shtml">https://nlp.stanford.edu/software/CRF-NER.shtml</a></li>
</ol>
]]></content:encoded>
										</item>
		<item>
		<title>Creating a plain text version of a corpus with Tika</title>
		<link>./../2018/04/tiki/index.html</link>
				<pubDate>Thu, 26 Apr 2018 00:22:19 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1208</guid>
				<description><![CDATA[It is imperative to create plain text versions of corpus items. Text mining can not be done without plain text data. This means HTML files need to be rid of markup. It means PDF files need to have been &#8220;born digitally&#8221; or they need to have been processed with optical character recognition (OCR), and then [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>It is imperative to create plain text versions of corpus items.</p>
<p>Text mining can not be done without plain text data. This means HTML files need to be rid of markup. It means PDF files need to have been &#8220;born digitally&#8221; or they need to have been processed with optical character recognition (OCR), and then the underlying text needs to be extracted. Word processor files need to converted to plain text, and the result saved accordingly. The days of plain o&#8217; ASCII text files need to be forgotten. Instead, the reader needs to embrace Unicode, and whenever possible, make sure characters in the text files are encoded as UTF-8. With UTF-8 encoding, one gets all of the nice accent marks so foreign to United States English, but one also gets all of the pretty emoticons increasingly sprinkling our day-to-day digital communications. Moreover, the data needs to be as &#8220;clean&#8221; as possible. When it comes to OCR, do not fret too much. Given the large amounts of data the reader will process, &#8220;bad&#8221; OCR (OCR with less than 85% accuracy) can still be quite effective.</p>
<p>Converting harvested data into plain text used to be laborious as well as painful, but then a Java application called Apache Tika came on the scene. [1] Tika comes in two flavors: application and server. The application version can take a single file as input, and it can output metadata as well as any underlying text. The application can also work in batch mode taking a directory as input and saving the results to a second directory. Tika&#8217;s server version is much more expressive, more powerful, and very HTTP-like, but it requires more &#8220;under the hood&#8221; knowledge to exploit to its fullest potential.</p>
<p>For the sake of this workshop, versions of the Tika application and Tika server are included in the distribution, and they have been saved in the lib directory with the names <code>tika-desktop.jar</code> and <code>tika-server.jar</code>. The reader can run the desktop/GUI version of the Tika application by merely double-clicking on it. The result will be a dialog box.</p>
<table>
<tbody>
<tr>
<td><img width="400" src="./../wp-content/uploads/2018/04/launch.png" alt="tika"></td>
</tr>
<tr>
<td><img width="400" src="./../wp-content/uploads/2018/04/result.png" alt="result"></td>
</tr>
</tbody>
</table>
<p>Drag a PDF (or just about any) file on to the window, and Tika will extract the underlying text. To use the command-line interface, something like this could be run to output the help text:</p>
<ul>
<li style="list-style-type:none"><code>$ java -jar ./lib/tika-desktop.jar --help</code></li>
<li style="list-style-type:none"><code>&gt; java -jar .\lib\tika-desktop.jar --help</code></li>
</ul>
<p>And then something like these commands to process a single file or a whole directory of files:</p>
<ul>
<li style="list-style-type:none"><code>$ java -jar ./lib/tika-desktop.jar -t &lt;filename&gt;</code></li>
<li style="list-style-type:none"><code>$ java -jar ./lib/tika-desktop.jar -t -i &lt;input directory&gt; -o &lt;output directory&gt;</code></li>
<li style="list-style-type:none"><code>&gt; java -jar .\lib\tika-desktop.jar -t &lt;filename&gt;</code></li>
<li style="list-style-type:none"><code>&gt; java -jar .\lib\tika-desktop.jar -t -i &lt;input directory&gt; -o &lt;output directory&gt;</code></li>
</ul>
<p>Try transforming a few files individually as well as in batch. What does the output look like? To what degree is it readable? To what degree has the formatting been lost? Text mining does not take formatting into account, so there is no huge loss in this regard.</p>
<p>Without some sort of scripting, the use of Tika to convert harvested data into plain text can still be tedious. Consequently, the whole of the workshop&#8217;s harvested data has been pre-processed with a set of Perl and bash scripts (which probably won&#8217;t work on Windows computers unless some sort of Linux shell has been installed):</p>
<ul>
<li style="list-style-type:none"><code>$ ./bin/tika-server.sh</code> &#8211; runs Tika in server mode on TCP port 8080, and waits patiently for incoming connections</li>
<li style="list-style-type:none"><code>$ ./bin/tika-client.p</code>l &#8211; takes a file as input, sends it to the server, and returns the plain text while handling the HTTP magic in the middle</li>
<li style="list-style-type:none"><code>$ ./bin/file2txt.sh</code> &#8211; a front-end to the second script taking a file and directory name as input, transforming the file into plain text, and saving the result with the same name but in the given directory and with a .txt extension</li>
</ul>
<p>The entirety of the harvested data has been transformed into plain text for the purposes of this workshop. (&#8220;Well, almost all.&#8221;) The result has been saved in the folder/directory named &#8220;corpus&#8221;. Peruse the corpus directory. Compare &amp; contrast its contents with the contents of the harvest directory. Can you find any ommisions, and if so, then can you guess why/how they occurred?</p>
<h2>Links</h2>
<ul>
<li>[1] Tika &#8211; <a href="http://tika.apache.org/">http://tika.apache.org/</a></li>
</ul>
]]></content:encoded>
										</item>
		<item>
		<title>Identifying themes and clustering documents using MALLET</title>
		<link>./../2018/04/mallet/index.html</link>
				<pubDate>Thu, 26 Apr 2018 00:02:06 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1202</guid>
				<description><![CDATA[Topic modeling is an unsupervised machine learning process. It is used to create clusters (read &#8220;subsets&#8221;) of documents, and each cluster is characterized by sets of one or more words. Topic modeling is good at answering questions like, &#8220;If I were to describe this collection of documents in a single word, then what might that [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Topic modeling is an unsupervised machine learning process. It is used to create clusters (read &#8220;subsets&#8221;) of documents, and each cluster is characterized by sets of one or more words. Topic modeling is good at answering questions like, &#8220;If I were to describe this collection of documents in a single word, then what might that word be? How about two?&#8221; or make statements like, &#8220;Once I identify clusters of documents of interest, allow me to read/analyze those documents in greater detail.&#8221; Topic modeling can also be used for keyword (&#8220;subject&#8221;) assignment; topics can be identified and then documents can be indexed using those terms. In order for a topic modeling process to work, a set of documents first needs to be assembled. The topic modeler then, at the very least, takes an integer as input, which denotes the number of topics desired. All other possible inputs can be assumed, such as use of a stop word list or denoting the number of time the topic modeler ought to internally run before it &#8220;thinks&#8221; it has come the best conclusion.</p>
<p>MALLET is the grand daddy of topic modeling tools, and it supports other functions such as text classification and parsing. [1] It is essentially a set of Java-based libraries/modules designed to be incorporated into Java programs or executed from the command line.</p>
<p>A subset of MALLET&#8217;s functionality has been implemented in a program called topic-modeling-tool, and the tool bills itself as &#8220;A GUI for MALLET&#8217;s implementation of LDA.&#8221; [2] Topic-modeling-tool provides an easy way to read what possible themes exist in a set of documents or how the documents might be classified. It does this by creating topics, displaying the results, and saving the data used to create the results for future use. Here&#8217;s one way:</p>
<ol>
<li>Create a set of plain text files, and save them in a single directory.</li>
<li>Run/launch topic-modeling-tool.</li>
<li>Specify where the set of plain text files exist.</li>
<li>Specify where the output will be saved.</li>
<li>Denote the number of topics desired.</li>
<li>Execute the command with &#8220;Learn Topics&#8221;.</li>
</ol>
<p>The result will be a set of HTML, CSS, and CSV files saved in the output location. The &#8220;answer&#8221; can also be read in the tool&#8217;s console.</p>
<p>A more specific example is in order. Here&#8217;s how to answer the question, &#8220;If I were describe this corpus in a single word, then what might that one word be?&#8221;:</p>
<ol>
<li>Repeat Steps #1-#4, above.</li>
<li>Specify a single topic to be calculated.</li>
<li>Press &#8220;Optional Settings&#8230;&#8221;.</li>
<li>Specify &#8220;1&#8221; as the number of topic words to print.</li>
<li>Press okay.</li>
<li>Execute the command with &#8220;Learn Topics&#8221;.</li>
</ol>
<table>
<tbody>
<tr>
<td><img width="400" src="./../wp-content/uploads/2018/04/tool.png" alt="topic model tool"></td>
</tr>
<tr>
<td><img width="400" src="./../wp-content/uploads/2018/04/topics.png" alt="topics"></td>
</tr>
</tbody>
</table>
<p>What one word can be used to describe your collection?</p>
<p>Iterate the modeling process by slowly increasing the number of desired topics and number of topic words. Personally, I find it interesting to implement a matrix of topics to words. For example, start with one topic and one word. Next, denote two topics with two words. Third, specify three topics with three words. Continue the process until the sets of words (&#8220;topics&#8221;) seem to make intuitive sense. After a while you may observe clear semantic distinctions between each topic as well as commonalities between each of the topic words. Distinctions and commonalities may include genders, places, names, themes, numbers, OCR &#8220;mistakes&#8221;, etc.</p>
<h2>Links</h2>
<ul>
<li>[1] MALLET &#8211; <a href="http://mallet.cs.umass.edu/">http://mallet.cs.umass.edu/</a></li>
<li>[2] topic-modeling-tool &#8211; <a href="https://github.com/senderle/topic-modeling-tool">https://github.com/senderle/topic-modeling-tool</a></li>
</ul>
]]></content:encoded>
										</item>
		<item>
		<title>Introduction to the NLTK</title>
		<link>./../2018/04/nltk-redux/index.html</link>
				<pubDate>Wed, 25 Apr 2018 23:47:28 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1196</guid>
				<description><![CDATA[The venerable Python Natural Language Toolkit (NLTK) is well worth the time of anybody who wants to do text mining more programmatically. [0] For much of my career, Perl has been the language of choice when it came to processing text, but in the recent past it seems to have fallen out of favor. I [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>The venerable Python Natural Language Toolkit (NLTK) is well worth the time of anybody who wants to do text mining more programmatically. [0]</p>
<p>For much of my career, Perl has been the language of choice when it came to processing text, but in the recent past it seems to have fallen out of favor. I really don&#8217;t know why. Maybe it is because so many other computer languages have some into existence in the past couple of decades: Java, PHP, Python, R, Ruby, Javascript, etc. Perl is more than capable of doing the necessary work. Perl is well-supported, and there are a myriad of supporting tools/libraries for interfacing with databases, indexers, TCP networks, data structures, etc. On the other hand, few people are being introduced to Perl; people are being introduced to Python and R instead. Consequently, the Perl community is shrinking, and the communities for other languages is growing. Writing something in a &#8220;dead&#8221; language is not very intelligent, but that may be over-stating the case. On the other hand, I&#8217;m not going to be able to communicate with very many people if I speak Latin and everybody else is speaking French, Spanish, or German. It behooves the reader to write software in a language apropos to the task as well as a langage used by many others.</p>
<p>Python is a good choice for text mining and natural language processing. The Python NLTK provides functionality akin to much of what has been outlined in this workshop, but it goes much further. More specifically, it interaces with WordNet, a sort of thesaurus on steroids. It interfaces with MALLET, the Java-based classification &amp; topic modeling tool. It is very well-supported and continues to be maintained. Moreover, Python is mature in &amp; of itself. There are a host of Python &#8220;distributions/frameworks&#8221;. There are any number of supporting libraries/modules for interfacing with the Web, databases &amp; indexes, the local file system, etc. Even more importantly for text mining (and natural language processing) techniques, Python is supported by a set of robust machine learning libraries/modules called scikit-learn. If the reader wants to write text mining or natural language processing applications, then Python is really the way to go.</p>
<p>In the etc directory of this workshop&#8217;s distribution is a &#8220;Jupyter Notebook&#8221; named &#8220;An introduction to the NLTK.ipynb&#8221;. [1] Notebooks are sort of interactive Python interfaces. After installing Jupyter, the reader ought to be able to run the Notebook. This specific Notebook introduces the use of the NLTK. It walks you through the processes of reading a plain text file, parsing the file into words (&#8220;features&#8221;). Normalizing the words. Counting &amp; tabulating the results. Graphically illustrating the results. Finding co-occurring words, words with similar meanings, and words in context. It also dabbles a bit into parts-of-speech and named entity extraction.</p>
<p style="text-align: center"><img width="500" src="./../wp-content/uploads/2018/04/notebook.jpg" alt="notebook"></p>
<p>The heart of the Notebook&#8217;s code follows. Given a sane Python intallation, one can run this proram by saving it with a name like introduction.py, saving a file named walden.txt in the same directory, changing to the given directory, and then running the following command:</p>
<p><code>python introduction.py</code></p>
<p>The result ought to be a number of textual outputs in the terminal window as well as a few graphics.</p>
<p>Errors may occur, probably because other Python libraries/modules have not been installed. Follow the error messages&#8217; instructions, and try again. Remember, &#8220;Your milage may vary.&#8221;</p>
<pre><code># configure; using an absolute path, define the location of a plain text file for analysis
FILE = 'walden.txt'

# import / require the use of the Toolkit
from nltk import *

# slurp up the given file; display the result
handle = open( FILE, 'r')
data   = handle.read()
print( data )

# tokenize the data into features (words); display them
features = word_tokenize( data )
print( features )

# normalize the features to lower case and exclude punctuation
features = [ feature for feature in features if feature.isalpha() ]
features = [ feature.lower() for feature in features ]
print( features )

# create a list of (English) stopwords, and then remove them from the features
from nltk.corpus import stopwords
stopwords = stopwords.words( 'english' )
features  = [ feature for feature in features if feature not in stopwords ]

# count &amp; tabulate the features, and then plot the results -- season to taste
frequencies = FreqDist( features )
plot = frequencies.plot( 10 )

# create a list of unique words (hapaxes); display them
hapaxes = frequencies.hapaxes()
print( hapaxes )

# count &amp; tabulate ngrams from the features -- season to taste; display some
ngrams      = ngrams( features, 2 )
frequencies = FreqDist( ngrams )
frequencies.most_common( 10 )

# create a list each token's length, and plot the result; How many "long" words are there?
lengths = [ len( feature ) for feature in features ]
plot    = FreqDist( lengths ).plot( 10 )

# initialize a stemmer, stem the features, count &amp; tabulate, and output
from nltk.stem import PorterStemmer
stemmer     = PorterStemmer()
stems       = [ stemmer.stem( feature ) for feature in features ]
frequencies = FreqDist( stems )
frequencies.most_common( 10 )

# re-create the features and create a NLTK Text object, so other cool things can be done
features = word_tokenize( data )
text     = Text( features )

# count &amp; tabulate, again; list a given word -- season to taste
frequencies = FreqDist( text )
print( frequencies[ 'love' ] )

# do keyword-in-context searching against the text (concordancing)
print( text.concordance( 'love' ) )

# create a dispersion plot of given words
plot = text.dispersion_plot( [ 'love', 'war', 'man', 'god' ] )

# output the "most significant" bigrams, considering surrounding words (size of window) -- season to taste
text.collocations( num=10, window_size=4 )

# given a set of words, what words are nearby
text.common_contexts( [ 'love', 'war', 'man', 'god' ] )

# list the words (features) most associated with the given word
text.similar( 'love' )

# create a list of sentences, and display one -- season to taste
sentences = sent_tokenize( data )
sentence  = sentences[ 14 ]
print( sentence )

# tokenize the sentence and parse it into parts-of-speech, all in one go
sentence = pos_tag( word_tokenize( sentence ) )
print( sentence )

# extract named enities from a sentence, and print the results
entities = ne_chunk( sentence )
print( entities )

# done
quit()</code>
</pre>
<h2>Links</h2>
<ul>
<li>[0] Python Natural Language Toolkit &#8211; <a href="http://nltk.org/">http://nltk.org/</a></li>
<li>[1] Jupyter &#8211; <a href="http://jupyter.org/">http://jupyter.org/</a></li>
</ul>
]]></content:encoded>
										</item>
		<item>
		<title>Using Voyant Tools to do some &#8220;distant reading&#8221;</title>
		<link>./../2018/04/voyant-tools/index.html</link>
				<pubDate>Wed, 25 Apr 2018 02:44:53 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1172</guid>
				<description><![CDATA[Voyant Tools is often the first go-to tool used by either: 1) new students of text mining and the digital humanities, or 2) people who know what kind of visualization they need/want. [1] Voyant Tools is also one of the longest supported tools described in this bootcamp. As stated the Tool&#8217;s documentation: &#8220;Voyant Tools is [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Voyant Tools is often the first go-to tool used by either: 1) new students of text mining and the digital humanities, or 2) people who know what kind of visualization they need/want. [1] Voyant Tools is also one of the longest supported tools described in this bootcamp.</p>
<p>As stated the Tool&#8217;s documentation: &#8220;Voyant Tools is a web-based text reading and analysis environment. It is a scholarly project that is designed to facilitate reading and interpretive practices for digital humanities students and scholars as well as for the general public.&#8221; To that end it offers a myriad of visualizations and tabular reports characterizing a given text or texts. Voyant Tools works quite well, but like most things, the best use comes with practice, a knowledge of the interface, and an understanding of what the reader wants to express. To all these ends, Voyant Tools counts &amp; tabulates the frequencies of words, plots the results in a number of useful ways, supports topic modeling, and the comparison documents across a corpus. Examples include but are not limited to: word clouds, dispersion plots, networked analysis, &#8220;stream graphs&#8221;, etc.</p>
<table>
<tbody>
<tr>
<td style="text-align: center"><img width="200" src="./../wp-content/uploads/2018/04/dispersion.png" alt="dispersion"><br />
dispersion chart</td>
<td style="text-align: center"><img width="200" src="./../wp-content/uploads/2018/04/network.png" alt="network"><br />
network diagram</td>
</tr>
<tr>
<td style="text-align: center"><img width="200" src="./../wp-content/uploads/2018/04/stream.png" alt="stream"><br />
&#8220;stream&#8221; chart</td>
<td style="text-align: center"><img width="200" src="./../wp-content/uploads/2018/04/wordcloud.png" alt="word cloud"><br />
word cloud</td>
</tr>
<tr>
<td style="text-align: center"><img width="200" src="./../wp-content/uploads/2018/04/concordance.png" alt="concordance"><br />
concordance</td>
<td style="text-align: center"><img width="200" src="./../wp-content/uploads/2018/04/topic-model.jpg" alt="topic model"><br />
topic modeling</td>
</tr>
</tbody>
</table>
<p>Voyant Tools&#8217; initial interface consists of six panes. Each pain encloses a feature/function of Voyant. In the author&#8217;s experience, Voyant Tools&#8217; is better experienced by first expanding one of the panes to a new window (&#8220;Export a URL&#8221;), and then deliberately selecting one of the tools from the &#8220;window&#8221; icon in the upper left-hand corner. There will then be displayed a set of about two dozen tools for use against a document or corpus.</p>
<table>
<tbody>
<tr>
<td style="text-align: center"><img width="400" src="./../wp-content/uploads/2018/04/initial.png" alt="initial layout"><br />
initial layout</td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td style="text-align: center"><img width="400" src="./../wp-content/uploads/2018/04/secondary-1.png" alt="focused layout"><br />
focused layout</td>
</tr>
</tbody>
</table>
<p>Using Voyant Tools the reader can easily ask and answer the following sorts of questions:</p>
<ul>
<li>What words or phrases appear frequently in this text?</li>
<li>How do those words trend throughout the given text?</li>
<li>What words are used in context with a given word?</li>
<li>If the text were divided into T topics, then what might those topics be?</li>
<li>Visually speaking, how do given texts or sets of text cluster together?</li>
</ul>
<p>After a more thorough examination of the reader&#8217;s corpus, and after making the implicit more explicit, Voyant Tools can be more informative. Randomly clicking through its interface is usually daunting to the novice. While Voyant Tools is easy to use, it requires a combination of text mining knoweldge and practice in order to be used effectively. Only then will useful &#8220;distant&#8221; reading be done.</p>
<p>[1] Voyant Tools &#8211; <a href="https://voyant-tools.org/">https://voyant-tools.org/</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>Using a concordance (AntConc) to facilitate searching keywords in context</title>
		<link>./../2018/04/concordance/index.html</link>
				<pubDate>Mon, 23 Apr 2018 11:53:24 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1165</guid>
				<description><![CDATA[A concordance is one of the oldest of text mining tools dating back to at least the 13th century when they were used to analyze and &#8220;read&#8221; religious texts. Stated in modern-day terms, concordances are key-word-in-context (KWIC) search engines. Given a text and a query, concordances search for the query in the text, and return [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>A concordance is one of the oldest of text mining tools dating back to at least the 13th century when they were used to analyze and &#8220;read&#8221; religious texts. Stated in modern-day terms, concordances are key-word-in-context (KWIC) search engines. Given a text and a query, concordances search for the query in the text, and return both the query as well as the words surrounding the query. For example, a query for the word &#8220;pond&#8221; in a book called Walden may return something like the following:</p>
<pre>  1.    the shore of Walden <b>Pond</b>, in Concord, Massachuset
  2.   e in going to Walden <b>Pond</b> was not to live cheaply 
  3.    thought that Walden <b>Pond</b> would be a good place fo
  4.    retires to solitary <b>pond</b>s to spend it. Thus also 
  5.    the woods by Walden <b>Pond</b>, nearest to where I inte
  6.    I looked out on the <b>pond</b>, and a small open field 
  7.   g up. The ice in the <b>pond</b> was not yet dissolved, t
  8.   e whole to soak in a <b>pond</b>-hole in order to swell t
  9.   oping about over the <b>pond</b> and cackling as if lost,
  10.  nd removed it to the <b>pond</b>-side by small cartloads,
  11.  up the hill from the <b>pond</b> in my arms. I built the 
</pre>
<p>The use of a concordance enables the reader to learn the frequency of the given query as well as how it is used within a text (or corpus).</p>
<p>Digital concordances offer a wide range of additional features. For example, queries can be phrases or regular expressions. Search results and be sorted by the words on the left or on the right of the query. Queries can be clustered by the  proximity of their surrounding words, and the results can be sorted accordingly. Queries and their nearby terms can be scored not only by their frequencies but also by the probability of their existence. Concordances can calculate the postion of a query i a text and illustrate the result in the form of a dispersion plot or histogram.</p>
<p><img align="right" width="250" src="./../wp-content/uploads/2018/04/antconc.png" alt="AntConc screen shot">AntConc is a free, cross-platform concordance program that does all of the things listed above, as well as a few others. [1] The interface is not as polished as some other desktop applications, and sometimes the usability can be frustrating. On the other hand, given practice, the use of AntConc can be quite illuminating. After downloading and running AntConc, give these tasks a whirl:</p>
<ul>
<li>use the File menu to open a single file</li>
<li>use the Word List tab to list token (word) frequencies</li>
<li>use the Settings/Tool Preferences/Word List Category to denote a set of stop words</li>
<li>use the Word List tab to regenerate word frequencies</li>
<li>select a word of interest from the frequency list to display the KWIC; sort the result</li>
<li>use the Concordance Plot tab to display the dispersion plot</li>
<li>select the Collocates tab to see what words are near the selected word</li>
<li>sort the collocates by frequency and/or word; use the result to view the concordance</li>
</ul>
<p>The use of a concordance is often done just after the creation of a corpus. (Remember, a corpus can include one or more text files.) But the use of a concordance is much more fruitful and illuminating if the features of a corpus are previously made explicit. Concordances know nothing about parts-of-speech nor grammer. Thus they have little information about the words they are analyzing. To a concordance, every word is merely a token &#8212; the tiniest bit of data. Whereas features are more akin to information because they have value. It is better to be aware of the information at your disposal as opposed to simple data. Do not rush to the use of a concordance before you have some information at hand.</p>
<p>[1] AntConc &#8211; <a href="http://www.laurenceanthony.net/software/antconc/">http://www.laurenceanthony.net/software/antconc/</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>Word clouds with Wordle</title>
		<link>./../2018/04/word-clouds/index.html</link>
				<pubDate>Sun, 22 Apr 2018 14:36:02 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1157</guid>
				<description><![CDATA[A word cloud, or sometimes called a &#8220;tag cloud&#8221; is a fun, easy, and popular way to visualize the characteristics of a text. Usually used to illustrate the frequency of words in a text, a word clouds make some features (&#8220;words&#8221;) bigger than others, sometimes colorize the features, and amass the result in a sort [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><img align="right" width="300" src="./../wp-content/uploads/2018/04/words.png" alt="words">A word cloud, or sometimes called a &#8220;tag cloud&#8221; is a fun, easy, and popular way to visualize the characteristics of a text. Usually used to illustrate the frequency of words in a text, a word clouds make some features (&#8220;words&#8221;) bigger than others, sometimes colorize the features, and amass the result in a sort of &#8220;bag of words&#8221; fashion.</p>
<p>Many people disparage the use of word clouds. This is probably because word clouds may have been over used. The characteristics they illustrate are sometimes sophomoric. Or too much value has been given to their meaning. Despite these facts, a word cloud is an excellent way to initialize the analysis of texts.</p>
<p>There are many word cloud applications and programming libraries, but Wordle is probably the easiest to use as well as the most popular. † [1] To get started, use your Web browser and go to the Wordle site. Click the Create tab and type some text into the resulting text box. Submit the form. Your browser may ask for permissions to run a Java application, and if granted, the result ought to be simple word cloud. The next step is to play with Wordle&#8217;s customizations: fonts, colors, layout, etc. To begin doing useful analysis, open a file from the workshop&#8217;s corpus, and copy/paste it into Wordle. What does the result tell you? Copy/paste a different file into Wordle and then compare/contrast the two word clouds.</p>
<p><img align="right" width="300" src="./../wp-content/uploads/2018/04/places.png" alt="places">By default, Wordle make effort to normalize the input. It removes stop words, lower-cases letters, removes numbers, etc. Wordle then counts &amp; tabulates the frequencies of each word to create the visualization. But the frequency of words only tells one part of a text&#8217;s story. There are other measures of interest. For example, the reader might want to create a word cloud of ngram frequencies, the frequencies of parts-of-speech, or even the log-likelihood scores of significant words. To create the sorts of visualization as word clouds, the reader must first create a colon-delimited list of features/scores, and then submit them under Wordle&#8217;s Advanced tab. The challenging part of this process is created the list of features/scores, and the process can be done using a combination of the tools described in the balance of the workshop.</p>
<p>† Since Wordle is a Web-based Java application, it is also a good test case to see whether or not Java is installed and configured on your desktop computer.</p>
<p>[1] Wordle &#8211; <a href="http://www.wordle.net/">http://www.wordle.net/</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>An introduction to the NLTK: A Jupyter Notebook</title>
		<link>./../2018/04/intro-to-nltk/index.html</link>
				<pubDate>Fri, 13 Apr 2018 03:31:59 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1151</guid>
				<description><![CDATA[The attached file introduces the reader to the Python Natural Langauge Toolkit (NLTK). The Python NLTK is a set of modules and corpora enabling the reader to do natural langauge processing against corpora of one or more texts. It goes beyond text minnig and provides tools to do machine learning, but this Notebook barely scratches [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>The <a href="./../wp-content/uploads/2018/04/introduction-to-nltk.zip">attached file</a> introduces the reader to the Python Natural Langauge Toolkit (NLTK).</p>
<p>The <a href="http://nltk.org/">Python NLTK</a> is a set of modules and corpora enabling the reader to do natural langauge processing against corpora of one or more texts. It goes beyond text minnig and provides tools to do machine learning, but this Notebook barely scratches that surface.</p>
<p>This is my first Python Jupyter Notebook. As such I&#8217;m sure there will be errors in implementation, style, and functionality. For example, the Notebook may fail because the value of FILE is too operating system dependent, or the given file does not exist. Other failures may/will include the lack of additional modules. In these cases, simply read the error messages and follow the instructions. &#8220;Your mileage may vary.&#8221;</p>
<p>That said, through the use of this Notebook, the reader ought to be able to get a flavor for what the Toolkit can do without the need to completly understand the Python language.</p>
]]></content:encoded>
										</item>
		<item>
		<title>What is text mining, and why should I care?</title>
		<link>./../2018/03/what-is-text-mining-and-why-should-i-care/index.html</link>
				<pubDate>Wed, 28 Mar 2018 12:17:05 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1135</guid>
				<description><![CDATA[[This is the first of a number of postings on the topic of text mining. More specifically, this is the first draft of an introductory section of a hands-on bootcamp scheduled for ELAG 2018. As I write the bootcamp&#8217;s workbook, I hope to post things here. Your comments are most welcome. &#8211;ELM] Text mining is [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>[This is the first of a number of postings on the topic of <strong>text mining</strong>. More specifically, this is the first draft of an introductory section of a hands-on bootcamp scheduled for <a href="https://www.elag2018.org/">ELAG 2018</a>. As I write the bootcamp&#8217;s workbook, I hope to post things here. Your comments are most welcome. &#8211;ELM]</p>
<p><img align="right" src="./../wp-content/uploads/2018/03/iris-1-of-3.jpg" alt="Amarylis (1 of 3)"><strong>Text mining</strong> is a process used to identify, enumerate, and analyze syntactic and semantic characteristics of a corpus, where a corpus is a collection of documents usually in the form of plain text files. The purpose of this process it to bring to light previously unknown facts, look for patterns &amp; anomalies in the facts, and ultimately have a better understanding of the corpora as a whole.</p>
<p>The simplest of <strong>text mining</strong> processes merely count &amp; tabulate a document&#8217;s &#8220;tokens&#8221; (usually words but sometimes syllables). The counts &amp; tabulations are akin to the measurements and observations made in the physical and social sciences. Statistical methods can then be applied to the observations for the purposes of answering questions such as:</p>
<ul>
<li>What is the average length of documents in the collection, and do they exhibit a normal distribution?</li>
<li>What are the most common words/phrases in a document?</li>
<li>What are the most common words/phrases in a corpus?</li>
<li>What are the unique words/phrases in a document?</li>
<li>What are the infrequent words/phrases in a corpus?</li>
<li>What words/phrases exist in every document and to what extent?</li>
<li>Where do given words/phrases appear in a text?</li>
<li>What other words surround a given word/phrase?</li>
<li>What words/phrases are truly representative of a document or corpus?</li>
<li>If a document or corpus where to be described in a single word, then what would that word be? How about described in three words? How about describing a document with three topics where each topic is denoted with five words?</li>
</ul>
<p>The answers to these questions bring to light a corpus&#8217;s previously unknown features enabling the reader to use &amp; understand a corpus more fully. Given the answers to these sorts of questions, a person can learn when Don Quixote actually tilts at windmills, to what degree does Thoreau&#8217;s Walden use the word &#8220;ice&#8221; in the same breath as &#8220;pond&#8221;, or how has the defintion of &#8220;scientific practice&#8221; has evolved over time?</p>
<p>Given models created from the results of natural language processing, other characteristics (sentences, parts-of-speech, named entities, etc.) can be parsed. These values can also be counted &amp; tabulated enabling the reader to answer new sets of questions:</p>
<ul>
<li>How difficult is a document to read?</li>
<li>What is being discussed in a corpus? To what degree are the things the names of people, organizations, places, dates, money amounts, etc? What percentage of the personal pronouns are male, female, or neutral?</li>
<li>What is the action in a corpus? What things happen in a document? Are things explained? Said? Measured?</li>
<li>How are things in the corpus described? Overall, are the connotations positive or negative? Do the connotations evolve within a document?</li>
</ul>
<p>The documents in a corpus are often associated with metadata such as authors, titles, dates, subjects/keywords, numeric rankings, etc. This metadata can be combined with measurements &amp; observations to answer questions like:</p>
<ul>
<li>How have the use of specific words/phrases waxed &amp; waned over time?</li>
<li>To what degree do authors write about a given concept?</li>
<li>What are the significant words/phrases described with a given genre?</li>
<li>Are there correlations between words/phrases and given document&#8217;s usefulness score?</li>
</ul>
<p>Again, <strong>text mining</strong> is a process, and the process usually includes the following steps:</p>
<ol>
<li>Articulating a research question</li>
<li>Amassing a corpus to study</li>
<li>Coercing the corpus into a form amenable to computer processing</li>
<li>Taking measurements and making observations</li>
<li>Analyzing the results and drawing conclusions</li>
</ol>
<p>Articulating a research question can be as informally stated as, &#8220;I&#8217;d like to know more about this corpus&#8221; or &#8220;I&#8217;d like to garner an overview of the corpus before I begin reading it in earnest.&#8221; On the other hand, articulating a research question can be as formal as a dissertation&#8217;s thesis statement. The purpose of articulating a research question &#8212; no matter how formal &#8212; is to give you a context for your investigations. Knowing a set of questions to answer helps you determine what tools you will employ in your inquires.</p>
<p><img align="right" src="./../wp-content/uploads/2018/03/iris-2-of-3.jpg" alt="Amarylis (2 of 3)">Creating a corpus is not always as easy as you might think. The corpus can be as small as a single document, or as large as millions. The &#8220;documents&#8221; in the corpus can be anything from tweets from a Twitter feed, Facebook postings, survey comments, magazine or journal articles, reference manuals, books, screen plays, musical lyrics, etc. The original documents may have been born digital or not. If not, then they will need to be digitized in one way or another. It is better if each item in the corpus is associated with metadata, such as authors, titles, dates, keywords, etc. Actually obtaining the documents may be impeded by copyrights, licensing restrictions, or hardware limitations. Once the corpus is obtained, it is useful to organize it into a coherent whole. There is a lot of possible for when it comes to corpus creation.</p>
<p>Coercing a corpus into a form amenable to computer processing is a chore in an of itself. In all cases, the document&#8217;s text needs to be in &#8220;plain&#8221; text. These means the document includes only characters, numbers, punctuation marks, and a limited number of symbols. Plain text files include no graphical formatting. No bold. No italics, no &#8220;codes&#8221; denoting larger or smaller fonts, etc. Documents are usually manifested as files on a computer&#8217;s file system. The files are usually brought together as lists, and each item in the list have many attributes &#8212; the metadata describing each item. Furthermore, each document may need to be normalized, and normalization may include changing the case of all letters to lower case, parsing the document into words (usually called &#8220;features&#8221;), identifying the lemmas or stems of a word, eliminating stop/function words, etc. Coercing your corpus into coherent whole is not to be underestimated. Remember the old adage, &#8220;Garbage in, garbage out.&#8221;</p>
<p>Ironically, taking measurements and making observations is the easy part. There are a myriad of tools for this purpose, and the bulk of this workshop describes how to use them. One important note: it is imperative to format the measurements and observations in a way amenable to analysis. This usually means a tabular format where each column denotes a different observable characteristic. Without formating measurements and observation in tabular formats, it will be difficult to chart and graph any results.</p>
<p>Analyzing the results and drawing conclusions is the subprocess of looping back to Step #1. It is where you attempt to actually answer the questions previously asked. Keep in mind that human interpretation is a necessary part of this subprocess. <strong>Text mining</strong> does not present you with truth, only facts. It is up to you to interpret the facts. For example, suppose the month is January and the thermometer outside reads 32º Fahrenheit (0º Centigrade), then you might think nothing is amiss. On the other hand, suppose the month is August, and the thermometer still reads 32º, then what might you think? &#8220;It is really cold,&#8221; or maybe, &#8220;The thermometer is broken.&#8221; Either way, you bring context to the observations and interpret things accordingly. <strong>Text mining</strong> analysis works in exactly the same way.</p>
<p><img align="right" src="./../wp-content/uploads/2018/03/iris-3-of-3.jpg" alt="Amarylis (3 of 3)">Finally, <strong>text mining</strong> is not a replacement for the process of traditional reading. Instead, it ought to be considered as complementary, supplemental, and a natural progression of traditional reading. With the advent of ubiquitous globally networked computers, the amount of available data and information continues to grow exponentially. <strong>Text mining</strong> provides a means to &#8220;read&#8221; massive amounts of text quickly and easily. The process is akin the inclusion of now-standard parts of a scholarly book: title page, verso complete with bibliographic and provenance metadata, table of contents, preface, introduction, divisions into section and chapters, footnotes, bibliography, and a back-of-the-book index. All of these features make a book&#8217;s content more accessible. <strong>Text mining</strong> processes applied to books is the next step in accessibility. <strong>Text mining</strong> is often described as &#8220;distant&#8221; or &#8220;scalable&#8221; reading, and it is often contrasted with the &#8220;close&#8221; reading. This is a false dichotomy, but only after <strong>text mining</strong> becomes more the norm will the dichotomy fade.</p>
<p>All that said, the totality of this hands-on workshop is based on the following outline:</p>
<ol type="I">
<li>What is <strong>text mining</strong>, and why should I care?</li>
<li>Creating a corpus</li>
<li>Creating a plain text version of a corpus with Tika</li>
<li>Using Voyant Tools to do some &#8220;distant&#8221; reading</li>
<li>Using a concordance, like AntConc, to facilitate searching keywords in context</li>
<li>Creating a simple word list with a text editor</li>
<li>Cleaning &amp; analyzing word lists with OpenRefine</li>
<li>Charting &amp; graphing word lists with Tableau Public</li>
<li>Increasing meaning by extracting parts-of-speech with the Standford POS Tagger</li>
<li>Increasing meaning by extracting named entities with the Standford NER</li>
<li>Identifying themes and clustering documents using MALLET</li>
</ol>
<p>By the end of the workshop you will have increased your ability to:</p>
<ul>
<li>identify patterns, anomalies, and trends in a corpus</li>
<li>practice both &#8220;distant&#8221; and &#8220;scalable&#8221; reading</li>
<li>enhance &amp; complement your ability to do &#8220;close&#8221; reading</li>
<li>use &amp; understand any corpus of poetry or prose</li>
</ul>
<p>The workshop is operating system agnostic, and all the software is freely available on the &#8216;Net, or already installed on your computer. Active participation requires zero programming, but readers must bring their own computer, and they must be willing to learn how to use a text editor such as NotePad++ or BBEdit. NotePad, WordPad and TextEdit are totally insufficient.</p>
]]></content:encoded>
										</item>
		<item>
		<title>How to do text mining in 69 words</title>
		<link>./../2017/08/69-words/index.html</link>
				<pubDate>Tue, 15 Aug 2017 13:38:34 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=1096</guid>
				<description><![CDATA[Doing just about any type of text mining is a matter of: 0) articulating a research question, 1) acquiring a corpus, 2) cleaning the corpus, 3) coercing the corpus into a data structure one’s software can understand, 4) counting &#38; tabulating characteristics of the corpus, and 5) evaluating the results of Step #4. Everybody wants [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Doing just about any type of text mining is a matter of: 0) articulating a research question, 1) acquiring a corpus, 2) cleaning the corpus, 3) coercing the corpus into a data structure one’s software can understand, 4) counting &amp; tabulating characteristics of the corpus, and 5) evaluating the results of Step #4. Everybody wants to do Step #4 &amp; #5, but the initial steps usually take more time than desired.</p>
<p align="center">
<img src="./../wp-content/uploads/2017/08/painting.jpg" width="300" height="389" alt="painting"></p>
]]></content:encoded>
										</item>
		<item>
		<title>Achieving perfection</title>
		<link>./../2016/06/levenshtein/index.html</link>
				<comments>./../2016/06/levenshtein/index.html#comments</comments>
				<pubDate>Fri, 03 Jun 2016 09:48:09 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">./../index.html?p=1083</guid>
				<description><![CDATA[Through the use of the Levenshtein algorithm, I am achieving perfection when it comes to searching VIAF. Well, almost. I am making significant progress with VIAF Finder [0], but now I have exploited the use of the Levenshtein algorithm. In fact, I believe I am now able to programmatically choose VIAF identifiers for more than [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Through the use of the Levenshtein algorithm, I am achieving perfection when it comes to searching VIAF. Well, almost.</p>
<p><img src="./../wp-content/uploads/2016/06/trastevare.jpg" alt="trastevare" align="right">I am making significant progress with VIAF Finder [0], but now I have exploited the use of the Levenshtein algorithm. In fact, I believe I am now able to programmatically choose VIAF identifiers for more than 50 or 60 percent of the authority records.</p>
<p>The Levenshtein algorithm measures the “distance” between two strings. [1] This distance is really the number of keystrokes necessary to change one string into another. For example, the distance between “eric” and “erik” is 1. Similarly the distance between “Stefano B” and “Stefano B.” is still 1. Along with a colleague (Stefano Bargioni), I took a long, hard look at the source code of an OpenRefine reconciliation service which uses VIAF as the backend database. [2] The code included the calculation of a ratio to denote the relative distance of two strings. This ratio is the quotient of the longest string minus the Levenshtein distance divided by the length of the longest string. From the first example, the distance is 1 and the length of the string “eric” is 4, thus the ratio is (4 &#8211; 1) / 4, which equals 0.75. In other words, 75% of the characters are correct. In the second example, “Stefano B.” is 10 characters long, and thus the ratio is (10 &#8211; 1) / 10, which equals 0.9. In other words, the second example is more correct than the first example.</p>
<p>Using the value of MARC 1xx$a of an authority file, I can then query VIAF. The SRU interface returns 0 or more hits. I can then compare my search string with the search results to create a ranked list of choices. Based on this ranking, I am able to more intelligently choose VIAF identifiers. For example, from my debugging output, if I get 0 hits, then I do nothing:</p>
<pre>       query: Lucariello, Donato
        hits: 0
</pre>
<p>If I get too many hits, then I still do nothing:</p>
<pre>       query: Lucas Lucas, Ramón
        hits: 18
     warning: search results out of bounds; consider increasing MAX
</pre>
<p>If I get 1 hit, then I automatically save the result, which seems to be correct/accurate most of the time, even though the Levenshtein distance may be large:</p>
<pre>       query: Lucaites, John Louis
        hits: 1
       score: 0.250     John Lucaites (57801579)
      action: perfection achieved (updated name and id)
</pre>
<p>If I get many hits, and one of them exactly matches my query, then I “achieved perfection” and I save the identifier:</p>
<pre>       query: Lucas, John Randolph
        hits: 3
       score: 1.000     Lucas, John Randolph (248129560)
       score: 0.650     Lucas, John R. 1929- (98019197)
       score: 0.500     Lucas, J. R. 1929- (2610145857009722920913)
      action: perfection achieved (updated name and id)
</pre>
<p>If I get many hits, and many of them are exact matches, then I simply use the first one (even though it might not be the “best” one):</p>
<pre>       query: Lucifer Calaritanus
        hits: 5
       score: 1.000     Lucifer Calaritanus (189238587)
       score: 1.000     Lucifer Calaritanus (187743694)
       score: 0.633     Luciferus Calaritanus -ca. 370 (1570145857019022921123)
       score: 0.514     Lucifer Calaritanus gest. 370 n. Chr. (798145857991023021603)
       score: 0.417     Lucifer, Bp. of Cagliari, d. ca. 370 (64799542)
      action: perfection achieved (updated name and id)
</pre>
<p>If I get many hits, and none of them are perfect, but the ratio is above a configured threshold (0.949), then that is good enough for me (even if the selected record is not the “best” one):</p>
<pre>       query: Palanque, Jean-Remy
        hits: 5
       score: 0.950     Palanque, Jean-Rémy (106963448)
       score: 0.692     Palanque, Jean-Rémy, 1898- (46765569)
       score: 0.667     Palanque, Jean Rémy, 1898- (165029580)
       score: 0.514     Palanque, J. R. (Jean-Rémy), n. 1898 (316408095)
       score: 0.190     Marrou-Davenson, Henri-Irénée, 1904-1977 (2473942)
      action: perfection achieved (updated name and id)
</pre>
<p>By exploiting the Levenshtein algorithm, and by learning from the good work of others, I have been able to programmatically select VIAF identifiers for more than half of my authority records. When one has as many as 120,000 records to process, this is a good thing. Moreover, this use of the Levenshtein algorithm seems to produce more complete results when compared to the VIAF AutoSuggest API. AutoSuggest identified approximately 20 percent of my VIAF identifiers, while my Levenshtein algorithm/logic identifies more than 40 or 50 percent. AutoSuggest is much faster though. Much.</p>
<p>Fun with the intelligent use of computers, and think of the possibilities.</p>
<p>[0] VIAF Finder &#8211; <a href="./../2016/05/viaf-finder/index.html">./../2016/05/viaf-finder/index.html</a></p>
<p>[1] Levenshtein &#8211; <a href="http://bit.ly/1Wz3qZC">http://bit.ly/1Wz3qZC</a></p>
<p>[2] reconciliation service &#8211; <a href="https://github.com/codeforkjeff/refine_viaf">https://github.com/codeforkjeff/refine_viaf</a></p>
]]></content:encoded>
							<wfw:commentRss>./../2016/06/levenshtein/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>VIAF Finder</title>
		<link>./../2016/05/viaf-finder/index.html</link>
				<comments>./../2016/05/viaf-finder/index.html#comments</comments>
				<pubDate>Fri, 27 May 2016 13:34:13 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=1076</guid>
				<description><![CDATA[This posting describes VIAF Finder. In short, given the values from MARC fields 1xx$a, VIAF Finder will try to find and record a VIAF identifier. [0] This identifier, in turn, can be used to facilitate linked data services against authority and bibliographic data. Quick start Here is the way to quickly get started: download and [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting describes VIAF Finder. In short, given the values from MARC fields 1xx$a, VIAF Finder will try to find and record a VIAF identifier. [0] This identifier, in turn, can be used to facilitate linked data services against authority and bibliographic data.</p>
<h2>Quick start</h2>
<p>Here is the way to quickly get started:</p>
<ol>
<li>download and uncompress the distribution to your Unix-ish (Linux or Macintosh) computer [1]</li>
<li>put a file of MARC records named authority.mrc in the ./etc directory, and the file name is VERY important</li>
<li>from the root of the distribution, run ./bin/build.sh</li>
</ol>
<p>VIAF Finder will then commence to:</p>
<ol>
<li>create a “database” from the MARC records, and save the result in ./etc/authority.db</li>
<li>use the VIAF API (specifically the AutoSuggest interface) to identify VAIF numbers for each record in your database, and if numbers are identified, then the database will be updated accordingly [3]</li>
<li>repeat Step #2 but through the use of the SRU interface</li>
<li>repeat Step #3 but limiting searches to authority records from the Vatican</li>
<li>repeat Step #3 but limiting searches to the authority named ICCU</li>
<li>done</li>
</ol>
<p>Once done the reader is expected to programmatically loop through ./etc/authority.db to update the 024 fields of their MARC authority data.</p>
<h2>Manifest</h2>
<p>Here is a listing of the VIAF Finder distribution:</p>
<ul>
<li><strong>00-readme.txt</strong> &#8211; this file</li>
<li><strong>bin/build.sh</strong> &#8211; “One script to rule them all”</li>
<li><strong>bin/initialize.pl</strong> &#8211; reads MARC records and creates a simple “database”</li>
<li><strong>bin/make-dist.sh</strong> &#8211; used to create a distribution of this system</li>
<li><strong>bin/search-simple.pl</strong> &#8211; rudimentary use of the SRU interface to query VIAF</li>
<li><strong>bin/search-suggest.pl</strong> &#8211; rudimentary use of the AutoSuggest interface to query VIAF</li>
<li><strong>bin/subfield0to240.pl</strong> &#8211; sort of demonstrates how to update MARC records with 024 fields</li>
<li><strong>bin/truncate.pl</strong> &#8211; extracts the first n number of MARC records from a set of MARC records, and useful for creating smaller, sample-sized datasets</li>
<li><strong>etc</strong> &#8211; the place where the reader is expected to save their MARC files, and where the database will (eventually) reside</li>
<li><strong>lib/subroutines.pl</strong> &#8211; a tiny set of&#8230; subroutines used to read and write against the database</li>
</ul>
<h2>Usage</h2>
<p>If the reader hasn’t figured it out already, in order to use VIAF Finder, the Unix-ish computer needs to have Perl and various Perl modules &#8212; most notably, MARC::Batch &#8212; installed.</p>
<p>If the reader puts a file named authority.mrc in the ./etc directory, and then runs ./bin/build.sh, then the system ought to run as expected. A set of 100,000 records over a wireless network connection will finish processing in a matter of many hours, if not the better part of a day. Speed will be increased over a wired network, obviously.</p>
<p>But in reality, most people will not want to run the system out of the box. Instead, each of the individual tools will need to be run individually. Here’s how:</p>
<ol>
<li>save a file of MARC (authority) records anywhere on your file system</li>
<li>not recommended, but optionally edit the value of DB in bin/initialize.pl</li>
<li>run ./bin/initialize.pl feeding it the name of your MARC file, as per Step #1</li>
<li>if you edited the value of DB (Step #2), then edit the value of DB in bin/search-suggest.pl, and then run ./bin/search-suggest.pl</li>
<li>if you want to possibly find more VIAF identifiers, then repeat Step #4 but with ./bin/search-simple.pl and with the “simple” command-line option</li>
<li>optionally repeat Step #5, but this time use the “named” command-line option, and the possible named values are documented as a part of the VAIF API (i.e., “bav” denotes the Vatican</li>
<li>optionally repeat Step #6, but with other “named” values</li>
<li>optionally repeat Step #7 until you get tired</li>
<li>once you get this far, the reader may want to edit bin/build.sh, specifically configuring the value of MARC, and running the whole thing again &#8212; “one script to rule them all”</li>
<li>done</li>
</ol>
<p>A word of caution is now in order. VIAF Finder reads &amp; writes to its local database. To do so it slurps up the whole thing into RAM, updates things as processing continues, and periodically dumps the whole thing just in case things go awry. Consequently, if you want to terminate the program prematurely, try to do so a few steps after the value of “count” has reached the maximum (500 by default). A few times I have prematurely quit the application at the wrong time and blew my whole database away. This is the cost of having a “simple” database implementation.</p>
<h2>To do</h2>
<p>Alas, search-simple.pl contains a memory leak. Search-simple.pl makes use of the SRU interface to VIAF, and my SRU queries return XML results. Search-simple.pl then uses the venerable XML::XPath Perl module to read the results. Well, after a few hundred queries the totality of my computer&#8217;s RAM is taken up, and the script fails. One work-around would be to request the SRU interface to return a different data structure. Another solution is to figure out how to destroy the XML::XPath object. Incidentally, because of this memory leak, the integer fed to simple-search.pl was implemented allowing the reader to restart the process at a different point dataset. Hacky.</p>
<h2>Database</h2>
<p>The use of the database is key to the implementation of this system, and the database is really a simple tab-delimited table with the following columns:</p>
<ol>
<li><strong>id</strong> (MARC 001)</li>
<li><strong>tag</strong> (MARC field name)</li>
<li><strong>_1xx</strong> (MARC 1xx)</li>
<li><strong>a</strong> (MARC 1xx$a)</li>
<li><strong>b</strong> (MARC 1xx$b and usually empty)</li>
<li><strong>c</strong> (MARC 1xx$c and usually empty)</li>
<li><strong>d</strong> (MARC 1xx$d and usually empty)</li>
<li><strong>l</strong> (MARC 1xx$l and usually empty)</li>
<li><strong>n</strong> (MARC 1xx$n and usually empty)</li>
<li><strong>p</strong> (MARC 1xx$p and usually empty)</li>
<li><strong>t</strong> (MARC 1xx$t and usually empty)</li>
<li><strong>x</strong> (MARC 1xx$x and usually empty)</li>
<li><strong>suggestions</strong> (a possible sublist of names, Levenshtein scores, and VIAF identifiers)</li>
<li><strong>viafid</strong> (selected VIAF identifier)</li>
<li><strong>name</strong> (authorized name from the VIAF record)</li>
</ol>
<p>Most of the fields will be empty, especially fields b through x. The intention is/was to use these fields to enhance or limit SRU queries. Field #13 (suggestions) is for future, possible use. Field #14 is key, literally. Field #15 is a possible replacement for MARC 1xx$a. Field #15 can also be used as a sort of sanity check against the search results. “Did VIAF Finder really identify the correct record?”</p>
<p>Consider pouring the database into your favorite text editor, spreadsheet, database, or statistical analysis application for further investigation. For example, write a report against the database allowing the reader to see the details of the local authority record as well as the authority data in VIAF. Alternatively, open the database in OpenRefine in order to count &amp; tabulate variations of data it contains. [4] Your eyes will widened, I assure you.</p>
<h2>Commentary</h2>
<p><img src="./../wp-content/uploads/2016/05/bird.jpg" align="right" alt="bird">First, this system was written during my “artist’s education adventure” which included a three-month stint in Rome. More specifically, this system was written for the good folks at Pontificia Università della Santa Croce. “Thank you, <strong>Stefano Bargioni</strong>, for the opportunity, and we did some very good collaborative work.”</p>
<p>Second, I first wrote search-simple.pl (SRU interface) and I was able to find VIAF identifiers for about 20% of my given authority records. I then enhanced search-simple.pl to include limitations to specific authority sets. I then wrote search-suggest.pl (AutoSuggest interface), and not only was the result many times faster, but the result was just as good, if not better, than the previous result. This felt like two steps forward and one step back. Consequently, the reader may not ever need nor want to run search-simple.pl.</p>
<p>Third, while the AutoSuggest interface was much faster, I was not able to determine how suggestions were made. This makes the AutoSuggest interface seem a bit like a “black box”. One of my next steps, during the copious spare time I still have here in Rome, is to investigate how to make my scripts smarter. Specifically, I hope to exploit the use of the Levenshtein distance algorithm. [5]</p>
<p>Finally, I would not have been able to do this work without the “shoulders of giants”. Specifically, Stefano and I took long &amp; hard looks at the code of people who have done similar things. For example, the source code of <strong>Jeff Chiu</strong>’s OpenRefine Reconciliation service demonstrates how to use the Levenshtein distance algorithm. [6] And we found <strong>Jakob Voß</strong>’s viaflookup.pl useful for pointing out AutoSuggest as well as elegant ways of submitting URL’s to remote HTTP servers. [7] “Thanks, guys!”</p>
<p>Fun with MARC-based authority data!</p>
<h2>Links</h2>
<p>[0] VIAF &#8211; <a href="http://viaf.org/">http://viaf.org/</a></p>
<p>[1] VIAF Finder distribution &#8211; <a href="http://infomotions.com/sandbox/pusc/etc/viaf-finder.tar.gz">http://infomotions.com/sandbox/pusc/etc/viaf-finder.tar.gz</a></p>
<p>[2] VIAF API &#8211; <a href="http://www.oclc.org/developer/develop/web-services/viaf.en.html">http://www.oclc.org/developer/develop/web-services/viaf.en.html</a></p>
<p>[4] OpenRefine &#8211; <a href="http://openrefine.org/">http://openrefine.org/</a></p>
<p>[5] Levenshtein distance &#8211; <a href="https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance">https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance</a></p>
<p>[6] Chiu’s reconciliation service &#8211; <a href="https://github.com/codeforkjeff/refine_viaf">https://github.com/codeforkjeff/refine_viaf</a></p>
<p>[7] Voß’s viaflookup.pl &#8211; <a href="https://gist.github.com/nichtich/832052/3274497bfc4ae6612d0c49671ae636960aaa40d2">https://gist.github.com/nichtich/832052/3274497bfc4ae6612d0c49671ae636960aaa40d2</a></p>
]]></content:encoded>
							<wfw:commentRss>./../2016/05/viaf-finder/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Making stone soup: Working together for the advancement of learning and teaching</title>
		<link>./../2016/05/stone-soup/index.html</link>
				<pubDate>Mon, 09 May 2016 12:26:41 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=1067</guid>
				<description><![CDATA[It is simply not possible for any of us to do our jobs well without the collaboration of others. Yet specialization abounds, jargon proliferates, and professional silos are everywhere. At the same time we all have a shared goal: to advance learning and teaching. How are we to balance these two seemingly conflicting characteristics in [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>It is simply not possible for any of us to do our jobs well without the collaboration of others. Yet specialization abounds, jargon proliferates, and professional silos are everywhere. At the same time we all have a shared goal: to advance learning and teaching. How are we to balance these two seemingly conflicting characteristics in our workplace? How can we satisfy the demands of our day-to-day jobs and at the same time contribute to the work of others? ‡</p>
<p><img src="./../wp-content/uploads/2016/05/bouquet.jpg" alt="bouquet"> <img src="./../wp-content/uploads/2016/05/sunflowers.jpg" alt="sunflowers"> <img src="./../wp-content/uploads/2016/05/roses.jpg" alt="roses"></p>
<p>The answer is not technical but instead rooted in what it means to a part of a holistic group of people. The answer is rooted in things like the abilities to listen, to share, to learn, to go beyond tolerance and towards respect, to take a sincere interest in the other person&#8217;s point of view, to discuss, and to take to heart the idea that nobody really sees the whole picture.</p>
<p>As people &#8212; members of the human race &#8212; we form communities with both our strengths &amp; our weaknesses, with things we know would benefit the group &amp; things we would rather not share, with both our beauties and our blemishes. This is part of what it means to be people. There is no denying it, and if we try, then we are only being less of who we really are. To deny it is an unrealistic expectation. We are not gods. We are not actors. We are people, and being people &#8212; real people &#8212; is a good thing.</p>
<p>Within any community, there are norms of behavior. Without norms of behavior, there is really no community, only chaos and anarchy. In anarchy and chaos, physical strength is oftentimes the defining characteristic of decision-making, but when the physically strong are outnumbered by the emotionally mature and intellectually aware, then chaos and anarchy are overthrown for a more holistic set of decision-making proceses. Examples include democracy, consensus building, and even the possibility governance through benevolent dictatorship.</p>
<p>A community&#8217;s norms are both written and unwritten. Our workplaces are good examples of such communities. On one hand there may be policies &amp; procedures, but these policies &amp; procedures usually describe workflows, the methods used to evaluate employees, or to some extent strategic plans. They might outline how meetings are conducted or how teams are to accomplish their goals. On the other hand, these policies &amp; procedures do not necessarily outline how to talk with fellow employees around the virtual water cooler, how to write email messages, nor how to greet each on a day-to-day basis. Just as importantly, our written norms of behavior do not describe how to treat and communicate with people outside one&#8217;s own set of personal expertise. Don&#8217;t get me wrong. This does not mean I am advocating written norms for such things, but such things do need to be discussed and agreed upon. Such are the beginnings of stone soup.</p>
<p>Increasingly we seem to work in disciplines of specialization, and these specializations, necessarily, generate their own jargon. &#8220;Where have all the generalists gone? Considering our current environment, is it really impossible to be a Renaissance Man^h^h^h Person?&#8221; Increasingly, the answer to the first question is, &#8220;The generalists have gone the way of Leonardo DiVinci.&#8221; And the answer to the second question is, &#8220;Apparently so.&#8221;</p>
<p>For example, some of us lean more towards formal learning, teaching, research, and scholarship. These are the people who have thoroughly studied and now teach a particular academic discipline. These same people have written dissertations, which, almost by defintion, are very specialized, if not unique. They live in a world pursuant of truth while balancing the worlds of rigorous scholarly publishing and student counseling.</p>
<p>There are those among us who thoroughly know the in&#8217;s and out&#8217;s of computer technology. These people can enumerate the differences between a word processor and a text editor. They can compare &amp; contrast operating systems. These people can configure &amp; upgrade software. They can make computers communicate on the Internet. They can trouble-shoot computer problems when the computers seem &#8212; for no apparent reason &#8212; to just break.</p>
<p>Finally, there are those among us who specialize in the collection, organization, preservation, and dissemination of data, information, and knowledge. These people identify bodies of content, systematically describe it, make every effort to preserve it for posterity, and share it with their respective communities. These people deal with MARC records, authority lists, and subject headings.</p>
<p>Despite these truisms, we &#8212; our communities &#8212; need to figure out how to work together, how to bridge the gaps in our knowledge (a consequence of specialization), and how to achieve our shared goals. This is an aspect of our metaphoric stone soup.</p>
<p>So now the problem can be re-articulated. We live and work in communities of unwritten and poorly articulated norms. To complicate matters, because of our specializations, we all approach our situations from different perspectives and use different languages to deal with the situations. As I was discussing this presentation with a dear friend &amp; colleague, the following poem attributed to Prissy Galagarian was brought to my attention†, and it eloquently states the imperative:</p>
<blockquote>
<pre>  The Person Next to You

  The person next to you is the greatest miracle
   and the greatest mystery you will ever
   meet at this moment.

  The person next to you is an inexhaustible
   reservoir of possibility,
   desire and dread,
   smiles and frowns, laughter and tears,
   fears and hopes,
   all struggling to find expression.

  The person next to you believes in something,
   stands for something, counts for something,
   lives for something, labors for something,
   waits for something, runs from something,
   runs to something.

  The person next to you has problems and fears,
   wonders how they're doing,
   is often undecided and unorganized
   and painfully close to chaos!
   Do they dare speak of it to you?

  The person next to you can live with you
   not just alongside you,
   not just next to you.

  The person next to you is a part of you.
   for you are the person next to them.</pre>
</blockquote>
<p>How do we overcome these impediments in order to achieve our mutual goals of the workplace? The root of the answer lies in our ability to really &amp; truly respect our fellow employees.</p>
<p>Working together towards a shared goals is a whole lot like making &#8220;stone soup&#8221;. Do you know the story of &#8220;stone soup&#8221;? A man comes into a village, and asks the villagers for food. Every time he asks he is told that there is nothing to give. Despite an apparent lack of anything, the man sets up a little fire, puts a pot of water on, and drops a stone into the pot. Curious people come by, and they ask, &#8220;What are you doing?&#8221; He says, &#8220;I&#8217;m making stone soup, but I think it needs a bit of flavor.&#8221; Wanting to participate, people begin to add their own things to the soup. &#8220;I think I have some carrots,&#8221; says one villager. &#8220;I believe I have a bit of celery,&#8221; says another. Soon the pot is filled with bits of this and that and the other thing: onions, salt &amp; pepper, a beef bone, a few tomatoes, a couple of potatoes, etc. In the end, a rich &amp; hearty stew is made, enough for everybody to enjoy. Working together, without judgement nor selfishness, the end result is a goal well-accomplished.</p>
<p>This can happen in the workplace as well. It can happen in our community where the goal is teaching &amp; learning. And in the spirit of cooking, here&#8217;s a sort of recipe:</p>
<ol>
<li>Understand that you do not have all the answers, and in fact, nobody does; nobody has the complete story nor sees the whole picture. Only after working on a task, and completing it at least once, will a holistic perspective begin to develop.</li>
<li>Understand that nobody&#8217;s experience is necessarily more important than the others&#8217;, including your own. Everybody has something to offer, and while your skills &amp; expertise may be imperative to success, so are the skills &amp; expertise of others. And if there an established hierarchy within your workplace, understand that the hierarchy is all but arbitrary, and maintained by people with an over-developed sense of power. We all have more things in common than differences.</li>
<li>Spend the time to get to know your colleagues, and come to a sincere appreciation of who they are as a person as well as a professional. This part of the &#8220;recipe&#8221; may include formal or informal social events inside or outside the workplace. Share a drink or a meal. Take a walk outside or through the local museum. Do this in groups of two or more. Such activities provide a way for everybody involved to reflect upon an outside stimulus. Through this process the interesting characteristics of the others will become apparent. Appreciate these characteristics. Do not judge them, but rather respect them.</li>
<li>Remember, listening is a wonderful skill, and when the other person talks for a long time, they will go away thinking they had a wonderful conversation. Go beyond hearing what a person says. Internalize what they say. Ask meaningful &amp; constructive questions, and speak their name frequently during discussions. These things will demonstrate your true intentions. Through this process the others will become a part of you, and you will become a part of them.</li>
<li>Combine the above ingredients, bring them to a boil, and then immediately lower the temperature allowing everything to simmer for a good long time. Keeping the pot boiling will only overheat the soup and make a mess. Simmering will keep many of the individual parts intacked, enable the flavors to mellow, and give you time to set the table for the next stage of the process.</li>
</ol>
<p>Finally, making stone soup does not require fancy tools. A cast iron pot will work just as well as one made from aluminium or teflon. What is needed is a container large enough to hold the ingredients and withstand the heat. It doesn&#8217;t matter whether or not the heat source is gas, electric, or fire. It just has to be hot enough to allow boiling and then simmering. Similarly, stone soup in the workplace does not require Google Drive, Microsoft Office 365, nor any type of wiki. Sure, those things can facilitate project work, but they are not the means for getting to know your colleagues. Only through personal interaction will such knowledge be garnered.</p>
<p>Working together for the advancement of learning &amp; teaching &#8212; or just about any other type of project work &#8212; is a lot like making stone soup. Everybody contributes a little something, and the result is nourishing meal for all.</p>
<p>‡ This essay was written as a presentation for the <a href="http://www.amicalnet.org/">AMICAL</a> annual conference which took place in Rome (May 12-14, 2016), and this essay is available as a <a href="./../wp-content/uploads/2016/05/stone-soup.pdf">one-page handout</a>.</p>
<p>† <a href="http://fraternalthoughts.blogspot.it/2011/02/person-next-to-you.html">http://fraternalthoughts.blogspot.it/2011/02/person-next-to-you.html</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>Editing authorities at the speed of four records per minute</title>
		<link>./../2016/04/editing-authorities/index.html</link>
				<pubDate>Thu, 07 Apr 2016 07:52:37 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=1038</guid>
				<description><![CDATA[This missive outlines and documents an automated process I used to &#8220;cleanup&#8221; and &#8220;improve&#8221; a set of authority records, or, to put it another way, how I edited authorities at the speed of four records per minute. As you may or may not know, starting in September 2015, I commenced upon a sort of &#8220;leave [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This missive outlines and documents an automated process I used to &#8220;cleanup&#8221; and &#8220;improve&#8221; a set of authority records, or, to put it another way, how I edited authorities at the speed of four records per minute.</p>
<p><img src="./../wp-content/uploads/2016/04/spring.jpg" alt="spring" align="right">As you may or may not know, starting in September 2015, I commenced upon a sort of &#8220;leave of absence&#8221; from my employer.† This leave took me to Tuscany, Venice, Rome, Provence, Chicago, Philadelphia, Boston, New York City, and back to Rome. In Rome I worked for the <a href="http://aarome.org/">American Academy of Rome</a> doing short-term projects in the library. The first project revolved around authority records. More specifically, the library&#8217;s primary clientele were Americans, but the catalog&#8217;s authority records included a smattering of Italian headings. The goal of the project was to automatically convert as many of the &#8220;invalid&#8221; Italian headings into &#8220;authoritative&#8221; Library of Congress headings.</p>
<h2>Identify &#8220;invalid&#8221; headings</h2>
<p><img src="./../wp-content/uploads/2016/04/pantheon.jpg" alt="pantheon" align="right">When I first got to Rome I had the good fortune to hang out with <strong>Terry Reese</strong>, the author of the venerable <a href="http://marcedit.reeset.net/">MarcEdit</a>.‡ He was there giving workshops. I participated in the workshops. I listened, I learned, and I was grateful for a Macintosh-based version of Terry&#8217;s application.</p>
<p>When the workshops were over and Terry had gone home I began working more closely with <strong>Sebastian Hierl</strong>, the director of the Academy&#8217;s library.❧ Since the library was relatively small (about 150,000 volumes), and because the Academy used <a href="https://koha-community.org/">Koha</a> for its integrated library system, it was relatively easy for Sebastian to give me the library&#8217;s entire set of 124,000 authority records in MARC format. I fed the authority records into MarcEdit, and ran a report against them. Specifically, I asked MarcEdit to identify the &#8220;invalid&#8221; records, which really means, &#8220;Find all the records not found in the Library of Congress database.&#8221; The result was a set of approximately 18,000 records or approximately 14% of the entire file. I then used MarcEdit to extract the &#8220;invalid&#8221; records from the complete set, and this became my working data.</p>
<h2>Search &amp; download</h2>
<p><img src="./../wp-content/uploads/2016/04/alter.jpg" alt="alter" align="right">I next created a rudimentary table denoting the &#8220;invalid&#8221; records and the subsequent search results for them. This tab-delimited file included values of MARC field 001, MARC field 1xx, an integer denoting the number of times I searched for a matching record, an integer denoting the number of records I found, an identifier denoting a Library of Congress authority record of choice, and a URL providing access to the remote authority record. This table was initialized using a script called <a href="./../wp-content/uploads/2016/04/authority2list.pl">authority2list.pl</a>. Given a file of MARC records, it outputs the table.</p>
<p>I then systematically searched the Library of Congress for authority headings. This was done with a script called <a href="./../wp-content/uploads/2016/04/search.pl">search.pl</a>. Given the table created in the previous step, this script looped through each authority, did a rudimentary search for a valid entry, and output an updated version of the table. This script was a bit &#8220;tricky&#8221;.❦ It first searched the Library of Congress by looking for the value of MARC 1xx$a. If no records were found, then no updating was done and processing continued. If one record was found, then the Library of Congress identifier was saved to the output and processing continued. If many records were found, then a more limiting search was done by adding a date value extracted from MARC 1xx$d. Depending on the second search result, the output was updated (or not), and processing continued. Out of original 18,000 &#8220;invalid&#8221; records, about 50% of them were identified with no (zero) Library of Congress records, about 30% were associated with multiple headings, and the remaining 20% (approximately 3,600 records) were identified with one and only one Library of Congress authority record.</p>
<p>I now had a list of 3,600 &#8220;valid&#8221; authority records, and I needed to download them. This was done with a script called <a href="./../wp-content/uploads/2016/04/harvest.pl">harvest.pl</a>. This script is really a wrapper around a program called <a href="https://www.gnu.org/software/wget/">GNU Wget</a>. Given my updated table, the script looped through each row, and if it contained a URL pointing to a Library of Congress authority record, then the record was cached to the file system. Since the downloaded records were formatted as MARCXML, I then needed to transform them into MARC21. This was done with a pair of scripts: <a href="./../wp-content/uploads/2016/04/xml2marc.sh">xml2marc.sh</a> and <a href="./../wp-content/uploads/2016/04/xml2marc.pl">xml2marc.pl</a>. The former simply looped through each file in a directory, and the later did the actual transformation but along the way updated MARC 001 to the value of the local authority record.</p>
<h2>Verify and merge</h2>
<p><img src="./../wp-content/uploads/2016/04/backyard.jpg" alt="backyard" align="right">In order to allow myself as well as others to verify that correct records had been identified, I wrote another pair of programs: marc2compare.pl and compare2html.pl. Given two MARC files, <a href="./../wp-content/uploads/2016/04/marc2compare.pl">marc2compare.pl</a> created a list of identifiers, original authority values, proposed authority values, and URLs pointing to full descriptions of each. This list was intended to be poured into a spreadsheet for compare &amp; contrast purposes. The second script, <a href="./../wp-content/uploads/2016/04/compare2html.pl">compare2html.pl</a>, simply took the output of the first and transformed it into a simple HTML page making it easier for a librarian to evaluate correctness.</p>
<p>Assuming the 3,600 records were correct, the next step was to merge/overlay the old records with the new records. This was a two-step process. The first step was accomplished with a script called <a href="./../wp-content/uploads/2016/04/rename.pl">rename.pl</a>. Given two MARC files, rename.pl first looped through the set of new authorities saving each identifier to memory. It then looped through the original set of authorities looking for records to update. When records to update were found, each was marked for deletion by prefixing MARC 001 with &#8220;x-&#8220;. The second step employed MarcEdit to actually merge the set of new authorities with the original authorities. Consequently, the authority file increased in size by 3,600 records. It was then up to other people to load the authorities into Koka, re-evaluate the authorities for correctness, and if everything was okay, then delete each authority record prefixed with &#8220;x-&#8220;.</p>
<p>Done.❀</p>
<h2>Summary and possible next steps</h2>
<p>In summary, this is how things happened. I:</p>
<ol>
<li>got a complete dump of original authority 123,329 records</li>
<li>extracted 17,593 &#8220;invalid&#8221; records</li>
<li>searched LOC for &#8220;valid&#8221; records and found 3,627 of them</li>
<li>harvested the found records</li>
<li>prefixed the 3,627 001 fields in the original file with &#8220;x-&#8220;</li>
<li>merged the original authority records with the harvested records</li>
<li>made the new set of 126,956 updated records available</li>
</ol>
<p><img src="./../wp-content/uploads/2016/04/academy.jpg" alt="academy" align="right">There were many possible next steps. One possibility was to repeat the entire process but with an enhanced search algorithm. This could be difficult considering the fact that searches using merely the value of 1xx$a returned zero hits for half of the working data. A second possibility was to identify authoritative records from a different system such as <a href="https://viaf.org/">VIAF</a> or <a href="https://www.oclc.org/developer/develop/web-services.en.html/">Worldcat</a>. Even if this was successful, I wonder how possible it would have been to actually download authority records as MARC. A third possibility was to write a sort of disambiguation program allowing librarians to choose from a set of records. This could have been accomplished by searching for authorities, presenting possibilities, allowing librarians to make selections via an HTML form, caching the selections, and finally, batch updating the master authority list. Here at the Academy we denoted the last possibility as the &#8220;cool&#8221; one.</p>
<p>Now here&#8217;s an interesting way to look at the whole thing. This process took me about two weeks worth of work, and in that two weeks I processed 18,000 authority records. That comes out to 9,000 records/week. There are 40 hours in work week, and consequently, I processed 225 records/hour. Each hour is made up of 60 minutes, and therefore I processed approximately 4 records/minute, and that is 1 record every fifteen seconds for the last two weeks. Wow!?</p>
<p>Finally, I&#8217;d like to thank the Academy (with all puns intended). Sebastian, his colleagues, and especially my office mate (<strong>Kristine Iara</strong>) were all very supportive throughout my visit. They provided intellectual stimulation and something to do while I contemplated my navel during the &#8220;adventure&#8221;.</p>
<h2>Notes</h2>
<p><img src="./../wp-content/uploads/2016/04/bicycles.jpg" alt="bicycles" align="right">† Strictly speaking, my adventure was not a sabbatical nor a leave of absence because: 1) as a librarian I was not authorized to take a sabbatical, and 2) I did not have any healthcare issues. Instead, after bits of negotiation, my contract was temporarily changed from full-time faculty to adjunct faculty, and I worked for my employer 20% of the time. The other 80% of time was spent on my &#8220;adventure&#8221;. And please don&#8217;t get me wrong, this whole thing was a wonderful opportunity for which I will be eternally grateful. &#8220;Thank you!&#8221;</p>
<p>‡ During our overlapping times there in Rome, Terry &amp; I played tourist which included the Colosseum, a happenstance mass at the Pantheon, a Palm Sunday Mass in St. Peter&#8217;s Square with tickets generously given to us by <strong>Joy Nelson</strong> of <a href="http://bywatersolutions.com/">ByWater Solutions</a>, and a day-trip to Florence. Along the way we discussed librarianship, open source software, academia, and life in general. A good time was had by all.</p>
<p>❧ Ironically, Sebastian &amp; I were colleagues during the dot-com boom when we both worked at North Caroline State University. The world of librarianship is small.</p>
<p>❦ This script &#8212; search.pl &#8212; was really a wrapper around an application called <a href="https://curl.haxx.se/">curl</a>, and thanks go to <strong>Jeff Young</strong> of OCLC who pointed me to the ATOM interface of the <a href="http://id.loc.gov/">LC Linked Data Service</a>. Without Jeff&#8217;s helpful advice, I would have wrestled with OCLC&#8217;s various authentication systems and Web Service interfaces.</p>
<p>❀ Actually, I skipped a step in this narrative. Specifically, there are some records in the authority file that were not expected to be touched, even if they are &#8220;invalid&#8221;. This set of records was associated with a specific call number pattern. Two scripts (<a href="./../wp-content/uploads/2016/04/fu-extract.pl">fu-extract.pl</a> and <a href="./../wp-content/uploads/2016/04/fu-remove.pl">fu-remove.pl</a>) did the work. The first extracted a list of identifiers not to touch and the second removed them from my table of candidates to validate.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Failure to communicate</title>
		<link>./../2016/03/failure-to-communicate/index.html</link>
				<pubDate>Tue, 22 Mar 2016 10:35:50 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=1029</guid>
				<description><![CDATA[In my humble opinion, what we have here is a failure to communicate. Libraries, especially larger libraries, are increasingly made up of many different departments, including but not limited to departments such as: cataloging, public services, collections, preservation, archives, and now-a-days departments of computer staff. From my point of view, these various departments fail to [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>In my humble opinion, what we have here is a failure to communicate.</p>
<p><img align="right" src="./../wp-content/uploads/2016/03/shrine.jpg" alt="shrine">Libraries, especially larger libraries, are increasingly made up of many different departments, including but not limited to departments such as: cataloging, public services, collections, preservation, archives, and now-a-days departments of computer staff. From my point of view, these various departments fail to see the similarities between themselves, and instead focus on their differences. This focus on the differences is amplified by the use of dissimilar vocabularies and subdiscipline-specific jargon. This use of dissimilar vocabularies causes a communications gap and left unresolved ultimately creates animosity between groups. I believe this is especially true between the more traditional library departments and the computer staff. This communications gap is an impediment to when it comes to achieving the goals of librarianship, and any library &#8212; whether it be big or small &#8212; needs to address these issues lest it wastes both its time and money.</p>
<p>Here are a few examples outlining failures to communicate:</p>
<ul>
<li><strong>MARC</strong> &#8211; MARC is a data structure. The first 24 characters are called the leader. The second section is called the directory, and the third section is intended to contain bibliographic data. The whole thing is sprinkled with ASCII characters 29, 30, and 31 denoting the ends of fields, subfields, and the record itself. MARC does not denote the kinds of data it contains. Yet, many catalogers say they know MARC. Instead, what they really know are sets of rules defining what goes into the first and third sections of the data structure. These rules are known as AACR2/RDA. Computer staff see MARC (and MARCXML) as a data structure. Librarians see MARC as the description of an item akin to a catalog card.</li>
<li><strong>Databases &amp; indexes</strong> &#8211; Databases &amp; indexes are two sides of the same information retrieval coin. &#8220;True&#8221; databases are usually relational in nature and normalized accordingly. &#8220;False&#8221; databases are flat files &#8212; simple tables akin to Excel spreadsheets. Librarians excel (no puns intended) at organizing information, and this usually manifests itself through the creation of various lists. Lists of books. Lists of journals. Lists of articles. Lists of authoritative names. Lists of websites. Etc. In today&#8217;s world, the most scalable way to maintain lists is through the use of a database, yet most librarians wouldn&#8217;t be able to draw an entity relationship diagram &#8212; the literal illustration of a database&#8217;s structure &#8212; to save their lives. With advances in computer technology, the problem of find is no longer solved through the searching of databases but instead through the creation of an index. In reality, modern indexes are nothing more than enhancements of traditional back-of-the-book indexes &#8212; lists of words and associated pointers to where those words can be found in a corpus. Computer staff see databases as MySQL and indexes as Solr. Librarians see databases as a matrix of rows &amp; columns, and the searching of databases in a light of licensed content such as JSTOR, Academic Search Primer, or New York Times.</li>
<li><strong>Collections</strong> &#8211; Collections, from the point of view of a librarian, are sets of curated items with a common theme. Taken as a whole, these collections embody a set of knowledge or a historical record intended for use by students &amp; researchers for the purposes of learning &amp; scholarship. The physical arrangment of the collection &#8212; especially in archives &#8212; as well as the intellectual arrangment of the collection is significant because they bring together like items or represent the development of an idea. This is why libraries have classification schemes and archives physically arrange their materials in the way they do. Unfortunately, computer staff usually do not understand the concept of &#8220;curation&#8221; and usually see the arrangements of books &#8212; classification numbers &#8212; as rather arbitrary.</li>
<li><strong>Services</strong> &#8211; Many librarians see the library profession as being all about service. These services range from literacy programs to story hours. They range from the answering of reference questions to the circulation of books. They include social justice causes, stress relievers during exam times, and free access to computers with Internet connections. Services are important because the provide the means for an informed public, teaching &amp; learning, and the improvement society in general. Many of these concepts are not in the forefront of the minds of computer staff. Instead, their idea of service is making sure the email system works, people can log into their computers, computer hardware &amp; software are maintained, and making sure the connections to the Internet are continual.</li>
</ul>
<p><img align="right" src="./../wp-content/uploads/2016/03/view.jpg" alt="room with a view">As a whole, what the profession does not understand is that everybody working in a library has more things in common than differences. Everybody is (suppose to be) working towards the same set of goals. Everybody plays a part in achieving those goals, and it behooves everybody to learn &amp; respect the roles of everybody else. A goal is to curate collections. This is done through physical, intellectual, and virtual arrangment, but it also requires the use of computer technology. Collection managers need to understand more of the computer technology, and the technologist needs to understand more about curation. The application of AACR2/RDA is an attempt to manifest inventory and the dissemination of knowledge. The use of databases &amp; indexes also manifest inventory and dissemination of knowledge. Catalogers and database administrators ought to communicate on the similar levels. Similarly, there is much more to preservation of materials than putting bits on tape. &#8220;Yikes!&#8221;</p>
<p>What is the solution to these problems? In my opinion, there are many possibilities, but the solution ultimately rests with individuals willing to take the time to learn from their co-workers. It rests in the ability to <strong>respect &#8212; not merely tolerate</strong> &#8212; another point of view. It requires time, listening, discussion, reflection, and repetition. It requires getting to know other people on a personal level. It requires learning what others like and dislike. It requires comparing &amp; contrasting points of view. It demands &#8220;walking a mile in the other person&#8217;s shoes&#8221;, and can be accomplished by things such as the physical intermingling of departments, cross-training, and simply by going to coffee on a regular basis.</p>
<p>Again, all of us working in libraries have more similarities than differences. Learn to appreciate the similarities, and the differences will become insignificant. The consequence will be a more holistic set of library collections and services.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Using BIBFRAME for bibliographic description</title>
		<link>./../2016/03/bibframe/index.html</link>
				<comments>./../2016/03/bibframe/index.html#comments</comments>
				<pubDate>Sun, 06 Mar 2016 20:21:44 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=1021</guid>
				<description><![CDATA[Bibliographic description is an essential process of librarianship. In the distant past this process took the form of simple inventories. In the last century we saw bibliographic description evolve from the catalog card to the MARC record. With the advent of globally networked computers and the hypertext transfer protocol, we are seeing the emergence of [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Bibliographic description is an essential process of librarianship. In the distant past this process took the form of simple inventories. In the last century we saw bibliographic description evolve from the catalog card to the MARC record. With the advent of globally networked computers and the hypertext transfer protocol, we are seeing the emergence of a new form of description called BIBFRAME which is based on the principles of RDF (Resource Description Framework). This essay describes, illustrates, and demonstrates how BIBFRAME can be used to fulfill the promise and purpose of bibliographic description.†</p>
<h2>Librarianship as collections &amp; services</h2>
<p><img align="right" src="./../wp-content/uploads/2016/03/philadelphia-flowers.jpg" alt="Philadelphia Flowers">Libraries are about a number of things. Some of those things surround the collection and preservation of materials, most commonly books. Some of those things surround services, most commonly the lending of books.†† But it is asserted here that collections are not really about books nor any other physical medium because those things are merely the manifestation of the real things of libraries: data, information, and knowledge. It is left to another essay as to the degree libraries are about wisdom. Similarly, the primary services of libraries are not really about the lending of materials, but instead the services surround learning and intellectual growth. Librarians cannot say they have lent somebody a book and conclude they have done their job. No, more generally, libraries provide services enabling the reader to use &amp; understand the content of acquired materials. In short, it is asserted that libraries are about the collection, organization, preservation, dissemination, and sometimes evaluation of data, information, knowledge, and sometimes wisdom.</p>
<p>With the advent of the Internet the above definition of librarianship is even more plausible since the materials of libraries can now be digitized, duplicated (almost) exactly, and distributed without diminishing access to the whole. There is no need to limit the collection to physical items, provide access to the materials through surrogates, nor lend the materials. Because these limitations have been (mostly) removed, it is necessary for libraries to think differently their collections and services. To the author&#8217;s mind, librarianship has not shifted fast enough nor far enough. As a long standing and venerable profession, and as an institution complete with its own set of governance, diversity, and shear size, change &amp; evolution happen very slowly. The evolution of bibliographic description is a perfect example.</p>
<h2>Bibliographic description: an informal history</h2>
<p>Bibliographic description happens in between the collections and services of libraries, and the nature of bibliographic description has evolved with technology. Think of the oldest libraries. Think clay tablets and papyrus scrolls. Think of the size of library collections. If a library&#8217;s collection was larger than a few hundred items, then the library was considered large. Still, the collections were so small that an inventory was relatively easy for sets of people (librarians) to keep in mind.</p>
<p>Think medieval scriptoriums and the development of the codex. Consider the time, skill, and labor required to duplicate an item from the collection. Consequently, books were very expensive but now had a much longer shelf life. (All puns are intended.) This increased the size of collections, but remembering everything in a collection was becoming more and more difficult. This, coupled with the desire to share the inventory with the outside world, created the demand for written inventories. Initially, these inventories were merely accession lists &#8212; a list of things owned by a library and organized by the date they were acquired.</p>
<p>With the advent of the printing press, even more books were available but at a much lower cost. Thus, the size of library collections grew. As it grew it became necessary to organize materials not necessarily by their acquisition date nor physical characteristics but rather by various intellectual qualities &#8212; their subject matter and usefulness. This required the librarian to literally articulate and manifest things of quality, and thus the profession begins to formalize the process of analytics as well as supplement their inventory lists with this new (which is not really new) information.</p>
<p>Consider some of the things beginning in the 18th and 19th centuries: the idea of the &#8220;commons&#8221;, the idea of the informed public, the idea of the &#8220;free&#8221; library, and the size of library collections numbering 10&#8217;s of thousands of books. These things eventually paved the way in the 20th century to open stacks and the card catalog &#8212; the most recent incarnation of the inventory list written in its own library short-hand and complete with its ever-evolving controlled vocabulary and authority lists &#8212; becoming available to the general public. Computers eventually happen and so does the MARC record. Thus, the process of bibliographic description (cataloging) literally becomes codified. The result is library jargon solidified in an obscure data structure. Moreover, in an attempt to make the surrogates of library collections more meaningful, the information of bibliographic description bloats to fill much more than the traditional three to five catalog cards of the past. With the advent of the Internet comes less of a need for centralized authorities. Self-service and connivence become the norm. When was the last time you used a travel agent to book airfare or reserve a hotel room?</p>
<p>Librarianship is now suffering from a great amount of reader dissatisfaction. True, most people believe libraries are &#8220;good things&#8221;, but most people also find libraries difficult to use and not meeting their expectations. People search the Internet (Google) for items of interest, and then use library catalogs to search for known items. There is then a strong desire to actually get the item, if it is found. After all, &#8220;Everything in on the &#8216;Net&#8221;. Right? To this author&#8217;s mind, the solution is two-fold: 1) digitize everthing and put the result on the Web, and 2) employ a newer type of bibliographic description, namely RDF. The former is something for another time. The later is elaborated upon below.</p>
<h2>Resource Description Framework</h2>
<p>Resource Description Framework (RDF) is essentially relational database technology for the Internet. It is comprised of three parts: keys, relationships, and values. In the case of RDF and akin to relational databases, keys are unique identifiers and usually in the form of URIs (now called &#8220;IRIs&#8221; &#8212; Internationalized Resource Identifiers &#8212; but think &#8220;URL&#8221;). Relationships take the form of ontologies or vocabularies used to describe things. These ontologies are very loosely analogous to the fields in a relational database table, and there are ontologies for many different sets of things, including the things of a library. Finally, the values of RDF can also be URIs but are ultimately distilled down to textual and numeric information.</p>
<p>RDF is a conceptual model &#8212; a sort of cosmology for the universe of knowledge. RDF is made real through the use of &#8220;triples&#8221;, a simple &#8220;sentence&#8221; with three distinct parts: 1) a subject, 2) a predicate, and 3) an object. Each of these three parts correspond to the keys, relationships, and values outlined above. To extend the analogy of the sentence further, think of subjects and objects as if they were nouns, and think of predicates as if they were verbs. And here is a very important distinction between RDF and relational databases. In relational databases there is the idea of a &#8220;record&#8221; where an identifier is associated with a set of values. Think of a book that is denoted by a key, and the key points to a set of values for titles, authors, publishers, dates, notes, subjects, and added entries. In RDF there is no such thing as the record. Instead there are only sets of literally interlinked assertions &#8212; the triples.</p>
<p>Triples (sometimes called &#8220;statements&#8221;) are often illustrated as arced graphs where subjects and objects are nodes and predicates are lines connecting the nodes:</p>
<blockquote>
<pre>[ subject ] --- predicate ---&gt; [ object ]
</pre>
</blockquote>
<p>The &#8220;linking&#8221; in RDF statements happens when sets of triples share common URIs. By doing so, the subjects of statements end up having many characteristics, and the objects of URIs point to other subjects in other RDF statements. This linking process transforms independent sets of RDF statements into a literal web of interconnections, and this is where the Semantic Web gets its name. For example, below is a simple web of interconnecting triples:</p>
<blockquote>
<pre>              / --- a predicate ---------&gt; [ an object ]
[ subject ] - | --- another predicate ---&gt; [ another object ]
              \ --- a third predicate ---&gt; [ a third object ]
                                                   |
                                                   |
                                          yet another predicate
                                                   |
                                                   |
                                                  \ /

                                         [ yet another object ]
</pre>
</blockquote>
<p>An example is in order. Suppose there is a thing called Rome, and it will be represented with the following URI: http://example.org/rome. We can now begin to describe Rome using triples:</p>
<blockquote>
<pre>subjects                 predicates         objects
-----------------------  -----------------  -------------------------
http://example.org/rome  has name           "Rome"
http://example.org/rome  has founding date  "1000 BC"
http://example.org/rome  has description    "A long long time ago,..."
http://example.org/rome  is a type of       http://example.org/city
http://example.org/rome  is a sub-part of   http://example.org/italy
</pre>
</blockquote>
<p>The corresponding arced graph would look like this:</p>
<blockquote>
<pre>                               / --- has name ------------&gt; [ "Rome" ]
                              |  --- has description -----&gt; [ "A long time ago..." ]
[ http://example.org/rome ] - |  --- has founding date ---&gt; [ "1000 BC" ]
                              |  --- is a sub-part of  ---&gt; [ http://example.org/italy ]
                               \ --- is a type of --------&gt; [ http://example.org/city ]
</pre>
</blockquote>
<p>In turn, the URI http://example.org/italy might have a number of relationships asserted against it also:</p>
<blockquote>
<pre>subjects                  predicates         objects
------------------------  -----------------  -------------------------
http://example.org/italy  has name           "Italy"
http://example.org/italy  has founding date  "1923 AD"
http://example.org/italy  is a type of       http://example.org/country
http://example.org/italy  is a sub-part of   http://example.org/europe
</pre>
</blockquote>
<p>Now suppose there were things called Paris, London, and New York. They can be represented in RDF as well:</p>
<blockquote>
<pre>subjects                    predicates          objects
--------------------------  -----------------   -------------------------
http://example.org/paris    has name            "Paris"
http://example.org/paris    has founding date   "100 BC"
http://example.org/paris    has description     "You see, there's this tower..."
http://example.org/paris    is a type of        http://example.org/city
http://example.org/paris    is a sub-part of    http://example.org/france
http://example.org/london   has name            "London"
http://example.org/london   has description     "They drink warm beer here."
http://example.org/london   has founding date   "100 BC"
http://example.org/london   is a type of        http://example.org/city
http://example.org/london   is a sub-part of    http://example.org/england
http://example.org/newyork  has founding date   "1640 AD"
http://example.org/newyork  has name            "New York"
http://example.org/newyork  has description     "It is a place that never sleeps."
http://example.org/newyork  is a type of        http://example.org/city
http://example.org/newyork  is a sub-part of    http://example.org/unitedstates
</pre>
</blockquote>
<p>Furthermore, each of &#8220;countries&#8221; can be have relationships denoted against them:</p>
<blockquote>
<pre>subjects                         predicates         objects
-------------------------------  -----------------  -------------------------
http://example.org/unitedstates  has name           "United States"
http://example.org/unitedstates  has founding date  "1776 AD"
http://example.org/unitedstates  is a type of       http://example.org/country
http://example.org/unitedstates  is a sub-part of   http://example.org/northamerica
http://example.org/england       has name           "England"
http://example.org/england       has founding date  "1066 AD"
http://example.org/england       is a type of       http://example.org/country
http://example.org/england       is a sub-part of   http://example.org/europe
http://example.org/france        has name           "France"
http://example.org/france        has founding date  "900 AD"
http://example.org/france        is a type of       http://example.org/country
http://example.org/france        is a sub-part of   http://example.org/europe
</pre>
</blockquote>
<p>The resulting arced graph of all these triples might look like this:</p>
<blockquote><p>
<em>[IMAGINE A COOL LOOKING ARCED GRAPH HERE.]</em></p></blockquote>
<p>From this graph, new information can be inferred as long as one is able to trace connections from one node to another node through one or more arcs. For example, using the arced graph above, questions such as the following can be asked and answered:</p>
<ul>
<li>What things are denoted as types of cities, and what are their names?</li>
<li>What is the oldest city?</li>
<li>What cities were founded after the year 1 AD?</li>
<li>What countries are sub-parts of Europe?</li>
<li>How would you describe Rome?</li>
</ul>
<p>In summary, RDF is data model &#8212; a method for organizing discrete facts into a coherent information system, and to this author, this sounds a whole lot like a generalized form of bibliographic description and a purpose of library catalogs. The model is built on the idea of triples whose parts are URIs or literals. Through the liberal reuse of URIs in and between sets of triples, questions surrounding the information can be answered and new information can be inferred. RDF is the what of the Semantic Web. Everything else (ontologies &amp; vocabularies, URIs, RDF &#8220;serializations&#8221; like RDF/XML, triple stores, SPARQL, etc.) are the how&#8217;s. None of them will make any sense unless the reader understands that RDF is about establishing relationships between data for the purposes of sharing information and increasing the &#8220;sphere of knowledge&#8221;.</p>
<h2>Linked data</h2>
<p>Linked data is RDF manifested. It is a process of codifying triples and systematically making them available on the Web. It first involves selecting, creating (&#8220;minting&#8221;), and maintaining sets of URIs denoting the things to be described. When it comes to libraries, there are many places where authoritative URIs can be gotten including: OCLC&#8217;s Worldcat, the Library of Congress&#8217;s linked data services, Wikipedia, institutional repositories, or even licensed indexes/databases.</p>
<p>Second, manifesting RDF as linked data involves selecting, creating, and maintaining one or more ontologies used to posit relationships. Like URIs, there are many existing bibliographic ontologies for the many different types of cultural heritage institutions: libraries, archives, and museums. Example ontologies include but are by no means limited to: BIBFRAME, bib.schema.org, the work of the (aged) LOCAH project, EAC-CPF, and CIDOC CRM.</p>
<p>The third step to implementing RDF as linked data is to actually create and maintain sets of triples. This is usually done through the use of a &#8220;triple store&#8221; which is akin to a relational database. But remember, there is no such thing as a record when it comes to RDF! There are a number of not a huge number of toolkits and applications implementing triple stores. 4store is (or was) a popular open source triple store implementation. Virtuoso is another popular implementation that comes in both open sources as well as commercial versions.</p>
<p>The forth step in the linked data process is the publishing (making freely available on the Web) of RDF. This is done in a combination of two ways. The first is to write a report against the triple store resulting in a set of &#8220;serializations&#8221; saved at the other end of a URL. Serializations are textual manifestations of RDF triples. In the &#8220;old days&#8221;, the serialization of one or more triples was manifested as XML, and might have looked something like this to describe the Declaration of Independence and using the Dublin Core and FOAF (Friend of a friend) ontologies:</p>
<blockquote>
<pre><code>&lt;?xml version="1.0"?&gt;
&lt;rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/"&gt;
&lt;rdf:Description rdf:about="http://en.wikipedia.org/wiki/Declaration_of_Independence"&gt;
  &lt;dcterms:creator&gt;
	&lt;foaf:Person rdf:about="http://id.loc.gov/authorities/names/n79089957"&gt;
	  &lt;foaf:gender&gt;male&lt;/foaf:gender&gt;
	&lt;/foaf:Person&gt;
  &lt;/dcterms:creator&gt;
&lt;/rdf:Description&gt;
&lt;/rdf:RDF&gt;</code>
</pre>
</blockquote>
<p>Many people think the XML serialization is too verbose and thus difficult to read. Consequently other serializations have been invented. Here is the same small set of triples serialized as N-Triples:</p>
<blockquote>
<pre><code>@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt;.
@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;.
@prefix dcterms: &lt;http://purl.org/dc/terms/&gt;.
&lt;http://en.wikipedia.org/wiki/Declaration_of_Independence&gt; dcterms:creator &lt;http://id.loc.gov/authorities/names/n79089957&gt;.
&lt;http://id.loc.gov/authorities/names/n79089957&gt; a foaf:Person;
  foaf:gender "male".</code>
</pre>
</blockquote>
<p>Here is yet another example, but this time serialized as JSON, a data structure first implemented as a part of the Javascript language:</p>
<blockquote>
<pre><code>{
"http://en.wikipedia.org/wiki/Declaration_of_Independence": {
  "http://purl.org/dc/terms/creator": [
	{
	  "type": "uri", 
	  "value": "http://id.loc.gov/authorities/names/n79089957"
	}
  ]
}, 
 "http://id.loc.gov/authorities/names/n79089957": {
   "http://xmlns.com/foaf/0.1/gender": [
	 {
	   "type": "literal", 
	   "value": "male"
	 }
   ], 
   "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": [
	 {
	   "type": "uri", 
	   "value": "http://xmlns.com/foaf/0.1/Person"
	 }
   ]
 }
}</code>
</pre>
</blockquote>
<p>RDF has even been serialized in HTML files by embedding triples into attributes. This is called RDFa, and a snippet of RDFa might look like this:</p>
<blockquote>
<pre><code>&lt;div xmlns="http://www.w3.org/1999/xhtml"
  prefix="
    foaf: http://xmlns.com/foaf/0.1/
    rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
    dcterms: http://purl.org/dc/terms/
    rdfs: http://www.w3.org/2000/01/rdf-schema#"
&lt;/div&gt;
&lt;div typeof="rdfs:Resource" about="http://en.wikipedia.org/wiki/Declaration_of_Independence"&gt;
  &lt;div rel="dcterms:creator"&gt;
    &lt;div typeof="foaf:Person" about="http://id.loc.gov/authorities/names/n79089957"&gt;
      &lt;div property="foaf:gender" content="male"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
</blockquote>
<p>Once the RDF is serialized and put on the Web, it is intended to be harvested by Internet spiders and robots. They cache the data locally, read it, and update their local triples stores. This data is then intended to be analyzed, indexed, and used to find or discover new relationships or knowledge.</p>
<p>The second way of publishing linked data is through a &#8220;SPARQL endpoint&#8221;. SPARQL is a query language very similar to the query language of relational databases (SQL). SPARQL endpoints are usually Web-accesible interfaces allowing the reader to search the underlying triple store. The result is usually a stream of XML. Admitted, SPARQL is obtuse at the very least.</p>
<p>Just like the published RDF, the output of SPARQL queries can be serialized in many different forms. And just like relational databases, triple stores and SPARQL queries are not intended to be used directly by the reader. Instead, something more friendly (but ultimately less powerful and less flexible) is always intended.</p>
<p>So what does this have to do with libraries and specifically bibliographic description? The answer is not that complicated. The what of librarianship has not really changed over the millenium. Librarianship is still about processes of collection, organization, preservation, dissemination, and sometimes evaluation. On the other hand, with the evolution of technology and cultural expectations, the how&#8217;s of librarianship have changed dramatically. Considering the current environment, it is time to evolve, yet again. The next evolution is the employment of RDF and linked data as the means of bibliographic description. By doing so the data, information, and knowledge contained in libraries will be more accessible and more useful to the wider community. As time has gone on, the data and metadata of libraries has become less and less librarian-centric. By taking the leap to RDF and linked data, this will only become more true, and this is a good thing for both libraries and the people they serve.</p>
<h2>BIBFRAME</h2>
<p>Enter BIBFRAME, an ontology designed for libraries and their collections. It is not the only ontology intended to describe libraries and their collections. There are other examples as well, notably, bib.schema.org, FRBR for RDF, MODS and MADS for RDF, and to some extent, Dublin Core. Debates rage on mailing lists regarding the inherent advantages &amp; disadvantages of each of these ontologies. For the most part, the debates seem to be between BIBFRAME, bib.schema.org, and FRBR for RDF. BIBFRAME is sponsored by the Library of Congress and supported by a company called Zepheira. At its very core are the ideas of a work and its instance. In other words, BIBFRAME boils the things of libraries down to two entities. Bib.schema.org is a subset of schema.org, an ontology endorsed by the major Internet search engines (Google, Bing, and Yahoo). And since schema.org is designed to enable the description of just about anything, the implementation of bib.schema.org is seen as a means of reaching the widest possible audience. On the other hand, bib.schema.org is not always seen as being as complete as BIBFRAME. The third contender is FRBR for RDF. Personally, the author has not seen very many examples of its use, but it purports to better serve the needs/desires of the reader through the concepts of WEMI (Work, Expression, Manifestation, and Item).</p>
<p>That said, it is in this author&#8217;s opinion, that the difference between the various ontologies is akin to debating the differences between vanilla and chocolate ice cream. It is a matter of opinion, and the flavors are not what is important, but rather it is the ice cream itself. Few people outside libraries really care which ontology is used. Besides, each ontology includes predicates for the things everybody expects: titles, authors, publishers, dates, notes, subjects/keywords, added entries, and locations. Moreover, in this time of transition, it is not feasible to come up with the perfect solution. Instead, this evolution is an iterative process. Give something a go. Try it for a limited period of time. Evaluate. And repeat. We also live in a world of digital data and information. This data and information is, by its very nature, mutable. There is no reason why one ontology over another needs to be debated ad nauseum. Databases (triple stores) support the function of find/replace with ease. If one ontology does not seem to be meeting the desired needs, then (simply) change to another one.††† In short, BIBFRAME may not be the &#8220;best&#8221; ontology, but right now, it is good enough.</p>
<h2>Workflow</h2>
<p>Now that the fundamentals have been outlined and elaborated upon, a workflow can be articulated. At the risk of mixing too many metaphors, here is a &#8220;recipe&#8221; for doing bibliographic description using BIBFRAME (or just about any other bibliographic ontology):</p>
<ol>
<li>Answer the questions, &#8220;What is bibliographic description, and how does it help facilitate the goals of librarianship?&#8221;</li>
<li>Understand the concepts of RDF and linked data.</li>
<li>Embrace &amp; understand the strengths &amp; weaknesses of BIBFRAME as a model for bibliographic description.</li>
<li>Design or identify and then install a system for creating, storing, and editing your bibliographic data. This will be some sort of database application whether it be based on SQL, non-SQL, XML, or a triple store. It might even be your existing integrated library system.</li>
<li>Using the database system, create, store, import/edit your bibliographic descriptions. For example, you might simply use your existing integrated library for these purposes, or you might transform your MARC data into BIBFRAME and pour the result into a triple store, like this:
<ol type="A">
<li>Dump MARC records</li>
<li>Transform MARC into BIBFRAME</li>
<li>Pour the result into a triple-store</li>
<li>Sort the triples according to the frequency of literal values</li>
<li>Find/replace the most frequently found literals with URIs††††</li>
<li>Go to Step #D until tired</li>
<li>Use the triple-store to create &amp; maintain ongoing bibliographic description</li>
<li>Go to Step #D</li>
</ol>
</li>
<li>Expose your bibliographic description as linked data by writing a report against the database system. This might be as simple as configuring your triple store, or as complicated as converting MARC/AACR2 from your integrated library system to BIBFRAME.</li>
<li>Facilitate the discovery process, ideally through the use of linked data publishing and SPARQL, or directly against the integrated library system.</li>
<li>Go to Step #5 on a daily basis.</li>
<li>Go to Step #1 on an annual basis.</li>
</ol>
<p>If the profession continues to use its existing integrated library systems for maintaining bibliographic data (Step #4), then the hard problem to solve is transforming and exposing the bibliographic data as linked data in the form of the given ontology. If the profession designs a storage and maintenance system rooted in the given ontology to begin with, then the problem is accurately converting existing data into the ontology and then designing mechanisms for creating/editing the data. The later option may be &#8220;better&#8221;, but the former option seems less painful and requires less retooling. This author advocates the &#8220;better&#8221; solution.</p>
<p>After a while, such a system may enable a library to meet the expressed needs/desires of its constituents, but it may present the library with a different set of problems. On one hand, the use of RDF as the root of a discovery system almost literally facilitates a &#8220;Web of knowledge&#8221;. But on the other hand, to what degree can it be used to do (more mundane) tasks such as circulation and acquisitions? One of the original purposes of bibliographic description was to create a catalog — an inventory list. Acquisitions adds to the list, and circulation modifies the list. To what degree can the triple store be used to facilitate these functions? If the answer is &#8220;none&#8221;, then there will need to be some sort of outside application interfacing with the triple store. If the answer is &#8220;a lot&#8221;, then the triple store will need to include an ontology to facilitate acquisitions and circulation.</p>
<h2>Prototypical implementation</h2>
<p>In the spirit of putting the money where the mouth is, the author has created the most prototypical and toy implementations possible. It is merely a triple store filled with a tiny set of automatically transformed MARC records and made publicly accessible via SPARQL. The triple store was built using a set of Perl modules called Redland. The system supports initialization of a triple store, the adding of items to the store via files saved on a local file system, rudimentary command-line search, a way to dump the contents of the triple store in the form of RDF/XML, and a SPARQL endpoint. [1] Thus, Step #4 from the recipe above has been satisfied.</p>
<p>To facilitate Step #5 a MARC to BIBFRAME transformation tool was employed [2]. The transformed MARC data was very small, and the resulting serialized RDF was valid. [3, 4] The RDF was imported into the triple store and resulted in the storage of 5,382 triples. Remember, there is no such thing as a record in the world of RDF! Using the SPARQL endpoint, it is now possible to query the triple store. [5] For example, the entire store can be dumped with this (dangerous) query:</p>
<blockquote>
<pre><code># dump of everything
SELECT ?s ?p ?o 
WHERE { ?s ?p ?o }</code>
</pre>
</blockquote>
<p>To see what types of things are described one can list only the objects (classes) of the store:</p>
<blockquote>
<pre><code># only the objects
SELECT DISTINCT ?o
WHERE { ?s a ?o }
ORDER BY ?o</code>
</pre>
</blockquote>
<p>To get a list of all the store&#8217;s properties (types of relationships), this query is in order:</p>
<blockquote>
<pre><code># only the predicates
SELECT DISTINCT ?p
WHERE { ?s ?p ?o }
ORDER BY ?p</code>
</pre>
</blockquote>
<p>BIBFRAME denotes the existence of &#8220;Works&#8221;, and to get a list of all the works in the store, the following query can be executed:</p>
<blockquote>
<pre><code># a list of all BIBFRAME Works
SELECT ?s 
WHERE { ?s a &lt;http://bibframe.org/vocab/Work&gt; }
ORDER BY ?s</code>
</pre>
</blockquote>
<p>This query will enumerate and tabulate all of the topics in the triple store. Thus providing the reader with an overview of the breadth and depth of the collection in terms of subjects. The output is ordered by frequency:</p>
<blockquote>
<pre><code># a breadth and depth of subject analsysis
SELECT ( COUNT( ?l ) AS ?c ) ?l
WHERE {
  ?s a &lt;http://bibframe.org/vocab/Topic&gt; . 
  ?s &lt;http://bibframe.org/vocab/label&gt; ?l
}
GROUP BY ?l
ORDER BY DESC( ?c )</code>
</pre>
</blockquote>
<p>All of the information about a specific topic in this particular triple store can be listed in this manner:</p>
<blockquote>
<pre><code># about a specific topic
SELECT ?p ?o 
WHERE { &lt;http://bibframe.org/resources/Ssh1456874771/vil_134852topic10&gt; ?p ?o }</code>
</pre>
</blockquote>
<p>The following query will create the simplest of title catalogs:</p>
<blockquote>
<pre><code># simple title catalog
SELECT ?t ?w ?c ?l ?a
WHERE {
  ?w a &lt;http://bibframe.org/vocab/Work&gt;           .
  ?w &lt;http://bibframe.org/vocab/workTitle&gt;    ?wt .
  ?wt &lt;http://bibframe.org/vocab/titleValue&gt;  ?t  .
  ?w &lt;http://bibframe.org/vocab/creator&gt;      ?ci .
  ?ci &lt;http://bibframe.org/vocab/label&gt;       ?c  .
  ?w &lt;http://bibframe.org/vocab/subject&gt;      ?s  .
  ?s &lt;http://bibframe.org/vocab/label&gt;        ?l  .
  ?s &lt;http://bibframe.org/vocab/hasAuthority&gt; ?a
}
ORDER BY ?t</code>
</pre>
</blockquote>
<p>The following query is akin to a phrase search. It looks for all the triples (not records) containing a specific key word (catholic):</p>
<blockquote>
<pre><code># phrase search
SELECT ?s ?p ?o
WHERE {
  ?s ?p ?o
  FILTER REGEX ( ?o, 'catholic', 'i' )
}
ORDER BY ?p</code>
</pre>
</blockquote>
<p>Automatically transformed MARC data into BIBFRAME RDF will contain a preponderance of literal values when URIs are really desired. The following query will find all of the literals and sort them by the number of their individual occurrences:</p>
<blockquote>
<pre><code># find all literals
SELECT ?p ?o ( COUNT ( ?o ) as ?c )
WHERE { ?s ?p ?o FILTER ( isLiteral ( ?o ) ) }
GROUP BY ?o 
ORDER BY DESC( ?c )</code>
</pre>
</blockquote>
<p>It behooves the cataloger to identify URIs for these literal values and replace the literals (or supplement) the triples accordingly (Step #5E in the recipe, above). This can be accomplished both programmatically as well as manually by first creating a list of appropriate URIs and then executing a set of INSERT or UPDATE commands against the triple store.</p>
<p>&#8220;Blank nodes&#8221; (URIs that point to nothing) are just about as bad as literal values. The following query will list all of the blank nodes in a triple store:</p>
<blockquote>
<pre><code># find all blank nodes
SELECT ?s ?p ?o WHERE { ?s ?p ?o FILTER ( isBlank( ?s ) ) }</code>
</pre>
</blockquote>
<p>And the data associated with a particular blank node can be queried in this way:</p>
<blockquote>
<pre><code># learn about a specific blank node
SELECT distinct ?p WHERE { _:r1456957120r7483r1 ?p ?o } ORDER BY ?p</code>
</pre>
</blockquote>
<p>In the case of blank nodes, the cataloger will then want to &#8220;mint&#8221; new URIs and perform an additional set of INSERT or UPDATE operations against the underlying triple store. This is a continuation of Step #5E.</p>
<p>These SPARQL queries applied against this prototypical implementation have tried to illustrate how RDF can fulfill the needs and requirements of bibliographic description. One can now begin to see how an RDF triple store employing a bibliographic ontology can be used to fulfill some of the fundamental goals of a library catalog.</p>
<h2>Summary</h2>
<p>This essay defined librarianship as a set of interlocking collections and services. Bibliographic description was outlined in an historical context, with the point being that the process of bibliographic description has evolved with technology and cultural expectations. The principles of RDF and linked data were then described, and the inherent advantages &amp; disadvantages of leading bibliographic RDF ontologies were touched upon. The essay then asserted the need for faster evolution regarding bibliographic description and advocated the use of RDF and BIBFRAME for this purpose. Finally, the essay tried to demonstrate how RDF and BIBFRAME can be used to satisfy the functionality of the library catalog. It did this through the use of a triple store and a SPARQL endpoint. In the end, it is hoped the reader understands that there is no be-all end-all solution for bibliographic description, but the use of RDF technology is the wave of the future, and BIBFRAME is good enough when it comes to the ontology. Moving to the use of RDF for bibliographic description will be painful for the profession, but not moving to RDF will be detrimental.</p>
<h2>Notes</h2>
<p>† This presentation ought to be also be available as a <a href="./../wp-content/uploads/2016/03/bibframe.pdf">one-page handout</a> in the form of a PDF document.</p>
<p>†† Moreover, collections and services go hand-in-hand because collections without services are useless, and services without collections are empty. As a buddhist monk once said, &#8220;Collections without services is the sound of one hand clapping.&#8221; Librarianship requires a healthy balance of both.</p>
<p>††† That said, no matter what a person does, things always get lost in translation. This is true of human language just as much as it is true for the language (data/information) of computers. Yes, data &amp; information will get lost when moving from one data model to another, but still I contend the fundamental and most useful elements will remain.</p>
<p>†††† This process (Step #5E) was coined by Roy Tennant and his colleagues at OCLC as &#8220;entification&#8221;.</p>
<h2>Links</h2>
<p>[1] toy implementation &#8211; <a href="http://infomotions.com/sandbox/bibframe/">http://infomotions.com/sandbox/bibframe/</a><br />
[2] MARC to BIBFRAME &#8211; <a href="http://bibframe.org/tools/transform/start">http://bibframe.org/tools/transform/start</a><br />
[3] sample MARC data &#8211; <a href="http://infomotions.com/sandbox/bibframe/data/data.xml">http://infomotions.com/sandbox/bibframe/data/data.xml</a><br />
[4] sample RDF data &#8211; <a href="http://infomotions.com/sandbox/bibframe/data/data.rdf">http://infomotions.com/sandbox/bibframe/data/data.rdf</a><br />
[5] SPARQL endpoint &#8211; <a href="http://infomotions.com/sandbox/bibframe/sparql/">http://infomotions.com/sandbox/bibframe/sparql/</a></p>
]]></content:encoded>
							<wfw:commentRss>./../2016/03/bibframe/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>XML 101</title>
		<link>./../2016/01/xml/index.html</link>
				<pubDate>Wed, 06 Jan 2016 18:05:55 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=1014</guid>
				<description><![CDATA[This past Fall I taught &#8220;XML 101&#8221; online and to library school graduate students. This posting echoes the scripts of my video introductions, and I suppose this posting could also be used as very gentle introduction to XML for librarians. Introduction I work at the University of Notre Dame, and my title is Digital Initiatives [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This past Fall I taught &#8220;XML 101&#8221; online and to library school graduate students. This posting echoes the scripts of my video introductions, and I suppose this posting could also be used as very gentle introduction to XML for librarians.</p>
<h2>Introduction</h2>
<p><img align="right" src="./../wp-content/uploads/2016/01/another-field.jpg" alt="another field">I work at the University of Notre Dame, and my title is Digital Initiatives Librarian. I have been a librarian since 1987. I have been writing software since 1976, and I will be your instructor. Using materials and assignments created by the previous instructors, my goal is to facilitate your learning of XML.</p>
<p>XML is a way of transforming data into information. It is a method for marking up numbers and text, giving them context, and therefore a bit of meaning. XML includes syntactical characteristics as well as semantic characteristics. The syntactical characteristics are really rather simple. There are only five or six rules for creating well-formed XML, such as: 1) there must be one and only one root element, 2) element names are case-sensitive, 3) elements must be close properly, 4) elements must be nested properly, 4) attributes must be quoted, and 5) there are a few special characters (&amp;, &lt;, and &gt;) which must be escaped if they are to be used in their literal contexts. The semantics of XML is much more complicated and they denote the intended meaning of the XML elements and attributes. The semantics of XML are embodied in things called DTDs and schemas.</p>
<p>Again, XML is used to transform data into information. It is used to give data context, but XML is also used to transmit this information in an computer-independent way from one place to another. XML is also a data structure in the same way MARC, JSON, SQL, and tab-delimited files are data structures. Once information is encapsulated as XML, it can unambiguously transmitted from one computer to another where it can be put to use.</p>
<p>This course will elaborate upon these ideas. You will learn about the syntax and semantics of XML in general. You will then learn how to manipulate XML using XML-related technologies called XPath and XSLT. Finally, you will learn library-specific XML &#8220;languages&#8221; to learn how XML can be used in Library Land.</p>
<h2>Well-formedness</h2>
<p>In this, the second week of &#8220;XML 101 for librarians&#8221;, you will learn about well-formed XML and valid XML. Well-formed XML is XML that conforms to the five or six syntactical rules. (XML must have one and only one root element. Element names are case sensitive. Elements must be closed. Elements must be nested correctly. Attributes must be quoted. And there are a few special characters that must be escaped (namely &amp;, &lt;, and &gt;). Valid XML is XML that is not only well-formed but also conforms to a named DTD or schema. Think of valid XML as semantically correct.</p>
<p>Jennifer Weintraub and Lisa McAulay, the previous instructors of this class, provide more than a few demonstrations of how to create well-formed as well as valid XML. Oxygen, the selected XML editor for this course is both powerful and full-featured, but using it efficiently requires practice. That&#8217;s what the assignments are all about. The readings supplement the demonstrations.</p>
<h2>DTD&#8217;s and namespaces</h2>
<p>DTD&#8217;s, schemas, and namespaces put the &#8220;X&#8221; in XML. They make XML extensible. They allow you to define your own elements and attributes to create your own &#8220;language&#8221;.</p>
<p>DTD&#8217;s &#8212; document type declarations &#8212; and schemas are the semantics of XML. They define what elements exists, what order they appear in, what attributes they can contain, and just as importantly what the elements are intended to contain. DTD&#8217;s are older than schemas and not as robust. Schemas are XML documents themselves and go beyond DTD&#8217;s in that they provide the ability to define the types of data elements and attributes contain.</p>
<p>Namespaces allow you, the author, to incorporate multiple DTD and schema definitions into a single XML document. Namespaces provide a way for multiple elements of the same name to exist concurrently in a document. For example, two different DTD&#8217;s may contain an element called &#8220;title&#8221;, but one DTD refers to a title as in the title of a book, and the other refers to &#8220;title&#8221; as if it were an honorific.</p>
<h2>Schemas</h2>
<p>Schemas are an alternative and more intelligent alternative to DTDs. While DTDs define the structure of XML documents, schemas do it with more exactness. While DTDs only allow you to define elements, the number of elements, the order of elements, attributes, and entities, schemas allow you to do these things and much more. For example, they allow you to define the types of content that go into elements or attributes. Strings (characters). Numbers. Lists of characters or numbers. Boolean (true/false) values. Dates. Times. Etc. Schemas are XML documents in an of themselves, and therefore they can be validated just like any other XML document with a pre-defined structure.</p>
<p>The reading and writing of XML schemas is very librarian-ish because it is about turning data into information. It is about structuring data so it makes sense, and it does this in an unambiguous and computer-independent fashion. It is too bad our MARC (bibliographic) standards are not as rigorous.</p>
<h2>RelaxNG, Schematron, and digital libraries</h2>
<p><img align="right" src="./../wp-content/uploads/2016/01/fields.jpg" alt="fields">The first is yet another technology for modeling your XML, and it is called RelaxNG. This third modeling technology is intended to be more human readable than schemas and more robust that DTDs. Frankly, I have not seen RelaxNG implements very many times, but it behooves you to know it exists and how it compares to other modeling tools.</p>
<p>The second is Schematron. This tool too is used to validate XML, but instead of returning &#8220;ugly&#8221; computer-looking error messages, its errors are intended to be more human-readable and describe why things are the way they are instead of just saying &#8220;Wrong!&#8221;</p>
<p>Lastly, there is an introduction to digital libraries and trends in their current development. More and more, digital libraries are really and truly implementing the principles of traditional librarianship complete with collection, organization, preservation, and dissemination. At the same time, they are pushing the boundaries of the technology and stretching our definitions. Remember, it is not so much about the technology (the how of librarianship) that is important, but rather the why of libraries and librarianship. The how changes quickly. The why changes slowly, albiet sometimes too slowly.</p>
<h2>XPath</h2>
<p>This week is all about XPath, and it is used to select content from your XML files. It is akin to navigating a computer&#8217;s filesystem from the command line in order to learn what is located in different directories.</p>
<p>XPath is made up of expressions which return values of true, false, strings (characters), numbers, or nodes (subsets of XML files). XPath is used in conjunction with other XML technologies, most notably XSTL and XQuery. XSLT is used to transform XML files into other plain text files. XQuery is akin to the structured query language of relational databases.</p>
<p>You will not be able to do very much with XML other than read or write it, unless you understand XPath. An understanding XPath is essencial if you want to do truly interesting things with XML.</p>
<h2>XSLT</h2>
<p>This week you will be introduced to XSLT, a programming language used to transform XML into other plain text files.</p>
<p>XML is all about information, and it is not about use nor display. In order for XML to be actually useful &#8212; to be applied towards some sort of end &#8212; specific pieces of data need to be extracted from XML or the whole of the XML file needs to be converted into something else. The most common conversion (or &#8220;transformation&#8221;) is from some sort of XML into HTML for display in a Web browser. For example, bibliographic XML (MARCXML or MODS) may be transformed into a sort of &#8220;catalog card&#8221; for display, or a TEI file may be transformed into a set of Web pages, or an EAD file may be transformed into a guide intended for printing. Alternatively, you may want to tranform the bibliographic data into a tab-delimited text file for a spreadsheet or an SQL file for a relational database. Along with other sets of information, an XML file may contain geographic coordinates, and you may want to extract just those coordinates to create a KML file &#8212; a sort of map file.</p>
<p>XSLT is a programming language but not like most programming languages you may know. Most programming languages are &#8220;procedural&#8221; (like Perl, PHP, or Python), meaning they execute their commands in a step-wise manner. &#8220;First do this, then do that, then do the other thing.&#8221; This can be contrasted with &#8220;declarative&#8221; programming languages where events occur or are encountered in a data file, and then some sort of execution happens. There are relatively few declarative programming languages, but LISP is/was one of them. Because of the declarative nature of XSLT, the apply-templates command is so important. The apply-templates command sort of tells the XSLT processor to go off and find more events.</p>
<p>Now that you are beginning to learn XSLT and combining it with XPath, you are beginning to do useful things with the XML you have been creating. This is where the real power is. This is where it gets really interesting.</p>
<h2>TEI &#8212; Text Encoding Initiative</h2>
<p>TEI is a granddaddy, when it comes to XML &#8220;languages&#8221;. It started out as a different from of mark-up, a mark-up called SGML, and SGML was originally a mark-up language designed at IBM for the purposes of creating, maintaining, and distributing internal documentation. Now-a-days, TEI is all but a hallmark of XML.</p>
<p>TEI is a mark-up language for any type of literature: poetry or prose. Like HTML, it is made up of head and body sections. The head is the place for administrative, bibliographic, and provenance metadata. The body is where the poetry or prose is placed, and there are elements for just about anything you can imagine: paragraphs, lines, headings, lists, figures, marginalia, comments, page breaks, etc. And if there is something you want to mark-up, but an element does not explicitly exist for it, then you can almost make up your own element/attribute combination to suit your needs.</p>
<p>TEI is quite easily the most well-documented XML vocabulary I&#8217;ve ever seen. The community is strong, sustainable, albiet small (if not tiny). The majority of the community is academic and very scholarly. Next to a few types of bibliographic XML (MARCXML, MODS, OAIDC, etc.), TEI is probably the most commonly used XML vocabulary in Library Land, with EAD being a close second. In libraries, TEI is mostly used for the purpose of marking-up transcriptions of various kinds: letters, runs of out-of-print newsletters, or parts of a library special collection. I know of no academic journals marked-up in TEI, no library manuals, nor any catalogs designed for printing and distribution.</p>
<p>TEI, more than any other type of XML designed for literature, is designed to support the computed critical analysis of text. But marking something up in TEI in a way that supports such analysis is extraordinarily expensive in terms of both time and expertise. Consequently, based on my experience, there are relatively very few such projects, but they do exist.</p>
<h2>XSL-FO</h2>
<p>As alluded to throughout this particular module, XSL-FO is not easy, but despite this fact, I sincerely believe it is under-utilized tool.</p>
<p>FO stands for &#8220;Formatting Objects&#8221;, and it in an of itself is an XML vocabulary used to define page layout. It has elements defining the size of a printed page, margins, running headers &amp; footers, fonts, font sizes, font styles, indenting, pagination, tables of contents, back-of-the-book indexes, etc. Almost all of these elements and their attributes use a syntax similar to the syntax of HTML&#8217;s cascading stylesheets.</p>
<p>Once an XML file is converted into an FO document, you are expected to feed the FO document to a FO processor, and the FO processor will convert the document into something intended for printing &#8212; usually a PDF document.</p>
<p>FO is important because not everything is designed nor intended to be digital. Digital everything is mis-nomer. The graphic design of a printed medium is different from the graphic design of computer screens or smart phones. In my opinion, important XML files ought to be transformed into different formats for different mediums. Sometimes those mediums are screen oriented. Sometimes it is better to print something, and printed somethings last a whole lot longer. Sometimes it is important to do both.</p>
<p>FO is another good example of what XML is all about. XML is about data and information, not necessarily presentation. XSL transforms data/information into other things &#8212; things usually intended for reading by people.</p>
<h2>EAD &#8212; Encoded Archival Description</h2>
<p>Encoded Archival Description (or EAD) is the type of XML file used to enumerate, evaluate, and make accessible the contents of archival collections. Archival collections are often the raw and primary materials of new humanities scholarship. They are usually &#8220;the papers&#8221; of individuals or communities. They may consist of all sorts of things from letters, photographs, manuscripts, meeting notes, financial reports, audio cassette tapes, and now-a-days computers, hard drives, or CDs/DVDs. One thing, which is very important to understand, is that these things are &#8220;collections&#8221; and not intended to be used as individual items. MARC records are usually used as a data structure for bibliographically describing individual items &#8212; books. EAD files describe an entire set of items, and these descriptions are more colloquially called &#8220;finding aids&#8221;. They are intended to be read as intellectual works, and the finding aids transform collections into coherent wholes.</p>
<p>Like TEI files, EAD files are comprised of two sections: 1) a header and 2) a body. The header contains a whole lot or very little metadata of various types: bibliographic, administrative, provenance, etc. Some of this metadata is in the form of lists, and some of it is in the form of narratives. More than TEI files, EAD files are intended to be displayed on a computer screen or printed on paper. This is why you will find many XSL files transforming EAD into either HTML or FO (and then to PDF).</p>
<h2>RDF</h2>
<p>RDF is an acronym for Resource Description Framework. It is a data model intended to describe just about anything. The data model is based on an idea called triples, and as the name implies, the triples have three parts: 1) subjects, 2) predicates, and 3) objects.</p>
<p>Subjects are always URIs (think URLs), and they are the things described. Objects can be URIs or literals (words, phrases, or numbers), and objects are the descriptions. Predicates are also always URIs, and they denote the relationship between the subjects and the objects.</p>
<p>The idea behind RDF was this. Describe anything and everthing in RDF. Resuse as many of the URIs used by other people as possible. Put the RDF on the Web. Allow Internet robots/spiders to harvest and cache the RDF. Allow other computer programs to ingest the RDF, analyse it for the similar uses of subjects, predicates, and objects, and in turn automatically uncover new knowledge and new relationships between things.</p>
<p>RDF is/was originally expressed as XML, but the wider community had two problems with RDF. First, there were no &#8220;killer&#8221; applications using RDF as input, and second, RDF expressed as XML was seen as too verbose and too confusing. Thus, the idea of RDF languished. More recently, RDF is being expressed in other forms such as JSON and Turtle and N3, but there are still no killer applications.</p>
<p>You will hear the term &#8220;linked data&#8221; in association with RDF, and linked data is the process of making RDF available on the Web.</p>
<p>RDF is important for libraries and &#8220;memory&#8221; or &#8220;cultural heritage&#8221; institutions, because the goal of RDF is very similar to the goals of libraries, archives, and museums.</p>
<h2>MARC</h2>
<p><img align="right" src="./../wp-content/uploads/2016/01/waves.jpg" alt="waves">The MARC standard has been the bibliographic bread &amp; butter of Library Land since the late 1960&#8217;s. When it was first implemented it was an innovative and effect data structure used primarily for the production of catalog cards. With the increasing availability of computers, somebody got the &#8220;cool&#8221; idea of creating an online catalog. While logical, the idea did not mature with a balance of library and computing principles. To make a long story short, library principles prevailed and the result has been and continues to be painful for both the profession as well as the profession&#8217;s clientele.</p>
<p>MARCXML was intended to provide a pathway out of this morass, but since it was designed from the beginning to be &#8220;round tripable&#8221; with the original MARC standard, all of the short-comings of the original standard have come along for the ride. The Library Of Congress was aware of these short-comings, and consequently MODS was designed. Unlike MARC and MARCXML, MODS has no character limit and its field names are human-readable, not based on numeric codes. Given that MODS is flavor of XML, all of this is a giant step forward.</p>
<p>Unfortunately, the library profession&#8217;s primary access tools &#8212; the online catalog and &#8220;discovery system&#8221; &#8212; still heavily rely on traditional MARC for input. Consequently, without a wholesale shift in library practice, the intellectual capital the profession so dearly wants to share is figuratively locked in the 1960&#8217;s.</p>
<h2>Not a panacea</h2>
<p>XML really is an excellent technology, and it is most certainly apropos for the work of cultural heritage institutions such as libraries, archives, and museums. This is true for many reasons:</p>
<ol>
<li>it is computing platform independent</li>
<li>it requires a minimum of computer technology to read and write</li>
<li>to some degree, it is self-documenting, and</li>
<li>especially considering our profession, it is all about data, information, and knowlege</li>
</ol>
<p>On the other hand, it does have a number of disadvantages, for example:</p>
<ol>
<li>it is verbose &#8212; not necessarily succinct</li>
<li>while easy to read and write, it can be difficult to process</li>
<li>like all things computer program-esque, it imposes a set of syntactical rules, which people can sometimes find frustrating</li>
<li>its adoption as standard has not been as ubiquitous as desired</li>
</ol>
<p>To date you have learned how to read, write, and process XML and a number of its specific &#8220;flavors&#8221;, but you have by no means learned everything. Instead you have received a more than adequate introduction. Other XML topics of importance include:</p>
<ul>
<li>evolutions in XSLT and XPath</li>
<li>XML-based databases</li>
<li>XQuery, a standardized method for querying sets of XML similar to the standard query language of relational databases</li>
<li>additional XML vocabularies, most notably RSS</li>
<li>a very functional way of making modern Web browsers display XML files</li>
<li>XML processing instructions as well as reserved attributes like lang</li>
</ul>
<p>In short, XML is not a panacea, but it is an excellent technology for library work.</p>
<h2>Summary</h2>
<p>You have all but concluded a course on XML in libraries, and now is a good time for a summary.</p>
<p>First of all, XML is one of culture&#8217;s more recent attempts at formalizing knowledge. At its root (all puns intended) is data, such as the number like 1776. Through mark-up we might say this number is a year, thus turning the data into information. By putting the information into context, we might say that 1776 is when the Declaration of Independence was written and a new type of government was formed. Such generalizations fall into the realm of knowledge. To some degree, XML facilitates the transformation of data into knowledge. (Again, all puns intended.)</p>
<p>Second, understand that XML is also a data structure defined by the characteristics of well-formedness. By that I mean XML has one and only one root element. Elements must be opened and closed in a hierarchal manner.  Attributes of elements must be quoted, and a few special characters must always be escaped. The X in XML stands for &#8220;extensible&#8221;, and through the use of DTDs and schemas, specific XML &#8220;flavors&#8221; can be specified.</p>
<p>With this under your belts you then experimented with at least a couple of XML flavors: TEI and EAD. The former is used to mark-up literature. The later is used to describe archival collections. You then learned about the XML transformation process through the application of XSL and XPath, two rather difficult technologies to master. Lastly, you made strong efforts to apply the principles of XML to the principles of librarianship by marking up sets of documents or creating your own knowledge entity. It is hoped you have made a leap from mere technology to system. It is not about Oxygen nor graphic design. It is about the chemistry of disseminating data as unambiguously as possible for the purposes of increasing the sphere of knowledge. With these things understood, you are better equipped to practice librarianship in the current technological environment.</p>
<p>Finally, remember, there is no such thing as a Dublin Core record.</p>
<h2>Epilogue &#8212; Use and understanding</h2>
<p><img align="right" src="./../wp-content/uploads/2016/01/iceburg.jpg" alt="iceburg">This course in XML was really only an introduction. You were expected to read, write, and transform XML. This process turns data into information. All of this is fine, but what about knowledge?</p>
<p>One of the original reasons texts were marked up was to facilitate analysis. Researchers wanted to extract meaning from texts. One way to do that is to do computational analysis against text. To facilitate computational analysis people thought is was necessary for essential characteristics of a text to be delimited. (It is/was thought computers could not really do natural language processing.) How many paragraphs exists? What are the names in a text? What about places? What sorts of quantitative data can be statistically examined? What main themes does the text include? All of these things can be marked-up in a text and then counted (analyzed).</p>
<p>Now that you have marked up sets of letters with persname elements, you can use XPath to not only find persname elements but count them as well. Which document contains the most persnames? What are the persnames in each document. Tabulate their frequency. Do this over a set of documents to look for trends across the corpus. This is only a beginning, but entirely possible given the work you have already done.</p>
<p>Libraries do not facilitate enough quantitative analysis against our content. Marking things up in XML is a good start, but lets go to the next step. Let&#8217;s figure out how the profession can move its readership from discovery to analysis &#8212; towards use &amp; understand.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Mr. Serials continues</title>
		<link>./../2016/01/mr-serials/index.html</link>
				<pubDate>Wed, 06 Jan 2016 16:42:37 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=1009</guid>
				<description><![CDATA[The (ancient) Mr. Serials Process continues to support four mailing list archives, specifically, the archives of ACQNET, Colldv-l, Code4Lib, and NGC4Lib, and this posting simply makes the activity explicit. Mr. Serials is/was a process I developed quite a number of years ago as a method for collecting, organizing, archiving electronic journals (serials). The process worked [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>The (ancient) <a href="http://serials.infomotions.com/">Mr. Serials Process</a> continues to support four mailing list archives, specifically, the archives of ACQNET, Colldv-l, Code4Lib, and NGC4Lib, and this posting simply makes the activity explicit.</p>
<p><img align="right" src="./../wp-content/uploads/2016/01/flowers.jpg" width="240" height="320" alt="flowers">Mr. Serials is/was a process I developed quite a number of years ago as a method for collecting, organizing, archiving electronic journals (serials). The process worked well for a number of years, until electronic journals were no longer distributed via email. Now-a-days, Mr. Serials only collects the content of a few mailing lists. That&#8217;s okay. Things change. No big deal.</p>
<p>On the other hand, from a librarian&#8217;s and archivist&#8217;s point-of-view, it is important to collect mailing list content in its original form &#8212; email. Email uses the SMTP protocol. The communication sent back and forth, between email server and client, is well-structured albiet becoming verbose. Probably &#8220;the&#8221; standard for saving email on a file system is called mbox. Given a mbox file, it is possible to use any number of well-known applications to read/write mbox data. Heck, all you need is a text editor. Increasingly, email archives are not available from mailing list applications, and if they are, then they are available only to mailing list administrators and/or in a proprietary format. For example, if you host a mailing list on Google, can you download an archive of the mailing list in a form that is easily and universally readable? I think not.</p>
<p>Mr. Serials circumvents this problem. He subscribes to mailing lists, saves the incoming email to mbox files, and processes the mbox files to create searchable/browsable interfaces. The interfaces are not hugely aesthetically appealing, but they are more than functional, and the source files are readily available. Just ask.</p>
<p>Most recently both the <a href="http://serials.infomotions.com/acqnet/">ACQNET</a> and <a href="http://serials.infomotions.com/colldv-l/">Colldv-l</a> mailing lists moved away from their hosting institutions to servers hosted by the American Library Association. This has not been the first time these lists have moved. It probably won&#8217;t be the last, but since Mr. Serials continues subscribe to these lists, comprehensive archives persevere. Score a point for librarianship and the work of archives. <em>Long live Mr. Serials.</em></p>
]]></content:encoded>
										</item>
		<item>
		<title>Re-MARCable</title>
		<link>./../2015/11/re-marcable/index.html</link>
				<comments>./../2015/11/re-marcable/index.html#comments</comments>
				<pubDate>Tue, 17 Nov 2015 19:07:59 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=1001</guid>
				<description><![CDATA[This blog posting contains: 1) questions/statements about MARC and posted by graduate library school students taking an online XML class I&#8217;m teaching this semester, and 2) my replies. Considering my previously published blog posting, you might say this posting is &#8220;re-MARCable&#8221;. I&#8217;m having some trouble accessing the file named data.marc for the third question in [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This blog posting contains: 1) questions/statements about MARC and posted by graduate library school students taking an online XML class I&#8217;m teaching this semester, and 2) my replies. Considering my <a href="./../2015/11/marc/index.html">previously published blog posting</a>, you might say this posting is &#8220;re-MARCable&#8221;.</p>
<p><em>I&#8217;m having some trouble accessing the file named data.marc for the third question in this week&#8217;s assignment. It keeps opening in word and all I get is completely unreadable. Is there another way of going about finding the answer for that particular question?</em></p>
<p>Okay. I have to admit. I&#8217;ve been a bit obtuse about the MARC file format.</p>
<p>MARC is/was designed to contain ASCII characters, and therefore it ought to be human-readable. MARC does not contain binary characters and therefore ought to be readable in text editors. DO NOT open the .marc file in your word processor. Use your text editor to open it up. If you have line wrap turned off, then you ought to see one very long line of ugly text. If you turn on line wrap, then you will see many lines of… ugly text. Attached (hopefully) is a screen shot of many MARC records loaded into my text editor. And I rhetorically ask, &#8220;How many records are displayed, and how do you know?&#8221;</p>
<p><img width="480" src="./../wp-content/uploads/2015/11/screen-dump.png" alt="marc"></p>
<p>I&#8217;m trying to get y&#8217;all to answer a non-rhetorical question asked against yourself, &#8220;Considering the state of today&#8217;s computer technology, how viable is MARC? What are the advantages and disadvantages of MARC?&#8221;</p>
<p><em>I am taking Basic Cataloging and Classification this semester, but we did not discuss octets or have to look at an actual MARC file.  Since this is supposed to be read by a machine, I don&#8217;t think this file format is for human consumption which is why it looks scary.</em></p>
<p>[Student], you continue to be a resource for the entire class. Thank you.</p>
<p>Everybody, yes, you will need to open the .marc file in your text editor. All of the files we are creating in this class ought to be readable in your text editor. True and really useful data files ought to be text files so they can be transferred from application to application. Binary files are sometimes more efficient, but not long-lasting. Here in Library Land we are in it for the long haul. Text files are where it is at. PDF is bad enough. Knowing how to manipulate things in a text editor is imperative when it comes to really using a computer. Imperative!!! Everything on the Web is in plain text.</p>
<p>In any event, open the .marc file in your text editor. On a Macintosh that is Text Edit. On Windows it is NotePad or WordPad. Granted all of these particular text editors are rather brain-dead, but they all function necessarily. A better text editor for Macintosh is Text Wrangler, and for Windows is NotePad++. When you open the .marc file, it will look ugly. It will seem unreadable, but that is not the case at all. Instead, a person needs to know the &#8220;secret codes&#8221; of cataloging, as well as a bit of an obtuse data structure in order to make sense of the whole thing.</p>
<p>Okay. Octets. Such are 8-bit characters, as opposed to the 7-bit characters of ASCII enclosing. The use of 8-bit characters enabled Library Land to integrate characters such as ñ, é, or å into its data. And while Library Land was ahead of the game in this regard, it did not embrace Unicode when it came along:</p>
<blockquote><p>
Unicode is a computing industry standard for the consistent encoding, representation, and handling of text expressed in most of the world&#8217;s writing systems. Developed in conjunction with the Universal Character Set standard and published as The Unicode Standard, the latest version of Unicode contains a repertoire of more than 120,000 characters covering 129 modern and historic scripts, as well as multiple symbol sets. [1]</p></blockquote>
<p>Nor did Library Land update its data when changes happened. Consequently, not only do folks outside Library Land need to know how to read and write MARC records (which they can&#8217;t), they also need to know and understand the weird characters encodings which we use. In short, the data of Library Land is not very easily readable by the wider community, let alone very many people within our own community. Now that is irony. Don&#8217;t you think so!? Our data is literally and figuratively stuck in 1965, and we continue to put it there.</p>
<p><em><br />
Professor, is this data.marc file suppose to be read only by a machine as [a fellow classmate] suggested?</em></p>
<p>Only readable by a computer? The answer is both no and yes.</p>
<p>Any data file intended to be shared between systems (sets of applications) ought to be saved as plain text in order to facilitate transparency and eliminate application monopolies/tyrannies. Considering the time when MARC was designed, it fulfilled these requirements. The characters were 7-bits long (ASCII), the MARC codes were few and far between, and its sequential nature allowed it to be shipped back and forth on things like tape or even a modem. (&#8220;Remember modems?&#8221;) Without the use of an intermediary computer program, is is entirely possible to read and write a MARC records with a decent text editor. So, the answer is &#8220;No, MARC is not only readable by a machine.&#8221;</p>
<p>On the other hand, considering how much extra data (&#8220;information&#8221;) the profession has stuffed into MARC data structure, it is really really hard to edit MARC records with a text editor. Library Land has mixed three things into a single whole: data, presentation, and data structure. This is really bad when it comes to computing. For example, a thing may have been published in 1542, but the cataloger is not certain of this date. Consequently, they will enter a data value of [1542]. Well, that is not a date (a number), but rather a string (a word). To make matters worse, the cataloger may think the date (year) of publication is within a particular decade but not exactly sure, and the date may be entered like as [154?]. Ack! Then let&#8217;s get tricky and add a copyright notation to a more recent but uncertain date — [c1986]. Does it never end? Then lets&#8217; talk about the names of people. The venerable Fred Kilgour — founder of OCLC — is denoted in cataloging rules as Kilgour, Fred. Well, I don&#8217;t think Kilgour, Fred ever backwards talked so make sure his ideas sortable. Given the complexity of cataloging rules, which never simplify, it is really not feasible to read and write MARC records without an intermediate computer program. So, on the other hand, &#8220;Yes, an intermediary computer is necessary.&#8221; But if this is true, then why don&#8217;t catalogers know to read and write MARC records? The answer lies in what I said above. We have mixed three things into a single whole, and that is a really bad idea. We can&#8217;t expect catalogers to be computer programmers too.</p>
<p>The bottom line is this. Library Land automated its processes but it never really went to the next level and used computers to enhance library collections and services. All Library Land has done is used computers to facilitate library practice; Library Land has not embraced the true functionality of computers such as its ability to evaluate data/information. We have simply done the same thing. We wrote catalog cards by hand. We then typed catalog cards. We then used a computer to create them.</p>
<p>One more thing, Library Land simply does not have enough computer programmer types. Libraries build collections. Cool. Libraries provide services against the collections. Wonderful. This worked well (more or less) when libraries were physical entities in a localized environment. Now-a-days, when libraries are a part of a global network, libraries need to speak the global language, and that global language is spoken through computers. Computers use relational databases to organize information. Computers use indexes to make the information findable. Computers use well-structured Unicode files (such XML, JSON, and SQL files) to transmit information from one computer to another. In order to function, people who work in libraries (librarians) need to know these sorts of technologies in order to work on a global scale, but realistically speaking, what percentage of librarians, now how to do these thing, let alone know what they are? Probably less than 10%. It needs to be closer to 33%. Where 33% of the people build collections, 33% of the people provide services, and 33% of the people glue the work of the first 66% into a coherent whole. What to do with the remaining 1%? Call them &#8220;administrators&#8221;.</p>
<p>[1] Unicode &#8211; <a href="https://en.wikipedia.org/wiki/Unicode">https://en.wikipedia.org/wiki/Unicode</a></p>
]]></content:encoded>
							<wfw:commentRss>./../2015/11/re-marcable/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>MARC, MARCXML, and MODS</title>
		<link>./../2015/11/marc/index.html</link>
				<comments>./../2015/11/marc/index.html#comments</comments>
				<pubDate>Wed, 11 Nov 2015 15:19:36 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=993</guid>
				<description><![CDATA[This is the briefest of comparisons between MARC, MARCXML, and MODS. Its was written for a set of library school students learning XML. MARC is an acronym for Machine Readable Cataloging. It was designed in the 1960&#8217;s, and its primary purpose was to ship bibliographic data on tape to libraries who wanted to print catalog [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><a href="http://hanakoa.sjsu.edu/Panopto/Pages/Viewer.aspx?id=c86c868d-e224-4ec1-b7d0-94148e97bb96"><img align="right" width="200" src="./../wp-content/uploads/2015/11/screencast.png" alt="screencast"></a>This is the briefest of comparisons between MARC, MARCXML, and MODS. Its was written for a set of library school students learning XML.</p>
<p>MARC is an acronym for Machine Readable Cataloging. It was designed in the 1960&#8217;s, and its primary purpose was to ship bibliographic data on tape to libraries who wanted to print catalog cards. Consider the computing context of the time. There were no hard drives. RAM was beyond expensive. And the idea of a relational database had yet to be articulated. Consider the idea of a library&#8217;s access tool &#8212; the card catalog. Consider the best practice of catalog cards. &#8220;Generate no more than four or five cards per book. Otherwise, we will not be able to accommodate all of the cards in our drawers.&#8221; MARC worked well, and considering the time, it represented a well-designed serial data structure complete with multiple checksum redundancy.</p>
<p>Someone then got the &#8220;cool&#8221; idea to create an online catalog from MARC data. The idea was logical but grew without a balance of library and computing principles. To make a long story short, library principles sans any real understanding of computing principles prevailed. The result was a bloating of the MARC record to include all sorts of administrative data that never would have made it on to a catalog card, and this data was delimited in the MARC record with all sorts of syntactical &#8220;sugar&#8221; in the form of punctuation. Moreover, as bibliographic standards evolved, the previously created data was not updated, and sometimes people simply ignored the rules. The consequence has been disastrous, and even Google can&#8217;t systematically parse the bibliographic bread &amp; butter of Library Land.* The folks in the archives community &#8212; with the advent of EAD &#8212; are so much better off.</p>
<p>Soon after XML was articulated the Library Of Congress specified MARCXML &#8212; a data structure designed to carry MARC forward. For the most part, it addressed many of the necessary issues, but since it insisted on making the data in a MARCXML file 100% transformable into a &#8220;traditional&#8221; MARC record, MARCXML falls short. For example, without knowing the &#8220;secret codes&#8221; of cataloging &#8212; the numeric field names &#8212; it is very difficult to determine what are the authors, titles, and subjects of a book.</p>
<p>The folks at the Library Of Congress understood these limitations almost from the beginning, and consequently they created an additional bibliographic standard called MODS &#8212; Metadata Object Description Schema. This XML-based metadata schema goes a long way in addressing both the computing times of the day and the needs for rich, full, and complete bibliographic data. Unfortunately, &#8220;traditional&#8221; MARC records are still the data structure ingested and understood by the profession&#8217;s online catalogs and &#8220;discovery systems&#8221;. Consequently, without a wholesale shift in practice, the profession&#8217;s intellectual content is figuratively stuck in the 1960&#8217;s.</p>
<p>* Consider the hodgepodge of materials digitized by Google and accessible in the HathiTrust. A search for Walden by Henry David Thoreau returns a myriad of titles, all exactly the same.</p>
<h2>Readings</h2>
<ol>
<li>MARC (<a href="http://www.loc.gov/marc/bibliographic/bdintro.html">http://www.loc.gov/marc/bibliographic/bdintro.html</a>) &#8211; An introduction to the MARC standard</li>
<li>leader (<a href="http://www.loc.gov/marc/specifications/specrecstruc.html#leader">http://www.loc.gov/marc/specifications/specrecstruc.html#leader</a>) &#8211; All about the leader of a traditional MARC record</li>
<li>MARC Must Die (<a href="http://lj.libraryjournal.com/2002/10/ljarchives/marc-must-die/">http://lj.libraryjournal.com/2002/10/ljarchives/marc-must-die/</a>) &#8211; An essay by Roy Tennent outlining why MARC is not a useful bibliographic format. Notice when it was written.</li>
<li>MARCXML (<a href="https://www.loc.gov/standards/marcxml/marcxml-design.html">https://www.loc.gov/standards/marcxml/marcxml-design.html</a>) &#8211; Here are the design considerations for MARCXML</li>
<li>MODS (<a href="http://www.loc.gov/standards/mods/userguide/">http://www.loc.gov/standards/mods/userguide/</a>) &#8211; This is an introduction to MODS</li>
</ol>
<h2>Exercise</h2>
<p>This is much more of an exercise than it is an assignment. The goal of the activity is not to get correct answers but instead to provide a framework for the reader to practice critical thinking against some of the bibliographic standards of the library profession. To the best of your ability, and in the form of an written essay between 500 and 1000 words long, answer and address the following questions based on the contents of the <a href="./../wp-content/uploads/2015/11/marc-data.zip">given .zip file</a>:</p>
<ol>
<li>Measured in characters (octets), what is the maximum length of a MARC record? (Hint: It is defined in the leader of a MARC record.)</li>
<li>Given the maximum length of a MARC record (and therefore a MARCXML record), what are some of the limitations this imposes when it comes to full and complete bibliographic description?</li>
<li>Given the attached .zip file, how many bibliographic items are described in the file named data.marc? How many records are described in the file named data.xml? How many records are described in the file named data.mods? How do did you determine the answers to the previous three questions? (Hint: Open and read the files in your favorite text and/or XML editor.)</li>
<li>What is the title of the book in the first record of data.marc? Who is the author of the second record in the file named data.xml. What are the subjects of the third record in the file named data.mods? How did you determine the answers the previous three questions? Be honest.</li>
<li>Compare &amp; contrast the various bibliographic data structures in the given .zip file. There are advantages and disadvantages to all three.</li>
</ol>
]]></content:encoded>
							<wfw:commentRss>./../2015/11/marc/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>&#8220;Sum  reflextions&#8221; on travel</title>
		<link>./../2015/10/travel/index.html</link>
				<comments>./../2015/10/travel/index.html#comments</comments>
				<pubDate>Sun, 25 Oct 2015 11:31:16 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>

		<guid isPermaLink="false">./../index.html?p=984</guid>
				<description><![CDATA[These are &#8220;sum reflextions&#8221; on travel; travel is a good thing, for many reasons. I am blogging in front of the Pantheon. Amazing? Maybe. Maybe not. But the ability to travel, see these sorts of things, experience the different languages and cultures truly is amazing. All too often we live in our own little worlds, [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>These are &#8220;sum reflextions&#8221; on travel; travel is a good thing, for many reasons.</p>
<p><img align="right" src="./../wp-content/uploads/2015/10/IMG_8145.jpg" alt="pantheon">I am blogging in front of the Pantheon. Amazing? Maybe. Maybe not. But the ability to travel, see these sorts of things, experience the different languages and cultures truly is amazing. All too often we live in our own little worlds, especially in the United States. I can&#8217;t blame us too much. The United States is geographically large. It borders only two other countries. One country speaks Spanish. The other speaks English and French. While the United States is the proverbial &#8220;melting pot&#8221;, there really isn&#8217;t very much cultural diversity in the United States, not compared to Europe. Moreover, the United States does not nearly have the history of Europe. For example, I am sitting in front of a building that was build before the &#8220;New World&#8221; was even considered as existing. It doesn&#8217;t help that the United States&#8217; modern version of imperialism tends to make &#8220;United Statesians&#8221; feel as if they are the center of the world. I guess, that is some ways, it is not much different than Imperial Rome. &#8220;All roads lead to Rome.&#8221;</p>
<p>As you may or may not know, I have commenced upon a sort of leave of absence from my employer. In the past six weeks I have moved all of belongings to a cabin in a remote part of Indiana, and I have moved myself to Chicago. From there I began a month-long adventure. It began in Tuscany where I painted and deepened my knowledge of Western art history. I spent a week in Venice where I did more painting, walked up to my knees in water because the streets flooded, and I experienced Giotto&#8217;s frescos in Padua. For the past week I experienced Rome and did my best to actively participate in a users group meeting called ADLUG &#8212; the remnants of a user&#8217;s group meeting surrounding one of the very first integrated library systems &#8212; Dobris Libris. I also painted and rode a bicycle along the Appian Way. I am now on my way to Avignon where I will take a cooking class and continue on a &#8220;artist&#8217;s education&#8221;.</p>
<p><img align="right" src="./../wp-content/uploads/2015/10/IMG_7944.jpg" alt="appian way">Travel is not easy. It requires a lot of planning and coordination. &#8220;Where will I be when, and how will I get there? Once I&#8217;m there, what am I going to do, and how will I make sure things don&#8217;t go awry?&#8221; In this way, travel is not for the fient of heart, especially when venturing into territory where you do not know the language. It can be scary. Nor is travel inexpensive. One needs to maintain two households.</p>
<p>Travel is a kind of education that can not be gotten through the reading of books, the watching of television, nor discussion with other people. It is something that must be experienced first hand. Like sculpture, it is literally an experience that can only exist time &amp; space in order to fully appreciate.</p>
<p>What does this have to do with librarianship? On one hand, nothing. On the other hand, everthing. From my perspective, librarianship is about a number of processes applied against a number of things. These processes include collection, organization, preservation, dissemination, and sometimes evaluation. The things of librarianship are data, information, knowledge, and sometimes wisdom. Even today, with the advent of our globally networked computers, the activities of librarianship remain essentially unchanged when compared to the activities of more than a hundred years ago. Libraries still curate collections, organize the collections into useful sets, provide access to the collections, and endeavor to maintain all of these services for the long haul.</p>
<p>Like most people and travel, many librarians (and people who work in libraries) do not have a true appreciation for the work of their colleagues. Sure, everybody applauds everybody else&#8217;s work, but have they actually walked in those other people&#8217;s shoes? The problem is most acute between the traditional librarians and the people who write computer programs for libraries. Both sets of people have the same goals; they both want to apply the same processes to the same things, but their techniques for accomplishing those goals are disimilar. One wants to take a train to get where they are going, and other wants to fly. This must change lest the profession become even less relevant.</p>
<p><img align="right" src="./../wp-content/uploads/2015/10/flowers.jpg" alt="flowers">What is the solution? In a word, travel. People need to mix and mingle with the other culture. Call it cross-training. Have the computer programmer do some traditional cataloging for a few weeks. Have the cataloger learn how to design, implement, and maintain a relational database. Have the computer programmer sit at the reference desk for a while in order to learn about service. Have the reference librarian work with the computer programmer and learn how to index content and make it searchable. Have the computer programmer work in an archive or conservatory making books and saving content in gray cardboard boxes. Have the archivist hang out with computer programmer and learn how content is backed up and restored.</p>
<p>How can all this happen? In my opinion, the most direct solution is advocacy from library administration. Without the blessing of library administration everybody will say, &#8220;I don&#8217;t have time for such &#8216;travel&#8217;.&#8221; Well, library work is never done, and time will need to be carved out and taken from the top, like retirement savings, in order for such trips abroad to come to fruition.</p>
<p>The waiters here at my cafe are getting restless. I have had my time here, and it is time to move on. I will come back, probably in the Spring, and I&#8217;ll stay longer. In the meantime, I will continue with my own personal education.</p>
]]></content:encoded>
							<wfw:commentRss>./../2015/10/travel/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>What is old is new again</title>
		<link>./../2015/10/old-is-new/index.html</link>
				<pubDate>Thu, 22 Oct 2015 10:40:09 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=970</guid>
				<description><![CDATA[The &#8220;how&#8217;s&#8221; of librarianship are changing, but not the &#8220;what&#8217;s&#8221;. (This is an outline for my presentation given at the ADLUG Annual Meeting in Rome (October 21, 2015). Included here are also the one-page handout and slides, both in the form of PDF documents.) Linked Data Linked Data is a method of describing objects, and [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><em>The &#8220;how&#8217;s&#8221; of librarianship are changing, but not the &#8220;what&#8217;s&#8221;.</em></p>
<p>(This is an outline for my presentation given at the <a href="http://www.adlug.net/">ADLUG Annual Meeting in Rome</a> (October 21, 2015). Included here are also the one-page <a href="./../wp-content/uploads/2015/10/handout.pdf">handout</a> and <a href="./../wp-content/uploads/2015/10/slides.pdf">slides</a>, both in the form of PDF documents.)</p>
<h2>Linked Data</h2>
<p>Linked Data is a method of describing objects, and these objects can be the objects in a library. In this way, Linked Data is a type of bibliographic description.</p>
<p>Linked Data is a manifestation of the Semantic Web. It is an interconnection of virtual sentences known as triples. Triples are rudimentary data structures, and as the name implies, they are made of three parts: 1) subjects, 2) predicates, and 3) objects. Subjects always take the form of a URI (think &#8220;URL&#8221;), and they point to things real or imaginary. Objects can take the form of a URI or a literal (think &#8220;word&#8221;, &#8220;phrase&#8221; or &#8220;number&#8221;). Predicates also take the form of a URI, and they establish relationships between subjects and objects. Sets of predicates are called ontologies or vocabularies and they present the languages of Linked Data.</p>
<p><img align="right" src="./../wp-content/uploads/2015/10/graph.png" alt="simple arced graph"></p>
<p>Through the curation of sets of triples, and through the re-use of URIs, it is often possible to make explicit assuming information and new knowledge.</p>
<p>There are an increasing number of applications enabling libraries to transform and convert their bibliographic data into Linked Data. One such application is called the <a href="http://www.aliada-project.eu/">ALIADA</a>.</p>
<p>When &amp; if the intellectual content of libraries, archives, and museums is manifested as Linked Data, then new relationships between resources will be uncovered and discovered. Consequently, one of the purposes of cultural heritage institutions will be realized. Thus, Linked Data is a newer, more timely method of describing collections; what is old is new again.</p>
<h2>Curation of digital objects</h2>
<p>The curation of collections, especially in libraries, does not have to be limited to physical objects. Increasingly new opportunities regarding the curation of digital objects represent a growth area.<br />
With the advent of the Internet there exists an abundance of full-text digital objects just waiting to be harvested, collected, and cached. It is not good enough to link and point to such objects because links break and institutions (websites) dissolve.</p>
<p>Curating digital objects is not easy, and it requires the application of traditional library principles of preservation in order to be fulfilled. It also requires systematic organization and evaluation in order to be useful.</p>
<p>Done properly, there are many advantages to the curation of such digital collections: long-term access, analysis &amp; evaluation, use &amp; re-use, and relationship building. Examples include: the creation of institutional repositories, the creation of bibliographic indexes made up of similar open access journals, and the complete works of an author of interest.</p>
<p>In the recent past I have created &#8220;browsers&#8221; used to do &#8220;distant reading&#8221; against curated collections of materials from the <a href="https://github.com/ndlib/text-analysis-htrc">HathiTrust</a>, the <a href="https://github.com/ndlib/text-analysis-eebo">EEBO-TCP</a>, and <a href="https://github.com/ndlib/text-analysis-jstor">JSTOR</a>. Given a curated list of identifiers each of the browsers locally caches the full text of digital object object, creates a &#8220;catalog&#8221; of the collection, does full text indexing against the whole collection, and generates a set of reports based on the principles of text mining. The result is a set of both HTML files and simple tab-delimited text files enabling the reader to get an overview of the collection, query the collection, and provide the means for closer reading.</p>
<p><a href="http://kilgour.library.nd.edu/hathitrust/emerson/about.html"><img align="left" src="./../wp-content/uploads/2015/10/wordcloud.png" alt="wordcloud"></a></p>
<p>How can these tools be used? A reader could first identify the complete works of a specific author from the HathiTrust, say, Ralph Waldo Emerson. They could then identify all of the journal articles in JSTOR written about Ralph Waldo Emerson. Finally the reader could use the HathiTrust and JSTOR browsers to curate the full text of all the identified content to verify previously established knowledge or discover new knowledge. On a broader level, a reader could articulate a research question such as &#8220;What are some of the characteristics of early American literature, and how might some of its authors be compared &amp; contrasted?&#8221; or &#8220;What are some of the definitions of a &#8216;great&#8217; man, and how have these definitions changed over time?&#8221;</p>
<p>The traditional principles of librarianship (collection, organization, preservation, and dissemination) are alive and well in this digital age. Such are the &#8220;whats&#8221; of librarianship. It is the &#8220;hows&#8221; of the librarianship that need to evolve in order the profession to remain relevant. What is old is new again.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Painting in Tuscany</title>
		<link>./../2015/10/painting/index.html</link>
				<pubDate>Tue, 13 Oct 2015 10:30:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>

		<guid isPermaLink="false">./../index.html?p=961</guid>
				<description><![CDATA[As you may or may not know, I have commenced upon a sort of leave of absence from my employer, and I spent the last the better part of the last two weeks painting in Tuscany. Me and eight other students arrived in Arezzo (Italy) on Wednesday, October 1, and we were greeted by Yves [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>As you may or may not know, I have commenced upon a sort of leave of absence from my employer, and I spent the last the better part of the last two weeks painting in Tuscany.</p>
<p>Me and eight other students arrived in Arezzo (Italy) on Wednesday, October 1, and we were greeted by Yves Larocque of <a href="http://walkthearts.com/">Walk The Arts</a>. We then spent the next ten days on a farm/villa very close to Singalunga (Italy) where we learned about color theory, how to mix colors, a bit of Western art history, and art theory. All the while we painted and painted and painted. I have taken a few art classes in my day and this was quite honestly the best one I&#8217;ve ever attended. It was thorough, individualized, comprehensive, and totally immersive. Painting in Tuscany was a wonderful way to commence a leave of absence. The process gave me a chance to totally get away, see things from a different vantage point, and begin an assessment.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2015/10/IMG_7500.jpg"></p>
<p style="text-align: center">
<img src="./../wp-content/uploads/2015/10/IMG_7383.jpg"></p>
<p style="text-align: center">
<img src="./../wp-content/uploads/2015/10/IMG_7559.jpg"></p>
<p style="text-align: center">
<img src="./../wp-content/uploads/2015/10/IMG_7473.jpg"></p>
<p>What does this have to do with librarianship? I don&#8217;t know, yet. When I find out I&#8217;ll let you know.</p>
]]></content:encoded>
										</item>
		<item>
		<title>My water collection predicts the future</title>
		<link>./../2015/09/water-predicts/index.html</link>
				<comments>./../2015/09/water-predicts/index.html#comments</comments>
				<pubDate>Tue, 29 Sep 2015 16:37:35 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">./../index.html?p=954</guid>
				<description><![CDATA[As many of you may or may not know, I collect water, and it seems as if my water collection predicts the future, sort of. Since 1979 or so, I’ve been collecting water. [1] The purpose of the collection is/was enable me to see and experience different parts of the world whenever I desired. As [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>As many of you may or may not know, I collect water, and it seems as if my water collection predicts the future, sort of.</p>
<p><img src="./../wp-content/uploads/2015/09/florence.jpg" align="right" height="200">Since 1979 or so, <a href="./../2009/09/water-1-of-3/index.html">I’ve been collecting water</a>. [1] The purpose of the collection is/was enable me to see and experience different parts of the world whenever I desired. As the collection grew and my computer skills developed, I frequently used the water collection as a kind of Guinea pig for digital library projects. For example, my water collection was once manifested as a HyperCard Stack complete with the sound of running water in the background. For a while my water collection was maintained in a FileMaker database that generated sets of HTML. Quite a number of years ago I migrated everything to MySQL and embedded images of the water bottles in fields of the database. This particular implementation also exploited XML and XSLT to dynamically make the content available on the Web. (There was even some RDF output.) After that I included geographic coordinates into the database. This made it easy for me to create maps illustrating whence the water came. To date, there are about two hundred and fifty waters in my collection, but active collecting has subsided in the past few years.</p>
<p>But alas, this past year I migrated my co-located host to a virtual machine. In the process I moved all of my Web-based applications &#8212; dating back more than two decades &#8212; to a newer version of the LAMP stack, and in the process I lost only a single application &#8212; my water collection. I still have all the data, but the library used to integrate XSLT into my web server (AxKit) simply would not work with Apache 2.0, and I have not had the time to re-implement a suitable replacement.</p>
<p>Concurrently, I have been negotiating a two-semester long leave-of-absence from my employer. The “leave” has been granted and commenced a few of weeks ago. The purpose of the leave is two-fold: 1) to develop my skills as a librarian, and 2) to broaden my experience as a person. The first part of my leave is to take a month-long vacation, and that vacation begins today. For the first week I will paint in Tuscany. For the second week I will drink coffee in Venice. During the third week I will give a keynote talk at <a href="http://www.adlug.net/">ADLUG</a> in Rome. [2] Finally, during the fourth week I will learn how to make croissants in Provence. After the vacation is over I will continue to teach “<a href="http://ischoolapps.sjsu.edu/facultypages/view.php?fac=morgane">XML 101</a>” to library school graduate students at San Jose State University. [3] I will also continue to work for the University of Notre Dame on a set of three text mining projects (<a href="https://github.com/ndlib/text-analysis-eebo">EEBO</a>, <a href="https://github.com/ndlib/text-analysis-jstor">JSTOR</a>, and <a href="https://github.com/ndlib/text-analysis-htrc">HathiTrust</a>). [4, 5, 6]</p>
<p>As I was getting ready for my “leave” I was rooting through my water collection, and I found four different waters, specifically from: 1) Florence, 2) Venice, 3) Rome, and 4) Nice. As I looked at the dates of when the water was collected, I realized I will be in those exact same four places, on those exact same four days, exactly thirty-three years after I originally collected them. My water collection predicted my future. My water collection is a sort of model of me and my professional career. My water collection has sent me a number of signs.</p>
<p>This “leave-of-absence” (which in not really a leave nor a sabbatical, but instead a temporary change to adjunct faculty status) is a whole lot like going to college for the first time. “Where in the world am I going? What in the world am I going to do? Who in the world will I meet?” It is both exciting and scary at once and at the same time. It is an opportunity I would be foolish to pass up, but it is not as easy as you might imagine. That said, I guess I am presently an artist- and librarian-at-large. I think I need new, albeit temporary, business cards to proclaim my new title(s).</p>
<p>Wish me luck, and “On my mark. Get set. Go!”</p>
<ol>
<li>blog postings describing my water collection &#8211; <a href="./../2009/09/water-1-of-3/index.html">./../2009/09/water-1-of-3/index.html</a></li>
<li>ADLUG &#8211; <a href="http://www.adlug.net/">http://www.adlug.net/</a></li>
<li>“XML 101” at SJSU &#8211; <a href="http://ischoolapps.sjsu.edu/facultypages/view.php?fac=morgane">http://ischoolapps.sjsu.edu/facultypages/view.php?fac=morgane</a></li>
<li>EEBO browser &#8211; <a href="https://github.com/ndlib/text-analysis-eebo">https://github.com/ndlib/text-analysis-eebo</a></li>
<li>JSTOR browser &#8211; <a href="https://github.com/ndlib/text-analysis-jstor">https://github.com/ndlib/text-analysis-jstor</a></li>
<li>HathiTrust browser &#8211; <a href="https://github.com/ndlib/text-analysis-htrc">https://github.com/ndlib/text-analysis-htrc</a></li>
</ol>
]]></content:encoded>
							<wfw:commentRss>./../2015/09/water-predicts/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Some automated analysis of Richard Baxter&#8217;s works</title>
		<link>./../2015/06/automated-baxter/index.html</link>
				<pubDate>Sat, 13 Jun 2015 21:19:00 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=951</guid>
				<description><![CDATA[baxter This page describes a corpus named baxter. It is a programmatically generated report against the full text of all the writing of Richard Baxter (a English Puritan church leader, poet, and hymn-writer) as found in Early English Books Online. It was created using a (fledgling) tool called the EEBO Workset Browser. General statistics An [&#8230;]]]></description>
								<content:encoded><![CDATA[<h1><img heigh="300" align="right" src="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/wordcloud-frequency.png">baxter</h1>
<p>This page describes a corpus named baxter. It is a programmatically generated report against the full text of all the writing of <a href="https://en.wikipedia.org/wiki/Richard_Baxter">Richard Baxter</a> (a English Puritan church leader, poet, and hymn-writer) as found in Early English Books Online. It was created using a (fledgling) tool called the <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/">EEBO Workset Browser</a>.</p>
<h2>General statistics</h2>
<p>An analysis of the corpus&#8217;s metadata provides an overview of what and how many things it contains, when things were published, and the sizes of its items:</p>
<ul>
<li><strong>Number of items</strong> &#8211; 140</li>
<li><strong>Publication date range</strong> &#8211; 1650 to 1697 (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-histogram-dates.png">histogram</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-boxplot-dates.png">boxplot</a>)</li>
<li><strong>Sizes in pages</strong> &#8211; 1 to 1258 (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-histogram-pages.png">histogram</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-boxplot-pages.png">boxplot</a>)</li>
<li><strong>Total number of pages</strong> &#8211; 33507</li>
<li><strong>Average number of pages per item</strong> &#8211; 239</li>
</ul>
<p>Possible correlations between numeric characteristics of records in the catalog can be illustrated through a <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-scatterplot.png">matrix of scatter plots</a>. As you would expect, there is almost always a correlation between pages and number of words. Are others exist? For more detail, <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/catalog.html">browse the catalog</a>.</p>
<h2>Notes on word usage</h2>
<p>By counting and tabulating the words in each item of the corpus, it is possible to measure additional characteristics:</p>
<ul>
<li><strong>Sizes of items in words</strong> &#8211; 858 to 532780 (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-histogram-words.png">histogram</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-boxplot-words.png">boxplot</a>)</li>
<li><strong>Total number of words</strong> &#8211; 4986083</li>
<li><strong>Average number of words per item</strong> &#8211; 35614</li>
<li><strong>Total number of unique words</strong> &#8211; 70036</li>
<li style="margin-bottom: 1em"><strong>Most common words</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=god">god</a> (65230)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=may">may</a> (34500)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=us">us</a> (32510)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=one">one</a> (31437)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=church">church</a> (30329)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=men">men</a> (28306)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=would">would</a> (27141)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=man">man</a> (26623)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=hath">hath</a> (26209)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=yet">yet</a> (22972)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=many">many</a> (21280)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=much">much</a> (20667)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=chriſt">chriſt</a> (20084)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=love">love</a> (19732)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=world">world</a> (19611)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=make">make</a> (18478)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=know">know</a> (17281)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=therefore">therefore</a> (17169)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=faith">faith</a> (16088)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=must">must</a> (15544)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=though">though</a> (15314)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=good">good</a> (15283)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=doth">doth</a> (15163)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=muſt">muſt</a> (15089)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=things">things</a> (14996)&nbsp;</li>
</ul>
<p>Perusing the list of <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/dictionary.db">all words in the corpus</a> (and their frequencies) as well as <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/unique.db">all unique words</a> can prove to be quite insightful. Are there one or more words in these lists connoting an idea of interest to you, and if so, then to what degree do these words occur in the corpus?</p>
<p>To begin to see how words of your choosing occur in specific items, <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi">search the collection</a>.</p>
<p>Through the creation of locally defined &#8220;dictionaries&#8221; or &#8220;lexicons&#8221;, it is possible to count and tabulate how specific sets of words are used across a corpus. This particular corpus employs three such dictionaries &#8212; sets of: 1) <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/etc/theme-names.txt">&#8220;big&#8221; names</a>, 2) <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/etc/theme-ideas.txt">&#8220;great&#8221; ideas</a>, and 3) <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/etc/theme-colors.txt">colors</a>. Their frequencies are listed below:</p>
<ul>
<li style="margin-bottom: 1em"><strong>Most common &#8220;big&#8221; names</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=james">james</a> (567)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=augustine">augustine</a> (148)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=aquinas">aquinas</a> (142)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=plato">plato</a> (128)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=aristotle">aristotle</a> (59)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=plutarch">plutarch</a> (55)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=smith">smith</a> (55)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=bacon">bacon</a> (37)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=hobbes">hobbes</a> (35)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=virgil">virgil</a> (30)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=aurelius">aurelius</a> (29)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=gilbert">gilbert</a> (25)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=plotinus">plotinus</a> (23)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=mill">mill</a> (22)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=epictetus">epictetus</a> (18)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=swift">swift</a> (17)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=apollonius">apollonius</a> (13)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=tacitus">tacitus</a> (12)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=galen">galen</a> (12)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=homer">homer</a> (12)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=gibbon">gibbon</a> (9)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=lucretius">lucretius</a> (7)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=sterne">sterne</a> (7)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=hippocrates">hippocrates</a> (6)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=herodotus">herodotus</a> (4)&nbsp;  For more detail, see the list of <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/dictionary-names.db">&#8220;big&#8221; name frequencies</a>.</li>
<li style="margin-bottom: 1em"><strong>Most common &#8220;great&#8221; ideas</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=god">god</a> (65231)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=one">one</a> (31438)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=man">man</a> (26624)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=many">many</a> (21281)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=love">love</a> (19733)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=world">world</a> (19612)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=good">good</a> (15284)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=life">life</a> (13768)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=law">law</a> (12074)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=sin">sin</a> (9698)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=time">time</a> (9296)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=nature">nature</a> (8487)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=duty">duty</a> (7094)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=death">death</a> (6759)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=truth">truth</a> (6689)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=religion">religion</a> (6483)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=soul">soul</a> (5993)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=matter">matter</a> (5631)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=peace">peace</a> (5093)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=particular">particular</a> (4830)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=mind">mind</a> (4676)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=government">government</a> (4538)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=knowledge">knowledge</a> (4099)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=evil">evil</a> (4045)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=cause">cause</a> (3536)&nbsp;  For more detail, see the list of <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/dictionary-ideas.db">&#8220;great&#8221; idea frequencies</a>.</li>
<li style="margin-bottom: 1em"><strong>Colors</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=white">white</a> (302)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=black">black</a> (93)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=red">red</a> (88)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=green">green</a> (54)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=purple">purple</a> (51)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=brown">brown</a> (46)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=orange">orange</a> (9)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=gray">gray</a> (6)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=yellow">yellow</a> (3)&nbsp; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/search.cgi?q=blue">blue</a> (1)&nbsp;  For more detail, see the list of <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/dictionary-colors.db">color word frequencies</a>.</li>
</ul>
<p>The distribution of words (histograms and boxplots) and the frequency of words (wordclouds), and how these frequencies &#8220;cluster&#8221; together can be illustrated:</p>
<ul>
<li><strong>Histograms</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-histogram-names.png">&#8220;big&#8221; names</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-histogram-ideas.png">&#8220;great&#8221; ideas</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-histogram-colors.png">colors</a></li>
<li><strong>Boxplots</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-boxplot-names.png">&#8220;big&#8221; names</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-boxplot-ideas.png">&#8220;great&#8221; ideas</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/catalog-boxplot-colors.png">colors</a></li>
<li><strong>Wordclouds</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/wordcloud-frequency.png">most common words</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/wordcloud-names.png">&#8220;big&#8221; names</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/wordcloud-ideas.png">&#8220;great&#8221; ideas</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/wordcloud-colors.png">colors</a></li>
<li><strong>Cluster dendrograms</strong> &#8211; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/cluster-frequent.png">most common words</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/cluster-names.png">&#8220;big&#8221; names</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/cluster-ideas.png">&#8220;great&#8221; ideas</a>; <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/graphs/cluster-colors.png">colors</a></li>
</ul>
<h2>Items of interest</h2>
<p>Based on the information above, the following items (and their associated links) are of possible interest:</p>
<ul>
<li style="margin-bottom: 1em"><strong>Shortest item</strong> (1 p.) &#8211; Short instructions for the sick: Especially who by contagion, or otherwise, are deprived of the presence of a faithfull pastor. / By Richard Baxter. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A76214.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A76214.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A76214.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Longest item</strong> (1258 p.) &#8211; A Christian directory, or, A summ of practical theologie and cases of conscience directing Christians how to use their knowledge and faith, how to improve all helps and means, and to perform all duties, how to overcome temptations, and to escape or mortifie every sin : in four parts &#8230; / by Richard Baxter. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A26892.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A26892.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A26892.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Oldest item</strong> (1650) &#8211; The saints everlasting rest, or, A treatise of the blessed state of the saints in their enjoyment of God in glory wherein is shewed its excellency and certainty, the misery of those that lose it, the way to attain it, and assurance of it, and how to live in the continual delightful forecasts of it and now published by Richard Baxter &#8230; (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A27017.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A27017.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A27017.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Most recent</strong> (1697) &#8211; Mr. Richard Baxter&#8217;s last legacy in select admonitions and directions to all sober dissenters. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A26948.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A26948.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A26948.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Most thoughtful item</strong> &#8211; Short instructions for the sick: Especially who by contagion, or otherwise, are deprived of the presence of a faithfull pastor. / By Richard Baxter. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A76214.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A76214.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A76214.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Least thoughtful item</strong> &#8211; Dattodiad y qwestiwn mawr, beth sydd raid i ni ei wneuthur fel y byddom gadwedig. Athrawiaethau i fuchedd sanctaidd. / O waith y disinydd parchedig Mr. Richard Baxter. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A76162.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A76162.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A76162.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Biggest name dropper</strong> &#8211; R. Baxter&#8217;s sence of the subscribed articles of religion (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A27037.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A27037.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A27037.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Fewest quotations</strong> &#8211; Additions to the poetical fragments of Rich. Baxter written for himself and communicated to such as are more for serious verse than smooth. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A26856.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A26856.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A26856.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Most colorful</strong> &#8211; The certainty of the worlds of spirits and, consequently, of the immortality of souls of the malice and misery of the devils and the damned : and of the blessedness of the justified, fully evinced by the unquestionable histories of apparitions, operations, witchcrafts, voices &amp;c. / written, as an addition to many other treatises for the conviction of Sadduces and infidels, by Richard Baxter. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A26888.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A26888.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A26888.txt">plain text</a>)</li>
<li style="margin-bottom: 1em"><strong>Ugliest</strong> &#8211; Richard Baxter his account to his dearly beloved, the inhabitants of Kidderminster, of the causes of his being forbidden by the Bishop of Worcester to preach within his diocess with the Bishop of Worcester&#8217;s letter in answer thereunto : and some short animadversions upon the said bishops letter. (<a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/xml/A26854.xml">TEI</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/html/A26854.html">HTML</a> : <a href="http://dh.crc.nd.edu/sandbox/eebo-tcp/baxter/text/A26854.txt">plain text</a>)</li>
</ul>
]]></content:encoded>
										</item>
		<item>
		<title>Marrying close and distant reading: A THATCamp project</title>
		<link>./../2015/04/close-and-distant/index.html</link>
				<pubDate>Sun, 12 Apr 2015 16:47:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>

		<guid isPermaLink="false">./../index.html?p=944</guid>
				<description><![CDATA[The purpose of this page is to explore and demonstrate some of the possibilities of marrying close and distant reading. By combining both of these processes there is a hope greater comprehension and understanding of a corpus can be gained when compared to using close or distant reading alone. (This text might also be republished [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>The purpose of this page is to explore and demonstrate some of the possibilities of marrying close and distant reading. By combining both of these processes there is a hope greater comprehension and understanding of a corpus can be gained when compared to using close or distant reading alone. (This text might also be republished at <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/">http://dh.crc.nd.edu/sandbox/thatcamp-2015/</a> as well as <a href="http://nd2015.thatcamp.org/2015/04/07/close-and-distant/">http://nd2015.thatcamp.org/2015/04/07/close-and-distant/</a>.)</p>
<p>To give this exploration a go, two texts are being used to form a corpus: 1) Machiavelli&#8217;s <cite>The Prince</cite> and 2) Emerson&#8217;s <cite>Representative Men</cite>. Both texts were printed and bound into a single book (codex). The book is intended to be read in the traditional manner, and the layout includes extra wide margins allowing the reader to liberally write/draw in the margins. As the glue is drying on the book, the plain text versions of the texts were evaluated using a number of rudimentary text mining techniques and with the results made available here. Both the traditional reading as well as the text mining are aimed towards answering a few questions. How do both Machiavelli and Emerson define a &#8220;great&#8221; man? What characteristics do &#8220;great&#8221; mean have? What sorts of things have &#8220;great&#8221; men accomplished?</p>
<h2>Comparison</h2>
<table border="1">
<tbody>
<tr>
<th align="right">Feature</th>
<th>The Prince</th>
<th>Representative Men</th>
</tr>
<tr>
<th align="right">Author</th>
<td><a href="http://en.wikipedia.org/wiki/Niccolò_Machiavelli">Niccolò di Bernardo dei Machiavelli (1469 &#8211; 1527)</a></td>
<td><a href="http://en.wikipedia.org/wiki/Ralph_Waldo_Emerson">Ralph Waldo Emerson (1803 &#8211; 1882)</a></td>
</tr>
<tr>
<th align="right">Title</th>
<td><a href="http://en.wikipedia.org/wiki/The_Prince">The Prince</a></td>
<td><a href="http://en.wikipedia.org/wiki/Representative_Men">Representative Men</a></td>
</tr>
<tr>
<th align="right">Date</th>
<td>1532</td>
<td>1850</td>
</tr>
<tr>
<th align="right">Fulltext</th>
<td><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/machiavelli-prince-680.txt">plain text</a> | <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/machiavelli-prince-680.htm">HTML</a> | <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/machiavelli-prince-680.pdf">PDF</a> | <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/machiavelli-prince-680.xml">TEI/XML</a></td>
<td><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/emerson-representative-755.txt">plain text</a> | <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/emerson-representative-755.htm">HTML</a> | <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/emerson-representative-755.pdf">PDF</a> | <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/corpus/emerson-representative-755.xml">TEI/XML</a></td>
</tr>
<tr>
<th align="right">Length</th>
<td>31,179 words</td>
<td>59,600 words</td>
</tr>
<tr>
<th align="right"><a href="http://en.wikipedia.org/wiki/Gunning_fog_index">Fog score</a></th>
<td>23.1</td>
<td>14.6</td>
</tr>
<tr>
<th align="right"><a href="http://en.wikipedia.org/wiki/Flesch–Kincaid_readability_tests">Flesch score</a></th>
<td>33.5</td>
<td>52.9</td>
</tr>
<tr>
<th align="right"><a href="http://en.wikipedia.org/wiki/Flesch–Kincaid_readability_tests">Kincaid score</a></th>
<td>19.7</td>
<td>11.5</td>
</tr>
<tr>
<th align="right">Frequencies</th>
<td><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-unigrams.db">unigrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-bigrams.db">bigrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-trigrams.db">trigrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-quadgrams.db">quadgrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-quintgrams.db">quintgrams</a></td>
<td><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-unigrams.db">unigrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-bigrams.db">bigrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-trigrams.db">trigrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-quadgrams.db">quadgrams</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-quintgrams.db">quintgrams</a></td>
</tr>
<tr>
<th align="right">Parts-of-speech</th>
<td><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-nouns.db">nouns</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-pronouns.db">pronouns</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-adjectives.db">adjectives</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-verbs.db">verbs</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-adverbs.db">adverbs</a></td>
<td><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-nouns.db">nouns</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-pronouns.db">pronouns</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-adjectives.db">adjectives</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-verbs.db">verbs</a>, <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-adverbs.db">adverbs</a></td>
</tr>
</tbody>
</table>
<h2>Search</h2>
<p>Search for <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/concordance.cgi?query=man%5Cb%7Cmen%5Cb&amp;work=prince">&#8220;man or men&#8221; in The Prince</a>. Search for <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/concordance.cgi?query=man%5Cb%7Cmen%5Cb&amp;work=representative">&#8220;man or men&#8221; in Representative Men</a>.</p>
<h2>Observations</h2>
<p>I observe this project to be a qualified success.</p>
<p>First, I was able to print and bind my book, and while the glue is still trying, I&#8217;m confident the final results will be more than usable. The real tests of the bound book are to see if: 1) I actually read it, 2) I annotate it using my personal method, and 3) if I am able to identify answers to my research questions, above.</p>
<table align="center">
<tbody>
<tr valign="top" align="center">
<td><img src="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/tools.JPG"><br />
bookmaking tools</td>
<td>
<img src="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/almost-done.JPG"><br />
almost done</td>
</tr>
</tbody>
</table>
<p>Second, the text mining services turned out to be more of a compare &amp; contrast methodology as opposed to a question-answering process. For example, I can see that one book was written hundreds of years before the other. The second book is almost twice as long and the first. Readability score-wise, Machiavelli is almost certainly written for the more educated and Emerson is easier to read. The frequencies and parts-of-speech are enumerative, but not necessarily illustrative. There are a number of ways the frequencies and parts-of-speech could be improved. For example, just about everything could be visualized into histograms or word clouds. The verbs ought to lemmatized. The frequencies ought to be depicted as ratios compared to the texts. Other measures could be created as well. For example, my <a href="./../2011/03/how-great/index.html">Great Books Coefficient</a> could be employed.</p>
<p>How do Emerson and Machiavelli define a &#8220;great&#8221; man. Hmmm&#8230; Well, I&#8217;m not sure. It is relatively easy to get &#8220;definitions&#8221; of men in both books (<a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/concordance.cgi?query=men+are%5Cb%7Cman+is%5Cb&amp;work=prince&amp;radius=40&amp;sort=none">The Prince</a> or <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/concordance.cgi?query=men+are%5Cb%7Cman+is%5Cb&amp;work=representative">Representative Men</a>). And network diagrams illustrating what words are used &#8220;in the same breath&#8221; as the word man in both works are not very dissimilar:</p>
<table align="center">
<tbody>
<tr align="center">
<td><img src="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/machiavelli-men.png"><br />
<a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/network.cgi?q=man&amp;w=prince">&#8220;man&#8221; in The Prince</a></td>
<td><img src="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/emerson-men.png"><br />
<a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/network.cgi?q=man&amp;w=representative">&#8220;man&#8221; in Representative men</a></td>
</tr>
</tbody>
</table>
<p><em>I think I&#8217;m going to have to read the books to find the answer. Really. </em></p>
<h2>Code</h2>
<p>Bunches o&#8217; code was written to produce the reports:</p>
<ul>
<li><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/concordance.pl">concordance.cgi</a> &#8211; the simple search engine</li>
<li><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/fathom.pl">fathom.pl</a> &#8211; used to compute the readability scores</li>
<li><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/file2pos.py">file2pos.py</a> &#8211; create a parts-of-speech file for later use</li>
<li><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/network.pl">network.cgi</a> &#8211; used to display words used &#8220;in the same breath&#8221; a given word</li>
<li><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/ngrams.pl">ngrams.pl</a> &#8211; compute ngrams</li>
<li><a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/bin/pos.py">pos.py</a> &#8211; count and tabulate parts-of-speech from a previously created file</li>
</ul>
<p>You can download this entire project &#8212; code and all &#8212; from <a href="http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/thatcamp-2015.tar.gz">http://dh.crc.nd.edu/sandbox/thatcamp-2015/reports/thatcamp-2015.tar.gz</a> or <a href="./../wp-content/uploads/2015/04/thatcamp-2015.tar.gz">./../wp-content/uploads/2015/04/thatcamp-2015.tar.gz</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Great Books Survey</title>
		<link>./../2015/01/great-books-survey/index.html</link>
				<pubDate>Thu, 01 Jan 2015 15:55:26 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Great Books of the Western World]]></category>

		<guid isPermaLink="false">./../index.html?p=932</guid>
				<description><![CDATA[I am happy to say that the Great Books Survey is still going strong. Since October of 2010 it has been answered 24,749 times by 2,108 people from people all over the globe. To date, the top five &#8220;greatest&#8221; books are Athenian Constitution by Aristotle, Hamlet by Shakespeare, Don Quixote by Cervantes, Odyssey by Homer, [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I am happy to say that the Great Books Survey is still going strong. Since October of 2010 it has been answered 24,749 times by 2,108 people from people all over the globe. To date, the top five &#8220;greatest&#8221; books are Athenian Constitution by Aristotle, Hamlet by Shakespeare, Don Quixote by Cervantes, Odyssey by Homer, and the Divine Comedy by Dante. The least &#8220;greatest&#8221; books are Rhesus by Euripides, On Fistulae by Hippocrates, On Fractures by Hippocrates, On Ulcers by Hippocrates, On Hemorrhoids by Hippocrates. &#8220;Too bad Hippocrates&#8221;.</p>
<p style="text-align: center">
<a href="http://infomotions.com/sandbox/great-books/survey/map.cgi"><img src="./../wp-content/uploads/2015/01/map.jpg"></a></p>
<p>For more information about this Great Books of the Western World investigation, see the <a href="http://infomotions.com/sandbox/great-books/survey/#about">various blog postings</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Doing What I&#8217;m Not Suppose To Do</title>
		<link>./../2014/10/doing/index.html</link>
				<pubDate>Fri, 24 Oct 2014 18:09:37 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">./../index.html?p=896</guid>
				<description><![CDATA[I suppose I&#8217;m doing what I&#8217;m not suppose to do. One of those things is writing in books. I&#8217;m attending a local digital humanities conference. One of the presenters described and demonstrated a program from MIT called Annotation Studio. Using this program a person can upload some text to a server, annotate the text, and [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><a href="./../wp-content/uploads/2014/10/image.jpg"><img src="./../wp-content/uploads/2014/10/image.jpg" alt="image" width="300" height="225" class="alignright size-full wp-image-910"></a>I suppose I&#8217;m doing what I&#8217;m  not suppose to do. One of those things is writing in books.</p>
<p>I&#8217;m attending a local digital humanities conference. One of the presenters described and demonstrated a program from MIT called <a href="http://www.annotationstudio.org/">Annotation Studio</a>. Using this program a person can upload some text to a server, annotate the text, and share the annotations with a wider audience. Interesting!?</p>
<p>I then went for a walk to see an art show. It seems I had previously been to this art museum. The art was&#8230; art, but I did not find it beautiful. The themes were disturbing.</p>
<p>I then made it to the library where I tried to locate a copy of my one and only formally published book &#8212; <em>WAIS And Gopher Servers</em>. When I was here previously, I signed the book&#8217;s title page, and I came back to do the same thing. Alas, the book had been moved to remote storage.</p>
<p>I then proceeded to find another book in which I had written something. I was successful, and I signed the title page. <em>Gasp!</em> Considering the fact that no one had opened the book in years, and the pages were glued together I figured, &#8220;What the heck!&#8221;</p>
<p>Just as importantly, my contribution to the book &#8212; written in 1992 &#8212; was a short story called, &#8220;<a href="http://infomotions.com/musings/mrd/">A day in the life of Mr. D</a>&#8220;. It is an account of how computers would be used in the future. In it the young boy uses it to annotate a piece of text, and he gets to see the text of previous annotators. What is old is new again.</p>
<p>P.S. I composed this blog posting using an iPad. Functional but tedious.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Publishing LOD with a bent toward archivists</title>
		<link>./../2014/08/lodlamday/index.html</link>
				<pubDate>Sat, 16 Aug 2014 14:56:10 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=885</guid>
				<description><![CDATA[eye candy by Eric This essay provides an overview of linked open data (LOD) with a bent towards archivists. It enumerates a few advantages the archival community has when it comes to linked data, as well as some distinct disadvantages. It demonstrates one way to expose EAD as linked data through the use of XSLT [&#8230;]]]></description>
								<content:encoded><![CDATA[<table align="right">
<tbody>
<tr>
<td align="center"><img src="./../wp-content/uploads/2014/08/flowers.jpg"></p>
<p>eye candy by Eric</td>
</tr>
</tbody>
</table>
<p>This essay provides an overview of linked open data (LOD) with a bent towards archivists. It enumerates a few advantages the archival community has when it comes to linked data, as well as some distinct disadvantages. It demonstrates one way to expose EAD as linked data through the use of XSLT transformations and then through a rudimentary triple store/SPARQL endpoint combination. Enhancements to the linked data publication process are then discussed. The text of this essay in the form of a handout as well as a number of support files is can also be found at <a href="http://infomotions.com/sandbox/lodlamday/" target="_blank" rel="noopener noreferrer"> http://infomotions.com/sandbox/lodlamday/</a>.</p>
<h2>Review of RDF</h2>
<p>The ultimate goal of LOD is to facilitate the discovery of new information and knowledge. To accomplish this goal, people are expected to make metadata describing their content available on the Web in one or more forms of RDF &#8212; <a href="http://www.w3.org/RDF/" target="_blank" rel="noopener noreferrer">Resource Description Framework</a>.  RDF is not so much a file format as a data structure. It is a collection of &#8220;assertions&#8221; in the form of &#8220;triples&#8221; akin to rudimentary &#8220;sentences&#8221; where the first part of the sentence is a &#8220;subject&#8221;, the second part is a &#8220;predicate&#8221;, and the third part is an &#8220;object&#8221;. Both the subjects and predicates are required to be Universal Resource Identifiers &#8212; URIs. (Think &#8220;URLs&#8221;.) The subject URI is intended to denote a person, place, or thing. The predicate URI is used to specify relationships between subjects and the objects. When verbalizing RDF assertions, it is usually helpful to prefix predicate URIs with a &#8220;is a&#8221; or &#8220;has a&#8221; phrase. For example, &#8220;This book &#8216;has a&#8217; title of &#8216;Huckleberry Finn'&#8221; or &#8220;This university &#8216;has a&#8217; home page of URL&#8221;. The objects of RDF assertions are ideally more URIs but they can also be &#8220;strings&#8221; or &#8220;literals&#8221; &#8212; words, phrases, numbers, dates, geo-spacial coordinates, etc. Finally, it is expected that the URIs of RDF assertions are shared across domains and RDF collections. By doing so, new assertions can be literally &#8220;linked&#8221; across the world of RDF in the hopes of establishing new relationships. By doing so new new information and new knowledge is brought to light.</p>
<h2>Simple foray into publishing linked open data</h2>
<p>Manifesting RDF from archival materials by hand is not an easy process because nobody is going to manually type the hundreds of triples necessary to adequately describe any given item. Fortunately, it is common for the description of archival materials to be manifested in the form of EAD files. Being a form of XML, valid EAD files must be well-formed and conform to a specific DTD or schema. This makes it easy to use XSLT to transform EAD files into various (&#8220;serialized&#8221;) forms of RDF such as XML/RDF, turtle, or JSON-LD. A few years ago such a <a href="http://archiveshub.ac.uk/locah/2011/07/final-product-post-ead2rdf/" target="_blank" rel="noopener noreferrer">stylesheet</a> was written by Pete Johnston for the <a href="http://archiveshub.ac.uk/" target="_blank" rel="noopener noreferrer">Archives Hub</a> as a part of the Hub&#8217;s <a href="http://archiveshub.ac.uk/locah/" target="_blank" rel="noopener noreferrer">LOCAH</a> project. The stylesheet outputs XML/RDF and it was written specifically for Archives Hub EAD files. It has been slightly <a href="http://infomotions.com/sandbox/lodlamday/etc/ead2rdf.xsl" target="_blank" rel="noopener noreferrer">modified</a> here and incorporated into a <a href="http://infomotions.com/sandbox/lodlamday/bin/ead2rdf.pl" target="_blank" rel="noopener noreferrer">Perl script</a>. The Perl script reads the EAD files in a given directory and transforms them into both XML/RDF and HTML. The XML/RDF is intended to be read by computers. The HTML is intended to be read by people. By simply using something like the Perl script, an archive can easily participate in LOD. The results of these efforts can be seen in the <a href="http://infomotions.com/sandbox/lodlamday/rdf/" target="_blank" rel="noopener noreferrer">local RDF</a> and <a href="http://infomotions.com/sandbox/lodlamday/html/" target="_blank" rel="noopener noreferrer">HTML</a> directories. Nobody is saying the result is perfect nor complete, but it is more than a head start, and all of this is possible because the content of archives is often times described using EAD.</p>
<h2>Triple stores and SPARQL endpoints</h2>
<p>By definition, linked data (RDF) is structured data, and structured data lends itself very well to relational database applications. In the realm of linked data, these database applications are called &#8220;triple stores&#8221;. Database applications excel at the organization of data, but they are also designed to facilitate search. In the realm of relational databases, the standard query language is called SQL, and there is a similar query language for triples stores. It is called <a href="http://www.w3.org/TR/rdf-sparql-query/" target="_blank" rel="noopener noreferrer">SPARQL</a>.  The term &#8220;SPARQL endpoints&#8221; is used denote a URL where SPARQL queries can be applied to a specific triple store.</p>
<p><a href="http://4store.org/" target="_blank" rel="noopener noreferrer">4store</a> is an open source triple store application which also supports SPARQL endpoints.  Once compiled and installed, it is controlled and managed through a set of command-line applications. These applications support the sorts of things one expects with any other database application such as create database, import into database, search database, dump database, and destroy database. Two other commands turn on and turn off SPARQL endpoints.</p>
<p>For the purposes of LODLAM Training Day, a 4store triple store was created, filled with sample data, and made available as a SPARQL endpoint. If it has been turned on, then the following links ought to return useful information and demonstrating additional ways of publishing linked data:</p>
<ul>
<li><a href="http://infomotions.com:8000/status/" target="_blank" rel="noopener noreferrer">status page</a> &#8211; a sort of home pages for a 4store triple store</li>
<li><a href="http://infomotions.com:8000/test/" target="_blank" rel="noopener noreferrer">test page</a> &#8211; an HTML form enabling one to apply SPARQL queries to the triple store</li>
<li><code><a href="http://infomotions.com:8000/sparql/?query=SELECT%20DISTINCT%20?o%20WHERE%20{?s%20a%20?o}" target="_blank" rel="noopener noreferrer">SELECT DISTINCT ?o WHERE {?s a ?o}</a></code> &#8211; a list of all the objects which are types of subjects. Useful for learning what <em>types of things</em> are described in any triple store.</li>
<li><code><a href="http://infomotions.com:8000/sparql/?query=SELECT%20DISTINCT%20?p%20WHERE%20{?s%20?p%20?o}" target="_blank" rel="noopener noreferrer">SELECT DISTINCT ?p WHERE {?s ?p ?o}</a></code> &#8211; a list of all the predicates used in the triple store. Useful for learning <em>how things</em> are described in any triple store. If the ontologies used in the original RDF are well-documented, then by following the URIs (URLs) and reading the documentation found there, a person can use the previous two standard queries to understand the contents of any triple store. In this way, linked data (RDF) is self-documenting.</li>
<li><code><a href="http://infomotions.com:8000/sparql/?query=SELECT%20?title%20?description%20?url%20WHERE%20%7B%20?s%20%3Chttp://xmlns.com/foaf/0.1/page%3E%20?url%20.%20?s%20%3Chttp://www.w3.org/2000/01/rdf-schema%23label%3E%20?title%20.%20?s%20%3Chttp://data.archiveshub.ac.uk/def/scopecontent%3E%20?description%20%7D%20order%20by%20?title">SELECT ?title ?description ?url WHERE { ?s &lt;http://xmlns.com/foaf/0.1/page&gt; ?url . ?s &lt;http://www.w3.org/2000/01/rdf-schema#label&gt; ?title . ?s &lt;http://data.archiveshub.ac.uk/def/scopecontent&gt; ?description } order by ?title</a></code> &#8211; a rudimentary bibliography of all finding aids</li>
<li><code><a href="http://infomotions.com:8000/sparql/?query=SELECT%20DISTINCT%20?subject%20WHERE%20%7B%20?s%20%3Chttp://purl.org/dc/terms/subject%3E%20?uri%20.%0A?uri%20%3Chttp://www.w3.org/2000/01/rdf-schema%23label%3E%20?subject%20%7D%20ORDER%20BY%20?subject">SELECT DISTINCT ?subject WHERE { ?s &lt;http://purl.org/dc/terms/subject&gt; ?uri . ?uri &lt;http://www.w3.org/2000/01/rdf-schema#label&gt; ?subject } ORDER BY ?subject</a></code> &#8211; an alphabetical list of all the store&#8217;s subject headings</li>
</ul>
<h2>Advantages and disadvantages</h2>
<p>The previous sections demonstrate the ease at which archival metadata can be published as linked data. These demonstrations are not the the be-all nor end-all of linked data the publication process. Additional techniques could be employed. Exploiting content negotiation in response to a given URI is an excellent example. Supporting alternative RDF serializations is another example. It behooves the archivist to provide enhanced views of the linked data, which are sometimes called &#8220;graphs&#8221;. The linked data can be combined with the linked data of other publishers to implement even more interesting services, views, and graphs. All of these things are advanced techniques requiring the skills of additional people (graphic designers, usability experts, computer programmers, systems administrators, allocators of time and money, project managers, etc.). Despite this, given the tools outlined above, it is not too difficult to publish linked data now and today. Such are the advantages.</p>
<p>On the other hand, there are at least two distinct disadvantages. The most significant derives from the inherent nature of archival material. Archival material is almost always rare or unique. Because it is rare and unique, there are few (if any) previously established URIs for the people and things described in archival collections. This is unlike the world of librarianship, where the materials of libraries are often owned my multiple institutions. Union catalogs share authority lists denoting people and institutions. Shared URIs across domains is imperative for the idea of the Semantic Web to come to fruition. The archival community has no such collection of shared URIs. Maybe the community-wide implementation and exploitation of Encoded Archival Context for Corporate Bodies, Persons, and Families (<a href="http://eac.staatsbibliothek-berlin.de/" target="_blank" rel="noopener noreferrer">EAC-CPF</a>) can help resolve this problem. After all, it too is a form of XML which lends itself very will to XSLT transformation.</p>
<p>Second, and almost as importantly, the use of EAD is not really the best way manifest archival metadata for linked data publication. EADs are finding aids. They are essentially narrative essays describing collections as a whole. They tell stories. The controlled vocabularies articulated in the header do not necessarily apply to each of the items in the container list. For good reasons, the items in the container list are minimally described. Consequently, the resulting RDF statement come across rather thin and poorly linked to fuller descriptions. Moreover, different archivists put different emphases on different aspect of EAD description. This makes amalgamated collections of archival linked data difficult to navigate; the linked data requires cleaning and normalization. The solution to these problems might be to create and maintain archival collections in database applications, such as <a href="http://www.archivesspace.org/" target="_blank" rel="noopener noreferrer">ArchivesSpace</a>, and have linked data published from there. By doing so the linked data publication efforts of the archival community would be more standardized and somewhat centralized.</p>
<h2>Summary</h2>
<p>This essay has outlined the ease at which archival metadata in the form of EAD can be easily published as linked data. The result is far from perfect, but a huge step in the right direction. Publishing linked data is not an event, but rather an iterative process. There is always room for improvement. Starting today, publish your metadata as linked data.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Fun with Koha</title>
		<link>./../2014/07/fun-with-koha/index.html</link>
				<comments>./../2014/07/fun-with-koha/index.html#comments</comments>
				<pubDate>Sat, 19 Jul 2014 18:16:31 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=880</guid>
				<description><![CDATA[These are brief notes about my recent experiences with Koha. Introduction As you may or may not know, Koha is a grand daddy of library-related open source software, and it is an integrated library system to boot. Such are no small accomplishments. For reasons I will not elaborate upon, I&#8217;ve been playing with Koha for [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>These are brief notes about my recent experiences with Koha.</p>
<h2>Introduction</h2>
<p><img src="http://koha-community.org/files/2013/09/cropped-kohabanner3.jpg" alt="koha logo" align="right" width="250">As you may or may not know, <a href="http://koha-community.org/" target="_blank" rel="noopener noreferrer">Koha</a> is a grand daddy of library-related open source software, and it is an integrated library system to boot. Such are no small accomplishments. For reasons I will not elaborate upon, I&#8217;ve been playing with Koha for the past number of weeks, and in short, I want to say, &#8220;I&#8217;m impressed.&#8221; The community is large, international, congenial, and supportive. The community is divided into a number of sub-groups: developers, committers, commercial support employees, and, of course, librarians. I&#8217;ve even seen people from another open source library system (Evergreen) provide technical support and advice. For the most part, everything is on the &#8216;Net, well laid out, and transparent. There are some rather &#8220;organic&#8221; parts to the documentation akin to an &#8220;English garden&#8221;, but that is going to happen in any de-centralized environment. All in all, and without any patronizing intended, &#8220;Kudos to Koha!&#8221;</p>
<h2>Installation</h2>
<p>Looking through my collection of tarballs, I see I&#8217;ve installed Koha a number of times over the years, but this time it was challenging. Sparing you all the details, I needed to use a specific version of MySQL (version 5.5), and I had version 5.6. The installation failure was not really Koha&#8217;s fault. It is more the fault of MySQL because the client of MySQL version 5.6 outputs a warning message to STDOUT when a password is passed on the command line. This message confused the Koha database initialization process, thus making Koha unusable. After downgrading to version 5.5 the database initialization process was seamless.</p>
<p>My next step was to correctly configure <a href="http://www.indexdata.com/zebra" target="_blank" rel="noopener noreferrer">Zebra</a> &#8212; Koha&#8217;s default underlying indexer. Again, I had installed from source, and my Zebra libraries, etc. were saved in a directory different from the configuration files created by the Koha&#8217;s installation process. After correctly updating the value of modulePath to point to /usr/local/lib/idzebra-2.0/ in zebra-biblios-dom.cfg, zebra-authorities.cfg, zebra-biblios.cfg, and zebra-authorities-dom.cfg I could successfully index and search for content. I learned this from a <a href="http://stackoverflow.com/questions/23928040/koha-3-14-zebra-search-is-not-working" target="_blank" rel="noopener noreferrer">mailing list posting</a>.</p>
<h2>Koha &#8220;extras&#8221;</h2>
<p>Koha comes (for free) with a number of &#8220;extras&#8221;. For example, the Zebra indexer can be deployed as both a Z39.50 server as well as an SRU server. Turning these things on was as simple as uncommenting a few lines in the koha-conf.xml file and opening a few ports in my firewall. Z39.50 is inherently unusable from a human point of view so I didn&#8217;t go into configuring it, but it does work. Through the use of XSL stylesheets, SRU can be much more usable. Luckily I have been here before. For example, a long time ago I used Zebra to index my Alex Catalogue as well as some content from the HathiTrust (MBooks). The <a href="http://infomotions.com/alex/sru.html" target="_blank" rel="noopener noreferrer">hidden interface to the Catalogue</a> sports faceted searching and used to support spelling corrections.  The <a href="http://infomotions.com/mbooks/" target="_blank" rel="noopener noreferrer">MBooks</a> interface transforms MARCXML into simple HTML.  Both of these interfaces are quite zippy. In order to get Zebra to recognize my XSL I needed to add an additional configuration directive to my koha-conf.xml file. Specifically, I need to <a href="http://lists.indexdata.dk/pipermail/zebralist/2007-November/001803.html" target="_blank" rel="noopener noreferrer">add a docpath element</a> to my public server&#8217;s configuration.  Once I re-learned this fact, implementing a rudimentary <a href="http://koha.infomotions.com/sru.html" target="_blank" rel="noopener noreferrer">SRU interface to my Koha index</a> was easy and results are returned very fast.  I&#8217;m impressed.</p>
<p>My big goal is to figure out ways Koha can expose its content to the wider &#8216;Net. To this end  sKoha comes with an OAI-PMH interface. It needs to be enabled, and can be done through the Koha Web-based backend under Home -&gt; Koha Administration -&gt; Global Preferences -&gt; General Systems Preferences -&gt; Web Services. Once enabled, OAI sets can be created through the Home -&gt; Administration -&gt; OAI sets configuration module. (Whew!) Once this is done Koha will respond to <a href="http://koha.infomotions.com/cgi-bin/koha/oai.pl?verb=Identify" target="_blank" rel="noopener noreferrer">OAI-PMH requests</a>.  I then took it upon myself to transform the OAI output into linked data using a program called <a href="https://github.com/behas/oai2lod" target="_blank" rel="noopener noreferrer">OAI2LOD</a>.  This worked seamlessly, and for a limited period of time you can browse my <a href="http://infomotions.com/oai2lod/" target="_blank" rel="noopener noreferrer">Koha&#8217;s cataloging data as linked data</a>.  The viability of the resulting linked data is questionable, but that is another blog posting.</p>
<h2>Ideas and next steps</h2>
<p>Library catalogs (OPACs, &#8220;discovery systems&#8221;, whatever you want to call them) are not simple applications/systems. They are a mixture of very specialized inventory lists, various types of people with various skills and authorities, indexing, and circulation, etc. Then we &#8212; as librarians &#8212; add things like messages of the day, record exporting, browsable lists, visualizations, etc. that complicate the whole thing. It is simply not possible to create a library catalog in the &#8220;<a href="http://en.wikipedia.org/wiki/Unix_philosophy" target="_blank" rel="noopener noreferrer">Unix way</a>&#8220;.  The installation of Koha was not easy for me. There are expenses with open source software, and I all but melted down my server during the installation process. (Everything is now back to normal.) I&#8217;ve been advocating open source software for quite a while, and I understand the meaning of &#8220;free&#8221; in this context. I&#8217;m not complaining. Really.</p>
<p>Now that I&#8217;ve gotten this far, my next step is to investigate the feasibility of using a different indexer with Koha. Zebra is functional. It is fast. It is multi-faceted (all puns intended). But configuring it is not straight-forward, and its community of support is tiny. I see from rooting around in the Koha source code that Solr has been explored. I have also heard through the grapevine that ElasticSearch has been explored. I will endeavor to explore these things myself and report on what I learn. Different indexers, with more flexible API&#8217;s may make the possibility of exposing Koha content as linked data more feasible as well.</p>
<p>Wish me luck.</p>
]]></content:encoded>
							<wfw:commentRss>./../2014/07/fun-with-koha/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Fun with ElasticSearch and MARC</title>
		<link>./../2014/06/elasticsearch-and-marc/index.html</link>
				<comments>./../2014/06/elasticsearch-and-marc/index.html#comments</comments>
				<pubDate>Sun, 22 Jun 2014 15:40:58 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[MARC and technical services]]></category>

		<guid isPermaLink="false">./../index.html?p=877</guid>
				<description><![CDATA[For a good time I have started to investigate how to index MARC data using ElasticSearch. This posting outlines some of my initial investigations and hacks. ElasticSearch seems to be an increasingly popular indexer. Getting it up an running on my Linux host was&#8230; trivial. It comes withe a full-fledged Perl interface. Nice! Since ElasticSearch [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>For a good time I have started to investigate how to index MARC data using ElasticSearch. This posting outlines some of my initial investigations and hacks.</p>
<p><a href="http://elasticsearch.org/" target="_blank" rel="noopener noreferrer">ElasticSearch</a> seems to be an increasingly popular indexer. Getting it up an running on my Linux host was&#8230; trivial. It comes withe a full-fledged <a href="https://metacpan.org/pod/Search::Elasticsearch" target="_blank" rel="noopener noreferrer">Perl interface</a>. Nice! Since ElasticSearch takes JSON as input, I needed to serialize my MARC data accordingly, and <a href="http://search.cpan.org/dist/MARC-File-JSON/" target="_blank" rel="noopener noreferrer">MARC::File::JSON</a> seems to do a fine job. With this in hand, I wrote three programs:</p>
<ol>
<li>index.pl &#8211; create an index of MARC records</li>
<li>get.pl &#8211; retrieve a specific record from the index</li>
<li>search.pl &#8211; query the index</li>
</ol>
<p>I have some work to do, obviously. First of all, do I really want to index MARC in its raw, communications format? I don&#8217;t think so, but that is where I&#8217;ll start. Second, the search script doesn&#8217;t really search. Instead it simply gets all the records. This is because I really don&#8217;t know how to search yet; I don&#8217;t really know how to query fields like &#8220;245 subfield a&#8221;.</p>
<h2>index.pl</h2>
<pre><code>#!/usr/bin/perl

# configure
use constant INDEX =&gt; 'pamphlets';
use constant MARC  =&gt; './pamphlets.marc';
use constant MAX   =&gt; 100;
use constant TYPE  =&gt; 'marc';

# require
use MARC::Batch;
use MARC::File::JSON;
use Search::Elasticsearch;
use strict;

# initialize
my $batch = MARC::Batch-&gt;new( 'USMARC', MARC );
my $count = 0;
my $e     = Search::Elasticsearch-&gt;new;

# process each record in the batch
while ( my $record = $batch-&gt;next ) {

  # debug
  print $record-&gt;title, "\n";
  
  # serialize the record into json
  my $json = &amp;MARC::File::JSON::encode( $record );
  
  # increment
  $count++;
  
  # index; do the work
  $e-&gt;index(  index   =&gt; INDEX,
                type    =&gt; TYPE,
                id      =&gt; $count,
                body    =&gt; { "$json" }
    );
    
  # check; only do a few
  last if ( $count &gt; MAX );
  
}

# done
exit;</code></pre>
<h2>get.pl</h2>
<pre><code># configure 
use constant INDEX =&gt; 'pamphlets';
use constant TYPE  =&gt; 'marc';

# require
use MARC::File::JSON;
use Search::Elasticsearch;
use strict;

# initialize
my $e = Search::Elasticsearch-&gt;new;

# get; do the work
my $doc = $e-&gt;get( index   =&gt; INDEX,
                   type    =&gt; TYPE,
                   id      =&gt; $ARGV[ 0 ]
);

# reformat and output; done
my $record = MARC::Record-&gt;new_from_json( keys( $doc-&gt;{ '_source' } ) );
print $record-&gt;as_formatted, "\n";
exit;</code></pre>
<h2>search.pl</h2>
<pre><code># configure 
use constant INDEX =&gt; 'pamphlets';

# require
use MARC::File::JSON;
use Search::Elasticsearch;
use strict;

# initialize
my $e = Search::Elasticsearch-&gt;new;

# search
my $results = $e-&gt;search(
  index =&gt; INDEX,
    body  =&gt; { query =&gt; { match_all =&gt; { $ARGV[ 0 ] } } }
);

# output
my $hits = $results-&gt;{ 'hits' }-&gt;{ 'hits' };
for ( my $i = 0; $i &lt;= $#$hits; $i++ ) {

  my $record = MARC::Record-&gt;new_from_json( keys( $hits[ $i ]-&gt;{ '_source' } ) );
  print $record-&gt;as_formatted, "\n\n";

}

# done
exit;</code></pre>
]]></content:encoded>
							<wfw:commentRss>./../2014/06/elasticsearch-and-marc/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>LiAM source code: Perl poetry</title>
		<link>./../2014/02/poetry/index.html</link>
				<pubDate>Mon, 17 Feb 2014 04:40:33 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=869</guid>
				<description><![CDATA[#!/usr/bin/perl # Liam Guidebook Source Code; Perl poetry, sort of # Eric Lease Morgan &#60;emorgan@nd.edu&#62; # February 16, 2014 # done exit; #!/usr/bin/perl # marc2rdf.pl &#8211; make MARC records accessible via linked data # Eric Lease Morgan &#60;eric_morgan@infomotions.com&#62; # December 5, 2013 &#8211; first cut; # configure use constant ROOT =&#62; &#8216;/disk01/www/html/main/sandbox/liam&#8217;; use constant MARC [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>#!/usr/bin/perl # <strong>Liam Guidebook Source Code; Perl poetry, sort of</strong> # Eric Lease Morgan &lt;emorgan@nd.edu&gt; # February 16, 2014 # done exit;</p>
<p>#!/usr/bin/perl # <strong>marc2rdf.pl</strong> &#8211; make MARC records accessible via linked data # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # December 5, 2013 &#8211; first cut; # configure use constant ROOT =&gt; &#8216;/disk01/www/html/main/sandbox/liam&#8217;; use constant MARC =&gt; ROOT . &#8216;/src/marc/&#8217;; use constant DATA =&gt; ROOT . &#8216;/data/&#8217;; use constant PAGES =&gt; ROOT . &#8216;/pages/&#8217;; use constant MARC2HTML =&gt; ROOT . &#8216;/etc/MARC21slim2HTML.xsl&#8217;; use constant MARC2MODS =&gt; ROOT . &#8216;/etc/MARC21slim2MODS3.xsl&#8217;; use constant MODS2RDF =&gt; ROOT . &#8216;/etc/mods2rdf.xsl&#8217;; use constant MAXINDEX =&gt; 100; # require use IO::File; use MARC::Batch; use MARC::File::XML; use strict; use XML::LibXML; use XML::LibXSLT; # initialize my $parser = XML::LibXML-&gt;new; my $xslt = XML::LibXSLT-&gt;new; # process each record in the MARC directory my @files = glob MARC . &#8220;*.marc&#8221;; for ( 0 .. $#files ) { # re-initialize my $marc = $files[ $_ ]; my $handle = IO::File-&gt;new( $marc ); binmode( STDOUT, &#8216;:utf8&#8217; ); binmode( $handle, &#8216;:bytes&#8217; ); my $batch = MARC::Batch-&gt;new( &#8216;USMARC&#8217;, $handle ); $batch-&gt;warnings_off; $batch-&gt;strict_off; my $index = 0; # process each record in the batch while ( my $record = $batch-&gt;next ) { # get marcxml my $marcxml = $record-&gt;as_xml_record; my $_001 = $record-&gt;field( &#8216;001&#8217; )-&gt;as_string; $_001 =~ s/_//; $_001 =~ s/ +//; $_001 =~ s/-+//; print &#8221; marc: $marc\n&#8221;; print &#8221; identifier: $_001\n&#8221;; print &#8221; URI: http://infomotions.com/sandbox/liam/id/$_001\n&#8221;; # re-initialize and sanity check my $output = PAGES . &#8220;$_001.html&#8221;; if ( ! -e $output or -s $output == 0 ) { # transform marcxml into html print &#8221; HTML: $output\n&#8221;; my $source = $parser-&gt;parse_string( $marcxml ) or warn $!; my $style = $parser-&gt;parse_file( MARC2HTML ) or warn $!; my $stylesheet = $xslt-&gt;parse_stylesheet( $style ) or warn $!; my $results = $stylesheet-&gt;transform( $source ) or warn $!; my $html = $stylesheet-&gt;output_string( $results ); &amp;save( $output, $html ); } else { print &#8221; HTML: skipping\n&#8221; } # re-initialize and sanity check my $output = DATA . &#8220;$_001.rdf&#8221;; if ( ! -e $output or -s $output == 0 ) { # transform marcxml into mods my $source = $parser-&gt;parse_string( $marcxml ) or warn $!; my $style = $parser-&gt;parse_file( MARC2MODS ) or warn $!; my $stylesheet = $xslt-&gt;parse_stylesheet( $style ) or warn $!; my $results = $stylesheet-&gt;transform( $source ) or warn $!; my $mods = $stylesheet-&gt;output_string( $results ); # transform mods into rdf print &#8221; RDF: $output\n&#8221;; $source = $parser-&gt;parse_string( $mods ) or warn $!; my $style = $parser-&gt;parse_file( MODS2RDF ) or warn $!; my $stylesheet = $xslt-&gt;parse_stylesheet( $style ) or warn $!; my $results = $stylesheet-&gt;transform( $source ) or warn $!; my $rdf = $stylesheet-&gt;output_string( $results ); &amp;save( $output, $rdf ); } else { print &#8221; RDF: skipping\n&#8221; } # prettify print &#8220;\n&#8221;; # increment and check $index++; last if ( $index &gt; MAXINDEX ) } } # done exit; sub save { open F, &#8216; &gt; &#8216; . shift or die $!; binmode( F, &#8216;:utf8&#8217; ); print F shift; close F; return; }</p>
<p>#!/usr/bin/perl # <strong>ead2rdf.pl</strong> &#8211; make EAD files accessible via linked data # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # December 6, 2013 &#8211; based on marc2linkedata.pl # configure use constant ROOT =&gt; &#8216;/disk01/www/html/main/sandbox/liam&#8217;; use constant EAD =&gt; ROOT . &#8216;/src/ead/&#8217;; use constant DATA =&gt; ROOT . &#8216;/data/&#8217;; use constant PAGES =&gt; ROOT . &#8216;/pages/&#8217;; use constant EAD2HTML =&gt; ROOT . &#8216;/etc/ead2html.xsl&#8217;; use constant EAD2RDF =&gt; ROOT . &#8216;/etc/ead2rdf.xsl&#8217;; use constant SAXON =&gt; &#8216;java -jar /disk01/www/html/main/sandbox/liam/bin/saxon.jar -s:##SOURCE## -xsl:##XSL## -o:##OUTPUT##&#8217;; # require use strict; use XML::XPath; use XML::LibXML; use XML::LibXSLT; # initialize my $saxon = &#8221;; my $xsl = &#8221;; my $parser = XML::LibXML-&gt;new; my $xslt = XML::LibXSLT-&gt;new; # process each record in the EAD directory my @files = glob EAD . &#8220;*.xml&#8221;; for ( 0 .. $#files ) { # re-initialize my $ead = $files[ $_ ]; print &#8221; EAD: $ead\n&#8221;; # get the identifier my $xpath = XML::XPath-&gt;new( filename =&gt; $ead ); my $identifier = $xpath-&gt;findvalue( &#8216;/ead/eadheader/eadid&#8217; ); $identifier =~ s/[^\w ]//g; print &#8221; identifier: $identifier\n&#8221;; print &#8221; URI: http://infomotions.com/sandbox/liam/id/$identifier\n&#8221;; # re-initialize and sanity check my $output = PAGES . &#8220;$identifier.html&#8221;; if ( ! -e $output or -s $output == 0 ) { # transform marcxml into html print &#8221; HTML: $output\n&#8221;; my $source = $parser-&gt;parse_file( $ead ) or warn $!; my $style = $parser-&gt;parse_file( EAD2HTML ) or warn $!; my $stylesheet = $xslt-&gt;parse_stylesheet( $style ) or warn $!; my $results = $stylesheet-&gt;transform( $source ) or warn $!; my $html = $stylesheet-&gt;output_string( $results ); &amp;save( $output, $html ); } else { print &#8221; HTML: skipping\n&#8221; } # re-initialize and sanity check my $output = DATA . &#8220;$identifier.rdf&#8221;; if ( ! -e $output or -s $output == 0 ) { # create saxon command, and save rdf print &#8221; RDF: $output\n&#8221;; $saxon = SAXON; $xsl = EAD2RDF; $saxon =~ s/##SOURCE##/$ead/e; $saxon =~ s/##XSL##/$xsl/e; $saxon =~ s/##OUTPUT##/$output/e; system $saxon; } else { print &#8221; RDF: skipping\n&#8221; } # prettify print &#8220;\n&#8221;; } # done exit; sub save { open F, &#8216; &gt; &#8216; . shift or die $!; binmode( F, &#8216;:utf8&#8217; ); print F shift; close F; return; }</p>
<p>#!/usr/bin/perl # <strong>store-make.pl</strong> &#8211; simply initialize an RDF triple store # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # # December 14, 2013 &#8211; after wrestling with wilson for most of the day # configure use constant ETC =&gt; &#8216;/disk01/www/html/main/sandbox/liam/etc/&#8217;; # require use strict; use RDF::Redland; # sanity check my $db = $ARGV[ 0 ]; if ( ! $db ) { print &#8220;Usage: $0 &lt;db&gt;\n&#8221;; exit; } # do the work; brain-dead my $etc = ETC; my $store = RDF::Redland::Storage-&gt;new( &#8216;hashes&#8217;, $db, &#8220;new=&#8217;yes&#8217;, hash-type=&#8217;bdb&#8217;, dir=&#8217;$etc'&#8221; ); die &#8220;Unable to create store ($!)&#8221; unless $store; my $model = RDF::Redland::Model-&gt;new( $store, &#8221; ); die &#8220;Unable to create model ($!)&#8221; unless $model; # &#8220;save&#8221; $store = undef; $model = undef; # done exit;</p>
<p>#!/user/bin/perl # <strong>store-add.pl</strong> &#8211; add items to an RDF triple store # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # # December 14, 2013 &#8211; after wrestling with wilson for most of the day # configure use constant ETC =&gt; &#8216;/disk01/www/html/main/sandbox/liam/etc/&#8217;; # require use strict; use RDF::Redland; # sanity check #1 &#8211; command line arguments my $db = $ARGV[ 0 ]; my $file = $ARGV[ 1 ]; if ( ! $db or ! $file ) { print &#8220;Usage: $0 &lt;db&gt; &lt;file&gt;\n&#8221;; exit; } # sanity check #2 &#8211; store exists die &#8220;Error: po2s file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-po2s.db&#8217; ); die &#8220;Error: so2p file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-so2p.db&#8217; ); die &#8220;Error: sp2o file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-sp2o.db&#8217; ); # open the store my $etc = ETC; my $store = RDF::Redland::Storage-&gt;new( &#8216;hashes&#8217;, $db, &#8220;new=&#8217;no&#8217;, hash-type=&#8217;bdb&#8217;, dir=&#8217;$etc'&#8221; ); die &#8220;Error: Unable to open store ($!)&#8221; unless $store; my $model = RDF::Redland::Model-&gt;new( $store, &#8221; ); die &#8220;Error: Unable to create model ($!)&#8221; unless $model; # sanity check #3 &#8211; file exists die &#8220;Error: $file not found.\n&#8221; if ( ! -e $file ); # parse a file and add it to the store my $uri = RDF::Redland::URI-&gt;new( &#8220;file:$file&#8221; ); my $parser = RDF::Redland::Parser-&gt;new( &#8216;rdfxml&#8217;, &#8216;application/rdf+xml&#8217; ); die &#8220;Error: Failed to find parser ($!)\n&#8221; if ( ! $parser ); my $stream = $parser-&gt;parse_as_stream( $uri, $uri ); my $count = 0; while ( ! $stream-&gt;end ) { $model-&gt;add_statement( $stream-&gt;current ); $count++; $stream-&gt;next; } # echo the result warn &#8220;Namespaces:\n&#8221;; my %namespaces = $parser-&gt;namespaces_seen; while ( my ( $prefix, $uri ) = each %namespaces ) { warn &#8221; prefix: $prefix\n&#8221;; warn &#8216; uri: &#8216; . $uri-&gt;as_string . &#8220;\n&#8221;; warn &#8220;\n&#8221;; } warn &#8220;Added $count statements\n&#8221;; # &#8220;save&#8221; $store = undef; $model = undef; # done exit; 10.5 store-search.pl &#8211; query a triple store # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # December 14, 2013 &#8211; after wrestling with wilson for most of the day # configure use constant ETC =&gt; &#8216;/disk01/www/html/main/sandbox/liam/etc/&#8217;; my %namespaces = ( &#8220;crm&#8221; =&gt; &#8220;http://erlangen-crm.org/current/&#8221;, &#8220;dc&#8221; =&gt; &#8220;http://purl.org/dc/elements/1.1/&#8221;, &#8220;dcterms&#8221; =&gt; &#8220;http://purl.org/dc/terms/&#8221;, &#8220;event&#8221; =&gt; &#8220;http://purl.org/NET/c4dm/event.owl#&#8221;, &#8220;foaf&#8221; =&gt; &#8220;http://xmlns.com/foaf/0.1/&#8221;, &#8220;lode&#8221; =&gt; &#8220;http://linkedevents.org/ontology/&#8221;, &#8220;lvont&#8221; =&gt; &#8220;http://lexvo.org/ontology#&#8221;, &#8220;modsrdf&#8221; =&gt; &#8220;http://simile.mit.edu/2006/01/ontologies/mods3#&#8221;, &#8220;ore&#8221; =&gt; &#8220;http://www.openarchives.org/ore/terms/&#8221;, &#8220;owl&#8221; =&gt; &#8220;http://www.w3.org/2002/07/owl#&#8221;, &#8220;rdf&#8221; =&gt; &#8220;http://www.w3.org/1999/02/22-rdf-syntax-ns#&#8221;, &#8220;rdfs&#8221; =&gt; &#8220;http://www.w3.org/2000/01/rdf-schema#&#8221;, &#8220;role&#8221; =&gt; &#8220;http://simile.mit.edu/2006/01/roles#&#8221;, &#8220;skos&#8221; =&gt; &#8220;http://www.w3.org/2004/02/skos/core#&#8221;, &#8220;time&#8221; =&gt; &#8220;http://www.w3.org/2006/time#&#8221;, &#8220;timeline&#8221; =&gt; &#8220;http://purl.org/NET/c4dm/timeline.owl#&#8221;, &#8220;wgs84_pos&#8221; =&gt; &#8220;http://www.w3.org/2003/01/geo/wgs84_pos#&#8221; ); # require use strict; use RDF::Redland; # sanity check #1 &#8211; command line arguments my $db = $ARGV[ 0 ]; my $query = $ARGV[ 1 ]; if ( ! $db or ! $query ) { print &#8220;Usage: $0 &lt;db&gt; &lt;query&gt;\n&#8221;; exit; } # sanity check #2 &#8211; store exists die &#8220;Error: po2s file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-po2s.db&#8217; ); die &#8220;Error: so2p file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-so2p.db&#8217; ); die &#8220;Error: sp2o file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-sp2o.db&#8217; ); # open the store my $etc = ETC; my $store = RDF::Redland::Storage-&gt;new( &#8216;hashes&#8217;, $db, &#8220;new=&#8217;no&#8217;, hash-type=&#8217;bdb&#8217;, dir=&#8217;$etc'&#8221; ); die &#8220;Error: Unable to open store ($!)&#8221; unless $store; my $model = RDF::Redland::Model-&gt;new( $store, &#8221; ); die &#8220;Error: Unable to create model ($!)&#8221; unless $model; # search #my $sparql = RDF::Redland::Query-&gt;new( &#8220;CONSTRUCT { ?a ?b ?c } WHERE { ?a ?b ?c }&#8221;, undef, undef, &#8220;sparql&#8221; ); my $sparql = RDF::Redland::Query-&gt;new( &#8220;PREFIX modsrdf: &lt;http://simile.mit.edu/2006/01/ontologies/mods3#&gt;\nSELECT ?a ?b ?c WHERE { ?a modsrdf:$query ?c }&#8221;, undef, undef, &#8216;sparql&#8217; ); my $results = $model-&gt;query_execute( $sparql ); print $results-&gt;to_string; # done exit;</p>
<p>#!/usr/bin/perl # <strong>store-dump.pl</strong> &#8211; output the content of store as RDF/XML # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # # December 14, 2013 &#8211; after wrestling with wilson for most of the day # configure use constant ETC =&gt; &#8216;/disk01/www/html/main/sandbox/liam/etc/&#8217;; # require use strict; use RDF::Redland; # sanity check #1 &#8211; command line arguments my $db = $ARGV[ 0 ]; my $uri = $ARGV[ 1 ]; if ( ! $db ) { print &#8220;Usage: $0 &lt;db&gt; &lt;uri&gt;\n&#8221;; exit; } # sanity check #2 &#8211; store exists die &#8220;Error: po2s file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-po2s.db&#8217; ); die &#8220;Error: so2p file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-so2p.db&#8217; ); die &#8220;Error: sp2o file not found. Make a store?\n&#8221; if ( ! -e ETC . $db . &#8216;-sp2o.db&#8217; ); # open the store my $etc = ETC; my $store = RDF::Redland::Storage-&gt;new( &#8216;hashes&#8217;, $db, &#8220;new=&#8217;no&#8217;, hash-type=&#8217;bdb&#8217;, dir=&#8217;$etc'&#8221; ); die &#8220;Error: Unable to open store ($!)&#8221; unless $store; my $model = RDF::Redland::Model-&gt;new( $store, &#8221; ); die &#8220;Error: Unable to create model ($!)&#8221; unless $model; # do the work my $serializer = RDF::Redland::Serializer-&gt;new; print $serializer-&gt;serialize_model_to_string( RDF::Redland::URI-&gt;new, $model ); # done exit;</p>
<p>#!/usr/bin/perl # <strong>sparql.pl</strong> &#8211; a brain-dead, half-baked SPARQL endpoint # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # December 15, 2013 &#8211; first investigations # require use CGI; use CGI::Carp qw( fatalsToBrowser ); use RDF::Redland; use strict; # initialize my $cgi = CGI-&gt;new; my $query = $cgi-&gt;param( &#8216;query&#8217; ); if ( ! $query ) { print $cgi-&gt;header; print &amp;home; } else { # open the store for business my $store = RDF::Redland::Storage-&gt;new( &#8216;hashes&#8217;, &#8216;store&#8217;, &#8220;new=&#8217;no&#8217;, hash-type=&#8217;bdb&#8217;, dir=&#8217;/disk01/www/html/main/sandbox/liam/etc'&#8221; ); my $model = RDF::Redland::Model-&gt;new( $store, &#8221; ); # search my $results = $model-&gt;query_execute( RDF::Redland::Query-&gt;new( $query, undef, undef, &#8216;sparql&#8217; ) ); # return the results print $cgi-&gt;header( -type =&gt; &#8216;application/xml&#8217; ); print $results-&gt;to_string; } # done exit; sub home { # create a list namespaces my $namespaces = &amp;namespaces; my $list = &#8221;; foreach my $prefix ( sort keys $namespaces ) { my $uri = $$namespaces{ $prefix }; $list .= $cgi-&gt;li( &#8220;$prefix &#8211; &#8221; . $cgi-&gt;a( { href=&gt; $uri, target =&gt; &#8216;_blank&#8217; }, $uri ) ); } $list = $cgi-&gt;ol( $list ); # return a home page return &lt;&lt;EOF &lt;html&gt; &lt;head&gt; &lt;title&gt;LiAM SPARQL Endpoint&lt;/title&gt; &lt;/head&gt; &lt;body style=&#8217;margin: 7%&#8217;&gt; &lt;h1&gt;LiAM SPARQL Endpoint&lt;/h1&gt; &lt;p&gt;This is a brain-dead and half-baked SPARQL endpoint to a subset of LiAM linked data. Enter a query, but there is the disclaimer. Errors will probably happen because of SPARQL syntax errors. Remember, the interface is brain-dead. Your milage &lt;em&gt;will&lt;/em&gt; vary.&lt;/p&gt; &lt;form method=&#8217;GET&#8217; action=&#8217;./&#8217;&gt; &lt;textarea style=&#8217;font-size: large&#8217; rows=&#8217;5&#8242; cols=&#8217;65&#8217; name=&#8217;query&#8217; /&gt; PREFIX hub:&lt;http://data.archiveshub.ac.uk/def/&gt; SELECT ?uri WHERE { ?uri ?o hub:FindingAid } &lt;/textarea&gt;&lt;br /&gt; &lt;input type=&#8217;submit&#8217; value=&#8217;Search&#8217; /&gt; &lt;/form&gt; &lt;p&gt;Here are a few sample queries:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Find all triples with RDF Schema labels &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+rdf%3A%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0ASELECT+*+WHERE+%7B+%3Fs+rdf%3Alabel+%3Fo+%7D%0D%0A&#8221;&gt;PREFIX rdf:&lt;http://www.w3.org/2000/01/rdf-schema#&gt; SELECT * WHERE { ?s rdf:label ?o }&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find all items with MODS subjects &#8211; &lt;code&gt;&lt;a href=&#8217;http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+mods%3A%3Chttp%3A%2F%2Fsimile.mit.edu%2F2006%2F01%2Fontologies%2Fmods3%23%3E%0D%0ASELECT+*+WHERE+%7B+%3Fs+mods%3Asubject+%3Fo+%7D&#8217;&gt;PREFIX mods:&lt;http://simile.mit.edu/2006/01/ontologies/mods3#&gt; SELECT * WHERE { ?s mods:subject ?o }&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find every unique predicate &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=SELECT+DISTINCT+%3Fp+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D&#8221;&gt;SELECT DISTINCT ?p WHERE { ?s ?p ?o }&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find everything &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=SELECT+*+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D&#8221;&gt;SELECT * WHERE { ?s ?p ?o }&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find all classes &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=SELECT+DISTINCT+%3Fclass+WHERE+%7B+%5B%5D+a+%3Fclass+%7D+ORDER+BY+%3Fclass&#8221;&gt;SELECT DISTINCT ?class WHERE { [] a ?class } ORDER BY ?class&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find all properties &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=SELECT+DISTINCT+%3Fproperty%0D%0AWHERE+%7B+%5B%5D+%3Fproperty+%5B%5D+%7D%0D%0AORDER+BY+%3Fproperty&#8221;&gt;SELECT DISTINCT ?property WHERE { [] ?property [] } ORDER BY ?property&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find URIs of all finding aids &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+hub%3A%3Chttp%3A%2F%2Fdata.archiveshub.ac.uk%2Fdef%2F%3E+SELECT+%3Furi+WHERE+%7B+%3Furi+%3Fo+hub%3AFindingAid+%7D&#8221;&gt;PREFIX hub:&lt;http://data.archiveshub.ac.uk/def/&gt; SELECT ?uri WHERE { ?uri ?o hub:FindingAid }&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find URIs of all MARC records &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+mods%3A%3Chttp%3A%2F%2Fsimile.mit.edu%2F2006%2F01%2Fontologies%2Fmods3%23%3E+SELECT+%3Furi+WHERE+%7B+%3Furi+%3Fo+mods%3ARecord+%7D%0D%0A%0D%0A%0D%0A&#8221;&gt;PREFIX mods:&lt;http://simile.mit.edu/2006/01/ontologies/mods3#&gt; SELECT ?uri WHERE { ?uri ?o mods:Record }&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;li&gt;Find all URIs of all collections &#8211; &lt;code&gt;&lt;a href=&#8221;http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+mods%3A%3Chttp%3A%2F%2Fsimile.mit.edu%2F2006%2F01%2Fontologies%2Fmods3%23%3E%0D%0APREFIX+hub%3A%3Chttp%3A%2F%2Fdata.archiveshub.ac.uk%2Fdef%2F%3E%0D%0ASELECT+%3Furi+WHERE+%7B+%7B+%3Furi+%3Fo+hub%3AFindingAid+%7D+UNION+%7B+%3Furi+%3Fo+mods%3ARecord+%7D+%7D%0D%0AORDER+BY+%3Furi%0D%0A&#8221;&gt;PREFIX mods:&lt;http://simile.mit.edu/2006/01/ontologies/mods3#&gt; PREFIX hub:&lt;http://data.archiveshub.ac.uk/def/&gt; SELECT ?uri WHERE { { ?uri ?o hub:FindingAid } UNION { ?uri ?o mods:Record } } ORDER BY ?uri&lt;/a&gt;&lt;/code&gt;&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;This is a list of ontologies (namespaces) used in the triple store as predicates:&lt;/p&gt; $list &lt;p&gt;For more information about SPARQL, see:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;a href=&#8221;http://www.w3.org/TR/rdf-sparql-query/&#8221; target=&#8221;_blank&#8221;&gt;SPARQL Query Language for RDF&lt;/a&gt; from the W3C&lt;/li&gt; &lt;li&gt;&lt;a href=&#8221;http://en.wikipedia.org/wiki/SPARQL&#8221; target=&#8221;_blank&#8221;&gt;SPARQL&lt;/a&gt; from Wikipedia&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Source code &#8212; &lt;a href=&#8221;http://infomotions.com/sandbox/liam/bin/sparql.pl&#8221;&gt;sparql.pl&lt;/a&gt; &#8212; is available online.&lt;/p&gt; &lt;hr /&gt; &lt;p&gt; &lt;a href=&#8221;mailto:eric_morgan\@infomotions.com&#8221;&gt;Eric Lease Morgan &lt;eric_morgan\@infomotions.com&gt;&lt;/a&gt;&lt;br /&gt; January 6, 2014 &lt;/p&gt; &lt;/body&gt; &lt;/html&gt; EOF } sub namespaces { my %namespaces = ( &#8220;crm&#8221; =&gt; &#8220;http://erlangen-crm.org/current/&#8221;, &#8220;dc&#8221; =&gt; &#8220;http://purl.org/dc/elements/1.1/&#8221;, &#8220;dcterms&#8221; =&gt; &#8220;http://purl.org/dc/terms/&#8221;, &#8220;event&#8221; =&gt; &#8220;http://purl.org/NET/c4dm/event.owl#&#8221;, &#8220;foaf&#8221; =&gt; &#8220;http://xmlns.com/foaf/0.1/&#8221;, &#8220;lode&#8221; =&gt; &#8220;http://linkedevents.org/ontology/&#8221;, &#8220;lvont&#8221; =&gt; &#8220;http://lexvo.org/ontology#&#8221;, &#8220;modsrdf&#8221; =&gt; &#8220;http://simile.mit.edu/2006/01/ontologies/mods3#&#8221;, &#8220;ore&#8221; =&gt; &#8220;http://www.openarchives.org/ore/terms/&#8221;, &#8220;owl&#8221; =&gt; &#8220;http://www.w3.org/2002/07/owl#&#8221;, &#8220;rdf&#8221; =&gt; &#8220;http://www.w3.org/1999/02/22-rdf-syntax-ns#&#8221;, &#8220;rdfs&#8221; =&gt; &#8220;http://www.w3.org/2000/01/rdf-schema#&#8221;, &#8220;role&#8221; =&gt; &#8220;http://simile.mit.edu/2006/01/roles#&#8221;, &#8220;skos&#8221; =&gt; &#8220;http://www.w3.org/2004/02/skos/core#&#8221;, &#8220;time&#8221; =&gt; &#8220;http://www.w3.org/2006/time#&#8221;, &#8220;timeline&#8221; =&gt; &#8220;http://purl.org/NET/c4dm/timeline.owl#&#8221;, &#8220;wgs84_pos&#8221; =&gt; &#8220;http://www.w3.org/2003/01/geo/wgs84_pos#&#8221; ); return \%namespaces; }</p>
<p># package Apache2::LiAM::Dereference; # <strong>Dereference.pm</strong> &#8211; Redirect user-agents based on value of URI. # Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt; # December 7, 2013 &#8211; first investigations; based on Apache2::Alex::Dereference # configure use constant PAGES =&gt; &#8216;http://infomotions.com/sandbox/liam/pages/&#8217;; use constant DATA =&gt; &#8216;http://infomotions.com/sandbox/liam/data/&#8217;; # require use Apache2::Const -compile =&gt; qw( OK ); use CGI; use strict; # main sub handler { # initialize my $r = shift; my $cgi = CGI-&gt;new; my $id = substr( $r-&gt;uri, length $r-&gt;location ); # wants RDF if ( $cgi-&gt;Accept( &#8216;text/html&#8217; )) { print $cgi-&gt;header( -status =&gt; &#8216;303 See Other&#8217;, -Location =&gt; PAGES . $id . &#8216;.html&#8217;, -Vary =&gt; &#8216;Accept&#8217; ) } # give them RDF else { print $cgi-&gt;header( -status =&gt; &#8216;303 See Other&#8217;, -Location =&gt; DATA . $id . &#8216;.rdf&#8217;, -Vary =&gt; &#8216;Accept&#8217;, &#8220;Content-Type&#8221; =&gt; &#8216;application/rdf+xml&#8217; ) } # done return Apache2::Const::OK; } 1; # return true or die</p>
]]></content:encoded>
										</item>
		<item>
		<title>LiAM SPARQL Endpoint</title>
		<link>./../2013/12/sparql-endpoint/index.html</link>
				<pubDate>Sun, 15 Dec 2013 16:30:11 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=865</guid>
				<description><![CDATA[I have implemented a brain-dead and half-baked SPARQL endpoint to a subset of LiAM linked data, but there is the disclaimer. Errors will probably happen because of SPARQL syntax errors. Your milage will vary. Here are a few sample queries: Find all triples with RDF Schema labels &#8211; PREFIX rdf:&#60;http://www.w3.org/2000/01/rdf-schema#&#62; SELECT * WHERE { ?s [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I have implemented a brain-dead and half-baked <a href="http://infomotions.com/sandbox/liam/sparql/" target="_blank" rel="noopener noreferrer">SPARQL endpoint to a subset of LiAM linked data</a>, but there is the disclaimer. Errors will probably happen because of SPARQL syntax errors. Your milage <em>will</em> vary.</p>
<p>Here are a few sample queries:</p>
<ul>
<li>Find all triples with RDF Schema labels &#8211; <code><a target="_blank" href="http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+rdf%3A%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0ASELECT+*+WHERE+%7B+%3Fs+rdf%3Alabel+%3Fo+%7D%0D%0A" rel="noopener noreferrer">PREFIX rdf:&lt;http://www.w3.org/2000/01/rdf-schema#&gt; SELECT * WHERE { ?s rdf:label ?o }</a></code></li>
<li>Find all items with MODS subjects &#8211; <code><a target="_blank" href="http://infomotions.com/sandbox/liam/sparql/?query=PREFIX+mods%3A%3Chttp%3A%2F%2Fsimile.mit.edu%2F2006%2F01%2Fontologies%2Fmods3%23%3E%0D%0ASELECT+*+WHERE+%7B+%3Fs+mods%3Asubject+%3Fo+%7D" rel="noopener noreferrer">PREFIX mods:&lt;http://simile.mit.edu/2006/01/ontologies/mods3#&gt; SELECT * WHERE { ?s mods:subject ?o }</a></code></li>
<li>Find every predicate of every triple &#8211; <code><a target="_blank" href="http://infomotions.com/sandbox/liam/sparql/?query=SELECT+%3Fp+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D" rel="noopener noreferrer">SELECT ?p WHERE { ?s ?p ?o }</a></code></li>
<li>Find everything &#8211; <code><a target="_blank" href="http://infomotions.com/sandbox/liam/sparql/?query=SELECT+*+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D" rel="noopener noreferrer">SELECT * WHERE { ?s ?p ?o }</a></code></li>
</ul>
<p>Source code &#8212; <a href="http://infomotions.com/sandbox/liam/bin/sparql.pl" target="_blank" rel="noopener noreferrer">sparql.pl</a> &#8212; is online.</p>
]]></content:encoded>
										</item>
		<item>
		<title>EAD2RDF</title>
		<link>./../2013/11/ead2rdf/index.html</link>
				<pubDate>Mon, 11 Nov 2013 01:30:33 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=862</guid>
				<description><![CDATA[I have played with an XSL stylesheet called EAD2RDF with good success. Archivists use EAD as their &#8220;MARC&#8221; records. EAD has its strengths and weakness, just like any metadata standard, but EAD is a flavor of XML. As such it lends itself to XSLT processing. EAD2RDF is a stylesheet written by Pete Johnston. After running [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I have played with an XSL stylesheet called <a href="http://data.archiveshub.ac.uk/xslt/ead2rdf.xsl" target="_blank" rel="noopener noreferrer">EAD2RDF</a> with good success.</p>
<p>Archivists use EAD as their &#8220;MARC&#8221; records. EAD has its strengths and weakness, just like any metadata standard, but EAD is a flavor of XML. As such it lends itself to XSLT processing. EAD2RDF is a stylesheet written by Pete Johnston. After running it through an XSLT 2.0 processor, it outputs an RDF/XML file. (I have made a resulting <a href="http://infomotions.com/tmp/una.rdf" target="_blank" rel="noopener noreferrer">RDF/XML file</a> available for you to peruse.) The result validates against the W3C RDF Validator but won&#8217;t have a graph created, probably because there are so many triples in the result.</p>
<p>I think archivists as well as computer technologists working in archives ought to take a closer look at EAD2RDF.</p>
]]></content:encoded>
										</item>
		<item>
		<title>OAI2LOD Server</title>
		<link>./../2013/11/oai2lod-server/index.html</link>
				<pubDate>Sun, 10 Nov 2013 17:39:39 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Semantic Web and Linked Data]]></category>

		<guid isPermaLink="false">./../index.html?p=859</guid>
				<description><![CDATA[At first glance, a software package called OAI2LOD Server seems to work pretty well, and on a temporary basis, I have made one of my OAI repositories available as Linked Data &#8212; http://infomotions.com:2020/ OAI2LOD Server is a software package, written by Bernhard Haslhofer in 2008. Building, configuring, and running the server was all but painless. [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>At first glance, a software package called <a href="https://github.com/behas/oai2lod" target="_blank" rel="noopener noreferrer">OAI2LOD Server</a> seems to work pretty well, and on a temporary basis, I have made one of my OAI repositories available as Linked Data &#8212; <a href="http://infomotions.com:2020/" target="_blank" rel="noopener noreferrer">http://infomotions.com:2020/</a></p>
<p>OAI2LOD Server is a software package, written by Bernhard Haslhofer in 2008. Building, configuring, and running the server was all but painless. I think this has a great deal of potential, and I wonder why it has not been more widely exploited. For more information about the server, see &#8220;<a href="http://eprints.cs.univie.ac.at/284/1/lodws2008.pdf" target="_blank" rel="noopener noreferrer">The OAI2LOD Server: Exposing OAI-PMH Metadata as Linked Data</a>&#8220;</p>
]]></content:encoded>
										</item>
		<item>
		<title>TriLUG, open source software, and satisfaction</title>
		<link>./../2011/12/trilug-open-source-software-and-satisfaction/index.html</link>
				<pubDate>Fri, 09 Dec 2011 15:46:47 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">./../index.html?p=852</guid>
				<description><![CDATA[This is posting about TriLUG, open source software, and satisfaction for doing a job well-done. A long time ago, in a galaxy far far away, I lived in Raleigh (North Carolina), and a fledgling community was growing called the Triangle Linux User&#8217;s Group (TriLUG). I participated in a few of their meetings. While I was [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is posting about TriLUG, open source software, and satisfaction for doing a job well-done.
</p>
<p>
A long time ago, in a galaxy far far away, I lived in Raleigh (North Carolina), and a fledgling community was growing called the Triangle Linux User&#8217;s Group (<a href="http://trilug.org/">TriLUG</a>). I participated in a few of their meetings. While I was interested in open source software, I was not so interested in Linux. My interests were more along the lines of the application stack, not necessarily systems administration nor Internet networking.
</p>
<p>
I gave a presentation to the User&#8217;s Group on the combined use of PHP and MySQL &#8212; &#8220;<a href="http://infomotions.com/musings/smart-pages/">Smart HTML pages with PHP</a>&#8220;. Because of this I was recruited to write a Web-based membership application. Since flattery will get you everywhere with me, I was happy to do it. After a couple of weeks, the application was put into place and seemed to function correctly. That was a bit more than ten years ago, probably during the Spring of 2001.
</p>
<p>
The other day I got an automated email message from the User&#8217;s Group. The author of the message wanted to know if I wanted to continue my membership? I replied how that was not necessary since I had long since moved away to northern Indiana.
</p>
<p>
I then got to wondering whether or not the message I received had been sent by my application. It was a long shot, but I enquired anyway. Sure enough, I got a response from <strong>Jeff Schornick</strong>, a TriLUG board member, who told me &#8220;Yes, your application was the tool that had been used.&#8221; How satisfying! How wonderful to know that something I wrote more than ten years ago was still working.
</p>
<p>
Just as importantly, Jeff wanted to know about open source licensing. I had not explicitly licensed the software, something that I only learned was necessary from <strong>Dan Chudnov</strong> later. After a bit of back and forth, the original source code was supplemented with the GNU Public License, packaged up, and <a href=" http://github.com/trilug/member_tool/">distributed from a Git repository</a>. Over the years the User&#8217;s Group had modified it to overcome a few usability issues, and they wanted to distribute the source code using the most legitimate means possible.
</p>
<p>
This experience was extremely enriching. I originally offered my skills, and they returned benefits to the community greater than the expense of my time. The community then came back to me because they wanted to express their appreciation and give credit where credit was due.
</p>
<p>
<em>Open source software not necessarily about computer technology. It is just as much, if not more, about people and the communities they form.</em></p>
]]></content:encoded>
										</item>
		<item>
		<title>Use &#038; understand: A DPLA beta-sprint proposal</title>
		<link>./../2011/09/dpla/index.html</link>
				<comments>./../2011/09/dpla/index.html#comments</comments>
				<pubDate>Thu, 01 Sep 2011 14:28:26 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[#dpla]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[DPLA (Digital Public Library of America)]]></category>
		<category><![CDATA[services against texts]]></category>
		<category><![CDATA[text mining]]></category>

		<guid isPermaLink="false">./../index.html?p=835</guid>
				<description><![CDATA[This essay describes, illustrates, and demonstrates how the Digital Public Library of America (DPLA) can build on the good work of others who support the creation and maintenance of collections and provide value-added services against texts &#8212; a concept we call &#8220;use &#38; understand&#8221;. This document is available in a three of formats: 1) HTML [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>This essay describes, illustrates, and demonstrates how the Digital Public Library of America (DPLA) can build on the good work of others who support the creation and maintenance of collections and provide value-added services against texts &#8212; a concept we call &#8220;use &amp; understand&#8221;.</p>
<p>This document is available in a three of formats: 1) <a href="./../2011/09/dpla/index.html">HTML</a> &#8211; for viewing on a desktop Web browser, 2) <a href="./../wp-content/uploads/2011/08/dpla/proposal.pdf">PDF</a> &#8211; for printing, the suggested format, and 3) <a href="./../wp-content/uploads/2011/08/dpla/proposal.epub">ePub</a> &#8211; for reading on your portable device.</p>
<div style='text-align: right'>
<p>Eric Lease Morgan &lt;<a href="mailto:emorgan@nd.edu">emorgan@nd.edu</a>&gt;<br />
University of Notre Dame
</p>
<p>September 1, 2011</p>
</div>
<h2>Table of Contents</h2>
<ul>
<li><a href="#executive">Executive summary</a></li>
<li><a href="#introduction">Introduction and assumptions</a></li>
<li><a href="#find">Find &amp; get</a></li>
<li><a href="#use">Use &amp; understand</a></li>
<li><a href="#examples">Examples</a></li>
<ul>
<li><a href="#measuresize">Measure size</a></li>
<li><a href="#difficulty">Measure difficulty</a></li>
<li><a href="#quantitative">Side bar on quantitative bibliographic data</a></li>
<li><a href="#measureconcept">Measure concept</a></li>
<li><a href="#plottimeline">Plot on a timeline</a></li>
<li><a href="#countfrequencies">Count word and phrase frequencies</a></li>
<li><a href="#context">Display in context</a></li>
<li><a href="#proximity">Display the proximity of a given word to other words</a></li>
<li><a href="#locataion">Display location of word in a text</a></li>
<li><a href="#elaborate">Elaborate upon and visualize parts-of-speech analysis</a></li>
</ul>
<li><a href="#disclaimer">Disclaimer</a></li>
<li><a href="#software">Software</a></li>
<li><a href="#implementation">Implementation how-to&#8217;s</a></li>
<ul>
<li><a href="#measurement">Measurement services</a></li>
<li><a href="#timeline">Timeline services</a></li>
<li><a href="#frequency">Frequency, concordance, proximity, and locations in a text services</a></li>
<li><a href="#partsofspeech">Parts-of-speech services</a></li>
<li><a href="#priorities">Priorities</a></li>
</ul>
<li><a href="#quick">Quick links</a></li>
<ul>
<li><a href="#wordfrequencies">Word frequencies, concordances</a></li>
<li><a href="#wordlocations">Word/phrase locations</a></li>
<li><a href="#proximitydisplays">Proximity displays</a></li>
<li><a href="#plato">Plato, Aristotle, and Shakespeare</a></li>
<li><a href="#portal">Catholic Portal</a></li>
<li><a href="#measuresize2">Measuring size</a></li>
<li><a href="#plottimeline2">Plot on a timeline</a></li>
<li><a href="#lookup">Lookup in Wikipedia and plot on a map</a></li>
<li><a href="#analysis">Parts-of-speech analysis</a></li>
<li><a href="#ideas">Measuring ideas</a></li>
</ul>
<li><a href="#summary">Summary</a></li>
<li><a href="#author">About the author</a></li>
</ul>
<h2><a id="executive">Executive summary</a></h2>
<p>This Digital Public Library of America (DPLA) beta-sprint proposal &#8220;stands on the shoulders of giants&#8221; who have successfully implemented the processes of find &amp; get &#8212; the traditional functions of libraries. We are sure the DPLA will implement the services of find &amp; get very well. To supplement, enhance, and distinguish the DPLA from other digital libraries, we propose the implementation of &#8220;services against text&#8221; in an effort to support use &amp; understand.</p>
<p>Globally networked computers combined with an abundance of full text, born-digital materials has made the search engines of Google, Yahoo, and Microsoft a reality. Advances in information retrieval have made relevancy ranking the norm as opposed to the exception. All of these things have made the problems of find &amp; get less acute than they used to be. The problems of find &amp; get will never be completely resolved, but they seem adequately addressed for the majority of people. Enter a few words into a search box. Click go. And select items of interest.</p>
<p>Use &amp; understand is an evolutionary step in the processes and functions of a library. These processes and functions enable the reader to ask and answer questions of large and small sets of documents relatively easily. Through the use of various text mining techniques, the reader can grasp quickly the content of documents, extract some of their meaning, and evaluate them more thoroughly when compared to the traditional application of metadata. Some of these processes and functions include: word/phrase frequency lists, concordances, histograms illustrating the location of words/phrases in a text, network diagrams illustrating what author say &#8220;in the same breath&#8221; when they mention a given word, plotting publication dates on a timeline, measuring the weight of a concept in a text, evaluating texts based on parts-of-speech, supplementing texts with Wikipedia articles, and plotting place names on a world maps.</p>
<p>We do not advocate the use of these services as replacements for &#8220;close&#8221; reading. Instead we advocate them as tools to supplement learning, teaching, and scholarship –&#160;functions of any library.</p>
<table align="center">
<tr align="center">
<td><iframe width="425" height="349" src="http://www.youtube.com/embed/SnmxKxQlb9g" frameborder="0" allowfullscreen></iframe><br />Use &amp; understand: A video introduction</td>
</tr>
</table>
<h2><a id="introduction">Introduction and assumptions</a></h2>
<p><br</p>
<p>Libraries are almost always a part of a larger organization, and their main functions can be divided into collection building, conservation &amp; preservation, organization &amp; classification, and public service. These functions are very much analogous to the elements of the DPLA articulated by John Palfrey: community, content, metadata, code, and tools &amp; services.</p>
<p>This beta-Sprint proposal is mostly about tools &amp; services, but in order to provide the proposed tools &amp; services, we make some assumptions about and build upon the good work of people working on community, content, metadata, and code. These assumptions follow.</p>
<p>First, the community the DPLA encompasses is just about everybody in the United States. It is not only about the K-12 population. It is not only about students, teachers, and scholars in academia. It is not only about life-long learners, the businessperson, or municipal employees. It is about all of these communities at once and at the same time because we believe all of these communities have more things in common than they have differences. The tools &amp; services described in this proposal can be useful to anybody who is able to read.</p>
<p>Second, the content of the DPLA is not licensed, much of it is accessible in full-text, and freely available for downloading and manipulation. More specifically, this proposal assumes the collections of the DPLA include things like but not necessarily limited to: digitized versions of public domain works, the full-text of open access scholarly journals and/or trade magazines, scholarly and governmental data sets, theses &amp; dissertations, a substantial portion of the existing United States government documents, the archives of selected mailing lists, and maybe even the archives of blog postings and Twitter feeds. Moreover, we assume the DPLA is not merely a metadata repository, but also makes immediately available plain text versions of much of its collection.</p>
<p>Third, this proposal does not assume very many things regarding metadata beyond the need for the most basic of bibliographic information such as unique identifiers, titles, authors, subject/keyword terms, and location codes such as URLs. It does not matter to this proposal how the bibliographic metadata is encoded (MARC, XML, linked data, etc.). On the other hand, this proposal will advocate for additional bibliographic metadata, specifically, metadata that is quantitative in nature. These additions are not necessary for the fulfillment of the proposal, but rather side benefits because of it.</p>
<p>Finally, this proposal assumes the code &amp; infrastructure of the DPLA supports the traditional characteristics of a library. In other words, it is assumed the code &amp; infrastructure of the DPLA provide the means for the creation of collections and the discovery of said items. As described later, this proposal is not centered on the processes of find &amp; get. Instead this proposal assumes the services of find &amp; get are already well-established. This proposal is designed to build on the good work of others who have already spent time and effort in this area. We hope to &#8220;stand on the shoulders of giants&#8221; in this regard.</p>
<p>Given these assumptions about community, content, metadata, and infrastructure, we will now describe how the DPLA can exploit the current technological environment to provide increasingly useful services to its clientele. Through the process we hope to demonstrate how libraries could evolve and continue to play a meaningful role in our society.</p>
<h2><a id="find">Find &amp; get</a></h2>
<p>While it comes across as trite, with the advent of ubiquitous and globally networked computers, the characteristics of data and information have fundamentally changed. More specifically, since things like books and journals &#8212; the traditional meat and potatoes of libraries &#8212; no longer need to be manifested in analog forms, their digital manifestations lend themselves to new functionality. For example, digital versions of books and journals can be duplicated exactly, and they are much less limited to distinct locations in space and time. Similarly, advances in information retrieval have made strict Boolean logic applied to against relational databases less desirable to the reader than relevancy ranking algorithms and the application of term frequency/inverse document frequency models against indexes. Combined together these things have made the search engines of Google, Yahoo, and Microsoft a reality. Compared to twenty years ago, this has made the problem of find &amp; get much less acute.</p>
<p>While the problem of find &amp; get will never completely be resolved, many readers (not necessarily librarians) feel the problem is addressed simply enough. Enter a few words into a search box, click Go, and select items of interest. We don&#8217;t know about you, but we can find plenty of data &amp; information. The problem now is what to do with it once it is identified.</p>
<p>We are sure any implementation of the DPLA will include superb functionality for find &amp; get. In fact, our proposal assumes such functionality will exist. Some infrastructure will be created allowing for the identification of relevant content. At the very least this content will be described using metadata and/or the full-text will be mirrored locally. This metadata and/or full-text will be indexed and a search interface applied against it. Search results will probably be returned in any number of ordered lists: relevancy, date, author, title, etc. The interface may very well support functionality based on facets. The results of these searches will never be perfect, but in the eyes of most readers, the results will probably be good enough. This being the case, our proposal is intended to build on this good work and enable the reader to do things with content they identify. Thus we propose to build on the process of find &amp; get to support a process we call use &amp; understand.</p>
<h2><a id="use">Use &amp; understand</a></h2>
<p>The problem of find &amp; get is always a means to an end, and very rarely the end itself. People want to do things with the content they find. We call these things &#8220;services against texts&#8221;, and they are denoted by action verbs including but not limited to:</p>
<blockquote>
<p>* analyze * annotate * cite * compare &amp; contrast * confirm * count &amp; tabulate words, phrases, and ideas * delete * discuss * evaluate * find opposite * find similar * graph &amp; visualize * learn from * plot on a map * plot on a timeline * purchase * rate * read * review * save * share * summarize * tag * trace idea * transform</p>
</blockquote>
<p>We ask ourselves, &#8220;What services can be provisioned to make the sense of all the content one finds on the Internet or in a library? How can the content of a digital work be &#8216;read&#8217; in such a way that key facts and concepts become readily apparent? And can this process be applied to an entire corpus and/or a reader&#8217;s personal search results?&#8221; Thus, we see the problem of find &amp; get evolving into the problem of use &amp; understand.</p>
<p>In our opinion, the answers to these questions lie in the combination of traditional library principles with the application of computer science. Because libraries are expected to know the particular information needs of their constituents, libraries are uniquely positioned to address the problem of use &amp; understand. What do people do with the data and information they find &amp; get from libraries, or for that matter, any other place? In high school and college settings, students are expected to read literature and evaluate it. They are expected to compare &amp; contrast it with similar pieces of literature, extract themes, and observe how authors use language. In a more academic setting scholars and researchers are expected to absorb massive amounts of non-fiction in order to keep abreast of developments in their fields. Each disciplinary corpus is whittled down by peer-review. It is reduced through specialization. Now-a-days the corpus is reduced even further through the recommendation processes of social networking. The resulting volume of content is still considered overwhelming by many. <em>Use &amp; understand is a next step in the information flow. It comes after find &amp; get, and it is a process enabling the reader to better ask and answer questions of an entire collection, subcollection, or individual work. By applying digital humanities computing process, specifically text mining and natural language processing, the process of use &amp; understand can be supported by the DPLA.</em> The examples in the following sections demonstrate and illustrate how this can be done.</p>
<p>Again, libraries are almost always a part of a larger organization, and there is an expectation libraries serve their constituents. Libraries do this in any number ways, one of which is attempting to understanding the &#8220;information needs&#8221; of the broader organization to provide both just-in-time as well as just-in-case collections and services. We are living, working, and learning in an environment of information abundance, not scarsity. Our production economy has all but migrated to a service economy. One of the fuels of service economies is data and information. As non-profit organizations, libraries are unable to compete when it comes to data provision. Consequently libraries may need to refocus and evolve. By combining its knowledge of the reader with the content of collections, libraries can fill a growing need. Because libraries are expected to understand the partiular needs of their particular clientele, libraries are uniquely positioned to fill this niche. Not Google. Not Yahoo. Not Microsoft.</p>
<h2><a id="examples">Examples</a></h2>
<h3><a id="measuresize">Measure size</a></h3>
<p>One of the simplest and most rudimentary services against texts the DPLA could provide in order to promote use &amp; understand is to measure the size of documents in terms of word counts in addition to page counts.</p>
<p>Knowing the size of a document is important to the reader because it helps them determine the time necessary to consume the document&#8217;s content as well as implies the document&#8217;s depth of elaboration. In general, shorter books require less time to read, and longer books go into greater detail. But denoting the sizes of books in terms of page counts is too ambiguous to denote length. For any given book, a large print addition will contain more pages than the same book in paperback form, which will be different again from its first edition hard cover manifestation.</p>
<p>Not only can much of the ambiguity of document lengths be eliminated if they were denoted with word counts, but if bibliographic descriptions were augmented with word counts then meaningful comparisons between texts could easily be brought to light.</p>
<p>Suppose the DPLA has a collection of one million full-text items. Suppose the number of words in each item were counted and saved in bibliographic records. Thus, search results could then be sorted by length. Once bibliographic records were supplemented with word counts it would be possible to calculate the average length of a book in the collection. Similarly, the range of lengths could be associated with a relative scale such as: tiny books, short books, average length books, long books, and tome-like books. Bibliographic displays could then be augmented with gauge-like graphics to illustrate lengths.</p>
<p>Such was done against the Alex Catalogue of Electronic Texts. There are (only) 14,000 full-text documents in the collection, but after counting all the words in all the documents it was determined that the average length of a document is about 150,000 words. A search was then done against the Catalogue for Charles Dickens&#8217;s <cite>A Christmas Carol</cite>, <cite>Oliver Twist</cite> and <cite>David Copperfield</cite>, and the lengths of the resulting documents were compared using gauge-like graphics, as illustrated below:</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/christmas.png" alt="christmas.png" width="200" ><br /><cite>A Christmas Carol</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/twist.png" alt="twist.png" width="200" ><br /><cite>Oliver Twist</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/copperfield.png" alt="copperfield.png" width="200" ><br /><cite>David Copperfield</cite></td>
</tr>
</table>
<p>At least a couple of conclusions can be quickly drawn from this comparison. <cite>A Christmas Carol</cite> is much shorter than <cite>David Copperfield</cite>, and <cite>Oliver Twist</cite> is an average length document.</p>
<p>There will certainly be difficulties counting the number of words in documents. Things will need to be considered in order to increase accuracy, things like: whether or not the document in question has been processed with optical character recognition, whether or not things like chapter headers are included, whether or not back-of-the-book indexes are included, whether nor not introductory materials are included. All of this also assumes a parsing program can be written which accurately extracts &#8220;words&#8221; from a document. The later is, in fact, fodder for an entire computer science project.</p>
<p>Despite these inherent difficulties, denoting the number of words in a document and placing the result in bibliographic records can help foster use &amp; understand. We believe counting the number of words in a document will result in a greater number of benefits when compared to costs.</p>
<h3><a id="difficulty">Measure difficulty</a></h3>
<p>Measuring the inherent difficulty &#8212; readability score &#8212; of texts enables the reader to make judgements about those texts, and in turn, fosters use &amp; understand. By including such measurements in the bibliographic records and search results, the DPLA will demonstrate ways it can &#8220;save the time of the reader&#8221;.</p>
<p>In the last century J. Peter Kincaid, Rudolf Flesch, and Robert Gunning worked both independently as well as collaboratively to create models of readability. Based on a set of factors (such as but not limited to: lengths of documents measured in words, the number of paragraphs in documents, the number of sentences in paragraphs, the number of words in sentences, the complexity of words, etc.) numeric values were calculated to determined the reading levels of documents. Using these models things like Dr. Seuss books are consistently determined to be easy to read while things like insurance policies are difficult. Given the full-text of a document in plain text form, it is almost trivial to compute any number of readability scores. The resulting values could be saved in bibliographic records, and these values could be communicated to the reader with the use of gauge-like graphics.</p>
<p>In a rudimentary way, the Alex Catalogue of Electronic texts has implemented this idea. For each item in the Catalogue the Fog, Flesch, and Kincaid readability scores have been calculated and saved to the underlying MyLibrary database. Searches were done against the Catalogue for Charles Dickens&#8217;s <cite>David Copperfield</cite>, Henry David Thoreau&#8217;s <cite>Walden</cite>, and Immanual Kant&#8217;s <cite>Fundamental Principles Of The Metaphysics Of Morals</cite>. The following graphics illustrate the readability scores of each. We believe the results are not surprising, but they are illustrative of this technique&#8217;s utility:</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/readability-dickens.png" alt="readability-dickens" width="200" ><br /><cite>David Cooperfield</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/readability-thoreau.png" alt="readability-thoreau.png" width="200" ><br /><cite>Walden</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/readability-kant.png" alt="readability-kant.png" width="200" ><br /><cite>Metaphysics of Morals</cite></td>
</tr>
</table>
<p>If readability scores were integrated into bibliographic search engines (&#8220;catalogs&#8221;), then it would be possible to limit search results by reading level or even sort search results by them. Imagine being able to search a library catalog for all items dealing with Neo-Platonism, asking for shorter items as opposed to longer items, and limiting things further by readability score.</p>
<p>Readability scores are not intended to be absolute. Instead they are intended to be used as guidelines. If the reader is a novice when it comes to particular topic, and the reader is of high school age, that does not mean they are unable to read college level material. Instead, the readability scores would be used to set the expectations of the reader and help them make judgements before they begin reading a book.</p>
<div style='background-color: silver; padding: 1em'>
<h3><a id="quantitative">Side bar on quantitative bibliographic data</a></h3>
<p>Bibliographic systems are notoriously qualitative in nature making the process of compare &amp; contrast between bibliographic items very subjective. If there were more quantitative data associated with bibliographic records, then mathematical processes could be applied against collections as a whole, subsets of the collection, or even individual items.</p>
<p>Library catalogs are essentially inventory lists denoting what a library owns (or licenses). For the most part, catalogs are used to describe the physical nature of a library collection: authors, titles, publication dates, pagination and size, notes (such as &#8220;Includes index.&#8221;), and subject terms. Through things like controlled vocabularies and authority lists, the nature of a collection can be posited, and some interesting questions can be answered. Examples include: what is the average age of the items in the collection, what are the collection&#8217;s major subject areas, who are the predominate authors of the works in the collection. These are questions whose answers are manifested now-a-days through faceted browse interfaces, but they are questions of the collection as a whole or subsets of the collection, not individual works. They are questions librarians find interesting, not necessarily readers who want to evaluate the significance of a given work.</p>
<p>If the bibliographic systems were to contain quantitative data, then the bibliographic information systems would be more meaningful and more useful. Dates are a very good example. The dates (years) in a library catalog denote when the item in hand (a book) was published, not when the idea in the book was manifested. Consequently, if Plato&#8217;s <cite>Dialogs</cite> were published today, then its library catalog record would have a value of 2011. While such a thing is certainly true, it is misleading. Plato did not write the <cite>Dialogs</cite> this year. They were written more than 2,500 years ago. Given our current environment, why can&#8217;t a library catalog include this sort of information?</p>
<p>Suppose the reader wanted to read all the works of Henry David Thoreau. Suppose the library catalog had accurately denoted the all the items in its collection by this author with the authority term, &#8220;Thoreau, Henry David&#8221;. Suppose the reader did an author search for &#8220;Thoreau, Henry David&#8221; and a list of twenty-five items was returned. Finally, suppose the reader wanted to begin by reading Thoreau&#8217;s oldest work first and progress to his latest. Using a library catalog, such a thing would not be possible because the dates in bibliographic records denote the date of publication, not the date of first conception or manifestation.</p>
<p>Suppose the reader wanted to plot on a timeline when Thoreau&#8217;s works were published, and the reader wanted to compare this with the complete works of Longfellow or Walt Whitman. Again, such a thing would not be possible because the dates in a library catalog denote publication dates, not when ideas were originally manifested. Why shouldn&#8217;t a library catalog enable the reader to easily create timelines?</p>
<p>To make things even more complicated, publication dates are regularly denoted as strings, not integers. Examples include: [1701], 186?, 19&#8211;, etc. These types of values are ambiguous. Their meaning and interpretation is bound to irregularly implemented &#8220;syntactical sugar&#8221;. Consequently, without all but heroic efforts, it is not easy to do any sort of compare &amp; contrast evaluation when it comes to dates.</p>
<p>The DPLA has the incredible opportunity to make a fresh start when it comes to the definition of library catalogs. We know the DPLA will not want to reinvent the wheel. At the same time we believe the DPLA will want to exploit the current milieu, re-evaluate the possibilities of computer technology, and consequently refine and evolve the meaning of &#8220;catalog&#8221;. Traditional library catalogs were born in an era of relative information scarcity. Today we are dealing with problems of abundance. Library catalogs need to do many things differently in order to satisfy the needs/desires of the current reader. &#8220;Next-generation library catalogs&#8221; can do so much more than provide access to local collections. Facilitating ways to evaluate collections, sub-collections, or individual items through the use of quantitative analysis is just one example.</p>
</div>
<h3><a id="measureconcept">Measure concept</a></h3>
<p>By turning a relevancy ranking algorithm on its head, it is be possible to measure the existence of concepts of a given work. If this were done for many works, then new comparisons between works would be possible, and again, making it possible for the reader to easily compare &amp; contrast items in a corpus or search results. Of all the services against texts examples in this proposal, we know this one is the most avant-garde.</p>
<p>Term frequency/inverse document frequency (TFIDF) is a model at the heart of many relevancy ranking algorithms. Mathematically stated, TFIDF equals:</p>
<blockquote>
<p>( c / t ) * log( d / f )</p>
</blockquote>
<p>where:</p>
<ul>
<li>c = number of times the query terms appear in a document</li>
<li>t = total number of words in a document</li>
<li>d = total number of documents in a corpus</li>
<li>f = total number of documents containing the query terms</li>
</ul>
<p>In other words, TFIDF calculates relevancy (&#8220;aboutness&#8221;) by multiplying the ratio of query words and document sizes to the ratio of number of documents in a corpus and total frequency of query terms. Thus, if there are three documents each containing the word &#8220;music&#8221; three times, but one of them is 100 words long and the other two are 200 words long, then the first document is considered more relevant than the other two.</p>
<p>Written language &#8212; which is at the very heart of library content &#8212; is ambiguous, nuanced, and dynamic. Few, if any, concepts can be completely denoted by a single word or phrase. Instead, a single concept may be better described using a set of words or phrases. For example, music might be denoted thusly:</p>
<blockquote>
<p>art, Bach, Baroque, beat, beauty, blues, composition, concert, dance, expression, guitar, harmony, instrumentation, key, keyboard, melody, Mozart, music, opera, percussion, performance, pitch, recording, rhythm, scale, score, song, sound, time, violin</p>
</blockquote>
<p>If any document used some or all of these words with any degree of frequency, then it would probably be safe to say the document was about music. This &#8220;aboutness&#8221; could then be calculated by summing the TFIDF scores of all the music terms in a given document &#8212; a thing called the &#8220;document overlap measure&#8221;. Thus, one document might have a total music &#8220;aboutness&#8221; measure of 105 whereas another document might have a measure of 55.</p>
<p>We used a process very similar to the one outlined above in an effort to measure the &#8220;greatness&#8221; of the set of books called <cite>The Great Books Of The Western World</cite>. Each book in the set was evaluated in terms of it use of the 102 &#8220;great ideas&#8221; enumerated in the set&#8217;s introduction. We summed the computed TFIDF values of each great idea in each book, a value we call the Great Ideas Coefficient. Through this process we determined the &#8220;greatest&#8221; book in the set was Aristotleʼs <cite>Politics</cite> because it alluded to the totality of &#8220;great ideas&#8221; more than the others. Furthermore, we determined that Shakespeare wrote seven of the top ten books when it comes to the idea of love. The following figure illustrates the result of these comparisons. The bars above the line represent books greater than the hypothetical average great book, and the bars below the line are less great than the others.</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/great-books.png" alt="great-books" width="600" ><br />Measuring the &#8220;greatness&#8221; of <cite>The Great Books of the Western World</cite></td>
</tr>
</table>
<p>The DPLA could implement very similar services against texts in one and/or two ways. First, it could denote any number of themes (like music or &#8220;great ideas&#8221;) and calculate coefficients denoting the aboutness of those themes for every book in the collection. Readers could then limit their searches by these coefficients or sort their search results accordingly. Find all books with subjects equal to philosophy. Sort the result by the philosophy coefficient.</p>
<p>Second, and possibly better, the DPLA could enable readers to denote their own more specialized and personalized themes. These themes and their aboutness coefficients could then be applied, on-the-fly, to search results. For example, find all books with subject terms equal to gardening, and sort the result by the reader&#8217;s personal definition of biology.</p>
<p>As stated earlier, written language is ambiguous and nuanced, but at the same time it is, to some degree, predicable. If it were not predicable, then no one would be able to understand another. Because of this predicability, language, to some degree, can be quantified. Once quantified, it can be measured. Once measured it can be sorted and graphed, and thus new meanings can be expressed and evaluated. The coefficients described in this section, like the measurements of length and readability, are to be taken with a grain of salt, but they can help the reader use &amp; understand library collections, sub-collections, and individual items.</p>
<h3><a id="plottimeline">Plot on a timeline</a></h3>
<p>Plotting things on a timeline is an excellent way to put events into perspective, and when written works are described with dates, then they are amenable to visualizations.</p>
<p>The DPLA could put this idea into practice by applying it against search results. The reader could do a search in the &#8220;catalog&#8221;, and the resulting screen could have a link labeled something like &#8220;Plot on a timeline&#8221;. By clicking the link the dates of search results could be extracted from the underlying metadata, plotted on a timeline, and displayed. At the very least such a function would enable the reader to visualize when things were published and answer rudimentary questions such as: are there clusters of publications, do the publications span a large swath of time, did one particular author publishing things on regular basis?</p>
<p>The dates in traditional bibliographic metadata denote the publication of an item, as mentioned previously. Consequently the mapping of monographs may not be useful as desired. On the other hand, the dates associated with things of a serial nature (blog postings, twitter feeds, journal articles, etc.) are more akin to dates of conception. We imagine the DPLA systematically harvesting, preserving, and indexing freely available and open access serial literature. This content is much more amenable to plotting on a timeline as illustrated below:</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/timeline.png" alt="timeline" width="600" ><br />Timeline illustrating when serial literature was published</td>
</tr>
</table>
<p>The timeline was created by aggregating selected RSS feeds, parsing out the dates, and plotting them accordingly. Different colored items represent different feeds. Each item in the timeline is hot providing the means to read the items&#8217; abstracts and optionally viewing the items&#8217; full text.</p>
<p>Plotting things on a timeline is another way the DPLA can build on the good work of find &amp; get and help the reader use &amp; understand.</p>
<h3><a id="countfrequencies">Count word and phrase frequencies</a></h3>
<p>Akin to traditional back-of-the-book indexes, word and phrase frequency tabulations are one of the simplest and most expedient ways of providing access to and overviews of a text. Like tables of contents and indexes, word and phrase frequecies increase a text&#8217;s utility and make texts easier to understand.</p>
<p>Back-of-the-book indexes are expensive to create and the product of an individual&#8217;s perspective. Moreover, back-of-the-book indexes are not created for fiction. Why not? Given the full-text of a work any number of back-of-the-book index-like displays could be created to enhance the reader&#8217;s experience. For example, by simply tabulating the occurrences of every word in a text (sans, maybe, stop words), and then displaying the resulting list alphabetically, the reader can have a more complete back-of-the-book index generated for them without the help of a subjective indexer. The same tabulation could be done again but instead of displaying the content alphabetically, the results could be ordered by frequency as in a word cloud. In either case each entry in the &#8220;index&#8221; could be associated with an integer denoting the number of times the word (or phrase) occurs in the text. The word (or phrase) could then be linked to a concordance (see below) in order to display how the word (or phrase) was used in context.</p>
<p>Take for example, Henry David Thoreaus&#8217;s <cite>Walden</cite>. This is a piece of non-fiction about a man who lives alone in the woods by a pond for just about two years. In the book&#8217;s introduction Ralph Waldo Emerson describes Thoreau as a man with a keen sense of physical space and an uncanny ability for measurement. The book itself describes one person&#8217;s vision of what it means to be human. Upon the creation and display of the 100 most frequently used two-word phrases (bigrams), these statements about the book are born out. Notice the high frequency of quantitative references as well as reference to men:</p>
<p>Compare <cite>Walden</cite> to James Joyce&#8217;s <cite>Ulysses</cite>, a fictional work describing a day in the life of Leopold Bloom as he walks through Dublin. Notice how almost every single bigram is associated with the name of a person</p>
<p>Interesting? Some people may react to these illustrations and say, &#8220;So what? I already knew that.&#8221; To which we reply, &#8220;Yes, but what about those people who haven&#8217;t read these texts?&#8221; Imagine being able to tabulate the word frequencies against any given set of texts &#8212; a novel, a journal article, a piece of non-fiction, all of the works by a given author or in a given genre. The results are able to tell the reader things about the works. For example, it might alert the reader to the central importance of a person named Bloom. When Bloom is mentioned in the text, then maybe the reader ought to be extra attention to what is being said. Frequency tabulations and word cloud can also alert the reader to what is not said in a text. Apparently religion is not a overarching theme in either of the above examples.</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/frequency-walden.png" alt="frequency walden" width="600" ><br />The 100 most frequent two-word phrases in <cite>Walden</cite></td>
</tr>
</table>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/frequency-ulysses.png" alt="frequency ulysses" width="600" ><br />The 100 most frequent two-word phrases in <cite>Ulysses</cite></td>
</tr>
</table>
<p>It is possible to tabulate word frequencies across texts. Again, using <cite>A Christmas Carol</cite>, <cite>Oliver Twist</cite>, and <cite>David Copperfield</cite> as examples, we discover the 6-word phrase &#8220;taken with a violent fit of&#8221; appears in both <cite>David Copperfield</cite> and <cite>A Christmas Carol</cite>. Moreover, the bigram &#8220;violent fit&#8221; appears on all three works. Specifically, characters in these three Dickens stories have violent fits of laughter, crying, trembling, and coughing. By concatenating the stories together and applying concordancing methods to them (described below) we see there are quite a number of violent things in the three stories:</p>
<pre>
  n such breathless haste and <span style='color: red; font-weight: bold'>violent</span> agitation, as seemed to betoken so
  ood-night, good-night!' The <span style='color: red; font-weight: bold'>violent</span> agitation of the girl, and the app
  sberne) entered the room in <span style='color: red; font-weight: bold'>violent</span> agitation. 'The man will be taken,
  o understand that, from the <span style='color: red; font-weight: bold'>violent</span> and sanguinary onset of Oliver Twi
  one and all, to entertain a <span style='color: red; font-weight: bold'>violent</span> and deeply-rooted antipathy to goi
  eep a little register of my <span style='color: red; font-weight: bold'>violent</span> attachments, with the date, durati
  cal laugh, which threatened <span style='color: red; font-weight: bold'>violent</span> consequences. 'But, my dear,' said
  in general, into a state of <span style='color: red; font-weight: bold'>violent</span> consternation. I came into the roo
  artly to keep pace with the <span style='color: red; font-weight: bold'>violent</span> current of her own thoughts: soon
  ts and wiles have brought a <span style='color: red; font-weight: bold'>violent</span> death upon the head of one worth m
   There were twenty score of <span style='color: red; font-weight: bold'>violent</span> deaths in one long minute of that
  id the woman, making a more <span style='color: red; font-weight: bold'>violent</span> effort than before; 'the mother, w
   as it were, by making some <span style='color: red; font-weight: bold'>violent</span> effort to save himself from fallin
  behind. This was rather too <span style='color: red; font-weight: bold'>violent</span> exercise to last long. When they w
   getting my chin by dint of <span style='color: red; font-weight: bold'>violent</span> exertion above the rusty nails on
  en who seem to have taken a <span style='color: red; font-weight: bold'>violent</span> fancy to him, whether he will or n
  peared, he was taken with a <span style='color: red; font-weight: bold'>violent</span> fit of trembling. Five minutes, te
  , when she was taken with a <span style='color: red; font-weight: bold'>violent</span> fit of laughter; and after two or
  he immediate precursor of a <span style='color: red; font-weight: bold'>violent</span> fit of crying. Under this impressi
  and immediately fell into a <span style='color: red; font-weight: bold'>violent</span> fit of coughing: which delighted T
  of such repose, fell into a <span style='color: red; font-weight: bold'>violent</span> flurry, tossing their wild arms ab
   and accompanying them with <span style='color: red; font-weight: bold'>violent</span> gesticulation, the boy actually th
  ght I really must have laid <span style='color: red; font-weight: bold'>violent</span> hands upon myself, when Miss Mills
   arm tied up, these men lay <span style='color: red; font-weight: bold'>violent</span> hands upon him -- by doing which,
   every aggravation that her <span style='color: red; font-weight: bold'>violent</span> hate -- I love her for it now -- c
   work himself into the most <span style='color: red; font-weight: bold'>violent</span> heats, and deliver the most wither
  terics were usually of that <span style='color: red; font-weight: bold'>violent</span> kind which the patient fights and
   me against the donkey in a <span style='color: red; font-weight: bold'>violent</span> manner, as if there were any affin
   to keep down by force some <span style='color: red; font-weight: bold'>violent</span> outbreak. 'Let me go, will you,--t
  hands with me - which was a <span style='color: red; font-weight: bold'>violent</span> proceeding for him, his usual cour
  en.' 'Well, sir, there were <span style='color: red; font-weight: bold'>violent</span> quarrels at first, I assure you,'
  revent the escape of such a <span style='color: red; font-weight: bold'>violent</span> roar, that the abused Mr. Chitling
  t gradually resolved into a <span style='color: red; font-weight: bold'>violent</span> run. After completely exhausting h
  , on which he ever showed a <span style='color: red; font-weight: bold'>violent</span> temper or swore an oath, was this
  ullen, rebellious spirit; a <span style='color: red; font-weight: bold'>violent</span> temper; and an untoward, intractab
  fe of Oliver Twist had this <span style='color: red; font-weight: bold'>violent</span> termination or no. CHAPTER III REL
  in, and seemed to presage a <span style='color: red; font-weight: bold'>violent</span> thunder-storm, when Mr. and Mrs. B
  f the theatre, are blind to <span style='color: red; font-weight: bold'>violent</span> transitions and abrupt impulses of
  ming into my house, in this <span style='color: red; font-weight: bold'>violent</span> way? Do you want to rob me, or to
</pre>
<p>These observations simply beg other questions. Is violence a common theme in Dickens&#8217; works? What other adjectives are used to a greater or lesser degree in Dickens&#8217; works? How do the use of these adjectives differ from other authors of the same time period or within the canon of English literature?</p>
<p>While works of fiction are the basis of most of the examples, there is no reason why similar processes couldn&#8217;t be applied to non-fiction as well. We also understand that the general reader will not be interested in these sorts of services against texts. Instead we see these sorts of services more applicable to students in high school and college. We also see these sorts of services being applicable to the scholar or researcher who needs to &#8220;read&#8221; large numbers of journal article. Finally, we do not advocate the use of these sorts of tools as a replacement for traditional &#8220;close&#8221; reading. These tools are supplements and additions to the reading process just as tables of contents and back-of-the-book indexes are today.</p>
<h3><a id="context">Display in context</a></h3>
<p>Concordances &#8212; one of the oldest literary tools in existence &#8212; have got to be some of the more useful services against texts a library could provide because they systematically display words and concepts within the context of the larger written work making it very easy to compare &amp; contrast usage. Originally implemented by Catholic priests as early as 1250 to study religious texts, concordances (sometimes called &#8220;key word in context&#8221; or KWIC indexes) trivialize the process of seeing how a concept is expressed in a work.</p>
<p>As an example of how concordances can be used to analyze texts, we asked ourselves, &#8220;How do Plato, Aristotle, and Shakespeare differ in their definition of man?&#8221; To answer this question we amassed all the works of the authors, searched each for the phrase &#8220;man is&#8221;, and displayed the results in a concordance-like fashion. From the results the reader can see how the definitions of Plato and Aristotle are very similar but much different from Shakespeare&#8217;s:</p>
<h4>Plato&#8217;s definitions</h4>
<pre>
  stice, he is met by the fact that <span style='color: red; font-weight: bold'>man is</span> a social being, and he tries to harmoni
  ption of Not-being to difference. <span style='color: red; font-weight: bold'>Man is</span> a rational animal, and is not -- as man
  ss them. Or, as others have said: <span style='color: red; font-weight: bold'>Man is</span> man because he has the gift of speech;
  wise man who happens to be a good <span style='color: red; font-weight: bold'>man is</span> more than human (daimonion) both in lif
  ied with the Protagorean saying, '<span style='color: red; font-weight: bold'>Man is</span> the measure of all things;' and of this
</pre>
<h4>Aristotle&#8217;s definitions</h4>
<pre>
  ronounced by the judgement 'every <span style='color: red; font-weight: bold'>man is</span> unjust', the same must needs hold good
  ts are formed from a residue that <span style='color: red; font-weight: bold'>man i</span>s the most naked in body of all animals a
  ated piece at draughts. Now, that <span style='color: red; font-weight: bold'>man is</span> more of a political animal than bees or
  hese vices later. The magnificent <span style='color: red; font-weight: bold'>man is</span> like an artist; for he can see what is
  lement in the essential nature of <span style='color: red; font-weight: bold'>man is</span> knowledge; the apprehension of animal a
</pre>
<h4>Shakespeare&#8217;s definitions</h4>
<pre>
   what I have said against it; for <span style='color: red; font-weight: bold'>man is</span> a giddy thing, and this is my conclusio
   of man to say what dream it was: <span style='color: red; font-weight: bold'>man is</span> but an ass, if he go about to expound t
  e a raven for a dove? The will of <span style='color: red; font-weight: bold'>man is</span> by his reason sway'd; And reason says y
  n you: let me ask you a question. <span style='color: red; font-weight: bold'>Man is</span> enemy to virginity; how may we barricad
  er, let us dine and never fret: A <span style='color: red; font-weight: bold'>man is</span> master of his liberty: Time is their ma
</pre>
<p>We do not advocate the use of concordances as the be-all and end-all of literary analysis but rather a pointer to bigger questions. Think how much time and energy would have been required if the digitized texts of each of these authors was not available, and if computers could not be applied against them. Concordances, as well as the other services against texts outlined in this proposal, make it easier to ask questions of collections, sub-collections, and individual works. This ease-of-use empowers the reader to absorb, observe, and learn from texts in ways that was not possible previously. We do not advocate these sort of services against texts as replacements for traditional reading processes, but rather we advocate them as alternative and supplemental tools for understanding the human condition or physical environment as manifested in written works.</p>
<p>Herein lies one of the main points of our proposal. <em>By creatively exploiting the current environment where full-text abounds and computing horsepower is literally at everybody&#8217;s fingertips, libraries can assist the reader to &#8220;read&#8221; texts in new and different ways &#8212; ways that make it easier to absorb larger amounts of information and ways to understand it from new and additional perspectives.</em> Concordances are just one example.</p>
<h3><a id="proximity">Display the proximity of a given word to other words</a></h3>
<p>Visualizing the words frequently occurring near a given word is often descriptive and revealing. With the availability of full-text content, creating such visualization is almost trivial and have the potencial for greatly enhancing the reader&#8217;s experience. This enhanced reading process is all but impossible when the written word is solely accessible in analog forms, but in a digital form the process is almost easy.</p>
<p>For example, first take the word woodchuck as found in Henry David Thoreau&#8217;s <cite>Walden</cite>. Upon reading the book the reader learns of his literal distaste for the woodchuck. They eat is beans, and he wants to skin them. Compare the same author&#8217;s allusions to woodchucks in his work <cite>Two Weeks On The Concord And Merrimack Rivers</cite>. In this work, when woodchucks are mentioned he also alludes to other small animals such as foxes, minks, muskrats, and squirrels. In other words, the connotations surrounding woodchucks and between the two books are different as illustrated by the following network diagrams:</p>
<table align="center">
<tr valign="bottom" align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/woodchuck-walden.png" alt="frequency walden" width="300" ><br />&#8220;woodchuck&#8221; in <cite>Walden</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/woodchuck-rivers.png" alt="frequency walden" width="300" ><br />&#8220;woodchuck&#8221; in <cite>Rivers</cite></td>
</tr>
</table>
<p>The given word &#8212; woodchuck &#8212; is in the center. Each of the words connected to the given word are the words appearing most frequently near the given word. This same process is then applied to the connected words. Put another way, these network diagrams literally illustrate what an author says, &#8220;in the same breath&#8221; when they use a given word. Such visualizations are simply not possible through the process of traditional reading without spending a whole lot of effort. The DPLA could implement the sort of functionality described in this section and make the reader&#8217;s experience richer. It demonstrates how libraries can go beyond access (a problem that is increasingly not a problem) and move towards use &amp; understand.</p>
<p>We do not advocate the use of this technology to replace traditional analysis, but rather to improve upon it. This technology, like all of the examples in the proposal, makes it easier to find interesting patterns for further investigation.</p>
<h3><a id="locataion">Display location of word in a text</a></h3>
<p>Sometimes displaying where in a text, percentage-wise, a word or phrase exists can raise interesting questions, and by providing tools to do such visualizations the DPLA will foster the ability to more easily ask interesting questions.</p>
<p>For example, what comes to mind when you think of Daniel Defoe&#8217;s <cite>Robinson Curose</cite>? Do you think of a man shipwrecked on an island and the cannibal named Friday? Ask yourself, when in the story is the man shipwrecked and when does he meet Friday? Early in the story? In the middle? Towards the end? If you guessed early in the story, then you would be wrong because most of the story takes place on a boat, and only three-quarters of the way through the book does Friday appear, as illustrated by the following histogram:</p>
<p>We all know that Herman Melville&#8217;s book <cite>Moby Dick</cite> is about a sailor hunting a great white whale. Looking at a histogram of where the word &#8220;white&#8221; appears in the story, we see a preponderance of its occurrence forty percent the way through the book. Why? Upon looking at the book more closely we see that one of the chapters is entitled &#8220;The Whiteness of the Whale&#8221;, and it is almost entirely about the word &#8220;white&#8221;. This chapter appears about forty percent through the text. Who ever heard of an entire book chapter whose theme was a color?</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/robinson-crusoe.png" alt="robinson-crusoe" width="300" ><br />&#8220;friday&#8221; in <cite>Crusoe</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/moby-dick.png" alt="moby dick" width="300" ><br />&#8220;white&#8221; in <cite>Moby Dick</cite></td>
</tr>
</table>
<p>In a Catholic pamphlet entitled <cite>Letters of an Irish Catholic Layman</cite> the word &#8220;catholic&#8221; is one of the more common and appears frequently in the text towards the beginning as well as the end</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/catholic.png" alt="catholic" width="200" ><br />&#8220;catholic&#8221; in <cite>Layman</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/lake-erie.png" alt="lake erie" width="200" ><br />&#8220;lake erie&#8221; in <cite>Layman</cite></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/niagra.png" alt="niagraa" width="200" ><br />&#8220;niagara falls&#8221; in <cite>Layman</cite></td>
</tr>
</table>
<p>After listing the most common two-word phrases in the book we see that there are many references to places in upper New York state:</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/two-word-phrases.png" alt="two word phrases" width="600" ><br />The 100 most frequently used two-word phrases in <cite>Letters of an Irish Catholic Layman</cite></td>
</tr>
</table>
<p>Looking more closely at the locations of &#8220;Lake Erie&#8221; and &#8220;Niagra Falls&#8221; in the text, we see that these things are referenced in the places where the word &#8220;catholic&#8221; is not mentioned</p>
<p>Does the author go off on a tangent? Are there no catholics in these areas? The answers to the questions, and the question of why are left up to the reader, but the important point is the ability to quickly &#8220;read&#8221; the texts in ways that were not feasible when the books were solely in analog form. Displaying where in a text words or phrases occur literally illustrates new ways to view the content of libraries. These are examples of how the DPLA can build on find &amp; get and increase use &amp; understand.</p>
<h3><a id="elaborate">Elaborate upon and visualize parts-of-speech analysis</a></h3>
<p>Written works can be characterized through parts-of-speech analysis. This analysis can be applied to the whole of a library collection, subsets of the collection, or individual works. The DPLA has the opportunity to increase the functionality of a library by enabling the reader to elaborate upon and visualize parts-of-speech analysis. Such a process will facilitate greater use of the collection and improve understanding of it.</p>
<p>Because the English language follows sets of loosely defined rules, it is possible to systematically classify the words and phrases of written works into parts-of-speech. These include but are not limited to: nouns, pronouns, verbs, adjectives, adverbs, prepositions, punctuation, etc. Once classified, these parts-of-speech can be tabulated and quantitative analysis can begin.</p>
<p>Our own foray&#8217;s into parts-of-speech analysis, where the relative percentage use of parts-of-speech were compared, proved fruitless. But the investigation inspired other questions whose answers may be more broadly applied. More specifically, students and scholars are often times more interested in what an author says as opposed to how they say it. Such investigations can gleaned not so much from gross parts-of-speech measurements but rather the words used to denote each parts-of-speech. For example, the following table lists the 10 most frequently used pronouns and the number of times they occur in four works. Notice the differences:</p>
<table cellpadding='5em'>
<tr>
<th>Walden</th>
<th>Rivers</th>
<th>Northanger</th>
<th>Sense</th>
</tr>
<tr>
<td>I (1,809)</td>
<td>it (1,314)</td>
<td>her (1,554)</td>
<td>her (2,500)</td>
</tr>
<tr>
<td>it (1,507)</td>
<td>we (1,101)</td>
<td>I (1,240)</td>
<td>I (1,917)</td>
</tr>
<tr>
<td>my (725)</td>
<td>his (834)</td>
<td>she (1,089)</td>
<td>it (1,711)</td>
</tr>
<tr>
<td>he (698)</td>
<td>I (756)</td>
<td>it (1,081)</td>
<td>she (1,553)</td>
</tr>
<tr>
<td>his (666)</td>
<td>our (677)</td>
<td>you (906)</td>
<td>you (1,158)</td>
</tr>
<tr>
<td>they (614)</td>
<td>he (649)</td>
<td>he (539)</td>
<td>he (1,068)</td>
</tr>
<tr>
<td>their (452)</td>
<td>their (632)</td>
<td>his (524)</td>
<td>his (1,007)</td>
</tr>
<tr>
<td>we (447)</td>
<td>they (632)</td>
<td>they (379)</td>
<td>him (628)</td>
</tr>
<tr>
<td>its (351)</td>
<td>its (487)</td>
<td>my (342)</td>
<td>my (598)</td>
</tr>
<tr>
<td>who (340)</td>
<td>who (352)</td>
<td>him (278)</td>
<td>they (509)</td>
</tr>
</table>
<p>While the lists are similar, they are characteristic of work from which they came. The first &#8212; <cite>Walden</cite> &#8212; is about an individual who lives on a lake. Notice the prominence of the word &#8220;I&#8221; and &#8220;my&#8221;. The second &#8212; <cite>Rivers</cite> &#8212; is written by the same author as the first but is about brothers who canoe down a river. Notice the higher occurrence of the word &#8220;we&#8221; and &#8220;our&#8221;. The later two works, both written by Jane Austin, are works with females as central characters. Notice how the words &#8220;her&#8221; and &#8220;she&#8221; appear in these lists but not in the former two. It looks as if there are patterns or trends to be measured here.</p>
<p>If the implementation of the DPLA were to enable the reader to do this sort of parts-of-speech analysis against search results, then the search results may prove to be more useful.</p>
<p>Nouns and pronouns play a special role in libraries because they are the foundation of controlled vocabularies, authority lists, and many other reference tools. Imagine being able to extract and tabulate all the nouns (things, names, and places) from a text. A word cloud like display would convey a lot of meaning about the text. On the other hand, a simple alphabetical list of the result could very much function like a back-of-the-book index. Each noun or noun phrase could be associated with any number of functions such as but not limited to:</p>
<ul>
<li>look-up in a controlled vocabulary list in order to find more</li>
<li>look-up in an authority list in order to find more</li>
<li>show in context of the given work (concordance)</li>
<li>elaborate upon using a dictionary, thesaurus, encyclopedia, etc.</li>
<li>plot on a map</li>
</ul>
<p>We demonstrated the beginnings of the look-up functions in a <cite>Code4Lib Journal</cite> article called &#8220;<a href="http://journal.code4lib.org/articles/2481">Querying OCLC Web Services for Name, Subject, and ISBN</a>&#8220;. The concordance functionality is described above. The elaboration service is common place in today&#8217;s ebook readers. Through an interface designed for mobile devices, we implemented a combination of the elaborate and plot on a map services as a prototype. In this implementation the reader is presented with a tiny collection of classic works. The reader is then given the opportunity to browse the names or places index. After the reader selects a specific name or place the application displays a descriptive paragraph of the selection, an image of the selection, and finally, hypertext links to a Wikipedia article or a Google Maps display.</p>
<table align="center">
<tr valign='top' align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/name-place-01.png" alt="name place" width="120" ></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/name-place-02.png" alt="name place" width="120" ></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/name-place-03.png" alt="name place" width="120" ></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/name-place-04.png" alt="name place" width="120" ></td>
<td><img src="./../wp-content/uploads/2011/08/dpla/name-place-05.png" alt="name place" width="120" ></td>
</tr>
<tr align="center">
<td colspan="5">Screen shots of services against texts on a mobile device</td>
</tr>
</table>
<p>Given the amount of full text content that is expected to be in or linked from the DPLA&#8217;s collection, there is so much more potential functionality for the reader. The idea of a library being a storehouse of books and journals is rapidly become antiquated. Because content is so readily available on the &#8216;Net, there is a need for libraries to evolve beyond its stereotypical function. By combining a knowledge of what readers do with information with the possibilities for full text analysis, the DPLA will empower the reader to more easily ask and answer questions of texts. And in turn, make it easier for the reader to use &amp; understand what they are reading.</p>
<h2><a id="disclaimer">Disclaimer</a></h2>
<p>People may believe the techiques described herein run contrary to the traditional processes of &#8220;close&#8221; reading. From our point of view, nothing could be further from the truth. We sincerely believe the techniques described in this proposal suppliment and enhance the reading process.</p>
<p>We are living in an age where we feel like we are drowning in data and information. But according to Ann Blair this is not a new problem. In her book, <cite><a href="http://www.worldcat.org/oclc/601347978">Too Much to Know</a></cite>, Blair chronicles in great detail the ways scholars since the 3rd Century have dealt with information overload. While they seem obvious in today&#8217;s world, they were innovations in their time. They included but were not limited to: copying texts (St. Jerome in the 3rd Century), creating concordances (Hugh St. Cher in the 13th Century), and filing wooden &#8220;cards&#8221; in a &#8220;catalog&#8221; (Athanasius Kircher 17th Century).</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/jerome.jpg" alt="jerome" height="225" ><br />St. Jerome</td>
<td><img src="./../wp-content/uploads/2011/08/dpla/hugh-st-cher.jpg" alt="hugh st cher" height="225" ><br />Hugh St. Cher</td>
<td><img src="./../wp-content/uploads/2011/08/dpla/kircher.png" alt="kircher" height="225" ><br />Athanasius Kircher</td>
</tr>
</table>
<p>Think of all the apparatus associated with a printed book. Books have covers, and sometimes there are dust jackets complete with a description of the book and maybe the author. On the book&#8217;s spine is the title and publisher. Inside the book there are cover pages, title pages, tables of contents, prefaces &amp; introductions, tables of figures, the chapters themselves complete with chapter headings at the top of every page, footnotes &amp; references &amp; endnotes, epilogues, and an index or two. These extras &#8212; tables of contents, chapter headings, indexes, etc. &#8212; did not appear in books with the invention of the codex. Instead their existence was established and evolved over time.</p>
<p>In scholarly detail, Blair documents how these extras &#8212; as well as standard reference works like dictionaries, encyclopedias, and catalogs &#8212; came into being. She asserts the creation of these things became necessary as the number and lengths of books grew. These tools made the process of understanding the content of books easier. They reenforced ideas, and made the process of returning to previously read information faster. Accordingl to Blair, not everybody thought these tools &#8212; especially reference works &#8212; were a good idea. To paraphrase, &#8220;People only need a few good books, and people should read them over and over again. Things like encyclopedias only make the mind weaker since people area not exercising their memories.&#8221; Despite these claims, reference tools and the aparatus of printed books continue to exist and our venerable &#8220;sphere of knowledge&#8221; continues to grow.</p>
<p>Nobody can claim undertanding of a book if they read only the table of contents, flip through the pages, and glance at the index. Yes, they will have some understanding, but it will only be tertiary. We see the tools described in this proposal akin to tables of contents and back-of-the-book indexes. They are tools to find, get, use, and understand the data, information, and knowledge a book contains. They are a natural evolution considering the existence of books in digital forms. The services against texts described in this proposal enhance and supplement the reading process. They make it easier to compare &amp; contrast the content of single books or an entire corpus. They make it faster and easier to extract pertinate information. Like a back-of-the-book index, they make it easier to ask questions of a text and get answers quickly. The tools described in this proposal are not intended to be end-all and be-all of textual analysis. Instead, they are intended to be pointers to interesting ideas, and it is left up to the reader to flesh out and confirm the ideas after closer reading.</p>
<p>Digital humanities investigations and specifically text mining computing techniques like the ones in this proposal can be viewed as modern-day processes for dealing with and taking advantage of information overload. Digital humanists use computers to evaluate all aspects of human expression. Writing. Music. Theator. Dance. Etc. Text mining is a particular slant on the digital humanities applying this evaluation process against sets of words. We are simply advocating these proceses become integrated with library collections and services.</p>
<h2><a id="software">Software</a></h2>
<p>This section lists the software used to create our Beta-Sprint Propoal examples. All of the software is open source or freely accessible. None of the software is one-of-a-kind because each piece could be replaced by something else providing similar functionality.</p>
<ul>
<li><a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> &#8211; This is a collection and full-text index of approximately 14,000 public domain documents from the areas of American and English literature as well as Western philosophy. This &#8220;digital library&#8221;, created and maintined by the author since 1994, is a personal &#8220;sandbox&#8221; and laboratory for the implementation of new ideas in librarianship.</li>
<li><a href="http://code.google.com/apis/chart/">Google Charts</a> &#8211; Implemented through a Javascript API (application programmer interface), Google Charts enabled us to create the histograms in the &#8220;display location of word in a text service&#8221;. It also provided the guage-like graphics for the &#8220;measure size&#8221; and &#8220;measure difficulty&#8221; services.</li>
<li><a href="http://code.google.com/apis/maps/">Google Maps</a> &#8211; Another Javascript API, Google Maps was a part of the &#8220;plot on a map&#8221; service.</li>
<li><a href="http://search.cpan.org/dist/Lingua-Concordance/">Lingua::Concordance</a> &#8211; A Perl module, Lingua::Concordance was used to implement the &#8220;display in context&#8221; service. This module was written by the author.</li>
<li><a href="http://search.cpan.org/dist/Lingua-EN-Ngram/">Lingua::EN::Ngram</a> &#8211; Another Perl module written by the author, Lingua::EN::Ngram was used to count and tabulate the words and n-length phrases in a given text. It plays a crucial role &#8220;count word and phrase frequencies&#8221; service.</li>
<li><a href="http://search.cpan.org/dist/Lingua-EN-Fathom/">Lingua::Fathom</a> &#8211; This Perl module formed the basis of the &#8220;measure size&#8221; and &#8220;measure difficulty&#8221; services since its primary purpose is to calculate Fog, Flesch, and Kincaid readability scores.</li>
<li><a href="http://search.cpan.org/dist/Lingua-Stem-Snowball/">Lingua::Stem::Snowball</a> &#8211; This Perl module plays a role in the &#8220;measure concept&#8221; service. Given words as input, it outputs the words&#8217; roots (or &#8220;stems&#8221;). These roots were then searched against the index of Alex Catalogue to determine the number of documents (f) containing the root. This value was then used to calculate TFIDF.</li>
<li><a href="http://search.cpan.org/dist/Lingua-TreeTagger/">Lingua::TreeTagger</a> &#8211; This a Perl interface to set of cross-platform binary applications whose purpose is to classify parts-of-speech. Lingua::TreeTagger was used to compare &amp; contrast the ways pronouns were used in four classic works of literature.</li>
<li><a href="http://search.cpan.org/dist/MyLibrary/">MyLibrary</a> &#8211; This is a digital library framework written in Perl. At its core are modules to manage library resources, librarians, and patron descriptions. Inter-relationships between resources, librarians, and patrons can be controlled through the creation and maintenance of facet/term combinations. MyLibrary was co-written by the author and implemented the concept of facets before faceted browse became popular. MyLibrary, in combination with Solr, forms the functional basis of the Alex Catalogue.</li>
<li><a href="http://mbostock.github.com/protovis/">Protovis</a> &#8211; This is the Javascript library used to visualize the &#8220;display the proximity of a given word to other words&#8221; service.</li>
<li><a href="http://www.simile-widgets.org/timeline/">SIMILE Widgets Timeline</a> &#8211; This is a Javascript library used to display timelines. It was used in the &#8220;plot on a timeline&#8221; service.</li>
<li><a href="http://lucene.apache.org/solr/">Solr</a> &#8211; Solr is probably the most popular open source indexer in use by the library community, if not else where. It is used to index the full-text of the Alex Catalogue. It was also used to determine the value of f in the &#8220;measure concept&#8221; service.</li>
<li><a href="http://nlp.stanford.edu/software/CRF-NER.shtml">Stanford Named Entity Recognizer</a> &#8211; This is the set of Java programs used to extract the names and places from a document. These names and places were then linked to Wikipedia or plotted on a map &#8212; the &#8220;elaborate upon and visualize parts-of-speech&#8221; service.</li>
</ul>
<p>This short list of software can be used to create a myriad of enhanced library services and tools, but the specific pieces of software listed above are not so important in and of themselves. Instead, they represent types of software which already exist and are freely available for use by anybody. Services against texts facilitating use &amp; understand can be implemented with a wide variety of software applications. The services against texts outlined in this proposal are not limited to the software listed in this section.</p>
<h2><a id="implementation">Implementation how-to&#8217;s</a></h2>
<p>Putting into practice the services against text described in this proposal would not be a trivial task, but process is entirely feasible. This section outlines a number of implementation how-to&#8217;s.</p>
<h3><a id="measurement">Measurement services</a></h3>
<p>The measurement services (size, readability, and concept) would idealy be done against texts as they were added to the collection. The actual calculation of the size and readability scores are not difficult. All that is needed is the full text of the documents and software to do the counting. (Measuring concepts necessitates additional work since TFIDF requires a knowledge of the collection as a whole; measuring concepts can only be done once the bulk of the collection has been built. Measuring concepts is also a computationally intensive process.)</p>
<p>Instead, the challenge includes denoting locations to store the metadata, deciding whether or not to index the metadata, and figuring out how to display the metadata to the reader. The measurements themselves will be integers or decimal numbers. If MARC were the container for the bibliogrpahic data, then any one of a number of local notes could be used for storage. If a relational database were used, then additional fields could be used. If the DPLA wanted to enable the reader to limit or sort search results by any of the measurments, then the values will need to be indexed. We would be willing to guess the underlying indexer for the DPLA will be Solr, since it seems to be the current favorite. Indexing the measurements in Solr will be as easy as creating the necessary fields to a Solr configuration file, and adding the measurements to the fields as the balance of the bibliographic data is indexed. We would not suggest creating any visualizations of the measurements ahead of time, but rather on-the-fly and only as they were needed; the visualizations could probably be implemented using Javascript and embedded into the DPLA&#8217;s &#8220;catalog&#8221;.</p>
<h3><a id="timeline">Timeline services</a></h3>
<p>Like the measurements, plotting the publication dates or dates of conception on a timeline can be implemented using Javascript and embedded into the DPLA&#8217;s &#8220;catalog&#8221;. For serial literature (blogs, open access journal articles, Twitter feeds, etc.) the addition of meaningful dates will have already been done. For more more traditional library catalog materials (books), the addition of dates of conception will be labor intensive. Therefore such a thing might not be feasible. On the other hand, this might be a great opportunity to practice a bit of crowdsourcing. Consider making a game out of the process, and try to get people outside the DPLA to denote when Plato, Thoreau, Longfellow, and Whitman wrote their great works.</p>
<h3><a id="frequency">Frequency, concordance, proximity, and locations in a text services</a></h3>
<p>Implementing the frequency, concordance, proximity, and locations in a text services require no preprocessing. Instead these services can all be implemented on-the-fly by a program linked from the DPLA&#8217;s &#8220;catalog&#8221;. These services will require a single argument (a unique identifier) and some optional input parameters. Given a unique identifier, the program can look up basic bibliographic information from the catalog including the URL where the full-text resides, retrieve the full-text, and do the necessary processing. This URL could point to the local file system, or, if the network was deemed fast and reliable, the URL could point to the full-text in remote repositories such as the Internet Archive or the HathiTrust. These specific services against texts have been implemented in the Catholic Research Resources Alliance &#8220;Catholic Portal&#8221; application using &#8220;Analyze using text mining techniques&#8221; as the linked text. This is illustrated below:</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2011/08/dpla/crra.png" alt="crra" width="600" ><br />Screen shot of the &#8220;Catholic Portal&#8221;</td>
</tr>
</table>
<p>By the middle of September 2011 we expect the Hesburgh Libraries at the University of Notre Dame will have included very similar links in their catalog and &#8220;discovery system&#8221;. These links will provide access to frequency, concordance, and locations in a text services for sets of digitized Catholic pamphlets.</p>
<h3><a id="partsofspeech">Parts-of-speech services</a></h3>
<p>Based on our experience, the parts-of-speech services will require pre-processing. This is because the process of classifying words into categories of parts-of-speech is a time- and computing-intensive process. It does not seem feasible to extract the parts-of-speech from a document in real time.</p>
<p>To overcome this limitation, we classified our small sample of texts and saved the result in easily parsable text files. Our various scripts were then applied against these surrogates as opposed to the original documents. It should be noted that these surrogates, while not only computationally expensive, were also expensive in terms of disk space consuming more than double the space of the original.</p>
<p>We suggest one or two alternative strategies for the DPLA. First, determine what particular items from the DPLA&#8217;s collection may be the more popular. Once determined, have those items pre-processed outputting the surrogate files. These pre-processed items can then be used for demonstration purposes and generate interest in the parts-of-speech services. Second, when readers want to use these services against items that have not been pre-processed, then have the readers select their items, supply an email address, process the content, and notifiy the readers when the surrogates have been created. This second approach is akin to the just-in-time approach to collection development as opposed to the just-in-case philosophy.</p>
<h3><a id="priorities">Priorities</a></h3>
<p>Obviously, we think all of the services against texts outlined above are useful, but practically speaking, it is not feasible to implement all of them once. Instead we advocate the following phased approach:</p>
<ol>
<li><strong>Word/phrase frequency, concordance, proximity, and locations in a text services</strong> &#8211; We suggest these services be implemented first, mostly because they can be written outside any &#8220;discovery system&#8221; hosted by the DPLA. Second, these services are the root of many of the other services, so it will be easier to build the others once these have been made available.</li>
<li><strong>Measurments of size and readability</strong> &#8211; Calculating the values of size and readability on-the-fly is possible but is limiting in functionality. Pre-processing these values is relatively easy, and incorporating the result into the &#8220;discovery system&#8221; has many benefits. This is why we see these two services as the second highest priority.</li>
<li><strong>Plot dates of publication on a timeline</strong> &#8211; Plotting dates will be easy enough if the content in question is of a serial nature and the dates represent &#8220;dates of conception&#8221;. But we are not sure content of a serial nature (blog postings, open access journal literature, Twitter feeds, etc.) will be included in the DPLA&#8217;s collection. Consequently, we suggest this service be implemented third.</li>
<li><strong>Parts-of-speech analysis</strong> &#8211; Implementing services based on parts-of-speech will almost certainly require pre-processing as increase local storage requirements. While these costs are withing the DPLA&#8217;s control, they are expenses that may inhibit implementation feasibility. That is why they are listed fourth in the priority order.</li>
<li><strong>After crowdsourcing the content, plot dates of conception on a timeline</strong> &#8211; We think this is one of the easier and more interesting services, especially if the dates in question are &#8220;dates of conception&#8221; for books, but alas, this data is not readily available. After figuring out how to acquire dates of conception for traditional catalog-like material &#8212; through something like crowdsourcing &#8212; implementing this service my be very enlightinging.</li>
<li><strong>Measure ideas</strong> &#8211; This is probably the most avant-garde service described in the proposal. Its implementation can only be done after the bulk of the DPLA&#8217;s collection has been created. Furthermore, calculating TFIDF for a set of related keyword is computationally expensive. This can be a truly useful and innovative service, especially if the reader were able to create a personal concept for comparison. But because of the time and expense, we advocate this service be implemented last.</li>
</ol>
<h2><a id="quick">Quick links</a></h2>
<p>This section lists most of the services outlined in the proposal as well as links to blog postings and example implementations.</p>
<h3><a id="wordfrequencies">Word frequencies, concordances</a></h3>
<p>These URLs point to services generating word frequencies, concordances, histograms illustrating word locations, and network diagrams illustrating word proximities for <cite>Walden</cite> and <cite>Ulysses</cite>.</p>
<ul>
<li><a href="http://infomotions.com/sandbox/concordance/?id=thoreau-walden-186">http://infomotions.com/sandbox/concordance/?id=thoreau-walden-186</a></li>
<li><a href="http://infomotions.com/sandbox/concordance/?id=etext4300">http://infomotions.com/sandbox/concordance/?id=etext4300</a></li>
</ul>
<h3><a id="wordlocations">Word/phrase locations</a></h3>
<p>Using the text mining techniques built into the &#8220;Catholic Portal&#8221; the reader can see where the words/phrases &#8220;catholic&#8221;, &#8220;lake erie&#8221;, and &#8220;niagara falls&#8221; are used in the text.</p>
<ul>
<li><a href="http://www.catholicresearch.net/concordances/?id=tormarc_lettersofirishca00iris">http://www.catholicresearch.net/concordances/?id=tormarc_lettersofirishca00iris</a></li>
</ul>
<h3><a id="proximitydisplays">Proximity displays</a></h3>
<p>Using network diagrams, the reader can see what words Thoreau uses &#8220;in the same breath&#8221; when he mentions the word &#8220;woodchuck&#8221;. These proximity displays are also incorporated into just about every item in the Alex Catalogue</p>
<ul>
<li><a href="./../2011/01/visualizing-co-occurrences-with-protovis/index.html">./../2011/01/visualizing-co-occurrences-with-protovis/index.html</a></li>
</ul>
<h3><a id="plato">Plato, Aristotle, and Shakespeare</a></h3>
<p>This blog posting first tabulates the most frequently used words by the authors, as well as their definitions of &#8220;man&#8221; and a &#8220;good man&#8221;.</p>
<ul>
<li><a href="./../2010/06/the-next-next-generation-library-catalog/index.html">./../2010/06/the-next-next-generation-library-catalog/index.html</a></li>
</ul>
<h3><a id="portal">Catholic Portal</a></h3>
<p>The &#8220;Portal&#8221; is collection of rare, uncommon, and infrequently held materials brought together to facilitate Catholic studies. It includes some full text materials, and they are linked to text mining services.</p>
<ul>
<li><a href="http://www.catholicresearch.net/Record/tormarc_lettersofirishca00iris">http://www.catholicresearch.net/Record/tormarc_lettersofirishca00iris</a></li>
</ul>
<h3><a id="measuresize2">Measuring size</a></h3>
<p>In this blog posting a few works by Charles Dickens are compared &amp; contrasted. The comparisons include size and word/phrase usage.</p>
<ul>
<li><a href="./../2010/12/text-mining-charles-dickens/index.html">./../2010/12/text-mining-charles-dickens/index.html</a></li>
</ul>
<h3><a id="plottimeline2">Plot on a timeline</a></h3>
<p>This blog posting describes how a timeline was created by plotting the publication dates of RSS feeds.</p>
<ul>
<li><a href="./../2010/12/mits-simile-timeline-widget/index.html">./../2010/12/mits-simile-timeline-widget/index.html</a></li>
</ul>
<h3><a id="lookup">Lookup in Wikipedia and plot on a map</a></h3>
<p>After extracting the names and places from a text, this service grabs Linked Data from DBedia, displays a descriptive paragraph, and allows the reader to look the name or place up in Wikipedia and/or plot it on a world map. This service is specifically designed for mobile devices.</p>
<ul>
<li><a href="http://dh.crc.nd.edu/sandbox/ner/mobile.html">http://dh.crc.nd.edu/sandbox/ner/mobile.html</a></li>
</ul>
<h3><a id="analysis">Parts-of-speech analysis</a></h3>
<p>This blog posting elaborates on how various parts of speech were used in a number of selected classic works.</p>
<ul>
<li><a href="./../2011/02/forays-into-parts-of-speech/index.html">./../2011/02/forays-into-parts-of-speech/index.html</a></li>
</ul>
<h3><a id="ideas">Measuring ideas</a></h3>
<p>The &#8220;greatness&#8221; of the Great Books was evaluated in a number of blog postings, and the two listed here give a good overview of the methodology.</p>
<ul>
<li><a href="./../2011/03/how-great/index.html">./../2011/03/how-great/index.html</a></li>
<li><a href="./../2010/06/measuring-the-great-books/index.html">./../2010/06/measuring-the-great-books/index.html</a></li>
</ul>
<h3><a id="summary">Summary</a></h3>
<p>In our mind, the combination of digital humanities computing techniques &#8212; like all the services against texts outined above &#8212; and the practices of librarianship would be a marriage made in heaven. By supplementing the DPLA&#8217;s collections with full text materials and then enhancing its systems to facilitate text mining and natural language processing, the DPLA can not only make it easier for readers to find data and information, but it can also make that data and information easier to use &amp; understand.</p>
<p>We know the ideas outlined in this proposal are not typical library functions. But we also apprehend the need to take into account the changing nature of the information landscape. Digital content lends itself to a myriad of new possibilities. We are not saying analog forms of books and journals are antiquated nor useless. No, far from it. Instead, we believe the library profession has figured out pretty well how to exploit and take advantage of that medium and its metadata. On the other hand, the posibilities for full text digital content are still mostly unexplored and represent a vast untapped potencial. Building on and expanding on the education mission of libraries, services against texts may be a niche the profession &#8212; and the DPLA &#8212; can help fill. The services &amp; tools described in this proposal are really only examples. Any number of additional services against texts could be implemented. We are only limited by our ability to think of action words denoting the things people want to do with texts once they find &amp; get them. By augmenting a library&#8217;s traditional functions surrounding collection and sevices with the sorts of things described above, the role of libraries can expand and evolve to include use &amp; understand.</p>
<h3><a id="author">About the author</a></h3>
<p>Eric Lease Morgan considers himself to be a librarian first and a computer user second. His professional goal is to discover new ways to use computers to provide better library service. He has a BA in Philosophy from Bethany College in West Virginia (1982), and an MIS from Drexel University in Philadelphia (1987).</p>
<p>While he has been a practicing librarian for more than twenty years he has been writing software for more than thirty. He wrote his first library catalog in 1989, and it won him an award from Computers in Libraries Magazine. In a reaction to the &#8220;serials pricing crisis&#8221; he implemented the Mr. Serials Process to collect, organize, archive, index, and disseminate electronic journals. For these efforts he was awarded the Bowker/Ulrich&#8217;s Serials Librarianship Award in 2002. An advocate of open source software and open access publishing since before the phrases were coined, just about all of his software and publications are freely available online. One of his first pieces of open source software was a database-driven application called MyLibrary, a term which has become a part of the library vernacular.</p>
<p>As a member of the LITA/ALA Top Technology Trends panel for more than ten years, as well as the owner/moderator of a number of library-related mailing lists (Code4Lib, NGC4Lib, and Usability4Lib), Eric has his fingers on the pulse of the library profession. He coined the phrase &#8220;&#8216;next-generation&#8217; library catalog&#8221;. More recently, Eric has been applying text mining and other digital humanities computing techniques to his Alex Catalogue of Electronic Texts which he has been maintaining since 1994. Eric relishes all aspects of librarianship. He even makes and binds his own books. In his spare time, Eric plays blues guitar and Baroque recorder. He also enjoys folding origami, photography, growing roses, and fishing.</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2011/09/dpla/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Raising awareness of open access publications</title>
		<link>./../2011/08/raising-awareness-of-open-access-publications/index.html</link>
				<pubDate>Tue, 02 Aug 2011 15:51:44 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[open access]]></category>

		<guid isPermaLink="false">./../index.html?p=830</guid>
				<description><![CDATA[I was asked the other day about ways to make people aware of open access journal publications, and this posting echoes much of my response. Thanks again for taking the time this morning to discuss some of the ways open-access journals are using social media and other technology to distribute content and engage readers. I [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>I was asked the other day about ways to make people aware of open access journal publications, and this posting echoes much of my response.</p>
<blockquote><p>Thanks again for taking the time this morning to discuss some of the ways open-access journals are using social media and other technology to distribute content and engage readers. I am on the board of [name deleted] recently transitioned to an open access format, and we are looking to maximize the capabilities of this new, free, and on-line format. To that end, any additional insights you might be able to share about effective social media applications for open-access sources, or other exemplary electronic journals you may be able to recommend, would be most helpful.</p></blockquote>
<p>As you know, I have not been ignoring you as much as I have been out of town. Thank you for your patience.</p>
<p>I am only able to share my personal experiences here, and they are not intended to be standards of best practices. Yet, here are some ideas:</p>
<ul>
<li><strong>Exploit RSS</strong> &#8211; RSS is an XML technology used to syndicate content. It is the foundation of blogs. Do what you can to make sure your journal content is syndicated via RSS. This way people can &#8220;subscribe&#8221; to your journal and they will get alerts when new content becomes available.</li>
<li><strong>Create a mailing list</strong> &#8211; On your journal&#8217;s site, allow people to submit their email addresses. Keep these email addresses in a list (database) and when new issues of your journal are created, send messages to the people in the list. Do not use the list for any other purpose.</li>
<li><strong>Advertise</strong> &#8211; Identify mailing lists where discussions take place surrounding the topic of your journal. When your journal creates new issues, send a table of contents sort of message to the mailing lists.</li>
<li><strong>Blog about your journal</strong> &#8211; If you or any of your colleagues who edit the journal blog, then write up things you find interesting in your journal in your blog. As long as your write up are sincere, people will not see this sort of things as self-promotion.</li>
<li><strong>Use Facebook &amp; Twitter</strong> &#8211; Do you and your editorial colleagues use Facebook or Twitter? Maybe your journal can have a Facebook page and/or a Twitter account. In either case, post messages about your journal on social networks.</li>
<li><strong>Exploit SEO</strong> &#8211; SEO is code for &#8220;search engine optimization&#8221; which itself is code for &#8220;make it easy for Google to crawl your site&#8221;. If Google can easily crawl your site, then your content will more likely appear in Google search results, and therefore you will get more exposure.</li>
<li><strong>Be regular</strong> &#8211; Publishing serial publications (blogs, journal articles, etc.) is difficult, but I believe your readers will build up trust for you if you make content available on a consistent basis. Otherwise, I think your publication will loose credibility.</li>
<li><strong>Make your content searchable</strong> &#8211; When people come to your website, make sure people can easily search &amp; browse the backfires. People will say, &#8220;I remember seeing an article on that topic at… I wonder if I can find it again?&#8221; Put another way, make sure your website is &#8220;usable&#8221;.</li>
<li><strong>Allow for comments</strong> &#8211; While the articles you publish go through some sort of review, make it possible for the readership to comment as well. We no longer live in isolation, nor are we governed by the centralized elite. It is increasingly about the wisdom of the crowd.</li>
</ul>
<p>The right software makes many of the tasks I outlined easier. I suggest you take a look at <a href="http://pkp.sfu.ca/?q=ojs">Open Journal Systems</a>.</p>
<p>Good luck, and I commend you for going the open access route.</p>
</div>
]]></content:encoded>
										</item>
		<item>
		<title>Poor man&#8217;s restoration</title>
		<link>./../2011/07/poor-mans-restoration/index.html</link>
				<pubDate>Mon, 25 Jul 2011 15:05:28 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=826</guid>
				<description><![CDATA[This posting describes a poor man&#8217;s restoration process. Yesterday, I spent about an hour and a half writing down a work/professional to-do list intended to span the next few months. I prioritized things, elaborated on things, and felt I like had the good beginnings of an implementable plan. I put the fruits of my labors [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting describes a poor man&#8217;s restoration process.</p>
<p>Yesterday, I spent about an hour and a half writing down a work/professional to-do list intended to span the next few months. I prioritized things, elaborated on things, and felt I like had the good beginnings of an implementable plan.</p>
<p>I put the fruits of my labors into my pocket and then went rowing around in my boat. After my swim and on the way back to the dock I realized my to-do list was still in my pocket. Sigh. After pulling it out I and seeing the state it was in, I decided to try to salvage it. Opening it up was difficult. Naturally, the paper tore, but I laid it down as flat as I could. I went home to get a few pieces of paper to support and sandwich my soaked to-do list. For the next few hours, as the paper dried in the hot weather we are experiencing, I continually flipped and turned the to-do list so it would not stick to its supports.</p>
<table align='center'>
<tr align='center'>
<td>
<img src='./../wp-content/uploads/2011/07/restoration/page-1.jpeg' alt="" width="250" /><br /><a href="./../wp-content/uploads/2011/07/restoration/page-1.jpeg">Page #1</a>
</td>
<td>
<img src='./../wp-content/uploads/2011/07/restoration/page-2.jpeg'  width="250" /><br /><a href="./../wp-content/uploads/2011/07/restoration/page-2.jpeg">Page #2</a>
</td>
</tr>
</table>
<p>This morning, after the list was was a dry as it was going to be, I photographed both sides of it, did my best color-correct the image, converted the whole thing into a <a href="./../wp-content/uploads/2011/07/restoration/to-do.pdf">PDF file</a>, and printed the result. While the it looks like heck, the time I spent salvaging my intellectual efforts were much shorter than the time I would have spent recreating the list. Like a blues, such recreations are never exactly the same as the originals. But it would have been a whole lot better if I hadn&#8217;t gone swimming with my to-do list in the first place.</p>
<p>I might not have done this restoration process in the &#8220;best&#8221; way, but that does not detract from the effort itself. I really do enjoy all aspects of library work.</p>
]]></content:encoded>
										</item>
		<item>
		<title>My DPLA Beta-Sprint Proposal: The movie</title>
		<link>./../2011/07/my-dpla-beta-sprint-proposal-the-movie/index.html</link>
				<comments>./../2011/07/my-dpla-beta-sprint-proposal-the-movie/index.html#comments</comments>
				<pubDate>Fri, 22 Jul 2011 18:29:44 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[DPLA (Digital Public Library of America)]]></category>

		<guid isPermaLink="false">./../index.html?p=818</guid>
				<description><![CDATA[Please see my updated and more complete Digital Public Library of America Beta-Sprint Proposal. The following posting is/was a precursor. The organizers of the Digital Public Library of America asked the Beta-Sprint Proposers to create a video outlining the progress of their work. Below is the script of my video as well as the video [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><em>Please see my <a href="./../2011/09/dpla/index.html">updated and more complete Digital Public Library of America Beta-Sprint Proposal</a>. The following posting is/was a precursor.</em></p>
<p>The organizers of the <a http://cyber.law.harvard.edu/research/dpla>Digital Public Library of America</a> asked the Beta-Sprint Proposers to create a video outlining the progress of their work. Below is the script of my video as well as the video itself. Be gentle with me. Video editing is difficult.</p>
<blockquote>
<h2>Introduction</h2>
<p>My name is Eric Morgan. I am a Digital Projects Librarian here at the University of Notre Dame, and I am going to outline, ever so briefly, my Digital Public Library of America Beta-Sprint Proposal. In a nutshell, the Proposal describes, illustrates, and demonstrates how the core functionality of a library can move away from &#8220;find &amp; get&#8221; and towards &#8220;use &amp; understand&#8221;.</p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/SnmxKxQlb9g" frameborder="0" allowfullscreen></iframe></p>
<h2>Find &amp; get</h2>
<p>With the advent of ubiquitous and globally networked computers, the characteristics of data and information have fundamentally changed. More specifically, things like books and journals &#8212; the traditional meat and potatoes of libraries &#8212; no longer need to be manifested in analog forms, and their digital manifestations lend themselves to new functionality. For example, digital versions of books and journals can be duplicated exactly, and they are much less limited to distinct locations in space and time. This, in turn, has made things like the search engines of Google, Yahoo, and Microsoft a reality. Compared to twenty years ago, this has made the problem of find &amp; get much less acute. While the problem of find &amp; get will never completely be resolved, many people feel the problem is addressed simply enough. Enter a few words into a search box, click Go, and select items of interest.</p>
<h2>Use &amp; undertand</h2>
<p>The problem of find &amp; get is always a means to an end, and not the end itself. People want to do things with the content they find. I call these things &#8220;services against texts&#8221; and they are denoted by action verbs such as analyze, annotate, cite, compare &amp; contrast, confirm, delete, discuss, evaluate, find opposite, find similar, graph &amp; visualize, learn from, plot on a map, purchase, rate, read, review, save, share, summarize, tag, trace idea, or transform. Thus, the problem of find &amp; get is evolving into the problem of use &amp; understand. I ask myself, &#8220;What services can be provisioned to make the sense of all the content one finds on the Internet or in a library?&#8221; In my opinion, the answer lies in the combination of traditional library principles and the application of computer science. Because libraries are expected to know the particular information needs of their constituents, libraries are uniquely positioned to address the problem of use &amp; understand. Not Google. Not Yahoo. Not Microsoft.</p>
<h2>Examples</h2>
<p>How do we go about doing this? We begin by exploiting the characteristics of the increasingly available of full text content. Instead of denoting the length of a book by the number of pages it contains, we measure it by the number of words. Thus, we will be able to unambiguously compare &amp; contrast the lengths of documents. By analyzing the lengths of paragraphs, the lengths of sentences, and the lengths of words in a document, we will be able to calculate readability scores, and we will be better able to compare &amp; contrast the intended reading levels of a book or article. By tabulating the words or phrases in multiple documents and then comparing those tabulations with each other libraries will make it easier for readers to learn about the similarities and differences between items in a corpus. Such a service will enable people to answer questions like, &#8220;How does the use of the phrase &#8216;good man&#8217; differ between Plato, Aristotle, and Shakespeare?&#8221; If there were tools aware of the named people and places in a document, then a reader&#8217;s experience could be enriched with dynamic annotations and plots on a world map. Our ability to come up with ideas for additional services against texts is only limited by our imagination and our ability to understand the information needs of our clientele. My Beta Sprint Proposal demonstrates how many of these ideas can be implemented today and with the currently available technology.
</p>
<h2>Thank you</h2>
<p>Thank you for the opportunity to share some of my ideas about the Digital Public Library of America, my Beta Sprint Proposal, and the role of libraries in the near future.</p>
</blockquote>
]]></content:encoded>
							<wfw:commentRss>./../2011/07/my-dpla-beta-sprint-proposal-the-movie/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>DPLA Beta Sprint Submission</title>
		<link>./../2011/06/dpla-beta-sprint-submission/index.html</link>
				<pubDate>Mon, 20 Jun 2011 20:38:26 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=814</guid>
				<description><![CDATA[I decided to give it a whirl and particpate in the DPLA Beta Sprint, and below is my submission: DPLA Beta Sprint Submission My DPLA Beta Sprint submission will describe and demonstrate how the digitized versions of library collections can be made more useful through the application of text mining and various other digital humanities [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I decided to give it a whirl and particpate in the <a href="http://blogs.law.harvard.edu/dpla/">DPLA Beta Sprint</a>, and below is my submission:</p>
<blockquote><p>
DPLA Beta Sprint Submission</p>
<p>My DPLA Beta Sprint submission will describe and demonstrate how the digitized versions of library collections can be made more useful through the application of text mining and various other digital humanities computing techniques.</p>
<p>Full text content abounds, and full text indexing techniques have matured. While the problem of discovery will never be completely solved, it is much less acute than it was even a decade ago. Whether the library profession or academia believes it or not, most people do not feel as if they have a problem finding data, information, and knowledge. To them it is as easy as entering a few words or phrases into a search box and clicking Go.</p>
<p>It is now time to move beyond the problem of find and spend increased efforts trying to solve the problem of use. What does one do with all the information they find and acquire? How can it be put into the context of the reader? What actions can the reader apply against the content they find? How can it be compared &amp; contrasted? What makes one piece of information &#8212; such as a book, an article, a chapter, or even a paragraph &#8212; more significant than another? How might the information at hand be used to solve problems or create new insights?</p>
<p>There is no single answer to these questions, but this submission will describe and demonstrate one set of possibilities. It will assume the existence of full text content of just about any type &#8212; such as books the Internet Archive, open access journals, or blog postings. It will outline how these texts can be analyzed to find patterns, extract themes, and identify anomalies. It will describe how entire corpora or search results can be post-processed to not only refine the discovery process but also make sense of the results and enable the reader to quickly grasp the essence of textual documents. Since actions speak louder than words, this submission will also present a number of loosely joined applications demonstrating how this analysis can be implemented through Web browsers and/or portable computing devices such as tablet computers.</p>
<p>By exploiting the current environment &#8212; full text content coupled with ubiquitous computing horsepower &#8212; the DPLA can demonstrate to the wider community how libraries can remain relevant in the current century. This submission will describe and demonstrate a facet of that vision.</p></blockquote>
]]></content:encoded>
										</item>
		<item>
		<title>Next-generation library catalogs, or &#8216;Are we there yet?&#8217;</title>
		<link>./../2011/06/next-generation-library-catalogs-or-are-we-there-yet/index.html</link>
				<comments>./../2011/06/next-generation-library-catalogs-or-are-we-there-yet/index.html#comments</comments>
				<pubDate>Wed, 01 Jun 2011 14:39:40 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[services against texts]]></category>
		<category><![CDATA[text mining]]></category>

		<guid isPermaLink="false">./../index.html?p=808</guid>
				<description><![CDATA[Next-generation library catalogs are really indexes, not catalogs, and increasingly the popular name for such things is &#8220;discovery system&#8221;. Examples include VuFind, Primo combined with Primo Central, Blacklight, Summon, and to a lesser extent Koha, Evergreen, OLE, and XC. While this may be a well-accepted summary of the situation, I really do not think it [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
Next-generation library catalogs are really indexes, not catalogs, and increasingly the popular name for such things is &#8220;discovery system&#8221;. Examples include VuFind, Primo combined with Primo Central, Blacklight, Summon, and to a lesser extent Koha, Evergreen, OLE, and XC. While this may be a well-accepted summary of the situation, I really do not think it goes far enough. Indexers address the problem of find, but in my opinion, find is not the problem to be solved. Everybody can find. Most people believe Google has all but solved that problem. Instead, the problem to solve is use. Just as much as people want to find information, they want to use it, to put it into context, and to understand it. With the advent of so much full text content, the problem of find is much easier to solve than it used to be. What is needed is a &#8220;next-generation&#8221; library catalog including tools and interfaces designed to make the use and understanding of information easier. Both the &#8220;Catholic Portal&#8221; and the discovery systems of the Hesburgh Libraries at the University of Notre Dame are beginning to implement some of these ideas. When it comes to &#8220;next-generation&#8221; library catalogs we might ask the question, &#8220;Are we there yet?&#8221;. I think the answer is, &#8220;No, not yet.&#8221;
</p>
<p>
This text was originally written for a presentation to the Rare Books and Manuscripts Section of the American Library Association during a preconference meeting, June 23, 2011. It is available in a number of formats including this blog posting, a <a href="./../wp-content/uploads/2011/05/rbms/are-we-there-yet.pdf">one-page PDF document</a> intended as a handout, and an <a href="./../wp-content/uploads/2011/05/rbms/are-we-there-yet.epub">ePub file</a>.
</p>
<h2>Numbers of choices</h2>
<p>
There are currently a number of discovery systems from which a library can choose, and it is very important to note that they have more things in common than differences. VuFind, Primo combined with Primo Central, Summon, and Blacklight are all essentially indexer/search engine combinations. Even more, they all use same &#8220;free&#8221; and open source software &#8212; Lucene &#8212; at their core. All of them take some sort of bibliographic data (MARC, EAD, metadata describing journal articles, etc.), stuff it into a data structure (made up authors, titles, key words, and control numbers), index it in the way the information retrieval community has been advocating for at least the past twenty years, and finally, provide a way to query the index with either one-box-one-button or fielded interfaces. Everything else &#8212; facets, cover art, reviews, favorites, etc. &#8212; is window dressing. When and if any sort of OCLC/EBSCOHost combination manifests itself, I&#8217;m sure the underlying technology will be very similar.
</p>
<p>
Koha, Evergreen, and OLE (Open Library Environment) are more traditional integrated library systems. They automate traditional library processes. Acquisitions. Cataloging. Serials Control. Circulation. Etc. They are database applications, not indexers, designed to manage an inventory. Search &#8212; the &#8220;OPAC&#8221; &#8212; is one of these processes. The primary difference between these applications and the integrated library systems of the recent past is their distribution mechanism. Koha and Evergreen are open source software, and therefore as &#8220;free as a free kitten&#8221;. OLE is still in development, but will be distributed as open source. Everything else is/was licensed for a fee.
</p>
<p>
When talking about &#8220;next-generation&#8221; library catalogs and &#8220;discovery systems&#8221;, many people allude to the Extensible Catalog (XC) which is not catalog nor an index. More accurately, it is system enabling and empowering the library community to manage and transform its bibliographic data on a massive scale. It offer ways for a library to harvest content from OAI-PMH data repositories (such as library catalogs), do extensive find/replace or enhancement operations against the harvested data, expose the result via OAI-PMH again, and finally, support the NCIP protocol so the circulation status of items found in an index can be determined. XC is middleware designed to provide functionality between an integrated library system and discovery system.
</p>
<h2>Find is not the problem</h2>
<p>
With the availability of wide-spread full text indexing, the need to organize content according to a classification system &#8212; to catalog items &#8212; has diminished. This need is not negated, but it is not as necessary as it used to be. In the past, without the availability of wide-spread full text indexing, classification systems provided two functions: 1) to organize the collection into a coherent whole with sub-parts, and 2) to surrogate physical items enumerated in a list. The aggregate of metadata elements &#8212; whether they be titles, authors, contributors, key words, subject terms, etc. &#8212; acted as &#8220;dummies&#8221; for the physical item containing the information. They are/were pointers to the book, the journal article, the piece of sheet music, etc. With the advent of wide-spread full text indexing, these two functions are not needed as much as they were in the past. Through the use of statistical analysis and direct access to the thing itself, indexers/search engines make the organization and discovery of information easier and less expenses. Note, I did not say &#8220;better&#8221;, just simpler and with greater efficiency.
</p>
<p>
Because wide-spread full text indexing abounds, the problem of find is not as acute as it used to be. In my opinion, it is time to move away from the problem of find and towards the problem of use. What does a person do with the information once they find and acquire it? Does it make sense? Is it valid? Does it have a relationship other things, and if so, then what is that relationship and how does it compare? If these relationships are explored, then what new knowledge might one uncover, or what existing problem might be solved? These are the questions of use. Find is a means to an end, not the end itself. Find is a library problem. Use the problem everybody else wants to solve.
</p>
<p>
True, classification systems provide a means to discover relationships between information objects, but the predominate classification systems and processes employed today are pre-coordinated and maintained by institutions. As such they posit realities that may or may not match the cognitive perception of today&#8217;s readers. Moreover, they are manually applied to information objects. This makes the process literally slow and laborious. Compared to post-coordinated and automated techniques, the manual process of applying classification to information objects is deemed expensive and of diminishing practical use. Put another way, the application of classification systems against information objects today is like icing on a cake, leather trim in a car, or a cherry on a ice cream sundae. They make their associated things richer, but they are not essencial their core purpose. They are extra.
</p>
<h2>Text mining</h2>
<p>
Through the use of a process called text mining, it is possible to provide new services against individual items in a collection as well as to collections as a whole. Such services can make information more useful.
</p>
<p>
Broadly defined, text mining is an automated process for analyzing written works. Rooted in linguistics, it makes the assumption that language &#8212; specifically written language &#8212; adheres to sets of loosely defined norms, and these norms are manifested in combinations of words, phrases, sentences, lines of a poem, paragraphs, stanzas, chapters, works, corpora, etc. Additionally, linguistics (and therefore text mining) also assumes these manifestations embody human expressions, meanings, and truth. By systematically examining the manifestations of written language as if they were natural objects, the expressions, meanings, and truths of a work may be postulated. Such is the art and science of text mining.
</p>
<p>
The process of text mining begins with counting, specifically, counting the number of words (n) in a document. This results in a fact &#8212; a given document is n words long. By comparing n across a given corpus of documents, new facts can be derived, such as one document is longer than another, shorter than another, or close to an average length. Once words have been counted they can be tallied. The result is a list of words and their associated frequencies. Some words occur often. Others occur infrequently. The examination of such a list tells a reader something about the given document. The comparison of frequency lists between documents tells the reader even more. By comparing the lengths of documents, the frequency of words, and their existence in an entire corpus a reader can learn of the statistical significance of given words. Thus, the reader can begin to determine the &#8220;aboutness&#8221; of a given document. This rudimentary counting process forms the heart of most relevancy ranking algorithms of indexing applications and is called &#8220;term frequency inverse document frequency&#8221; or TFIDF.
</p>
<p>
Not only can words be tallied but they can be grouped into different parts-of-speech (POS): nouns, pronouns, verbs, adjectives, adverbs, prepositions, function (&#8220;stop&#8221;) words, etc. While it may be interesting to examine the proportional use of each POS, it may be more interesting to examine the individual words in each POS. Are the personal pronouns singular or plural? Are they feminine or masculine? Are the names of places centered around a particular geographic location? Do these places exist in the current time, a time in the past, or a time in future? Compared to other documents, is there a relatively higher or lower use of color words, action verbs, names of famous people, or sets of words surrounding a particular theme? Knowing the answers to these questions can be quite informative. Just as these processes can be applied to words they can be applied to phrases, sentences, paragraphs, etc. The results can be charted, graphed, and visualized. They can be used to quickly characterize single documents or collections of documents.
</p>
<p>
The results of text mining processes are not to be taken as representations of truth, any more than the application of Library of Congress Subject Headings completely denote the aboutness of text. Text mining builds on the inherent patterns of language, but language is fluid and ambiguous. Therefore the results of text mining lend themselves to interpretation. The results of text mining are intended to be indicators, guides, and points of reference, and all of these things are expected to be interpreted and then used to explain, describe, and predict. Nor is text mining intended to be a replacement for the more traditional process of close reading. The results of text mining are akin to a book&#8217;s table of contents and back-of-the-book index. They outline, enumerate, and summarize. Text mining does the same. It is a form of analysis and a way to deal with information overload.
</p>
<p>
Assuming the availability of increasing numbers of full text information objects, a library&#8217;s &#8220;discovery system&#8221; could easily incorporate text mining for the purposes of enhancing the traditional cataloging process as well as increasing the usefulness of found material. In my opinion, this is the essence of a true &#8220;next-generation&#8221; library catalog.
</p>
<h2>Two examples</h2>
<p>
An organization called the Catholic Research Resources Alliance (CRRA) brings together rare, uncommon, and infrequently held materials into a thing colloquially called the &#8220;Catholic Portal&#8221;. The content for the Portal comes from a variety of metadata formats (MARC, EAD, and Dublin Core) harvested from participating member institutions. Besides supporting the Web 2.0 features we have all come to expect, it also provides item level indexing of finding aids, direct access to digitized materials, and concordancing services. The inclusion of concordance features makes the Portal more than the usual discovery system.
</p>
<p>
For example, the St. Michael&#8217;s College at the University of Toronto is a member of the CRRA. They have been working with the Internet Archive for a number years, and consequently measurable portions of their collection have been digitized. After being given hundreds of Internet Archive unique identifiers, a program was written which mirrored digital content and bibliographic descriptions (MARC records) locally. The MARC records were ingested into the Portal (an implementation of VuFind), and search results were enhanced to include links to both the locally mirrored content as well as the original digital surrogate. In this way, the Portal is pretty much just like any other discovery system. But the bibliographic displays go further because they contain links to text mining interfaces.
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2011/05/rbms/portal.png" alt="the catholic portal" width="450" /><br />
<br />
The &#8220;Catholic Portal&#8221;
</p>
<p>
Through these interfaces, the reader can learn many things. For example, in a book called Letters Of An Irish Catholic Layman the word &#8220;catholic&#8221; is one of the most frequently used. Using the concordance, the reader can see that &#8220;Protestants and Roman Catholics are as wide as the poles asunder&#8221;, and &#8220;good Catholics are not alarmed, as they should be, at the perverseness with which wicked men labor to inspire the minds of all, but especially of youth, with notions contrary to Catholic doctrine&#8221;. This is no big surprise, but instead a confirmation. (No puns intended.) On the other hand, some of the statistically most significant two-word phrases are geographic identities (&#8220;upper canada&#8221;, &#8220;new york&#8221;, &#8220;lake erie&#8221;, and &#8220;niagara falls&#8221;) . This is interesting because such things are not denoted in the bibliographic metadata. Moreover, a histogram plotting where in the document &#8220;niagra fals&#8221; occurs can be juxtaposed with a similar histogram for the word &#8220;catholic&#8221;. Why does the author talk about Catholics when they do not talk about upstate New York? Text mining makes it easier to bring these observations to light in a quick and easy-to-use manner.
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2011/05/rbms/concordance.png" alt="concordance" width="450" /><br />
<br />
Concordance highlighting geographic two-word phrases
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2011/05/rbms/catholic.png" alt="where is catholic" width="450" /><br />
<br />
Where the word &#8220;catholic&#8221; is located in the text
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2011/05/rbms/niagra-falls.png" alt="niagra falls" width="450" /><br />
<br />
Where &#8220;niagra falls&#8221; is located in the text
</p>
<p>
Some work being done in the The Hesburgh Libraries at the University of Notre Dame is in the same vein. Specifically, the Libraries is scanning Catholic pamphlets, curating the resulting TIFF images, binding them together to make PDF documents, embedding the results of OCR (optical character recognition) into the PDFs, saving the PDFs on a Web server, linking to the PDFs from the catalog and discovery system, and finally, linking to text mining services from the catalog and discovery system. Consequently, once found, the reader will be able to download a digitized version of a pamphlet, print it, read it in the usual way, and analyze it for patterns and meanings in ways that may have been overlooked through the use of traditional analytic methods.
</p>
<h2>Are we there yet?</h2>
<p>
Are we there yet? Has the library profession solved the problem of &#8220;next-generation&#8221; library catalogs and discovery systems? In my opinion, the answer is, &#8220;No.&#8221; To date the profession continues to automate its existing processes without truly taking advantage of computer technology. The integrated library systems are more open than they used to be. Consequently control over the way they operate is being transfered from vendors to the library community. The OPACs of yesterday are being replaced with the discovery systems of today. They are easier to use and better meet readers&#8217; desires. They are not perfect. They are not catalogs. But they do make the process of find more efficient.
</p>
<p>
On the other hand, our existing systems do not take advantage of the current environment. They do not exploit the wide array and inherent functionality of available full text literature. Think of the millions of books freely available from the Internet Archive, Google Books, the HathiTrust, and Project Gutenberg. Think of the thousands of open access journal titles. Think about all the government documents, technical reports, theses &#038; dissertations, conference proceedings, blogs, wikis, mailing list archives, and even &#8220;tweets&#8221; freely available on the Web. Even without the content available through licensing, this content has the makings of a significant library of any type. The next step is to provide enhanced services against this content &#8212; services that go beyond discovery and access. Once done, the library profession moves away from being a warehouse to an online place where data and information can be put into context, used to address existing problems, and/or create new knowledge.
</p>
<p>
The problem of find as reached the point of diminishing returns. The problem of use is now the problem requiring a greater amount of the profession&#8217;s attention.</p>
]]></content:encoded>
							<wfw:commentRss>./../2011/06/next-generation-library-catalogs-or-are-we-there-yet/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Fun with RSS and the RSS aggregator called Planet</title>
		<link>./../2011/05/fun-with-rss-and-the-rss-aggregator-called-planet/index.html</link>
				<pubDate>Wed, 25 May 2011 22:54:15 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Planet]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">./../index.html?p=801</guid>
				<description><![CDATA[This posting outlines how I refined a number of my RSS feeds and then aggregated them into a coherent whole using Planet. Many different RSS feeds I have, more or less, been creating RSS (Real Simple Syndication) feeds since 2002. My first foray was not really with RSS but rather with RDF. At that time [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting outlines how I refined a number of my RSS feeds and then aggregated them into a coherent whole using Planet.
</p>
<h2>Many different RSS feeds</h2>
<p>
I have, more or less, been creating RSS (Real Simple Syndication) feeds since 2002. My first foray was not really with RSS but rather with RDF. At that time the functions of RSS and RDF were blurred. In any event, I used RDF as a way of syndicating randomly selected items from my <a href="http://infomotions.com/water/index.xml">water collection</a>.  I never really pushed the RDF, and nothing really became of it. See &#8220;<a href="./../2009/09/water-1-of-3/index.html">Collecting water and putting it on the Web</a>&#8221; for details.
</p>
<p>
In December of 2004 I started marking up my articles, presentations, and travelogues in TEI and saving the result in a database. The webified version of these efforts was something called <a href="http://infomotions.com/musings/">Musings on Information and Librarianship</a>. I described the database supporting the process is a specific entry called &#8220;<a href="http://infomotions.com/musings/publishing-system/">My personal TEI publishing system</a>&#8220;. A program &#8212; <a href="./../wp-content/uploads/2011/05/fun-with-rss/make-rss.pl">make-rss.pl</a> &#8212; was used to make the feed.
</p>
<p>
Since then blogs have become popular, and almost by definition, blogs support RSS in a really big way. My RSS was functional, but by comparison, everybody else&#8217;s was exceptional. For many reasons I started drifting away from my personal publishing system in 2008 and started moving towards WordPress. This manifested itself in this blog &#8212; <a href="./../index.html">Mini-Musings</a>.
</p>
<p>
To make things more complicated, I started blogging on other sites for specific purposes. About a year ago I started blogging for the <a href="http://www.catholicresearch.net/blog/">&#8220;Catholic Portal&#8221;</a>, and more recently I&#8217;ve been blogging about research data management/curation &#8212; <a href="http://blogs.nd.edu/emorgan/">Days in the Life of a Librarian</a> &#8212; at the University of Notre Dame.
</p>
<p>
In September of 2009 I started implementing a reading list application. Print an article. Read it. Draw and scribble on it. (Read, &#8220;Annotate it.&#8221;) Scan it. Convert it into a PDF document. Do OCR against it. Save the result to a Web-accessible file system. Do data entry against a database to describe it. Index the metadata and extracted OCR. And finally, provide a searchable/browsable interface to the whole lot. The result is a fledgling system I call &#8220;<a href="http://zoia.library.nd.edu/sandbox/readings/">What&#8217;s Eric Reading?</a>&#8221; Since I wanted to share my wealth (after all, I am a librarian) I created an RSS feed against this system too.
</p>
<p>
I was on a roll. I went back to my water collection and created a full-fledged RSS feed against it as well. See the simple Perl script &#8212; <a href="./../wp-content/uploads/2011/05/fun-with-rss/water2rss.pl">water2rss.pl</a> &#8212; to see how easy it is.
</p>
<p>
<em>Ack!</em> I now have six different active RSS feeds, not counting the feeds I can get from Flickr and YouTube:
</p>
<ol>
<li><a href="http://www.catholicresearch.net/blog/feed/">Catholic Portal</a></li>
<li><a href="http://blogs.nd.edu/emorgan/feed/">Life of a Librarian</a></li>
<li><a href="./index.html">Mini-musings</a></li>
<li><a href="http://infomotions.com/musings/musings.rss">Musings</a></li>
<li><a href="http://zoia.library.nd.edu/sandbox/readings-data/readings.rss">What&#8217;s Eric Reading?</a></li>
<li><a href="http://infomotions.com/water/waters.rss">Water collection</a></li>
</ol>
<p>That&#8217;s too many, even for an ego surfer like myself. What to do? How can I consolidate these things? How can I present my writings in a single interface? How can I make it easy to syndicate all of this content in a standards-compliant way?</p>
<h2>Planet</h2>
<p>
The answer to my questions is/was <a href="http://www.planetplanet.org/">Planet</a> &#8212; &#8220;an awesome &#8216;river of news&#8217; feed reader. It downloads news feeds published by web sites and aggregates their content together into a single combined feed, latest news first.&#8221;
</p>
<p>
A couple of years ago the Code4Lib community created an RSS &#8220;planet&#8221; called <a href="http://planet.code4lib.org/">Planet Code4Lib</a> &#8212; &#8220;Blogs and feeds of interest to the Code4Lib community, aggregated.&#8221; I think it is maintained by <strong>Jonathan Rochkind</strong>, but I&#8217;m not sure. It is pretty nice since it brings together the RSS feeds from quite a number of library &#8220;hackers&#8221;. Similarly, there is another planet called <a href="http://planetcataloging.org/">Planet Cataloging</a> which does the same thing for library cataloging feeds. This one is maintained by <strong>Jennifer W. Baxmeyer</strong> and <strong>Kevin S. Clarke</strong>. The combined planets work very well together, except when individual blogs are in both aggregations. When this happens I end up reading the same blog postings twice. Not a big deal. You get what you pay for.
</p>
<p>
After a tiny bit of investigation, I decided to use Planet to aggregate and serve my RSS feeds. Installation and configuration was trivial. Download and unpack the distribution. Select an HTML template. Edit a configuration file denoting the location of RSS feeds and where the output will be saved. Run the program. Tweak the template. Repeat until satisfied. Run the program on a regular basis, preferably via cron. Done. My result is called <a href="http://planet.infomotions.com/">Planet Eric Lease Morgan</a>.
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2011/05/fun-with-rss/planet.png" alt="Planet Eric Lease Morgan" width="425">
</p>
<p>
The graphic design may not be extraordinarily beautiful, but the content is not necessarily intended to be read via an HTML page. Instead the content is intended to be read from inside one&#8217;s favorite RSS reader. Planet not only aggregates content but syndicates it too. Very, <em>very</em> nice.
</p>
<h2>What I learned</h2>
<p>
I learned a number of things from this process. First I learned that standards evolve. &#8220;Duh!&#8221;</p>
<p>Second, my understanding of open source software and its benefits was re-enforced. I would not have been able to do nearly as much if it weren&#8217;t for open source software.</p>
<p>Third, the process provided me with a means to reflect on the processes of librarianship. My particular processes for syndicating content needed to evolve in order to remain relevant. I had to go back and modify a number of my programs in order for everything to work correctly and validate. The library profession seemingly hates to do this. We have a mindset of &#8220;Mark it and park it.&#8221; We have a mindset of &#8220;I only want to touch book or record once.&#8221; In the current environment, this is not healthy. Change is more the norm than not. The profession needs to embrace change, but then again, all institutions, almost by definition, abhor change. What&#8217;s a person to do?</p>
<p>Forth, the process enabled me to come up with a new quip. <em>The written word read transcends both space and time.</em> Fun!?
</p>
<p>
Finally, here&#8217;s an idea for the progressive librarians in the crowd. Use the Planet software to aggregate RSS fitting your library&#8217;s collection development policy. Programatically loop through the resulting links to copy/mirror the remote content locally. Curate the resulting collection. Index it. Integrate the subcollection and index into your wider collection of books, jourals, etc. Repeat.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Book reviews for Web app development</title>
		<link>./../2011/05/book-reviews-for-web-app-development/index.html</link>
				<pubDate>Sun, 15 May 2011 14:01:40 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod touch]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">./../index.html?p=797</guid>
				<description><![CDATA[This is a set of tiny book reviews covering the topic of Web app development for the iPhone, iPad, and iPod Touch. Unless you&#8217;ve been living under a rock for the past three or four years, then you know the increasing popularity of personal mobile computing devices. This has manifested itself through &#8220;smart phones&#8221; like [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is a set of tiny book reviews covering the topic of Web app development for the iPhone, iPad, and iPod Touch.
</p>
<p>
Unless you&#8217;ve been living under a rock for the past three or four years, then you know the increasing popularity of personal mobile computing devices. This has manifested itself through &#8220;smart phones&#8221; like the iPhone and &#8220;tablet computers&#8221; like the iPad and to some extent the iPod Touch. These devices, as well as other smart phones and tablet computers, get their network connections from the ether, their screens are smaller than the monitors of desktop computers, and they employ touch screens for input instead of keyboards and mice. All of these things significantly change the user&#8217;s experience and thus their expectations.
</p>
<p>
As a librarian I am interested in providing information services to my clientele. In this increasingly competitive environment where the provision of information services includes players like Google, Amazon, and Facebook, it behooves me to adapt to the wider environment of my clientele as opposed to the other way around. This means I need to learn how to provide information services through mobile computing devices. Google does it. I have to do it too.
</p>
<p>
Applications for mobile computing devices fall into two categories: 1) native applications, and 2) &#8220;Web apps&#8221;. The former are binary programs written in compiled languages like Objective-C (or quite possibly Java). These types of applications are operating system-specific, but they are also able to take full advantage of the underlying hardware. This means applications for things like iPhone or iPad can interoperate with the devices&#8217; microphone, camera, speakers, geo-location functions, network connection, local storage, etc. Unfortunately, I don&#8217;t know any compiled languages to any great degree, and actually I have little desire to do so. After all, I&#8217;m a lazy Perl programmer, and I&#8217;ve been that way for almost twenty years.
</p>
<p>
The second class of applications are Web apps. In reality, these things are simply sets of HTML pages specifically designed for mobiles. These &#8220;applications&#8221; have the advantage of being operating system independent but are dead in the water without the existence of a robust network connection. These applications, in order to be interactive and meet user expectations, also need to take full advantage of CSS and Javascript, and when it comes to Javascript it becomes imperative to learn and understand how to do AJAX and AJAX-like data acquisition. If I want to provide information services through mobile devices, then the creation of Web apps seems much more feasible. I know how to create well-formed and valid HTML. I can employ the classic LAMP stack to do any hard-core computing. There are a growing number of CSS frameworks making it easy to implement the mobile interface. All I have to do is learn Javascript, and this is not nearly as difficult as it used to be with the emergence of Javascript debuggers and numerous Javascript libraries. For me, Web apps seem to be the way to go.
</p>
<p>
Over the past couple of years I went out and purchased the following books to help me learn how to create Web apps. Each of them are briefly described below, but first, here&#8217;s a word about WebKit. There are at least three HTML frameworks driving the majority of Web browsers these days. Gecko which is the heart of Firefox, WebKit which is the heart of Safari and Chrome, and whatever Microsoft uses as the heart of Internet Explorer. Since I do not own any devices that run the Android or the Windows operating systems, all of my development is limited to Gecko or WebKit based browsers. Luckily, WebKit seems to be increasing in popularity, and this makes it easier for me to rationalize my development in iPhone, iPad, and iPod Touch. The books reviewed below also lean in this direction.
</p>
<table align='center' padding='10'>
<tr>
<td>
<a href="http://www.amazon.com/gp/product/1430230452/ref=as_li_tf_il?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399353&#038;creativeASIN=1430230452"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=1430230452&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=infomotions-20&#038;ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=1430230452&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.com/gp/product/0596805780/ref=as_li_tf_il?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399353&#038;creativeASIN=0596805780"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=0596805780&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=infomotions-20&#038;ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0596805780&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.com/gp/product/0470884738/ref=as_li_tf_il?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399349&#038;creativeASIN=0470884738"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=0470884738&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=infomotions-20&#038;ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0470884738&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.com/gp/product/0321604164/ref=as_li_tf_il?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399353&#038;creativeASIN=0321604164"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=0321604164&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=infomotions-20&#038;ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0321604164&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.com/gp/product/0470549661/ref=as_li_tf_il?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399353&#038;creativeASIN=0470549661"><img border="0" src="http://ws.assoc-amazon.com/widgets/q?_encoding=UTF8&#038;Format=_SL160_&#038;ASIN=0470549661&#038;MarketPlace=US&#038;ID=AsinImage&#038;WS=1&#038;tag=infomotions-20&#038;ServiceVersion=20070822" ></a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0470549661&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
</tr>
</table>
<ul>
<li><cite><a href="http://www.amazon.com/gp/product/1430230452/ref=as_li_tf_tl?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399349&#038;creativeASIN=1430230452">Beginning iPhone And iPad Web Apps</a></cite><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=1430230452&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> (2010, 488 pgs.) by <strong>Chris Apers</strong> and <strong>Daniel Paterson</strong> &#8211; This is one my more recent purchases and I think I like this book the best. First and foremost, it is the most agnostic of all the books, even though some of the examples use WebKit. True to its title, it describes the use of HTML5, CSS, and Javascript to implement mobile interfaces. This includes whole chapters to the use of vector graphics and fonts, audio and video content, special effects with (WebKit-specific) CSS, touch and gesture events with Javascript, location-aware programming, and client-side data storage. Moreover, this book is the best of the bunch when it comes to describing how mobile interfaces are different from browser-based interfaces. <em>Mobile interfaces are not just smaller versions of their older siblings!</em> If you are going to buy one book, then buy this one. I think it will serve you for the longest period of time.</li>
<li><cite><a href="http://www.amazon.com/gp/product/0596805780/ref=as_li_tf_tl?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399349&#038;creativeASIN=0596805780">Building iPhone Apps With HTML, CSS, and Javascript</a></cite><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0596805780&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> (2010, 166 pgs.) by <strong>Jonathan Stark</strong> &#8211; Being shorter than the previous book, this one is not as thorough but still covers all the bases. On the other hand, unlike the previous title, it does describe how to use a Javascript library for mobile (JQTouch), and how to use PhoneGap to convert a Web app into a native application with many of the native application benefits. This book is a quick read and a good introduction.</li>
<li><cite><a href="http://www.amazon.com/gp/product/0470884738/ref=as_li_tf_tl?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399349&#038;creativeASIN=0470884738">Dashcode For Dummies</a></cite><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0470884738&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> (2011, 436 pgs.) by <strong>Jesse Feiler</strong> &#8211; Dashcode is a development environment originally designed to facilitate the creation of Macintosh OS X dashboard widgets. As you may or may not know, these widgets are self-contained HTML/Javascript/CSS files intended to support simple utility functions. Tell the time. Display the weather. Convert currencies. Render XML files. Etc. Dashcode evolved and now enables the developer to create Web apps for the Macintosh family of i-devices. I bought this book because I own these devices, and I thought the book might help me exploit their particular characteristics. It does not. Dashcode includes no internal links to the underlying hardware. This book describes how to use Dashcode very well, but Dashcode applications are not really the kind I want to create. I suppose I could use Dashcode to create the skin of my application but the overhead may be excessive and the result may be too device dependent.</li>
<li><cite><a href="http://www.amazon.com/gp/product/0321604164/ref=as_li_tf_tl?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399349&#038;creativeASIN=0321604164">Developing Hybrid Applications For The iPhone</a></cite><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0321604164&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> (2009, 195 pgs.) by <strong>Lee S. Barney</strong> &#8211; By introducing the idea of a &#8220;hybrid&#8221; application, this book picks up where the Dashcode book left off. It does this by describing two Javascript packages (QuickConnectiPhone and PhoneGap) allowing the developer to interact with the underlying hardware. I&#8217;ve read this book a couple of times, I&#8217;ve looked over it a few more, and in the end I am still challanged. I&#8217;m excited about accessing things like hardware&#8217;s camera, GPS funcationality, and file system, but after reading this book I&#8217;m still confused on actually how to do it. The content of this book is an advanced topic to be tackled after the basics have been mastered.</li>
<li><cite><a href="http://www.amazon.com/gp/product/0470549661/ref=as_li_tf_tl?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=217145&#038;creative=399349&#038;creativeASIN=0470549661">Safari And WebKit Development For iPhone OS 3.0</a></cite><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=0470549661&#038;camp=217145&#038;creative=399349" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> (2010, 383 pgs.) by <strong>Richard Wagner</strong> &#8211; This book is practical, and the one I relied upon the most, but only before I bought <cite>Beginning iPhone And iPad Web Apps</cite>. It gives an overview of WebKit, Javascript, and CSS. It advocates Web app frameworks like iUI, iWebKit, and UIUIKit. It describes how to design interfaces for the small screen of iPhone and iPod Touch. It has a chapter the specific Javascript events supported by iPhone and iPod Touch. Like a couple of the other books, it describes how to use the HTML5 canvas to render graphics. I was excited to learn how to interact with the phone, maps, and SMS functions of the devices, but learned that this is done simply through specialized URLs. When the book talks about &#8220;offline applications&#8221; it is really talking about local database storage &#8212; another feature of HTML5. A couple things I should have explored but haven&#8217;t yet include bookmarklets and data URLs. The book describes how to take advantage of these concepts. This book is really a second edition of similar book with a different title but written by the same author in 2008. Its content is not as current as it could be, but the fundamentals are there.</li>
</ul>
<p>
Based on the things I&#8217;ve learned from these books, I&#8217;ve created several mobile interfaces. Each of them deserve their own blog posting so I will only outline them here:
</p>
<ol>
<li><a href="http://m.infomotions.com/">iMobile</a> &#8211; A rough mobile interface to much of the Infomotions domain. Written a little more than a year ago, it combines backend Perl scripts with the iUI Javascript framework to render content. Now that I look back on it, the hacks there are pretty impressive, if I do say so myself. Of particular interest is the <a href="http://m.infomotions.com/gallery/">image gallery</a> which gets its content from OAI-PMH data stored on the server, and my <a href="http://m.infomotions.com/water/">water collection</a> which reads an XML file of my own design and plots where the water was collected on a Google map. iMobile was created from the knowledge I gained from <cite>Safari And WebKit Development For iPhone OS 3.0</cite>.</li>
<li><a href="http://dh.crc.nd.edu/">DH@ND</a> &#8211; The home page for a fledgling initiative called Digital Humanities at the University of Notre Dame. The purpose of the site is to support sets of tools enabling students and scholars to simultaneously do &#8220;close reading&#8221; and &#8220;distant reading&#8221;. It was built using the principles gleaned from the books above combined with a newer Javascript framework called JQueryMobile. There are only two things presently of note there. The first is <a href="http://dh.crc.nd.edu/sandbox/alex-lite/m/">Alex Lite for Mobile</a>, a mobile interface to a tiny catalogue of classic novels. Browse the collection by author or title. Download and read selected books in ePub, PDF, or HTML formats. The second is <a href="http://dh.crc.nd.edu/sandbox/geo-locate/">Geo-location</a>. After doing named-entity extraction against a limited number of classic novels, this interface displays a word cloud of place names. The user can then click on place names and have them plotted on a Google Map.</li>
</ol>
<p>
Remember, the sites listed above are designed for mobile, primarly driven by the WebKit engine. If you don&#8217;t use a mobile device to view the sites, then your milage will vary.
</p>
<table align='center' padding='10'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/05/web-app-reviews/gallery.png" alt="Image Gallery" width="175" /><br /><a href="http://m.infomotions.com/gallery/">Image Gallery</a></td>
<td><img src="./../wp-content/uploads/2011/05/web-app-reviews/water.png" alt="Water Collection" width="175" /><br /><a href="http://m.infomotions.com/water/">Water Collection</a></td>
<td><img src="./../wp-content/uploads/2011/05/web-app-reviews/alex-lite.png" alt="Alex Lite" width="175" /><br /><a href="http://dh.crc.nd.edu/sandbox/alex-lite/m/">Alex Lite</a></td>
<td><img src="./../wp-content/uploads/2011/05/web-app-reviews/geo-location.png" alt="Geo-location" width="175" /><br /><a href="http://dh.crc.nd.edu/sandbox/geo-locate/">Geo-Location</a></td>
</tr>
</table>
<p>
Web app development is beyond a trend. It has all but become an expectation. Web app implementation requires an evolution in thinking about Web design as well as an additional skill set which includes advanced HTML, CSS, and Javascript. These are not your father&#8217;s websites. There are a number of books out there that can help you learn about these topics. Listed above are just a few of them.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Alex Lite (version 2.0)</title>
		<link>./../2011/04/alex-lite-version-2-0/index.html</link>
				<pubDate>Tue, 12 Apr 2011 01:41:10 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[ePub]]></category>

		<guid isPermaLink="false">./../index.html?p=783</guid>
				<description><![CDATA[This posting describes Alex Lite (version 2.0) &#8212; a freely available, standards-compliant distribution of electronic texts and ebooks. Alex Lite in a browser Alex Lite on a mobile A few years ago I created the first version of Alex Lite. Its primary purpose was to: 1) explore and demonstrate how to transform a particular flavor [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting describes Alex Lite (version 2.0) &#8212; a freely available, standards-compliant distribution of electronic texts and ebooks.
</p>
<table align='center'>
<tr align='center'>
<td>
<img src="./../wp-content/uploads/2011/04/alex-lite/website.png" alt="Alex LIte browser version" height="300"/><br />
<span style='font-size: small'><a href="http://infomotions.com/sandbox/alex-lite/">Alex Lite in a browser</a></span>
</td>
<td><img src="./../wp-content/uploads/2011/04/alex-lite/webapp.png" alt="Alex Lite webapp" height="300" /><br />
<span style='font-size: small'><a href="http://infomotions.com/sandbox/alex-lite/m/">Alex Lite on a mobile</a></span></td>
</tr>
</table>
<p>
A few years ago I created <a href="./../2008/07/alex-lite-a-tiny-standards-compliant-and-portable-catalogue-of-electronic-texts/index.html">the first version of Alex Lite</a>. Its primary purpose was to: 1) explore and demonstrate how to transform a particular flavor of XML (TEI) into a number of ebook formats, and 2) distribute the result on a CD-ROM. The process was successful. I learned a lot of about XSLT &#8212; the primary tool for doing this sort of work.
</p>
<p>
Since then two new developments have occurred. First, a &#8220;standard&#8221; ebook format has emerged &#8212; <a href="http://idpf.org/epub/">ePub</a>. Based on XHTML, this standard specifies packaging up numerous XML files into a specialized ZIP archive. Software is intended to uncompress the file and display the result. Second, mobile devices have become more prevalent. Think &#8220;smart phones&#8221; and iPads. These two things have been combined to generate an emerging ebook market. Consequently, I decided to see how easy it would be to transform my TEI files into ePub files, make them available on the Web as well as a CD-ROM, and finally implement a &#8220;Webapp&#8221; for using the whole thing.
</p>
<p>
<a href="http://infomotions.com/sandbox/alex-lite/">Alex Lite (version 2.0)</a> is the result. There you will find a rudimentary Web browser-based &#8220;catalogue&#8221; of electronic texts. Browsable by authors and titles (no search), a person can read as many as eigthy classic writings in the forms of HTML, PDF, and ePub files. Using just about any mobile device, a person should be able to use a differnt interface to the collection with all of the functionality of the original. The only difference is the form factor, and thus the graphic design.
</p>
<p>
The entire Alex Lite distribution is designed to be given away and used as a stand-alone &#8220;library&#8221;. <a href="http://infomotions.com/sandbox/alex-lite/alex-lite-2011-04-11.zip">Download the .zip file.</a> Uncompress it (about 116 MB). Optionally save the result on your Web server. Open the distribution&#8217;s index.html file with your browser or mobile. Done. Everything is included. Supporting files. HTML files. ePub files. PDF&#8217;s. Since all the files have been run through validators, a CD of Alex Lite should be readable for quite some time. Give away copies to your friends and relatives. Alex Lite makes a great gift.
</p>
<p>
Computers and their networks are extremely fragile. If they were to break, then access to much of world&#8217;s current information would suddently become inaccessible. Creating copies of content, like Alex Lite, are a sort of insurance against this catastrophe. Marking-up content in forms like TEI make it realatively easy to migrate ideas forward. TEI is just the information, not display nor container. Using XSLT it is possible to create different containers and different displays. Having copies of content locally enables a person to control their own destiny. Linking to content only creates maintenance nightmares.
</p>
<p>
<a href="http://infomotions.com/sandbox/alex-lite/">Alex Lite</a> is a fun little hack. Share it with your friends, and use it to evolve your definition of a library.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Where in the world is the mail going?</title>
		<link>./../2011/03/where-in-the-world-is-the-mail-going/index.html</link>
				<pubDate>Thu, 24 Mar 2011 01:22:09 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Code4Lib]]></category>
		<category><![CDATA[geo-location]]></category>
		<category><![CDATA[mailing lists]]></category>
		<category><![CDATA[NGC4Lib]]></category>
		<category><![CDATA[Usability4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=775</guid>
				<description><![CDATA[For a good time, I geo-located the subscribers from a number of mailing lists, and then plotted them on a Google map. In other words, I asked the question, &#8220;Where in the world is the mail going?&#8221; The answer was sort of surprising. I moderate/manage three library-specific mailing lists: Usability4Lib, Code4Lib, and NGC4Lib. This means [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
For a good time, I geo-located the subscribers from a number of mailing lists, and then plotted them on a Google map. In other words, I asked the question, &#8220;Where in the world is the mail going?&#8221; The answer was sort of surprising.
</p>
<p>
I moderate/manage three library-specific mailing lists: <a href="http://dewey.library.nd.edu/mailing-lists/usability4lib/">Usability4Lib</a>, <a href="http://dewey.library.nd.edu/mailing-lists/code4lib/">Code4Lib</a>, and <a href="http://dewey.library.nd.edu/mailing-lists/ngc4lib/">NGC4Lib</a>. This means I constantly get email messages from the LISTSERV application alerting me to new subscriptions, unsubscriptions, bounced mail, etc. For the most part the whole thing is pretty hands-off, and all I have to do is manually unsubscribe people because their address changed. No big deal.
</p>
<p>
It is sort of fun to watch the subscription requests. They are usually from places within the United States but not always. I then got to wondering, &#8220;Exactly where are these people located?&#8221; Plotting the answer on a world map would make such things apparent. This process is called geo-location. For me it is easily done by combining a Perl module called <a href="http://search.cpan.org/dist/Geo-IP/">Geo::IP</a> with the <a href="http://code.google.com/apis/maps/documentation/javascript/">Google Maps API</a>. The process was not too difficult and implemented in a program called <a href="./../wp-content/uploads/2011/03/where/domains2map.pl">domains2map.pl</a>:
</p>
<ol>
<li>get a list of all the subscribers to a given mailing list</li>
<li>remove all information but the domain of the email addresses</li>
<li>get the latitude and longitude for a given domain &#8212; geo-locate the domain</li>
<li>increment the number of times this domain occurs in the list</li>
<li>got to Step #3 for each item in the list</li>
<li>build a set of Javascript objects describing each domain</li>
<li>insert the objects into an HTML template</li>
<li>output the finished HTML</li>
</ol>
<p>
The results are illustrated below.
</p>
<table align='center'>
<th colspan="2" align="center">Usability4Lib &#8211; 600 subscribers</th>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/where/usability4lib.png" alt="usability4lib" width="300"><br />
<a href="./../wp-content/uploads/2011/03/where/usability4lib.html">interactive map</a>
</td>
<td><img src="./../wp-content/uploads/2011/03/where/usability4lib-pie.png" alt="usability4lib" width="300"><br />
<a href="./../wp-content/uploads/2011/03/where/usability4lib-pie.png">pie chart</a>
</td>
</tr>
</table>
<table align='center'>
<th colspan="2" align="center">Code4Lib &#8211; 1,700 subscribers</th>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/where/code4lib.png" alt="code4lib" width="300"><br />
<a href="./../wp-content/uploads/2011/03/where/code4lib.html">interactive map</a>
</td>
<td><img src="./../wp-content/uploads/2011/03/where/code4lib-pie.png" alt="code4lib" width="300"><br />
<a href="./../wp-content/uploads/2011/03/where/code4lib-pie.png">pie chart</a>
</td>
</tr>
</table>
<table align='center'>
<th colspan="2" align="center">NGC4Lib &#8211; 2,100 subscribers</th>
<tr align='center'>
<td>
<img src="./../wp-content/uploads/2011/03/where/ngc4lib.png" alt="ngc4lib" width="300"><br />
<a href="./../wp-content/uploads/2011/03/where/ngc4lib.html">interactive map</a>
</td>
<td><img src="./../wp-content/uploads/2011/03/where/ngc4lib-pie.png" alt="ngc4lib" width="300"><br />
<a href="./../wp-content/uploads/2011/03/where/ngc4lib-pie.png">pie chart</a>
</td>
</tr>
</table>
<p>
It is interesting to note how many of the subscribers seem to be located in Mountain View (California). This is because many people use Gmail for their mailing list subscriptions. The mailing lists I moderate/manage are heavily based in the United States, western Europe, and Australia &#8212; for the most part, English-speaking countries. There is a large contingent of Usability4Lib subscribers located in Rochester (New York). Gee, I wonder why. Even though the number of subscribers to Code4Lib and NGC4Lib is similar, the Code4Libbers use Gmail more. NGC4Lib seems to have the most international subscription base.
</p>
<p>In the interest of providing &#8220;access to the data behind the chart&#8221;, you can download the data sets: <a href="./../wp-content/uploads/2011/03/where/code4lib.txt">code4lib.txt</a>,<a href="./../wp-content/uploads/2011/03/where/ngc4lib.txt"> ngc4lib.txt</a>, and <a href="./../wp-content/uploads/2011/03/where/usability4lib.txt">usability4lib.txt</a>. Fun with Perl, Google Maps, and mailing list subscriptions.
</p>
<p>
For something similar, take a gander at my water collection where I <a href="http://infomotions.com/water/map/">geo-located waters of the world</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Constant chatter at Code4Lib</title>
		<link>./../2011/03/constant-chatter-at-code4lib/index.html</link>
				<pubDate>Sun, 20 Mar 2011 14:02:12 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[c4l11]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=768</guid>
				<description><![CDATA[As illustrated by the chart, it seems as if the chatter was constant during the most recent Code4Lib conference. For a good time and in the vein of text mining, I made an effort to collect as many tweets with the hash tag #c4l11 as well as the backchannel log files. (&#8220;Thanks, lbjay!&#8221;). I then [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
As illustrated by the chart, it seems as if the chatter was constant during the <a href="./../2011/03/code4lib-conference-2011/index.html">most recent Code4Lib conference</a>.
</p>
<p>
For a good time and in the vein of text mining, I made an effort to collect as many tweets with the hash tag #c4l11 as well as the backchannel log files. (&#8220;Thanks, lbjay!&#8221;). I then parsed the collection into fields (keys, author identifiers, date stamps, and chats/tweets), and stuffed them into a database. I then created a rudimentary tab-delimited text file consisting of a key (representing a conference event), a start time, and an end time. Looping through this file I queried my database returning the number of chats and tweets associated with each time interval. Lastly, I graphed the result.
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2011/03/chatter.png" alt="chatter at code4lib" width="500" ><br />
<a href="./../wp-content/uploads/2011/03/chatter.png">Constant chatter at Code4Lib, 2011</a>
</p>
<p>
As you can see there are a number of spikes, most notably associated with keynote presentations and Lightning Talks. Do not be fooled, because each of these events are longer than balance of the events in the conference. The chatter was rather constant throughout Code4Lib 2011.
</p>
<p>
When talking about the backchannel, many people say, &#8220;It is too distracting; there is too much stuff there.&#8221; I then ask myself, &#8220;How much is too much?&#8221; Using the graph as evidence, I can see there are about 300 chats per event. Each event is about 20-30 minutes long. That averages out to 10ish chats per minute or 1 item every 6 seconds. I now have a yardstick. When the chat volume is equal to or greater than 1 item every 6 seconds, then there is too much stuff for many people to follow.
</p>
<p>
The next step will be to write a program allowing people to select time ranges from the chat/tweet collection, extract the associated data, and apply analysis tools against them. This includes things like concordances, lists of frequently used words and phrases, word clouds, etc.
</p>
<p>
Finally, just like traditional books, articles, microforms, and audio-visual materials things things like backchannel log files, tweets, blogs, and mailing list archives are forms of human expression. Do what degree do these things fall into the purview of library collections? Why (or why not) should libraries actively collect and archive them? If it is within our purview, then what do libraries need to do differently in order build such collections and take advantage of their fulltext nature?</p>
]]></content:encoded>
										</item>
		<item>
		<title>How &#8220;great&#8221; are the Great Books?</title>
		<link>./../2011/03/how-great/index.html</link>
				<pubDate>Wed, 16 Mar 2011 10:33:05 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Great Books of the Western World]]></category>
		<category><![CDATA[digital humanities]]></category>

		<guid isPermaLink="false">./../index.html?p=762</guid>
				<description><![CDATA[In this posting I present two quantitative methods for denoting the &#8220;greatness&#8221; of a text. Through this analysis I learned that Aristotle wrote the greatest book. Shakespeare wrote seven of the top ten books when it comes to love. And Aristophanes&#8217;s Peace is the most significant when it comes to war. Once calculated, this description [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>In this posting I present two quantitative methods for denoting the &#8220;greatness&#8221; of a text. Through this analysis I learned that Aristotle wrote the greatest book. Shakespeare wrote seven of the top ten books when it comes to love. And Aristophanes&#8217;s <cite>Peace</cite> is the most significant when it comes to war. Once calculated, this description – something I call the &#8220;Great Ideas Coefficient&#8221; – can be used as a benchmark to compare &amp; contrast one text with another.</p>
<h2>Research questions</h2>
<p>In 1952 Robert Maynard Hutchins et al. compiled a set of books called the <cite>Great Books of the Western World</cite>. [1] Comprised of fifty-four volumes and more than a couple hundred individual works, it included writings from Homer to Darwin. The purpose of the set was to cultivate a person&#8217;s liberal arts education in the Western tradition. [2]</p>
<p>To create the set a process of &#8220;syntopical reading&#8221; was first done. [3]. (Syntopical reading is akin to the emerging idea of &#8220;distant reading&#8221; [4], and at the same time complementary to the more traditional &#8220;close reading&#8221;.) The result was an enumeration of 102 &#8220;Great Ideas&#8221; commonly debated throughout history. Through the syntopical reading process, through the enumeration of timeless themes, and after thorough discussion with fellow scholars, the set of Great Books was enumerated. As stated in the set&#8217;s introductory materials:</p>
<blockquote><p>
&#8230;but the great books posses them [the great ideas] for a considerable range of ideas, covering a variety of subject matters or disciplines; and among the great books the greatest are those with the greatest range of imaginative or intellectual content. [5]</p></blockquote>
<p>Our research question is then, &#8220;How &#8216;great&#8217; are the Great Books?&#8221; To what degree do they discuss the Great Ideas which apparently define their greatness? If such degrees can be measured, then which of the Great Books are greatest?</p>
<h2>Great Ideas Coefficient defined</h2>
<p>To measure the greatness of any text – something I call a Great Ideas Coefficient – I apply two methods of calculation. Both exploit the use of term frequency inverse document frequency (TFIDF).</p>
<p>TFIDF is a well-known method for calculating statistical relevance in the field of information retrieval (IR). [6] Query terms are supplied to a system and compared to the contents of an inverted index. Specifically, documents are returned from an IR system in a relevancy ranked order based on: 1) the ratio of query term occurrences and the size of the document multiplied by 2) the ratio of the number of documents in the corpus and the number of documents containing the query terms. Mathematically stated, TFIDF equals:</p>
<blockquote><p>
(c/t) * log(d/f)</p></blockquote>
<p>where:</p>
<ul>
<li>c = number of times the query terms appear in a document</li>
<li>t = total number of words in a document</li>
<li>d = total number of documents in a corpus</li>
<li>f = total number of documents containing the query terms</li>
</ul>
<p>For example, suppose a corpus contains 100 documents. This is d. Suppose two of the documents contain a given query term (such as &#8220;love&#8221;). This is f. Suppose also the first document is 50 words long (t) and contains the word love once (c). Thus, the first document has a TFIDF score of 0.034:</p>
<blockquote><p>
(1/50) * log(100/2) = 0.0339</p></blockquote>
<p>Where as, if the second document is 75 words long (t) and contains the word love twice (c), then the second document&#8217;s TFIDF score is 0.045:</p>
<blockquote><p>
(2/75) * log(100/2) = 0.0453</p></blockquote>
<p>Thus, the second document is considered more relevant than the first, and by extension, the second document is probably more &#8220;about&#8221; love than the first. For our purposes relevance and &#8220;aboutness&#8221; are equated with &#8220;greatness&#8221;. Consequently, in this example, when it comes to the idea of love, the second document is &#8220;greater&#8221; than the first. To calculate our first Coefficient I sum all 102 Great Idea TFIDF scores for a given document, a statistic called the &#8220;overlap score measure&#8221;. [7] By comparing the resulting sums I can compare the greatness of the texts as well as examine correlations between Great Ideas. Since items selected for inclusion in the Great books also need to exemplify the &#8220;greatest range of imaginative or intellectual content&#8221;, I also produce a Coefficient based on a normalized mean for all 102 Great Ideas across the corpus.</p>
<h2>Great Ideas Coefficient calculated</h2>
<p>To calculate the Great Ideas Coefficient for each of the Great Books I used the following process:</p>
<ol>
<li><strong>Mirrored versions of Great Books</strong> &#8211; By searching and browsing the Internet 222 of the 260 Great Books were found and copied locally, giving us a constant (d) equal to 222.</li>
<li><strong>Indexed the corpus</strong> &#8211; An inverted index was created. I used Solr for this. [8]</li>
<li><strong>Calculated TFIDF for a given Great Idea</strong> &#8211; First the given Great Idea was stemmed and searched against the the index resulting in a value for f. Each Great Book was retrieved from the local mirror whereby the size of the work (t) was determined as well as the number of times the stem appeared in the work (c). TFIDF was then calculated.</li>
<li><strong>Repeated Step #3 for each of the Great Ideas</strong> &#8211; Go to Step #3 each of the Great Ideas.</li>
<li><strong>Summed each of the TFIDF scores</strong> &#8211; The Great Idea TFIDF scores were added together giving us our first Great Ideas Coefficient for a given work.</li>
<li><strong>Saved the result</strong> &#8211; Each of the individual scores as well as the Great Ideas Coefficient was saved to a database.</li>
<li><strong>Returned to Step #3 for each of the Great Books</strong> &#8211; Go to Step #3 each of the other works in the corpus.</li>
</ol>
<p>The end result was a file in the form of a matrix with 222 rows and 104 columns. Each row represents a Great Book. Each column is a local identifier, a Great Ideas TFIDF score, and a book&#8217;s Great Ideas Coefficient. [9]</p>
<h2>The Great Books analyzed</h2>
<p>Sorting the matrix according to the Great Ideas Coefficient is trivial. Upon doing so I see that Kant&#8217;s <cite>Introduction To The Metaphysics Of Morals</cite> and Aristotle&#8217;s <cite>Politics</cite> are the first and second greatest books, respectively. When the matrix is sorted by the love column, I see Plato&#8217;s <cite>Symposium</cite> come out as number one, but Shakespeare claims seven of the top ten items with his collection of Sonnets being the first. When the matrix is sorted by the war column, then Aristophanes&#8217;s <cite>Peace</cite> is the greatest.</p>
<p>Unfortunately, denoting overall greatness in the previous manner is too simplistic because it does not fit the definition of greatness posited by Hutchins. The Great Books are expected to be great because they exemplify the &#8220;greatest range of imaginative or intellectual content&#8221;. In other words, the Great Books are great because they discuss and elaborate upon a wide spectrum of the Great Ideas, not just a few. Ironically, this does not seem to be the case. Most of the Great Books have many Great Idea scores equal to zero. In fact, at least two of the Great Ideas – cosmology and universal – have TFIDF scores equal to zero across the entire corpus, as illustrated by Figure 1. This being the case, I might say that none of the Great Books are truly great because none of them significantly discuss the totality of the Great Ideas.</p>
<p style="text-align: center">
<img src="./../wp-content/uploads/2011/02/how-great/ideas.png" alt="box plots of great ideas" width="480"><br />
<a href="./../wp-content/uploads/2011/02/how-great/ideas.png">Figure 1  – Box plot scores of Great Ideas</a></p>
<p>To take this into account and not allow the value of the Great Idea Coefficient to be overwhelmed by one or two Great Idea scores, I calculated the mean TFIDF score for each of the Great Ideas across the matrix. This vector represents an imaginary but &#8220;typical&#8221; Great Book. I then compared the Great Idea TFIDF scores for each of the Great Books with this central quantity to determine whether or not it is above or below the typical mean. After graphing the result I see that Aristotle&#8217;s <cite>Politics</cite> is still the greatest book with Hegel&#8217;s <cite>Philosophy Of History</cite> being number two, and Plato&#8217;s <cite>Republic</cite> being number three. Figure 2 graphically illustrates this finding, but in a compressed form. Not all works are listed in the figure.</p>
<p style="text-align: center">
<img src="./../wp-content/uploads/2011/02/how-great/books.png" alt="normalized great books" width="480"><br />
<a href="./../wp-content/uploads/2011/02/how-great/books.png">Figure 2  – Individual books compared to the &#8220;typical&#8221; Great Book</a></p>
<h2>Summary</h2>
<p>How &#8220;great&#8221; are the Great Books? The answer depends on what qualities a person wants to measure. Aristotle&#8217;s <cite>Politics</cite> is great in many ways. Shakespeare is great when it comes to the idea of love. The calculation of the Great Ideas Coefficient is one way to compare &amp; contrast texts in a corpus – &#8220;syntopical reading&#8221; in a digital age.</p>
<h2>Notes</h2>
<p>[1] Hutchins, Robert Maynard. 1952. <cite>Great books of the Western World</cite>. Chicago: Encyclopædia Britannica.</p>
<p>[2] <cite>Ibid.</cite> Volume 1, page xiv.</p>
<p>[3] <cite>Ibid.</cite> Volume 2, page xi.</p>
<p>[4] Moretti, Franco. 2005. <cite>Graphs, maps, trees: abstract models for a literary history</cite>. London: Verso, page 1.</p>
<p>[5] Hutchins, <cite>op. cit.</cite> Volume 3, page 1220.</p>
<p>[6] Manning, Christopher D., Prabhakar Raghavan, and Hinrich Schütze. 2008. <cite>An introduction to information retrieval</cite>. Cambridge: Cambridge University Press, page 109.</p>
<p>[7] <cite>Ibid.</cite></p>
<p>[8] Solr &#8211; <a href="http://lucene.apache.org/solr/">http://lucene.apache.org/solr/</a></p>
<p>[9] This file – the matrix of identifiers and scores – is available at <a href="http://bit.ly/cLmabY">http://bit.ly/cLmabY</a>, but a more useful and interactive version is located at <a href="http://bit.ly/cNVKnE">http://bit.ly/cNVKnE</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>Code4Lib Conference, 2011</title>
		<link>./../2011/03/code4lib-conference-2011/index.html</link>
				<comments>./../2011/03/code4lib-conference-2011/index.html#comments</comments>
				<pubDate>Sat, 12 Mar 2011 18:52:52 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[Bloomington (Indiana)]]></category>
		<category><![CDATA[c4l11]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=756</guid>
				<description><![CDATA[This posting documents my experience at the 2011 Code4Lib Conference, February 8-10 in Bloomington (Indiana). In a sentence, the Conference was well-organized, well-attended, and demonstrated the over-all health and vitality of this loosely structured community. At the same time I think the format of the Conference will need to evolve if it expects to significantly [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting documents my experience at the <a href="http://www.indiana.edu/~uits/code4lib/">2011 Code4Lib Conference</a>, February 8-10 in Bloomington (Indiana). In a sentence, the Conference was well-organized, well-attended, and demonstrated the over-all health and vitality of this loosely structured community. At the same time I think the format of the Conference will need to evolve if it expects to significantly contribute to the library profession.
</p>
<table align='center'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/student-center.jpeg" alt="student center" /><br />student center</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/computers.jpeg" alt="computers" /><br />computers</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/code4libbers.jpeg" alt="Code4Libbers" /><br />Code4Libbers</td>
<tr>
</table>
</p>
<h2>Day #1 (Tuesday, February 8)</h2>
<p>
The Conference officially started on Tuesday, February 8 after the previous day&#8217;s round of pre-conference activities. <strong>Brad Wheeler</strong> (Indiana University) gave the introductory remarks. He alluded to the &#8220;new normal&#8221;, and said significant change only happens when there are great leaders or financial meltdowns such as the one we are currently experiencing. In order to find stability in the current environment he advocated true dependencies and collaborations, and he outlined three tensions: 1) innovation versus solutions at scale, 2) local-ness and cloudiness, and 3) propriety verus open. All of these things, he said, are false dichotomies. &#8220;There needs to be a balance and mixture of all these tension.&#8221; Wheeler used his experience with Kuali as an example and described personal behavior, a light-weight organization, and local goals as the &#8220;glue&#8221; making Kuali work. Finally, he said the library community needs to go beyond &#8220;toy&#8221; projects and create something significant.
</p>
<p>
The keynote address, <em>Critical collaborations: Programmers and catalogers? Really?</em>, was given by <strong>Diane Hillman</strong> (Metadata Management). In it she advocated greater collaboration between the catalogers and coders. &#8220;Catalogers and coders do not talk with each other. Both groups get to the nitty-gritty before their is an understanding of the problem.&#8221; She said change needs to happen, and it should start within our own institutions by learning new skills and having more cross-departmental meetings. Like Wheeler, she had her own set of tensions: 1) &#8220;cool&#8221; services versus the existing online public access catalog, and 2) legacy data versus prospective data. She said both communities have things to learn from each other. For example, catalogers need to learn to use data that is not created by catalogers, and catalogers need not always look for leadership from &#8220;on high&#8221;. I asked what the coders needed to learn, but I wasn&#8217;t sure what the answer was. She strongly advocated <a href="http://www.rdatoolkit.org/">RDA (Resource Description and Access)</a>, and said, &#8220;It is ready.&#8221; I believe she was looking to the people in the audience as people who could create demonstration projects to show to the wider community.
</p>
<p>
<strong>Karen Coombs</strong> (OCLC) gave the next presentation, <em>Visualizing library data</em>. In it she demonstrated a number of ways library information can be graphed through the use of various mash-up technologies: 1) a map of holdings, 2) QR codes describing libraries, 3) author timelines, 4) topic timelines, 5) FAST headings in a tag cloud, 6) numbers of libraries, 7) tree relationships between terms, and 8) pie charts of classifications. &#8220;Use these things to convey information that is not a list of words&#8221;.
</p>
<p>
In <em>Hey, Dilbert, where&#8217;s my data</em>?&#8221;, <strong>Thomas Barker</strong> (University of Pennsylvania) described how he is aggregating various library data sets into a single source for analysis &#8212; <a href="http://code.google.com/p/metridoc/">http://code.google.com/p/metridoc/</a>
</p>
<p>
<strong>Tim McGeary</strong> (Lehigh University) shared a Kuali update in <em>Kuali OLE: Architecture of diverse and linked data</em>. <a href="http://www.kuali.org/ole">OLE (Open Library Environment)</a> is the beginnings of an open source library management system. Coding began this month (February) with goals to build community, implement a &#8220;next-generation library catalog&#8221;, re-examine business operations, break away from print models of doing things, create an enterprise-level system, and reflect the changes in scholarly work. He outlined the structure of the system and noted three &#8220;buckets&#8221; for holding different types of content: 1) descriptive &#8212; physical holdings, 2) semantic &#8212; conceptual content, and 3) relational &#8212; financial information. They are scheduled to release their first bits of code by July.
</p>
<p>
<strong>Cary Gordon</strong> (The Cherry Hill Company) gave an overview of <a href="http://drupal.org/drupal-7.0">Drupal 7</a> functionality in <em>Drupal 7 as a rapid application development tool</em>. Of most interest to me was the Drupal credo, &#8220;Sacrifice the API. Preserve the data.&#8221; In the big scheme of things, this makes a lot of sense to me.
</p>
<p>
After lunch first up was <strong>Josh Bishoff</strong> (University of Illinois) with <em>Enhancing the mobile experience: mobile library services at Illinois</em>. The most important take-away was the importance between a mobile user experience and a desktop user experience. They are not the same. &#8220;This is not a software problem but rather an information architecture problem.&#8221;
</p>
<p>
<strong>Scott Hanrath</strong> (University of Kansas) described his participation in the development of <a href="http://anthologize.org/">Anthologize</a> in <em>One week, one tool: Ultra-rapid open sources development among strangers</em>. He enumerated the group&#8217;s three criteria for success: 1) usefulness, 2) low walls &amp; high ceilings, and 3) feasibility. He also attributed the project&#8217;s success to extraordinary outreach efforts &#8212; marketing, good graphic design, blurbs, logos, etc.
</p>
<table align='center'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/cabin.jpeg" alt="cabin" /><br />cabin</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/graveyard.jpeg" alt="graveyard" /><br />graveyard</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/chruch.jpeg" alt="church" /><br />chruch</td>
<tr>
</table>
<p>
<em>VuFind beyond MARC: Discovering everything else</em> by <strong>Demian Katz</strong> (Villanova University) described how VuFind supports the <a href="http://vufind.org/wiki/other_than_marc">indexing of non-MARC metadata</a> through the use of &#8220;record drivers&#8221;. Acquire metadata. Map it to Solr fields. Index it while denoting it as a special metadata type. Search. Branch according to metadata type. Display. He used Dublin Core OAI-PMH metadata as an example.
</p>
<p>
The last formal presentation of the day was entitled <em>Letting in the light: Using Solr as an external search component</em> by <strong>Jay Luker</strong> and <strong>Benoit Thiell</strong> (Astrophysics Data System). <a href="http://adsabs.harvard.edu/ads_abstracts.html">ADS</a> is a bibliographic information system for astronomers. It uses a pre-print server originally developed at CERN. They desired to keep much of the functionality of the original server as possible but enhance it with Solr indexing. They described how they hacked the two systems to allow the searching and retrieving of millions of records at a time. Of all the presentations at the Conference, this one was the most computer science-like.
</p>
<p>
The balance of the day was given over to breakout sessions, lightning talks, a reception in the art museum, and craft beer drinking in the hospitality suite. Later that evening I retired to my room and hacked on Twitter feeds. &#8220;What do library programmers do for a good time?&#8221;
</p>
<h2>Day #2 (Wednesday, February 9)</h2>
<p>
The next day began with a presentation by my colleagues at Notre Dame, <strong>Rick Johnson</strong> and <strong>Dan Brubakerhorst</strong>. In <em>A Community-based approach to developing a digital exhibit at Notre Dame using the Hydra Framework</em>, they described how they are building and maintaining a digital library framework based on a myriad of tools: Fedora, Active Fedora, Solr, Hydrangia, Ruby, Blacklight. They gave  <a href="http://www.library.nd.edu/rarebooks/digital_projects/inquisition/collections/RBSC-INQ:COLLECTION/essays/RBSC-INQ:ESSAY_Autosdefe?genre_form_id=RBSC-INQ%3AAutos_de_fe">examples of ingesting EAD files</a>. They are working on an ebook management application. Currently they are building a digitized version of city plans.
</p>
<p>
I think the most inspiring presentation was by <strong>Margaret Heller</strong> (Dominican University) and <strong>Nell Tayler</strong> (<a href="http://underground-library.org/">Chicago Underground</a>) called <em>Chicago Underground Library&#8217;s community-based cataloging system</em>. Tayler began and described a library of gray literature. Poems. Comics. All manner of self publications were being collected and loosely cataloged in order to increase the awareness of the materials and record their existence. The people doing the work have little or no cataloging experience. They decided amongst themselves what metadata they were going to use. They wanted to focus on locations and personal characteristics of the authors/publishers of the material. They whole thing reminded me of the times I suggested cataloging local band posters because somebody will find everything interesting at least once.
</p>
<p>
<strong>Gabriel Farrell</strong> (Drexel University) described the use of a non-relational database called CouchDB in <em>Beyond sacrilege: A <a href="http://couchapp.org/">CouchApp</a> catalog</em>. With a REST-ful interface, complete with change log replication and different views, CouchApp seems to be cool as well as &#8220;kewl&#8221;.
</p>
<p>
<strong>Matt Zumwalt</strong> (MediaShelf) in <em>Opinionated metadata: Bringing a bit o sanity to the world of XML metdata</em> described <a href="https://github.com/mediashelf/om">OM</a> which looked like a programatic way of working with XML in Ruby but I thought his advice on how to write good code was more interesting. &#8220;Start with people&#8217;s stories, not the schema. Allow the vocabulary to reflect the team. And talk to the other team members.&#8221;
</p>
<p>
<strong>Ben Anderson</strong> (eXtensible Catalog) in <em>Enhancing the performance of extensibility of XC&#8217;s metadata services toolkit</em> outlined the development path and improvements to the <a href="http://code.google.com/p/xcmetadataservicestoolkit/">Metadata Services Toolkit</a> (MST). He had a goal of making the MST faster and more robust, and he did much of this by taking greater advantage of MySQL as opposed to processing various things in Solr.
</p>
<table align='center'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/more-wires.jpeg" alt="wires" /><br />wires</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/power-supply.jpeg" alt="power supply" /><br />power supply</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/water-cooler.jpeg" alt="water cooler" /><br />water cooler</td>
<tr>
</table>
<p>
In <em>Ask Anything! a.k.a. the &#8216;Human Search Engine</em> moderated by <strong>Dan Chudnov</strong> (Library of Congress) a number of people stood up, asked the group a question, and waited for an answer. The technique worked pretty well and enabled many people to identify many others who: 1) had similar problems, or 2) offered solutions. For better or for worse, I asked the group if they had any experience with issues of data curation, and I was &#8220;rewarded&#8221; for my effort with the responsibility to facilitate a birds-of-a-feather session later in the day.
</p>
<p>
Standing in for <strong>Mike Grave</strong>, <strong>Tim Shearer</strong> (University of North Carolina at Chapel Hill) presented <em>GIS on the cheap</em>. Using different content from different sources, Grave is geo-tagging digital objects by assigning them latitudes and longitudes. Once this is done, his Web interfaces read the tagging and place the objects on a map. He is using a Javascript library called <a href="http://openlayers.org/">Open Layers</a> for the implementation.
</p>
<p>
In <em>Let&#8217;s get small: A Microservices approach to library websites</em> by <strong>Sean Hannan</strong> (Johns Hopkins University) we learned how a myriad of tools and libraries are being used by Hannan to build websites. While the number of tools and libraries seemed overwhelming I was impressed at the system&#8217;s completeness. He was practicing the Unix Way when it comes to website maintenance.
</p>
<p>
When a person mentions the word &#8220;archives&#8221; at a computer conference, one of the next words people increasingly mention is &#8220;forensics&#8221;, and <strong>Mark Matienzo</strong> (Yale University) in <em>Fiwalk with me: Building emergent pre-ingest workflows for digital archival records using open source-forensic software</em> described how he uses forensic techniques to read, organize, preserve digital media &#8212; specifically hard drives. He advocated a specific workflow for doing his work, a process for analyzing the disk&#8217;s content with a program called <a href="http://www.ece.cmu.edu/~fingerpointing/docs/fpt-srds-2008.pdf">Gumshoe</a>, and <a href="http://www.forensicswiki.org/wiki/AFF4">Advanced Forensic Framework 4 (AFF4)</a> for doing forensics against file formats. Ultimately he hopes to write an application binding the whole process together.
</p>
<p>
I paid a lot of attention to <strong>David Lacy</strong> (Villanova University) when he presented <em>(Yet another) home-grown digital library system, built upon open source XML technologies and metadata standards</em> because the work he has done directly effects a system I am working on colloquially called the &#8220;Catholic Portal&#8221;. In his system Lacy described a <a href="http://digital.library.villanova.edu/">digital library system</a> complete with METS files, a build process, an XML database, and an OAI-PMH server. Content is digitized, described, and ingested into VuFind. I feel embarrassed that I had not investigated this more thoroughly before.
</p>
<p>
Break-out (birds-of-a-feather) sessions were up next and I facilitated one on <em>data curation</em>. Between ten and twelve of us participated, and in a nutshell we outlined a whole host of activities and issues surrounding the process of data management. After listing them all and listening to the things discussed more thoroughly by the group I was able to prioritize. (&#8220;Librarians love lists.&#8221;) At the top was, &#8220;We won&#8217;t get it right the first time&#8221;, and I certainly agree. Data management and data curation are the new kids on the block and consequently represent new challenges. At the same time, our profession seems obsessed with the creation of processes, implementations, and not evaluating the processes as needed. In our increasingly dynamic environment, such a way of thinking is not feasible. We will have to practice. We will have to show our ignorance. We will have to experiment. We will have to take risks. We will have to innovate. All of these things assume imperfection from the get go. At the same time the issues surrounding data management have a whole lot in common with issues surrounding just about any other medium. The real challenge is the application of our traditional skills to the current environment. A close second in the priorities was the perceived need for cross-institutional teams &#8212; groups of people including the office of research, libraries, computing centers, legal counsel, and of course researchers who generate data. Everybody has something to offer. Everybody has parts of the puzzle. But no one has all the pieces, all the experience, nor all the resources. Successful data management projects &#8212; defined in any number of ways &#8212; require skills from across the academe. Other items of note on the list included issues surrounding: human subjects, embargoing, institution repository versus discipline repositories, a host of ontologies, format migration, storage and back-up versus preservation and curation, &#8220;big data&#8221; and &#8220;little data&#8221;, entrenching one&#8217;s self in the research process, and unfunded mandates.
</p>
<table align='right'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/eric-at-c4l11.png" alt="text mining" /><br /><a href="./../wp-content/uploads/2011/03/c4l11/eric-at-c4l11.swf">text mining</a></td>
<tr>
</table>
<p>As a part of the second day&#8217;s Lighting Talks I shared a bit about <em><a href="http://zoia.library.nd.edu/sandbox/textmining4libraries/">text mining</a></em>. I demonstrated how the sizes of texts &#8212; measured in words &#8212; could be things we denote in our catalogs thus enabling people to filter results in an additional way. I demonstrated something similar with Fog, Flesch, and Kincaid scores. I illustrated these ideas with graphs. I alluded to the &#8220;colorfulness&#8221; of texts by comparing &amp; contrasting Thoreau with Austen. I demonstrated the idea of &#8220;in the same breath&#8221; implemented through network diagrams. And finally, I tried to describe how all of these techniques could be used in our &#8220;next generation library catalogs&#8221; or &#8220;discovery systems&#8221;. The associated video, here, was scraped from the high quality work done by the University of Indiana. &#8220;Thanks guys!&#8221;
</p>
<p>
At the end of the day we were given the opportunity to visit the University&#8217;s <em>data center</em>. It sounded a lot like a busman&#8217;s holiday to me so I signed up for the 6 o&#8217;clock show. I got on the little bus with a few other guys. One was from Australia. Another was from Florida. They were both wondering whether or not the weather was cold. It being around 10&deg; Fahrenheit I had to admit it was. The University is proud of their data center. It can withstand tornado-strength forces. It is built into the side of a hill. It is only have full, if that, which is another way of saying, &#8220;They have a lot of room to expand.&#8221; We saw the production area. We saw the research area. I was hoping to see lots of blinking lights and colorful, twisty cables, but the lights were few and the cables were all blue. We saw Big Red. I wanted to see where the network came in. &#8220;It is over there, in that room&#8221;. Holding up my hands I asked, &#8220;How big is the pipe?&#8221;. &#8220;Not very large,&#8221; was the reply, &#8220;and the fiber optic cable is only the size of a piece of hair.&#8221; It thought the whole thing was incongruous. All this infrastructure and it literally hangs on the end of a thread. One of the few people I saw employed by the data center made a comment while I was taking photographs. &#8220;Those are the nicest packaged cables you will ever see.&#8221; She was very proud of her handiwork, and I was happy to take a few pictures of them.
</p>
<table align='center'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/big-red.jpeg" alt="Big Red" /><br />Big Red</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/generator.jpeg" alt="generator" /><br />generator</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/even-more-wires.jpeg" alt="wires" /><br />wires</td>
<tr>
</table>
<h2>Day #3 (Thursday, February 10)</h2>
<p>
The last day of the conference began with a presentation by <strong>Jason Casden</strong> and <strong>Joyce Chapman</strong> (North Carolina State University Libraries) with <em>Building a open source staff-facing tablet app for library assessment</em>. In it they first described how patron statistics were collected. Lots of paper. Lots of tallies. Lots of data entry. Little overall coordination. To resolve this problem they created a tablet-based tool allowing the statistics collector to roam through the library, quickly tally how many people were located where and doing what, and update a centralized database rather quickly. Their implementation was an intelligent use of modern technology. Kudos.
</p>
<p>
<strong>Ian Mulvany</strong> (Medeley) was a bit of an entrepreneur when he presented <em>Medeley&#8217;s API and university libraries: Three example to create value</em> on behalf of <strong>Jan Reichelt</strong>. His tool, <a href="http://www.mendeley.com/">Medeley</a>, is intended to solve real problems for scholars: making them more efficient as writers, and more efficient as discoverers. To do this he provides a service where PDF files are saved centrally, analyzed for content, and enhanced through crowd sourcing. Using Medeley&#8217;s API things such as reading lists, automatic repository deposit, or &#8220;library dashboard&#8221; applications could be written. As of this writing Medeley is sponsoring a contest with cash prizes to see who can create the most interesting application from their API. Frankly, the sort of application described by Reichelt is the sort of application I think the library community should have created a few years ago.
</p>
<p>
In <em>Practical relevancy testing</em>, <strong>Naomi Dushay</strong> (Stanford University) advocated doing usability testing against the full LAMP stack. To do this she uses a program called <a href="http://cukes.info/">Cucumber</a> to design usability tests, run them, look at the results, adjust software configurations, and repeat.
</p>
<p>
<strong>Kevin Clarke</strong> (NESCent) in <em>Sharing between data repositories</em> first compared &amp; contrasted two repository systems: Dryad and TreeBase. Both have their respective advantages &amp; disadvantages. As a librarian he understands why it is good idea to have the same content in both systems. To this end he outlined and described how such a goal could be accomplished using a file packaging format called <a href="https://wiki.ucop.edu/display/Curation/BagIt">BagIt</a>.
</p>
<p>
The final presentation of the conference was given by <strong>Eric Hellman</strong> (Gluejar, Inc) and called <em>Why (Code4) libraries exist</em>. In it he posited that more than half of the books sold in the near future will be in ebook format. If this happens, then, he asked, will libraries become obsolete? His answer was seemingly both no and yes. &#8220;Libraries need to change in order to continue to exists, but who will drive this change? Funding agencies? Start-up companies? Publishers? OCLC? ILS vendors?&#8221; None of these things, he says. Instead, it may be the coders but we (the Code4Lib community) have a number of limitations. We are dispersed, poorly paid, self-trained, and too practical. In short, none of the groups he outlined entirely have what it takes to keep libraries alive. On the other hand, he said, maybe libraries are not really about books. Instead, maybe, they are about space, people, and community. In the end Hellman said, &#8220;We need to teach, train, and enable people to use information.&#8221;
</p>
<table align='center'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/conference-center.jpeg" alt="conference center" /><br />conference center</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/bell.jpeg" alt="bell" /><br />bell</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/hidden-flywheel.jpeg" alt="hidden flywheel" /><br />hidden flywheel</td>
<tr>
</table>
<h2>Summary</h2>
<p>
All in all the presentations were pretty much what I expected and pretty much what was intended. Everybody was experiencing some sort of computing problem in their workplace. Everybody used different variations of the LAMP stack (plus an indexer) to solve their problems. The presenters shared their experience with these solutions. Each presentation was like variations of a 12-bar blues. A basic framework is assumed, and the individual uses the framework to accomplish to create beauty. If you like the idea of the blues framework, then you would have liked the Code4Lib presentations. I like the blues.
</p>
<p>
In the past eight months I&#8217;ve attended at least four professional conferences: <a href="./../2010/07/digital-humanities-2010-a-travelogue/index.html">Digital Humanities 2010</a> (July), <a href="./../2010/10/ecdl2010/index.html">ECDL 2010</a> (September), <a href="http://blogs.nd.edu/emorgan/2010/12/6th-international-data-curation-conference/">Data Curation 2010</a> (December), and Code4Lib 2011 (February). Each one had about 300 people in attendance. Each one had something to do with digital libraries. Two were more academic in nature. Two were more practical. All four were communities unto themselves; at each conference there were people of the in-crowd, new comers, and folks in between. Many, but definitely not most, of the people I saw were a part of the other conferences but none of them were at all four. All of the conferences shared a set of common behavioral norms and at the same time owned a set of inside jokes. We need to be careful and not go around thinking our particular conference or community is the best. Each has something to offer the others. I sincerely do not think there is a &#8220;best&#8221; conference.
</p>
<p>
The <a href="http://code4lib.org/">Code4Lib community</a> has a lot to offer the wider library profession. If the use of computers in libraries is only going to grow (which is an understatement), then a larger number of people who practice librarianship will need/want to benefit from Code4Lib&#8217;s experience. Yet the existing Code4Lib community is reluctant to change the format of the conference to accomodate a greater number of people. Granted, larger numbers of attendees make it more difficult to find venues, enable a single shared conference experience, and necessitates increased governance and bureaucracy. Such are the challenges of a larger group. I think the Code4Lib community is growing and experiencing growing pains. The mailing list increases by at least one or two new subscribers every week. The regional Code4Lib meetings continue. The journal is doing just fine. Code4Lib is a lot like the balance of the library profession. Practical. Accustomed to working on a shoe string. Service oriented. Without evolving in some way, the knowledge of Code4Libbers is not going to have a substancial effect on the wider library community. This makes me sad.
</p>
<p>
Next year&#8217;s conference &#8212; <a href="http://sites.google.com/site/code4lib2012seattle/">Code4Lib 2012</a> &#8212; will be held in Seattle (Washington). See you there?
</p>
<table align='center'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2011/03/c4l11/wires.jpeg" alt="wires" /><br />wires</td>
<td><img src="./../wp-content/uploads/2011/03/c4l11/self-portrat.jpeg" alt="self-portrait" /><br />self-portrait</td>
<tr>
</table>
]]></content:encoded>
							<wfw:commentRss>./../2011/03/code4lib-conference-2011/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Foray&#8217;s into parts-of-speech</title>
		<link>./../2011/02/forays-into-parts-of-speech/index.html</link>
				<comments>./../2011/02/forays-into-parts-of-speech/index.html#comments</comments>
				<pubDate>Sun, 06 Feb 2011 00:33:06 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[digital humanities]]></category>

		<guid isPermaLink="false">./../index.html?p=720</guid>
				<description><![CDATA[This posting is the first of my text mining essays focusing on parts-of-speech. Based on the most rudimentary investigations, outlined below, it seems as if there is not much utility in the classification and description of texts in terms of their percentage use of parts-of-speech. Background For the past year or so I have spent [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting is the first of my text mining essays focusing on parts-of-speech. Based on the most rudimentary investigations, outlined below, it seems as if there is not much utility in the classification and description of texts in terms of their percentage use of parts-of-speech.
</p>
<h2>Background</h2>
<p>
For the past year or so I have spent a lot of my time counting words. Many of my friends and colleagues look at me strangely when I say this. I have to admit, it does sound sort of weird. On the other hand, the process has enabled me to easily compare &#038; contrast entire canons in terms of length and readability, locate statistically significant words &#038; phrases in individual works, and visualize both with charts &#038; graphs. Through the process I have developed two Perl modules (<a href="http://search.cpan.org/dist/Lingua-EN-Ngram/">Lingua::EN::Ngram</a> and <a href="http://search.cpan.org/dist/Lingua-Concordance/">Lingua::Concordance</a>), and I have integrated them into my <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>. Many people are still skeptical about the utility of these endeavors, and my implementations do not seem to be compelling enough to sway their opinions. Oh well, such is life.
</p>
<p>
My ultimate goal is to figure out ways to exploit the current environment and provide better library service. The current environment is rich with full text. It abounds. I ask myself, &#8220;How can I take advantage of this full text to make the work of students, teachers, and scholars both easier and more productive?&#8221; My current answer surrounds the creation of tools that take advantage of the full text &#8212; making it easier for people to &#8220;read&#8221; larger quantities of information, find patterns in it, and through the process create new knowledge.
</p>
<p>
Much of my work has been based on rudimentary statistics with little regard to linguistics. Through the use of computers I strive to easily find patterns of meaning across works &#8212; an aspect of linguistics. I think such a thing is possible because the use of language assumes systems and patterns. If it didn&#8217;t then communication between ourselves would be impossible. Computers are all about systems and patterns. They are very good at counting and recording data. By using computers to count and record characteristics of texts, I think it is possible to find patterns that humans overlook or don&#8217;t figure as significant. I would really like to take advantage of core reference works which are full of meaning &#8212; dictionaries, thesauri, almanacs, biographies, bibliographies, gazetteers, encyclopedias, etc. &#8212; but the ambiguous nature of written language makes the automatic application of such tools challenging. By classifying individual words as parts-of-speech (POS), some of this ambiguity can be reduced. This posting is my first foray into this line of reasoning, and only time will tell if it is fruitful.
</p>
<h2>Comparing parts-of-speech across texts</h2>
<p>
My first experiment compares &#038; contrasts POS usage across texts. &#8220;To what degree are there significant differences between authors&#8217; and genres&#8217; usage of various parts-of-speech?&#8221;, I asked myself. &#8220;Do some works contain a greater number of nouns, verbs, and adjectives than others?&#8221; If so, then maybe this would be one way to differentiate works, and make it easier for the student to both select a work for reading as well as understand its content.
</p>
<h3>POS tagging</h3>
<p>
To answer these questions, I need to first identify the POS in a document. In the English language there are eight generally accepted POS: 1) nouns, 2) pronouns, 3) verbs, 4) adverbs, 5) adjectives, 6) prepositions, 7) conjunctions, and 8) interjections. Since I am a &#8220;lazy Perl programmer&#8221;, I sought a POS tagger and in the end settled on one called <a href="http://search.cpan.org/dist/Lingua-TreeTagger/">Lingua::TreeTagger</a> &#8212; a full-featured wrapper around a command line driven application called <a href="http://www.ims.uni-stuttgart.de/projekte/corplex/TreeTagger/">Tree Tagger</a>. Using a process called the Hidden Markov Model, TreeTagger systematically goes through a document and guesses the POS for a given word. According to <a href="http://www.ims.uni-stuttgart.de/ftp/pub/corpora/tree-tagger1.pdf">the research</a>, it can do this with 96% accuracy because is has accurately modeled the systems and patterns of the English language alluded to above. For example, it knows that sentences begin with capital letters and end with punctuation marks. It knows that capitalized words in the middle of sentences are the names of things and the names of things are nouns. It knows that most adverbs end in &#8220;ly&#8221;. It knows that adjectives often precede nouns. Similarly, it knows the word &#8220;the&#8221; also precedes nouns. In short, it has done its best to model the syntactical nature of a number of languages and it uses these models to denote the POS in a document.
</p>
<p>
For example, below is the first sentence from Abraham Lincoln&#8217;s <cite>Gettysburg Address</cite>:
</p>
<blockquote>
<p>
Four score and seven years ago our fathers brought forth on this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.
</p>
</blockquote>
<p>
Using Lingua::TreeTagger it is trivial to convert the sentence into the following XML snippet where each element contains two attributes (a lemma of the word in question and its POS) and the word itself:
</p>
<blockquote>
<p>
<code>&lt;pos&gt;&lt;w lemma="Four" type="CD"&gt;Four&lt;/w&gt; &lt;w lemma="score" type="NN"&gt;score&lt;/w&gt; &lt;w lemma="and" type="CC"&gt;and&lt;/w&gt; &lt;w lemma="seven" type="CD"&gt;seven&lt;/w&gt; &lt;w lemma="year" type="NNS"&gt;years&lt;/w&gt; &lt;w lemma="ago" type="RB"&gt;ago&lt;/w&gt; &lt;w lemma="our" type="PP$"&gt;our&lt;/w&gt; &lt;w lemma="father" type="NNS"&gt;fathers&lt;/w&gt; &lt;w lemma="bring" type="VVD"&gt;brought&lt;/w&gt; &lt;w lemma="forth" type="RB"&gt;forth&lt;/w&gt; &lt;w lemma="on" type="IN"&gt;on&lt;/w&gt; &lt;w lemma="this" type="DT"&gt;this&lt;/w&gt; &lt;w lemma="continent" type="NN"&gt;continent&lt;/w&gt; &lt;w lemma="," type=","&gt;,&lt;/w&gt; &lt;w lemma="a" type="DT"&gt;a&lt;/w&gt; &lt;w lemma="new" type="JJ"&gt;new&lt;/w&gt; &lt;w lemma="nation" type="NN"&gt;nation&lt;/w&gt; &lt;w lemma="," type=","&gt;,&lt;/w&gt; &lt;w lemma="conceive" type="VVN"&gt;conceived&lt;/w&gt; &lt;w lemma="in" type="IN"&gt;in&lt;/w&gt; &lt;w lemma="Liberty" type="NP"&gt;Liberty&lt;/w&gt; &lt;w lemma="," type=","&gt;,&lt;/w&gt; &lt;w lemma="and" type="CC"&gt;and&lt;/w&gt; &lt;w lemma="dedicate" type="VVN"&gt;dedicated&lt;/w&gt; &lt;w lemma="to" type="TO"&gt;to&lt;/w&gt; &lt;w lemma="the" type="DT"&gt;the&lt;/w&gt; &lt;w lemma="proposition" type="NN"&gt;proposition&lt;/w&gt; &lt;w lemma="that" type="IN/that"&gt;that&lt;/w&gt; &lt;w lemma="all" type="DT"&gt;all&lt;/w&gt; &lt;w lemma="man" type="NNS"&gt;men&lt;/w&gt; &lt;w lemma="be" type="VBP"&gt;are&lt;/w&gt; &lt;w lemma="create" type="VVN"&gt;created&lt;/w&gt; &lt;w lemma="equal" type="JJ"&gt;equal&lt;/w&gt; &lt;w lemma="." type="SENT"&gt;.&lt;/w&gt;&lt;/pos&gt;<br />
</code>
</p>
</blockquote>
<p>
Each POS is represented by a different code. TreeTagger uses as many as 58 codes. Some of the less obscure are: CD for cardinal number, CC for conjunction, NN for noun, NNS for plural noun, JJ for adjective, VBP for the verb to be in the third-person plural, etc.
</p>
<p>
Using a slightly different version of the same trivial code, Lingua::TreeTagger can output a delimited stream where each line represents a record and the delimited values are words, lemmas, and POS. The first ten records from the sentence above are displayed below:
</p>
<table align="center">
<tr align="center" bgcolor="#CCCCCC">
<th align="left">Word</th>
<th>Lemma</th>
<th>POS</th>
</tr>
<tr>
<td>Four</td>
<td>Four</td>
<td>CD</td>
</tr>
<tr>
<td>score</td>
<td>score</td>
<td>NN</td>
</tr>
<tr>
<td>and</td>
<td>and</td>
<td>CC</td>
</tr>
<tr>
<td>seven</td>
<td>seven</td>
<td>CD</td>
</tr>
<tr>
<td>years</td>
<td>year</td>
<td>NNS</td>
</tr>
<tr>
<td>ago</td>
<td>ago</td>
<td>RB</td>
</tr>
<tr>
<td>our</td>
<td>our</td>
<td>PP$</td>
</tr>
<tr>
<td>fathers</td>
<td>father</td>
<td>NNS</td>
</tr>
<tr>
<td>brought</td>
<td>bring</td>
<td>VVD</td>
</tr>
<tr>
<td>forth</td>
<td>forth</td>
<td>RB</td>
</tr>
</table>
<p>
In the end I wrote a simple program &#8212;<a href="./../wp-content/uploads/2011/02/pos/tag.pl"> tag.pl</a> &#8212; taking a file name as input and streaming to standard output the tagged text in delimited form. Executing the code and saving the output to a file is simple:
</p>
<blockquote>
<p>
<code>$ bin/tag.pl corpus/walden.txt &gt; pos/walden.pos</code>
</p>
</blockquote>
<p>
Consequently, I now have a way to quickly and easily denote the POS for each word in a given plain text file.
</p>
<h3>Counting and summarizing</h3>
<p>
Now that the POS of a given document are identified, the next step is to count and summarize them. Counting is something at which computers excel, and I wrote another program &#8212; <a href="./../wp-content/uploads/2011/02/pos/summarize.pl">summarize.pl</a> &#8212; to do the work. The program&#8217;s input takes the following form:
</p>
<blockquote>
<p>
<code>summarize.pl &lt;all|simple|other|pronouns|nouns|verbs|adverbs|adjectives&gt; &lt;t|l&gt; &lt;filename&gt;</code>
</p>
</blockquote>
<p>
The first command line argument denotes what POS will be output. &#8220;All&#8221; denotes the POS defined by Tree Tagger. &#8220;Simple&#8221; denotes Tree Tagger POS mapped to the eight generally accepted POS of the English language. The use of &#8220;nouns&#8221;, &#8220;pronouns&#8221;, &#8220;verbs&#8221;, &#8220;adverbs&#8221;, and &#8220;adjectives&#8221; tells the script to output the tokens (words) or lemmas in each of these classes.
</p>
<p>
The second command line argument tells the script whether to tally tokens (words) or lemmas when counting specific items.
</p>
<p>
The last argument is the file to read, and it is expected to be in the form of tag.pl&#8217;s output.
</p>
<p>
Using summarize.pl to count the simple POS in Lincoln&#8217;s <cite>Address</cite>, the following output is generated:
</p>
<blockquote>
<p>
<code>$ summarize.pl simple t address.pos<br />
noun 41<br />
pronoun 29<br />
adjective 21<br />
verb 51<br />
adverb 31<br />
determiner 35<br />
preposition 39<br />
conjunction 11<br />
interjection 0<br />
symbol 2<br />
punctuation 39<br />
other 11<br />
</code>
</p>
</blockquote>
<p>
In other words, of the 272 words found in the <cite>Gettysburg Address</cite> 41 are nouns, 29 are pronouns, 21 are adjectives, etc.
</p>
<p>
Using a different from of the script, a list of all the pronouns in the <cite>Address</cite>, sorted by the number of occurances, can be generated:
</p>
<blockquote>
<p>
<code>$ summarize.pl pronouns t address.pos<br />
we 10<br />
it 5<br />
they 3<br />
who 3<br />
us 3<br />
our 2<br />
what 2<br />
their 1<br />
</code>
</p>
</blockquote>
<p>
In other words, the word &#8220;we&#8221; &#8212; a particular pronoun &#8212; was used 10 times in the <cite>Address</cite>.
</p>
<p>
Consequently, I now have tool enabling me to count the POS in a document.
</p>
<h3>Preliminary analysis</h3>
<p>
I now have the tools necessary to answer one of my initial questions, &#8220;Do some works contain a greater number of nouns, verbs, and adjectives than others?&#8221; To answer this I collected nine sets of documents for analysis:
</p>
<ol>
<li>Henry David Thoreau&#8217;s <cite><a href="http://infomotions.com/etexts/id/etext9846">Excursions</a></cite> (73,734 words; Flesch readability score: 57 )</li>
<li>Henry David Thoreau&#8217;s <cite><a href="http://infomotions.com/etexts/id/thoreau-walden-186">Walden</a></cite> (106,486 words; Flesch readability score: 55 )</li>
<li>Henry David Thoreau&#8217;s <cite><a href="http://infomotions.com/etexts/id/etext4232">A Week on the Concord and Merrimack Rivers</a></cite> (117,670 words; Flesch readability score: 56 )</li>
<li>Jane Austen&#8217;s <cite><a href="http://infomotions.com/etexts/id/austen-sense-758">Sense and Sensibility</a></cite> (119,625 words; Flesch readability score: 54 )</li>
<li>Jane Austen&#8217;s <cite><a href="http://infomotions.com/etexts/id/austen-northanger-755">Northanger Abbey</a></cite> (76,497 words; Flesch readability score: 58 )</li>
<li>Jane Austen&#8217;s <cite><a href="http://infomotions.com/etexts/id/austen-emma-754">Emma</a></cite> (156,509 words; Flesch readability score: 60 )</li>
<li><a href="./../wp-content/uploads/2010/06/services/plato.txt">all of the works of Plato</a> (1,162,460 words; Flesch readability score: 54 )</li>
<li><a href="./../wp-content/uploads/2010/06/services/aristotle.txt">all of the works of Aristotle</a> (950,078 words; Flesch readability score: 50 )</li>
<li><a href="./../wp-content/uploads/2010/06/services/shakespeare.txt">all of the works of Shakespear</a>e (856,594 words; Flesch readability score: 72 )</li>
</ol>
<p>
Using tag.pl I created POS files for each set of documents. I then used summary.pl to output counts of the simple POS from each POS file. For example, after creating a POS file for Walden, I summarized the results and learned that it contains 23,272 nouns, 10,068 pronouns, 8,118 adjectives, etc.:
</p>
<blockquote>
<p>
<code>$ summarize.pl simple t walden.pos<br />
noun 23272<br />
pronoun 10068<br />
adjective 8118<br />
verb 17695<br />
adverb 8289<br />
determiner 13494<br />
preposition 16557<br />
conjunction 5921<br />
interjection 37<br />
symbol 997<br />
punctuation 14377<br />
other 2632<br />
</code>
</p>
</blockquote>
<p>
I then copied this information into a spreadsheet and calculated the relative percentage of each POS discovering that 19% of the words in Walden are nouns, 8% are pronouns, 7% are adjectives, etc. See the table below:
</p>
<table align="center">
<tr align="center" bgcolor="#CCCCCC">
<th align="left">POS</th>
<th>%</th>
</tr>
<tr>
<td>noun</td>
<td align='right'>19</td>
</tr>
<tr>
<td>pronoun</td>
<td align='right'>8</td>
</tr>
<tr>
<td>adjective</td>
<td align='right'>7</td>
</tr>
<tr>
<td>verb</td>
<td align='right'>15</td>
</tr>
<tr>
<td>adverb</td>
<td align='right'>7</td>
</tr>
<tr>
<td>determiner</td>
<td align='right'>11</td>
</tr>
<tr>
<td>preposition</td>
<td align='right'>14</td>
</tr>
<tr>
<td>conjunction</td>
<td align='right'>5</td>
</tr>
<tr>
<td>interjection</td>
<td align='right'>0</td>
</tr>
<tr>
<td>symbol</td>
<td align='right'>1</td>
</tr>
<tr>
<td>punctuation</td>
<td align='right'>12</td>
</tr>
<tr>
<td>other</td>
<td align='right'>2</td>
</tr>
</table>
<p>
I repeated this process for each of the nine sets of documents and tabulated them here:
</p>
<table align="center">
<tr align="center" bgcolor="#CCCCCC">
<th align="right">POS</th>
<th>Excursions</th>
<th>Rivers</th>
<th>Walden</th>
<th>Sense</th>
<th>Northanger</th>
<th>Emma</th>
<th>Aristotle</th>
<th>Shakespeare</th>
<th>Plato</th>
<th>Average</th>
</tr>
<tr align="center">
<td align="right" bgcolor="#CCCCCC">noun</td>
<td>20</td>
<td>20</td>
<td>19</td>
<td>17</td>
<td>17</td>
<td>17</td>
<td>19</td>
<td>25</td>
<td>18</td>
<td>19</td>
</tr>
<tr align="center" bgcolor="#9999FF">
<td align="right" bgcolor="#CCCCCC">verb</td>
<td>14</td>
<td>14</td>
<td>15</td>
<td>16</td>
<td>16</td>
<td>17</td>
<td>15</td>
<td>14</td>
<td>15</td>
<td>15</td>
</tr>
<tr align="center">
<td align="right" bgcolor="#CCCCCC">punctuation</td>
<td>13</td>
<td>13</td>
<td>12</td>
<td>15</td>
<td>15</td>
<td>15</td>
<td>11</td>
<td>16</td>
<td>13</td>
<td>14</td>
</tr>
<tr align="center" bgcolor="#9999FF">
<td align="right" bgcolor="#CCCCCC">preposition</td>
<td>13</td>
<td>13</td>
<td>14</td>
<td>13</td>
<td>13</td>
<td>12</td>
<td>15</td>
<td>9</td>
<td>14</td>
<td>13</td>
</tr>
<tr align="center">
<td align="right" bgcolor="#CCCCCC">determiner</td>
<td>12</td>
<td>12</td>
<td>11</td>
<td>7</td>
<td>8</td>
<td>7</td>
<td>13</td>
<td>6</td>
<td>11</td>
<td>10</td>
</tr>
<tr align="center" bgcolor="#9999FF">
<td align="right" bgcolor="#CCCCCC">pronoun</td>
<td>7</td>
<td>7</td>
<td>8</td>
<td>12</td>
<td>11</td>
<td>11</td>
<td>5</td>
<td>11</td>
<td>7</td>
<td>9</td>
</tr>
<tr align="center">
<td align="right" bgcolor="#CCCCCC">adverb</td>
<td>6</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>8</td>
<td>8</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>7</td>
</tr>
<tr align="center" bgcolor="#9999FF">
<td align="right" bgcolor="#CCCCCC">adjective</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>5</td>
<td>6</td>
<td>6</td>
<td>7</td>
<td>5</td>
<td>6</td>
<td>6</td>
</tr>
<tr align="center">
<td align="right" bgcolor="#CCCCCC">conjunction</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>5</td>
<td>3</td>
<td>6</td>
<td>4</td>
</tr>
<tr align="center" bgcolor="#9999FF">
<td align="right" bgcolor="#CCCCCC">other</td>
<td>2</td>
<td>2</td>
<td>2</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
</tr>
<tr align="center">
<td align="right" bgcolor="#CCCCCC">symbol</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>1</td>
<td>1</td>
</tr>
<tr align="center" bgcolor="#9999FF">
<td align="right" bgcolor="#CCCCCC">interjection</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tfoot align="center">
<td align="center" colspan="11">Percentage and average of parts-of-speech usage in 9 works or corpra</td>
</tfoot>
</table>
<p>
The result was very surprising to me. <strong>Despite the wide range of document sizes, and despite the wide range of genres, the relative percentages of POS are very similar across all of the documents.</strong> The last column in the table represents the average percentage of each POS use. Notice how the each individual POS value differs very little from the average.
</p>
<p>
This analysis can be illustrated in a couple of ways. First, below are nine pie charts. Each slice of each pie represents a different POS. Notice how all the dark blue slices (nouns) are very similar in size. Notice how all the red slices (verbs), again, are very similar. The only noticeable exception is in Shakespeare where there is a greater number of nouns and pronouns (dark green).
</p>
<table align="center">
<tr>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/excursions.png"><img src="./../wp-content/uploads/2011/02/pos/excursions.png" width="200"></a><br />Thoreau&#8217;s <cite>Excursions</cite></td>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/walden.png"><img src="./../wp-content/uploads/2011/02/pos/walden.png" width="200"></a><br />Thoreau&#8217;s <cite>Walden</cite></td>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/rivers.png"><img src="./../wp-content/uploads/2011/02/pos/rivers.png" width="200"></a><br />Thoreau&#8217;s <cite>Rivers</cite></td>
</tr>
<tr>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/sense.png"><img src="./../wp-content/uploads/2011/02/pos/sense.png" width="200"></a><br />Austen&#8217;s <cite>Sense</cite></td>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/northanger.png"><img src="./../wp-content/uploads/2011/02/pos/northanger.png" width="200"></a><br />Austen&#8217;s <cite>Northanger</cite></td>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/emma.png"><img src="./../wp-content/uploads/2011/02/pos/emma.png" width="200"></a><br />Austen&#8217;s <cite>Emma</cite></td>
</tr>
<tr>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/plato.png"><img src="./../wp-content/uploads/2011/02/pos/plato.png" width="200"></a><br />all of Plato</td>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/aristotle.png"><img src="./../wp-content/uploads/2011/02/pos/aristotle.png" width="200"></a><br />all of Aristotle</td>
<td align="center"><a href="./../wp-content/uploads/2011/02/pos/shakespeare.png"><img src="./../wp-content/uploads/2011/02/pos/shakespeare.png" width="200"></a><br />all of Shakespeare</td>
</tr>
</table>
<p>
The similarity across all the documents can be further illustrated with a line graph:
</p>
<p style='text-align: center'><a href="./../wp-content/uploads/2011/02/pos/pos.png"><img src="./../wp-content/uploads/2011/02/pos/pos.png" width="600" /></a></p>
<p>
Across the X axis is each POS. Up and down the Y axis is the percentage of usage. Notice how the values for each POS in each document are closely clustered. Each set of documents uses relatively the same number of nouns, pronouns, verbs, adjectives, adverbs, etc.
</p>
<p>
Maybe such a relationship between POS is one of the patterns of well-written documents? Maybe it is representative of works standing the test of time? I don&#8217;t know, but I doubt I am the first person to make such an observation.
</p>
<h2>Conclusion</h2>
<p>
My initial questions were, &#8220;To what degree are there significant differences between authors&#8217; and genres&#8217; usage of various parts-of-speech?&#8221; and &#8220;Do some works contain a greater number of nouns, verbs, and adjectives than others?&#8221; Based on this foray and rudimentary analysis the answers are, &#8220;No, there are not significant differences, and no, works do not contain different number of nouns, verbs, adjectives, etc.&#8221;
</p>
<p>
Of course, such a conclusion is faulty without further calculations. I will quite likely commit an error of induction if I base my conclusions on a sample of only nine items. While it would require a greater amount of effort on my part, it is not beyond possibility for me to calculate the average POS usage for every item in my Alex Catalogue. I know there will be some differences &#8212; especially considering the items having gone through optical character recognition &#8212; but I do not know the degree of difference. Such an investigation is left for a later time.
</p>
<p>
Instead, I plan to pursue a different line of investigation. The current work examined how texts were constructed, but in actuality I am more interested in the meanings works express. <em>I am interested in what they say more than how they say it.</em> Such meanings may be gleaned not so much from gross POS measurements but rather the words used to denote each POS. For example, the following table lists the 10 most frequently used pronouns and the number of times they occur in four works. Notice the differences:
</p>
<table align="center">
<tr align="center" bgcolor="#CCCCCC">
<th align="left">Walden</th>
<th align="left">Rivers</th>
<th align="left">Northanger</th>
<th align="left">Sense</th>
</tr>
<tr>
<td>I (1,809)</td>
<td>it (1,314)</td>
<td>her (1,554)</td>
<td>her (2,500)</td>
</tr>
<tr>
<td>it (1,507)</td>
<td>we (1,101)</td>
<td>I (1,240)</td>
<td>I (1,917)</td>
</tr>
<tr>
<td>my (725)</td>
<td>his (834)</td>
<td>she (1,089)</td>
<td>it (1,711)</td>
</tr>
<tr>
<td>he (698)</td>
<td>I (756)</td>
<td>it (1,081)</td>
<td>she (1,553)</td>
</tr>
<tr>
<td>his (666)</td>
<td>our (677)</td>
<td>you (906)</td>
<td>you (1,158)</td>
</tr>
<tr>
<td>they (614)</td>
<td>he (649)</td>
<td>he (539)</td>
<td>he (1,068)</td>
</tr>
<tr>
<td>their (452)</td>
<td>their (632)</td>
<td>his (524)</td>
<td>his (1,007)</td>
</tr>
<tr>
<td>we (447)</td>
<td>they (632)</td>
<td>they (379)</td>
<td>him (628)</td>
</tr>
<tr>
<td>its (351)</td>
<td>its (487)</td>
<td>my (342)</td>
<td>my (598)</td>
</tr>
<tr>
<td>who (340)</td>
<td>who (352)</td>
<td>him (278)</td>
<td>they (509)</td>
</tr>
</table>
<p>
While the lists are similar, they are characteristic of work from which they came. The first &#8212; <cite>Walden</cite> &#8212; is about an individual who lives on a lake. Notice the prominence of the word &#8220;I&#8221; and &#8220;my&#8221;. The second &#8212; Rivers &#8212; is written by the same author as the first but is about brothers who canoe down a river. Notice the higher occurrence of the word &#8220;we&#8221; and &#8220;our&#8221;. The later two works, both written by Jane Austin, are works with females as central characters. Notice how the words &#8220;her&#8221; and &#8220;she&#8221; appear in these lists but not in the former two. (Compare these lists of pronouns with the list from Lincoln&#8217;s <cite>Address</cite> and even more interesting things appear.) It looks as if there are patterns or trends to be measured here.
</p>
<p>
&#8216;More later.</p>
]]></content:encoded>
							<wfw:commentRss>./../2011/02/forays-into-parts-of-speech/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Visualizing co-occurrences with Protovis</title>
		<link>./../2011/01/visualizing-co-occurrences-with-protovis/index.html</link>
				<comments>./../2011/01/visualizing-co-occurrences-with-protovis/index.html#comments</comments>
				<pubDate>Mon, 10 Jan 2011 00:34:21 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[Protovis]]></category>

		<guid isPermaLink="false">./../index.html?p=714</guid>
				<description><![CDATA[This posting describes how I am beginning to visualize co-occurrences with a Javascript library called Protovis. Alternatively, I an trying to answer the question, &#8220;What did Henry David Thoreau say in the same breath when he used the word &#8216;walden&#8217;?&#8221; &#8220;In the same breath&#8221; Network diagrams are great ways to illustrate relationships. In such diagrams [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting describes how I am beginning to visualize co-occurrences with a Javascript library called Protovis. Alternatively, I an trying to answer the question, &#8220;What did Henry David Thoreau say in the same breath when he used the word &#8216;walden&#8217;?&#8221;
</p>
<h2>&#8220;In the same breath&#8221;</h2>
<p>
Network diagrams are great ways to illustrate relationships. In such diagrams nodes represent some sort of entity, and lines connecting nodes represent some sort of relationship. Nodes clustered together and sharing many lines denote some kind of similarity. Conversely, nodes whose lines are long and not interconnected represent entities outside the norm or at a distance. Network diagrams are a way of visualizing complex relationships.
</p>
<p>
Are you familiar with the phrase &#8220;in the same breath&#8221;? It is usually used to denote the relationship between one or more ideas. &#8220;He mentioned both &#8216;love&#8217; and &#8216;war&#8217; in the same breath.&#8221; This is exactly one of the things I want to do with texts. Concordances provide this sort of functionality. Given a word or phrase, a concordance will find the query in a corpus and display the words on either side of it. A KWIK (key word in context) index, concordances make it easier to read how words or phrases are used in relationship with their surrounding words. The use of network diagrams seem like good idea to see &#8212; visualize &#8212; how words or phrases are used within the context of surrounding words.
</p>
<p>
<a href="http://vis.stanford.edu/protovis/">Protovis</a> is a Javascript charting library developed by the <a href="http://vis.stanford.edu/">Stanford Visualization Group</a>. Using Protovis a developer can create all sorts of traditional graphs (histograms, box plots, line charts, pie charts, scatter plots) through a relatively easy-to-learn API (application programmer interface). One of the graphs Protovis supports is an interactive simulation of network diagrams called &#8220;<a href="http://vis.stanford.edu/protovis/ex/force.html">force-directed layouts</a>&#8220;. After experiencing some of the work done by a few of my colleagues (&#8220;Thank you <strong>Michael Clark</strong> and <strong>Ed Summers</strong>&#8220;), I wondered whether or not network diagrams could be used to visualize co-occurrences in texts. After discovering Protovis, I decided to try to implement something along these lines.
</p>
<h2>Implementation</h2>
<p>
The implementation of the visualization requires the recursive creation of a term matrix. Given a word (or regular expression), find the query in a text (or corpus). Identify and count the d most frequently used words within b number of characters. Repeat this process d times with each co-occurrence. For example, suppose the text is <cite><a href="http://infomotions.com/etexts/id/thoreau-walden-186">Walden</a></cite> by Henry David Thoreau, the query is &#8220;spring&#8221;, d is 5, and b is 50. The implementation finds all the occurrences of the word &#8220;spring&#8221;, gets the text 50 characters on either side of it, finds the 5 most commonly used words in those characters, and repeats the process for each of those words. The result is the following matrix:
</p>
<table cellpadding='5'>
<tr>
<td>spring</td>
<td>day</td>
<td>morning</td>
<td>first</td>
<td>winter</td>
</tr>
<tr>
<td>day</td>
<td>days</td>
<td>night</td>
<td>every</td>
<td>today</td>
</tr>
<tr>
<td>morning</td>
<td>spring</td>
<td>say</td>
<td>day</td>
<td>early</td>
</tr>
<tr>
<td>first</td>
<td>spring</td>
<td>last</td>
<td>yet</td>
<td>though</td>
</tr>
<tr>
<td>winter</td>
<td>summer</td>
<td>pond</td>
<td>like</td>
<td>snow</td>
</tr>
</table>
<p>
Thus, the most common co-occurrences for the word &#8220;spring&#8221; are &#8220;day&#8221;, &#8220;morning&#8221;, &#8220;first&#8221;, and &#8220;winter&#8221;. Each of these co-occurrences are recursively used to find more co-occurrences. In this example, the word &#8220;spring&#8221; co-occurs with times of day and seasons. These words then co-occur with more times of day and more seasons. Similarities and patterns being to emerge. Depending on the complexity of a writer&#8217;s sentence structure, the value of b (&#8220;breath&#8221;) may need to be increased or decreased. As the value of d (&#8220;detail&#8221;) is increased or decreased so does the number of co-occurrences to return.
</p>
<p>
Once this matrix is constructed, Protovis requires it to be converted into a simple JSON (Javascript Object Notation) data structure. In this example, &#8220;spring&#8221; points to &#8220;day&#8221;, &#8220;morning&#8221;, &#8220;first&#8221;, and &#8220;winter&#8221;. &#8220;Day&#8221; points to &#8220;days&#8221;, &#8220;night&#8221;, &#8220;every&#8221;, and &#8220;today&#8221;. Etc. As terms point to multiples of other terms, a network diagram is manifested, and the magic of Protovis is put to work. See the following illustration:
</p>
<table>
<tr>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/walden-spring.png" alt="spring in walden" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/walden/?q=spring&amp;r=50&amp;t=5" target="_blank">&#8220;spring&#8221; in Walden</a></td>
</tr>
</table>
<p>
It is interesting enough to see the co-occurrences of any given word in a text, but it is even more interesting to compare the co-occurrences between texts. Below are a number of visualizations from Thoreau&#8217;s <cite>Walden</cite>. Notice how the word &#8220;walden&#8221; frequently co-occurs with the words &#8220;pond&#8221;, &#8220;water&#8221;, and &#8220;woods&#8221;. This makes a lot of sense because Walden Pond is a pond located in the woods. Notice how the word &#8220;fish&#8221; is associated with &#8220;pond&#8221;, &#8220;fish&#8221;, and &#8220;fishing&#8221;. Pretty smart, huh?
</p>
<table>
<tr>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/walden-walden.png" alt="walden in walden" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/walden/?q=walden&amp;r=40&amp;t=5" target="_blank">&#8220;walden&#8221; in <cite>Walden</cite></a></td>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/walden-fish.png" alt="fish in walden" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/walden/?q=fish&amp;r=45&amp;t=4" target="_blank">&#8220;fish&#8221; in <cite>Walden</cite></a></td>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/walden-woodchuck.png" alt="woodchuck in walden" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/walden/?q=woodchuck&amp;r=50&amp;t=7" target="_blank">&#8220;woodchuck&#8221; in <cite>Walden</cite></a></td>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/walden-woods.png" alt="woods in walden" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/walden/" target="_blank">&#8220;woods&#8221; in <cite>Walden</cite></a></td>
</tr>
</table>
<p>
Compare these same words with the co-occurrences in a different work by Thoreau, <cite><a href="http://infomotions.com/etexts/id/etext4232">A Week on the Concord and Merrimack Rivers</a></cite>. Given the same inputs the outputs are significantly different. For example, notice the difference in co-occurrences given the word &#8220;woodchuck&#8221;.
</p>
<table>
<tr>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/rivers-walden.png" alt="walden in rivers" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/rivers/?q=walden&amp;r=40&amp;t=5" target="_blank">&#8220;walden&#8221; in <cite>Rivers</cite></a></td>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/rivers-fish.png" alt="fish in rivers" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/rivers/?q=fish&amp;r=45&amp;t=4" target="_blank">&#8220;fish&#8221; in <cite>Rivers</cite></a></td>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/rivers-woodchuck.png" alt="woodchuck in walden" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/rivers/?q=woodchuck&amp;r=50&amp;t=7" target="_blank">&#8220;woodchuck&#8221; in <cite>Rivers</cite></a></td>
<td align='center'><img src="./../wp-content/uploads/2011/01/visualizing/rivers-woods.png" alt="woods in rivers" width="200" height="200" /><br /><a href="http://infomotions.com/sandbox/network-diagrams/bin/rivers/" target="_blank">&#8220;woods&#8221; in <cite>Rivers</cite></a></td>
</tr>
</table>
<h2>Give it a try</h2>
<p>
Give it a try for yourself. I have written three CGI scripts implementing the things outlined above:
</p>
<ul>
<li><a href="http://infomotions.com/sandbox/network-diagrams/bin/walden/" target="_blank">Walden by Thoreau</a></li>
<li><a href="http://infomotions.com/sandbox/network-diagrams/bin/rivers/" target="_blank">A Week on the Concord and Merrimack Rivers by Thoreau</a></li>
<li><a href="http://infomotions.com/sandbox/network-diagrams/bin/finn/" target="_blank">Adventures of Huckleberry Finn by Twain</a></li>
</ul>
<p>
In each implementation you are given the opportunity to input your own queries, define the &#8220;size of the breath&#8221;, and the &#8220;level of detail&#8221;. The result is an interactive network diagram visualizing the most frequent co-occurrences of a given term.
</p>
<p>
The root of the Perl source code is located at <a href="http://infomotions.com/sandbox/network-diagrams/" target="_blank">http://infomotions.com/sandbox/network-diagrams/</a>.
</p>
<h2>Implications for librarianship</h2>
<p>
The visualization of co-occurrences obviously has implications for text mining and the digital humanities, but it also has implications for the field of librarianship.
</p>
<p>
Given the current environment where data and information abound in digital form, libraries have found themselves in an increasingly competitive environment. <em>What are libraries to do?</em> Lest they become marginalized, librarians can not rest on their &#8220;public good&#8221; laurels. Merely providing access to information is not good enough. Everybody feels as if they have plenty of access to information. What is needed are methods and tools for making better use of the data and information they acquire. Implementing text mining and visualization interfaces are one way to accomplish that goal within context of online library services. Do a search in the &#8220;online catalog&#8221;. Create a subset of interesting content. Click a button to read the content from a distance. Provide ways to analyze and summarize the content thus saving the time of the reader.
</p>
<p>
Us librarians have to do something differently. Think like an entrepreneur. Take account of your resources. Examine the environment. Innovate and repeat.</p>
]]></content:encoded>
							<wfw:commentRss>./../2011/01/visualizing-co-occurrences-with-protovis/feed/index.html</wfw:commentRss>
		<slash:comments>12</slash:comments>
							</item>
		<item>
		<title>MIT&#8217;s SIMILE timeline widget</title>
		<link>./../2010/12/mits-simile-timeline-widget/index.html</link>
				<comments>./../2010/12/mits-simile-timeline-widget/index.html#comments</comments>
				<pubDate>Tue, 21 Dec 2010 01:04:04 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[timelines]]></category>

		<guid isPermaLink="false">./../index.html?p=707</guid>
				<description><![CDATA[For a good time, I took a stab at learning how to implement a MIT SIMILE timeline widget. This posting describes what I learned. Background The MIT SIMILE Widgets are a set of cool Javascript tools. There are tools for implementing &#8220;exhibits&#8221;, time plots, &#8220;cover flow&#8221; displays a la iTunes, a couple of other things, [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
For a good time, I took a stab at learning how to implement a MIT SIMILE timeline widget. This posting describes what I learned.
</p>
<h2>Background</h2>
<p>
The <a href="http://www.simile-widgets.org/">MIT SIMILE Widgets</a> are a set of cool Javascript tools. There are tools for implementing &#8220;exhibits&#8221;, time plots, &#8220;cover flow&#8221; displays a la iTunes, a couple of other things, and interactive timelines. I have always had a fondness for timelines since college when I created one to help me study for my comprehensive examinations. Combine this interest with the rise of digital humanities and my belief that library data is too textual in nature, I decided to learn how to use the timeline widget. Maybe this tool can be used in Library Land?
</p>
<p style='text-align: center; font-size: small'>
<img src='http://infomotions.com/sandbox/timeline/timeline.png' width='420' alt='timeline' /><br />
Screen shot of <a href="http://infomotions.com/sandbox/timeline/">local timeline implementation</a>
</p>
<h2>Implementation</h2>
<p>
The family of SIMILE Widgets Web pages includes a number of <a href="http://www.simile-widgets.org/timeline/examples/">sample timelines</a>. By playing with the examples you can see the potencial of the tool. Going through the <a href="http://code.google.com/p/simile-widgets/wiki/Timeline_GettingStarted">Getting Started guide</a> was completely necessary since the Widget documentation has been written, re-written, and moved to other platforms numerous times. Needless to say, I found the instructions difficult to use. In a nutshell, using the Timeline Widget requires the developer to:
</p>
<ol>
<li>load the libraries</li>
<li>create and modify a timeline object</li>
<li>create a data file</li>
<li>load the data file</li>
<li>render the timeline</li>
</ol>
<p>
Taking hints from &#8220;<a href="http://code.google.com/p/simile-widgets/wiki/Timeline_In_the_Wild">timelines in the wild</a>&#8220;, I decided to plot my writings &#8212; dating from 1989 to the present. Luckily, just about all of them are available via RSS (Really Simple Syndication), and they include:
</p>
<ul>
<li><a href="http://www.catholicresearch.net/blog/">CRRA Blog</a></li>
<li><a href="http://blogs.nd.edu/emorgan/">Days in the Life of a Librarian</a></li>
<li><a href="./../index.html">Infomotions Mini-Musings</a></li>
<li><a href="http://infomotions.com/musings/">Musings on Information and Librarianship</a></li>
<li><a href="http://infomotions.com/water/index.xml">Water Collection</a></li>
</ul>
<p>
Consequently, after writing my implementation&#8217;s framework, the bulk of the work was spent converting RSS files into an XML file the widget could understand. In the end I:
</p>
<ul>
<li>created an HTML file complete with the widget framework</li>
<li>downloaded the totality of RSS entries from all my my RSS feeds</li>
<li>wrote a slightly different XSL file for each RSS feed</li>
<li>wrote a rudimentary shell script to loop through each XSL/RSS combination and create a data file</li>
<li>put the whole thing on the Web</li>
</ul>
<p>
You can see the fruits of these labors on a page called <a href="http://infomotions.com/sandbox/timeline/">Eric Lease Morgan&#8217;s Writings Timeline</a>, and you can download the source code &#8212; <a href="http://infomotions.com/sandbox/timeline/timeline-2010-12-20.tar.gz">timeline-2010-12-20.tar.gz</a>. From there a person can scroll backwards and forwards in time, click on events, read an abstract of the writing, and hyperlink to the full text. The items from the Water Collection work in the same way but also include a thumbnail image of the water. Fun!?
</p>
<h2>Take-aways</h2>
<p>
I have a number of take-aways. First, my implementation is far from perfect. For example, the dates from the Water Collection are not correctly formatted in the data file. Consequently, different Javascript interpreters render the dates differently. Specifically, the Water Collection links to not show up in Safari, but they do show up in Firefox. Second, the timeline is quite cluttered in some places. There has got to be a way to address this. Third, timelines are a great way to visualize events. From the implementation you can readily see what how often I was writing and on what topics. The presentation makes so much more sense compared to a simple list sorted by date, title, or subject terms.
</p>
<p>
Library &#8220;discovery systems&#8221; could benefit from the implementation of timelines. Do a search. Get back a list of results. Plot them on a timeline. Allow the learner, teacher, or scholar to visualize &#8212; literally see &#8212; how the results of their query compare to one another. The ability to visualize information hinges on the ability to quantify information characteristics. In this case, the quantification is a set of dates. Alas,  dates in our information systems are poorly recorded. It seems as if we &#8212; the library profession &#8212; have made it difficult for ourselves to participate in the current information environment.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/12/mits-simile-timeline-widget/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Illustrating IDCC 2010</title>
		<link>./../2010/12/illustrating-idcc-2010/index.html</link>
				<comments>./../2010/12/illustrating-idcc-2010/index.html#comments</comments>
				<pubDate>Thu, 09 Dec 2010 01:52:48 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[idcc10]]></category>

		<guid isPermaLink="false">./../index.html?p=702</guid>
				<description><![CDATA[This posting illustrates the &#8220;tweets&#8221; assigned to the hash tag #idcc10. I more or less just got back from the 6th International Data Curation Conference that took place in Chicago (Illinois). Somewhere along the line I got the idea of applying digital humanities computing techniques against the conference&#8217;s Twitter feed &#8212; hash tag #idcc10. After [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting illustrates the &#8220;tweets&#8221; assigned to the hash tag #idcc10.
</p>
<p>
I more or less just got back from the <a href="http://www.dcc.ac.uk/events/conferences/6th-international-digital-curation-conference">6th International Data Curation Conference</a> that took place in Chicago (Illinois). Somewhere along the line I got the idea of applying digital humanities computing techniques against the conference&#8217;s Twitter feed &#8212; hash tag #idcc10. After installing a Perl module implementing the Twitter API (<a href="http://search.cpan.org/dist/Net-Twitter-Lite/">Net::Twitter::Lite</a>), I wrote a quick hack, fed the results to <a href="http://wordle.net/">Wordle</a>, and got the following word cloud:
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2010/12/idcc10.png" alt="idcc10" width="640">
</p>
<p>
What sorts of conclusions can you make based on the content of the graphic?
</p>
<p>
The output static and rudimentary. What I&#8217;d really like to do is illustrate the tweets over time. Get the oldest tweets. Illustrate the result. Get the newer tweets. Update the illustration. Repeat for all the tweets. Done. In the end I see some sort of moving graphic where significant words represent bubbles. The size of the bubbles grow in size depending on number of times they are used. Each bubble is attached to other bubbles with a line representing associations. The color of the bubbles might represent parts of speech. Using this technique a person could watch the ebb and flow of the virtual conversation.
</p>
<p>
For a good time time, you can also download the Perl script used to create the textual output. Called <a href="./../wp-content/uploads/2010/12/twitter.pl">twitter.pl</a>, it is only forty-three lines long and many of those lines are comments.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/12/illustrating-idcc-2010/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>Ruler &#038; Compass by Andrew Sutton</title>
		<link>./../2010/12/ruler-compass-by-andrew-sutton/index.html</link>
				<comments>./../2010/12/ruler-compass-by-andrew-sutton/index.html#comments</comments>
				<pubDate>Mon, 06 Dec 2010 01:44:48 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[geometry]]></category>

		<guid isPermaLink="false">./../index.html?p=693</guid>
				<description><![CDATA[I most thoroughly enjoyed reading and recently learning from a book called Ruler &#38; Compass by Andrew Sutton. The other day, while perusing the bookstore for a basic statistics book, I came across Ruler &#38; Compass by Andrew Sutton. Having always been intrigued by geometry and the use of only a straight edge and compass [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0802717764?ie=UTF8&amp;tag=infomotions-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0802717764"><img src="./../wp-content/uploads/2010/12/ruler/cover.jpg" align="right" hspace="5" vspace="5" /></a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&amp;l=as2&amp;o=1&amp;a=0802717764" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />I most thoroughly enjoyed reading and recently learning from a book called <cite>Ruler &amp; Compass</cite> by Andrew Sutton.</p>
<p>The other day, while perusing the bookstore for a basic statistics book, I came across <a href="http://www.amazon.com/gp/product/0802717764?ie=UTF8&amp;tag=infomotions-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0802717764"><cite>Ruler &amp; Compass</cite> by Andrew Sutton</a>. Having always been intrigued by geometry and the use of only a straight edge and compass to describe a Platonic cosmos, I purchased this very short book, a ruler, and a compass with little hesitation. I then rushed home to draw points, lines, and circles for the purposes of constructing angles, perpendiculars, bisected angles, tangents, all sorts of regular polygons, and combinations of all the above to create beautiful geometric patterns. I was doing mathematics, but not a single number was to be seen. Yes, I did create ratios but not with integers, and instead with the inherent lengths of lines. Facinating!</p>
<p style='text-align: center'>
<table cellpadding="10" align='center' bgcolor="#FFCC00">
<tr align='center'>
<td><img src="./../wp-content/uploads/2010/12/ruler/triangle.gif" height="120" /></td>
</tr>
<tr align='center'>
<td><a href="./../wp-content/uploads/2010/12/ruler/triangle.gif">triangle</a></td>
</tr>
<tr align='center'>
<td><img src="./../wp-content/uploads/2010/12/ruler/square.gif" height="120" /></td>
<td><img src="./../wp-content/uploads/2010/12/ruler/pentagon.gif" height="120" /></td>
</tr>
<tr align='center'>
<td><a href="./../wp-content/uploads/2010/12/ruler/square.gif">square</a></td>
<td><a href="./../wp-content/uploads/2010/12/ruler/pentagon.gif">pentagon</a></td>
</tr>
<tr align='center'>
<td><img src="./../wp-content/uploads/2010/12/ruler/hexagon.gif" height="120" /></td>
<td><img src="./../wp-content/uploads/2010/12/ruler/elipse.gif" height="120" /></td>
<td><img src="./../wp-content/uploads/2010/12/ruler/golden.gif" height="120" /></td>
</tr>
<tr align='center'>
<td><a href="./../wp-content/uploads/2010/12/ruler/hexagon.gif">hexagon</a></td>
<td><a href="./../wp-content/uploads/2010/12/ruler/elipse.gif">elipse</a></td>
<td><a href="./../wp-content/uploads/2010/12/ruler/golden.gif">&#8220;golden&#8221; ratio</a></td>
</tr>
</table>
<p>Geometry is not a lot unlike both music and computer programming. All three supply the craftsman with a set of basic tools. Points. Lines. Circles. Tones. Durations. Keys. If-then statements. Variables. Outputs. Given these &#8220;things&#8221; a person is empowered to combine, compound, synthesize, analyze, create, express, and describe. They are mediums for both the artist and scientists. Using them effectively requires thinking as well as &#8220;<a href="http://infomotions.com/musings/pointers/ladderofunderstanding.html">thinquing</a>&#8220;. All three are <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscient</a> processes.</p>
<p>Anybody could benefit by reading Sutton&#8217;s book and spending a few lovely hours practicing the geometric constructions contained therein. I especially recommend this activity to my fellow librarians. The process is not only intellectually stimulating but invigorating. Librarianship is not all about service or collections. It is also about combining and reconstituting core principles &#8212; collection, organization, preservation, and dissemination. There is an analogy to be waiting to be seen here. Reading and doing the exercises in <cite>Ruler &amp; Compass</cite> will make this plainly visible.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/12/ruler-compass-by-andrew-sutton/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Text mining Charles Dickens</title>
		<link>./../2010/12/text-mining-charles-dickens/index.html</link>
				<comments>./../2010/12/text-mining-charles-dickens/index.html#comments</comments>
				<pubDate>Sat, 04 Dec 2010 13:03:30 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>
		<category><![CDATA[digital humanities]]></category>

		<guid isPermaLink="false">./../index.html?p=690</guid>
				<description><![CDATA[This posting outlines how a person can do a bit of text mining against three works by Charles Dickens using a set of two Perl modules &#8212; Lingua::EN::Ngram and Lingua::Concordance. Lingua::EN::Ngram I recently wrote a Perl module called Lingua::EN::Ngram. Its primary purpose is to count all the ngrams (two-word phrases, three-word phrases, n-word phrases, etc.) [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting outlines how a person can do a bit of text mining against three works by Charles Dickens using a set of two Perl modules &#8212; Lingua::EN::Ngram and Lingua::Concordance.</p>
<h2>Lingua::EN::Ngram</h2>
<p>I recently wrote a Perl module called Lingua::EN::Ngram. Its primary purpose is to count all the ngrams (two-word phrases, three-word phrases, n-word phrases, etc.) in a given text. For two-word phrases (bigrams) it will order the output according to a statistical probability (t-score). Given a number of texts, it will count the ngrams common across the corpus. As of version 0.02 it supports non-ASCII characters making it possible to correctly read and parse a greater number of Romantic languages &#8212; meaning it correctly interprets characters with diacritics. <a href="http://search.cpan.org/dist/Lingua-EN-Ngram/">Lingua::EN::Ngram is available from CPAN</a>.</p>
<h2>Lingua::Concordance</h2>
<p>Concordances are just about the oldest of textual analysis tools. Originally developed in the Late Middle Ages to analyze the Bible, they are essentially KWIC (keyword in context) indexes used to search and display ngrams within the greater context of a work. Given a text (such as a book or journal article) and a query (regular expression), Lingua::Concordance can display the occurrences of the query in the text as well as map their locations across the entire text. In a previous blog posting I used Lingua::Concordance to <a href="./../2010/06/the-next-next-generation-library-catalog/index.html">compare &amp; contrast the use of the phrase &#8220;good man&#8221;</a> in the works of Aristotle, Plato, and Shakespeare. <a href="http://search.cpan.org/dist/Lingua-Concordance/">Lingua::Concordance too is available from CPAN</a>.</p>
<h2>Charles Dickens</h2>
<p>In keeping with the season, I wondered about Charles Dickens&#8217;s <cite>A Christmas Carol</cite>. How often is the word &#8220;Christmas&#8221; used in the work and where? In terms of size, how does <cite>A Christmas Carol</cite> compare to some of other Dickens&#8217;s works? Are there sets of commonly used words or phrases between those texts?</p>
<p>Answering the first question was relatively easy. The word &#8220;Christmas&#8221; is occurs eighty-six (86) times, and twenty-two (22) of those occurrences are in the the first ten percent (10%) of the story. The following bar chart illustrates these facts:</p>
<p style="text-align: center">
<img src="./../wp-content/uploads/2010/12/bar-chart.png" alt="bar chart" width="240"></p>
<p>The length of books (or just about any text) measured in pages in ambiguous, at best. A much more meaningful measure is number of words. The following table lists the sizes, in words, of three Dickens stories:</p>
<table cellpadding="5"></table>
<table>
<tbody>
<tr>
<th>story</th>
<th>size in words</th>
</tr>
<tr>
<td><cite>A Christmas Carol</cite></td>
<td>28,207</td>
</tr>
<tr>
<td><cite>Oliver Twist</cite></td>
<td>156,955</td>
</tr>
<tr>
<td><cite>David Copperfield</cite></td>
<td>355,203</td>
</tr>
</tbody>
</table>
<p>For some reason I thought <cite>A Christmas Carol</cite> was much longer.</p>
<p>A long time ago I calculated the average size (in words) of the books in my <a href="http://infomotions.com/alex/">Alex Catalogue</a>. Once I figured this out, I discovered I could describe items in the collection based on relative sizes. The following &#8220;dial&#8221; charts bring the point home. Each one of the books is significantly different in size:</p>
<table>
<tbody>
<tr align="center">
<td><img src="./../wp-content/uploads/2010/12/christmas.png" alt="christmas carol" width="240"><br />
<cite>A Christmas Carol</cite></td>
<td><img src="./../wp-content/uploads/2010/12/twist.png" alt="oliver twist" width="240"><br />
<cite>Oliver Twist</cite></td>
<td><img src="./../wp-content/uploads/2010/12/copperfield.png" alt="david copperfield" width="240"><br />
<cite>David Copperfield</cite></td>
</tr>
</tbody>
</table>
<p>If a person were pressed for time, then which story would you be able to read?</p>
<p>After looking for common ngrams between texts, I discovered that &#8220;taken with a violent fit of&#8221; appears both<cite> David Copperfield</cite> and <cite>A Christmas Carol</cite>. Interesting!? Moreover, the phrase &#8220;violent fit&#8221; appears on all three works. Specifically, characters in these three Dickens stories have violent fits of laughter, crying, trembling, and coughing. By concatenating the stories together and applying concordancing methods I see there are quite a number of violent things in the three stories:</p>
<pre>  n such breathless haste and <span style="color: red; font-weight: bold">violent</span> agitation, as seemed to betoken so
  ood-night, good-night!' The <span style="color: red; font-weight: bold">violent</span> agitation of the girl, and the app
  sberne) entered the room in <span style="color: red; font-weight: bold">violent</span> agitation. 'The man will be taken,
  o understand that, from the <span style="color: red; font-weight: bold">violent</span> and sanguinary onset of Oliver Twi
  one and all, to entertain a <span style="color: red; font-weight: bold">violent</span> and deeply-rooted antipathy to goi
  eep a little register of my <span style="color: red; font-weight: bold">violent</span> attachments, with the date, durati
  cal laugh, which threatened <span style="color: red; font-weight: bold">violent</span> consequences. 'But, my dear,' said
  in general, into a state of <span style="color: red; font-weight: bold">violent</span> consternation. I came into the roo
  artly to keep pace with the <span style="color: red; font-weight: bold">violent</span> current of her own thoughts: soon 
  ts and wiles have brought a <span style="color: red; font-weight: bold">violent</span> death upon the head of one worth m
   There were twenty score of <span style="color: red; font-weight: bold">violent</span> deaths in one long minute of that 
  id the woman, making a more <span style="color: red; font-weight: bold">violent</span> effort than before; 'the mother, w
   as it were, by making some <span style="color: red; font-weight: bold">violent</span> effort to save himself from fallin
  behind. This was rather too <span style="color: red; font-weight: bold">violent</span> exercise to last long. When they w
   getting my chin by dint of <span style="color: red; font-weight: bold">violent</span> exertion above the rusty nails on 
  en who seem to have taken a <span style="color: red; font-weight: bold">violent</span> fancy to him, whether he will or n
  peared, he was taken with a <span style="color: red; font-weight: bold">violent</span> fit of trembling. Five minutes, te
  , when she was taken with a <span style="color: red; font-weight: bold">violent</span> fit of laughter; and after two or 
  he immediate precursor of a <span style="color: red; font-weight: bold">violent</span> fit of crying. Under this impressi
  and immediately fell into a <span style="color: red; font-weight: bold">violent</span> fit of coughing: which delighted T
  of such repose, fell into a <span style="color: red; font-weight: bold">violent</span> flurry, tossing their wild arms ab
   and accompanying them with <span style="color: red; font-weight: bold">violent</span> gesticulation, the boy actually th
  ght I really must have laid <span style="color: red; font-weight: bold">violent</span> hands upon myself, when Miss Mills
   arm tied up, these men lay <span style="color: red; font-weight: bold">violent</span> hands upon him -- by doing which, 
   every aggravation that her <span style="color: red; font-weight: bold">violent</span> hate -- I love her for it now -- c
   work himself into the most <span style="color: red; font-weight: bold">violent</span> heats, and deliver the most wither
  terics were usually of that <span style="color: red; font-weight: bold">violent</span> kind which the patient fights and 
   me against the donkey in a <span style="color: red; font-weight: bold">violent</span> manner, as if there were any affin
   to keep down by force some <span style="color: red; font-weight: bold">violent</span> outbreak. 'Let me go, will you,--t
  hands with me - which was a <span style="color: red; font-weight: bold">violent</span> proceeding for him, his usual cour
  en.' 'Well, sir, there were <span style="color: red; font-weight: bold">violent</span> quarrels at first, I assure you,' 
  revent the escape of such a <span style="color: red; font-weight: bold">violent</span> roar, that the abused Mr. Chitling
  t gradually resolved into a <span style="color: red; font-weight: bold">violent</span> run. After completely exhausting h
  , on which he ever showed a <span style="color: red; font-weight: bold">violent</span> temper or swore an oath, was this 
  ullen, rebellious spirit; a <span style="color: red; font-weight: bold">violent</span> temper; and an untoward, intractab
  fe of Oliver Twist had this <span style="color: red; font-weight: bold">violent</span> termination or no. CHAPTER III REL
  in, and seemed to presage a <span style="color: red; font-weight: bold">violent</span> thunder-storm, when Mr. and Mrs. B
  f the theatre, are blind to <span style="color: red; font-weight: bold">violent</span> transitions and abrupt impulses of
  ming into my house, in this <span style="color: red; font-weight: bold">violent</span> way? Do you want to rob me, or to</pre>
<p>These observations simply beg other questions. Is violence a common theme in Dickens works? What other adjectives are used to a greater or lesser degree in Dickens works? How does the use of these adjectives differ from other authors of the same time period or within the canon of English literature?</p>
<h2>Summary</h2>
<p>The combination of the Internet, copious amounts of freely available full text, and ubiquitous as well as powerful desktop computing, it is now possible to analyze texts in ways that was not feasible twenty years ago. While the application of computing techniques against texts dates back to at least <a href="http://en.wikipedia.org/wiki/Roberto_Busa">Father Busa&#8217;s concordance work in the 1960s</a>, it has only been in the last decade that digital humanities has come into its own. The application of digital humanities to library work offers great opportunities for the profession. Their goals are similar and their tools are complementary. From my point of view, their combination is a marriage made in heaven.</p>
<p>A <a href="./../wp-content/uploads/2010/12/text-mining-dickens.zip">.zip file of the texts and scripts</a> used to do the analysis is available for you to download and experiment with yourself. Enjoy.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/12/text-mining-charles-dickens/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>AngelFund4Code4Lib</title>
		<link>./../2010/12/angelfund4code4lib/index.html</link>
				<comments>./../2010/12/angelfund4code4lib/index.html#comments</comments>
				<pubDate>Thu, 02 Dec 2010 13:01:28 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=687</guid>
				<description><![CDATA[The second annual AngelFund4Code4Lib &#8212; a $1,500 stipend to attend Code4Lib 2011 &#8212; is now accepting applications. These are difficult financial times, but we don&#8217;t want this to dissuade people from attending Code4Lib. [1] Consequently a few of us have gotten together, pooled our resources, and made AngelFund4Code4Lib available. Applying for the stipend is easy. [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
The second annual AngelFund4Code4Lib &#8212; a $1,500 stipend to attend Code4Lib 2011 &#8212; is now accepting applications.
</p>
<p>
These are difficult financial times, but we don&#8217;t want this to dissuade people from attending Code4Lib. [1] Consequently a few of us have gotten together, pooled our resources, and made AngelFund4Code4Lib available. Applying for the stipend is easy. In 500 words or less, write what you hope to learn at the conference and email it to <a href="mailto:angelfund4code4lib@infomotions.com">angelfund4code4lib@infomotions.com</a>. We will then evaluate the submissions and select the awardee. In exchange for the financial resources, and in keeping with the idea of giving back to the community, the awardee will be expected to write a travelogue describing their take-aways and post it to the Code4Lib mailing list.
</p>
<p>
The deadline for submission is 5 o&#8217;clock (Pacific Time), Thursday, December 17. The awardee will be announced no later than Friday, January 7.
</p>
<p>
Submit your application. We look forward to helping you out.
</p>
<p>
If you would like to become an &#8220;angel&#8221; too, then drop us a line. We&#8217;re open to possibilities.
</p>
<p>
P.S. Check out the additional Code4Lib scholarships. [2]
</p>
<p>
[1] Code4Lib 2011 &#8211; <a href="http://code4lib.org/conference/2011/">http://code4lib.org/conference/2011/</a><br />
[2] addtional scholarships &#8211; <a href="http://bit.ly/dLGnnx">http://bit.ly/dLGnnx</a>
</p>
<p style='text-align: right'>
Eric Lease Morgan,<br />
Michael J. Giarlo, and<br />
Eric Hellman</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/12/angelfund4code4lib/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Crowd sourcing the Great Books</title>
		<link>./../2010/11/crowd-sourcing-the-great-books/index.html</link>
				<comments>./../2010/11/crowd-sourcing-the-great-books/index.html#comments</comments>
				<pubDate>Sat, 06 Nov 2010 16:16:24 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Great Books of the Western World]]></category>
		<category><![CDATA[great books]]></category>

		<guid isPermaLink="false">./../index.html?p=679</guid>
				<description><![CDATA[This posting describes how crowd sourcing techniques are being used to determine the &#8220;greatness&#8221; of the Great Books. The Great Books of the Western World is a set of books authored by &#8220;dead white men&#8221; &#8212; Homer to Dostoevsky, Plato to Hegel, and Ptolemy to Darwin. [1] In 1952 each item in the set was [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting describes how crowd sourcing techniques are being used to determine the &#8220;greatness&#8221; of the Great Books.</p>
<p>The <cite>Great Books of the Western World</cite> is a set of books authored by &#8220;dead white men&#8221; &#8212; Homer to Dostoevsky, Plato to Hegel, and Ptolemy to Darwin. [1] In 1952 each item in the set was selected because the set&#8217;s editors thought the selections significantly discussed any number of their 102 Great Ideas (art, cause, fate, government, judgement, law, medicine, physics, religion, slavery, truth, wisdom, etc.). By reading the books, comparing them with one another, and discussing them with fellow readers, a person was expected to foster their on-going liberal arts education. Think of it as &#8220;life long learning&#8221; for the 1950s.</p>
<p>I have devised and implemented a mathematical model for denoting the &#8220;greatness&#8221; of any book. The model is based on term frequency inverse document frequency (TFIDF). It is far from complete, nor has it been verified. In an effort to address the later, I have created the <a href="http://infomotions.com/sandbox/great-books/survey/">Great Books Survey</a>. Specifically, I am asking people to vote on which books they consider greater. If the end result is similar to the output of my model, then the model may be said to represent reality.</p>
<p><a href="http://infomotions.com/sandbox/great-books/survey/"><img src="./../wp-content/uploads/2010/11/survey/charts.png" alt="charts" width="240" align="right"></a> The survey itself is an implementation of the <a href="http://en.wikipedia.org/wiki/Condorcet_method">Condorcet method</a>. (&#8220;Thanks Andreas.&#8221;) First, I randomly select one of the Great Ideas. I then randomly select two of the Great Books. Finally, I ask the poll-taker to choose the &#8220;greater&#8221; of the two books based on the given Great Idea. For example, the randomly selected Great Idea may be war, and the randomly selected Great Books may be Shakespeare&#8217;s <cite>Hamlet</cite> and Plato&#8217;s <cite>Republic</cite>. I then ask, &#8220;Which is book is &#8216;greater&#8217; in terms of war?&#8221; The answer is recorded and an additional question is generated. The survey is never-ending. After 100&#8217;s of thousands of votes are garnered I hope too learn which books are the greatest because they got the greatest number of votes.</p>
<p>Because the survey results are saved in an underlying database, it is trivial to produce immediate feedback. For example, I can instantly return which books have been voted greatest for the given idea, how the two given books compare to the given idea, a list of &#8220;your&#8221; greatest books, and a list of all books ordered by greatness. For a good time, I am also geo-locating voters&#8217; IP addresses and placing them on a world map. (&#8220;C&#8217;mon Antartica. You&#8217;re not trying!&#8221;)</p>
<p><a href="http://infomotions.com/sandbox/great-books/survey/map.cgi"><img src="./../wp-content/uploads/2010/11/survey/map.png" alt="map" width="240" align="right"></a> The survey was originally announced on Tuesday, November 2 on the Code4Lib mailing list, Twitter, and Facebook. To date it has been answered 1,247 times by 125 people. Not nearly enough. So far, the top five books are:</p>
<ol>
<li>Augustine&#8217;s <cite>City Of God And Christian Doctrine</cite></li>
<li>Cervantes&#8217;s <cite>Don Quixote</cite></li>
<li>Shakespeare&#8217;s <cite>Midsummer Nights Dream</cite></li>
<li>Chaucers&#8217;s <cite>Canterbury Tales And Other Poems</cite></li>
<li>Goethe&#8217;s <cite>Faust</cite></li>
</ol>
<p>There are a number of challenging aspects regarding the validity of the survey. For example, many people feel unqualified to answer some of the randomly generated questions because they have not read the books. My suggestion is, &#8220;Answer the question anyway,&#8221; because given enough votes randomly answered questions will cancel themselves out. Second, the definition of &#8220;greatness&#8221; is ambiguous. It is not intended to be equated with popularity but rather the &#8220;imaginative or intellectual content&#8221; the book exemplifies. [2] Put in terms of a liberal arts education, greatness is the degree a book discusses, defines, describes, or alludes to the given idea more than the other. Third, people have suggested I keep track of how many times people answer with &#8220;I don&#8217;t know and/or neither&#8221;. This is a good idea, but I haven&#8217;t implemented it yet.</p>
<p>Please <a href="http://infomotions.com/sandbox/great-books/survey/">answer the survey</a> 10 or more times. It will take you less than 60 seconds if you don&#8217;t think about it too hard and go with your gut reactions. There are no such things as wrong answers. Answer the survey about 100 times, and you will may get an idea of what types of &#8220;great books&#8221; interest you most.</p>
<p>Vote early. Vote often.</p>
<p>[1] Hutchins, Robert Maynard. 1952. <cite><a href="http://www.worldcat.org/oclc/1074025">Great books of the Western World</a></cite>. Chicago: Encyclopedia Britannica.</p>
<p>[2] <i>Ibid.</i> Volume 3, page 1220.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/11/crowd-sourcing-the-great-books/feed/index.html</wfw:commentRss>
		<slash:comments>7</slash:comments>
							</item>
		<item>
		<title>Great Books data set</title>
		<link>./../2010/11/great-books-data-set/index.html</link>
				<comments>./../2010/11/great-books-data-set/index.html#comments</comments>
				<pubDate>Sat, 06 Nov 2010 13:42:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[great books]]></category>

		<guid isPermaLink="false">./../index.html?p=675</guid>
				<description><![CDATA[This posting makes the Great Books data set freely available. As described previously, I want to answer the question, &#8220;How &#8216;great&#8217; are the Great Books?&#8221; In this case I am essentially equating &#8220;greatness&#8221; with statistical relevance. Specifically, I am using the Great Books of the Western World&#8217;s list of &#8220;great ideas&#8221; as search terms and [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
<a href="http://infomotions.com/sandbox/great-books/great-books.htm"><img src="./../wp-content/uploads/2010/11/data-set/great-books.png" alt="screenshot" width="320" hspace="5" vspace="5" align="right" /></a> This posting makes the Great Books data set freely available.
</p>
<p>
As described previously, I want to answer the question, &#8220;How &#8216;great&#8217; are the Great Books?&#8221; In this case I am essentially equating &#8220;greatness&#8221; with statistical relevance. Specifically, I am using the Great Books of the Western World&#8217;s list of &#8220;great ideas&#8221; as search terms and using them to query the Great Books to compute a numeric value for each idea based on term frequency inverse document frequency (TFIDF). I then sum each of the great idea values for a given book to come up with a total score &#8212; the &#8220;Great Ideas Coefficient&#8221;. The book with the largest Coefficient is then considered the &#8220;greatest&#8221; book. Along the way and just for fun, I have also kept track of the length of each book (in words) as well as two scores denoting each book&#8217;s reading level, and one score denoting each book&#8217;s readability.
</p>
<p>
The result is a canonical XML file named <a href="./../wp-content/uploads/2010/11/data-set/great-books.xml">great-books.xml</a>. This file, primarily intended for computer-to-computer transfer contains all the data outlined above. Since most data analysis applications (like databases, spreadsheets, or statistical packages) do not deal directly with XML, the data was transformed into a comma-separated value (CSV) file &#8212; <a href="./../wp-content/uploads/2010/11/data-set/great-books.csv">great-books.csv</a>. But even this file, a matrix of 220 rows and 104 columns, can be a bit unwieldily for the uninitiated. Consequently, the CSV file has been combined with a Javascript library (called <a href="http://www.datatables.net/">DataTables</a>) and embedded into an HTML for file general purpose use &#8212; <a href="http://infomotions.com/sandbox/great-books/great-books.htm">great-books.htm</a>.
</p>
<p>
The HTML file enables you to sort the matrix by column values. Shift click on columns to do sub-sorts. Limit the set by entering queries into the search box. For example:
</p>
<ul>
<li>sort by the last column (coefficient) and notice how Kant has written the &#8220;greatest&#8221; book</li>
<li>sort by the column labeled &#8220;love&#8221; and notice that Shakespeare has written seven (7) of the top ten (10) &#8220;greatest books&#8221; about love</li>
<li>sort by the column labeled &#8220;war&#8221; and notice that something authored by the United States is ranked #2 but also has very poor readability scores</li>
<li>sort by things like &#8220;angel&#8221; or &#8220;god&#8221;, then ask yourself, &#8220;Am I surprised at what I find?&#8221;</li>
</ul>
<p>
Even more interesting questions may be asked of the data set. For example, is their a correlation between greatness and readability? If a work has a high love score, then it is likely it will have a high (or low) score from one or more of the other columns? What is the greatness of the &#8220;typical&#8221; Great Book? Is this best represented as the average of the Great Ideas Coefficient or would it be better stated as the value of the mean of all the Great Ideas? In the case of the later, which books are greater than most, which books are typical, an which books are below typical? This sort of analysis, as well as the &#8220;kewl&#8221; Web-based implementation, is left up the the gentle reader.
</p>
<p>
Now ask yourself, &#8220;Can all of these sorts of techniques be applied to the principles and practices of librarianship, and if so, then how?&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/11/great-books-data-set/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>ECDL 2010: A Travelogue</title>
		<link>./../2010/10/ecdl2010/index.html</link>
				<comments>./../2010/10/ecdl2010/index.html#comments</comments>
				<pubDate>Sun, 10 Oct 2010 13:57:55 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[#ecdl2010]]></category>
		<category><![CDATA[European Conference on Digital Libraries (ECDL)]]></category>

		<guid isPermaLink="false">./../index.html?p=667</guid>
				<description><![CDATA[This posting outlines my experiences at the European Conference on Digital Libraries (ECDL), September 7-9, 2010 in Glasgow (Scotland). From my perspective, many of the presentations were about information retrieval and metadata, and the advances in these fields felt incremental at best. This does not mean I did not learn anything, but it does re-enforce [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting outlines my experiences at the <a href="http://www.ecdl2010.org/">European Conference on Digital Libraries (ECDL)</a>, September 7-9, 2010 in Glasgow (Scotland). From my perspective, many of the presentations were about information retrieval and metadata, and the advances in these fields felt incremental at best. This does not mean I did not learn anything, but it does re-enforce my belief that find is no longer the current problem to be solved.
</p>
<table align='center'>
<tr align='center' style='font-size: small'>
<td><img src="./../wp-content/uploads/2010/10/ecdl/university.JPG" alt="University of Glasgow" width="240" height="180" /><br /><a href="http://www.flickr.com/photos/infomotions/5025370957/in/set-72157624911915257/">University of Glasgow</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/ceiling.JPG" alt="vaulted ceiling" width="240" height="180" /><br /><a href="http://www.flickr.com/photos/infomotions/5025370191/in/set-72157624911915257/">vaulted ceiling</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/smith.JPG" alt="Adam Smith" width="240" height="180" /><br /><a href="http://www.flickr.com/photos/infomotions/5025369715/in/set-72157624911915257/">Adam Smith</a></td>
</tr>
</table>
<h2>Day #1 (Tuesday, September 7)</h2>
<p>
After the usual logistic introductions, the Conference was kicked off with a keynote address by <strong>Susan Dumais</strong> (Microsoft) entitled <cite>The Web changes everything: Understanding and supporting people in dynamic information environments</cite>. She began, &#8220;Change is the hallmark of digital libraries&#8230; digital libraries are dynamic&#8221;, and she wanted to talk about how to deal with this change. &#8220;Traditional search &amp; browse interfaces only see a particular slice of digital libraries. An example includes the Wikipedia article about Bill Gates.&#8221; She enumerated at least two change metrics: the number of changes and the time between changes. She then went about taking snapshots of websites, measuring the changes, and ultimately dividing the observations into at least three &#8220;speeds&#8221;: fast, medium, and slow. In general the quickly changing sites (fast) had a hub &amp; spoke architecture. The medium change speed represented popular sites such as mail and Web applications. The slowly changing sites were generally entry pages or sites accessed via search. &#8220;Search engines need to be aware of what people seek and what changes over time. Search engines need to take change into account.&#8221; She then demonstrated an Internet Explorer plug-in (DiffIE) which highlights the changes in a website over time. She advocated weighing search engine results based on observed changes in a website&#8217;s content.
</p>
<p>
Visualization was the theme of <strong>Sascha T&ouml;nnies</strong>&#8216;s (L3S Research) <cite>Uncovering hidden qualities &#8212; Benefits of quality measures for automatic generated metadata</cite>. She described the use of tag clouds with changes in color and size. The experimented with &#8220;growbag&#8221; graphs which looked a lot of network graphs. She also explored the use of concentric circle diagrams (CCD), and based on her observations people identified with them very well. &#8220;In general, people liked the CDD graph the best because the radius intuitively represented a distance from the central idea.&#8221;
</p>
<p>
What appeared to me as the interpretation of metadata schemes through the use of triples, <strong>Panorea Gaitanou</strong> (Ionian University) described a way to query many cultural heritage institution collections in <cite>Query transformation in a CIDOC CRM Based cultural metadata integration environment</cite>. He called the approach MDL (Metadata Description Language). Lots of mapping and lots of XPath.
</p>
<p>
<strong>Michael Zarro</strong> (Drexel University) evaluated user comments written against the Library of Congress Flickr Commons Project in <cite>User-contributed descriptive metadata for libraries and cultural institutions</cite>. As a result, he was able to group the comments into at least four types. The first, personal/historical, were exemplified by things like, &#8220;I was there, and that was my grandfather&#8217;s house.&#8221; The second, links out, pointed to elaborations such as articles on Wikipedia. The third, corrections/translations, were amendments or clarifications. The last, links in, were pointers to Flickr groups. The second type of annotations, links out, were the most popular.
</p>
<table align='center'>
<tr align='center' style='font-size: small'>
<td><img src="./../wp-content/uploads/2010/10/ecdl/thistle.JPG" alt="thistle" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025989944/in/set-72157624911915257/">thistle</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/rose.JPG" alt="rose" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025375853/in/set-72157624911915257/">rose</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/flower.JPG" alt="purple flower" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025990162/in/set-72157624911915257/">purple flower</a></td>
</tr>
</table>
<p>
<cite>Developing services to support research data management and sharing</cite> was a panel discussion surrounding the topic of data curation. My take-away from <strong>Sara Jone</strong>&#8216;s (DDC) remarks was, &#8220;There are no incentives for sharing research data&#8221;, and when given the opportunity for sharing data owners react by saying things like, &#8220;I&#8217;m giving my baby away&#8230; I don&#8217;t know the best practices&#8230; What are my roles and responsibilities?&#8221; <strong>Veerle Van den Eynden</strong> (United Kingdom Data Archive) outlined how she puts together infrastructure, policy, and support (such as workshops) to create successful data archives. &#8220;infrastructure + support + policy = data sharing&#8221; She enumerated time, attitudes and privacy/confidentiality as the bigger challenges. <strong>Robin Rice</strong> (EDINA) outlined services similar to Van den Eynden&#8217;s but was particularly interested in social science data and its re-use. There is a much longer tradition of sharing social science data and it is definitely not intended to be a dark archive. He enumerated a similar but different set of barriers to sharing: ownership, freedom of errors, fear of scooping, poor documentation, and lack of rewards. <strong>Rob Grim</strong> (Tilburg University) was the final panelist. He said, &#8220;We want to link publications with data sets as in <a href="http://www.economistsonline.org/">Economists Online</a>, and we want to provide a number of additional services against the data.&#8221; He described data sharing incentive, &#8220;I will only give you my data if you provide me with sets of services against it such as who is using it as well as where it is being cited.&#8221; Grim described the social issues surrounding data sharing as the most important. He compared &amp; contrasted sharing with preservation, and re-use with archiving. &#8220;Not only is it important to have the data but it is also important to have the tools that created the data.&#8221;
</p>
<p>
From what I could gather, <strong>Claudio Gennaro</strong> (IST-CNR) in <cite>An Approach to content-based image retrieval based on the Lucene search engine library</cite> converted the binary content of images in to strings, indexed the strings with Lucene, and then used Lucene&#8217;s &#8220;find more like this one&#8221; features to&#8230; find more like this one.
</p>
<p>
<strong>Stina Westman</strong> (Aalto University) gave a paper called <cite>Evaluation constructs for visual video summaries</cite>. She said, &#8220;I want to summarize video and measure things like quality, continuity, and usefulness for users.&#8221; To do this she enumerated a number of summarizing types: 1) storyboard, 2) scene clips, 3) fast forward technologies, and 4) user-controlled fast forwarding. After measuring satisfaction, scene clips provided the best recognition but storyboards were more enjoyable. The clips and fast forward technologies were perceived as the best video surrogates. &#8220;Summaries&#8217; usefulness are directly proportional to the effort to use them and the coverage of the summary&#8230; There is little difference between summary types&#8230; There is little correlation between the type of performance and satisfaction.&#8221;
</p>
<p>
<strong>Frank Shipman</strong> (Texas A&amp;M University) in his <cite>Visual expression for organizing and accessing music collections in MusicWiz</cite> asked himself, &#8220;Can we provide access to music collections without explicit metadata; can we use implicit metadata instead?&#8221; The implementation of his investigation was an application called MusicWiz which is divided into a user interface and an inference engine. It consists of six modules: 1) artist, 2) metadata, 3) audio signal, 4) lyrics, 5) a workspace expression, and 6) similarity. In the end Shipman found &#8220;benefits and weaknesses to organizing personal music collections based on context-independent metadata&#8230; Participants found the visual expression facilitated their interpretation of mood&#8230; [but] the lack of traditional metadata made it more difficult to locate songs&#8230;&#8221;
</p>
<table align='center'>
<tr align='center' style='font-size: small'>
<td><img src="./../wp-content/uploads/2010/10/ecdl/distiller.JPG" alt="distillers" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025993386/in/set-72157624911915257/">distillers</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/barrels.JPG" alt="barrels" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025378223/in/set-72157624911915257/">barrels</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/wiskey.JPG" alt="whiskey" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025992656/in/set-72157624911915257/">whiskey</a></td>
</tr>
</table>
<h2>Day #2 (Wednesday, September 8)</h2>
<p>
<strong>Liina Munari</strong> (European Commission) gave the second day&#8217;s keynote address called <cite>Digital libraries: European perspectives and initiatives</cite>. In it she presented a review of the Europeana digital library funding and future directions. My biggest take-aways was the following quote: &#8220;Orphan works are the 20th Century black hole.&#8221;
</p>
<p>
<strong>Stephan Strodl</strong> (Vienna University of Technology) described a system called Hoppla facilitating back-up and providing automatic migration services. Based on OAIS, it gets its input from email, a hard disk, or the Web. It provides data management access, preservation, and storage management. The system outsources the experience of others to implement these services. It seemingly offers suggestions on how to get the work done, but it does not actually do the back-ups. The title of his paper was <cite>Automating logical preservation for small institutions with Hoppla</cite>.
</p>
<p>
<strong>Alejandro Bia</strong> (Miguel Hern&aacute;ndez University) in <cite>Estimating digitization costs in digital libraries using DiCoMo</cite> advocated making a single estimate for digitizing, and then making the estimate work. &#8220;Most of the cost in digitization is the human labor. Other things are known costs.&#8221; Based on past experience Bia graphed a curve of digitization costs and applied the curve to estimates. Factors that go into the curve includes: skill of the labor, familiarity with the material, complexity of the task, the desired quality of the resulting OCR, and the legibility of the original document. The whole process reminded me of Medieval scriptoriums.
</p>
<table align='center'>
<tr align='center' style='font-size: small'>
<td><img src="./../wp-content/uploads/2010/10/ecdl/cityhall.JPG" alt="city hall" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025378731/in/set-72157624911915257/">city hall</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/lion.JPG" alt="lion" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025995252/in/set-72157624911915257/">lion</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/staircase.JPG" alt="stair case" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025379767/in/set-72157624911915257/">stair case</a></td>
</tr>
</table>
<p>
<strong>Andrew McHugh</strong> (University of Glasgow) presented <cite>In pursuit of an expressive vocabulary for preserved New Media art</cite>. He is trying to preserve (conserve) New Media art by advocating the creation of medium-independent descriptions written by the artist so the art can be migrated forward. He enumerated a number of characteristics of the art to be described: functions, version, materials &amp; dependencies, context, stakeholders, and properties.
</p>
<p>
In <cite>An Analysis of the evolving coverage of computer science sub-fields in the DBLP digital library</cite> <strong>Florian Reitz</strong> (University of Trier) presented an overview of the <a href="http://www.informatik.uni-trier.de/~ley/db/">Digital Bibliography &amp; Library Project (DBLP)</a> &#8212; a repository of computer science conference presentations and journal articles. The (incomplete) collection was evaluated, and in short he saw the strengths and coverage of the collection change over time. In a phrase, he did a bit of traditional collection analysis against is non-traditional library.
</p>
<p>
A second presentation, <cite>Analysis of computer science communities based on DBLP</cite>, was then given on the topic of the DBLP, this time by <strong>Maria Biryukov</strong> (University of Luxembourg). She first tried to classify computer science conferences into sets of subfields in an effort to rank which conferences were &#8220;better&#8221;. One way this was done was through an analysis of who participated, the number of citations, the number of conference presentations, etc. She then tracked where a person presented and was able to see flows and patterns of publishing. Her conclusion &#8212; &#8220;Authors publish all over the place.&#8221;
</p>
<p>
In <cite>Citation graph based ranking in Invenio</cite> by <strong>Ludmila Marian</strong> (European Organization for Nuclear Research)  the question was asked, &#8220;In a database of citations consisting of millions of documents, how can good precision be achieved if users only supply approximately 2-word queries?&#8221; The answer, she says, may lie in citation analysis. She weighed papers based on the number and locations of citations in a manner similar to Google PageRank, but in the end she realized the imperfection of the process since older publications seemed to unnaturally float to the top.
</p>
<h2>Day #3 (Thursday, September 9)</h2>
<p>
<strong>Sandra Toze</strong> (Dalhousie University) wanted to know how digital libraries support group work. In her <cite>Examining group work: Implications for the digital library as sharium</cite> she described the creation of an extensive lab for group work. Computers. Video cameras. Whiteboards. Etc. Students used her lab and worked in a manner she expected doing administrative tasks, communicating, problem solving, and the generation of artifacts. She noticed that the &#8220;sharium&#8221; was a valid environment for doing work, but she noticed that only individuals did information seeking while other tasks were done by the group as a whole. I found this later fact particularly interesting.
</p>
<p>
In an effort to build and maintain reading lists <strong>Gabriella Kazai</strong> (Microsoft) presented <cite>Architecture for a collaborative research environment based on reading list sharing</cite>. The heart of the presentation was a demonstration of ScholarLynk as well as Research Desktop &#8212; tools to implement &#8220;living lists&#8221; of links to knowledge sources. I went away wondering whether or not such tools save people time and increase knowledge.
</p>
<p>
The last presentation I attended was by <strong>George Lucchese</strong> (Texas A&amp;M University) called <cite>CritSpace: A Workplace for critical engagement within cultural heritage digital libraries</cite> where he described a image processing tool intended to be used by humanities scholars. The tool does image processing, provides a workspace, and allows researchers to annotate their content.
</p>
<table align='center'>
<tr align='center' style='font-size: small'>
<td><img src="./../wp-content/uploads/2010/10/ecdl/bothwell.JPG" alt="Bothwell Castle" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5026003262/in/set-72157624911915257/">Bothwell Castle</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/stirling.JPG" alt="Stirling Castle" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5026014748/in/set-72157624911915257/">Stirling Castle</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/doune.JPG" alt="Doune Castle" width="240" height="180"><br /><a href="http://www.flickr.com/photos/infomotions/5025399849/in/set-72157624911915257/">Doune Castle</a></td>
</tr>
</table>
<h2>Observations and summary</h2>
<p>
It has been just more than one month since I was in Glasgow attending the Conference, and much of the &#8220;glow&#8221; (all onomonopias intended) has worn off. The time spent was productive. For example, I was able to meet up with <strong>James McNulty</strong> (Open University) who spent time at Notre Dame with me. I attended eighteen presentations which were deemed innovative and scholarly by way of extensive review. I discussed digital library issues with numerous people and made an even greater number of new acquaintances. Throughout the process I did some very pleasant sight seeing both with conference attendees and on my own. At the same time I do not feel as if my knowledge of digital libraries was significantly increased. Yes, attendance was intellectually stimulating demonstrated by the number of to-do list items written in my notebook during the presentations, but the topics of discussion seemed worn out and not significant. Interesting but only exemplifying subtle changes from previous research.
</p>
<p>
My attendance was also a mission. More specifically, I wanted to compare &amp; contrast the work going on here with the work being done at the <a href="http://bit.ly/9cNj4z">2010 Digital Humanities conference</a>. In the end, I believe the two groups are not working together but rather, as one attendee put it, &#8220;talking past one another.&#8221; Both groups &#8212; ECDL and Digital Humanities &#8212; have something in common &#8212; libraries and librarianship. But on one side are computer scientists, and on the other side are humanists. The first want to implement algorithms and apply them to many processes. If such a thing gets out of hand, then the result is akin to a person owning a hammer and everything looking like a nail. The second group is ultimately interested in describing the human condition and addressing questions about values. This second process is exceedingly difficult, if not impossible, to measure. Consequently any sort of evaluation is left up to a great deal of subjectivity. Many people would think these two processes are contradictory and/or conflicting. In my opinion, they are anything but in conflict. Rather, these two processes are complementary. One fills the deficiencies of the other. One is more systematic where the other is more judgmental. One relates to us as people, and the other attempts to make observations devoid of human messiness. In reality, despite the existence of these &#8220;two cultures&#8221;, I see the work of the scientists and the work of the humanists to be equally necessary in order for me to make sense of the world around me. It is nice to know libraries and librarianship seem to represent a middle ground in this regard. Not ironically, that is one of most important reasons I explicitly chose my profession. I desired to practice both art and science &#8212; <a href="http://bit.ly/c2L7tr">arscience</a>. It is just too bad that these two groups do not work more closely together. There seems to be too much desire for specialization instead. (Sigh.)
</p>
<p>
Because of a conflict in acronyms, the ECDL conference has all but been renamed to Theory and Practice of Digital Libraries (TPDL), and <a href="http://www.tpdl2011.org/">next year&#8217;s meeting</a> will take place in Berlin. Despite the fact that this was my third for fourth time attending ECDL, and I doubt I will attend next year. I do not think information retrieval and metadata standards are as important as they have been. Don&#8217;t get me wrong. I didn&#8217;t say they were unimportant, just not as important as they used to be. Consequently, I think I will be spending more of my time investigating the digital humanities where content has already been found and described, and is now being evaluated and put to use.
</p>
<table align='center'>
<tr align='center' style='font-size: small'>
<td><img src="./../wp-content/uploads/2010/10/ecdl/river-clyde.jpg" alt="River Clyde" width="180" height="240"><br /><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=105">River Clyde</a></td>
<td><img src="./../wp-content/uploads/2010/10/ecdl/river-teith.jpg" alt="River Teith" width="180" height="240"><br /><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=106">River Teith</a></td>
</tr>
</table>
]]></content:encoded>
							<wfw:commentRss>./../2010/10/ecdl2010/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Dan Marmion</title>
		<link>./../2010/10/dan-marmion/index.html</link>
				<comments>./../2010/10/dan-marmion/index.html#comments</comments>
				<pubDate>Sun, 03 Oct 2010 20:09:30 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Tributes]]></category>

		<guid isPermaLink="false">./../index.html?p=662</guid>
				<description><![CDATA[Dan Marmion recruited and hired me to work at the University of Notre Dame during the Summer of 2001. The immediate goal was to implement a &#8220;database-driven website&#8221;, which I did with the help of the Digital Access and Information Architecture Department staff and MyLibrary. About eighteen months after I started working at the University [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><img src="./../wp-content/uploads/2010/10/dan-marmion.jpg" alt="Dan Marmion and ISDA" width="320" height="240" align="right">Dan Marmion recruited and hired me to work at the University of Notre Dame during the Summer of 2001. The immediate goal was to implement a &#8220;database-driven website&#8221;, which I did with the help of the Digital Access and Information Architecture Department staff and MyLibrary.</p>
<p>About eighteen months after I started working at the University I felt settled in. It was at that time when I realized I had accomplished all the goals I had previously set out for myself. I had a family. I had stuff. I had the sort of job I had always aspired to have in a place where I aspired to have it. I woke up one morning and asked myself, &#8220;Now what?&#8221;</p>
<p>After a few months of cogitation I articulated a new goal: to raise a happy, healthy, well-educated child. (I only have one.) By now my daughter is almost eighteen years old. She is responsible and socially well-adjusted. She is stands up straight and tall. She has a pretty smile. By this time next year I sincerely believe she will be going to college with her tuition paid for by Notre Dame. Many of the things that have been accomplished in the past nine years and many of the things to come are results from Dan hiring me.</p>
<p>Dan Marmion died Wednesday, September 22, 2010 from brain cancer. &#8220;Dan, thank you for the means and the opportunities. You are sorely missed.&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/10/dan-marmion/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Great Books data dictionary</title>
		<link>./../2010/09/great-books-data-dictionary/index.html</link>
				<pubDate>Fri, 24 Sep 2010 11:13:27 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Great Books of the Western World]]></category>
		<category><![CDATA[great books]]></category>

		<guid isPermaLink="false">./../index.html?p=655</guid>
				<description><![CDATA[This is a sort of Great Books data dictionary in that it describes the structure and content of two data files containing information about the Great Books of the Western World. The data set is manifested in two files. The canonical file is great-books.xml. This XML file consists of a root element (great-books) and many [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This is a sort of Great Books data dictionary in that it describes the structure and content of two data files containing information about the <cite>Great Books of the Western World</cite>.</p>
<p>The data set is manifested in two files. The canonical file is <a href="http://infomotions.com/sandbox/great-books/great-books.xml">great-books.xml</a>. This XML file consists of a root element (great-books) and many sub-elements (books). The meat of the file resides in these sub-elements. Specifically, with the exception of the id attribute, all the book attributes enumerate integers denoting calculated values. The attributes words, fog, and kincaid denote the length of the work, two grade levels, and a readability score, respectively. The balance of the attributes are &#8220;great ideas&#8221; as calculated through a variation Term Frequency Inverse Document Frequency (TFIDF) cumulating in a value called the <a href="./../2010/06/measuring-the-great-books/index.html">Great Ideas Coefficient</a>. Finally, each book element includes sub-elements denoting who wrote the work (author), the work&#8217;s name (title), the location of the file was used as the basis of the calculations (local_url), and the location of the original text (original_url).</p>
<p>The second file (<a href="http://infomotions.com/sandbox/great-books/great-books.csv">great-books.csv</a>) is a derivative of the first file. This comma-separated file is intended to be read by something like R or Excel for more direct manipulation. It includes all the information from great-books.xml with the exception of the author, title, and URLs.</p>
<p>Given either one of these two files the developer or statistician is expected to evaluate or re-purpose the results of the calculations. For example, given one or the other of these files the following questions could be answered:</p>
<ul>
<li>What is the &#8220;greatest&#8221; book and who wrote it?</li>
<li>What is the average &#8220;great book&#8221; score?</li>
<li>Are there clusters of great ideas?</li>
<li>Which authors wrote extensively on what great ideas?</li>
<li>Is there a correlation between greatness and length and readability?</li>
</ul>
<p>The really adventurous developer will convert the XML file into JSON and then create a cool (or &#8220;kewl&#8221;) Web interface allowing anybody with a browser to do their own evaluation and presentation. This is an exercise left up to the reader.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Twitter, Facebook, Delicious, and Alex</title>
		<link>./../2010/09/twitter-facebook-delicious-and-alex/index.html</link>
				<comments>./../2010/09/twitter-facebook-delicious-and-alex/index.html#comments</comments>
				<pubDate>Sat, 18 Sep 2010 23:20:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">./../index.html?p=651</guid>
				<description><![CDATA[I spent time last evening and this afternoon integrating Twitter, Facebook, and Delicious into the my Alex Catalogue. The process was (almost) trivial: create Twitter, Facebook, and Delicious accounts select and configure the Twitter button I desired to use acquire the Delicious javascript for bookmarking place the results of Steps #1 and #2 into my [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I spent time last evening and this afternoon integrating Twitter, Facebook, and Delicious into the my Alex Catalogue. The process was (almost) trivial:
</p>
<ol>
<li>create Twitter, Facebook, and Delicious accounts</li>
<li>select and configure the Twitter button I desired to use</li>
<li>acquire the Delicious javascript for bookmarking</li>
<li>place the results of Steps #1 and #2 into my HTML</li>
<li>rebuild my pages</li>
<li>install and configure the Twitter application for Facebook</li>
</ol>
<p>
Because of this process I am able to &#8220;tweet&#8221; from Alex, its search results, any of the etexts in the collection, as well as any results from the use of the concordances. These tweets then get echoed to Facebook.
</p>
<p>
(I tried to link directly to Facebook using their Like Button, but the process was cumbersome. Iframes. Weird, Facebook-specific Javascript. Pulling too much content from the header of my pages. Considering the Twitter application for Facebook, the whole thing was not worth the trouble.)
</p>
<p>
I find it challenging to write meaningful 140 character comments on the Alex Catalogue, especially since the URLs take up such a large number of the characters. Still, I hope to regularly find interesting things in the collection and share them with the wider audience. To see the fruits of my labors to date, see my Twitter feed &#8212; <a href="http://twitter.com/ericleasemorgan">http://twitter.com/ericleasemorgan</a>.
</p>
<p>
Only time will tell whether or not this &#8220;social networking&#8221; thing proves to be beneficial to my library &#8212; all puns intended.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/09/twitter-facebook-delicious-and-alex/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Where in the world are windmills, my man Friday, and love?</title>
		<link>./../2010/09/where-in-the-world-are-windmills-my-man-friday-and-love/index.html</link>
				<comments>./../2010/09/where-in-the-world-are-windmills-my-man-friday-and-love/index.html#comments</comments>
				<pubDate>Sun, 12 Sep 2010 22:32:19 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[concordance]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">./../index.html?p=646</guid>
				<description><![CDATA[This posting describes how a Perl module named Lingua::Concordance allows the developer to illustrate where in the continum of a text words or phrases appear and how often. Windmills, my man Friday, and love When it comes to Western literature and windmills, we often think of Don Quiote. When it comes to &#8220;my man Friday&#8221; [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting describes how a Perl module named Lingua::Concordance allows the developer to illustrate where in the continum of a text words or phrases appear and how often.
</p>
<h2>Windmills, my man Friday, and love</h2>
<p>
When it comes to Western literature and windmills, we often think of <cite>Don Quiote</cite>. When it comes to &#8220;my man Friday&#8221; we think of <cite>Robinson Crusoe</cite>. And when it comes to love we may very well think of <cite>Romeo and Juliet</cite>. But I ask myself, &#8220;How often do these words and phrases appear in the texts, and where?&#8221; Using digital humanities computing techniques I can literally illustrate the answers to these questions.
</p>
<h2>Lingua::Concordance</h2>
<p>
Lingua::Concordance is a Perl module (<a href="./../wp-content/uploads/2010/09/Lingua-Concordance-0.02.tar.gz">available locally</a> and <a href="http://search.cpan.org/dist/Lingua-Concordance/">via CPAN</a>) implementing a simple key word in context (KWIC) index. Given a text and a query as input, a concordance will return a list of all the snippets containing the query along with a few words on either side. Such a tool enables a person to see how their query is used in a literary work.
</p>
<p>
Given the fact that a literary work can be measured in words, and given then fact that the number of times a particular word or phrase can be counted in a text, it is possible to illustrate the locations of the words and phrases using a bar chart. One axis represents a percentage of the text, and the other axis represents the number of times the words or phrases occur in that percentage. Such graphing techniques are increasingly called visualization &#8212; a new spin on the old adage &#8220;A picture is worth a thousand words.&#8221;
</p>
<p>
In a script named <a href="./../wp-content/uploads/2010/09/concordance.pl">concordance.pl</a> I answered such questions. Specifically, I used it to figure out where in <cite>Don Quiote</cite> windmills are mentiond. As you can see below they are mentioned only 14 times in the entire novel, and the vast majority of the time they exist in the first 10% of the book.
</p>
<pre>  $ ./concordance.pl ./don.txt 'windmill'
  Snippets from ./don.txt containing windmill:
	* DREAMT-OF ADVENTURE OF THE <span style='color: red'>WINDMILLS</span>, WITH OTHER OCCURRENCES WORTHY TO
	* d over by the sails of the <span style='color: red'>windmill</span>, Sancho tossed in the blanket, the
	* thing is ignoble; the very <span style='color: red'>windmills</span> are the ugliest and shabbiest of 
	* liest and shabbiest of the <span style='color: red'>windmill</span> kind. To anyone who knew the count
	* ers say it was that of the <span style='color: red'>windmills</span>; but what I have ascertained on t
	* DREAMT-OF ADVENTURE OF THE <span style='color: red'>WINDMILLS</span>, WITH OTHER OCCURRENCES WORTHY TO
	* e in sight of thirty forty <span style='color: red'>windmills</span> that there are on plain, and as s
	* e there are not giants but <span style='color: red'>windmills</span>, and what seem to be their arms a
	* t most certainly they were <span style='color: red'>windmills</span> and not giants he was going to at
	*  about, for they were only <span style='color: red'>windmills</span>? and no one could have made any m
	* his will be worse than the <span style='color: red'>windmills</span>," said Sancho. "Look, senor; thos
	* ar by the adventure of the <span style='color: red'>windmills</span> that your worship took to be Bria
	*  was seen when he said the <span style='color: red'>windmills</span> were giants, and the monks' mules
	*  with which the one of the <span style='color: red'>windmills</span>, and the awful one of the fulling
  
  A graph illustrating in what percentage of ./don.txt windmill is located:
	 10 (11) #############################
	 20 ( 0) 
	 30 ( 0) 
	 40 ( 0) 
	 50 ( 0) 
	 60 ( 2) #####
	 70 ( 1) ##
	 80 ( 0) 
	 90 ( 0) 
	100 ( 0)</pre>
<p>
If windmills are mentioned so few times, then why do they play so prominently in people&#8217;s minds when they think of <cite>Don Quiote</cite>? To what degree have people read <cite>Don Quiote</cite> in its entirity? Are windmills as persistent a theme throughout the book as many people may think?
</p>
<p>
What about &#8220;my man Friday&#8221;? Where does he occur in <cite>Robinson Crusoe</cite>? Using the concordance features of the Alex Catalogue of Electronic Texts we can see that <a href="http://infomotions.com/sandbox/concordance/?cmd=search&amp;id=defoe-robinson-103&amp;query=friday">a search for the word Friday</a> returns 185 snippets. Mapping those snippets to percentages of the text results in the following bar chart:
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2010/09/friday.png" alt="bar chart"><br />
Friday in <cite>Robinson Crusoe</cite>
</p>
<p>
Obviously the word Friday appears towards the end of the novel, and as anybody who has read the novel knows, it is a long time until Robinson Crusoe actually gets stranded on the island and meets &#8220;my man Friday&#8221;. A concordance helps people understand this fact.
</p>
<p>
What about love in <cite>Romeo and Juliet</cite>? How often does the word occur and where? Again, <a href="http://infomotions.com/sandbox/concordance/?cmd=search&amp;id=shakespeare-romeo-48&amp;query=love">a search for the word love</a> returns quite a number of snippets (175 to be exact), and they are distributed throughout the text as illustrated below:
</p>
<p style='text-align: center'>
<img src="./../wp-content/uploads/2010/09/love.png" alt="bar chart"><br />
love in <cite>Romeo and Juliet</cite>
</p>
<p>
&#8220;Maybe love is a constant theme of this particular play,&#8221; I state sarcastically, and &#8220;Is there less love later in the play?&#8221;
</p>
<h2>Digital humanities and librarianship</h2>
<p>
Given the current environment, where full text literature abounds, digital humanities and librarianship are a match made in heaven. Our library &#8220;discovery systems&#8221; are essencially indexes. They enable people to find data and information in our collections. Yet find is not an end in itself. In fact, it is only an activity at the very beginning of the learning process. Once content is found it is then read in an attempt at understanding. Counting words and phrases, placing them in the context of an entire work or corpus, and illustrating the result is one way this understanding can be accomplished more quickly. Remember, &#8220;Save the time of the reader.&#8221;
</p>
<p>
Integrating digital humanities computing techniques, like concordances, into library &#8220;discovery systems&#8221; represent a growth opportunity for the library profession. If we don&#8217;t do this on our own, then somebody else will, and we will end up paying money for the service. Climb the learning curve now, or pay exorbitant fees later. The choice is ours.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/09/where-in-the-world-are-windmills-my-man-friday-and-love/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Ngrams, concordances, and librarianship</title>
		<link>./../2010/08/ngrams-concordances-and-librarianship/index.html</link>
				<pubDate>Mon, 30 Aug 2010 05:08:47 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[concordance]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[ngrams]]></category>

		<guid isPermaLink="false">./../index.html?p=642</guid>
				<description><![CDATA[This posting describes how the extraction of ngrams and the implementation of concordances are integrated into the Alex Catalogue of Electronic Texts. Given the increasing availability of full-text content in libraries, the techniques described here could easily be incorporated into traditional library &#8220;discovery systems&#8221; and/or catalogs, if and only if the library profession were to [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting describes how the extraction of ngrams and the implementation of concordances are integrated into the Alex Catalogue of Electronic Texts. Given the increasing availability of full-text content in libraries, the techniques described here could easily be incorporated into traditional library &#8220;discovery systems&#8221; and/or catalogs, if and only if the library profession were to shift its definition of what it means to practice librarianship.
</p>
<h2>Lingua::EN::Bigram</h2>
<p>
During the past couple of weeks, in fits of creativity, one of the things I spent some of my time on was a Perl module named <a href="http://search.cpan.org/dist/Lingua-EN-Bigram/">Lingua::EN::Bigram</a>. At version 0.03, it now supports not only bigrams, trigrams, and quadgrams (two-, three-, and four-word phrases, respectively), but also ngrams &#8212; multi-word phrases of an arbitrary length.
</p>
<p>
Given this enhanced functionality, and through the use of a script called <a href="./../wp-content/uploads/2010/08/ngrams.pl">ngrams.pl</a>, I learned that the 10 most frequently used 5-word phrases and the number of times they occur in Henry David Thoreau&#8217;s <cite>Walden</cite> seem to surround spacial references:
</p>
<ul>
<li>a quarter of a mile (6)</li>
<li>i have no doubt that (6)</li>
<li>as if it were a (6)</li>
<li>the other side of the (5)</li>
<li>the surface of the earth (4)</li>
<li>the greater part of the (4)</li>
<li>in the midst of a (4)</li>
<li>in the middle of the (4)</li>
<li>in the course of the (3)</li>
<li>two acres and a half (3)</li>
</ul>
<p>
Whereas the same process applied to Thoreau&#8217;s <cite>A Week on the Concord and Merrimack Rivers</cite> returns lengths and references to flowing water, mostly:
</p>
<ul>
<li>a quarter of a mile (8)</li>
<li>on the bank of the (7)</li>
<li>the surface of the water (6)</li>
<li>the middle of the stream (6)</li>
<li>as if it were the (5)</li>
<li>as if it were a (4)</li>
<li>is for the most part (4)</li>
<li>for the most part we (4)</li>
<li>the mouth of this river (4)</li>
<li>in the middle of the (4)</li>
</ul>
<p>
While not always as clear cut as the examples outlined above, the extraction and counting of ngrams usually supports the process of &#8220;distant reading&#8221; &#8212; a phrase coined by Franco Moretti in <a href="http://www.amazon.com/gp/product/1844671852?ie=UTF8&#038;tag=infomotions-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1844671852">Graphs, Maps, Trees: Abstract Models for Literary History</a><img src="http://www.assoc-amazon.com/e/ir?t=infomotions-20&#038;l=as2&#038;o=1&#038;a=1844671852" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> (2007) to denote the counting, graphing, and mapping of literary texts. With so much emphasis on reading in libraries, I ask myself, &#8220;Ought the extraction of ngrams be applied to library applications?&#8221;
</p>
<h2>Concordances</h2>
<p>
Concordances are literary tools used to evaluate texts. Dating back to as early as the 12th or 13th centuries, they were first used to study religious materials. Concordances take many forms, but they usually list all the words in a text, the number of times each occurs, and most importantly, places where each word within the context of its surrounding text &#8212; a key-word in context (KWIC) index. Done by hand, the creation of concordances is tedious and time consuming, and therefore very expensive. Computers make the work of creating a concordance almost trivial.
</p>
<p>
Each of the full text items in the Alex Catalogue of Electronic Texts (close to 14,000 of them) is accompanied with a concordance. They support the following functions:
</p>
<ul>
<li>list of all the words in the text starting with a given letter and the number of times each occurs</li>
<li>list the most frequently used words in the text and the number of times each occurs</li>
<li>list the most frequently used ngrams in a text and the number of times each occurs</li>
<li>display individual items from the lists above in a KWIC format</li>
<li>enable the student or scholar to search the text for arbitrary words or phrases (regular expressions) and have them displayed in a KWIC format</li>
</ul>
<p>
Such functionality allows people to answer many questions quickly and easily, such as:
</p>
<ul>
<li>Does Mark Twain&#8217;s <cite>Adventures of Huckleberry Finn</cite> contain many words beginning with the letter z, and if so, how many times and in what context?</li>
<li>To what extent does Aristotle&#8217;s <cite>Metaphysics</cite> use the word &#8220;good&#8221;, and maybe just as importantly, how is the word &#8220;evil&#8221; used in the same context?</li>
<li>In Jack London&#8217;s <cite>Call of the Wild</cite> the phrase &#8220;man in the red sweater&#8221; is one of the more frequently used. Who was this man and what role does he play in the story?</li>
<li>Compared to Shakespeare, to what extent does Plato discuss love, and how do the authors&#8217; expositions differ?</li>
</ul>
<p>
The counting of words, the enumeration of ngrams, and the use of concordances are not intended to short-circuit traditional literary studies. Instead, they are intended to supplement and enhance the process. Traditional literary investigations, while deep and nuanced, are not scalable. A person is not able to read, compare &amp; contrast, and then comprehend the essence of all of Shakespeare, all of Plato, and all of Charles Dickens through &#8220;close reading&#8221;. An individual simply does not have enough time. In the words of Gregory Crane, &#8220;<a href="http://www.dlib.org/dlib/march06/crane/03crane.html">What do you do with a million books?</a>&#8221; Distant reading, akin to the proceses outlined above, make it easier to compare &amp; contrast large corpora, discover patterns, and illustrate trends. Moreover, such processes are reproducible, less prone to subjective interpretation, and not limited to any particular domain. The counting, graphing, and mapping of literary texts makes a lot of sense.
</p>
<p>
The <a href="http://infomotions.com/sandbox/concordance/">home page for the concordances</a> is complete with a number of sample texts. Alternatively, you can search the <a href="http://infomotions.com/alex/">Alex Catalogue</a> and find an item on your own.
</p>
<h2>Library &#8220;discovery systems&#8221; and/or catalogs</h2>
<p>
The amount of full text content available to libraries has never been greater than it is today. Millions of books have been collectively digitized through Project Gutenberg, the Open Content Alliance, and the Google Books Project. There are thousands of open access journals with thousands upon thousands of freely available scholarly articles. There are an ever-growing number of institutional repositories both subject-based as well as institutional-based. These too are rich with full text content. None of this even considers the myriad of grey literature sites like blogs and mailing list archives.
</p>
<p>
Library &#8220;discovery systems&#8221; and/or catalogs are designed to organize and provide access to the materials outlined above, but they need to do more. First of all, the majority of the profession&#8217;s acquisitions processes assume collections need to be paid for. With the increasing availability of truly free content on the Web, greater emphasis needs to be placed on harvesting content as opposed to purchasing or licensing it. Libraries are expected to build collections designed to stand the test of time. Brokering access to content through licensing agreements &#8212; one of the current trends in librarianship &#8212; will only last as long as the money lasts. Licensing content makes libraries look like cost centers and negates the definition of &#8220;collections&#8221;.
</p>
<p>
Second, library &#8220;discovery systems&#8221; and/or catalogs assume an environment of sacristy. They assume the amount of accessible, relevant data and information needed by students, teachers, and researchers is relatively small. Thus, a great deal of the profession&#8217;s efforts go into enabling people to find their particular needle in one particular haystack. In reality, current indexing technology makes the process of finding relavent materials trivial, almost intelligent. Implemented correctly, indexers return more content than most people need, and consequently they continue to drink from the proverbial fire hose.
</p>
<p>
Let&#8217;s turn these lemons into lemonade. Let&#8217;s redirect some of the time and money spent on purchasing licenses towards the creation of full text collections by systematic harvesting. Let&#8217;s figure out how to apply &#8220;distant reading&#8221; techniques to the resulting collections thus making them, literally, more useful and more understandable. These redirections represent a subtle change in the current direction of librarianship. At the same time, they retain the core principles of the profession, namely: collection, organization, preservation, and dissemination. The result of such a shift will result in an increased expertise on our part, the ability to better control our own destiny, and contribute to the overall advancement of our profession.
</p>
<p>What can we do to make these things come to fruition?</p>
]]></content:encoded>
										</item>
		<item>
		<title>Lingua::EN::Bigram (version 0.03)</title>
		<link>./../2010/08/linguaenbigram-version-0-03/index.html</link>
				<comments>./../2010/08/linguaenbigram-version-0-03/index.html#comments</comments>
				<pubDate>Tue, 24 Aug 2010 02:37:39 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>
		<category><![CDATA[bigrams]]></category>
		<category><![CDATA[n-grams]]></category>

		<guid isPermaLink="false">./../index.html?p=638</guid>
				<description><![CDATA[I uploaded version 0.03 of Lingua::EN::Bigram to CPAN today, and it now supports not just bigrams, trigrams, quadgrams, but ngrams &#8212; an arbitrary phrase length. In order to test it out, I quickly gathered together some of my more recent essays, concatonated them together, and applied Lingua::EN::Bigram against the result. Below is a list of [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I uploaded version 0.03 of Lingua::EN::Bigram to CPAN today, and it now supports not just bigrams, trigrams, quadgrams, but ngrams &#8212; an arbitrary phrase length.</p>
<p>In order to test it out, I quickly gathered together some of my more recent essays, concatonated them together, and applied Lingua::EN::Bigram against the result. Below is a list of the top 10 most common bigrams, trigrams, and quadgrams:</p>
<pre>  bigrams                 trigrams                  quadgrams
  52  great ideas         36  the number of         25  the number of times
  43  open source         36  open source software  13  the total number of
  38  source software     32  as well as            10  at the same time
  29  great books         28  number of times       10  number of words in
  24  digital humanities  27  the use of            10  when it comes to
  23  good man            25  the great books       10  total number of documents
  22  full text           23  a set of              10  open source software is
  22  search results      20  eric lease morgan      9  number of times a
  20  lease morgan        20  a number of            9  as well as the
  20  eric lease          19  total number of        9  through the use of</pre>
<p>Not surprising since I have been writing about the Great Books, digital humanities, indexing, and open source software. Re-affirming.</p>
<p>Lingu::EN::Bigram is available <a href="./../wp-content/uploads/2010/08/Lingua-EN-Bigram-0.03.tar.gz">locally</a> as well as from <a href="http://search.cpan.org/dist/Lingua-EN-Bigram/">CPAN</a>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/08/linguaenbigram-version-0-03/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Lingua::EN::Bigram (version 0.02)</title>
		<link>./../2010/08/linguaenbigram-version-0-02/index.html</link>
				<comments>./../2010/08/linguaenbigram-version-0-02/index.html#comments</comments>
				<pubDate>Mon, 23 Aug 2010 00:02:45 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[bigrams]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[n-grams]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">./../index.html?p=633</guid>
				<description><![CDATA[I have written and uploaded to CPAN version 0.02 of my Perl module Lingua::EN::Bigram. From the README file: This module is designed to: 1) pull out all of the two-, three-, and four-word phrases in a given text, and 2) list these phrases according to their frequency. Using this module is it possible to create [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I have written and uploaded to CPAN version 0.02 of my Perl module Lingua::EN::Bigram. From the README file:
</p>
<blockquote>
<p>
This module is designed to: 1) pull out all of the two-, three-, and four-word phrases in a given text, and 2) list these phrases according to their frequency. Using this module is it possible to create lists of the most common phrases in a text as well as order them by their probable occurrence, thus implying significance. This process is useful for the purposes of textual analysis and &#8220;distant reading&#8221;.
</p>
</blockquote>
<p>
Using this module I wrote a script called n-grams.pl. Feed it a plain text file, and it will return the top 10 most significant bigrams (as calculated by T-Score) as well as the top 10 most common trigrams and quadgrams. For example, here is the output of n-grams.pl when Henry David Thoreau&#8217;s <cite><a href="http://infomotions.com/etexts/id/thoreau-walden-186">Walden</a></cite> is input:
</p>
<pre>  Bi-grams (T-Score, count, bigram)
  4.54348783312048  22  one day  
  4.35133234596553  19  new england  
  3.705427371426    14  walden pond  
  3.66575742655033  14  one another  
  3.57857056272537  13  many years  
  3.55592136768501  13  every day  
  3.46339791276118  12  fair haven  
  3.46101939872834  12  years ago  
  3.38519781332654  12  every man  
  3.29818626191729  11  let us  
  
  Tri-grams (count, trigram)
  41  in the woods
  40  i did not
  28  i do not
  28  of the pond
  27  as well as
  27  it is a
  26  part of the
  25  that it was
  25  as if it
  25  out of the
  
  Quad-grams (count, quadgram)
  20  for the most part
  16  from time to time
  15  as if it were
  14  in the midst of
  11  at the same time
   9  the surface of the
   9  i think that i
   8  in the middle of
   8  worth the while to
   7  as if they were</pre>
<p>
The whole thing gets more interesting when you compare that output to another of Thoreau&#8217;s works &#8212; <cite><a href="http://infomotions.com/etexts/id/etext4232">A Week on the Concord and Merrimack Rivers</a></cite>:
</p>
<pre>  Bi-grams (T-Score, count, bi-gram)
  4.62683939320543  22  one another  
  4.57637831535376  21  new england  
  4.08356124174142  17  let us  
  3.86858364314677  15  new hampshire  
  3.43311180449584  12  one hundred  
  3.31196701774012  11  common sense  
  3.25007069543896  11  can never  
  3.15955504269006  10  years ago  
  3.14821552996352  10  human life  
  3.13793008615654  10  told us  
  
  Tri-grams (count, tri-gram)
  41  as well as
  38  of the river
  34  it is a
  30  there is a
  30  one of the
  28  it is the
  27  as if it
  26  it is not
  26  if it were
  24  it was a
  
  Quad-grams (count, quad-gram)
  21  for the most part
  20  as if it were
  17  from time to time
   9  on the bank of
   8  the bank of the
   8  in the midst of
   8  a quarter of a
   8  the middle of the
   8  quarter of a mile
   7  at the same time</pre>
<p>
Ask yourself, &#8220;Are their similarities between the outputs? How about differences? Do you notice any patterns or anomalies? What sorts of new discoveries might be made if n-grams.pl where applied to the entire corpus of Thoreau&#8217;s works? How might the output be different if a second author&#8217;s works were introduced?&#8221; Such questions are the core of digital humanities research. With the increasing availability of full text content in library collections, such are the questions the library profession can help answer if the profession were to expand it&#8217;s definition of &#8220;service&#8221;.</p>
<p>Search and retrieve are not the pressing problems to solved. People can find more data and information than they know what to do with. Instead, the pressing problems surround use and understanding. Lingua::EN::Bigram is an example of how these newer and more pressing problems can be addressed. The module is available for downloading (<a href="./../wp-content/uploads/2010/08/Lingua-EN-Bigram-0.02.tar.gz">locally</a> as well as from <a href="http://search.cpan.org/dist/Lingua-EN-Bigram/">CPAN</a>). Also for your perusal is <a href="./../wp-content/uploads/2010/08/n-grams.pl">n-grams.pl</a>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/08/linguaenbigram-version-0-02/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Cool URIs</title>
		<link>./../2010/08/cool-uris/index.html</link>
				<pubDate>Sun, 22 Aug 2010 18:07:42 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[URI]]></category>

		<guid isPermaLink="false">./../index.html?p=626</guid>
				<description><![CDATA[I have started implementing &#8220;cool&#8221; URIs against the Alex Catalogue of Electronic Texts. As outlined in Cool URIs for the Semantic Web, &#8220;The best resource identifiers&#8230; are designed with simplicity, stability and manageability in mind&#8230;&#8221; To that end I have taken to creating generic URIs redirecting user-agents to URLs based on content negotiation &#8212; 303 [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I have started implementing &#8220;cool&#8221; URIs against the <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>.
</p>
<p>
As outlined in <a href="http://www.w3.org/TR/cooluris/">Cool URIs for the Semantic Web</a>, &#8220;The best resource identifiers&#8230; are designed with simplicity, stability and manageability in mind&#8230;&#8221; To that end I have taken to creating generic URIs redirecting user-agents to URLs based on content negotiation &#8212; 303 URI forwarding. These URIs also provide a means to request specific types of pages. The shapes of these URIs follow, where &#8220;key&#8221; is a foreign key in my underlying (MyLibrary) database:
</p>
<ul>
<li>http://infomotions.com/etexts/id/key &#8211; generic; redirection based on content negotiation</li>
<li>http://infomotions.com/etexts/page/key &#8211; HTML; the text itself</li>
<li>http://infomotions.com/etexts/data/key &#8211; RDF; data about the text</li>
<li>http://infomotions.com/etexts/concordance/key &#8211; concordance; a means for textual analysis</li>
</ul>
<p>
For example, the following URIs return different versions/interfaces of Henry David Thoreau&#8217;s <cite>Walden</cite>:
</p>
<ul>
<li><a href="http://infomotions.com/etexts/id/thoreau-walden-186">http://infomotions.com/etexts/id/thoreau-walden-186</a></li>
<li><a href="http://infomotions.com/etexts/page/thoreau-walden-186">http://infomotions.com/etexts/page/thoreau-walden-186</a></li>
<li><a href="http://infomotions.com/etexts/data/thoreau-walden-186">http://infomotions.com/etexts/data/thoreau-walden-186</a></li>
<li><a href="http://infomotions.com/etexts/concordance/thoreau-walden-186">http://infomotions.com/etexts/concordance/thoreau-walden-186</a></li>
</ul>
<p>
This whole thing makes my life easier. No need to remember complicated URLs. All I have to remember is the shape of my URI and the foreign key. Through the process this also makes the URLs easier to type, shorten, distribute, and display.
</p>
<p>
The downside of this implementation is the need for an always-on intermediary application doing the actual work. The application, implemented as mod_perl module, is called <a href="./../wp-content/uploads/2010/08/Dereference.pm">Apache2::Alex::Dereference</a> and available for your perusal. Another downside is the need for better, more robust RDF, but that&#8217;s for later.</p>
]]></content:encoded>
										</item>
		<item>
		<title>rsync, a really cool utility</title>
		<link>./../2010/08/rsync-a-really-cool-utility/index.html</link>
				<pubDate>Thu, 19 Aug 2010 01:42:18 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[rsync]]></category>

		<guid isPermaLink="false">./../index.html?p=619</guid>
				<description><![CDATA[Without direct physical access to my co-located host, backing up and preserving the Infomotions&#8217; 150 GB of website is challenging, but through the use of rsync things are a whole lot easier. rsync is a really cool utility, and thanks go to Francis Kayiwa who recommended it to me in the first place. &#8220;Thank you!&#8221; [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
Without direct physical access to my co-located host, backing up and preserving the Infomotions&#8217; 150 GB of  website is challenging, but through the use of <a href="http://www.samba.org/rsync/">rsync</a> things are a whole lot easier. rsync is a really cool utility, and thanks go to Francis Kayiwa who recommended it to me in the first place. &#8220;Thank you!&#8221;
</p>
<p>
Here is my rather brain-dead back-up utility:
</p>
<blockquote>
<pre><code># rsync.sh - brain-dead backup of wilson

# change directories to the local store
cd /Users/eric/wilson

# get rid of any weird Mac OS X filenames
find ./ -name '.DS_Store' -exec rm -rf {} \;

# do the work for one remote file system...
rsync --exclude-from=/Users/eric/etc/rsync-exclude.txt \
    -avz wilson:/disk01/ \
    ./disk01/

# ...and then another
rsync --exclude-from=/Users/eric/etc/rsync-exclude.txt \
    -avz wilson:/home/eric/ \
    ./home/eric/
</code></pre>
</blockquote>
<p>
After I run this code my local Apple Macintosh Time Capsule automatically copies my content to yet a third spinning disk. I feel much better about my data now that I have started using rsync.</p>
]]></content:encoded>
										</item>
		<item>
		<title>WiLSWorld, 2010</title>
		<link>./../2010/08/wilsworld-2010/index.html</link>
				<comments>./../2010/08/wilsworld-2010/index.html#comments</comments>
				<pubDate>Fri, 06 Aug 2010 17:04:39 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[wilsworld]]></category>

		<guid isPermaLink="false">./../index.html?p=605</guid>
				<description><![CDATA[I had the recent honor, privilege, and pleasure of attending WiLSWorld (July 21-22, 2010 in Madison, Wisconsin), and this posting outlines my experiences there. In a sentence, I was pleased so see the increasing understanding of &#8220;discovery&#8221; interfaces defined as indexes as opposed to databases, and it is now my hope we &#8212; as a [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><img src="http://www.wils.wisc.edu/images/home/wilsbanner09.jpg" alt="WiLS logo" hspace="5" align="right" width="240" />I had the recent honor, privilege, and pleasure of attending <a href="http://www.wils.wisc.edu/events/wworld2010/">WiLSWorld</a> (July 21-22, 2010 in Madison, Wisconsin), and this posting outlines my experiences there. In a sentence, I was pleased so see the increasing understanding of &#8220;discovery&#8221; interfaces defined as indexes as opposed to databases, and it is now my hope we &#8212; as a profession &#8212; can move beyond search &amp; find towards use &amp; understand.</p>
<h2>Wednesday, July 21</h2>
<p>With an audience of about 150 librarians of all types from across Wisconsin, the conference began with a keynote speech by <strong>Tim Spalding</strong> (LibraryThing) entitled &#8220;Social cataloging and the future&#8221;. The heart of his presentation was a thing he called the Ladder of Social Cataloging which has six &#8220;rungs&#8221;: 1) personal cataloging, 2) sharing, 3) implicit social cataloging, 4) social networking, 5) explicitly social cataloging, and 6) collaboration. Much of what followed were demonstrations of how each of these things are manifested in LibraryThing. There were a number meaty quotes sprinkled throughout the talk:</p>
<blockquote>
<p>&#8230;We [LibraryThing] are probably not the biggest book club anymore&#8230; Reviews are less about buying books and more about sharing minds&#8230; Tagging is not about something for everybody else, but rather about something for yourself&#8230; LibraryThing was about my attempt to discuss the things I wanted to discuss in graduate school&#8230; We have &#8220;flash mobs&#8221; cataloging peoples&#8217; books such as the collections of Thomas Jefferson, John Adams, Ernest Hemingway, etc&#8230; Traditional subject headings are not manifested in degrees; all LCSH are equally valid&#8230; Library data can be combined but separate from patron data.</p>
</blockquote>
<p>I was duly impressed with this presentation. It really brought home the power of crowd sourcing and how it can be harnessed in a library setting. Very nice.</p>
<p> <strong>Peter Gilbert</strong> (Lawrence University) then gave a presentation called &#8220;Resource discovery: I know it when I see it&#8221;. In his words, &#8220;The current problem to solve is to remove all of the solos: books, articles, digitized content, guides to subjects, etc.&#8221; The solution, in his opinion, is to implement &#8220;discovery systems&#8221; similar to Blacklight, eXtensible Catalog, Primo &amp; Primo Central, Summon, VUFind, etc. I couldn&#8217;t have said it better myself. He gave a brief overview of each system.</p>
<p> <strong>Ken Varnum</strong> (University of Michigan Library) described a website redesign process in &#8220;Opening what&#8217;s closed: Using open source tools to tear down vendor silos&#8221;. As he said, &#8220;The problem we tried to solve in our website redesign was the overwhelming number of branch library websites. All different. Almost schizophrenic.&#8221; The solution grew out of a different premise for websites. &#8220;Information not location.&#8221; He went on to describe a rather typical redesign process complete with focus group interviews, usability studies, and advisory groups, but there were a couple of very interesting tidbits. First, inserting the names and faces of librarian in search results has proved popular with students. Second, I admired the &#8220;participatory design&#8221; process he employed. Print a design. Allow patrons to use pencils to add, remove, or comment on aspects of the layout. I also think the addition of a professional graphic designer helped their process.</p>
<p>I then attended <strong>Peter Gorman</strong>&#8216;s (University of Wisconsin-Madison) &#8220;Migration of digital content to Fedora&#8221;. Gorman had the desire to amalgamate institutional content, books, multimedia and finding aids (EAD files) into a single application&#8230; yet another &#8220;discovery system&#8221; description. His solution was to store content into Fedora, index the content, and provide services against the index. Again, a presenter after my own heart. Better than anyone had done previously, Gorman described Fedora&#8217;s content model complete with identifiers (keys), a sets of properties (relationships, audit trails, etc.), and a data streams (JPEG, XML, TIFF, etc.). His description was clear and very easy to digest. The highlight was a description of Fedora &#8220;behaviors&#8221;. These are things people are intended to do with data streams. Examples include enlarging a thumbnail image or transforming a online finding aid into something designed for printing. These &#8220;behaviors&#8221; are very much akin &#8212; if not exactly like &#8212; the &#8220;services against texts&#8221; I have been advocating for a few years.</p>
<h2>Thursday, July 22</h2>
<p>The next day I gave a presentation called &#8220;Electronic texts and the evolving definition of librarianship&#8221;. This was an extended version of my presentation at ALA given a few weeks ago. To paraphrase, &#8220;As we move from databases towards indexes to facilitate search, the problems surrounding find are not as acute. Given the increasing availability of digitized full text content, library systems have the opportunity to employ &#8216;digital humanities computing techniques&#8217; against collections and enable people to do &#8216;distant reading&#8217;.&#8221; I then demonstrated how the simple counting of words and phrases, the use of concordances, and the application of TFIDF can facilitate rudimentary comparing &amp; contrasting of corpora. Giving this presentation was an enjoyable experience because it provided me the chance to verbalize and demonstrate much of my current &#8220;great books&#8221; research.</p>
<p>Later in the morning helped facilitate a discussion on the process a library could go through to implement the ideas outlined in my presentation, but the vast majority of people attended the presentation by <strong>Keith Mountin</strong> (Apple Computer, Inc.) called &#8220;The iPad and its application in libraries&#8221;.</p>
<h2>Conclusion</h2>
<p>Madison was just as nice as I remember. Youthful. Liberal. Progressive. Thanks go to <strong>Deb Shapiro</strong> and <strong>Mark Beatty</strong>. They invited me to sit with them on the capitol lawn and listen to the local orchestra play Beatles music. The whole thing was very refreshing.</p>
<p>The trip back from the conference was a hellacious experience in air travel, but it did give me the chance to have an extended chat with <strong>Tim Spalding</strong> in the airport. We discussed statistics and statistical measures that can be applied to content we are generating. Many of the things he is doing with metadata I may be able to do with full text. The converse is true as well. Moreover, by combining our datasets we may find that the sum is greater than the parts &#8212; all puns intended. Both Tim and I agreed this is something we should both work towards. Afterwards I ate macaroni &amp; cheese with a soft pretzel and a beer. It seemed apropos for Wisconsin.</p>
<p>This was my second or third time attending WiLSWorld. Like the previous meetings, the good folks at WiLS &#8212; specifically <strong>Tom Zilner</strong>, <strong>Mark Beatty</strong>, and <strong>Shirley Schenning</strong> &#8212; put together a conference providing librarians from across Wisconsin with a set of relatively inexpensive professional development opportunities. Timely presentations. Plenty of time for informal discussions. All in a setting conducive to getting away and thinking a bit outside the box. &#8220;Thank you.&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/08/wilsworld-2010/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>Digital Humanities 2010: A Travelogue</title>
		<link>./../2010/07/digital-humanities-2010-a-travelogue/index.html</link>
				<comments>./../2010/07/digital-humanities-2010-a-travelogue/index.html#comments</comments>
				<pubDate>Sun, 25 Jul 2010 16:52:10 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[dh2010]]></category>
		<category><![CDATA[digital humanities]]></category>

		<guid isPermaLink="false">./../index.html?p=576</guid>
				<description><![CDATA[I was fortunate enough to be able to attend a conference called Digital Humanities 2010 (London, England) between July 4th and 10th. This posting documents my experiences and take-aways. In a sentence, the conference provided a set of much needed intellectual stimulation and challenges as well as validated the soundness of my current research surrounding [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I was fortunate enough to be able to attend a conference called <a href="http://dh2010.cch.kcl.ac.uk/">Digital Humanities 2010</a> (London, England) between July 4th and 10th. This posting documents my experiences and take-aways. In a sentence, the conference provided a set of much needed intellectual stimulation and challenges as well as validated the soundness of my current research surrounding the Great Books.</p>
<p style='text-align: center'>
    <img src="./../wp-content/uploads/2010/07/london/IMG_5719.png" alt="lunch" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5721.png" alt="castle" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5749.png" alt="castle" width="190" height="143" hspace="3" />
    </p>
<h2>Pre-conference activities</h2>
<p>All day Monday, July 5, I participated in a workshop called <cite>Text mining in the digital humanities</cite> facilitated by <strong>Marco B&uuml;chler</strong>, et al. of the University of Leipzig. A definition of &#8220;e-humanities&#8221; was given, &#8220;The application of computer science to do qualitative evaluation of texts without the use of things like TEI.&#8221; I learned that graphing texts illustrates concepts quickly &#8212; &#8220;A picture is worth a thousand words.&#8221; Also, I learned I should consider creating co-occurrence graphs &#8212; pictures illustrating what words co-occur with a given word. Finally, according to the Law of Least Effort, the strongest content words in a text are usually the ones that do not occur most frequently, nor the ones occurring the least, but rather the words occurring somewhere in between. A useful quote includes, &#8220;Text mining allows one to search even without knowing any search terms.&#8221; Much of this workshop&#8217;s content came from the <a href="http://www.eaqua.net/">eAQUA Project</a>.</p>
<p>On Tuesday I attended the first half of a <a href="http://thatcamplondon.org/">THATCamp</a> led by <strong>Dan Cohen</strong> (George Mason University) where I learned THATCamps are expected to be: 1) fun, 2) productive, and 3) collegial. The whole thing came off as a &#8220;bar camp&#8221; for scholarly conferences. As a part of the &#8216;Camp I elected to participate in the <a href="http://thatcamplondon.org/developers-challenge/">Developer&#8217;s Challenge</a> and submitted an entry called &#8220;<a href="./../2010/07/how-great-is-this-article/index.html">How &#8216;great&#8217; is this article?</a>&#8220;. My hack compared texts from the <cite>English Women&#8217;s Journal</cite> to the Great Books Coefficient in order to determine &#8220;greatness&#8221;. My entry did not win. Instead the <a href="http://thatcamplondon.org/developers-challenge/and-the-winner-is/">prize went to <strong>Patrick Juola</strong></a> with honorable mentions going to <strong>Loretta Auvil</strong>, <strong>Marco B&uuml;chler</strong>, and <strong>Thomas Eckart</strong>.</p>
<p>Wednesday morning I learned more about text mining in a workshop called <cite>Introduction to text analysis using JiTR and Voyeur</cite> led by <strong>St&eacute;fan Sinclair</strong> (McMaster University) and <strong>Geoffrey Rockwell</strong> (University of Alberta). The purpose of the workshop was &#8220;to learn how to integrate text analysis into a scholar&#8217;s/researcher&#8217;s workflow.&#8221; More specifically, we learned how to use a tool called <a href="http://voyeurtools.org/">Voyeur</a>, an evolution of the <a href="http://portal.tapor.ca/portal/portal">TAPoR</a>. The &#8220;kewlest&#8221; thing I learned was the definition of word density, (U / W) 1000, where U is the total number of unique words in a text and W is the total number of words in a text. The closer the result is to 1000 the richer and more dense a text is. In general, denser documents are more difficult to read. (For a good time, I wrote density.pl &#8212; a program to compute density given an arbitrary plain text file.)</p>
<p>In keeping with the broad definition of humanities, I was &#8220;seduced&#8221; in the afternoon by listening to recordings of a website called <a href="http://www.charm.rhul.ac.uk/">CHARM</a> (Center for History and Analysis of Recorded Music). The presentation described and presented digitized classical music from the very beginnings of recorded music. All apropos since the BBC was located just across the street from King&#8217;s College where the conference took place. When this was over we retired to the deck for tea and cake. There I learned the significant recording time differences between 10&#8243; and 12&#8243; 78/rpm records. Like many mediums, the recording artist needed to make accommodations accordingly.</p>
<p style='text-align: center'>
    <img src="./../wp-content/uploads/2010/07/london/IMG_5797.png" alt="me" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5821.png" alt="abbey" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5824.png" alt="abbey" width="190" height="143" hspace="3" />
    </p>
<h2>Plenty of presentations</h2>
<p>The conference officially began Wednesday evening and ended Saturday afternoon. According to my notes, I attended at many as eighteen sessions. (Wow!?) Listed below are summaries of most of the ones I attended:</p>
<ul>
<li><strong>Charles Henry</strong> (Council on Library and Information Resources) and <cite>Hold up a mirror</cite> &#8211; In this keynote presentation Henry compared &amp; contrasted manifestations (oral, written, and digital) of Homer, Beowulf, and a 9-volume set of religious ceremonies compiled in the 18th century. He then asked the question, &#8220;How can machines be used to capture the interior of the working mind?&#8221; Or, in my own words, &#8220;How can computers be used to explore the human condition?&#8221; The digital versions of the items listed above were used as example answers, and a purpose of the conference was to address this question in other ways. He said, &#8220;There are many types of performance, preservation, and interpretation.&#8221;</li>
<li><strong>Patrick Juola</strong> (Duquesne University) and <cite>Distant reading and mapping genre space via conjecture-based distance measures</cite> &#8211; Juola began by answering the question, &#8220;What do you do with a million books?&#8221;, and enumerated a number of things: 1) search, 2) summarize, 3) sample, and 4) visualize. These sorts of proceses against texts is increasingly called &#8220;distant reading&#8221; and is contrasted with the more traditional &#8220;close reading&#8221;. He then went on to describe his &#8220;Conjecturator&#8221; &#8212; a system where assertions are randomly generated and then evaluated. He demonstrated this technique against a set of Victorian novels. His presentation was not dissimilar to the presentation he gave at <a href="./../2009/12/colloquium-on-digital-humanities-and-computer-science-a-travelogue/index.html">digital humanities conference in Chicago</a> the previous year.</li>
<li><strong>Jan Rybicki</strong> (Pedagogical University) and <cite>Deeper delta across genres and language: Do we really need the most frequent words?</cite> &#8211; In short Rybicki said, &#8220;Doing simple frequency counts [to do authorship analysis] does not work very well for all languages, and we are evaluating &#8216;deeper deltas'&#8221; &#8212; an allusion to the work for <strong>J.F. Burrows</strong> and <strong>D.L. Hoover</strong>. Specifically, using a &#8220;moving window&#8221; of stop words he looked for similarities in authorship between a number of texts and believed his technique has proved to be more or less successful.</li>
<li><strong>David Holms</strong> (College of New Jersey) and <cite>The Diary of a public man: A Case study in traditional and non-traditional author attribution</cite> &#8211; Soon after the civil war a book called <cite>The Diary Of A Public Man</cite> was written by an anonymous author. Using stylometric techniques, Holms asserts the work really was written as a diary and was authored by William Hurlbert.</li>
<li><strong>David Hoover</strong> (New York University) and <cite>Teasing out authorship and style with t-tests and zeta</cite> &#8211; Hoover used T-tests and Zeta tests to validated whether or not a particular author finished a particular novel from the 1800s. Using these techniques he was successfully able to illustrate writing styles and how they changed dramatically between one chapter in the book and another chapter. He asserted that such analysis would have been extremely difficult through rudimentary casual reading.</li>
<li><strong>Martin Holmes</strong> (University of Victoria) and <cite>Using the universal similarity metric to map correspondences between witnesses</cite> &#8211; Holmes described how he was comparing the similarity between texts through the use of a compression algorithm. Compress texts. Compare their resulting lengths. The closer to lengths the greater the similarity. The process works for a variety of file types, languages, and when there there is no syntactical knowledge.</li>
<li><strong>Dirk Roorda</strong> (Data Archiving and Networked Services) and <cite>The Ecology of longevity: The Relevance of evolutionary theory for digital preservation</cite> &#8211; Roorda drew parallels between biology and preservation. For example, biological systems use and retain biological characteristics. Preservation systems re-use and thus preserve content. Biological systems make copies and evolve. Preservation can be about migrating formats forward thus creating different forms. Biological systems employ sexual selections. &#8220;Look how attractive I am.&#8221; Repositories or digital items displaying &#8220;seals of approval&#8221; function similarly. Finally, he went on to describe how these principles could be integrated in a preservation system where fees are charged for storing content and providing access to it. He emphasized such systems would not necessarily be designed to handle intellectual property rights.</li>
<li><strong>Lewis Ulman</strong> (Ohio State University) &amp; <strong>Melanie Schlosser</strong> (Ohio State University) and <cite>The Specimen case and the garden: Preserving complex digital objects, sustaining digital projects</cite> &#8211; Ulman and Schlosser described a dichotomy manifesting itself in digital libraries. On one hand there is a practical need for digital library systems to be similar between each other because &#8220;boutique&#8221; systems are very expensive to curate and maintain. At the same time specialized digital library applications are needed because they represent the frontiers of research. How to accomodate both, that was their question. &#8220;No one group (librarians, information technologist, faculty) will be able to do preservation alone. They need to work together. Specifically, they need to connect, support, and curate.&#8221;</li>
<li><strong>George Buchanan</strong> (City University) and <cite>Digital libraries of scholarly editions</cite> &#8211; Similar to Ulman/Schlosse above, Buchanan said, &#8220;It is difficult to provide library services against scholarly editions because each edition is just too much different from the next to create a [single] system.&#8221; He advocated the Greenstone digital library system.</li>
</ul>
<p style='text-align: center'>
    <img src="./../wp-content/uploads/2010/07/london/IMG_5839.png" alt="book" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5844.png" alt="ice cream" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5845.png" alt="beer" width="190" height="143" hspace="3" />
    </p>
<ul>
<li><strong>Joe Raben</strong> (Queens College of the City University of New York) and <cite>Humanities computing in an age of social change</cite> &#8211; In this presentation, given after being honored with the community&#8217;s Busa Award, Raben first outlined the history of the digital humanities. It included the work done by <strong>Father Busa</strong> who collaborated with IBM in the 1960s to create a concordance against some of <strong>Thomas Aquinas</strong>&#8216;s work. It included a description of a few seminal meetings and the formulation of the <cite>Computing in the Humanities</cite> journal. He alluded to &#8220;machine readable texts&#8221; &#8212; a term which is no longer in vogue but reminded me of &#8220;machine readable cataloging&#8221; (MARC) and how the library profession has not moved on. He advocated for a humanities wiki where ideas and objects could be shared. It sounded a lot like the arts-humanities.net website. He discussed the good work of a Dante project hosted at Princeton University, and I was dismayed because Notre Dame&#8217;s significant collection of Dante materials has not played a role in this particular digital library. A humanist through and through, he said, &#8220;Computers are increasingly controlling our lives and the humanities have not effected how we live in the same way.&#8221; To this I say, computers represent close trends compared to the more engrained values of the human condition. The former are quick to change, the later change oh so very slowly yet they are more pervasive. Compared to computer technology, I believe the humanists have had more long-lasting effects on the human condition.</li>
<li><strong>Lynne Siemens</strong> (University of Victoria) and <cite>A Tale of two cities: Implications of the similarities in collaborative approaches within the digital libraries and digital humanities communities</cite> &#8211; Siemans reported on the results of survey in an effort to determine how and why digital librarians and digital humanists collaborate. &#8220;There are cultural differences between librarians and academics, but teams [including both] are necessary. The solution is to assume the differences rather than the similarities. Everybody brings something to the team.&#8221;</li>
<li><strong>Fenella France</strong> (Library of Congress) and <cite>Challenges of linking digital heritage scientific data with scholarly research: From navigation to politics</cite> &#8211; France described some of the digital scanning processes of the Library of Congress, and some the consequences. For example, their technique allowed archivists to discover how <strong>Thomas Jefferson</strong> wrote, crossed out, and then replaced the word &#8220;subjects&#8221; with &#8220;citizens&#8221; in a draft of the Declaration of Independence. A couple of interesting quotes included, &#8220;We get into the optical archeology of the documents&#8221;, and &#8220;Digitization is access, not preservation.&#8221;</li>
<li><strong>Joshua Sternfeld</strong> (National Endowment for the Humanities) and <cite>Thinking archivally: Search and metadata as building blocks for a new digital historiography</cite> &#8211; Sternfeld advocated for different sets of digital library evaluation. &#8220;There is a need for more types of reviews against digital resource materials. We need a method for doing: selection, search, and reliability&#8230; The idea of provenance &#8212; the order of document creation &#8212; needs to be implemented in the digital realm.&#8221;</li>
<li><strong>Wendell Piez</strong> (Mulberry Technologies, Inc.) and <cite>Towards hermeneutic markup: An Architectural outline</cite> &#8211; Hermeneutic markup are annotations against a text that are purely about interpretation. &#8220;We don&#8217;t really have the ability to do hermeneutic markup&#8230; Existing schemas are fine, but every once in a while exceptions need to be made and such things break the standard.&#8221; Numerous times Piez alluded to the &#8220;overlap problem&#8221; &#8212; the inability to demarcate something crossing the essentially strict hierarchal nature of XML elements. Textual highlighting is a good example. Piez gave a few examples of how the overlap problem might be resolved and how hermeneutic markup may be achieved.</li>
<li><strong>Jane Hunter</strong> (University of Queensland) and <cite>The Open Annotation collaboration: A Data model to support sharing and interoperability of scholarly annotations</cite> &#8211; Working with a number of other researchers, Hunter said, &#8220;The problem is that there is an extraordinarily wide variety of tools, lack of consistency, no standards, and no sharable interoperability when it comes to Web-based annotation.&#8221; Their goal is to create a data model to enable such functionality. While the model is not complete, it is being based on RDF, SANE, and OATS. See <a href="http://www.openannotation.org/">www.openannotation.org</a>.</li>
<li><strong>Susan Brown</strong> (University of Alberta and University of Guelph) and <cite>How do you visualize a million links?</cite> &#8211; Brown described a number of ways she is exploring visualization techniques. Examples included link graphs, tag clouds, bread board searches, cityscapes, and something based on &#8220;six degrees of separation&#8221;.</li>
<li><strong>Lewis Lancaster</strong> (University of California, Berkeley) and <cite>From text to image to analysis: Visualization of Chinese Buddhist canon</cite> &#8211; Lancaster has been doing research against a (huge) set of Korean glyphs for quite a number of years. Just like other writing techniques, the glyphs change over time. Through the use digital humanities computing techniques, he has been able to discover much more quickly patterns and bigrams that he was not able to discover previously. &#8220;We must present our ideas as images because language is too complex and takes too much time to ingest.&#8221;</li>
</ul>
<p style='text-align: center'>
    <img src="./../wp-content/uploads/2010/07/london/IMG_5759.png" alt="church" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5780.png" alt="gate" width="190" height="143" hspace="3" />&nbsp;<img src="./../wp-content/uploads/2010/07/london/IMG_5782.png" alt="alley" width="190" height="143" hspace="3" />
    </p>
<h2>Take-aways</h2>
<p>In the spirit of British fast food, I have a number of take-aways. First and foremost, I learned that my current digital humanities research into the Great Books is right on target. It asks questions of the human condition and tries to answer them through the use of computing techniques. This alone was the worth the total cost of my attendance.</p>
<p>Second, as a relative outsider to the community, I percieved a pervasive us versus them mentality being described. Us digital humanists and those traditional humanists. Us digital humanists and those computer programmers and systems administrators. Us digital humanists and those librarians and archivists. Us digital humanists and those academic bureaucrats. If you consider yourself a digital humanist, then please don&#8217;t take this observation the wrong way. I believe communities inherently do this as a matter of fact. It is a process used to define one&#8217;s self. The heart of much of this particular differenciation seems to be yet another example of <strong>C.P. Snow</strong>&#8216;s <cite>The Two Cultures</cite>. As a humanist myself, I identify with the perception. I think the processes of art and science complement each other, not contradict nor conflict. A balance of both are needed in order to adequantly create a cosmos out of the apparent chaos of our existance &#8212; a concept I call <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscience</a>.</p>
<p>Third, I had ample opportunities to enjoy myself as a tourist. The day I arrived I played frisbee disc golf with a few &#8220;cool dudes&#8221; at Lloyd Park in Croydon. On the Monday I went to the National Theater and saw <cite>Welcome to Thebes</cite> &#8212; a depressing tragedy where everybody dies. On the Tuesday I took in Windsor Castle. Another day I carried my <cite>Culver Citizen</cite> newspaper to have its photograph taken in front of Big Ben. Throughout my time there I experienced interesting food, a myriad of languages &amp; cultures, and the almost overwhelming size of London. Embarassingly, I had forgotten how large the city really is.</p>
<p>Finally, I actually enjoyed reading the formally published conference abstracts &#8212; all three pounds and 400 pages of it. It was thorough, complete, and even included an author index. More importantly, I discovered more than a few quotes supporting an idea for library systems that I have been calling <a href="http://www.google.com/search?q=%22services+against+texts%22">&#8220;services against texts&#8221;</a>:</p>
<blockquote>
<p>The challenge is to provide the researcher with a means to perceiving or specifying subsets of data, extracting the relevent information, building the nodes and edges, and then providing the means to navigate the vast number of nodes and edges. (<strong>Susan Brown</strong> in &#8220;How do you visualize a million links&#8221; on page 106)</p>
</blockquote>
<blockquote>
<p>However, current DL [digital library] systems lack critical features: they have too simple a model of documents, and lack scholarly apparatus. (<strong>George Buchanan</strong> in &#8220;Digital libraries of scholarly editions&#8221; on page 108.)</p>
</blockquote>
<blockquote>
<p>This approach takes us to the what F. Moretti (2005) has termed &#8216;distant reading,&#8217; a method that stresses summarizing large bodies of text rather than focusing on a few texts in detail. (<strong>Ian Gregory</strong> in &#8220;GIS, texts and images: New approaches to landscape appreciation in the Lake District&#8221; on page 159).</p>
</blockquote>
<p>And the best quote is:</p>
<blockquote>
<p>In smart digital libraries, a text should not only be an object but a service: not a static entity but an interactive method. The text should be computationally exploitable so that it can be sampled and used, not simply reproduced in its entirety&#8230; the reformulation of the dictionary not as an object, but a service. (<strong>Toma Tasovac</strong> in &#8220;Reimaging the dictionary, or why lexicography needs digital humanities&#8221; on page 254)</p>
</blockquote>
<p>In conclusion, I feel blessed with the ability to attended the conference. I learned a lot, and I will recommend it to any librarian or humanist.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/07/digital-humanities-2010-a-travelogue/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>How &#8220;great&#8221; is this article?</title>
		<link>./../2010/07/how-great-is-this-article/index.html</link>
				<comments>./../2010/07/how-great-is-this-article/index.html#comments</comments>
				<pubDate>Fri, 09 Jul 2010 07:33:34 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[dh2010]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[thatcamp]]></category>

		<guid isPermaLink="false">./../index.html?p=570</guid>
				<description><![CDATA[During Digital Humanities 2010 I participated in the THATCamp London Developers&#8217; Challenge and tried to answer the question, &#8220;How &#8216;great&#8217; is this article?&#8221; This posting outlines the functionality of my submission, links to a screen capture demonstrating it, and provides access to the source code. Given any text file &#8212; say an article from the [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
During <a href="http://dh2010.cch.kcl.ac.uk/">Digital Humanities 2010</a> I participated in the <a href="http://thatcamplondon.org/developers-challenge/">THATCamp London Developers&#8217; Challenge</a> and tried to answer the question, &#8220;How &#8216;great&#8217; is this article?&#8221; This posting outlines the functionality of my submission, links to a screen capture demonstrating it, and provides access to the <a href="./../wp-content/uploads/2010/07/thatcamp/evaluate.pl">source code</a>.
</p>
<p>
<a href="./../wp-content/uploads/2010/07/thatcamp/evaluate.swf"><img src="./../wp-content/uploads/2010/07/thatcamp/evaluate.png" alt="screen capture" width="240" align="right" hspace="5"></a>Given any text file &#8212; say an article from the <em>English Women&#8217;s Journal</em> &#8212; my submission tries to answer the question, &#8220;How &#8216;great&#8217; is this article?&#8221; It does this by:
</p>
<ol>
<li>returning the most common words in a text</li>
<li>returning the most common bigrams in a text</li>
<li>calculating a few readability scores</li>
<li>comparing the texts to a standardized set of &#8220;great ideas&#8221;</li>
<li>supporting a concordance for browsing</li>
</ol>
<p>
Functions #1, #2, #3, and #5 are relatively straight-forward and well-understood. Function #4 needs some explanation.
</p>
<p>
In the 1960&#8217;s a set of books was published called the Great Books. The set is based on a set of 102 &#8220;great ideas&#8221; (such as art, love, honor, truth, justice, wisdom, science, etc.). By summing the TFIDF scores of each of these ideas for each of the books, a &#8220;great ideas coefficient&#8221; can be computed. Through this process we find that Shakespeare wrote seven of the top ten books when it comes to love. Kant wrote the &#8220;greatest book&#8221;. The American State&#8217;s <cite>Articles of Confederation</cite> ranks the highest when it come to war. This &#8220;coefficient&#8221; can then be used as a standard &#8212; an index &#8212; for comparing other documents. This is exactly what this program does. (<a href="./../wp-content/uploads/2010/07/thatcamp/evaluate.swf">See the screen capture for a demonstration</a>.)
</p>
<p>
The program can be improved a number of ways:
</p>
<ol>
<li>it could be Web-based</li>
<li>it could process non-text files</li>
<li>it could graphically illustrate a text&#8217;s &#8220;greatness&#8221;</li>
<li>it could hyperlink returned words directly to the concordance</li>
</ol>
<p>
Thanks to <strong>Gerhard Brey</strong> and the folks of the <cite>Nineteenth Century Serials Editions</cite> for providing the data. Very interesting.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/07/how-great-is-this-article/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>ALA 2010</title>
		<link>./../2010/06/ala-2010/index.html</link>
				<pubDate>Wed, 30 Jun 2010 19:42:05 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[ALA]]></category>

		<guid isPermaLink="false">./../index.html?p=564</guid>
				<description><![CDATA[This is the briefest of travelogues describing my experience at the 2010 ALA Annual Meeting in Washington (DC). Pat Lawton and I gave a presentation at the White House Four Points Hotel on the &#8220;Catholic Portal&#8220;. Essentially it was a status report. We shared the podium with Jon Miller (University of Southern California) who described [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
<img src="./../wp-content/uploads/2010/06/ala.gif" alt="ALA 2010" align="right" hspace="3">This is the briefest of travelogues describing my experience at the 2010 ALA Annual Meeting in Washington (DC).
</p>
<p>
<strong>Pat Lawton</strong> and I gave a presentation at the <del>White House</del> Four Points Hotel on the &#8220;<a href="http://www.catholicresearch.net/">Catholic Portal</a>&#8220;. Essentially it was a status report. We shared the podium with <strong>Jon Miller</strong> (University of Southern California) who described the <a href="http://crcc.usc.edu/initiatives/impa/">International Mission Photography Archive</a> &#8212; an extensive collection of photographs taken by missionaries from many denominations.
</p>
<p>
I then took the opportunity to visit my mother in Pennsylvania, but the significant point is the way I got out of town. I had lost my maps, and my iPad came to the rescue. The Google Maps application was very, <em>very</em> useful.
</p>
<p>
On Monday I shared a podium with <strong>John Blyberg</strong> (Darien Library) and <strong>Tim Spalding</strong> (LibraryThing) as a part of a Next-Generation Library Catalog Special Interest Group presentation. John provided an overview of the latest and greatest features of SOPAC. He emphasized a lot of user-centered design. Tim described library content and services as not (really) being a part of the Web. In many ways I agree with him. I outlined how a few digital humanities computing techniques could be incorporated into library collections and services in a presentation I called &#8220;<a href="./../2010/06/the-next-next-generation-library-catalog/index.html">The Next Next-Generation Library Catalog</a>&#8220;. That afternoon I participated in a VUFind users-group meeting, and I learned that I am pretty much on target in regards to the features of this &#8220;discovery system&#8221;. Afterwards a number of us from the <strong>Catholic Research Resources Alliance</strong> (CRRA) listened to folks from <strong>Crivella West</strong> describe their vision of librarianship. The presentation was very interesting because they described how they have taken many collections of content and mined them for answers to questions. This is digital humanities to the extreme. Their software &#8212; the Knowledge Kiosk &#8212; is being used to analyze the content of John Henry Newman at the <strong>Newman Institute</strong>.
</p>
<p>
Tuesday morning was spent more with the CRRA. We ratified next year&#8217;s strategic plan. In the afternoon I visited a few of my friends at the <strong>Library of Congress</strong> (LOC). There I learned a bit how the LOC may be storing and archiving Twitter feeds. Interesting.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Text mining against NGC4Lib</title>
		<link>./../2010/06/text-mining-against-ngc4lib/index.html</link>
				<comments>./../2010/06/text-mining-against-ngc4lib/index.html#comments</comments>
				<pubDate>Fri, 25 Jun 2010 15:23:51 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>
		<category><![CDATA[NGC4Lib]]></category>
		<category><![CDATA[text mining]]></category>

		<guid isPermaLink="false">./../index.html?p=561</guid>
				<description><![CDATA[I &#8220;own&#8221; a mailing list called NCG4Lib. It&#8217;s purpose is to provide a forum for the discussion of all things &#8220;next generation library catalog&#8221;. As of this writing, there are about 2,000 subscribers. Lately I have been asking myself, &#8220;What sorts of things get discussed on the list and who participates in the discussion?&#8221; I [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>I &#8220;own&#8221; a mailing list called <a href="http://dewey.library.nd.edu/mailing-lists/ngc4lib/">NCG4Lib</a>. It&#8217;s purpose is to provide a forum for the discussion of all things &#8220;next generation library catalog&#8221;. As of this writing, there are about 2,000 subscribers.</p>
<p>Lately I have been asking myself, &#8220;What sorts of things get discussed on the list and who participates in the discussion?&#8221; I thought I&#8217;d try to answer this question with a bit of text mining. This analysis only covers the current year to date, 2010.</p>
<h2>Author names</h2>
<p>Even though there are as many as 2,000 subscribers, only a tiny few actually post comments. The following pie and line charts illustrate the point without naming any names. As you can see, eleven (11) people contribute 50% of the postings.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2010/06/ngc4lib/pie.png" alt="posters" width="320" align="middle"><br />
<a href="./../wp-content/uploads/2010/06/ngc4lib/pie.png">11 people post 50% of the messages</a></p>
<p>The lie chart illustrates the same point differently; a few people post a lot. We definitely have a long tail going on here.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2010/06/ngc4lib/line.png" alt="posters" width="320" align="middle"><br />
<a href="./../wp-content/uploads/2010/06/ngc4lib/line.png">They definitely represent a long tail</a></p>
<h2>Subject lines</h2>
<p>The most frequently used individual subject line words more or less reflect traditional library cataloging practices. MARC. MODS. Cataloging. OCLC. But also notice how the word &#8220;impasse&#8221; is included. This may reflect something about the list.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2010/06/ngc4lib/subject-words.png" alt="subject words" width="320" align="middle"><br />
<a href="./../wp-content/uploads/2010/06/ngc4lib/subject-words.png">The subject words look &#8220;traditional&#8221;</a></p>
<p>I&#8217;m not quite sure what to make of the most commonly used subject word bigrams.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2010/06/ngc4lib/subject-bigrams.png" alt="subject bigrams" width="320" align="middle"><br />
<a href="./../wp-content/uploads/2010/06/ngc4lib/subject-bigrams.png">&#8216;Don&#8217;t know what to make of these bigrams</a></p>
<h2>Body words</h2>
<p>The most frequently used individual words in the body of the postings tell a nice story. Library. Information. Data. HTTP. But notice what is not there &#8212; books. I also don&#8217;t see things like collections, acquisitions, public, services, nor value or evaluation. Hmm&#8230;</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2010/06/ngc4lib/body-words.png" alt="body words" width="320" align="middle"><br />
<a href="./../wp-content/uploads/2010/06/ngc4lib/body-words.png">These tell a nice story</a></p>
<p>The most frequently used bigrams in the body of the messages tell an even more interesting story because the they are dominated by the names of people and things.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2010/06/ngc4lib/body-bigrams.png" alt="body bigrams" width="320" align="middle"><br />
<a href="./../wp-content/uploads/2010/06/ngc4lib/body-bigrams.png">Names of people and things</a></p>
<p>The phrases &#8220;information services&#8221; and &#8220;technical services&#8221; do not necessarily fit my description. Using a concordance to see how these words were being used, I discovered they were overwhelmingly a part of one or more persons&#8217; email signatures or job descriptions. Not what I was hoping for. (Sigh.)</p>
<h2>Conclusions</h2>
<p>Based on these observations, as well as my personal experience, I believe the NGC4Lib mailing list needs more balance. It needs more balance in a couple of ways:</p>
<ol>
<li>There are too few people who post the majority of the content. The opinions of eleven people do not, IMHO, represent the ideas and beliefs of more than 2,000. I am hoping these few people understand this and will moderate themselves accordingly.</li>
<li>The discussion is too much focused, IMHO, on traditional library cataloging. There is so much more to the catalog than metadata. We need to be asking questions about what it contains, how that stuff is selected and how it gets in there, what the stuff is used for, and how all of this fits into the broader, worldwide information environment. We need to be discussing issues of collection and dissemination, not just organization. Put another way, I wish I had not used the word &#8220;catalog&#8221; in the name of the list because I think the word brings along too many connotations and preconceived ideas.</li>
</ol>
<p>As the owner of the list, what will I do? Frankly, I don&#8217;t know. Your thoughts and comments are welcome.</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2010/06/text-mining-against-ngc4lib/feed/index.html</wfw:commentRss>
		<slash:comments>5</slash:comments>
							</item>
		<item>
		<title>The Next Next-Generation Library Catalog</title>
		<link>./../2010/06/the-next-next-generation-library-catalog/index.html</link>
				<comments>./../2010/06/the-next-next-generation-library-catalog/index.html#comments</comments>
				<pubDate>Thu, 24 Jun 2010 16:24:52 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">./../index.html?p=549</guid>
				<description><![CDATA[With the advent of the Internet and wide-scale availability of full-text content, people are overwhelmed with the amount of accessible data and information. Library catalogs can only go so far when it comes to delimiting what is relevant and what is not. Even when the most exact searches return 100&#8217;s of hits what is a [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>
With the advent of the Internet and wide-scale availability of full-text content, people are overwhelmed with the amount of accessible data and information. Library catalogs can only go so far when it comes to delimiting what is relevant and what is not. Even when the most exact searches return 100&#8217;s of hits what is a person to do? Services against texts &#8212; digital humanities computing techniques &#8212; represent a possible answer. Whether the content is represented by novels, works of literature, or scholarly journal articles the methods of the digital humanities can provide ways to compare &amp; contrast, analyze, and make more useful any type of content. This essay elaborates on these ideas and describes how they can be integrated into the &#8220;next, next-generation library catalog&#8221;.
</p>
<p>(Because this essay is the foundation for a presentation at the 2010 ALA Annual Meeting, this presentation is also available as a <a href="./../wp-content/uploads/2010/06/services/handout.pdf">one-page handout</a> designed for printing as well as bloated <a href="./../wp-content/uploads/2010/06/services/slides.pdf">set of slides</a>.)</p>
<h2>Find is not the problem</h2>
<p>
Find is not the problem to be solved. At most, find is a means to an end and not the end itself. Instead, the problem to solve surrounds use. The profession needs to implement automated ways to make it easier users do things against content.
</p>
<p>
The library profession spends an inordinate amount of time and effort creating catalogs &#8212; essentially inventory lists of things a library owns (or licenses). The profession then puts a layer on top of this inventory list &#8212; complete with authority lists, controlled vocabularies, and ever-cryptic administrative data &#8212; to facilitate discovery. When poorly implemented, this discovery layer is seen by the library user as an impediment to their real goal. Read a book or article. Verify a fact. Learn a procedure. Compare &amp; contrast one idea with another idea. Etc.
</p>
<p>
In just the past few years the library profession has learned that indexers (as opposed to databases) are the tools to facilitate find. This is true for two reasons. First, indexers reduce the need for users to know how the underlying data is structured. Second, indexers employ statistical analysis to rank it&#8217;s output by relevance. Databases are great for creating and maintaining content. Indexers are great for search. Both are needed in equal measures in order to implement the sort of information retrieval systems people have come to expect. For example, many of the profession&#8217;s current crop of &#8220;discovery&#8221; systems (VUFind, Blacklight, Summon, Primo, etc.) all use an open source indexer called Lucene to drive search.
</p>
<p>
This being the case, we can more or less call the problem of find solved. True, software is never done, and things can always be improved, but improvements in the realm of search will only be incremental.
</p>
<p>
Instead of focusing on find, the profession needs to focus on the next steps in the process. After a person does a search and gets back a list of results, what do they want to do? First, they will want to peruse the items in the list. After identifying items of interest, they will want to acquire them. Once the selected items are in hand users may want to print, but at the very least they will want to read. During the course of this reading the user may be doing any number of things. Ranking. Reviewing. Annotating. Summarizing. Evaluating. Looking for a specific fact. Extracting the essence of the author&#8217;s message. Comparing &amp; contrasting the text to other texts. Looking for sets of themes. Tracing ideas both inside and outside the texts. In other words, find and acquire are just a means to greater ends. Find and acquire are library goals, not the goals of users.
</p>
<p>
People want to perform actions against the content they acquire. They want to use the content. They want to do stuff with it. By expanding our definition of &#8220;information literacy&#8221; to include things beyond metadata and bibliography, and by combining it with the power of computers, librarianship can further &#8220;save the time of the reader&#8221; and thus remain relevant in the current information environment. Focusing on the use and evaluation of information represents a growth opportunity for librarianship.
</p>
<h2>It starts with counting</h2>
<p>
The availability of full text content in the form of plain text files combined with the power of computing empowers one to do statistical analysis against corpora. Put another way, computers are great at counting words, and once sets of words are counted there are many things one can do with the results, such as but not limited to:
</p>
<ul>
<li>measuring length</li>
<li>measuring readability, &#8220;greatness&#8221;, or any other index</li>
<li>measuring frequency of unigrams, n-grams, parts-of-speech, etc.</li>
<li>charting &amp; graphing analysis (word clouds, scatter plots, histograms, etc.)</li>
<li>analyzing measurements and looking for patterns</li>
<li>drawing conclusions and making hypotheses</li>
</ul>
<p>
For example, suppose you did the perfect search and identified all of the works of Plato, Aristotle, and Shakespeare. Then, if you had the full text, you could compute a simple table such as Table 1.
</p>
<table cellpadding='2'>
<tr>
<td align='right'><strong>Author</strong></td>
<td align='right'><strong>Works</strong></td>
<td align='right'><strong>Words</strong></td>
<td align='right'><strong>Average</strong></td>
<td align='right'><strong>Grade</strong></td>
<td align='right'><strong>Flesch</strong></td>
</tr>
<tr>
<td align='right'>Plato</td>
<td align='right'>25</td>
<td align='right'>1,162,46</td>
<td align='right'>46,499</td>
<td align='right'>12-15</td>
<td align='right'>54</td>
</tr>
<tr>
<td align='right'>Aristotle</td>
<td align='right'>19</td>
<td align='right'>950,078</td>
<td align='right'>50,004</td>
<td align='right'>13-17</td>
<td align='right'>50</td>
</tr>
<tr>
<td align='right'>Shakespeare</td>
<td align='right'>36</td>
<td align='right'>856,594</td>
<td align='right'>23,794</td>
<td align='right'>7-10</td>
<td align='right'>72</td>
</tr>
</table>
<p>
The table lists who wrote how many works. It lists the number of words in each set of works and the average number of words per work. Finally, based on things like sentence length, it estimates grade and reading levels for the works. Given such information, a library &#8220;catalog&#8221; could help the patron could answer questions such as:
</p>
<ul>
<li>Which author has the most works?</li>
<li>Which author has the shortest works?</li>
<li>Which author is the most verbose?</li>
<li>Is the author of most works also the author who is the most verbose?</li>
<li>In general, which set of works requires the higher grade level?</li>
<li>Does the estimated grade/reading level of each authors&#8217; work coincide with one&#8217;s expectations?</li>
<li>Are there any authors whose works are more or less similar in reading level?</li>
</ul>
<p>
Given the full text, a trivial program can then be written to count the number of words existing in a corpus as well as the number of times each word occurs, as shown in Table 2.
</p>
<table cellpadding='2'>
<tr>
<td><strong>Plato</strong></td>
<td><strong>Aristotle</strong></td>
<td><strong>Shakespeare</strong></td>
</tr>
<tr>
<td>will</td>
<td>one</td>
<td>thou</td>
</tr>
<tr>
<td>one</td>
<td>will</td>
<td>will</td>
</tr>
<tr>
<td>socrates</td>
<td>must</td>
<td>thy</td>
</tr>
<tr>
<td>may</td>
<td>also</td>
<td>shall</td>
</tr>
<tr>
<td>good</td>
<td>things</td>
<td>lord</td>
</tr>
<tr>
<td>said</td>
<td>man</td>
<td>thee</td>
</tr>
<tr>
<td>man</td>
<td>may</td>
<td>sir</td>
</tr>
<tr>
<td>say</td>
<td>animals</td>
<td>king</td>
</tr>
<tr>
<td>true</td>
<td>thing</td>
<td>good</td>
</tr>
<tr>
<td>shall</td>
<td>two</td>
<td>now</td>
</tr>
<tr>
<td>like</td>
<td>time</td>
<td>come</td>
</tr>
<tr>
<td>can</td>
<td>can</td>
<td>well</td>
</tr>
<tr>
<td>must</td>
<td>another</td>
<td>enter</td>
</tr>
<tr>
<td>another</td>
<td>part</td>
<td>love</td>
</tr>
<tr>
<td>men</td>
<td>first</td>
<td>let</td>
</tr>
<tr>
<td>now</td>
<td>either</td>
<td>hath</td>
</tr>
<tr>
<td>also</td>
<td>like</td>
<td>man</td>
</tr>
<tr>
<td>things</td>
<td>good</td>
<td>like</td>
</tr>
<tr>
<td>first</td>
<td>case</td>
<td>one</td>
</tr>
<tr>
<td>let</td>
<td>nature</td>
<td>upon</td>
</tr>
<tr>
<td>nature</td>
<td>motion</td>
<td>know</td>
</tr>
<tr>
<td>many</td>
<td>since</td>
<td>say</td>
</tr>
<tr>
<td>state</td>
<td>others</td>
<td>make</td>
</tr>
<tr>
<td>knowledge</td>
<td>now</td>
<td>may</td>
</tr>
<tr>
<td>two</td>
<td>way</td>
<td>yet</td>
</tr>
</table>
<p>
Table 2, sans a set of stop words, lists the most frequently used words in the complete works of Plato, Aristotle, and Shakespeare. The patron can then ask and answer questions like:
</p>
<ul>
<li>Are there words in one column that appear frequently in all columns?</li>
<li>Are there words that appear in only one column?</li>
<li>Are the rankings of the words similar between columns?</li>
<li>To what degree are the words in each column a part of larger groups such as: nouns, verbs, adjectives, etc.?</li>
<li>Are there many synonyms or antonyms shared inside or between the columns?</li>
</ul>
<p>
Notice how the words &#8220;one&#8221;, &#8220;good&#8221; and &#8220;man&#8221; appear in all three columns. Does that represent some sort of shared quality between the works?
</p>
<p>
If one word contains some meaning, then do two words contain twice as much meaning? Here is a list of the most common two-word phrases (bigrams) in each author corpus, Table 3.
</p>
<table cellpadding='2'>
<tr>
<td><strong>Plato</strong></td>
<td><strong>Aristotle</strong></td>
<td><strong>Shakespeare</strong></td>
</tr>
<tr>
<td>let us</td>
<td>one another</td>
<td>king henry</td>
</tr>
<tr>
<td>one another</td>
<td>something else</td>
<td>thou art</td>
</tr>
<tr>
<td>young socrates</td>
<td>let uses</td>
<td>thou hast</td>
</tr>
<tr>
<td>just now</td>
<td>takes place</td>
<td>king richard</td>
</tr>
<tr>
<td>first place</td>
<td>one thing</td>
<td>mark antony</td>
</tr>
<tr>
<td>every one</td>
<td>without qualification</td>
<td>prince henry</td>
</tr>
<tr>
<td>like manner</td>
<td>middle term</td>
<td>let us</td>
</tr>
<tr>
<td>every man</td>
<td>first figure</td>
<td>king lear</td>
</tr>
<tr>
<td>quite true</td>
<td>b belongs</td>
<td>thou shalt</td>
</tr>
<tr>
<td>two kinds</td>
<td>take place</td>
<td>duke vincentio</td>
</tr>
<tr>
<td>human life</td>
<td>essential nature</td>
<td>dost thou</td>
</tr>
<tr>
<td>one thing</td>
<td>every one</td>
<td>sir toby</td>
</tr>
<tr>
<td>will make</td>
<td>practical wisdom</td>
<td>art thou</td>
</tr>
<tr>
<td>human nature</td>
<td>will belong</td>
<td>henry v</td>
</tr>
<tr>
<td>human mind</td>
<td>general rule</td>
<td>richard iii</td>
</tr>
<tr>
<td>quite right</td>
<td>anything else</td>
<td>toby belch</td>
</tr>
<tr>
<td>modern times</td>
<td>one might</td>
<td>scene ii</td>
</tr>
<tr>
<td>young men</td>
<td>first principle</td>
<td>act iv</td>
</tr>
<tr>
<td>can hardly</td>
<td>good man</td>
<td>iv scene</td>
</tr>
<tr>
<td>will never</td>
<td>two things</td>
<td>exeunt king</td>
</tr>
<tr>
<td>will tell</td>
<td>two kinds</td>
<td>don pedro</td>
</tr>
<tr>
<td>dare say</td>
<td>first place</td>
<td>mistress quickly</td>
</tr>
<tr>
<td>will say</td>
<td>like manner</td>
<td>act iii</td>
</tr>
<tr>
<td>false opinion</td>
<td>one kind</td>
<td>thou dost</td>
</tr>
<tr>
<td>one else</td>
<td>scientific knowledge</td>
<td>sir john</td>
</tr>
</table>
<p>
Notice how the names of people appear frequently in Shakespeare&#8217;s works, but very few names appear in the lists of Plato and Aristotle. Notice how the word &#8220;thou&#8221; appears a lot in Shakespeare&#8217;s works. Ask yourself the meaning of the word &#8220;thou&#8221;, and decide whether or not to update the stop word list. Notice how the common phrases of Plato and Aristotle are akin to ideas, not tangible things. Examples include: human nature, practical wisdom, first principle, false opinion, etc. Is there a pattern here?
</p>
<p>
If &#8220;a picture is worth a thousand words&#8221;, then there are about six thousand words represented by Figures 1 through 6.
</p>
<table>
<tr align='center' valign='top'>
<td><strong>Words used by Plato</strong><br /><a href="./../wp-content/uploads/2010/06/services/plato-words.png"><img width='320' src='./../wp-content/uploads/2010/06/services/plato-words.png' alt='words used by Plato' /></a></td>
<td><strong>Phrases used by Plato</strong><br /><a href="./../wp-content/uploads/2010/06/services/plato-bigrams.png"><img width='320' src='./../wp-content/uploads/2010/06/services/plato-bigrams.png' alt='phrases used by Plato' /></a></td>
</tr>
<tr align='center' valign='top'>
<td><strong>Words used by Aristotle</strong><br /><a href="./../wp-content/uploads/2010/06/services/aristotle-words.png"><img width='320' src='./../wp-content/uploads/2010/06/services/aristotle-words.png' alt='words used by Aristotle' /></a></td>
<td><strong>Phrases used by Aristotle</strong><br /><a href="./../wp-content/uploads/2010/06/services/aristotle-bigrams.png"><img width='320' src='./../wp-content/uploads/2010/06/services/aristotle-bigrams.png' alt='phrases used by Aristotle' /></a></td>
</tr>
<tr align='center' valign='top'>
<td><strong>Words used by Shakespeare</strong><br /><a href="./../wp-content/uploads/2010/06/services/shakespeare-words.png"><img width='320' src='./../wp-content/uploads/2010/06/services/shakespeare-words.png' alt='words used by Shakespeare' /></a></td>
<td><strong>Phrases used by Shakespeare</strong><br /><a href="./../wp-content/uploads/2010/06/services/shakespeare-bigrams.png"><img width='320' src='./../wp-content/uploads/2010/06/services/shakespeare-bigrams.png' alt='phrases used by Shakespeare' /></a></td>
</tr>
</table>
<p>
Word clouds &#8212; &#8220;tag clouds&#8221; &#8212; are an increasingly popular way to illustrate the frequency of words or phrases in a corpus. Because a few of the phrases in a couple of the corpuses were considered outliers, phrases such as &#8220;let us&#8221;, &#8220;one another&#8221;, and &#8220;something else&#8221; are not depicted.
</p>
<p>
Even without the use of statistics, it appears the use of the phrase &#8220;good man&#8221; by each author might be interestingly compared &amp; contrasted. A concordance is an excellent tool for such a purpose, and below are a few of the more meaty uses of &#8220;good man&#8221; by each author.
</p>
<table>
<tr>
<td>List 1 &#8211; &#8220;good man&#8221; as used by Plato</td>
</tr>
<tr>
<td>
<pre>
  ngth or mere cleverness. To the <span style='color: blue; font-weight: bold'>good man</span>, education is of all things the most pr
   Nothing evil can happen to the <span style='color: blue; font-weight: bold'>good man</span> either in life or death, and his own de
  but one reply: 'The rule of one <span style='color: blue; font-weight: bold'>good man</span> is better than the rule of all the rest
   SOCRATES: A just and pious and <span style='color: blue; font-weight: bold'>good man</span> is the friend of the gods; is he not? P
  ry wise man who happens to be a <span style='color: blue; font-weight: bold'>good man</span> is more than human (daimonion) both in 
</pre>
</td>
</tr>
</table>
<table>
<tr>
<td>List 2 &#8211; &#8220;good man&#8221; as used by Aristotle</td>
</tr>
<tr>
<td>
<pre>
  ons that shame is felt, and the <span style='color: green; font-weight: bold'>good man</span> will never voluntarily do bad actions. 
  reatest of goods. Therefore the <span style='color: green; font-weight: bold'>good man</span> should be a lover of self (for he will 
  hat is best for itself, and the <span style='color: green; font-weight: bold'>good man</span> obeys his reason. It is true of the goo
  theme If, as I said before, the <span style='color: green; font-weight: bold'>good man</span> has a right to rule because he is bette
  d prove that in some states the <span style='color: green; font-weight: bold'>good man</span> and the good citizen are the same, and 
</pre>
</td>
</tr>
</table>
<table>
<tr>
<td>List 3 &#8211; &#8220;good man&#8221; as used by Shakespeare</td>
</tr>
<tr>
<td>
<pre>
  r to that. SHYLOCK Antonio is a <span style='color: orange; font-weight: bold'>good man</span>. BASSANIO Have you heard any imputation
  p out, the rest I'll whistle. A <span style='color: orange; font-weight: bold'>good man</span>'s fortune may grow out at heels: Give y
  t it, Thou canst not hit it, my <span style='color: orange; font-weight: bold'>good man</span>. BOYET An I cannot, cannot, cannot, An 
  hy, look where he comes; and my <span style='color: orange; font-weight: bold'>good man</span> too: he's as far from jealousy as I am 
   mean, that married her, alack, <span style='color: orange; font-weight: bold'>good man</span>! And therefore banish'd -- is a creatur
</pre>
</td>
</tr>
</table>
<p>
What sorts of judgements might the patron be able to make based on the snippets listed above? Are Plato, Aristotle, and Shakespeare all defining the meaning of a &#8220;good man&#8221;? If so, then what are some of the definitions? Are there qualitative similarities and/or differences between the definitions?
</p>
<p>
Sometimes being as blunt as asking a direct question, like &#8220;What is a man?&#8221;, can be useful. Lists 4 through 6 try to answer it.
</p>
<table>
<tr>
<td>List 4 &#8211; &#8220;man is&#8221; as used by Plato</td>
</tr>
<tr>
<td>
<pre>
  stice, he is met by the fact that <span style='color: brown; font-weight: bold'>man is</span> a social being, and he tries to harmoni
  ption of Not-being to difference. <span style='color: brown; font-weight: bold'>Man is</span> a rational animal, and is not -- as man
  ss them. Or, as others have said: <span style='color: brown; font-weight: bold'>Man is</span> man because he has the gift of speech; 
  wise man who happens to be a good <span style='color: brown; font-weight: bold'>man is</span> more than human (daimonion) both in lif
  ied with the Protagorean saying, '<span style='color: brown; font-weight: bold'>Man is</span> the measure of all things;' and of this
</pre>
</td>
</tr>
</table>
<table>
<tr>
<td>List 5 &#8211; &#8220;man is&#8221; as used by Aristotle</td>
</tr>
<tr>
<td>
<pre>
  ronounced by the judgement 'every <span style='color: yellow; font-weight: bold'>man is</span> unjust', the same must needs hold good 
  ts are formed from a residue that <span style='color: yellow; font-weight: bold'>man is</span> the most naked in body of all animals a
  ated piece at draughts. Now, that <span style='color: yellow; font-weight: bold'>man is</span> more of a political animal than bees or
  hese vices later. The magnificent <span style='color: yellow; font-weight: bold'>man is</span> like an artist; for he can see what is 
  lement in the essential nature of <span style='color: yellow; font-weight: bold'>man is</span> knowledge; the apprehension of animal a
</pre>
</td>
</tr>
</table>
<table>
<tr>
<td>List 6 &#8211; &#8220;man is&#8221; as used by Shakespeare</td>
</tr>
<tr>
<td>
<pre>
   what I have said against it; for <span style='color: purple; font-weight: bold'>man is</span> a giddy thing, and this is my conclusio
   of man to say what dream it was: <span style='color: purple; font-weight: bold'>man is</span> but an ass, if he go about to expound t
  e a raven for a dove? The will of <span style='color: purple; font-weight: bold'>man is</span> by his reason sway'd; And reason says y
  n you: let me ask you a question. <span style='color: purple; font-weight: bold'>Man is</span> enemy to virginity; how may we barricad
  er, let us dine and never fret: A <span style='color: purple; font-weight: bold'>man is</span> master of his liberty: Time is their ma
</pre>
</td>
</tr>
</table>
<p>
In the 1950s Mortimer Adler and a set of colleagues created a set of works they called The <cite>Great Books of the Western World</cite>. This 80-volume set included all the works of Plato, Aristotle, and Shakespeare as well as some of the works of Augustine, Aquinas, Milton, Kepler, Galileo, Newton, Melville, Kant, James, and Frued. Prior to the set&#8217;s creation, Adler and colleagues enumerated 102 &#8220;greatest ideas&#8221; including concepts such as: angel, art, beauty, honor, justice, science, truth, wisdom, war, etc. Each book in the series was selected for inclusion by the committee because of the way the books elaborated on the meaning of the &#8220;great ideas&#8221;.
</p>
<p>
Given the full text of each of the <cite>Great Books</cite> as well as a set of keywords (the &#8220;great ideas&#8221;), it is relatively simple to calculate a relevancy ranking score for each item in a corpus. Love is one of the &#8220;great ideas&#8221;, and it just so happens it is used most significantly by Shakespeare compared to the use of the other authors in the set. If Shakespeare has the highest &#8220;love quotient&#8221;, then what does Shakespeare have to say about love? List 7 is a brute force answer to such a question.
</p>
<table>
<tr>
<td>List 7 &#8211; &#8220;love is&#8221; as used by Shakespeare</td>
</tr>
<tr>
<td>
<pre>
  y attempted? Love is a familiar; <span style='color: red; font-weight: bold'>Love is</span> a devil: there is no evil angel but Lov
  er. VALENTINE Why? SPEED Because <span style='color: red; font-weight: bold'>Love is</span> blind. O, that you had mine eyes; or yo
   that. DUKE This very night; for <span style='color: red; font-weight: bold'>Love is</span> like a child, That longs for every thin
  n can express how much. ROSALIND <span style='color: red; font-weight: bold'>Love is</span> merely a madness, and, I tell you, dese
  of true minds Admit impediments. <span style='color: red; font-weight: bold'>Love is</span> not love Which alters when it alteratio
</pre>
</td>
</tr>
</table>
<p>
Do these definitions coincide with expectations? Maybe further reading is necessary.
</p>
<h2>Digital humanities, library science, and &#8220;catalogs&#8221;</h2>
<p>
The previous section is just about the most gentle introduction to digital humanities computing possible, but can also be an introduction to a new breed of library science and library catalogs.
</p>
<p>
It began by assuming the existence of full text content in plain text form &#8212; an increasingly reasonable assumption. After denoting a subset of content, it compared &amp; contrasted the sizes and reading levels of the content. By counting individual words and phrases, patterns were discovered in the texts and a particular idea was loosely followed &#8212; specifically, the definition of a good man. Finally, the works of a particular author were compared to the works of a larger whole to learn how the author defined a particular &#8220;great idea&#8221;.
</p>
<p>
The fundamental tools used in this analysis were a set of rudimentary Perl modules: <a href="http://search.cpan.org/dist/Lingua-EN-Fathom/">Lingua::EN::Fathom</a> for calculating the total number of words in a document as well as a document&#8217;s reading level, <a href="http://search.cpan.org/~emorgan/Lingua-EN-Bigram-0.01/">Lingua::EN::Bigram</a> for listing the most frequently occurring words and phrases, and <a href="http://search.cpan.org/dist/Lingua-Concordance/">Lingua::Concordance</a> for listing sentence snippets. The Perl programs built on top of these modules are relatively short and include: <a href="./../wp-content/uploads/2010/06/services/fathom.pl">fathom.pl</a>, <a href="./../wp-content/uploads/2010/06/services/words.pl">words.pl</a>, <a href="./../wp-content/uploads/2010/06/services/bigram.pl">bigrams.pl</a> and <a href="./../wp-content/uploads/2010/06/services/concordance.pl">concordance.pl</a>. (If you really wanted to download the full text versions of <a href="./../wp-content/uploads/2010/06/services/plato.txt">Plato</a>, <a href="./../wp-content/uploads/2010/06/services/aristotle.txt">Aristotle</a>, and <a href="./../wp-content/uploads/2010/06/services/shakespeare.txt">Shakespeare</a>&#8216;s works used in this analysis.) While the programs themselves are really toys, the potential they represent are not. It would not be too difficult to integrate their functionality into a library &#8220;catalog&#8221;. Assume the existence of significant amount of full text content in a library collection. Do a search against the collection. Create a subset of content. Click a few buttons to implement statistical analysis against the result. Enable the user to &#8220;browse&#8221; the content and follow a line of thought.
</p>
<p>
The process outlined in the previous section is not intended to replace rigorous reading, but rather to supplement it. It enables a person to identify trends quickly and easily. It enables a person to read at &#8220;Web scale&#8221;. Again, find is not the problem to be solved. People can find more information than they require. Instead, people need to use and analyze the content they find. This content can be anything from novels to textbooks, scholarly journal articles to blog postings, data sets to collections of images, etc. The process outlined above is an example of services against texts, a way to &#8220;Save the time of the reader&#8221; and empower them to make better and more informed decisions. The fundamental processes of librarianship (collection, preservation, organization, and dissemination) need to be expanded to fit the current digital environment. The services described above are examples of how processes can be expanded.
</p>
<p>
The next &#8220;next generation library catalog&#8221; is not about find, instead it is about use. Integrating digital humanities computing techniques into library collections and services is just one example of how this can be done.
</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2010/06/the-next-next-generation-library-catalog/feed/index.html</wfw:commentRss>
		<slash:comments>5</slash:comments>
							</item>
		<item>
		<title>Measuring the Great Books</title>
		<link>./../2010/06/measuring-the-great-books/index.html</link>
				<comments>./../2010/06/measuring-the-great-books/index.html#comments</comments>
				<pubDate>Tue, 15 Jun 2010 16:48:56 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[great books]]></category>

		<guid isPermaLink="false">./../index.html?p=544</guid>
				<description><![CDATA[This posting describes how I am assigning quantitative characteristics to texts in an effort to answer the question, &#8220;How &#8216;great&#8217; are the Great Books?&#8221; In the end I make a plea for library science. Background With the advent of copious amounts of freely available plain text on the &#8216;Net comes the ability of &#8220;read&#8221; entire [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting describes how I am assigning quantitative characteristics to texts in an effort to answer the question, &#8220;How &#8216;great&#8217; are the Great Books?&#8221; In the end I make a plea for library science.
</p>
<h2>Background</h2>
<p>
With the advent of copious amounts of freely available plain text on the &#8216;Net comes the ability of &#8220;read&#8221; entire corpora with a computer and apply statistical processes against the result. In an effort to explore the feasibility of this idea, I am spending time answering the question, &#8220;<a href="./../2010/06/how-great-are-the-great-books/index.html">How &#8216;great&#8217; are the Great Books?</a>&#8221;
</p>
<p>
More specifically, want to assign quantitative characteristics to each of the &#8220;books&#8221; in the Great Books set, look for patterns in the result, and see whether or not I can draw any conclusions about the corpus. If such processes are proven effective, then the same processes may be applicable to other corpora such as collections of scholarly journal articles, blog postings, mailing list archives, etc. If I get this far, then I hope to integrate these processes into traditional library collections and services in an effort to support their continued relevancy.
</p>
<p>
On my mark. Get set. Go.
</p>
<h2>Assigning quantitative characteristics to texts</h2>
<p>
The Great Books set posits 102 &#8220;great ideas&#8221; &#8212; basic, foundational themes running through the heart of Western civilization. Each of the books in the set were selected for inclusion by the way they expressed the essence of these great ideas. The ideas are grand and ambiguous. They include words such as angel, art, beauty, courage, desire, eternity, god, government, honor, idea, physics, religion, science, space, time, wisdom, etc. (See <a href="./../2010/06/how-great-are-the-great-books/index.html#B">Appendix B</a> of &#8220;How &#8216;great&#8217; are the Great Books?&#8221; for the complete list.)
</p>
<p>
In a previous posting, &#8220;<a href="./../2010/03/great-ideas-coefficient/index.html">Great Ideas Coefficient</a>&#8220;, I outlined the measure I propose to use to determine the books&#8217; &#8220;greatness&#8221; &#8212; essentially a sum of all TFIDF (term frequency / inverse document frequency) scores as calculated against the list of great ideas. TFIDF is defined as:
</p>
<blockquote><p>
( c / t ) * log( d / f )
</p></blockquote>
<p>
where:
</p>
<ul>
<li>c = number of times a given word appears in a document</li>
<li>t = total number of words in a document</li>
<li>d = total number of documents in a corpus</li>
<li>f = total number of documents containing a given word</li>
</ul>
<p>
Thus, the problem boils down to determining the values for c, t, d, and f for a given great idea, 2) summing the resulting TFIDF scores, 3) saving the results, and 4) repeating the process for each book in the corpus. Here, more exactly, is how I am initially doing such a thing:
</p>
<ol>
<li><strong>Build corpus</strong> &#8211; In a previous posting, &#8220;<a href="./../2010/06/collecting-the-great-books/index.html">Collecting the Great Books</a>&#8220;, I described how I first collected 223 of the roughly 250 Great Books.</li>
<li><strong>Index corpus</strong> &#8211; The process used to calculate the TFIDF values of c and t are trivial because any number of computer programs do such a thing quickly and readily. In our case, the value of d is a constant &#8212; 223. On the other hand, trivial methods for determining the number of documents containing a given word (f) are not scalable as the size of a corpus increases. Because an index is essentially a list of words combined with the pointers to where the words can be found, an index proves to be a useful tool for determining the value of f. Index a corpus. Search the index for a word. Get back the number of hits and use it as the value for f. Lucene is currently the gold standard when it comes to open source indexers. <a href="http://lucene.apache.org/solr/">Solr</a> &#8212; an enhanced and Web Services-based interface to Lucene &#8212; is the indexer used in this process. The <a href="./../wp-content/uploads/2010/06/schema.xml">structure of the local index</a> is rudimentary: id, author, title, URL, and full text. Each of the metadata values are pulled out of a previously created index file &#8212; great-books.xml &#8212; while the full text is read from the file system. The whole lot is then stuffed into Solr. A program called <a href="./../wp-content/uploads/2010/06/index.pl">index.pl</a> does this work. Another program called <a href="./../wp-content/uploads/2010/06/search.pl">search.pl</a> was created simply for testing the validity of the index.</li>
<li><strong>Count words and determine readability</strong> &#8211; A Perl module called <a href="http://search.cpan.org/dist/Lingua-EN-Fathom/">Lingua::EN::Fathom</a> does a nice job of counting the number of words in a file, thus providing me with a value for t. Along the way it also calculates a number of &#8220;readability&#8221; scores &#8212; values used to determine the necessary education level of a person needed to understand a given text. While I had &#8220;opened the patient&#8221; I figured it would be a good idea to take note of this information. Given the length of a book as well as its readability scores, I enable myself to answer questions such as, &#8220;Are longer books more difficult to read?&#8221; Later on, given my Great Ideas Coefficient, I will be able to answer questions such as &#8220;Is the length of a book a determining factor in &#8216;greatness&#8217;?&#8221; or &#8220;Are &#8216;great&#8217; books more difficult to read?&#8221;</li>
<li><strong>Calculate TFIDF</strong> &#8211; This is the fuzziest and most difficult part of the measurement process. Using Lingua::EN::Fathom again I find all of the unique words in a document, stem them with <a href="http://search.cpan.org/~creamyg/Lingua-Stem-Snowball/">Lingua::Stem::Snowball</a>, and calculate the number of times each stem occurs. This gives me a value for c. I then loop through each great idea, stem them, and search the index for the stem thus returning a value for f. For each idea I now have values for c, t, d, and f enabling me to calculate TFIDF &#8212; ( c / t ) * log( d / f ).</li>
<li><strong>Calculate the Great Ideas Coefficient</strong> &#8211; This is trivial. Keep a running sum of all the great idea TFIDF scores.</li>
<li><strong>Go to Step #4</strong> &#8211; Repeat this process for each of the 102 great ideas.</li>
<li><strong>Save</strong> &#8211; After all the various scores (number of words, readability scores, TFIDF scores, and Great Ideas Coefficient) have been calculated I save each to my pseudo database file called great-ideas.xml. Each is stored as an attribute associated with a book&#8217;s unique identifier. Later I will use the contents of this file as the basis of my statistical analysis.</li>
<li><strong>Go to Step #3</strong> &#8211; Repeat this process for each book in the corpus, and in this case 223 times.</li>
</ol>
<p>
Of course I didn&#8217;t do all of this by hand, and the program I wrote to do the work is called <a href="./../wp-content/uploads/2010/06/measure.pl">measure.pl</a>.
</p>
<p>
The result is my pseudo database file &#8212; <a href="http://infomotions.com/sandbox/great-books/great-books.xml">great-books.xml</a>. This is my data set. It keeps track all of my information in a human-readable, application- and operating system-independent manner. Very nice. If there is only one file you download from this blog posting, then it should be this file. Using it you will be able to create your own corpus and do your own analysis.
</p>
<p>
The process outlined above is far from perfect. First, there are a few false negatives. For example, the great idea &#8220;universe&#8221; returned a TFIDF value of zero (0) for every document. Obviously is is incorrect, and I think the error has something to do with the stemming and/or indexing subprocesses. Second, the word &#8220;being&#8221;, as calculated by TFIDF, is by far and away the &#8220;greatest&#8221; idea. I believe this is true because the word &#8220;being&#8221; is&#8230; being counted as both a noun as well as a verb. This points to a different problem &#8212; the ambiguity of the English language. While all of these issues will knowingly skew the final results, I do not think they negate the possibility of meaningful statistical investigation. At the same time it will be necessary to refine the measurement process to reduce the number of &#8220;errors&#8221;.
</p>
<h2>Measurment, the humanities, and library science</h2>
<p>
Measurement is one of the fundamental qualities of science. The work of Archimedes is the prototypical example. Kepler and Galileo took the process to another level. Newton brought it to full flower. Since Newton the use of measurement &#8212; the assignment of mathematical values &#8212; applied against observations of the natural world and human interactions have given rise to the physical and social sciences. Unlike studies in the humanities, science is repeatable and independently verifiable. It is objective. Such is not a value judgment, merely a statement of fact. While the sciences seem cold, hard, and dry, the humanities are subjective, appeal to our spirit, give us a sense of purpose, and tend to synthesis our experiences into a meaningful whole. Both of the scientific and humanistic thinking processes are necessary for us to make sense of the world around us. I call these combined processes &#8220;<a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscience</a>&#8220;.
</p>
<p>
The library profession could benefit from the greater application of measurement. In my opinion, too much of the profession&#8217;s day-to-day as well as strategic decisions are based on antidotal evidence and gut feelings. Instead of basing our actions on data, actions are based on tradition. &#8220;This is the way we have always done it.&#8221; This is medieval, and consequently, change comes very slowly. I sincerely believe libraries are not going away any time soon, but I do think the profession will remain relevant longer if librarians were to do two things: 1) truly exploit the use of computers, and 2) base a greater number of their decisions on data &#8212; measurment &#8212; as opposed to opinion. Let&#8217;s call this <em>library science</em>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/06/measuring-the-great-books/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Collecting the Great Books</title>
		<link>./../2010/06/collecting-the-great-books/index.html</link>
				<pubDate>Sun, 13 Jun 2010 23:17:11 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[great books]]></category>

		<guid isPermaLink="false">./../index.html?p=538</guid>
				<description><![CDATA[In an effort to answer the question, &#8220;How &#8216;great&#8217; are the Great Books?&#8220;, I need to mirror the full texts of the Great Books. This posting describes the initial process I am using to do such a thing, but the imporant thing to note is that this process is more about librarianship than it is [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
In an effort to answer the question, &#8220;<a href="./../2010/06/how-great-are-the-great-books/index.html">How &#8216;great&#8217; are the Great Books?</a>&#8220;, I need to mirror the full texts of the Great Books. This posting describes the initial process I am using to do such a thing, but the imporant thing to note is that this process is more about librarianship than it is about software.
</p>
<h2>Background</h2>
<p>
The Great Books is/was a 60-volume set of content intended to further a person&#8217;s liberal arts education. About 250 &#8220;books&#8221; in all, it consists of works by Homer, Aristotle, Augustine, Chaucer, Cervantes, Locke, Gibbon, Goethe, Marx, James, Freud, etc. There are a few places on the &#8216;Net where the <a href="./../2010/06/how-great-are-the-great-books/index.html#A">complete list of authors/titles</a> can be read. One such place is a previous blog posting of mine. My goal is to use digital humanities computing techniques to statistically describe the works and use these descriptions to supplement a person&#8217;s understanding of the texts. I then hope to apply these same techniques to other corpora. To accomplish this goal I first need to acquire full text versions of the Great Books. This posting describes how I am initially going about it.
</p>
<h2>Mirroring and caching the Great Books</h2>
<p>
All of the books of the Great Books were written by &#8220;old dead white men&#8221;. It is safe to assume the texts have been translated into a myriad of languages, including English, and it is safe to assume the majority exist in the public domain. Moreover, with the advent of the Web and various digitizing projects, it is safe to assume quality information gets copied forward and will be available for downloading. All of this has proven to be true. Through the use of Google and a relatively small number of repositories (<a href="http://www.gutenberg.org/">Project Gutenberg</a>, <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>, <a href="http://classics.mit.edu/">Internet Classics Archive</a>, <a href="http://www.ccel.org/">Christian Classics Ethereal Library</a>, <a href="http://www.archive.org/">Internet Archive</a>, etc.), I have been able to locate and mirror 223 of the roughly 250 Great Books. Here&#8217;s how:
</p>
<ol>
<li><strong>Bookmark texts</strong> &#8211; Trawl the Web for the Great Books and use Delicious to bookmark links to plain text versions translated into English. Firefox combined with the Delicious extension have proven to be very helpful in this regard. My bookmarks should be located at <a href="http://delicious.com/ericmorgan/gb">http://delicious.com/ericmorgan/gb</a>.</li>
<li><strong>Save and edit bookmarks file</strong> &#8211; Delicious gives you the option to save your bookmarks file locally. The result is a bogus HTML file intended to be imported into Web browsers. It contains the metadata used to describe your bookmarks such as title, notes, and URLs. After exporting my bookmarks to the local file system, I contorted the bogus HTML into <a href="http://infomotions.com/sandbox/great-books/etc/bookmarks.xml">rudimentary XML</a> so I could systematically read it for subsequent processing.</li>
<li><strong>Extract URLs</strong> &#8211; Using a 7-line program called <a href="./../wp-content/uploads/2010/06/bookmarks2urls.pl">bookmarks2urls.pl</a>, I loop through the edited bookmarks file and output all the URLs.</li>
<li><strong>Mirror content</strong> &#8211; Because I want/need to retain a pristine version of the original texts, I feed the URLs to <a href="http://www.gnu.org/software/wget/">wget</a> and copy the texts to a local directory. This use of wget is combined with the output of Step #3 through a brain-dead shell script called <a href="./../wp-content/uploads/2010/06/mirror.sh">mirror.sh</a>.</li>
<li><strong>Create corpus</strong> &#8211; The mirrored files are poorly named; using just the mirror it is difficult to know what &#8220;great book&#8221; hides inside files named annals.mb.txt, pg2600.txt, or whatever. Moreover, no metadata is associated with the collection. Consequently I wrote a program &#8212; <a href="./../wp-content/uploads/2010/06/build-corpus.pl">build-corpus.pl</a> &#8212; that loops through my edited bookmarks file, extracts the necessary metadata (author, title, and URL), downloads the remote texts, saves them locally with a human-readable filename, creates a rudimentary XHTML page listing each title, and creates an XML file containing all of the metadata generated to date.</li>
</ol>
<p>
The results of this 5-step process include:
</p>
<ul>
<li><a href="http://infomotions.com/sandbox/great-books/mirror/">a local mirror for backup</a></li>
<li><a href="http://infomotions.com/sandbox/great-books/corpus/">a corpus for analysis</a></li>
<li><a href="http://infomotions.com/sandbox/great-books/great-books.html">a simple XHTML (index) file</a></li>
<li><a href="http://infomotions.com/sandbox/great-books/great-books.xml">a simple XML (metadata) file</a></li>
</ul>
<p>
The most important file, by far, is the metadata file. It is intended to be a sort of application- and operating system-independent database. Given this file, anybody ought to be able to duplicate the analysis I propose to do later. If there is only one file you download from this blog posting, it should be the metadata file &#8212; <a href="http://infomotions.com/sandbox/great-books/great-books.xml">great-books.xml</a>.
</p>
<p>
The collection process is not perfect. I was unable to find many of the works of Archimedes, Copernicus, Kepler, Newton, Galileo, or Freud. For all but Freud, I attribute this to the lack of translations, but I suppose I could stoop to the use of poorly OCR&#8217;ed texts from Google Books. I attribute the unavailability of Freud to copyright issues. There&#8217;s no getting around that one. A few times I located HTML versions of desired texts, but HTML will ultimately skew my analysis. Consequently I used a terminal-based program called <a href="http://lynx.browser.org/">lynx</a> to convert and locally save the remote HTML to a plain text file. I then included that file into my corpus. Alas, there are always ways to refine collections. Like software, they are are never done.
</p>
<h2>Summary &#8212; Collection development, acquisitions, and cataloging</h2>
<p>
The process outlined above is really about librarianship and not software. Specifically, it is about collection development, acquisitions, and cataloging. I first needed to articulate a development policy. While it did not explicitly describe the policy it did outline why I wanted to create the collection as well as a few of each item&#8217;s necessary qualities. The process above implemented a way to actually get the content &#8212; acquisitions. Finally, I described &#8212; &#8220;cataloged&#8221; &#8212; my content, albiet in a very rudimentary form.
</p>
<p>
It is an understatement to say the Internet has changed the way data, information, and knowledge are collected, preserved, organized, and disseminated. By extension, librarianship needs to change in order to remain relevant with the times. Our profession spends much of its time trying to refine old processes. It is like trying to figure out how to improve the workings of a radio when people have moved on to the use of televisions instead. While traditional library processes are still important, they are not as important as the used to be.
</p>
<p>
The processes outline above illustrate one possible way librarianship can change the how&#8217;s of its work while retaining it&#8217;s what&#8217;s.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Inaugural Code4Lib &#8220;Midwest&#8221; Regional Meeting</title>
		<link>./../2010/06/inaugural-code4lib-midwest-regional-meeting/index.html</link>
				<comments>./../2010/06/inaugural-code4lib-midwest-regional-meeting/index.html#comments</comments>
				<pubDate>Sat, 12 Jun 2010 20:17:46 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=532</guid>
				<description><![CDATA[I believe the Inaugural Code4Lib &#8220;Midwest&#8221; Regional Meeting (June 11 &#038; 12, 2010 at the University of Notre Dame) was a qualified success. About twenty-six people attended. (At least that was the number of people who went to lunch.) They came from Michigan, Ohio, Iowa, Indiana, and Illinois. Julia Bauder won the prize for coming [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I believe the Inaugural Code4Lib &#8220;Midwest&#8221; Regional Meeting (June 11 &#038; 12, 2010 at the University of Notre Dame) was a qualified success.
</p>
<p>
About twenty-six people attended. (At least that was the number of people who went to lunch.) They came from Michigan, Ohio, Iowa, Indiana, and Illinois. <strong>Julia Bauder</strong> won the prize for coming the furthest distance away &#8212; Grinnell, Iowa.
</p>
<p style='text-align: center; font-size: small'><img src='./../wp-content/uploads/2010/06/day-01.png' /><br />
Day #1</p>
<p>
We began with Lightning Talks:
</p>
<ul>
<li>ePub files by <strong>Michael Kreyche</strong></li>
<li>FRBR and MARC data by <strong> Kelley McGrath</strong></li>
<li>Great Books by myself</li>
<li>jQuery and the OPAC by <strong>Ken Irwin</strong></li>
<li>Notre Dame and the Big Ten by <strong>Michael Witt</strong></li>
<li>Solr &#038; Drupal by <strong>Rob Casson</strong></li>
<li>Subject headings via a Web Service by Michael Kreyche</li>
<li>Taverna by <strong>Rick Johnson</strong> and <strong>Banu Lakshminarayanan</strong></li>
<li>VUFind on a hard disk by Julia Bauder</li>
</ul>
<p>
We dined in the University&#8217;s South Dining Hall, and toured a bit of the campus on the way back taking in the &#8220;giant marble&#8221;, the Architecture Library, and the Dome.
</p>
<p>
In the afternoon we broke up into smaller groups and discussed things including institutional repositories, mobile devices &#038; interfaces, ePub files, and FRBR. In the evening we enjoyed varieties of North Carolina barbecue, and then retreated to the campus bar (Legend&#8217;s) for a few beers.
</p>
<p>
I&#8217;m sorry to say the Code4Lib Challenge was not successful. Us hackers were either to engrossed to notice whether or not anybody came to the event, or nobody showed up to challenge us. Maybe next time.
</p>
<p style='text-align: center; font-size: small'><img src='./../wp-content/uploads/2010/06/day-02.png' /><br />
Day #2</p>
<p>
There were fewer participants on Day #2. We spent the time listening to Ken elaborate on the uses and benefits of jQuery. I hacked at something I&#8217;m calling &#8220;The Great Books Survey&#8221;.
</p>
<p>
The event was successful in that it provided plenty of opportunity to discuss shared problems and solutions. Personally, I learned I need to explore statistical correlations, regressions, multi-varient analysis, and principle component analysis to a greater degree.
</p>
<p>
A good time was had by all, and it is quite possible the next &#8220;Midwest&#8221; Regional Meeting will be hosted by the good folks in Chicago.
</p>
<p>
For more detail about Code4Lib &#8220;Midwest&#8221;, see the wiki: <a href="http://wiki.code4lib.org/index.php/Midwest">http://wiki.code4lib.org/index.php/Midwest</a>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/06/inaugural-code4lib-midwest-regional-meeting/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>How &#8220;great&#8221; are the Great Books?</title>
		<link>./../2010/06/how-great-are-the-great-books/index.html</link>
				<comments>./../2010/06/how-great-are-the-great-books/index.html#comments</comments>
				<pubDate>Fri, 11 Jun 2010 01:08:17 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Great Books of the Western World]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[great books]]></category>

		<guid isPermaLink="false">./../index.html?p=522</guid>
				<description><![CDATA[In the 1952 a set of books called the Great Books of the Western World was published. It was supposed to represent the best of Western literature and enable the reader to further their liberal arts education. Sixty volumes in all, it included works by Plato, Aristotle, Shakespeare, Milton, Galileo, Kepler, Melville, Darwin, etc. (See [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>In the 1952 a set of books called the Great Books of the Western World was published. It was supposed to represent the best of Western literature and enable the reader to further their liberal arts education. Sixty volumes in all, it included works by Plato, Aristotle, Shakespeare, Milton, Galileo, Kepler, Melville, Darwin, etc. (See <a href="#A">Appendix A</a>.) These great books were selected based on the way they discussed a set of 102 &#8220;great ideas&#8221; such as art, astronomy, beauty, evil, evolution, mind, nature, poetry, revolution, science, will, wisdom, etc. (See Appendix B.) How &#8220;great&#8221; are these books, and how &#8220;great&#8221; are the ideas expressed in them?</p>
<p>Given full text versions of these books it would be almost trivial to use the &#8220;great ideas&#8221; as input and apply relevancy ranking algorithms against the texts thus creating a sort of score &#8212; a &#8220;Great Ideas Coefficient&#8221;. Term Frequency/Inverse Document Frequency is a well-established algorithm for computing just this sort of thing:</p>
<blockquote><p>
relevancy = ( c / t ) * log( d / f )</p></blockquote>
<p>where:</p>
<ul>
<li>c = number of times a given word appears in a document</li>
<li>t = total number of words in a document</li>
<li>d = total number of documents in a corpus</li>
<li>f = total number of documents containing a given word</li>
</ul>
<p>Thus, to calculate our Great Ideas Coefficient we would sum the relevancy score for each &#8220;great idea&#8221; for each &#8220;great book&#8221;. Plato&#8217;s <i>Republic</i> might have a cumulative score of 525 while Aristotle&#8217;s <i>On The History Of Animals</i> might have a cumulative score of 251. Books with a larger Coefficient could be considered greater. Given such a score a person could measure a book&#8217;s &#8220;greatness&#8221;. We could then compare the score to the scores of other books. Which book is the &#8220;greatest&#8221;? We could compare the score to other measurable things such as book&#8217;s length or date to see if there were correlations. Are &#8220;great books&#8221; longer or shorter than others? Do longer books contain more &#8220;great ideas&#8221;? Are there other books that were not included in the set that maybe should have been included? Instead of summing each relevancy score, maybe the &#8220;great ideas&#8221; can be grouped into gross categories such as humanities or sciences, and we can sum those scores instead. Thus we may be able to say one set of book is &#8220;great&#8221; when it comes the expressing the human condition and these others are better at describing the natural world. We could ask ourselves, which number of books represents the best mixture of art and science because their humanities score is almost equal to its sciences score. Expanding the scope beyond general education we could create an alternative set of &#8220;great ideas&#8221;, say for biology or mathematics or literature, and apply the same techniques to other content such as full text scholarly journal literatures.</p>
<p>The initial goal of this study is to examine the &#8220;greatness&#8221; of the Great Books, but the ultimate goal is to learn whether or not this quantitative process can be applied other bodies of literature and ultimately assist the student/scholar in their studies/research</p>
<p>Wish me luck.</p>
<h2><a name="A">Appendix A &#8211; Authors and titles in the Great Books series</a></h2>
<ul>
<li><strong>Aeschylus</strong> &#8211; <i>Prometheus Bound</i>; <i>Seven Against Thebes</i>; <i>The Oresteia</i>; <i>The Persians</i>; <i>The Suppliant Maidens</i></li>
<li><strong>American State Papers</strong> &#8211; <i>Articles of Confederation</i>; <i>Declaration of Independence</i>; <i>The Constitution of the United States of America</i></li>
<li><strong>Apollonius</strong> &#8211; <i>On Conic Sections</i></li>
<li><strong>Aquinas</strong> &#8211; <i>Summa Theologica</i></li>
<li><strong>Archimedes</strong> &#8211; <i>Book of Lemmas</i>; <i>Measurement of a Circle</i>; <i>On Conoids and Spheroids</i>; <i>On Floating Bodies</i>; <i>On Spirals</i>; <i>On the Equilibrium of Planes</i>; <i>On the Sphere and Cylinder</i>; <i>The Method Treating of Mechanical Problems</i>; <i>The Quadrature of the Parabola</i>; <i>The Sand-Reckoner</i></li>
<li><strong>Aristophanes</strong> &#8211; <i>Ecclesiazousae</i>; <i>Lysistrata</i>; <i>Peace</i>; <i>Plutus</i>; <i>The Acharnians</i>; <i>The Birds</i>; <i>The Clouds</i>; <i>The Frogs</i>; <i>The Knights</i>; <i>The Wasps</i>; <i>Thesmophoriazusae</i></li>
<li><strong>Aristotle</strong> &#8211; <i>Categories</i>; <i>History of Animals</i>; <i>Metaphysics</i>; <i>Meteorology</i>; <i>Minor biological works</i>; <i>Nicomachean Ethics</i>; <i>On Generation and Corruption</i>; <i>On Interpretation</i>; <i>On Sophistical Refutations</i>; <i>On the Gait of Animals</i>; <i>On the Generation of Animals</i>; <i>On the Motion of Animals</i>; <i>On the Parts of Animals</i>; <i>On the Soul</i>; <i>Physics</i>; <i>Poetics</i>; <i>Politics</i>; <i>Posterior Analytics</i>; <i>Prior Analytics</i>; <i>Rhetoric</i>; <i>The Athenian Constitution</i>; <i>Topics</i></li>
<li><strong>Augustine</strong> &#8211; <i>On Christian Doctrine</i>; <i>The City of God</i>; <i>The Confessions</i></li>
<li><strong>Aurelius</strong> &#8211; <i>The Meditations</i></li>
<li><strong>Bacon</strong> &#8211; <i>Advancement of Learning</i>; <i>New Atlantis</i>; <i>Novum Organum</i></li>
<li><strong>Berkeley</strong> &#8211; <i>The Principles of Human Knowledge</i></li>
<li><strong>Boswell</strong> &#8211; <i>The Life of Samuel Johnson, LL.D.</i></li>
<li><strong>Cervantes</strong> &#8211; <i>The History of Don Quixote de la Mancha</i></li>
<li><strong>Chaucer</strong> &#8211; <i>Troilus and Criseyde</i>; <i>The Canterbury Tales</i></li>
<li><strong>Copernicus</strong> &#8211; <i>On the Revolutions of Heavenly Spheres</i></li>
<li><strong>Dante</strong> &#8211; <i>The Divine Comedy</i></li>
<li><strong>Darwin</strong> &#8211; <i>The Descent of Man and Selection in Relation to Sex</i>; <i>The Origin of Species by Means of Natural Selection</i></li>
<li><strong>Descartes</strong> &#8211; <i>Discourse on the Method</i>; <i>Meditations on First Philosophy</i>; <i>Objections Against the Meditations and Replies</i>; <i>Rules for the Direction of the Mind</i>; <i>The Geometry</i></li>
<li><strong>Dostoevsky</strong> &#8211; <i>The Brothers Karamazov</i></li>
<li><strong>Epictetus</strong> &#8211; <i>The Discourses</i></li>
<li><strong>Euclid</strong> &#8211; <i>The Thirteen Books of Euclid&#8217;s Elements</i></li>
<li><strong>Euripides</strong> &#8211; <i>Alcestis</i>; <i>Andromache</i>; <i>Bacchantes</i>; <i>Cyclops</i>; <i>Electra</i>; <i>Hecuba</i>; <i>Helen</i>; <i>Heracleidae</i>; <i>Heracles Mad</i>; <i>Hippolytus</i>; <i>Ion</i>; <i>Iphigeneia at Aulis</i>; <i>Iphigeneia in Tauris</i>; <i>Medea</i>; <i>Orestes</i>; <i>Phoenician Women</i>; <i>Rhesus</i>; <i>The Suppliants</i>; <i>Trojan Women</i></li>
<li><strong>Faraday</strong> &#8211; <i>Experimental Researches in Electricity</i></li>
<li><strong>Fielding</strong> &#8211; <i>The History of Tom Jones, a Foundling</i></li>
<li><strong>Fourier</strong> &#8211; <i>Analytical Theory of Heat</i></li>
<li><strong>Freud</strong> &#8211; <i>A General Introduction to Psycho-Analysis</i>; <i>Beyond the Pleasure Principle</i>; <i>Civilization and Its Discontents</i>; <i>Group Psychology and the Analysis of the Ego</i>; <i>Inhibitions, Symptoms, and Anxiety</i>; <i>Instincts and Their Vicissitudes</i>; <i>New Introductory Lectures on Psycho- Analysis</i>; <i>Observations on &#8220;Wild&#8221; Psycho-Analysis</i>; <i>On Narcissism</i>; <i>Repression</i>; <i>Selected Papers on Hysteria</i>; <i>The Ego and the Id</i>; <i>The Future Prospects of Psycho-Analytic Therapy</i>; <i>The Interpretation of Dreams</i>; <i>The Origin and Development of Psycho- Analysis</i>; <i>The Sexual Enlightenment of Children</i>; <i>The Unconscious</i>; <i>Thoughts for the Times on War and Death</i></li>
<li><strong>Galen</strong> &#8211; <i>On the Natural Faculties</i></li>
<li><strong>Galileo</strong> &#8211; <i>Dialogues Concerning the Two New Sciences</i></li>
<li><strong>Gibbon</strong> &#8211; <i>The Decline and Fall of the Roman Empire</i></li>
<li><strong>Gilbert</strong> &#8211; <i>On the Loadstone and Magnetic Bodies</i></li>
<li><strong>Goethe</strong> &#8211; <i>Faust</i></li>
<li><strong>Hamilton</strong> &#8211; <i>The Federalist</i></li>
<li><strong>Harvey</strong> &#8211; <i>On the Circulation of Blood</i>; <i>On the Generation of Animals</i>; <i>On the Motion of the Heart and Blood in Animals</i></li>
<li><strong>Hegel</strong> &#8211; <i>The Philosophy of History</i>; <i>The Philosophy of Right</i></li>
<li><strong>Herodotus</strong> &#8211; <i>The History</i></li>
<li><strong>Hippocrates</strong> &#8211; <i>Works</i></li>
<li><strong>Hobbes</strong> &#8211; <i>Leviathan</i></li>
<li><strong>Homer</strong> &#8211; <i>The Iliad</i>; <i>The Odyssey</i></li>
<li><strong>Hume</strong> &#8211; <i>An Enquiry Concerning Human Understanding</i></li>
<li><strong>James</strong> &#8211; <i>The Principles of Psychology</i></li>
<li><strong>Kant</strong> &#8211; <i>Excerpts from The Metaphysics of Morals</i>; <i>Fundamental Principles of the Metaphysic of Morals</i>; <i>General Introduction to the Metaphysic of Morals</i>; <i>Preface and Introduction to the Metaphysical Elements of Ethics with a note on Conscience</i>; <i>The Critique of Judgement</i>; <i>The Critique of Practical Reason</i>; <i>The Critique of Pure Reason</i>; <i>The Science of Right</i></li>
<li><strong>Kepler</strong> &#8211; <i>Epitome of Copernican Astronomy</i>; <i>The Harmonies of the World</i></li>
<li><strong>Lavoisier</strong> &#8211; <i>Elements of Chemistry</i></li>
<li><strong>Locke</strong> &#8211; <i>A Letter Concerning Toleration</i>; <i>An Essay Concerning Human Understanding</i>; <i>Concerning Civil Government, Second Essay</i></li>
<li><strong>Lucretius</strong> &#8211; <i>On the Nature of Things</i></li>
<li><strong>Machiavelli</strong> &#8211; <i>The Prince</i></li>
<li><strong>Marx</strong> &#8211; <i>Capital</i></li>
<li><strong>Marx and Engels</strong> &#8211; <i>Manifesto of the Communist Party</i></li>
<li><strong>Melville</strong> &#8211; <i>Moby Dick</i>; <i>or, The Whale</i></li>
<li><strong>Mill</strong> &#8211; <i>Considerations on Representative Government</i>; <i>On Liberty</i>; <i>Utilitarianism</i></li>
<li><strong>Milton</strong> &#8211; <i>Areopagitica</i>; <i>English Minor Poems</i>; <i>Paradise Lost</i>; <i>Samson Agonistes</i></li>
<li><strong>Montaigne</strong> &#8211; <i>Essays</i></li>
<li><strong>Montesquieu</strong> &#8211; <i>The Spirit of the Laws</i></li>
<li><strong>Newton</strong> &#8211; <i>Mathematical Principles of Natural Philosophy</i>; <i>Optics</i>; <i>Twelfth Night</i>; <i>or, What You Will<br />
Christian Huygens</i>; <i>Treatise on Light</i></li>
<li><strong>Nicomachus</strong> &#8211; <i>Introduction to Arithmetic</i></li>
<li><strong>Pascal</strong> &#8211; <i>Pensées</i>; <i>Scientific and mathematical essays</i>; <i>The Provincial Letters</i></li>
<li><strong>Plato</strong> &#8211; <i>Apology</i>; <i>Charmides</i>; <i>Cratylus</i>; <i>Critias</i>; <i>Crito</i>; <i>Euthydemus</i>; <i>Euthyphro</i>; <i>Gorgias</i>; <i>Ion</i>; <i>Laches</i>; <i>Laws</i>; <i>Lysis</i>; <i>Meno</i>; <i>Parmenides</i>; <i>Phaedo</i>; <i>Phaedrus</i>; <i>Philebus</i>; <i>Protagoras</i>; <i>Sophist</i>; <i>Statesman</i>; <i>Symposium</i>; <i>The Republic</i>; <i>The Seventh Letter</i>; <i>Theaetetus</i>; <i>Timaeus</i></li>
<li><strong>Plotinus</strong> &#8211; <i>The Six Enneads</i></li>
<li><strong>Plutarch</strong> &#8211; <i>The Lives of the Noble Grecians and Romans</i></li>
<li><strong>Ptolemy</strong> &#8211; <i>The Almagest</i></li>
<li><strong>Rabelais</strong> &#8211; <i>Gargantua and Pantagruel</i></li>
<li><strong>Rousseau</strong> &#8211; <i>A Discourse on Political Economy</i>; <i>A Discourse on the Origin of Inequality</i>; <i>The Social Contract</i></li>
<li><strong>Shakespeare</strong> &#8211; <i>A Midsummer-Night&#8217;s Dream</i>; <i>All&#8217;s Well That Ends Well</i>; <i>Antony and Cleopatra</i>; <i>As You Like It</i>; <i>Coriolanus</i>; <i>Cymbeline</i>; <i>Julius Caesar</i>; <i>King Lear</i>; <i>Love&#8217;s Labour&#8217;s Lost</i>; <i>Macbeth</i>; <i>Measure For Measure</i>; <i>Much Ado About Nothing</i>; <i>Othello, the Moor of Venice</i>; <i>Pericles, Prince of Tyre</i>; <i>Romeo and Juliet</i>; <i>Sonnets</i>; <i>The Comedy of Errors</i>; <i>The Famous History of the Life of King Henry the Eighth</i>; <i>The First Part of King Henry the Fourth</i>; <i>The First Part of King Henry the Sixth</i>; <i>The Life and Death of King John</i>; <i>The Life of King Henry the Fifth</i>; <i>The Merchant of Venice</i>; <i>The Merry Wives of Windsor</i>; <i>The Second Part of King Henry the Fourth</i>; <i>The Second Part of King Henry the Sixth</i>; <i>The Taming of the Shrew</i>; <i>The Tempest</i>; <i>The Third Part of King Henry the Sixth</i>; <i>The Tragedy of Hamlet, Prince of Denmark</i>; <i>The Tragedy of King Richard the Second</i>; <i>The Tragedy of Richard the Third</i>; <i>The Two Gentlemen of Verona</i>; <i>The Winter&#8217;s Tale</i>; <i>Timon of Athens</i>; <i>Titus Andronicus</i>; <i>Troilus and Cressida</i></li>
<li><strong>Smith</strong> &#8211; <i>An Inquiry into the Nature and Causes of the Wealth of Nations</i></li>
<li><strong>Sophocles</strong> &#8211; <i>Ajax</i>; <i>Electra</i>; <i>Philoctetes</i>; <i>The Oedipus Cycle</i>; <i>The Trachiniae</i></li>
<li><strong>Spinoza</strong> &#8211; <i>Ethics</i></li>
<li><strong>Sterne</strong> &#8211; <i>The Life and Opinions of Tristram Shandy, Gentleman</i></li>
<li><strong>Swift</strong> &#8211; <i>Gulliver&#8217;s Travels</i></li>
<li><strong>Tacitus</strong> &#8211; <i>The Annals</i>; <i>The Histories</i></li>
<li><strong>Thucydides</strong> &#8211; <i>The History of the Peloponnesian War</i></li>
<li><strong>Tolstoy</strong> &#8211; <i>War and Peace</i></li>
<li><strong>Virgil</strong> &#8211; <i>The Aeneid</i>; <i>The Eclogues</i>; <i>The Georgics</i></li>
</ul>
<h2><a name="B">Appendix B &#8211; The &#8220;great&#8221; ideas</a></h2>
<p style="text-align: center">
angel&nbsp;• animal&nbsp;• aristocracy&nbsp;• art&nbsp;• astronomy&nbsp;• beauty&nbsp;• being&nbsp;• cause&nbsp;• chance&nbsp;• change&nbsp;• citizen&nbsp;• constitution&nbsp;• courage&nbsp;• custom &amp; convention&nbsp;• definition&nbsp;• democracy&nbsp;• desire&nbsp;• dialectic&nbsp;• duty&nbsp;• education&nbsp;• element&nbsp;• emotion&nbsp;• eternity&nbsp;• evolution&nbsp;• experience&nbsp;• family&nbsp;• fate&nbsp;• form&nbsp;• god&nbsp;• good &amp; evil&nbsp;• government&nbsp;• habit&nbsp;• happiness&nbsp;• history&nbsp;• honor&nbsp;• hypothesis&nbsp;• idea&nbsp;• immortality&nbsp;• induction&nbsp;• infinity&nbsp;• judgment&nbsp;• justice&nbsp;• knowledge&nbsp;• labor&nbsp;• language&nbsp;• law&nbsp;• liberty&nbsp;• life &amp; death&nbsp;• logic&nbsp;• love&nbsp;• man&nbsp;• mathematics&nbsp;• matter&nbsp;• mechanics&nbsp;• medicine&nbsp;• memory &amp; imagination&nbsp;• metaphysics&nbsp;• mind&nbsp;• monarchy&nbsp;• nature&nbsp;• necessity &amp; contingency&nbsp;• oligarchy&nbsp;• one &amp; many&nbsp;• opinion&nbsp;• opposition&nbsp;• philosophy&nbsp;• physics&nbsp;• pleasure &amp; pain&nbsp;• poetry&nbsp;• principle&nbsp;• progress&nbsp;• prophecy&nbsp;• prudence&nbsp;• punishment&nbsp;• quality&nbsp;• quantity&nbsp;• reasoning&nbsp;• relation&nbsp;• religion&nbsp;• revolution&nbsp;• rhetoric&nbsp;• same &amp; other&nbsp;• science&nbsp;• sense&nbsp;• sign &amp; symbol&nbsp;• sin&nbsp;• slavery&nbsp;• soul&nbsp;• space&nbsp;• state&nbsp;• temperance&nbsp;• theology&nbsp;• time&nbsp;• truth&nbsp;• tyranny&nbsp;• universal &amp; particular&nbsp;• virtue &amp; vice&nbsp;• war &amp; peace&nbsp;• wealth&nbsp;• will&nbsp;• wisdom&nbsp;• world</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/06/how-great-are-the-great-books/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>Not really reading</title>
		<link>./../2010/06/not-really-reading/index.html</link>
				<pubDate>Thu, 10 Jun 2010 03:35:16 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[reading]]></category>

		<guid isPermaLink="false">./../index.html?p=509</guid>
				<description><![CDATA[Using a number of rudimentary digital humanities computing techniques, I tried to practice what I preach and extract the essence from a set of journal articles. I feel like the process met with some success, but I was not really reading. The problem A set of twenty-one (21) essays on the future of academic librarianship [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
Using a number of rudimentary digital humanities computing techniques, I tried to practice what I preach and extract the essence from a set of journal articles. I feel like the process met with some success, but I was not really reading.
</p>
<h2>The problem</h2>
<p>
A set of twenty-one (21) essays on the future of academic librarianship was recently brought to my attention:
</p>
<blockquote>
<p>
<a href="http://www.neal-schuman.com/academic/">Leaders Look Toward the Future</a> &#8211; This site compiled by Camila A. Alire and G. Edward Evans offers 21 essays on the future of academic librarianship written by individuals who represent a cross-section of the field from the largest institutions to specialized libraries.
</p>
</blockquote>
<p>
Since I was too lazy to print and read all of the articles mentioned above, I used this as an opportunity to test out some of my &#8220;services against text&#8221; ideas.
</p>
<h2>The solution</h2>
<p>
Specifically, I used a few rudimentary digital humanities computing techniques to glean highlights from the corpus. Here&#8217;s how:
</p>
<ol>
<li>First I converted all of the PDF files to plain text files using a program called pdftotext &#8212; a part of <a href="http://www.foolabs.com/xpdf/">xpdf</a>. I then concatenated the whole lot together, thus creating my corpus. This process is left up to you &#8212; the reader &#8212; as an exercise because I don&#8217;t have copyright hutzpah. </li>
<li>Next, I used <a href="http://www.wordle.net/">Wordle</a> to create a <a href="./../wp-content/uploads/2010/06/cloud.png">word cloud</a>. Not a whole lot of new news here, but look how big the word &#8220;information&#8221; is compared to the word &#8220;collections&#8221;.
<p>	<img align='center' src='./../wp-content/uploads/2010/06/cloud.png' width="480">
	</li>
<li>Using a <a href="./../wp-content/uploads/2010/06/bigram.pl">program of my own design</a>, I then created a textual version of the word cloud listing the top <a href="./../wp-content/uploads/2010/06/words.txt">fifty most frequently used words</a> and the number of times they appeared in the corpus. Again, not a whole lot of new news. The articles are obviously about academic libraries, but notice how the word &#8220;electronic&#8221; is listed and not the word &#8220;book&#8221;.</li>
<li>Things got interesting when I created a list of the <a href="./../wp-content/uploads/2010/06/phrases.txt">most significant two-word phrases</a> (bi-grams). Most of the things are nouns, but I was struck by &#8220;<a href="./../wp-content/uploads/2010/06/will-continue.txt">will continue</a>&#8221; and &#8220;<a href="./../wp-content/uploads/2010/06/libraries-will.txt">libraries will</a>&#8221; so I applied a <a href="./../wp-content/uploads/2010/06/concordance.pl">concordance application</a> to these phrases and got lists of snippets. Some of the more interesting ones include: libraries will be “under the gun” financially, libraries will be successful only if they adapt, libraries will continue to be strapped for staffing, libraries will continue to have a role to play, will continue their major role in helping, will continue to be important, will continue to shift toward digital information, will continue to seek new opportunities.</li>
</ol>
<p>
Yes, there may very well be some subtle facts I missed by not reading the full texts, but I think I got a sense of what the articles discussed. It would be interesting to sit a number of people down, have them read the articles, and then have them list out a few salient sentences. To what degree would their result be the same or different from mine?</p>
<p>I was able to write the programs from scratch, do the analysis, and write the post in about two hours, total. It would have taken me that long to read the articles. Just think what a number of librarians could do, and how much time could be saved if this system were expanded to support just about any plain text data.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Cyberinfrastructure Days at the University of Notre Dame</title>
		<link>./../2010/05/cyberinfrastructure-days-at-the-university-of-notre-dame/index.html</link>
				<pubDate>Sun, 23 May 2010 14:46:08 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[cyberinfrastructure]]></category>

		<guid isPermaLink="false">./../index.html?p=504</guid>
				<description><![CDATA[On Thursday and Friday, April 29 and 30, 2010 I attended a Cyberinfrastructure Days event at the University of Notre Dame. Through this process my personal definition of &#8220;cyberinfrastructure&#8221; was updated, and my basic understanding of &#8220;digital humanities computing&#8221; was confirmed. This posting documents the experience. Day #1 &#8211; Thursday, April 29 The first day [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
<img src='./../wp-content/uploads/2010/05/ci-days.gif' alt='ci days' hspace="3" vspace="3" align="right" width="200">On Thursday and Friday, April 29 and 30, 2010 I attended a <a href="http://ci.nd.edu/">Cyberinfrastructure Days event at the University of Notre Dame</a>. Through this process my personal definition of &#8220;cyberinfrastructure&#8221; was updated, and my basic understanding of &#8220;digital humanities computing&#8221; was confirmed. This posting documents the experience.
</p>
<h2>Day #1 &#8211; Thursday, April 29</h2>
<p>
The first day was devoted to cyberinfrastructure and the humanities.
</p>
<p>
After all of the necessary introductory remarks, <strong>John Unsworth</strong> (University of Illinois &#8211; Urbana/Champagne) gave the opening keynote presentation entitled &#8220;<em>Reading at library scale: New methods, attention, prosthetics, evidence, and argument</em>&#8220;. In his talk he posited the impossibility of reading everything currently available. There is just too much content. Given some of the computing techniques at our disposal, he advocated additional ways to &#8220;read&#8221; material, but cautioned the audience in three ways: 1) there needs to be an attention to prosthetics, 2) an appreciation for evidence and statistical significance, and 3) a sense of argument so the skeptic may be able to test the method. To me this sounded a whole lot like applying scientific methods to the process of literary criticism. Unsworth briefly described <a href="http://www.monkproject.org/">MONK</a> and elaborated how part of speech tagging had been done against the corpus. He also described how <a href="http://literaryinformatics.northwestern.edu/?q=node/20">Dunning&#8217;s Log-Likelihood</a> statistic can be applied to texts in order to determine what a person does (and doesn&#8217;t) include in their writings.
</p>
<p>
<strong>Stéfan Sinclair</strong> (McMaster University) followed with &#8220;<em>Challenges and opportunities of Web-based analytic tools for the humanities</em>&#8220;. He gave a brief history of the digital humanities in terms of computing. Mainframes and concordances. Personal computers and even more concordances. Webbed interfaces and locally hosted texts. He described digital humanities as something that has evolved in cycles since at least 1967. He advocated the new tools will be Web apps &#8212; things that can be embedded into Web pages and used against just about any text. His <a href="http://voyeur.hermeneuti.ca/">Voyeur Tools</a> were an example. Like Unsworth, he advocated the use of digital humanities computing techniques because they can supplement the analysis of texts. &#8220;These tools allow you to see things that are not evident.&#8221; Sinclair will be presenting a tutorial at the annual digital <a href="http://dh2010.cch.kcl.ac.uk/">humanities conference</a> this July. I hope to attend.
</p>
<p>
In a bit of change of pace, <strong>Russ Hobby</strong> (Internet2) elaborated on the nuts &#038; bolts of cyberinfrastructure in &#8220;<em>Cyberinfrastructure components and use</em>&#8220;. In this presentation I learned that many scientists are interested in the&#8230; science, and they don&#8217;t really care about the technology supporting it. They have an instrument in the field. It is collecting and generating data. They want to analyze that data. They are not so interested in how it gets transported from one place to another, how it is stored, or in what format. As I knew, they are interested in looking for patterns in the data in order to describe and predict events in the natural world. &#8220;Cyberinfrastructure is like a car. &#8216;Car, take me there.'&#8221; Cyberinfrastructure is about controls, security systems, storage sets, computation, visualization, support &#038; training, collaboration tools, publishing, communication, finding, networking, etc. &#8220;We are not there to answer the question, but more to ask them.&#8221;
</p>
<p>
In the afternoon I listened to <strong>Richard Whaling</strong> (University of Chicago) present on &#8220;<em>Humanities computing at scale</em>&#8220;. Given from the point of view of a computer scientist, this presentation was akin to Hobby&#8217;s. On one hand there are people do analysis and there are people who create the analysis tools. Whaley is more like the later. I thought his discussion on the format of texts was most interesting. &#8220;XML is good for various types of rendering, but not necessarily so good for analysis. XML does not necessarily go deep enough with the encoding because the encoding is too expensive; XML is not scalable. Nor is SQL. Indexing is the way to go.&#8221; This perspective jives with my own experience. Encoding texts in XML (TEI) is so very tedious and the tools to do any analysis against the result are few and far between. Creating the perfect relational database (SQL) is like seeking the Holy Grail, and SQL is not designed to do full text searching nor &#8220;relevancy ranking&#8221;. Indexing texts and doing retrieval against the result has proven to be much more fruitful or me, but such an approach is an example of &#8220;Bag of Words&#8221; computing, and thus words (concepts) often get placed out of context. Despite that, I think the indexing approach holds the most promise. Check out <a href="http://perseus.uchicago.edu/">Perseus under Philologic</a> and <a href="http://dsal.uchicago.edu/">Digital South Asia Library</a> to see some of Whaley&#8217;s handiwork.
</p>
<p>
<strong>Chris Clarke</strong> (University of Notre Dame), in &#8220;<em>Technology horizons for teaching and learning</em>&#8220;, enumerated ways the University of Notre Dame is putting into practice many of the things described in the most recent <a href="http://wp.nmc.org/horizon2010/">Horizon Report</a>. Examples included the use of ebooks, augmented reality, gesture-based computing, and visual data analysis. I thought the presentation was a great way to bring the forward-thinking report down to Earth and place it into a local context. Very nice.
</p>
<p>
<strong>William Donaruma</strong> (also from the University of Notre Dame) described the process he was going through to create 3-D movies in a presentation called &#8220;<em>Choreography in a virtual space</em>&#8220;. Multiple &#8212; very expensive &#8212; cameras. Dry ice. Specific positioning of the dancers. Special glasses. All of these things played into the creation of an illusion of three-dimensions on a two-dimensional space. I will not call it three-dimensional until I can walk around the object in question. The definition of three-dimensional needs to be qualified.
</p>
<p>
The final presentation of the day took place after dinner. The talk, &#8220;<em>The Transformation of modern science</em>&#8221; was given virtually by <strong>Edward Seidel</strong> (National Science Foundation). Articulate. Systematic. Thorough. Insightful. These are the sorts of words I use to describe Seidel&#8217;s talk. Presented remotely through a desktop camera and displayed on a screen to the audience, we were given a history of science and a description of how it has changed from single-man operations to large-group collaborations. We were shown the volume of information created previously and compared it to the volume of information generated now. All of this led up to the most salient message &#8212; &#8220;All future National Science Foundation grant proposals must include a data curation plan.&#8221; Seidel mentioned libraries, librarians, and librarianship quite a number of times during the talk. Naturally my ears perked up. My profession is about the collection, preservation, organization, and dissemination of data, information, and knowledge. The type of content to which these processes are applied &#8212; books, journal articles, multi-media recordings, etc &#8212; is irrelevant. Given a collection policy, it can all be important. The data generated by scientists and their machines is no exception. Is our profession up to the challenge, or are we too much wedded to printed, bibliographic materials? It is time for librarians to aggressively step up to the plate, or else. Here is an opportunity being laid at our feet. Let&#8217;s pick it up!
</p>
<h2>Day #2 &#8211; Friday, April 30</h2>
<p>
The second day centered more around the sciences as opposed to the humanities.
</p>
<p>
The day began with a presentation by <strong>Tony Hey</strong> (Microsoft Research) called &#8220;<em>The Fourth Paradigm: Data-intensive scientific discovery</em>&#8220;. Hey described cyberinfrastructure as the new name for e-science. He then echoed much of content of Seidel&#8217;s message from the previous evening and described the evolution of science in a set of paradigms: 1) theoretical, 2) experimental, 3) computational, and 4) data-intensive. He elaborated on the infrastructure components necessary for data-intensive science: 1) acquisition, 2) collaboration &#038; visualization, 3) analysis &#038; mining, 4) dissemination &#038; sharing, 5) archiving &#038; preservation. (Gosh, that sounds a whole lot like my definition of librarianship!) He saw Microsoft&#8217;s role as one of providing the necessary tools to facilitate e-science (or cyberinfrastructure) and thus the Fourth Paradigm. Hey&#8217;s presentation sounded a lot like open access advocacy. More Association of Research Library library directors as well as university administrators need to hear what he has to say.
</p>
<p>
<strong>Boleslaw Syzmanski</strong> (Rensselaer Polytechnic Institute) described how better science could be done in a presentation called &#8220;<em>Robust asynchronous optimization for volunteer computing grids</em>&#8220;. Like Hobby and Whaley mentioned (above), Syzmanski separated the work of the scientist and the work of cyberinfrastructure. &#8220;Scientists do not want to be bothered with the computer science of their work.&#8221; He then went on to describe a distributed computing technique for studying the galaxy &#8212; <a href="http://milkyway.cs.rpi.edu/milkyway/">MilkyWay@home</a>. He advocated cloud computing as a form of asynchronous computing.
</p>
<p>
The third presentation of the day was entitled &#8220;<em>Cyberinfrastructure for small and medium laboratories</em>&#8221; by <strong>Ian Foster</strong> (University of Chicago). The heart of this presentation was advocacy for software as a service (SaaS) computing for scientific laboratories.
</p>
<p>
<strong>Ashok Srivastava</strong> (NASA) was the first up in the second session with &#8220;<em>Using Web 2.0 and collaborative tools at NASA</em>&#8220;. He spoke to one of the basic principles of good science when he said, &#8220;Reproducibility is a key aspect of science, and with access to the data this reproducibility is possible.&#8221; I&#8217;m not quite sure my fellow librarians and humanists understand the importance of such a statement. Unlike work in the humanities &#8212; which is often built on subjective and intuitive interpretation &#8212; good science relies on the ability for many to come to the same conclusion based on the same evidence. Open access data makes such a thing possible. Much more of Srivastava&#8217;s presentation was about <a href="https://c3.ndc.nasa.gov/dl/">DASHlink</a>, &#8220;a virtual laboratory for scientists and engineers to disseminate results and collaborate on research problems in health management technologies for aeronautics systems.&#8221;
</p>
<p>
&#8220;<em>Scientific workflows and bioinformatics applications</em>&#8221; by <strong>Ewa Deelman</strong> (University of Southern California) was up next. She echoed many of the things I heard from library pundits a few years ago when it came to institutional repositories. In short, &#8220;Workflows are what are needed in order for e-science to really work&#8230; Instead of moving the data to the computation, you have to move the computation to the data.&#8221; This is akin to two ideas. First, like Hey&#8217;s idea of providing tools to facilitate cyberinfrastructure, Deelman advocates integrating the cyberinfrastructure tools into the work of scientists. Second, e-science is more than mere infrastructure. It also approaches the &#8220;services against text&#8221; idea which I have been advocating for a few years.
</p>
<p>
<strong>Jeffrey Layton</strong> (Dell, Inc.) rounded out the session with a presentation called &#8220;<em>I/O pattern characterization of HPC applications</em>&#8220;. In it he described how he used the output of <code>strace</code> commands &#8212; which can be quite voluminous &#8212; to evaluate storage input/output patterns. &#8220;Storage is cheap, but it is only one of a bigger set of problems in the system.&#8221;
</p>
<p>
By this time I was full, my iPad had arrived in the mail, and I went home.
</p>
<h2>Observations</h2>
<p>
It just so happens I was given the responsibility of inviting a number of the humanists to the event, specifically: John Unsworth, Stéphan Sinclair, and Richard Whaley. That is was an honor, and I appreciate the opportunity. &#8220;Thank you.&#8221;
</p>
<p>
I learned a number of things, and a few other things were re-enforced. First, the word &#8220;cyberinfrastructure&#8221; is the newly minted term for &#8220;e-science&#8221;. Many of the presenters used these two words interchangeably. Second, while my experience with the digital humanities is still in its infancy, I am definitely on the right track. Concordances certainly don&#8217;t seem to be going out of style any time soon, and my use of indexes is a movement in the right direction. Third, the cyberinfrastructure people see themselves as support to the work of scientists. This is similar to the work of librarians who see themselves supporting their larger communities. Personally, I think this needs to be qualified since I believe it is possible for me to expand the venerable sphere of knowledge too. Providing library (or cyberinfrastructure) services does not preclude me from advancing our understanding of the human condition and/or describing the natural world. Lastly, open source software and open access publishing were common underlying themes but not rarely explicitly stated. I wonder whether or not the the idea of &#8220;open&#8221; is a four letter word.</p>
]]></content:encoded>
										</item>
		<item>
		<title>About Infomotions Image Gallery: Flickr as cloud computing</title>
		<link>./../2010/05/about-infomotions-image-gallery-flickr-as-cloud-computing/index.html</link>
				<pubDate>Sat, 22 May 2010 21:19:34 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[colorbox]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[photography]]></category>

		<guid isPermaLink="false">./../index.html?p=492</guid>
				<description><![CDATA[This posting describes the whys and wherefores behind the Infomotions Image Gallery. Photography I was introduced to photography during library school, specifically, when I took a multi-media class. We were given film and movie cameras, told to use the equipment, and through the process learn about the medium. I took many pictures of very tall [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><img src="./../wp-content/uploads/2010/05/gallery.gif" alt="Infomotions Image Gallery" width="240" hspace="3" vspace="3" align="right">This posting describes the whys and wherefores behind the <a href="http://infomotions.com/images/">Infomotions Image Gallery</a>.</p>
<h2>Photography</h2>
<p>I was introduced to photography during library school, specifically, when I took a multi-media class. We were given film and movie cameras, told to use the equipment, and through the process learn about the medium. I took many pictures of very tall smoke stacks and classical-looking buildings. I also made a stop-action movie where I step-by-step folded an origami octopus and underwater sea diver while a computer played the Beatles&#8217; &#8220;Octopuses Garden&#8221; in the background. I&#8217;d love to resurrect that 16mm film.</p>
<p>I was introduced to digital photography around 1995 when <a href="./../2008/06/steve-cisler/index.html">Steve Cisler</a> (Apple Computer) gave me a QuickTake camera as a part of a payment for writing a book about Macintosh-based HTTP servers. That camera was pretty much fun. If I remember correctly, it took 8-bit images and could store about twenty-four of them at a time. The equipment worked perfectly until my wife accidentally dropped it into a pond. I still have the camera, somewhere, but it only works if it is plugged into an electrical socket. Since then I&#8217;ve owned a few other digital cameras and one or two digital movie cameras. They have all been more than simple point-and-shoot devices, but at the same time, they have always had more features than I&#8217;ve ever really exploited.</p>
<p>Over the years I mostly used the cameras to document the places I&#8217;ve visited. I continue to photograph buildings. I like to take macro shots of <a href="http://infomotions.com/images/flower/">flowers</a>. <a href="http://infomotions.com/images/venus/">Venuses</a> are always appealing. Pictures of <a href="http://infomotions.com/images/food/">food</a> are interesting. In the <a href="http://infomotions.com/images/me/">self-portraits</a> one is expected to notice the background, not necessarily the subject of the image. I believe I&#8217;m pretty good at composition. When it comes to color I&#8217;m only inspired when the sun is shining bright, and that makes some of my shots overexposed. I&#8217;ve never been very good at photographing people. I guess that is why I prefer to take pictures of <a href="http://infomotions.com/images/statue/">statues</a>. All things <a href="http://infomotions.com/images/library/">library</a> and books are a good time. I wish I could take better advantage of focal lengths in order blur the background but maintain a sharp focus in the foreground. The tool requires practice. I don&#8217;t like to doctor the photographs with effects. I don&#8217;t believe the result represents reality. Finally, I often ask myself an aesthetic question, &#8220;If I was looking through the camera to take the picture, then did I really see what was on the other side?&#8221; After all, my perception was filtered through an external piece of equipment. I guess I could ask the same question of all my perceptions since I always wear glasses.</p>
<p>The Infomotions Image Gallery is simply a collection of my photography, sans personal family photos. It is just another example of how I am trying to apply the principles of librarianship to the content I create. Photographs are taken. Individual items are selected, and the collection is curated. Given the available resources, metadata is applied to each item, and the whole is organized into sets. Every year the newly created images are archived to multiple mediums for preservation purposes. (I really ought to make an effort to print more of the images.) Finally, an interface is implemented allowing people to access the collection.</p>
<p>Enjoy.</p>
<p style="text-align: center"><a href="/images/72157623951799151"><img src="http://farm4.static.flickr.com/3398/4613469491_f4a0bcdcef_s.jpg" alt="orange hot stained glass" border="0" vspace="1" hspace="1"></a><a href="/images/72157622055067079"><img src="http://farm4.static.flickr.com/3549/3869162624_03b55ea916_s.jpg" alt="Tilburg University sculpture" border="0" vspace="1" hspace="1"></a><a href="/images/72157624076483504"><img src="http://farm5.static.flickr.com/4053/4614407080_0876614f4b_s.jpg" alt="coastal home" border="0" vspace="1" hspace="1"></a><a href="/images/72157624076483504"><img src="http://farm5.static.flickr.com/4032/4614368878_a43a871466_s.jpg" alt="beach sculpture" border="0" vspace="1" hspace="1"></a><a href="/images/72157624076455582"><img src="http://farm5.static.flickr.com/4034/4614367164_9f7b8bbca3_s.jpg" alt="metal book" border="0" vspace="1" hspace="1"></a><a href="/images/72157623959994857"><img src="http://farm5.static.flickr.com/4061/4617871992_b60d538ae4_s.jpg" alt="thistle" border="0" vspace="1" hspace="1"></a><a href="/images/72157623958012375"><img src="http://farm5.static.flickr.com/4029/4616795184_9da6481fe8_s.jpg" alt="DSCN5242" border="0" vspace="1" hspace="1"></a><a href="/images/72157624076536692"><img src="http://farm5.static.flickr.com/4007/4613822311_99431a0194_s.jpg" alt="Three Sisters" border="0" vspace="1" hspace="1"></a></p>
<h2>Fickr as cloud computing</h2>
<p>This section describes how the Gallery is currently implemented.</p>
<p>About ten years ago I began to truly manage my photo collection using Apple&#8217;s iPhoto. At just about the same time I purchased an iPhoto add-on called <a href="http://www.geeksrus.com/software/betterhtmlexport/">BetterHTMLExport</a>. Using a macro language, this add-on enabled me to export sets of images to index and detail pages complete with titles, dates, and basic numeric metadata such as exposure, f-stop, etc. The process worked but the software grew long in the tooth, was sold to another company, and was always a bit cumbersome. Moreover, maintaining the metadata was tedious inhibiting my desire to keep it up to date. Too much editing here, exporting there, and uploading to the third place. To make matters worse, people expect to comment on the photos, put them into their own sets, and watch some sort of slide show. Enter Flickr and a jQuery plug-in called ColorBox.</p>
<p>After learning how to use iPhoto&#8217;s ability to publish content to Flickr, and after taking a closer look at Flickr&#8217;s application programmer interace (API), I decided to use Flickr to host my images. The idea was to: 1) maintain the content on my local file system, 2) upload the images and metadata to Flickr, and 3) programmatically create in interface to the content on my website. The result was a more streamlined process and a set of Perl scripts implementing a cleaner user interface. I was entering the realm of cloud computing. The workflow is described below:</p>
<ol>
<li><strong>Take photographs</strong> &#8211; This process is outlined in the previous section.</li>
<li><strong>Import photographs</strong> &#8211; Import everything, but weed right away. I&#8217;m pretty brutal in this regard. I don&#8217;t keep duplicate nor very similar shots. No (or very very few) out-of-focus or poorly composed shots are kept either.</li>
<li><strong>Add titles</strong> &#8211; Each photo gets some sort of title. Sometimes they are descriptive. Sometimes they are rather generic. After all, how many titles can different pictures of roses have? If I were really thorough I would give narrative descriptions to each photo.</li>
<li><strong>Make sets</strong> &#8211; Group the imported photos into a set and then give a title to the set. Again, I ought to add narrative descriptions, but I don&#8217;t. Too lazy.</li>
<li><strong>Add tags</strong> &#8211; Using iPhoto&#8217;s keywords functionality, I make an effort to &#8220;tag&#8221; each photograph. Tags are rather generic: flower, venus, church, me, food, etc.</li>
<li><strong>Publish to Flickr</strong> &#8211; I then use iPhoto&#8217;s sharing feature to upload each newly created set to Flickr. This works very well and saves me the time and hassle of converting images. This same functionality works in reverse. If I use Flickr&#8217;s online editing functions, changes are reflected on my local file system after a refresh process is done. Very nice.</li>
<li><strong>Re-publish to Infomotions</strong> &#8211; Using a system of Perl scripts I wrote called flickr2gallery I then create sets of browsable pages from the content saved on Flickr.</li>
</ol>
<p>Using this process I can focus more on my content and less on my presentation. It makes it easier for me to focus on the images and their metadata and less on how the content will be displayed. Graphic design is not necessarily my forte.</p>
<p><a href="./../wp-content/uploads/2010/05/flickr2gallery-2010-05-22.tar.gz">Flickr2gallery</a> is a suite of Perl scripts and plain text files:</p>
<ol>
<li><strong>tags2gallery.pl</strong> &#8211; Used to create pages of images based on photos&#8217; tags.</li>
<li><strong>sets2gallery.pl</strong> &#8211; Used to create pages of image sets as well as the image &#8220;database&#8221;.</li>
<li><strong>make-home.pl</strong> &#8211; Used to create the Image Gallery home page.</li>
<li><strong>flickr2gallery.sh</strong> &#8211; A shell script calling each of the three scripts above and thus (re-)building the entire Image Gallery subsite. Currently, the process takes about sixty seconds.</li>
<li><strong>images.db</strong> &#8211; A tab-delimited list of each photograph&#8217;s local home page, title, and Flickr thumbnail.</li>
<li><strong>Images.pm</strong> &#8211; A really-rudimentary Perl module containing a single subroutine used to return a list of HTML <code>img</code> elements filled with links to random images.</li>
<li><strong>random-images.pl</strong> &#8211; Designed to be used as a server-side include, calls Images.pm to display sets of random images from images.db.</li>
</ol>
<p>I know the <a href="http://www.flickr.com/services/api/">Flickr API</a> has been around for quite a while, and I know I&#8217;m a Johnny Come Lately when it comes to learning how to use it, but that does not mean it can&#8217;t be outlined here. The API provides a whole lot of functionality. Reading and writing of image content and metadata. Reading and writing information about users, groups, and places. Using the REST-like interface the programmer constructs a command in the form of a URL. The URL is sent to Flickr via HTTP. Responses are returned in easy-to-read XML.</p>
<p>A good example is the way I create my pages of images with a given tag. First I denote a constant which is the root of a Flickr tag search. Next, I define the location of the Infomotions pages on Flickr. Then, after getting a list of all of my tags, I search Flickr for images using each tag as a query. These results are then looped through, parsed, and built into a set of image links. Finally, the links are incorporated into a template and saved to a local file. Below lists the heart of the process:</p>
<pre><code>  use constant S =&gt; 'http://api.flickr.com/services/rest/?
                                  method=flickr.photos.search&amp;
                                  api_key=YOURKEY&amp;user_id=YOURID&amp;tags=';
  use constant F =&gt; 'http://www.flickr.com/photos/infomotions/';
  
  # get list of all tags here
  
  # find photos with this tag
  $request  = HTTP::Request-&gt;new( GET =&gt; S . $tag );
  $response = $ua-&gt;request( $request );
  
  # process each photo
  $parser    = XML::XPath-&gt;new( xml =&gt; $response-&gt;content );
  $nodes     = $parser-&gt;find( '//photo' );
  my $cgi    = CGI-&gt;new;
  my $images = '';
  foreach my $node ( $nodes-&gt;get_nodelist ) {
  
  # parse
  my $id     = $node-&gt;getAttribute( 'id' );
  my $title  = $node-&gt;getAttribute( 'title' );
  my $farm   = $node-&gt;getAttribute( 'farm' );
  my $server = $node-&gt;getAttribute( 'server' );
  my $secret = $node-&gt;getAttribute( 'secret' );
  
  # build image links
  my $thumb = "http://farm$farm.static.flickr.com/$server/$id" . 
              '_' . $secret . '_s.jpg';
  my $full  = "http://farm$farm.static.flickr.com/$server/$id" . 
              '_' . $secret . '.jpg';
  my $flickr = F . "$id/";
    
  # build list of images
  $images .= $cgi-&gt;a({ href =&gt; $full, 
                       rel =&gt; 'slideshow',
                       title =&gt; "&lt;a href='$flickr'&gt;Details on Flickr&lt;/a&gt;"
                      },
                      $cgi-&gt;img({ alt =&gt; $title, src =&gt; $thumb, 
                      border =&gt; 0, hspace =&gt; 1, vspace =&gt; 1 }));
    
  }
  
  # save image links to file here</code></pre>
<p>Notice the <code>rel</code> attribute (slideshow) in each of the images&#8217; anchor elements. These attributes are used as selectors in a <a href="http://jquery.com/">jQuery</a> plug-in called <a href="http://colorpowered.com/colorbox/">ColorBox</a>. In the head of each generated HTML file is a call to ColorBox:</p>
<pre><code>  &lt;script type="text/javascript"&gt;
    $(document).ready(function(){
      $("a[rel='slideshow']").colorbox({ slideshowAuto: false, 
                                         current: "{current} of {total}",
                                         slideshowStart: 'Slideshow',
                                         slideshowStop: 'Stop',
                                         slideshow: true,
                                         transition:"elastic" });
      });
  &lt;/script&gt;</code></pre>
<p>Using this plug-in I am able to implement a simple slideshow when the user clicks on any image. Each slideshow display consists of simple navigation and title. In my case the title is really a link back to Flickr where the user will be able to view more detail about the image, comment, etc.</p>
<p style="text-align: center"><a href="/images/72157623959830237"><img src="http://farm5.static.flickr.com/4020/4617766714_9822a2dcb4_s.jpg" alt="barn ceiling" border="0" vspace="1" hspace="1"></a><a href="/images/72157624076034584"><img src="http://farm4.static.flickr.com/3393/4613525013_b027fc10d4_s.jpg" alt="kiln" border="0" vspace="1" hspace="1"></a><a href="/images/72157623951657657"><img src="http://farm5.static.flickr.com/4061/4613515693_45c8e86750_s.jpg" alt="Hesburgh Library" border="0" vspace="1" hspace="1"></a><a href="/images/72157623954015865"><img src="http://farm4.static.flickr.com/3379/4615219488_2f984143e9_s.jpg" alt="self-portrait" border="0" vspace="1" hspace="1"></a><a href="/images/72157622179658558"><img src="http://farm4.static.flickr.com/3504/3868390261_e63868667b_s.jpg" alt="Giant Eraser" border="0" vspace="1" hspace="1"></a><a href="/images/72157623951759785"><img src="http://farm5.static.flickr.com/4032/4614127500_98063d4b60_s.jpg" alt="birds" border="0" vspace="1" hspace="1"></a><a href="/images/72157624078270662"><img src="http://farm5.static.flickr.com/4026/4615211802_b7fe6ecf7c_s.jpg" alt="Christian Scientist Church" border="0" vspace="1" hspace="1"></a><a href="/images/72157624082116038"><img src="http://farm5.static.flickr.com/4034/4616878012_c80b7e1d1a_s.jpg" alt="Redwood Library" border="0" vspace="1" hspace="1"></a></p>
<h2>Summary and conclusion</h2>
<p>I am an amateur photographer, and the fruits of this hobby are online here for sharing. If you use them, then please give credit where credit is due.</p>
<p>The use of Flickr as a &#8220;cloud&#8221; to host my images is very useful. It enables me to mirror my content in more than one location as well as provide access in multiple ways. When the <a href="http://www.flickr.com/photos/library_of_congress/">Library of Congress</a> announced they were going to put some of their image content on Flickr I was a bit taken aback, but after learning how the Flickr API can be exploited I think there are many opportunities for libraries and other organizations to do the same thing. Using the generic Flickr interface is one way to provide access, but enhanced and customized access can be implemented through the API. Lots of food for thought. Now to apply the same process to my movies by exploiting YouTube.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Shiny new website</title>
		<link>./../2010/05/shiny-new-website/index.html</link>
				<pubDate>Fri, 21 May 2010 01:21:04 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">./../index.html?p=489</guid>
				<description><![CDATA[Infomotions has a shiny new website, and the process to create it was not too difficult. The problem A relatively long time ago (in a galaxy far far away), I implemented an Infomotions website look &#38; feel. Tabbed interface across the top. Local navigation down the left-hand side. Content in the middle. Footer along the [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><img src="./../wp-content/uploads/2010/05/screen-shot.gif" width="240" hspace="3" vspace="3" align="right">Infomotions has a shiny new website, and the process to create it was not too difficult.</p>
<h2>The problem</h2>
<p>A relatively long time ago (in a galaxy far far away), I implemented an Infomotions website look &amp; feel. Tabbed interface across the top. Local navigation down the left-hand side. Content in the middle. Footer along the bottom. Typical. Everything was rather square. And even though I used pretty standard HTML and CSS, its implementation was not really conducive to Internet Explorer. My bad.</p>
<p>Moreover, people&#8217;s expectations have increased dramatically since I first implemented my site&#8217;s look &amp; feel. Curved lines. Pop-up windows. Interactive AJAX-like user experiences. My site was definitely not Web 2.0 in nature. Static. Not like a desktop application.</p>
<p>Finally, as time went on my site&#8217;s look &amp; feel was not as consistently applied as I had hoped. Things were askew and the whole thing needed refreshing.</p>
<h2>The solution</h2>
<p><img src="./../wp-content/uploads/2010/05/jquery.gif" hspace="3" vspace="3" align="right">My ultimate solution is rooted in jQuery and its canned themes.</p>
<p>As you may or may not know, <a href="http://jquery.com/">jQuery</a> is a well-supported Javascript library supporting <a href="http://jqueryui.com/demos/">all sorts of cool things</a> like drag &#8216;n drop, sliders, many animations, not to mention a myriad of ways to manipulate the Document Object Model (DOM) of HTML pages. An extensible framework, jQuery is also the foundation for many plug-in modules.</p>
<p>Just as importantly, jQuery supports a host of <a href="http://jqueryui.com/themeroller/">themes</a> &#8212; CSS files implementing various looks &amp; feels. These themes are very standards compliant and work well on all browsers. I was particularly enamored with the tabbed menu with rounded corners. (Under the hood, these rounded corners are implemented by a browser framework called Webkit. Let&#8217;s keep our eye on that one.) After learning how to implement the tabbed interface without the use of Javascript, I was finally on my way. As Dan Brubakerhorst said to me, &#8220;It is nothing but styling.&#8221;</p>
<p>None of Infomotions subsites are driven by hand-coded HTML. Everything comes from some sort of script. The Alex Catalogue is a database-driven website with mod-Perl modules. The water collection is supported by a database plus XSLT transformations of XML on the fly. The blog is WordPress. My &#8220;musings&#8221; are sets of TEI files converted in bulk into HTML. While it took a bit of tweaking in each of these subsites, the process was relatively painless. Insert the necessary divs denoting the menu bar, left-hand navigation, and content into my frameworks. Push the button. Enjoy. If I want to implement a different color scheme or typography, then I simply change a single CSS file for the entire site. In retrospect, the most difficult thing for me to convert was my blog. I had to design my own theme. Not too hard, but definitely a learning curve.</p>
<p>A feature I feel pretty strongly about is printing. The Web is one medium. Content on paper is another medium. They are not the same. In general, websites have more of a landscape orientation. Printed mediums more or less have portrait orientations. In the printed medium there is no need for global navigation, local navigation, nor hyperlinks. Silly. Margins need to be accounted for. Pages need to be signed, dated, and branded. Consequently, I wrote a single print-based CSS file governing the entire site. Pages print quite nicely. So nicely I may very well print every single page from my website and bind the whole thing into a book. Call it preservation.</p>
<p>In many ways I consider myself to be an artist, and the processes of librarianship are my mediums. Graphic design is not my forte, but I feel pretty good about my current implementation. Now I need to get back to the collection, organization, preservation, and dissemination of data, information, and knowledge.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Counting words</title>
		<link>./../2010/04/counting-words/index.html</link>
				<pubDate>Sat, 10 Apr 2010 22:33:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[services against texts]]></category>

		<guid isPermaLink="false">./../index.html?p=476</guid>
				<description><![CDATA[When I talk about &#8220;services against text&#8221; I usually get blank stares from people. When I think about it more, many of the services I enumerate are based on the counting of words. Consequently, I spent some time doing just that &#8212; counting words. I wanted to analyze the content of a couple of the [&#8230;]]]></description>
								<content:encoded><![CDATA[
<div>
<p>When I talk about &#8220;services against text&#8221; I usually get blank stares from people. When I think about it more, many of the services I enumerate are based on the counting of words. Consequently, I spent some time doing just that &#8212; counting words.</p>
<p>I wanted to analyze the content of a couple of the mailing lists I own/moderate, specifically <a href="http://serials.infomotions.com/code4lib/">Code4Lib</a> and <a href="http://serials.infomotions.com/ngc4lib/">NGC4Lib</a>. Who are the most frequent posters? What words are used most often in the subject lines, and what words are used most often in the body of the messages? Using a hack I wrote (<a href="./../wp-content/uploads/2010/04/mine-mail.pl">mine-mail.pl</a>) I was able to generate simple tables of data:</p>
<ul>
<li><a href="./../wp-content/uploads/2010/04/authors.dat">authors</a></li>
<li><a href="./../wp-content/uploads/2010/04/subject-word-count.dat">subjects</a></li>
<li><a href="./../wp-content/uploads/2010/04/body-word-count.dat">words</a></li>
</ul>
<p>I then fed these tables to <a href="http://wordle.net/">Wordle</a> to create cool looking images. I also fed these tables to a second hack (<a href="./../wp-content/uploads/2010/04/dat2cloud.pl">dat2cloud.pl</a>) to create not-even-close-to-valid HTML files in the form of hyperlinked tag clouds. Below is are the fruits of these efforts:</p>
<table align="center">
<tr align="center">
<td><img src='./../wp-content/uploads/2010/04/wordle-names.png' width="200" /><br />
                <small><a href="./../wp-content/uploads/2010/04/wordle-names.png">image of names</a></small></td>
<td><img src='./../wp-content/uploads/2010/04/linked-names.png' width="200" /><br />
                <small><a href="./../wp-content/uploads/2010/04/code4lib-authors.htm">tag cloud of names</a></small></td>
</tr>
<tr align="center">
<td><img src='./../wp-content/uploads/2010/04/wordle-subjects.png' width="200" /><br />
                <small><a href="./../wp-content/uploads/2010/04/wordle-subjects.png">image of subjects</a></small></td>
<td><img src='./../wp-content/uploads/2010/04/linked-subjects.png' width="200" /><br />
                <small><a href="./../wp-content/uploads/2010/04/code4lib-subject.htm">tag cloud of subjects</a></small></td>
</tr>
<tr align="center">
<td><img src='./../wp-content/uploads/2010/04/wordle-words.png' width="200" /><br />
                <small><a href="./../wp-content/uploads/2010/04/wordle-words.png">image of words</a></small></td>
<td><img src='./../wp-content/uploads/2010/04/linked-words.png' width="200" /><br />
                <small><a href="./../wp-content/uploads/2010/04/code4lib-word.htm">tag cloud of words</a></small></td>
</tr>
</table>
<p>The next step is to plot the simple tables on a Cartesian plane. In other words, graph the data. Wish me luck.</p>
</p></div>
]]></content:encoded>
										</item>
		<item>
		<title>Great Ideas Coefficient</title>
		<link>./../2010/03/great-ideas-coefficient/index.html</link>
				<pubDate>Sat, 27 Mar 2010 11:58:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[metadata]]></category>

		<guid isPermaLink="false">./../index.html?p=469</guid>
				<description><![CDATA[This posting outlines a concept I call the Great Ideas Coefficient &#8212; an additional type of metadata used to denote the qualities of a text. Great Ideas Coefficient In the 1950s a man named Mortimer Adler and colleagues brought together what they thought were the most significant written works of Western civilization. They called this [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting outlines a concept I call the Great Ideas Coefficient &#8212; an additional type of metadata used to denote the qualities of a text.</p>
<table align='right'>
<tr>
<td align='center'>
<img src="./../wp-content/uploads/2010/03/great-ideas.gif" alt="great ideas coeficient" border="0" width="190" /><br /><small><a href="./../wp-content/uploads/2010/03/great-ideas.gif">Great Ideas Coefficient</a></small>
</td>
</tr>
</table>
<p>
In the 1950s a man named Mortimer Adler and colleagues brought together what they thought were the most significant written works of Western civilization. They called this collection the <cite>Great Books of the Western World</cite>. Before they created the collection they outlined what they thought were the 100 most significant ideas of Western civilization. These are &#8220;great ideas&#8221; such as but not limited to beauty, courage, education, law, liberty, nature, sin, truth, and wisdom. Interesting.</p>
<p>Suppose you were able to weigh the value of a book based on these &#8220;great ideas&#8221;. Suppose you had a number of texts and you wanted to rank or list them according to the number of times they mentioned the &#8220;great ideas&#8221;. Such a thing can be done through the application of <a href="./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html">TFIDF</a>. Here&#8217;s how:
</p>
<ol>
<li>create a list of the &#8220;great ideas&#8221;</li>
<li>calculate the TFIDF score for each idea in a given book</li>
<li>sum the scores for each idea</li>
<li>assign the score to the book</li>
<li>go to Step #2 for each book in a corpus</li>
<li>sort the corpus based on the total scores</li>
</ol>
<p>
Once the scores are calculated, they can be graphed, and once they are graphed they can be illustrated.
</p>
<p>
An example of this technique is shown above. For each item in a list of works by Aristotle a Great Ideas Coefficient has been calculated and assigned. The list was the ordered by the score. The score was then plotted graphically. Finally, all the graphs were joining together as an animated GIF image to show the range of scores in the list. Luckily the process seems to work because Aristotle&#8217;s <cite>Metaphysics</cite> ranks at the top with the highest Great Ideas Coefficient, and his <cite>History of Animals</cite> ranks the lowest. &#8216;Seems to make sense.
</p>
<p>The concept behing the Great Ideas Coefficient is not limited to &#8220;great ideas&#8221;. Any set of words or phrases could be used. For example, one could create a list of &#8220;big names&#8221; (Plato, Shakespeare, Galileo, etc.) and calculate a Big Names Coefficient. Alternatively, a person could create a list of other words or phrases for any topic or genre to weigh a set of texts against biology, mathematics, literature, etc.</p>
<p>
Find is not the problem that needs to be solved now-a-days. The problem of use and understanding is more pressing. People can find plenty of information. They need (want) assistance in putting the information into context. &#8220;Books are for use.&#8221; The application of something like the Great Ideas Coefficient may be just one example.</p>
]]></content:encoded>
										</item>
		<item>
		<title>My first ePub file</title>
		<link>./../2010/03/my-first-epub-file/index.html</link>
				<comments>./../2010/03/my-first-epub-file/index.html#comments</comments>
				<pubDate>Mon, 22 Mar 2010 01:51:27 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[ePub]]></category>

		<guid isPermaLink="false">./../index.html?p=462</guid>
				<description><![CDATA[I made available my first ePub file today. Screen shot EPub is the current de facto standard file format for ebook readers. After a bit of reading, the format is not too difficult since all the files are plain-text XML files or images. The various metadata files are ePub-specific XML. The content is XHTML. The [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I made available my first ePub file today.
</p>
<table align='right'>
<tr>
<td align='center'>
<img src="./../wp-content/uploads/2010/03/epub-reader.png" alt="screen shot" height="190"><br />
<small><a href="./../wp-content/uploads/2010/03/epub-reader.png">Screen shot</a></small>
</td>
</tr>
<table>
<p>
<a href="http://www.openebook.org/">EPub</a> is the current <i>de facto</i> standard file format for ebook readers. After a bit of reading, the format is not too difficult since all the files are plain-text XML files or images. The various metadata files are ePub-specific XML. The content is XHTML. The graphics can be in any number of formats. The whole lot is compressed into a single file using the zip &#8220;standard&#8221;, and suffixed with a .epub extension.
</p>
<p>
Since much of <a href="http://infomotions.com/musings/publishing-system/">my content has been previously saved as TEI files</a>, the process of converting my content into ePub is straight-forward. Use XPath to extract metadata. Use XSLT to transform the TEI to XHTML. Zip up the whole thing and make it available on the Web. I have found the difficult part to be the images. It is hard to figure out where one&#8217;s images are saved and then incorporate them into the ePub file. I will have to be a bit more standard with my image locations in the future and/or I will need to do a bit of a retrospective conversion process. (I probably will go the second route. Crazy.)
</p>
<p>
Loading my ePub into Firefox&#8217;s <a href="http://www.epubread.com/">EPUBReader</a> worked just fine. The whole thing rendered pretty well in <a href="http://www.lexcycle.com/">Stanza</a> too. More importantly, it validated against a Java-based tool called <a href="http://code.google.com/p/epubcheck/">epubcheck</a>. Whew!
</p>
<p>
While I cogitate how to convert my content, you can download <a href="./../wp-content/uploads/2010/03/ngc4purdue.epub">my first ePub file</a> as well as the beginnings of<a href="./../wp-content/uploads/2010/03/build-epub-2010-02-28.pl"> my ePub creation script</a>.
</p>
<p>
Enjoy?
</p>
<p>
P.S. I think the Apple iPad is going to have a significant impact on digital reading in the very near future. I&#8217;m preparing.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/03/my-first-epub-file/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Alex Catalogue Widget</title>
		<link>./../2010/03/alex-catalogue-widget/index.html</link>
				<pubDate>Tue, 16 Mar 2010 03:43:34 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">./../index.html?p=459</guid>
				<description><![CDATA[I created my first Apple Macintosh Widget today &#8212; Alex Catalogue Widget. The tool is pretty rudimentary. Enter something into the field. Press return or click the Search button. See search results against the Alex Catalogue of Electronic Texts displayed in your browser. The development process reminded me of hacking in HyperCard. Draw things on [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I created my first Apple Macintosh Widget today &#8212; Alex Catalogue Widget.
</p>
<p><img src="./../wp-content/uploads/2010/03/alex.png" alt="Alex Catalogue Widget" width="428" height="142"></p>
<p>
The tool is pretty rudimentary. Enter something into the field. Press return or click the Search button. See search results against the <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> displayed in your browser. The development process reminded me of hacking in HyperCard. Draw things on the screen &#8212; buttons, fields, etc. &#8212; and assocate actions (events) with each of them.
</p>
<p>
<a href="./../wp-content/uploads/2010/03/alex.zip">Download it and try it for yourself.</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>Michael Hart in Roanoke (Indiana)</title>
		<link>./../2010/03/michael-hart-in-roanoke-indiana/index.html</link>
				<comments>./../2010/03/michael-hart-in-roanoke-indiana/index.html#comments</comments>
				<pubDate>Sun, 07 Mar 2010 21:54:18 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[Michael Hart]]></category>
		<category><![CDATA[Project Gutenberg]]></category>
		<category><![CDATA[Roanoke (Indiana)]]></category>

		<guid isPermaLink="false">./../index.html?p=454</guid>
				<description><![CDATA[On Saturday, February 27, Paul Turner and I made our way to Roanoke (Indiana) to listen to Michael Hart tell stories about electronic texts and Project Gutenberg. This posting describes our experience. Roanoke and the library To celebrate its 100th birthday, the Roanoke Public Library invited Michael Hart of Project Gutenberg fame to share his [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
On Saturday, February 27, <strong>Paul Turner</strong> and I made our way to Roanoke (Indiana) to listen to <strong>Michael Hart</strong> tell stories about electronic texts and <a href="http://www.gutenberg.org/">Project Gutenberg</a>. This posting describes our experience.
</p>
<h3>Roanoke and the library</h3>
<p style='text-align: right'>
<p>
<table align="right">
<tr align="center">
<td><object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/eeoBbSN9Esg&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/eeoBbSN9Esg&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object><br />
</tr>
</table>
<p>To celebrate its 100th birthday, the <a href="http://roanoke.lib.in.us/">Roanoke Public Library</a> invited Michael Hart of Project Gutenberg fame to share his experience regarding electronic texts in a presentation called &#8220;Books &#038; eBooks: Past, Present &#038; Future Libraries&#8221;. The presentation was scheduled to start around 3 o&#8217;clock, but Paul Turner and I got there more than an hour early. We wanted to have time to visit the Library before it closed at 2 o&#8217;clock. The town of Roanoke (Indiana) &#8212; a bit south west of Fort Wayne &#8212; was tiny by just about anybody&#8217;s standard. It sported a single blinking red light, a grade school, a few churches, one block of shops, and a couple of eating establishments. According to the man in the bar, the town got started because of the locks that had been built around town.
</p>
<p>
The Library was pretty small too, but it bursted with pride. About 1,800 square feet in size, it was overflowing with books and videos. There were a couple of comfy chairs for adults, a small table, a set of four computers to do Internet things, and at least a few clocks the wall. They were very proud of the fact that they had become an Evergreen library as a part <a href="http://www.in.gov/library/evergreen.htm">Evergreen Indiana initiative</a>. &#8220;Now is is possible to see what is owned in other, nearby libraries, and borrow things from them as well,&#8221; said the Library&#8217;s Board Director.
</p>
<h3>Michael Hart</h3>
<p>
The presentation itself was not held in the Library but in a nearby church. About fifty (50) people attended. We sat in the pews and contemplated the symbolism of the stained glass windows and wondered how the various hardware placed around the alter was going to be incorporated into the presentation.
</p>
<p>
Full of smiles and joviality, Michael Hart appeared in a tailless tuxedo, cumber bun, and top hat. &#8220;I am now going to pull a library out of my hat,&#8221; he proclaimed, and proceeded to withdraw a memory chip. &#8220;This chip contains 10&#8217;s of thousands of books, and now I&#8217;m going to pull a million books out of my pocket,&#8221; and he proceed to display a USB drive. Before the year 2020 he sees us capable of carrying around a billion books on some sort of portable device. Such was the essence of his presentation &#8212; computer technology enables the distribution and acquisition of &#8220;books&#8221; in ways never before possible. Through this technology he wants to change the world. &#8220;I consider myself to be like Johnny Appleseed, and I&#8217;m spreading the word,&#8221; at which time I raised my hand and told him Johnny Appleseed (John Chapman) was buried just up the road in Fort Wayne.
</p>
<p>
Mr. Hart displayed and described a lot of antique hardware. A hard drive that must have weighed fifty (50) pounds. Calculators. Portable computers. Etc. He illustrated how storage mediums were getting smaller and smaller while being able to save more and more data. He was interested in the packaging of data and displayed a memory chip a person can buy from Walmart containing &#8220;all of the hit songs from the 50&#8217;s and 60&#8217;s&#8221;. (I wonder how the copyright issues around that one had been addressed.) &#8220;The same thing,&#8221; he said, &#8220;could be done for books but there is something wrong with the economics and the publishing industry.&#8221;
</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2010/03/roanoke.jpg" alt="Roanoke (Indiana)" border="0" height="120"><br /><span style="font-size: small"><a href="./../wp-content/uploads/2010/03/roanoke.jpg">Roanoke (Indiana)</a></span></td>
<td><img src="./../wp-content/uploads/2010/03/library.jpg" alt="pubic library" border="0" height="120"><br /><span style="font-size: small"><a href="./../wp-content/uploads/2010/03/library.jpg">public library</a></span></td>
</tr>
</table>
<p>
He outlined how Project Gutenberg works. First a book is identified as a possible candidate for the collection. Second, the legalities of the making the book available are explored. Next, a suitable edition of the book is located. Fourth, the book&#8217;s content is transcribed or scanned. Finally, 100&#8217;s of people proof-read the result and ultimately make it available. Hart advocated getting the book out sooner rather than later. &#8220;It does not have to be perfect, and we can always the fix errors later.&#8221;
</p>
<p>
He described how the first Project Gutenberg item came into existence. In a very round-about and haphazard way, he enrolled in college. Early on he gravitated towards the computer room because it was air conditioned. Through observation he learned how to use the computer, and to do his part in making the expense of the computer worthwhile, he typed out the United States Declaration of the Independence on July 4th, 1971.
</p>
<p>
&#8220;Typing the books is fun,&#8221; he said. &#8220;It provides a means for reading in ways you had never read them before. It is much more rewarding than scanning.&#8221; As a person who recently learned how to bind books and as a person who enjoys writing in books, I asked Mr. Hart to compare &#038; contrast ebooks, electronic texts, and codexes. &#8220;The things Project Gutenberg creates are electronic texts, not ebooks. They are small, portable, easily copyable, and readable by any device. If you can&#8217;t read a plain text document on your computer, then you have much bigger problems. Moreover, there is an enormous cost-benefit compared to printed books. Electronic texts are cheap.&#8221; Unfortunately, he never really answered the question.  Maybe I should have phrased it differently and asked him, the way Paul did, to compare the experience of reading physical books and electronic texts. &#8220;I don&#8217;t care if it looks like a book. Electronic texts allow me to do more reading.&#8221;
</p>
<p>
&#8220;Two people invented open source. Me and <strong>Richard Stallman</strong>,&#8221; he said. Well, I don&#8217;t think this is exactly true. Rather, Richard Stahlman invented the concept of GNU software, and Michael Hart may have invented the concept of open access publishing. But the subtle differences between open source software and open access publishing are lost on most people. In both cases the content is &#8220;free&#8221;. I guess I&#8217;m too close to the situation. I too see open source software distribution and open access publishing having more things in common than differences.
</p>
<table align="center">
<tr align="center">
<td><img src="./../wp-content/uploads/2010/03/church.jpg" alt="church" border="0" height="120"><br /><span style="font-size: small"><a href="./../wp-content/uploads/2010/03/church.jpg">church</a></span></td>
<td><img src="./../wp-content/uploads/2010/03/stained-glass.jpg" alt="church" border="0" height="120"><br /><span style="font-size: small"><a href="./../wp-content/uploads/2010/03/stained-glass.jpg">stained glass</a></span></td>
</tr>
</table>
<p>
&#8220;I knew Project Gutenberg was going to be success when I was talking on the telephone with a representative of the Common Knowledge project and heard a loud crash on the other end of the line. It turns out the representative&#8217;s son and friends had broken an annorandak chair while clamoring to read an electronic text.&#8221; In any case, he was fanatically passionate about giving away electronic texts. He sited the <a href="http://www.worldebookfair.com/">World eBook Fair</a>, and came to the presentation with plenty of CD&#8217;s for distribution.
</p>
<p>
In the end I had my picture taken with Mr. Hart. We then all retired to the basement for punch and cake where we sang Happy Birthday to Michael. Two birthdays celebrated at the same time.
</p>
<h3>Reflection</h3>
<table align="right">
<tr align="center">
<td><img src="./../wp-content/uploads/2010/03/michael-and-eric.png" alt="Michael and Eric" border="0" height="120"><br /><span style="font-size: small"><a href="./../wp-content/uploads/2010/03/michael-and-eric.png">Michael and Eric</a></span><br />
</tr>
</table>
<p>Many people are drawn to the library profession as a matter of principle. Service to others. Academic freedom. Preservation of the historical record. I must admit that I am very much the same way. I was drawn to librarianship for two reasons. First, as a person with a BA in philosophy, I saw libraries as a places full of ideas, literally. Second, I saw the profession as a growth industry because computers could be used to disseminate the content of books. In many ways my gut feelings were accurate, but at the same time they were misguided because much of librarianship surrounds workflows, processes that are only a couple of steps away from factory work, and the curation of physical items. To me, just like Mr. Hart, the physical item is not as important as what it manifests. It is not about the book. Rather, it is what is inside the book. Us librarians have tied our identities to the physical book in such a way to be limiting. We have pegged ourselves, portrayed a short-sighted vision, and consequently painted ourselves into a corner. It the carpenter a hammer expert? Is the surgeon a scalpel technician? No, they are builders and healers, respectively. Why must librarianship be identified with books?
</p>
<p>
I have benefited from Mr. Hart&#8217;s work. My <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> contains many Project Gutenberg texts. Unlike the books from the <a href="http://www.archive.org/">Internet Archive</a>, the texts are much more amenable to digital humanities computing techniques because they have been transcribed by humans and not scanned by computers. At the same time, the Project Gutenberg texts are not formatted as well for printing or screen display as PDF versions of the same. This is why the use of electronic texts and ebooks is not an either/or situation but rather a both/and, especially when it comes to analysis. Read a well-printed book. Identify item of interest. Locate item in electronic version of book. Do analysis. Return to printed book. The process could work just as well the other way around. Ask a question of the electronic text. Get one or more answers. Examine them in the context of the printed word. Both/and, not either/or.
</p>
<p>
The company was great, and the presentation was inspiring. I applaud Michael Hart for his vision and seemingly undying enthusiasm. His talk made me feel like I really am on the right track, but change takes time. The free distribution of data and information &#8212; whether the meaning of free be denoted as liberty or gratis &#8212; is the right thing to do for society in general. We all benefit, and therefore the individual benefits as well. The political &#8220;realities&#8221; of the situation are more like choices and not Platonic truths. They represent immediate objectives as opposed to long-term strategic goals. I guess this is what you get when you mix the corporeal and ideal natures of humanity.
</p>
<p>
Who would have known that a trip to Roanoke would turn out to be a reflection of what it means to be human.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/03/michael-hart-in-roanoke-indiana/feed/index.html</wfw:commentRss>
		<slash:comments>5</slash:comments>
							</item>
		<item>
		<title>Preservationists have the most challenging job</title>
		<link>./../2010/01/preservationists-have-the-most-challenging-job/index.html</link>
				<pubDate>Sun, 03 Jan 2010 22:11:51 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[archiving]]></category>
		<category><![CDATA[preservation]]></category>

		<guid isPermaLink="false">./../index.html?p=449</guid>
				<description><![CDATA[In the field of librarianship, I think the preservationists have the most challenging job because it is fraught with the greatest number of unknowns. Twenty-eight (28) CDs mangled book As I am writing this posting, I am in the middle of an annual processes &#8212; archiving the data I created from the previous year. This [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
In the field of librarianship, I think the preservationists have the most challenging job because it is fraught with the greatest number of unknowns.
</p>
<h3>Twenty-eight (28) CDs</h3>
<table align='right'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2010/01/mangled-book.jpg" alt="mangled book" title="mangled book" width="240" height="180" hspace="3" vspace="3" align="right" /><br />
<span style='font-size: small'><a href="http://infomotions.com/gallery/presidio/Pages/IMG_0557.shtml">mangled book</a></span>
</td>
</tr>
</table>
<p>
As I am writing this posting, I am in the middle of an annual processes &#8212; archiving the data I created from the previous year. This is something I have been doing since 1986. It began by putting my writings on 3.5 inch &#8220;floppy&#8221; disks. After a few years, CDs became more feasible, and I have been using them ever since. The first few CDs contain multiple years&#8217; worth of content. This year I will require 14 CDs, and considering the fact that I create duplicates of every CD, this year I will burn 28. It goes with too much saying, this process takes a long time.
</p>
<p>
Now, I&#8217;m not quite a prolific a writer as 28 CDs sound, but the type of content I archive is large and diverse. It begins with my email which I have been systematically collecting since 1997. (&#8220;Can you say, &#8216;Mr. Serials&#8217;?&#8221;) No, I do not have all of my email, just the email I think is important; email of a significant nature where I actually say something, or somebody actually says something to me. It includes some attachments in the form of PDF documents and image files. It includes, inquiries I get regarding my work and postings to mailing lists that are longer rather than shorter. By the way, I only send plain text email messages because MIME encodings &#8212; the process used to include other than plain text content &#8212; adds an extra layer of complexity when it comes to reading and parsing email (mbox) archives. How can I be sure future digital archeologists will be able to compute against such stuff? Likewise, nothing gets tape archived (&#8220;tarred&#8221;), and nothing gets compressed (&#8220;zipped&#8221;) for all for the same reasons &#8212; an extra layer of complexity. Since I am the &#8220;owner&#8221; of the Code4Lib, NGC4Lib, and Usability4Lib mailing lists, and since was used to be the official archivist for ACQNET, I systematically collect, organize, archive, index, and provide access to these mailing lists using Mr. Serials. Burning the raw (mbox) email files of these lists as well as their browsable HTML counterparts is a part of my annual email preservation process.
</p>
<p>
The proces continues with the various types of other writings. Each presentation I give has its own folder complete with invitation, logistics, bio &#038; abstract, as well three versions of my presentation: 1) a plain-text version, a one-page handout in the form of a PDF file, and a Word document. (Ick!) If I&#8217;m lucky I will remember to archive the TEI version of my remarks which is always longer than one page long and lives in the Musings section of Infomotions. Other types of writings include the plain text versions of blog postings, various versions of essays for publication, etc. At the very least, everything is saved as plain text. Not Word. Not PDF. Not anything that is platform or software-title specific. Otherwise I can&#8217;t guarantee it will be readable into the next decade. I figure that if someone can&#8217;t read a plain text file, then they have much bigger problems.
</p>
<p>
Then there is the software. I write lots of software over the period of one year. At least a couple dozen programs. Some of them are simple hacks. Some of them are &#8220;studies&#8221;, experiments, or investigations. Some of them are extensive intermediaries between relational databases and people using Web browsers. While many of these programs come to me in bursts of creative energy, I would not have the ability to recreate them if they were lost and gone to Big Byte Heaven. <strong>When it comes to computers, your data is your most important assest. Not the hardware. Not the software. The data &#8212; the content you create.</strong> This is the content you can not get back again. This is the content that is unique. This is the content that needs to be backed up and saved against future calamity.
</p>
<p>
Because some of my data is saved in relational databases, the annual preservation process includes raw database dumps. Again, these are plain text files but in the form of SQL statements. Thank God for mysqldump. It gives me the opportunity to restore my Musings, my blog, my Alex Catalogue, my water collection, and now my Highlights &#038; Annotations. (More on that later.)
</p>
<table align='right'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2010/01/biblioteca-valenciana.jpg" alt="Biblioteca Valenciana" title="Biblioteca Valenciana" width="240" height="180" hspace="3" vspace="3" align="right" /><br />
<span style='font-size: small'><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4540.shtml">Biblioteca Valenciana</a></span>
</td>
</tr>
</table>
<p>
All of the content above fits on a single CD. Easily. Again, I&#8217;m not that prolific of a writer.
</p>
<p>
The hard part is the multimedia. As a part of an Apple Library of Tomorrow grant awarded to me by Steve Cisler, I was given an Apple QuickTake camera in 1994 or so. It could store about 24 pictures in 256 colors. It broke when my wife accidentally dropped it into a pond. It still works, if you have the necessary Macintosh hardware and it is plugged in. Presently, I use a 5 megapixel camera. I take the pictures at the highest resolution. I take movies as well. The pictures get edited. The movies get edited as well. This content currently makes up the bulk of the CDs. Six for the movies saved in the Apple movie (.mov) format. One DVD for actual use. Three for the full-scale JPEG images. Three for the iPhoto CDs. While I feel confident the JPEG files will be readable into the future, I&#8217;m not so sure about the .mov files, let alone the DVD. I might feel better about some sort of MPEG format, but it seems to be continually changing. Similarly, I suppose I ought to be saving the JPEG files as PNG files. At least that way more of the metadata may be traveling along with the images. For even better preservation, I ought to be putting the movies on video tape. (There is no compression or encryption there). I ought to be printing the photographs on glossy paper and binding the whole lot into books.
</p>
<p>
This year I started saving my music. I&#8217;ve been recording myself playing guitar since 1984. It began with audio cassette tapes. I have about 30 of them labeled and stored away in plastic boxes. I&#8217;ve made a couple attempts to digitize them, but the process is very laborious. It is easier to record yourself digitally in the first place and save the resulting files. This year a rooted through my archives and found a number of recordings. Tests of new recording gear and software. Experiments in production techniques. Background music to home videos. Saved as AIFF files, I hope they will be readable in the future.
</p>
<p>
Once everything gets burnt to CDs, one copy becomes my working copy. The other copy goes to a CD case not to be touched. Soon I will need a new case.
</p>
<p>
Finally, everything is not digital. In fact, I print a lot. Print that thought-provoking email message. Print that essay. Print this blog posting. Print the code to that computer program. Sign and date the print out. Put it into the archival box. The number of boxes I&#8217;m accumulating is now up to about 10.
</p>
<p>
What can I say. I enjoy all aspects of librarianship.
</p>
<h3>Preservation</h3>
<p>
My world of (digital) preservation is miniscule compared to work of academic preservationists, archivists, and curators. If it takes this much effort to systematically collect, organize, and archive one person&#8217;s content, then think how much effort would be required to apply the process against the intellectual output of an entire college or university!
</p>
<table align='right'>
<tr align='center'>
<td><img src="./../wp-content/uploads/2010/01/u-of-mn-archive.jpg" alt="U of MN Archive" title="U of MN Archive" width="240" height="180" hspace="3" vspace="3" align="right" /><br />
<span style='font-size: small'><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2871.shtml">U of MN Archive</a></span>
</td>
</tr>
</table>
<p>
Even if so much people-power were available, this is no insurance against the future. How do we go about preserving digital content? What formats should the content be manifested in? What hardware will be needed to read the media where the data is saved? What software will be necessary to read the data? Too many questions. Too many unknowns. Too many things that are unpredictable. Right now, there only seems to be two solutions, and the real solution is probably a combination of the two. First, make sincere efforts to copy non-proprietary formats of content to physical media &#8212; a storage artifact that can be read by the widest variety of computer hardware. Plan on migrating the content as well as the physical media forward as technology changes. Think this process as an a type of insurance. Second, make as many copies of the content as possible in as many formats as possible. Print it. Microfilm it. Put it on tape and spinning disks. Make it available on the Web. While the folks at LOCKSS may not have thought the expression would be used in this manner, it is still true &#8212; &#8220;Lot&#8217;s of copies keep stuff safe.&#8221;
</p>
<p>
I sincerely believe we are in the process of creating a Digital Dark Age. &#8220;No, you can not read or access that content. It was created during the late 20th and early 21st centuries. It was a time of prolific exploration, few standards, and many legal barriers.&#8221; Something needs to happen differently.
</p>
<p>
Maybe it doesn&#8217;t really matter. Maybe the content that is needed is the content that always lives on &#8220;spinning disks&#8221; and gets automatically migrated forward. Computers make it easier to create lots of junk. It certainly doesn&#8217;t all need to be preserved. On the other hand, those letters from the American Civil War were not necessarily considered important at the time. Many of them were written by unknown people. Yet, these letters are important to us today. Not because of who wrote them, but because they reflect the thinking of the time. They provide pieces of a puzzle that can verify facts or provide alternative perspectives. After years and years, information can grow in importance, and consequently, today, we run the risk of throwing away stuff this is of importance tomorrow.
</p>
<p>
Preservationists have the hardest job in the field of librarianship. More power to them.</p>
]]></content:encoded>
										</item>
		<item>
		<title>How to make a book (#2 of 3)</title>
		<link>./../2010/01/how-to-make-a-book-2-of-3/index.html</link>
				<comments>./../2010/01/how-to-make-a-book-2-of-3/index.html#comments</comments>
				<pubDate>Fri, 01 Jan 2010 16:20:22 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[book-binding]]></category>

		<guid isPermaLink="false">./../index.html?p=443</guid>
				<description><![CDATA[This is the second of a three-part series on how to make a book. The first posting described and illustrated how to use a thermo-binding machine to make a book. This posting describes and illustrates how to &#8220;weave&#8221; a book together &#8212; folding and cutting (or tearing). The process requires no tools. No glue. No [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is the second of a three-part series on how to make a book.
</p>
<p>
The first posting described and illustrated <a href="./../2009/08/how-to-make-a-book-1-of-3/index.html">how to use a thermo-binding machine</a> to make a book. This posting describes and illustrates how to &#8220;weave&#8221; a book together &#8212; folding and cutting (or tearing). The process requires no tools. No glue. No sewing. Just paper. Ingenious. The third posting will be about traditional bookmaking.
</p>
<p style='text-align: center'><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/GJvlUT_daQA&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/GJvlUT_daQA&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<h3>Attribution</h3>
<p>
Like so many things in my life, I learned how to do this by reading a&#8230; book, but alas, I have misplaced this particular book and I am unable to provide you with a title/citation. (Pretty bad for a librarian!) In any event, the author of the book explained her love of bookmaking. She described her husband as an engineer who thought all of the traditional cutting, gluing, and sewing were unnecessary. She challenged him to create something better. The result was the technique described below. While what he created was not necessarily &#8220;better&#8221;, it surely showed ingenuity.
</p>
<h3>The process</h3>
<p>Here is process outlined, but you can also see <a href="http://www.youtube.com/watch?v=GJvlUT_daQA">how it is done</a> on YouTube:</p>
<ol>
<li><strong>Begin with 12 pieces of paper</strong> &#8211; I use normal printer paper, but the larger 11.5 x 14 inch pieces of paper make for very nicely sized books.</li>
<li><strong>Fold pairs of paper length-wise</strong> &#8211; In the end, you will have 6 pairs of paper half as big as the originals.</li>
<li><strong>Draw a line down the center of 3 pairs</strong> &#8211; Demarcate where you will create &#8220;slots&#8221; for your book by drawing a line half the size of of the inner crease of 3 pairs of paper.</li>
<li><strong>Draw a line along the outside of 3 pairs</strong> &#8211; Demarcate where you will create &#8220;tabs&#8221; for your books by drawing two lines from one quarter along the crease towards the outside of the 3 pairs of paper.</li>
<li><strong>Cut along the lines</strong> &#8211; Actually create the slots and tabs of your books by cutting along the lines drawn in Steps #3 and #Instead of using scissors, you can tear along the creases. (No tools!)</li>
<li><strong>Create mini-books</strong> &#8211; Take one pair of paper cut as a tab and insert the tab into the slot of another pair. Do this for all of 3 of the slot-tab pairs. The result will be 3 mini-books simply &#8220;woven&#8221; together.</li>
<li><strong>Weave together the mini-books</strong> &#8211; Finally, find the slot of one of your mini-books and insert a tab from another mini-book. Do the same with the remaining mini-book.</li>
</ol>
<p>
The result of your labors should be a fully-functional book complete with 48 pages. I use them for temporary projects &#8212; notebooks. Yeah, the cover is not very strong. During the use of your book, put the whole thing in a manila or leather folder. Lastly, I know the process is difficult to understand without pictures. <a href="http://www.youtube.com/watch?v=GJvlUT_daQA">Watch the video</a>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2010/01/how-to-make-a-book-2-of-3/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Good and best open source software</title>
		<link>./../2009/12/good-and-best-open-source-software/index.html</link>
				<comments>./../2009/12/good-and-best-open-source-software/index.html#comments</comments>
				<pubDate>Mon, 28 Dec 2009 17:29:30 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[open source software]]></category>

		<guid isPermaLink="false">./../index.html?p=440</guid>
				<description><![CDATA[What qualities and characteristics make for a &#8220;good&#8221; piece of open source software? And once that question is answered, then what pieces of library-related open source software can be considered &#8220;best&#8221;? I do not believe there is any single, most important characteristic of open source software that qualifies it to be denoted as &#8220;best&#8221;. Instead, [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
What qualities and characteristics make for a &#8220;good&#8221; piece of open source software? And once that question is answered, then what pieces of library-related open source software can be considered &#8220;best&#8221;?
</p>
<p>
I do not believe there is any single, most important characteristic of open source software that qualifies it to be denoted as &#8220;best&#8221;. Instead, a number of characteristics need to be considered. For example, a program might do one thing and do it well, but if it is bear to install then that counts against it. Similarly, some software might work wonders but it is built on a proprietary infrastructure such as a closed source compiler. Can that software really be considered &#8220;open&#8221;?
</p>
<p>
For my own education and cogitation, I have begun to list questions to help me address what I think is the &#8220;best&#8221; library-related open source software. Your comments would be greatly appreciated. I have listed the questions in (more or less) priority order:
</p>
<ul>
<li><strong>Does the software work as advertised?</strong> &#8211; If the program says it can do one thing, but never does, then this may be a non-starter. On the other hand, accomplishing a particular goal is sometimes relative. In most cases the software might perform excellently, but in others it performs less so. It is unrealistic to expect any software to be all things to all people.</li>
<li><strong>To what degree is the software supported?</strong> &#8211; Support, can mean many things. Most obviously, users of the software want to know whether or not there are one or more people behind the software who can answer questions about it. Where is the developer and how can I get in touch with them? Are they approachable? If the developer is not available, then can support be purchased? Do I get what I pay for when I make this purchase? How expensive is it? Is their website easy to use? Support can also allude to software updates. &#8220;Software is never done. If it were, then it would be called hardware.&#8221; For example, my favorite XSL processor (xsltproc) and some of its friends work great but recommending it to friends comes with hesitation because I wonder about ongoing maintenance and upgrades to the newer versions of the API. Support also means user community. While open source is about &#8220;free&#8221; software, it relies on communities for sustainability. Do such communities exist? Are there searchable mailing lists with browsable archives? Are there wikis, virtual and real meetings, and/or IRC channels, etc?  </li>
<li><strong>Is the documentation thorough?</strong> &#8211; Is there a man page? A POD? Something that can be printed and annotated? Is there an introduction? FAQ? Glossary of terms? Is there a different guide/section for different types of readers such as systems administrators, programmers, implementors, and/or users? Is the documentation well-written? While I have used plenty of pieces of software and never read the manual, documentation is essencial if the software is expected to be exploited to the highest degree. Few thing in life are truly intuitive. Software is certainly not one of them. Documentation is a form of writing, and writing is something that literally transcends space and time. It is an alternative to having a person giving you instructions.</li>
<li><strong>What are the licence terms?</strong> &#8211; Personally I place a higher value on the viral nature of a GNU-like license, but BSD-like licenses enable commercial enterprise to a greater degree, and whether I like it or not commercial enterprises are all but necessary in the world I live in. (After all, it enabled the creation of favorite personal computer&#8217;s operating system.) At the same time, if the licensing is not GNU-like or BSD-like, then the software is not really open source anyway. Right?</li>
<li><strong>To what degree is the software easy to install?</strong> &#8211; Since installing software is usually not a process that needs to be repeated, a difficult installation can be overlooked. On the other hand, if tweaking kernels, installing a huge number of dependencies, requiring a second piece of obscure software that is not supported is required, then all this counts against an open source software distribution. </li>
<li><strong>To what degree is the software implemented using the &#8220;standard&#8221; LAMP stack?</strong> &#8211; LAMP is an acronym for Linux, Apache, MySQL, and Perl (or PHP, or Python, or just about any other computer language), and the LAMP stack is/was the basis for many pieces of open source applications. The combination is well-supported, well-documented, and easily transportable to different hardware platforms. If the software application is built on LAMP, then the application has a lot going for it.</li>
<li><strong>Is the distribution in question an application/system or a library/module?</strong> &#8211; It is possible to divide software into two group: 1) software that is designed to build other software &#8212; libraries/modules, and 2) software that is an an end-in-itself &#8212; applications/systems. The former is akin to a tool in a toolbox used to build applications. The later is something intended for an end user. The former requires a computer programmer to truly exploit. The later usually does not require as much specific expertise. Both the module and the application have their place. Each have their own advantages and disadvantages. Depending on the implementor&#8217;s environment one might be better suited. </li>
<li><strong>To what degree does the software satisfy some sort of real library need?</strong> &#8211; This question is specific to my particular audience, and is dependent on a definition of librarianship. Collection. Preservation. Organization. Dissemination. Books? Catalogs? Circulation? Reading and information literacy? Physical place fostering community? Etc. For example, librarians love to create lists, and in a digital environment lists are well managed through the use of relational databases. Therefore, does MySQL qualify as a piece of library-related software? Similarly, as Roy Tennant was told one time, &#8220;Librarians like to search. Everybody else likes to find.&#8221; Does this mean indexers like Solr/Lucene ought to qualify? Maybe the question ought to be rephrased. &#8220;To what degree does the software satisfy your or your institution&#8217;s needs?&#8221;</li>
</ul>
<p>
What sorts of things have I left out? Is there anything here that can be measurable or is everything left to subjective judgement? Just as importantly, can we as a community answer these questions in the list of specific software distributions to come up with the &#8220;best&#8221; of class?
</p>
<p>
&#8216;More questions than answers.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/12/good-and-best-open-source-software/feed/index.html</wfw:commentRss>
		<slash:comments>5</slash:comments>
							</item>
		<item>
		<title>Valencia and Madrid: A Travelogue</title>
		<link>./../2009/12/valencia-and-madrid-a-travelogue/index.html</link>
				<pubDate>Sat, 05 Dec 2009 15:34:12 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>

		<guid isPermaLink="false">./../index.html?p=434</guid>
				<description><![CDATA[I recently had the opportunity to visit Valencia and Madrid (Spain) to share some of my ideas about librarianship. This posting describes some of things I saw and learned along the way. La Capilla de San Francisco de Borja Capilla del Santo Cáliz LIS-EPI Meeting In Valencia I was honored to give the opening remarks [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I recently had the opportunity to visit Valencia and Madrid (Spain) to share some of my ideas about librarianship. This posting describes some of things I saw and learned along the way.
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4480.jpg" alt="La Capilla de San Francisco de Borja" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4480.shtml">La Capilla de San Francisco de Borja</a></span></td>
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4486.jpg" alt="Capilla del Santo Cáliz" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4486.shtml">Capilla del Santo Cáliz</a></span></td>
</tr>
</table>
<h3>LIS-EPI Meeting</h3>
<p>
In Valencia I was honored to give the opening remarks at the <a href="http://www.ciepi.org/lisepi09/programa.html">4th International LIS-EPI Meeting</a>. Hosted by the Universidad Politécnica de Valencia and organized by <strong>Fernanda Mancebo</strong> as well as <strong>Antonia Ferrer</strong>, the Meeting provided an opportunity for librarians to come together and share their experiences in relation to computer technology. My presentation, &#8220;<a href="http://infomotions.com/musings/future-2015/">A few possibilities for librarianship by 2015</a>&#8221; outlined a few near-term futures for the profession. From the introduction:
</p>
<blockquote><p>
The library profession is at a cross roads. Computer technology coupled with the Internet have changed the way content is created, maintained, evaluated, and distributed. While the core principles of librarianship (collection, organization, preservation, and dissemination) are still very much apropos to the current milieu, the exact tasks of the profession are not as necessary as they once were. What is a librarian to do? In my opinion, there are three choices: 1) creating services against content as opposed to simply providing access to it, 2) curating collections that are unique to our local institutions, or 3) providing sets of services that are a combination of #1 and #2.
</p></blockquote>
<p>
And from the conclusion:
</p>
<blockquote><p>
If libraries are representing a smaller and smaller role in the existing information universe, then two choice present themselves. First, the profession can accept this fact, extend it out to its logical conclusion, and see that libraries will eventually play in insignificant role in society. Libraries will not be libraries at all but more like purchasing agents and middle men. Alternatively, we can embrace the changes in our environment, learn how to take advantage of them, exploit them, and change the direction of the profession. This second choice requires a period of transition and change. It requires resources spent against innovation and experimentation with the understanding that innovation and experimentation more often generate failures as opposed to successes. The second option carries with it greater risk but also greater rewards.
</p></blockquote>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4461.jpg" alt="toro" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4461.shtml">toro</a></span></td>
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4459.jpg" alt="robot sculpture" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4459.shtml">robot sculpture</a></span></td>
</tr>
</table>
<h3>Josef Hergert</h3>
<p>
Providing a similar but different vision from my own, <strong>Josef Hergert</strong> (University of Applied Sciences HTW Chur) described how librarianship ought to be embracing Web 2.0 techniques in a presentation called &#8220;Learning and Working in Time of Web 2.0: Reconstructing Information and Knowledge&#8221;. To say Hergert was advocating information literacy would be to over-simplify his remarks, yet if you broaden the definition of information literacy to include the use of blogs, wikis, social bookmarking sites &#8212; Web 2.0 technologies &#8212; then the phrase information literacy is right on target. A number of notable quotes included:
</p>
<ul>
<li>We are experiencing many changes in the environment: non-commercial sharing of content, legislative overkill, and &#8220;pirate parties&#8221;&#8230; The definition of &#8220;authorship&#8221; is changing.</li>
<li>The teaching of information literacy courses will help overcome some of the problems.</li>
<li>The process of learning is changing because of the Internet&#8230; We are now experiencing a greater degree of informal learning as opposed to formal learning&#8230; We need as librarians to figure out how to exploit the environment to support learning both formal and informal.</li>
<li>The current environment is more than paper, but also about a network of people, and the librarian can help create these networks with [Web 2.0 tools].</li>
<li>Provide not only the book but the environment and tools to do the work.</li>
</ul>
<p>
As an aside, I have been using networked computer technologies for more than twenty years. Throughout that time a number of truisms have become apparent. &#8220;If you don&#8217;t want it copied, then don&#8217;t put it on the &#8216;Net; give back to the &#8216;Net&#8221;, &#8220;On the Internet nobody knows that you are a dog&#8221;, and &#8220;It is like trying to drink from a fire hose&#8221; are just a few. Hergert used the newest one, &#8220;If it is not on the Internet, then it doesn&#8217;t exist.&#8221; For better or for worse, I think this is true. Convenience is a very powerful elixer. The ease of acquiring networked data and information is so great compared the time and energy needed to get data and information in analog format that people will get what is simple &#8220;good enough&#8221;. In order to remain relevant, libraries must put their (full text) content on the &#8216;Net or be seen as an impediment to learning as opposed to learning&#8217;s facilitator.
</p>
<p>
While I would have enjoyed learning what the other Meeting presenters has to say, it was unrealistic for me to attend the balance of the conference. The translators were going back to Switzerland, and I would not have been able to understand what the presenters were saying. In this regard is sort of felt like the Ugly American, but I have come to realize that the use of English is a purely practical matter. It as nothing to do with a desire to understand American culture.
</p>
<h3>Bibliteca Valenciana</h3>
<p>
The next day I have a few others had the extraordinary opportunity to get an inside tour of the <a href="http://bv.gva.es/screens/biblioteca_val.html">Bibliteca Valenciana</a> (Valencia Library). Starting out as a monastery, it was transformed into quite a number of other things, such as a prison, before it became a library. We got to go into the archives, see of of their treasures, and learn about the library&#8217;s history. They were very proud of their Don Quixote collection, and we saw their oldest book &#8212; a treatise on the Black Death which included receipts for treatments.
</p>
<p style="text-align: center"><object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/HarOXcVdsG4&#038;hl=en_US&#038;fs=1&#038;color1=0x2b405b&#038;color2=0x6b8ab6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HarOXcVdsG4&#038;hl=en_US&#038;fs=1&#038;color1=0x2b405b&#038;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object></p>
<h3>Biblioteca Nacional de España</h3>
<p>
In Madrid I believe visited the <a href="http://www.bne.es/es/Inicio/index.html">Biblioteca Nacional de España</a> (National Library of Spain) and went to their museum. It was free, and I saw an exhibition of original Copernicus, Galileo, Brahe, Kepler, and Newton editions embodying Western scientific progress. Very impressive, and very well done, especially considering the admission fee.
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4612.jpg" alt="Biblioteca Nacional de España" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4612.shtml">Biblioteca Nacional</a></span></td>
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4614.jpg" alt="statue" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4614.shtml">statue</a></span></td>
</tr>
</table>
<h3>International Institute</h3>
<p>
Finally, I shared the presentation from the LIS-EPI Meeting at the <a href="http://www.iie.es/">International Institute</a>. While I advocated changes in the way&#8217;s our profession do its work, the attendees at both venues wondered how to about these changes. &#8220;We are expected to provide a certain set of services to our patrons here and now. What do we do to learn these new skills?&#8221; My answer was grounded in applied research &amp; development. Time must be spent experimenting and &#8220;playing&#8221; with the new technologies. This should be considered an investment in the profession and its personnel, an investment that will pay off later in new skills and greater flexibility. We work in academia. It behooves us to work academically. This includes explorations into applying our knowledge in new and different ways.
</p>
<h3>Acknowledgements</h3>
<p>
Many thanks go to many people for making this professional adventure possible. I am indebted to <strong>Monica Pareja</strong> from the United Stated Embassy in Madrid. She kept me out of trouble. I thank Fernanda Mancebo and Antonia Ferrer who invited me to the Meeting. Last and certainly not least, I thank <strong>my family</strong> for allowing to to go to Spain in the first place since the event happened over the Thanksgiving holiday. &#8220;Thank you, one and all.&#8221;
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4711.jpg" alt="alley" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4711.shtml">alley</a></span></td>
<td><img src="http://infomotions.com/gallery/valencia/Thumbs/IMG_4707.jpg" alt="fountain" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/valencia/Pages/IMG_4707.shtml">fountain</a></span></td>
</tr>
</table>
]]></content:encoded>
										</item>
		<item>
		<title>Colloquium on Digital Humanities and Computer Science: A Travelogue</title>
		<link>./../2009/12/colloquium-on-digital-humanities-and-computer-science-a-travelogue/index.html</link>
				<comments>./../2009/12/colloquium-on-digital-humanities-and-computer-science-a-travelogue/index.html#comments</comments>
				<pubDate>Sat, 05 Dec 2009 02:52:30 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[DHCS2009]]></category>
		<category><![CDATA[digital humanities]]></category>
		<category><![CDATA[Illinois Institute of Technology]]></category>

		<guid isPermaLink="false">./../index.html?p=430</guid>
				<description><![CDATA[On November 14-16, 2009 I attended the 4th Annual Chicago Colloquium on Digital Humanities and Computer Science at the Illinois Institute of Technology in Chicago. This posting outlines my experiences there, but in a phrase, I found the event to be very stimulating. In my opinion, libraries ought to be embracing the techniques described here [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>
On November 14-16, 2009 I attended the <a href="http://dhcs2009.iit.edu/">4th Annual Chicago Colloquium on Digital Humanities and Computer Science</a> at the Illinois Institute of Technology in Chicago. This posting outlines my experiences there, but in a phrase, I found the event to be very stimulating. In my opinion, libraries ought to be embracing the techniques described here and integrating them into their collections and services.
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4202.jpg" alt="IIT" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4202.shtml">IIT</a></span></td>
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4208.jpg" alt="Paul Galvin Library" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4208.shtml">Paul Galvin Library</a></span></td>
</tr>
</table>
<h3>Day #0 &#8211; A pre-conference workshop</h3>
<p>
Upon arrival I made my way directly to a pre-conference workshop entitled &#8220;Machine Learning, Sequence Alignment, and Topic Modeling at ARTFUL&#8221; presented by <strong>Mark Olsen</strong> and <strong>Clovis Gladstone</strong>. In the workshop they described at least two applications they were using to discover common phrases between texts. The first was called <a href="http://code.google.com/p/philomine/">Philomine</a> and the second was called <a href="http://code.google.com/p/text-pair/">Text::Pair</a>. Both work similarly but Philomine needs to be integrated with <a href="http://www.lib.uchicago.edu/efts/ARTFL/philologic/">Philologic</a>, and Text::Pair is a stand-alone Perl module. Using these tools n-grams are extracted from texts, indexed to the file system, and await searching. By entering phrases into a local search engine, hits are returned that include the phrases and the works where the phrase was found. I believe Text::Pair could be successfully integrated in my Alex Catalogue.
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4226.jpg" alt="orange, green, and gray" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4226.shtml">orange, green, and gray</a></span></td>
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4235.jpg" alt="orange and green" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4235.shtml">orange and green</a></span></td>
</tr>
</table>
<h3>Day #1</h3>
<p>
The Colloquium formally began the next day with an introduction by <strong>Russell Betts</strong> (Illinois Institute of Chicago). His most notable quote was, &#8220;We have infinite computer power at our fingertips, and without much thought you can create an infinite amount of nonsense.&#8221; Too true.
</p>
<p>
<strong>Marco Büchler</strong> (University of Leipzig) demonstrated textual reuse techniques in a presentation called &#8220;Citation Detection and Textual Reuse on Ancient Greek Texts&#8221;. More specifically, he used textual reuse to highlight differences between texts, graph ancient history, and explore computer science algorithms. Try <a href="http://www.eaqua.net/">www.eaqua.net</a> for more.
</p>
<p>
<strong>Patrick Juola</strong>&#8216;s (Duquesne University) &#8220;conjecturator&#8221; was the heart of the next presentation called &#8220;Mapping Genre Spaces via Random Conjectures&#8221;. In short, Juola generated thousands and thousands of &#8220;facts&#8221; in the form of [subject1] uses [subject2] more or less than [subject3]. He then tested each of these facts for truth against a corpus. Ironically, he was doing much of what Betts alluded to in the introduction &#8212; creating nonsense. On the other hand, the approach was innovative.
</p>
<p>
By exploiting a parts-of-speech (POS) parser, <strong>Devin Griffiths</strong> (Rutgers University) sought the use of analogies as described in &#8220;On the Origin of Theories: The Semantic Analysis of Analogy in Scientific Corpus&#8221;. Assuming that an analogy can be defined as a noun-verb-noun-conjunction-noun-verb-noun phrase, Griffith looked for analogies in Darwin&#8217;s <cite>Origin of Species</cite>, graphed the number of analogies against locations in the text, and made conclusions accordingly. He asserted that the use of analogy was very important during the Victorian Age, and he tried to demonstrate this assertion through a digital humanities approach.
</p>
<p>
The use of LSIDs (large screen information displays) was discussed by <strong>Geoffrey Rockwell</strong> (McMaster University). While I did not take a whole lot of notes from this presentation, I did get a couple of ideas: 1) figure out a way for a person to &#8220;step into&#8221; a book, or 2) display a graphic representation of a text on a planetarium ceiling. Hmm&#8230;
</p>
<p>
<strong>Kurt Fendt</strong> (MIT) described a number of ways timelines could be used in the humanities in his presentation called &#8220;New Insights: Dynamic Timelines in Digital Humanities&#8221;. Through the process I became aware of the <a href="http://www.simile-widgets.org/timeline/">SIMILE timeline</a> application/widget. Very nice.
</p>
<p>
I learned of the existence of a number of digital humanities grants as described by <strong>Michael Hall</strong> (NEH). They are both start-up grants as well a grants on advanced topics. See: <a href="http://neh.gov/odh/">neh.gov/odh/</a>.
</p>
<p>
The first keynote speech, &#8220;Humanities as Information Sciences&#8221;, was given by <strong>Vasant Honavar</strong> (Iowa State University) in the afternoon. Honavar began with a brief history of thinking and philosophy, which he believes lead to computer science. &#8220;The heart of information processing is taking one string and transforming it into another.&#8221; (Again, think the introductory remarks.) He advocated the creation of symbols, feeding them into a processor, and coming up with solutions out the other end. Language, he posited, is an information-rich artifact and therefore something that can be analyzed with computing techniques. I liked how he compared science with the humanities. Science observes physical objects, and the humanities observe human creations. Honavar was a bit <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscient</a>, and therefore someone to be admired.
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4220.jpg" alt="subway tunnel" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4220.shtml">subway tunnel</a></span></td>
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4215.jpg" alt="skyscraper predecessor" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4215.shtml">skyscraper predecessor</a></span></td>
</tr>
</table>
<h3>Day #2</h3>
<p>
In &#8220;Computational Phonostylistics: Computing the Sounds of Poetry&#8221; <strong>Marc Plamondon</strong> (Nipissing University) described how he was counting phonemes in both Tennyson&#8217;s and Browning&#8217;s poetry to validate whether or not Tennyson&#8217;s poetry is &#8220;musical&#8221; or plosive sounding and Browning&#8217;s poetry is &#8220;harsh&#8221; or fricative. To do this he assumed one set of characters are soft and another set are hard. He then counted the number of times each of these sets of characters existed in each of the respective poets&#8217; works. The result was a graph illustrating the &#8220;musical&#8221; or &#8220;harshness&#8221; of the poetry. One of the more interesting quotes from Plamondon&#8217;s presentation included, &#8220;I am interested in quantifying aesthetics.&#8221;
</p>
<p>
In <strong>C.W. Forstal</strong>&#8216;s (SUNY Buffalo) presentation &#8220;Features from Frequency: Authorship and Stylistic Analysis Using Repetitive Sound&#8221; we learned how he too is counting sound n-grams to denote style. He applied the technique to D.H. Lawrence as well as to the <cite>Iliad and Odyssey</cite>, and to his mind the technique works to his satisfaction.
</p>
<p>
The second keynote presentation was give by <strong>Stephen Wolfram</strong> (Wolfram Research) via teleconference. It was called &#8220;What Can Be Made Computable in the Humanities?&#8221; He began by describing <a href="http://www.wolfram.com/products/mathematica/">Mathematica</a> as a tool he used to explore the world around him. All of this assumes that the world consists of patterns, and these patterns can be described through the use of numbers. He elaborated through something he called the Principle of Computational Equivalency &#8212; once you get to a certain threshold systems create a level of complexity. Such a principle puts pressure on having the simplest descriptive model as possible. (Such things are standard scientific/philosophic principles. Nothing new here.) Looking for patterns was the name of his game, and one such game was applied to music. Discover the patterns in a type of music. Feed the patterns to a computer. Have the computer generate the music. Most of the time the output works pretty well. He called this <a href="http://tones.wolfram.com/">WolframTones</a>. He went on to describe <a href="http://www.wolframalpha.com/">WolframAlpha</a> as an attempt to make the world&#8217;s knowledge computable. Essentially a front-end to Mathematica, WolframAlpha is a vast collection of content associated with numbers: people and their birth dates, the agriculture output of countries, the price of gold over time, temperatures from across the world, etc. Queries are accepted into the system. Searches are done against its content. Results are returned in the form of best-guess answers complete with graphs and charts. WolframAlpha exposes mathematical processing to the general public in ways that have not been done previously. Wolfram described two particular challenges in the creation of WolframAlpha. One was the collection of content. Unlike Google, Wolfram Research does not necessarily crawl the Internet. Rather it selectively collects the content of a &#8220;reference library&#8221; and integrates it into the system. Second, and more challenging, has been the design of the user interface. People do not enter structured queries, but structured output is expected. Interpreting people&#8217;s input is a difficult task in and of itself. From my point of view, he is probably learning more about human thought processes than the natural world.
</p>
<table align="center">
<tr align="center">
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4242.jpg" alt="red girder sculpture" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4242.shtml">red girder sculpture</a></span></td>
<td><img src="http://infomotions.com/gallery/iit/Thumbs/IMG_4244.jpg" alt="gray sculpture" border="0"><br /><span style="font-size: small"><a href="http://infomotions.com/gallery/iit/Pages/IMG_4244.shtml">gray sculpture</a></span></td>
</tr>
</table>
<h3>Some thoughts</h3>
<p>
This meeting was worth every single penny, especially considering the fact that there was absolutely no registration fee. Free, except of the my travel costs, hotel, and the price of the banquet. Unbelievable!
</p>
<p>
Just as importantly, the presentations given at this meeting demonstrate the maturity of the digital humanities. These things are not just toys but practical tools for evaluating (mostly) texts. Given the increasing amount of full text available in library collections, I see very little reason why these sorts of digital humanities applications could not be incorporate into library collections and services. Collect full text content. Index it. Provide access to the index. Get back a set of search results. Select one or more items. Read them. Select one or more items again, and then select an option such as graph analogies, graph phonemes, or list common phrases between texts. People need to do more than read the texts. People need to use the texts, to analyze them, to compare &amp; contrast them with other texts. The tools described in this conference demonstrate that such things are more than possible. All that has to be done is to integrate them into our current (library) systems.
</p>
<p>
So many opportunities. So little time.
</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2009/12/colloquium-on-digital-humanities-and-computer-science-a-travelogue/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Alex Catalogue collection policy</title>
		<link>./../2009/10/alex-catalogue-collection-policy/index.html</link>
				<pubDate>Sun, 04 Oct 2009 13:12:08 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>

		<guid isPermaLink="false">./../index.html?p=415</guid>
				<description><![CDATA[This page lists the guidelines for including texts in the Alex Catalogue of Electronic Texts. Originally written in 1994, much of it is still valid today. Purpose The primary purpose of the Catalogue is to provide me with the means for demonstrating a concept I call arscience through American and English literature as well as [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>This page lists the guidelines for including texts in the <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>. Originally written in 1994, much of it is still valid today.</p>
<h2>Purpose</h2>
<p>The primary purpose of the Catalogue is to provide me with the means for demonstrating a concept I call arscience through American and English literature as well as Western philosophy. The secondary purpose of the Catalogue is to provide value-added access to some of the world&#8217;s great literature in turn providing the means for enhancing education. Consequently, the items in the collection must satisfy either of these two goals.</p>
<h2>Qualities</h2>
<p>Listed in priority order, texts in the collection must have the following qualities:</p>
<ol>
<li>Only texts in the public domain or freely distributed texts will be collected.</li>
<li>Only texts that can be classified as American literature, English literature, or Western philosophy will be included.</li>
<li>Only texts that are considered &#8220;great&#8221; literature will included. Great literature is broadly defined as literature withstanding the test of time and found in authoritative reference works like the <cite>Oxford Companions</cite> or the <cite>Norton Anthologies</cite>.</li>
<li>Only complete works will be collected unless a particular work was never completed in the first place. In other words, partially digitized texts will not be included in the Catalogue.</li>
<li>Whenever possible, collections of short stories or poetry will be included as they were originally published. If the items from the originally published collections have been broken up into individual stories or poems, then those items will be included individually.</li>
<li>The texts in the collection must be written in or translated into English. Otherwise I will not be able to evaluate the texts&#8217; quality nor will the indexing and content-searching work correctly.</li>
</ol>
<h2>File formats</h2>
<p>Because of technical limitations and the potential long-term integrity of the Catalogue, texts in the collection, listed in order of preference, should have the following formats:</p>
<ol>
<li>Plain text files are preferred over HTML files.</li>
<li>HTML files are preferred over compressed files.</li>
<li>Compressed files are preferred over &#8220;word processor&#8221; files.</li>
<li>Word processed files are the least preferable file format.</li>
<li>Texts in unalterable file formats, such as Adobe Acrobat, will not be included.</li>
</ol>
<p>In all cases, text that have not been divided into parts are preferred over texts that have been divided. If a particular item is deemed especially valuable and the item has been divided into parts, then efforts will be made to concatenate the individual parts and incorporate the result into the collection. The items in the collection are not necessarily intended to be read online.</p>
</div>
]]></content:encoded>
										</item>
		<item>
		<title>Alex, the movie!</title>
		<link>./../2009/10/alex-the-movie/index.html</link>
				<pubDate>Sun, 04 Oct 2009 12:58:48 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>

		<guid isPermaLink="false">./../index.html?p=409</guid>
				<description><![CDATA[Created circa 1998, this movie describes the purpose and scope of the Alex Catalogue of Electronic Texts. While coming off rather pompous, the gist of what gets said is still valid and correct. Heck, the links even work. &#8220;Thanks Berkeley!&#8221;]]></description>
								<content:encoded><![CDATA[<p>
Created circa 1998, <a href="http://www.youtube.com/watch?v=WYIa_vLh4qs">this movie</a> describes the purpose and scope of the <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>. While coming off rather pompous, the gist of what gets said is still valid and correct. Heck, the links even work. &#8220;Thanks Berkeley!&#8221;
</p>
<p style='text-align: center'><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/WYIa_vLh4qs&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WYIa_vLh4qs&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
										</item>
		<item>
		<title>Collecting water and putting it on the Web (Part III of III)</title>
		<link>./../2009/09/water-3-of-3/index.html</link>
				<pubDate>Thu, 03 Sep 2009 14:25:29 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[water]]></category>

		<guid isPermaLink="false">./../index.html?p=379</guid>
				<description><![CDATA[This is Part III of an essay about my water collection, specifically a summary, opportunities for future study, and links to the source code. Part I described the collection&#8217;s whys and hows. Part II described the process of putting it on the Web. Summary, future possibilities, and source code There is no doubt about it. [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is Part III of an essay about my water collection, specifically a summary, opportunities for future study, and links to the source code. <a href="./../2009/09/water-1-of-3/index.html">Part I</a> described the collection&#8217;s whys and hows. <a href="./../2009/09/water-2-of-3/index.html">Part II</a> described the process of putting it on the Web.
</p>
<h2>Summary, future possibilities, and source code</h2>
<p>
There is no doubt about it. My water collection is eccentric but through my life time I have encountered four other people who also collect water. At least I am not alone.
</p>
<p>
Putting the collection on the Web is a great study in current technology. It includes relational database design. Doing input/output against the database through a programming language. Exploiting the &#8220;extensible&#8221; in XML by creating my own mark-up language. Using XSLT to transform the XML for various purposes: display as well as simple transformation. Literally putting the water collection on the map. Undoubtably technology will change, but the technology of my water collection is a representative reflection of the current use of computers to make things available on the Web.
</p>
<p>
I have made all the software a part of this system available here:
</p>
<ol>
<li><a href="http://infomotions.com/water/about/water-structure.sql">SQL file sans any data</a> &#8211; good for study of simple relational database</li>
<li><a href="http://infomotions.com/water/about/water-dump.sql.gz">SQL file complete with data</a> &#8211; see how image data is saved in the database</li>
<li><a href="http://infomotions.com/water/about/water-admin.tar.gz">PHP scripts</a> &#8211; used to do input/output against the database</li>
<li><a href="http://infomotions.com/water/about/waters-xml.txt">waters.xml</a> &#8211; a database dump, sans images, in the form of an XML file</li>
<li><a href="http://infomotions.com/water/about/waters.xsl">waters.xsl</a> &#8211; the XSLT used to display the browser interface</li>
<li><a href="http://infomotions.com/water/about/waters2markers.xsl">waters2markers.xsl</a> &#8211; transform water.xml into Google Maps XML file</li>
<li><a href="http://infomotions.com/water/about/map.pl">map.pl</a> &#8211; implementation of Google Maps API</li>
</ol>
<p>
My water also embodies characteristics of librarianship. Collection. Acquisition. Preservation. Organization. Dissemination. The only difference is that the content is not bibliographic in nature.
</p>
<p>
There are many ways access to the collection could be improved. It would be nice to sort by date. It would be nice to index the content and make the collection searchable. I have given thought to transforming the WaterML into FO (Formatting Objects) and feeding the FO to a PDF processor like FOP. This could give me a printed version of the collection complete with high resolution images. I could transform the WaterML into an XML file usable by Google Earth providing another way to view the collection. All of these things are &#8220;left up the reader for further study&#8221;. Software is never done, nor are library collections.
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/thumbnails/River-73.jpg" alt="River Lune" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=73">River Lune</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Roman-78.jpg" alt="Roman Bath" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=78">Roman Bath</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Ogle-65.jpg" alt="Ogle Lake" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=65">Ogle Lake</a></span>
</td>
</tr>
</table>
<p>
Finally, again, why do I do this? Why do I collect the water? Why have a spent so much time creating a system for providing access to the collection? Ironically, I am unable to answer succinctly. It has something to do with creativity. It has something to do with &#8220;<a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arsience</a>&#8220;. It has something to do with my passion for the library profession and my ability to manifest it through computers. It has something to do with the medium of my art. It has something to do with my desire to share and expand the sphere of knowledge. &#8220;Idea. To be an idea. To be an idea and an example to others&#8230; Idea&#8221;. I really don&#8217;t understand it through and through.
</p>
<p>
Read all the posts in this series:
</p>
<ol>
<li><a href="./../2009/09/water-1-of-3/index.html">The whys and hows of the water collection</a></li>
<li><a href="./../2009/09/water-2-of-3/index.html">How the collection is put on the Web</a></li>
<li>This post</li>
</ol>
<p>Visit the <a href="http://infomotions.com/water/index.xml">water collection</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Collecting water and putting it on the Web (Part II of III)</title>
		<link>./../2009/09/water-2-of-3/index.html</link>
				<comments>./../2009/09/water-2-of-3/index.html#comments</comments>
				<pubDate>Thu, 03 Sep 2009 14:25:16 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[water]]></category>

		<guid isPermaLink="false">./../index.html?p=375</guid>
				<description><![CDATA[This is Part II of an essay about my water collection, specifically the process of putting it on the Web. Part I describes the whys and hows of the collection. Part III is a summary, provides opportunities for future study, and links to the source code. Making the water available on the Web As a [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is Part II of an essay about my water collection, specifically the process of putting it on the Web. <a href="./../2009/09/water-1-of-3/index.html">Part I</a> describes the whys and hows of the collection. <a href="./../2009/09/water-3-of-3/index.html">Part III</a> is a summary, provides opportunities for future study, and links to the source code.
</p>
<h2>Making the water available on the Web</h2>
<p>
As a librarian, I am interested in providing access to my collection(s). As a librarian who has the ability to exploit the use of computers, I am especially interested in putting my collection(s) on the Web. Unfortunately, the process is not as easy as the actual collection process, and there have been a number of processes along the way. When I was really into HyperCard I created a &#8220;stack&#8221; complete with pictures of my water, short descriptions, and an automatic slide show feature that played the sound of running water in the background. (If somebody asks, I will dig up this dinosaur and make it available.) Later I created a Filemaker Pro database of the collection, but that wasn&#8217;t as cool as the HyperCard implementation.
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Mississippi-82.jpg" alt="Mississippi River" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=82">Mississippi River</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Mississippi-97.jpg" alt="Mississippi River" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=97">Mississippi River</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Mississippi-99.jpg" alt="Mississippi River" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=99">Mississippi River</a></span>
</td>
</tr>
</table>
<p>
The current implementation is more modern. It takes advantage of quite a number of technologies, including:
</p>
<ul>
<li>a relational database</li>
<li>a set of PHP scripts that do input/output against the database</li>
<li>an image processor to create thumbnail images</li>
<li>an XSL processor to generate a browsable Web presence</li>
<li>the Google Maps API to display content on a world map</li>
</ul>
<p>
The use of each of these technologies is described in the following sections.
</p>
<h3>Relational database</h3>
<table align="right">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/about/er-diagram.png" width="240" height="152"alt="ER diagram" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/about/er-diagram.png">ER diagram</a></span>
</td>
</tr>
</table>
<p>
Since 2002 I have been adding and maintaining newly acquired waters in a relational, MySQL, database. (Someday I hope to get the waters out of those cardboard boxes and add them to the database too. Someday.) The database itself is rather simple. Four tables: one for the waters, one for the collectors, a join table denoting who collected what, and a metadata table consisting of a single record describing the collection as a whole. The entity-relationship diagram illustrates the structure of the database in greater detail.
</p>
<p>
Probably the most interesting technical characteristic of the database is the image field of type mediumblob in the waters table. When it comes to digital libraries and database design, one of the perennial choices to make is where to save your content. Saving it outside your database makes your database smaller and more complicated but forces you to maintain links to your file system or the Internet where the actual content resides. This can be an ongoing maintenance nightmare and can side-step the preservation issues. On the other hand inserting your content inside the database allows you to keep your content all in once place while &#8220;marrying&#8221; it to up in your database application. Putting the content in the database also allows you to do raw database dumps making the content more portable and easier to back-up. I&#8217;ve designed digital library systems both ways. Each has its own strengths and weaknesses. This is one of the rarer times I&#8217;ve put the content into the database itself. Never have I solely relied on maintaining links to off-site content. Too risky. Instead I&#8217;ve more often mirrored content locally and maintained two links in the database: one to the local cache and another to the canonical website.
</p>
<h3>PHP scripts for database input/output</h3>
<p>
Sets of PHP scripts are used to create, maintain, and report against the waters database. Creating and maintaining database records is tedious but not difficult as long as you keep in mind that there are really only four things you need to do with any database: 1) create records, 2) find records, 3) edit records, and 4) delete records. All that is required is to implement each of these processes against each of the fields in each of the tables. Since PHP was designed for the Web, each of these processes is implemented as a Web page only accessible to myself. The following screen shots illustrate the appearance and functionality of the database maintenance process.
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/about/admin-home.png" width="156" height="99" alt="ER diagram" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/about/admin-home.png">Admin home</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/about/admin-waters.png" width="156" height="99" alt="ER diagram" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/about/admin-waters.png">Admin waters</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/about/edit-water.png" width="156" height="99" alt="ER diagram" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/about/edit-water.png">Edit water</a></span>
</td>
</tr>
</table>
<p>
High-level menus on the right. Sub-menus and data-entry forms in the middle. Simple. One of the nice things about writing applications for oneself is the fact that you don&#8217;t have to worry about usability, just functionality.
</p>
<p>
The really exciting stuff happens when the reports are written against the database. Both of them are XML files. The first is a essentially a database dump &#8212; water.xml &#8212; complete with the collection&#8217;s over-arching metadata record, each of the waters and their metadata, and a list of collectors. The heart of the report-writing process includes:
</p>
<ol>
<li>finding all of the records in the database</li>
<li>converting and saving each water&#8217;s image as a thumbnail</li>
<li>initializing the water record</li>
<li>finding all of the water&#8217;s collectors</li>
<li>adding each collector to the record</li>
<li>going to Step #5 for each collector</li>
<li>finishing the record</li>
<li>going to Step #2 for each water</li>
<li>saving the resulting XML to the file system</li>
</ol>
<p>
There are two hard parts about this process. The first, &#8220;MOGRIFY&#8221;, is a shelled out hack to the operating system using an ImageMagik utility to convert the content of the image field into a thumbnail image. Without this utility saving the image from the database to the file system would be problematic. Second, the SELECT statement used to find all the collectors associated with a particular water is a bit tricky. Not really to difficult, just a typical SQL join process. Good for learning relational database design. Below is a code snippet illustrating the heart of this report-writing process:
</p>
<pre><code>  # process every found row
  while ($r = mysql_fetch_array($rows)) {
  
    # get, define, save, and convert the image -- needs error checking
    $image     = stripslashes($r['image']);
    $leafname  = explode (' ' ,$r['name']);
    $leafname  = $leafname[0] . '-' . $r['water_id'] . '.jpg';
    $original  = ORIGINALS  . '/' . $leafname;
    $thumbnail = THUMBNAILS . '/' . $leafname;
    writeReport($original, $image);
    copy($original, $thumbnail);
    system(MOGRIFY . $thumbnail);
          
    # initialize and build a water record
    $report .= '&lt;water&gt;';
    $report .= "&lt;name water_id='$r[water_id]' lat='$r[lat]' lng='$r[lng]'&gt;" . 
               prepareString($r['name']) . '&lt;/name&gt;';
    $report .= '&lt;date_collected&gt;';
    $report .= "&lt;year&gt;$r[year]&lt;/year&gt;";
    $report .= "&lt;month&gt;$r[month]&lt;/month&gt;";
    $report .= "&lt;day&gt;$r[day]&lt;/day&gt;";
    $report .= '&lt;/date_collected&gt;';
    
    # find all the COLLECTORS associated with this water, and...
    $sql = "SELECT c.*
            FROM waters AS w, collectors AS c, items_for_collectors AS i
            WHERE w.water_id   = i.water_id
            AND c.collector_id = i.collector_id
            AND w.water_id     = $r[water_id]
            ORDER BY c.last_name, c.first_name";
    $all_collectors = mysql_db_query ($gDatabase, $sql);
    checkResults();
    
    # ...process each one of them
    $report .= "&lt;collectors&gt;";
    while ($c = mysql_fetch_array($all_collectors)) {
    
      $report .= "&lt;collector collector_id='$c[collector_id]'&gt;&lt;first_name&gt;
                 $c[first_name]&lt;/first_name&gt;
                 &lt;last_name&gt;$c[last_name]&lt;/last_name&gt;&lt;/collector&gt;";
      
    }
    $report .= '&lt;/collectors&gt;';
    
    # finish the record
    $report .= '&lt;description&gt;' . stripslashes($r['description']) . 
               '&lt;/description&gt;&lt;/water&gt;';
  
  }
</code></pre>
<p>
The result is the following &#8220;WaterML&#8221; XML content &#8212; a complete description of a water, in this case water from Copenhagen:
</p>
<pre><code>  &lt;water&gt;
    &lt;name water_id='87' lat='55.6889' lng='12.5951'&gt;Canal
      surrounding Kastellet, Copenhagen, Denmark
    &lt;/name&gt;
    &lt;date_collected&gt;
      &lt;year&gt;2007&lt;/year&gt;
      &lt;month&gt;8&lt;/month&gt;
      &lt;day&gt;31&lt;/day&gt;
    &lt;/date_collected&gt;
    &lt;collectors&gt;
      &lt;collector collector_id='5'&gt;
        &lt;first_name&gt;Eric&lt;/first_name&gt;
        &lt;last_name&gt;Morgan&lt;/last_name&gt;
    &lt;/collector&gt;
    &lt;/collectors&gt;
    &lt;description&gt;I had the opportunity to participate in the
      Ticer Digital Library School in Tilburg, The Netherlands.
      While I was there I also had the opportunity to visit the
      folks at 
      &lt;a href="http://indexdata.com/"&gt;Index Data&lt;/a&gt;, a company
      that writes and supports open source software for libraries.
      After my visit I toured around Copenhagen very quickly. I
      made it to the castle (Kastellet), but my camera had run out
      of batteries. The entire Tilburg, Copenhagen, Amsterdam
      adventure was quite informative.
    &lt;/description&gt;
  &lt;/water&gt;</code></pre>
<p>
When I first created this version of the water collection RSS was just coming on line. Consequently I wrote an RSS feed for the water, but then I got realistic. How many people want to get an RSS feed of my water. Crazy?!
</p>
<h3>XSL processing</h3>
<p>
Now that the XML file has been created an the images are saved to the file system, the next step is to make a browser-based interface. This is done though an XSLT style sheet and XSL processor called Apache2::TomKit.
</p>
<p>
Apache2::TomKit is probably the most eclectic component of my online water collection application. Designed to be a replacement for another XSL processor called AxKit, Apache2::TomKit enables the developer to create CGI-like applications, complete with HTTP GET parameters, in the form of XML/XSLT combinations. Specify the location of your XML files. Denote what XSLT files to use. Configure what XSLT processor to use. (I use LibXSLT.) Define an optional cache location. Done. The result is on-the-fly XSL transformations that work just like CGI scripts. The hard part is writing the XSLT.
</p>
<p>
The logic of my XSLT style sheet &#8212; waters.xsl &#8212; goes like this:
</p>
<ol>
<li><strong>Get input</strong> &#8211; There are two: cmd and id. Cmd is used to denote the desired display function. Id is used to denote which water to display</li>
<li><strong>Initialize output</strong> &#8211; This is pretty standard stuff. Display XHTML head elements and start the body.</li>
<li><strong>Branch</strong> &#8211; Depending on the value of cmd, display the home page, a collectors page, all the images, all the waters, or a specific water.</li>
<li><strong>Display the content</strong> &#8211; This is done with the thorough use of XPath expressions.</li>
<li><strong>Done</strong> &#8211; Complete the XHTML with a standard footer.</li>
</ol>
<p>
Of all the XSLT style sheets I&#8217;ve written in my career, waters.xsl is definitely the most declarative in nature. This is probably because the waters.xml file is really data driven as opposed mixed content. The XSLT file is very elegant but challenging for the typical Perl or PHP hacker to quickly grasp.
</p>
<p>
Once the integration of the XML file, the XSLT style sheet, and Apache2::TomKit is complete, I was able to design URL&#8217;s such as the following:
</p>
<ul>
<li><a href="http://infomotions.com/water/index.xml?cmd=getwaters">index.xml?cmd=getwaters</a> &#8211; list all waters</li>
<li><a href="http://infomotions.com/water/index.xml?cmd=getcollectors">index.xml?cmd=getcollectors</a> &#8211; list all collectors</li>
<li><a href="http://infomotions.com/water/index.xml?cmd=getimages">index.xml?cmd=getimages</a> &#8211; dump all water thumbnail images</li>
<li><a href="http://infomotions.com/water/index.xml?cmd=getwater&amp;id=79">index.xml?cmd=getwater&#038;id=79</a> &#8211; display a specific water</li>
<li><a href="http://infomotions.com/water/index.xml?cmd=getcollector&amp;id=20">index.xml?cmd=getcollector&#038;id=20</a> &#8211; display a specific collector and their waters</li>
</ul>
<p>
Okay. So its not very REST-ful; the URLs are not very &#8220;cool&#8221;. Sue me. I originally designed this in 2002.
</p>
<h3>Waters and Google Maps</h3>
<p>
In 2006 I used my water collection to create my first mash-up. It combined latitudes and longitudes with the Google Maps API.
</p>
<p>
Inserting maps into your Web pages via the Google API is a three-step process: 1) create an XML file containing latitudes and longitudes, 2) insert a call to the Google Maps javascript into the head of your HTML, and 3) call the javascript from within the body of your HTML.
</p>
<p>
For me, all I had to do was: 1) create new fields in my database for latitudes and longitudes, 2) go through each record in the database doing latitude and longitude data-entry, 3) write a WaterML file, 4) write an XSLT file transforming the WaterML into an XML file expected of Google Maps, 5) write a CGI script that takes latitudes and longitudes as input, 6) display a map, and 7) create links from my browser-based interface to the maps.
</p>
<p>
It may sound like a lot of steps, but it is all very logical, and taken bit by bit is relatively easy. Consequently, I am able to display a world map complete with pointers to all of my water. Conversely, I am able to display a water record and link its location to a map. The following two screen dumps illustrate the idea, and I try to get as close to the actual collection point as possible:
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/about/world-map.png" width="156" height="99" alt="ER diagram" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/map/">World map</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/about/single-water.png" width="156" height="99" alt="ER diagram" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/map/?lat=38.8815&#038;lng=-77.0408">Single water</a></span>
</td>
</tr>
</table>
<p>
Read all the posts in this series:
</p>
<ol>
<li><a href="./../2009/09/water-1-of-3/index.html">The whys and hows of the water collection</a></li>
<li>This post</li>
<li><a href="./../2009/09/water-3-of-3/index.html">A summary, future directions, and source code</a></li>
</ol>
<p>Visit the <a href="http://infomotions.com/water/index.xml">water collection</a>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/09/water-2-of-3/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Collecting water and putting it on the Web (Part I of III)</title>
		<link>./../2009/09/water-1-of-3/index.html</link>
				<comments>./../2009/09/water-1-of-3/index.html#comments</comments>
				<pubDate>Thu, 03 Sep 2009 11:23:29 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[water]]></category>

		<guid isPermaLink="false">./../index.html?p=370</guid>
				<description><![CDATA[This is Part I of an essay about my water collection, specifically the whys and hows of it. Part II describes the process of putting the collection on the Web. Part III is a summary, provides opportunities for future study, and links to the source code. I collect water It may sound strange, but I [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is Part I of an essay about my water collection, specifically the whys and hows of it. <a href="./../2009/09/water-2-of-3/index.html">Part II</a> describes the process of putting the collection on the Web. <a href="./../2009/09/water-3-of-3/index.html">Part III</a> is a summary, provides opportunities for future study, and links to the source code.
</p>
<h3>I collect water</h3>
<p>
It may sound strange, but I have been collecting water since 1978, and to date I believe I have around 200 bottles containing water from all over the world. Most of the water I&#8217;ve collected myself, but much of it has also been collected by friends and relatives.
</p>
<p>
The collection began the summer after I graduated from high school. One of my best friends, Marlin Miller, decided to take me to Ocean City (Maryland) since I had never seen the ocean. We arrived around 2:30 in the morning, and my first impression was the sound. I didn&#8217;t see the ocean. I just heard it, and it was loud. The next day I purchased a partially melted glass bottle for 59¢ and put some water, sand, and air inside. I was going keep some of the ocean so I could experience it anytime I desired. (Actually, I believe my first water is/was from the Pacific Ocean, collected by a girl named Cindy Bleacher. She visited there in the late Spring of &#8217;78, and I asked her to bring some back so I could see it too. She did.) That is how the collection got started.
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Cape-92.jpg" alt="Cape Cod Bay" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=92">Cape Cod Bay</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Caribbiean-58.jpg" alt="Robins Bay" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=58">Robins Bay</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Gulf-55.jpg" alt="Gulf of Mexico" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=55">Gulf of Mexico</a></span>
</td>
</tr>
</table>
<p>
The impetus behind the collection was reinforced in college &#8212; Bethany College (Bethany, WV). As a philosophy major I learned about the history of Western ideas. That included Heraclitus who believed the only constant was change, and water was the essencial element of the universe. These ideas were elaborated upon by other philosophers who thought there was not one essencial element, but four: earth, water, air, and fire. I felt like I was on to something, and whenever I heard of somebody going abroad I asked them bring me back some water. Burton Thurston, a Bethany professor, went to the Middle East on a diplomatic mission. He brought back Nile River water and water from the Red Sea. I could almost see Moses floating in his basket and escaping from the Egyptians.
</p>
<p>
The collection grew significantly in the Fall of 1982 because I went to Europe. During college many of my friends studied abroad. They didn&#8217;t do much studying as much as they did traveling. They were seeing and experiencing all of the things I was learning about through books. Great art. Great architecture. Cities whose histories go back millennia. Foreign languages, cultures, and foods. I wanted to see those things too. I wanted to make real the things I learned about in college. I saved my money from my summer peach picking job. My father cashed in a life insurance policy he had taken out on me when I was three weeks old. Living like a turtle with its house on its back, I did the back-packing thing across Europe for a mere six weeks. Along the way I collected water from the Seine at Notre Dame (Paris), the Thames (London), the Eiger Mountain (near Interlaken, Switzerland) where I almost died, the Agean Sea (Ios, Greece), and many other places. My Mediterranean Sea water from Nice is the prettiest. Because of the all the alge, the water from Venice is/was the most biologically active.
</p>
<p>
Over the subsequent years the collection has grown at a slower but regular pace. Atlantic Ocean (Myrtle Beach, South Carolina) on a day of playing hooky from work. A pond at Versailles while on my honeymoon. Holy water from the River Ganges (India). Water from Lock Ness. I&#8217;m going to grow a monster from DNA contained therein. I used to have some of a glacier from the Canadian Rockies, but it melted. I have water from Three Mile Island (Pennsylvania). It glows in the dark. Amazon River water from Peru. Water from the Missouri River where Lewis &#038; Clarke decided it began. Etc.
</p>
<p>
Many of these waters I haven&#8217;t seen in years. Moves from one home to another have relegated them to cardboard boxes that have never been unpacked. Most assuredly some of the bottles have broken and some of the water has evaporated. Such is the life of a water collection.
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Lake-94.jpg" alt="Lake Huron" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=94">Lake Huron</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Fountain-80.jpg" alt="Trg Bana Jelacica" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=80">Trg Bana Jelacica</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Jimmy-69.jpg" alt="Jimmy Carter Water" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=69">Jimmy Carter Water</a></span>
</td>
</tr>
</table>
<p>
Why do I collect water? I&#8217;m not quite sure. The whole body of water is the second largest thing I know. The first being the sky. Yet the natural bodies of water around the globe are finite. It would be possible to collect water from everywhere, but very difficult. Maybe I like the challenge. Collecting water is cheap, and every place has it. Water makes a great souvenir, and the collection process helps strengthen my memories. When other people collect water for me it builds between us a special relationship &#8212; a bond. That feels good.
</p>
<p>
What do I do with the water? Nothing. It just sits around my house occupying space. In my office and in the cardboard boxes in the basement. I would like to display it, but over all the bottles aren&#8217;t very pretty, and they gather dust easily. I sometimes ponder the idea of re-bottling the water into tiny vials and selling it at very expensive prices, but in the process the air would escape, and the item would lose its value. Other times I imagine pouring the water into a tub and taking a bath it it. How many people could say they bathed in the Nile River, Amazon River, Pacific Ocean, Atlantic Ocean, etc. all at the same time.
</p>
<h3>How water is collected</h3>
<p>
The actual process of collecting water is almost trivial. Here&#8217;s how:
</p>
<ol>
<li><strong>Travel someplace new and different</strong> &#8211; The world is your oyster.</li>
<li><strong>Identify a body of water</strong> &#8211; This should be endemic of the locality such as an ocean, sea, lake, pond, river, stream, or even a public fountain. Natural bodies of water a preferable. Processed water is not.</li>
<li><strong>Find a bottle</strong> &#8211; In earlier years this was difficult, and I usually purchased a bottle of wine with my meal, kept the bottle and cork, and used the combination as my container. Now-a-days it is easier to root round in a trash can for a used water bottle. They&#8217;re ubiquitous, and they too are often endemic of the locality.</li>
<li><strong>Collect the water</strong> &#8211; Just fill the bottle with mostly water but some of what the water is flowing over as well. The air comes along for the ride.</li>
<li><strong>Take a photograph</strong> &#8211; Hold the bottle at arm&#8217;s length and take a picture it. What you are really doing here is two-fold. Documenting the appearance of the bottle but also documenting the authenticity of the place. The picture&#8217;s background supports the fact that water really came from where the collector says.</li>
<li><strong>Label the bottle</strong> &#8211; On a small piece of paper write the name of the body of water, where it came from, who collected it, and when. Anything else is extra.</li>
<li><strong>Save</strong> &#8211; Keep the water around for posterity, but getting it home is sometimes a challenge. With the advent of 911 it is difficult to get the water through airport security and/or customs. I have recently found myself checking my bags and incurring a handling fee just to bring my water home. Collecting water is not as cheap as it used to be.</li>
</ol>
<p>
Who can collect water for me? Not just anybody. I have to know you. Don&#8217;t take it personally, but remember, part of the goal is relationship building. Moreover, getting water from strangers would jeopardize the collection&#8217;s authenticity. Is this really the water they say it is? Call it a weird part of the &#8220;collection development policy&#8221;.
</p>
<table align="center">
<tr valign="top">
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Pacific-52.jpg" alt="Pacific Ocean" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=52">Pacific Ocean</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Rock-76.jpg" alt="Rock Run" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=76">Rock Run</a></span>
</td>
<td align="center">
<img src="http://infomotions.com/water/thumbnails/Salton-54.jpg" alt="Salton Sea" /><br /><span style='font-size: small'><a href="http://infomotions.com/water/index.xml?cmd=getwater&#038;id=54">Salton Sea</a></span>
</td>
</tr>
</table>
<p>
Read all the posts in this series:
</p>
<ol>
<li>This post</li>
<li><a href="./../2009/09/water-2-of-3/index.html">How the collection is put on the Web</a></li>
<li><a href="./../2009/09/water-3-of-3/index.html">A summary, future directions, and source code</a></li>
</ol>
<p>Visit the <a href="http://infomotions.com/water/index.xml">water collection</a>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/09/water-1-of-3/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Web-scale discovery services</title>
		<link>./../2009/08/web-scale-discovery-services/index.html</link>
				<comments>./../2009/08/web-scale-discovery-services/index.html#comments</comments>
				<pubDate>Thu, 27 Aug 2009 14:25:32 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[Web-scale discovery services]]></category>

		<guid isPermaLink="false">./../index.html?p=363</guid>
				<description><![CDATA[Last week (Tuesday, August 18) Marshall Breeding and I participated in a webcast sponsored by Serials Solutions and Library Journal on the topic of &#8220;&#8216;Web-scale&#8217; discovery services&#8221;. Our presentations complimented one another in that we both described the current library technology environment and described how the creation of amalgamated indexes of book and journal article [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Last week (Tuesday, August 18) Marshall Breeding and I participated in a webcast sponsored by Serials Solutions and <i>Library Journal</i> on the topic of &#8220;&#8216;Web-scale&#8217; discovery services&#8221;.</p>
<p>Our presentations complimented one another in that we both described the current library technology environment and described how the creation of amalgamated indexes of book and journal article content have the potential to improve access to library materials.</p>
<p>Dodie Ownes summarized the event in an <a href="http://www.libraryjournal.com/article/CA6685531.html">article for <i>Library Journal</i></a>. From there you can also gain access to an  <a href="http://tinyurl.com/nwf6k5"> archive of the one-hour webcast</a>. (Free registration required.) I have made <a href="http://www.library.nd.edu/daiad/morgan/musings/web-scale/">my written remarks</a> available on the Hesburgh Libraries website as well as <a href="http://infomotions.com/musings/web-scale/"> mirrored them locally</a>. From the remarks:</p>
<blockquote>
<p>It is quite possible the do-it-yourself creation and maintenance of an index to local book holdings, institutional repository content, and articles/etexts is not feasible. This may be true for any number of reasons. You may not have the full complement of resources to allocate, whether that be time, money, people, or skills. You and your library may have a set of priorities forcing the do-it-yourself approach lower on the to-do list. You might find yourself stuck in never-ending legal negotiations for content from &#8220;closed&#8221; access providers. You might liken the process of normalizing myriads of data formats into a single index to Hercules cleaning the Augean stables.</p>
<table align="center">
<tr valign="top">
<td align="center"><img src="http://infomotions.com/gallery/driving/Thumbs/photographer_at_work_1.jpg" alt="technical expertise" /><br /><span class="caption"> <a href="http://infomotions.com/gallery/driving/Pages/photographer_at_work_1.shtml">technical expertise</a> </span></td>
<td align="center"><img src="http://infomotions.com/gallery/brown-county/Thumbs/DSCN3324.jpg" alt="money" /><br /><span class="caption"> <a href="http://infomotions.com/gallery/brown-county/Pages/DSCN3324.shtml">money</a> </span></td>
</tr>
<tr>
<td align="center"><img src="http://infomotions.com/gallery/montreal/Thumbs/DSCN8334.jpg" alt="people with vision" /><br /><span class="caption"> <a href="http://infomotions.com/gallery/montreal/Pages/DSCN8334.shtml">people with vision</a> </span></td>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2907.jpg" alt="energy" /><br /><span class="caption"> <a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2907.shtml">energy</a> </span></td>
</tr>
</table>
<p>If this be the case, then the purchasing (read, &#8220;licensing&#8221;) of a single index service might be the next best thing &#8212; Plan B.</p>
</blockquote>
<p>I sincerely believe the creation of these &#8220;Web-scale&#8221; indexes is a step in the right direction, but I believe just as strongly that the problem to be solved now-a-days does not revolve around search and discovery, but rather use and context.</p>
<p>&#8220;Thank you Serials Solutions and Library Journal for the opportunity to share some of my ideas.&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/08/web-scale-discovery-services/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>How to make a book (#1 of 3)</title>
		<link>./../2009/08/how-to-make-a-book-1-of-3/index.html</link>
				<comments>./../2009/08/how-to-make-a-book-1-of-3/index.html#comments</comments>
				<pubDate>Sun, 23 Aug 2009 21:13:55 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[book-binding]]></category>

		<guid isPermaLink="false">./../index.html?p=360</guid>
				<description><![CDATA[This is a series of posts where I will describe and illustrate how to make books. In this first post I will show you how to make a book with a thermo-binding machine. In the second post I will demonstrate how to make a book by simply tearing and folding paper. In the third installment, [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is a series of posts where I will describe and illustrate how to make books. In this first post I will show you how to make a book with a thermo-binding machine. In the second post I will demonstrate <a href="./../2010/01/how-to-make-a-book-2-of-3/index.html">how to make a book by simply tearing and folding paper</a>. In the third installment, I will make a traditional book with a traditional cover and binding. The book &#8212; or more formally, the codex &#8212; is a pretty useful format for containing information.
</p>
<h3>Fellowes TB 250 thermo-binding machine</h3>
<p>
The number of full text books found on the Web is increasing at a dramatic pace. A very large number of these books are in the public domain and freely available for downloading. While computers make it easy to pick through smaller parts of books, it is diffcult to read and understand them without printing. Once they are printed you are then empowered to write in the margins, annotate them as you see fit, and share them with your friends. On the other hand, reams of unbound paper is difficult to handle. What to do?
</p>
<table align='right' padding='10'>
<tr>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=office-products&#038;search=B00061R1O6&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe>
</td>
</tr>
</table>
<p>
Enter a binding machine, specifically a thermo-binding machine like the <a href="http://www.amazon.com/dp/B00061R1O6?tag=infomotions-20&#038;camp=15309&#038;creative=331441&#038;linkCode=st1&#038;creativeASIN=B00061R1O6&#038;adid=1FP8RKK420BNGVC6XEM9">Fellowes TB 250</a>. This handy-dandy gizmo allows you to print bunches o&#8217; stuff, encase it in inexpensive covers, and bind it into books. Below is an outline of the binding process and a <a href="http://www.youtube.com/watch?v=ivYcsh6SG-I">video demonstration</a> is also available online:
</p>
<ol>
<li><strong>Buy the hardware</strong> &#8211; The machine costs less than $100 and available from any number of places on the Web. Be sure to purchase covers in a variety of sizes.</li>
<li><strong>Print and gather your papers</strong> &#8211; Be sure to &#8220;jog&#8221; your paper nice and neatly.</li>
<li><strong>Turn the machine on</strong> &#8211; This makes the heating element hot.</li>
<li><strong>Place the paper into the cover</strong> &#8211; The inside of each cover&#8217;s spine is a ribbon of glue. Make sure the paper is touching the glue.</li>
<li><strong>Place the book into the binder</strong> &#8211; This melts the glue.</li>
<li><strong>Remove the book, and press the glue</strong> &#8211; The larger the book the more important it is to push the adhesive into the pages.</li>
<li><strong>Go to Step #5, at least once</strong> &#8211; This makes the pages more secure in the cover.</li>
<li><strong>Remove, and let cool</strong> &#8211; The glue is hot. Let it set.</li>
<li><strong>Enjoy your book</strong> &#8211; This is the fun part. Read and scribble in your book to your heart&#8217;s content.</li>
</ol>
<p style='text-align: center'><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ivYcsh6SG-I&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ivYcsh6SG-I&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<h3>Binding and the Alex Catalogue</h3>
<p>
The <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> is a collection of fulltext books brought together for the purposes of furthering a person&#8217;s liberal arts eduction. While it supports tools for finding, analyzing, and comparing texts, the items are intended to be read in book form as well. Consider printing and binding the PDF or fully transcribed versions of the texts. Your learning will be much more thorough, and you will be able to do more &#8220;active&#8221; reading.
</p>
<h3>Binding and libraries</h3>
<p>
Binding machines are cheap, and they facilitate a person&#8217;s learning by enabling users to organize their content. Maybe providing a binding service for library patrons is apropos? Make it easy for people to print things they find in a library. Make it easy for them to use some sort of binding machine. Enable them to take more control over the stuff of their learning, teaching, and research. It certainly sounds like good idea to me. After all, in this day and age, libraries aren&#8217;t so much about providing access to information as they are about making information more useful. Binding &#8212; books on demand &#8212; is just one example.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/08/how-to-make-a-book-1-of-3/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Book review of Larry McMurtry&#8217;s Books</title>
		<link>./../2009/08/book-review-of-larry-mcmurtrys-books/index.html</link>
				<comments>./../2009/08/book-review-of-larry-mcmurtrys-books/index.html#comments</comments>
				<pubDate>Sun, 23 Aug 2009 14:01:15 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">./../index.html?p=356</guid>
				<description><![CDATA[I read with interest Larry McMurtry&#8217;s Books: A Memoir (Simon &#038; Schuster, 2008), but from my point of view, I would be lying if I said I thought the book had very much to offer. The book&#8217;s 259 pages are divided into 109 chapters. I was able to read the whole thing in six or [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<table align='right' padding='10'>
<tr>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=1416583343&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe></td>
</tr>
</table>
<p>
I read with interest <a href="http://www.amazon.com/dp/1416583343?tag=infomotions-20&#038;camp=15309&#038;creative=331441&#038;linkCode=st1&#038;creativeASIN=1416583343&#038;adid=1T94616XH2WMVS23T7CK">Larry McMurtry&#8217;s <cite>Books: A Memoir</cite> (Simon &#038; Schuster, 2008)</a>, but from my point of view, I would be lying if I said I thought the book had very much to offer.
</p>
<p>
The book&#8217;s 259 pages are divided into 109 chapters. I was able to read the whole thing in six or seven sittings. It is an easy read, but only because the book doesn&#8217;t say very much. I found the stories rarely engaging and never very deep. They were full of obscure book titles and the names of &#8220;famous&#8221; book dealers.
</p>
<p>
Much of this should not be a surprise, since the book is about one person&#8217;s fascination with books as objects, not books as containers of information and knowledge. From page 38 of my edition:
</p>
<blockquote><p>
Most young dealers of the Silicon Chip Era regard a reference library as merely a waste of space. Old-timers on the West Coast, such as Peter Howard of Serendipity Books in Berkeley or Lou and Ben Weinstein of the (recently closed) Heritage Books Shop in Los Angeles, seem to retain a fondness of reference books that goes beyond the practical. Everything there is to know about a given volume may be only a click away, but there are still a few of us who&#8217;d rather have the book than the click. A bookman&#8217;s love of books is a love of books, not merely the information in them.
</p></blockquote>
<p>
Herein lies the root of my real problem with the book, it shares with the reader one person&#8217;s chronology of a love of books and book selling. It describes various used bookstores and give you an idea of what it is like to be a book dealer. Unfortunately, I believe McMurtry misses the point about books. They are essentially a means to an end. A tool. A medium for the exchange of ideas. The ideas they contain and the way they contain them are the important thing. There are advantages &#038; disadvantages to the book as a technology, and these advantages &#038; disadvantages ought not be revered or exaggerated to dismiss the use of books or computers.
</p>
<p>
I also think McMurtry&#8217;s perception of libraries, which seems to be commonly held in and outside my profession, points to one of librarianship&#8217;s pressing issues. From page 221:
</p>
<blockquote><p>
But they [computers] don&#8217;t really do what books do, and why should they usurp the chief function of a public library, which is to provide readers access to books? Books can accommodate the proximity of computers but it doesn&#8217;t seem to work the other way around. Computers now literally drive out books from the place they should, by definition, be books&#8217; own home: the library.
</p></blockquote>
<p>
Is the chief function of a public library to provide readers access to books? Are libraries defined as the &#8220;home&#8221; of books? Such a perception may have been more or less true in an environment where data, information, and knowledge were physically manifested, but in an environment where the access to information is increasingly digital the book as a thing is not as important. Books are not central to the problems to be solved.
</p>
<p>
Can computers do what books do? Yes and no. Computers can provide access to information. They make it easier to &#8220;slice and dice&#8221; their content. They make it easier to disseminate content. They make information more findable. The information therein is trivial to duplicate. On the other hand, books require very little technology. They are relatively independent of other technologies, and therefore they are much more portable. Books are easy to annotate. Just write on the text or scribble in the margin. A person can browse the contents of a book much faster than the contents of electronic text. Moreover, books are owned by their keepers, not licensed, which is increasingly the case with digitized material. There are advantages &#038; disadvantages to both computers and books. One is not necessarily better than the other. Each has their place.
</p>
<p>
As a librarian, I had trouble with the perspectives of <a href="http://www.amazon.com/dp/1416583343?tag=infomotions-20&#038;camp=15309&#038;creative=331441&#038;linkCode=st1&#038;creativeASIN=1416583343&#038;adid=1T94616XH2WMVS23T7CK"">Larry McMurtry&#8217;s <cite>Books: A Memoir</cite></a>. It may be illustrative of the perspectives of book dealers, book sellers, etc., but I think the perspective misses the point. It is not so much about the book as much as it is about what the book contains and how those contents can be used. In this day and age, access to data and information abounds. This is a place where libraries increasingly have little to offer because libraries have historically played the role of middleman. Producers of information can provide direct access to their content much more efficiently than libraries. Consequently a different path for libraries needs to be explored. What does that path look like? Well, I certainly have ideas about that one, but that is a different essay.
</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2009/08/book-review-of-larry-mcmurtrys-books/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Browsing the Alex Catalogue</title>
		<link>./../2009/08/browsing-the-alex-catalogue/index.html</link>
				<pubDate>Sat, 22 Aug 2009 01:51:44 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[browsability]]></category>

		<guid isPermaLink="false">./../index.html?p=352</guid>
				<description><![CDATA[The Alex Catalogue is browsable by author names, subject tags, and titles. Just select a browsable list, then a letter, and finally an item. Browsability is an important feature of any library catalog. It gives you an opportunity to see what the collection contains without entering a query. It is also possible to use browsability [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
The <a href="http://infomotions.com/alex/">Alex Catalogue</a> is browsable by author names, subject tags, and titles. Just select a browsable list, then a letter, and finally an item.
</p>
<p>
Browsability is an important feature of any library catalog. It gives you an opportunity to see what the collection contains without entering a query. It is also possible to use browsability to identify similar names, terms, or titles. &#8220;Oh look, I hadn&#8217;t thought of that idea, and look at the alternative spellings I can use.&#8221;
</p>
<p>
Creating the browsable list is rather trivial. Since all of the underlying content is saved in a relational database, it is rather easy to loop through the fields of &#8220;controlled&#8221; vocabulary terms and &#8220;authority&#8221; lists to identify matching etext titles. These lists include:
</p>
<ul>
<li><a href="http://infomotions.com/alex/?cmd=names">names of authors (creators) and editors (contributors)</a></li>
<li><a href="http://infomotions.com/alex/?cmd=titles">titles of works</a></li>
<li><a href="http://infomotions.com/alex/?cmd=tags">computer-generated subject tags</a></li>
</ul>
<p>
The later is probably the most interesting since it gives you an idea of the most common words and two-word phrases used in the corpus. For example, look at the <a href="http://infomotions.com/alex/?cmd=tags&#038;ltr=K">list of words starting with the letter &#8220;k&#8221;</a> and all the ways the word &#8220;kant&#8221; has been extracted from collection</p>
]]></content:encoded>
										</item>
		<item>
		<title>Indexing and searching the Alex Catalogue</title>
		<link>./../2009/08/indexing-and-searching-the-alex-catalogue/index.html</link>
				<pubDate>Tue, 18 Aug 2009 01:23:59 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[searching]]></category>

		<guid isPermaLink="false">./../index.html?p=346</guid>
				<description><![CDATA[The Alex Catalogue of Electronic Texts uses state-of-the-art software to index both the metadata and full text of its content. While the interface accepts complex Boolean queries, it is easier to enter a single word, a number of words, or a phrase. The underlying software will interpret what you enter and do much of hard [&#8230;]]]></description>
								<content:encoded><![CDATA[
<p>The <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> uses state-of-the-art software to index both the metadata and full text of its content. While the interface accepts complex Boolean queries, it is easier to enter a single word, a number of words, or a phrase. The underlying software will interpret what you enter and do much of hard query syntax work for you.</p>
<h3>Indexing</h3>
<p>The Catalogue consists of a number of different types of content harvested from different repositories. Most of the content is in the form of electronic texts (&#8220;etexts&#8221; as opposed to &#8220;ebooks&#8221;). Think Project Gutenberg, but also items from a defunct gopher archive from Virginia Tech, and more recently digitized materials from the Internet Archive. All of these items benefit from metadata and full text indexing. In other words, things like title words, author names, and computer-generated subject tags are made searchable as well as the full texts of the items.</p>
<p>The collection is supplemented with additional materials such as open access journal titles, open access journal article titles, some content from the HaitiTrust, as well as photographs taken by myself. Presently the full text of these secondary items is not included, just metadata: titles, authors, notes, and subjects. Search results return pointers to the full texts.</p>
<p>Regardless of content type, all metadata and full text is managed in an underlying <a href="http://search.cpan.org/dist/MyLibrary/">MyLibrary</a> database. To make the content searchable reports are written against the database and fed to <a href="http://lucene.apache.org/solr/">Solr/Lucene</a> for indexing. The Solr/Lucene data structure is rather simple consisting only of a number of Dublin Core-like fields, a default search field, and three facets (creator, subject/tag, and sub-collection). From a 30,000 foot view, this is the process used to index the content of the Catalogue:</p>
<ol>
<li>extract metadata and full text records from the database</li>
<li>map each record&#8217;s fields to the Solr/Lucene data structure</li>
<li>insert each record into Solr/Lucene; index the record</li>
<li>go to Step #1 until all records have been indexed</li>
<li>optimize the index for faster retrieval</li>
</ol>
<p>Solr/Lucene works pretty well, and interfacing with it was made much simpler through the use of a set of Perl modules called <a href="./../2009/01/fun-with-webservicesolr-part-i-of-iii/index.html">WebService::Solr</a>. On the other hand, there are many ways the index could be improved such as implementing facilitates for sorting and adding weights to various fields. An indexer&#8217;s work is never done.</p>
<h3>Searching</h3>
<p>Because of people&#8217;s expectations, searching the index is a bit more complicated and not as straight-forward, but only because the interface is trying to do you some favors.</p>
<p>Solr/Lucene supports single-word, multiple-word, and phrase searches through the use of single or double quote marks. If multi-word queries are entered without Boolean operators, then a Boolean and is assumed.</p>
<p>Since people often enter multiple-word queries, and it is difficult to know whether or not they are really wanting to do a phrase search, the Alex Catalogue converts ambiguous multiple-word queries into more robust Boolean queries. For example a search for &#8220;william shakespeare&#8221; (sans the quote marks) will get converted into &#8220;(william AND shakespeare) OR &#8216;william shakespeare'&#8221; (again, sans the double quote marks) on behalf of the user. This is considered a feature of the Catalogue.</p>
<p>To some degree Solr/Lucene tokenizes query terms, and consequently searches for &#8220;book&#8221; and &#8220;books&#8221; return the same number of hits.</p>
<p>Search results are returned in a relevance ranked order. Some time in the future there will be the option of sorting results by date, author, title, and/or a couple of other criteria. Unlike other catalogs, Alex only has a single display &#8212; search results. There is no intermediary detailed display; the Catalogue only displays search results or the full text of the item.</p>
<p>In the hopes of making it easier for the user to refine their search, the results page allows the user to automatically turn queries into subject, author, or title searches. It takes advantage of a thesaurus (<a href="http://wordnet.princeton.edu/">WordNet</a>) to suggest alternative queries. The system returns &#8220;facets&#8221; (author names, subject tags, or material types) allowing the user to limit their query with additional terms and narrow search results. The process is not perfect and there are always ways of improving the interface. Usability is never done either.</p>
<h2>Summary</h2>
<p>Do not try to out think the Alex Catalogue. Enter a word or two. Refine your query using the links on the resulting page. Read &amp; enjoy the discovered texts. Repeat.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Microsoft Surface at Ball State</title>
		<link>./../2009/08/microsoft-surface-at-ball-state/index.html</link>
				<pubDate>Fri, 14 Aug 2009 19:17:21 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>

		<guid isPermaLink="false">./../index.html?p=338</guid>
				<description><![CDATA[Me and a number of colleagues from the University of Notre Dame visited folks from Ball State University and Ohio State University to see, touch, and discuss all things Microsoft Surface. There were plenty of demonstrations surrounding music, photos, and page turners. The folks of Ball State were finishing up applications for the dedication of [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Me and a number of colleagues from the University of Notre Dame visited folks from Ball State University and Ohio State University to see, touch, and discuss all things Microsoft Surface.</p>
<p style='text-align: center'><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/L2HvKczRl_Y&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/L2HvKczRl_Y&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>There were plenty of demonstrations surrounding music, photos, and page turners. The folks of Ball State were finishing up applications for the dedication of the new &#8220;information commons&#8221;. These applications included an exhibit of orchid photos and an interactive map. Move the scroll bar. Get a differnt map based on time. Tap locations. See pictures of buildings. What was really interesting about the later was the way it pulled photographs from the library&#8217;s digital repository through sets of Web services. A very nice piece of work. Innovative and interesting. They really took advantage of the technology as well as figured out ways to reuse and repurpose library content. They are truly practicing digital librarianship.</p>
<p>The information commons was nothing to sneeze at either. Plenty of television cameras, video screens, and multi-national news feeds. Just right for a school with a focus on broadcasting.</p>
<p>Ball State University. Hmm&#8230;</p>
]]></content:encoded>
										</item>
		<item>
		<title>Automatic metadata generation</title>
		<link>./../2009/07/automatic-metadata-generation/index.html</link>
				<comments>./../2009/07/automatic-metadata-generation/index.html#comments</comments>
				<pubDate>Fri, 31 Jul 2009 02:22:02 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[bigrams]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[term frequency/inverse document frequency (TFIDF)]]></category>

		<guid isPermaLink="false">./../index.html?p=335</guid>
				<description><![CDATA[I have been having a great deal of success extracting keywords and two-word phrases from documents and assigning them as &#8220;subject headings&#8221; to electronic texts &#8212; automatic metadata generation. In many cases but not all, the set of assigned keywords I&#8217;ve created are just as good if not better as the controlled vocabulary terms assigned [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I have been having a great deal of success extracting keywords and two-word phrases from documents and assigning them as &#8220;subject headings&#8221; to electronic texts &#8212; automatic metadata generation. In many cases but not all, the set of assigned keywords I&#8217;ve created are just as good if not better as the controlled vocabulary terms assigned by librarians.
</p>
<h2>The problem</h2>
<p>
The Alex Catalogue is a collection of roughly 14,000 electronic texts. The vast majority come from Project Gutenberg. Some come from the Internet Archive. The smallest number come from a defunct etext collection of Virginia Tech. All of the documents are intended to surround the themes of American and English literature and Western philosophy.
</p>
<p>
With the exception of the non-fiction works from the Internet Archive, none of the electronic texts were associated with subject-related metadata. With the exception of author names (which are yet to be &#8220;well-controlled&#8221;), it has been difficult learn the &#8220;aboutness&#8221; of each of the documents. Such a thing is desirable for two reasons: 1) to enable the reader to evaluate the relevance of document, and 2) to provide a browsable interface to the collection. Without some sort of tags, subject headings, or application of clustering techniques, browsability is all but impossible. My goal was to solve this problem in an automated manner.
</p>
<h2>The solution</h2>
<p>
A couple of years ago I used tools such as <a href="http://search.cpan.org/dist/Lingua-EN-Summarize/">Lingua::EN::Summarize</a> and <a href="http://libots.sourceforge.net/">Open Text Summarizer</a> to extract keywords and summaries from the etexts and assign them as subject terms. The process worked, but not extraordinarily well. I then learned about Term Frequency Inverse Document Frequency (<a href="./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html">TFIDF</a>) to calculate &#8220;relevance&#8221;, and T-Score to calculate the probability of two words appearing side-by-side &#8212; <a href="./../2009/06/linguaenbigram-version-001/index.html">bi-grams or two-word phrases</a>. Applying these techniques to the etexts of the Alex Catalogue I have been able to create and add meaningful subject &#8220;tags&#8221; to each of my documents which then paves the way to browsability. Here is the algorithm I used to implement the solution:
</p>
<ol>
<li><strong>Collect documents</strong> &#8211; This was done through various harvesting techniques. Etexts are saved to the local file system and what metadata does exist gets saved to a database.</li>
<li><strong>Index the collection</strong> &#8211; Each of the documents is full-text indexed. Not only does this facilitate Steps #3 and #4, below, it makes the collection searchable.</li>
<li><strong>Calculate a relevancy score (TFIDF) for each word</strong> &#8211; With the exception of parsing each etext into a set of &#8220;words&#8221;, counting the number of words in a document and the frequency of each word is easy. Determining the total number of documents in the collection is trivial. By searching the index for each word and getting back the number of documents in which it appears is the work of the indexer. With these four values (number of words in a document, frequency of a word in a document, the number of total documents, and the number of documents where the word appears) TFIDF can be calculated for each word.</li>
<li><strong>Calculate a relevancy score for each bi-gram</strong> &#8211; Instead of extracting words from an etext, bi-grams (two-word phrases) were extracted and TFIDF is calculated for each of them, just like Step #3.</li>
<li><strong>Save</strong> &#8211; If the score for each word or bi-gram is greater than an arbitrarily denoted lower bounds, and if the word or bi-gram is not a stop word, then assign the word or bi-gram to the etext. This step was the most time-consuming. It required many dry runs of the algorithm to determine an optimal lower-bounds as well as set of stop words. The lower the bounds the greater number of words and phrases are returned, but as the number of words and phrases increases their apparent usefulness decreases. The words become too common among the controlled vocabulary. At the other end of the scale, a stop word list needed to be created to remove meaningless words and phrases. The stop word problem was complicated in Project Gutenberg texts because of the &#8220;fine print&#8221; and legalese in most of the documents, and by the OCRed (optical character recognized) text from the Internet Archive. Words like &#8220;thofe&#8221; where the &#8220;f&#8221; was really an &#8220;s&#8221; needed to be removed.  </li>
<li><strong>Go to Step #3 for each document in the collection.</strong></li>
<li><strong>Done.</strong></li>
</ol>
<h2>The results</h2>
<p>
Through this process I discovered a number of things.
</p>
<p>
First, in regards to fictional works, the <em>words or phrases returned are often pronouns</em>, and these were usually the names of characters from the work. An excellent example is Mark Twain&#8217;s <cite>Adventures of Huckleberry Finn</cite> whose currently assigned terms include: huck, tom, joe, injun joe, aunt polly, tom sawyer, muff potter, and injun joe&#8217;s.
</p>
<p>
Second, in regards to works of non-fiction, the<em> words and phrases returned are also nouns</em>, and these are objects referred to often in the etext. A good example includes John Stuart Mill&#8217;s <cite>Auguste Comte and Positivism</cite> where the assigned words are: comte, phaenomena, metaphysical, science, mankind, social, scientific, philosophy, and sciences.
</p>
<p>
Third, automatically generated <em>keywords and phrases were many times just as useful as the librarian-assigned Library of Congress Subject headings</em>. Many of the items harvested from the Internet Archive were complete with MARC records. Some of those records included subject headings. During Step #5 (above), I spent time observing the output and comparing it to previously assigned terms. Take for example a work called <cite>Universalism in America: A History</cite> by Richard Eddy. Its assigned headings included:
</p>
<ul>
<li>Universalism United States History</li>
<li>Unitarian Universalist churches United States</li>
</ul>
<p>
My automatically generated terms/phrases are:
</p>
<ul>
<li>universalist</li>
<li>ballou</li>
<li>hosea ballou</li>
<li>boston</li>
<li>universalist church</li>
<li>sermon</li>
<li>convention</li>
<li>first universalist</li>
<li>universalist quarterly</li>
<li>doctrine</li>
<li>universalist society</li>
<li>restorationist controversy</li>
<li>thomas whittemore</li>
<li>delivered</li>
<li>abner kneeland</li>
<li>sermon delivered</li>
<li>church</li>
<li>universalist meeting</li>
<li>universalist magazine</li>
<li>universal salvation</li>
<li>america</li>
<li>hosea ballon</li>
<li>vers alism</li>
<li>edward turner</li>
<li>general convention</li>
<li>universalism</li>
</ul>
<p>
Granted, the generated list is not perfect. For example, Hosea Ballou is mentioned twice, and the second was probably caused by an OCR error. On the other hand, how was a person to know that Hosea Ballou was even a part of the etext if it weren&#8217;t for this process? The same goes for the other people: Thomas Whittemore, Abner Kneeland, and Edward Turner. In defense of controlled vocabulary, the terms &#8220;church&#8221;, &#8220;sermon&#8221;, &#8220;doctrine&#8221;, and &#8220;american&#8221; could all be assumed from the (rather) hierarchal nature of LCSH, but unless a person understands the nature of LCSH such a thing is not obvious.
</p>
<p>
As a librarian I understand the power of a controlled vocabulary, but since I am not limited to three to five subject headings per entry, and because controlled vocabularies are often very specific, I have retained the LCSH in each record whenever possible. The more the merrier.
</p>
<h2>Next steps</h2>
<p>
Now that the collection has richer metadata, the next steps will be to exploit it. Some of those nexts steps include:
</p>
<ol>
<li><strong>Normalize the data</strong> &#8211; Each of the subjects are currently saved in a single database field. They need to be normalized across the database to enable database joins and make it easier to generate reports. </li>
<li><strong>Create a browsable interface</strong> &#8211; Write a set of static Web pages linking keywords and phrases to etexts. This will make it easier to see at a glance the type of content in the collection.</li>
<li><strong>Re-index</strong> &#8211; Trivial. Send all the data and metadata back to the indexer ultimately improving the precision/recall ratio.</li>
<li><strong>Enhance search experience</strong> &#8211; Extract the keywords and phrases from search results and display them to the user. Make them linkable to easily &#8220;find more like this one.&#8221; Extract the same keywords and phrases and use them to implement the increasingly popular browsable facets feature.</li>
<li><strong>Enhance linked data</strong> &#8211; Generate a report against the database to create (better) RDF files complete with more meaningful (subject) tags. Link these tags to external vocabularies such as WordNet through the use of linked data thus contributing to the Semantic Web and enabling others to benefit from my labors. (Infomotions Man says, &#8216;Give back to the &#8216;Net&#8221;.)</li>
</ol>
<p>
Fun! Combining traditional librarianship with computer applications; not automating existing workflows as much as exploiting the inherent functions of a computer. Using mathematics to solve large-scale problems. Making it easier to do learning and research. <em>It is the not what of librarianship that needs to change as much as the how</em>.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/07/automatic-metadata-generation/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Alex on Google</title>
		<link>./../2009/07/alex-on-google/index.html</link>
				<pubDate>Fri, 24 Jul 2009 11:41:06 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>

		<guid isPermaLink="false">./../index.html?p=318</guid>
				<description><![CDATA[I don&#8217;t exactly know how or why Google sometimes creates nice little screen shots of Web home pages, but it created one for my Alex Catalogue of Electronic Texts. I&#8217;ve seen them for other sites on the Web, and some of them even contain search boxes. I wish I could get Google to make one [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><img src="./../wp-content/uploads/2009/07/google-alex.png" alt="Mini screen shot of Alex on Google" title="google-alex" width="327" height="154" align="right">I don&#8217;t exactly know how or why Google sometimes creates nice little screen shots of Web home pages, but it created one for my <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>. I&#8217;ve seen them for other sites on the Web, and some of them even contain search boxes.</p>
<p>I wish I could get Google to make one of these for a greater number of my sites, and I wish I could get the Google Search Appliance to do the same. It is a nifty feature, to say the least.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Top Tech Trends for ALA Annual, Summer 2009</title>
		<link>./../2009/07/top-tech-trends-for-ala-annual-summer-2009/index.html</link>
				<pubDate>Mon, 20 Jul 2009 11:32:22 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=314</guid>
				<description><![CDATA[This is a list of Top Tech Trends for the ALA Annual Meeting, Summer 2009.* Green computing The amount of computing that gets done on our planet has a measurable carbon footprint, and many of us, myself included, do not know exactly how much heat our computers put off and how much energy they consume. [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is a list of Top Tech Trends for the ALA Annual Meeting, Summer 2009.*
</p>
<h3>Green computing</h3>
<p>
The amount of computing that gets done on our planet has a measurable carbon footprint, and many of us, myself included, do not know exactly how much heat our computers put off and how much energy they consume. With the help from some folks from the University of Notre Dame&#8217;s Center for Research Computing, I learned my laptop computer spikes at 30 watts on boot, slows down to 20 watts during normal use, idles at 2 watts during sleep, and zooms up to 34 watts when the screen saver kicks in. Just think how much energy and heat your computer consumes and generates while waiting for the nightly update from your systems department. But realistically, it is our servers that make the biggest impact, and while energy consumption is one way to be more green, another is to figure out ways to harness the heat the computers generate. One trend is to put computers in places that need to be heated up, like green houses in the winter. Another idea is to put them in places where cool air is exhausted, like building ventilation ducks. What can you do? Turn your computer off when it is not in use since the computer electronics and such are not as sensitive to power on, power off cycles as they used to be.
</p>
<h3>&#8220;Digital Humanities&#8221;</h3>
<p>
There seems to be a growing number of humanities scholars who understand that computers can be applied to their research. See the <a href="http://dev.cdh.ucla.edu/digitalhumanities/2009/05/29/the-digital-humanities-manifesto-20/">Digital Humanities Manifesto</a> as an example. With the advent of all the electronic texts being made available, it is not possible to read each and every text individually. In an effort to analyze large copra more quickly, people can create word clouds against these documents to summarize them. They can extract the statistically significant words and phrases to determine their &#8220;aboutness&#8221;. They can easily compute Fog, Flesch, and Flesch-Kincaid scores denoting the complexity of documents. (&#8220;Remember, &#8216;Why Johnny can&#8217;t read&#8217;?&#8221;) These people understand that humanities scholarship is not necessarily done in isolation, and the codex is not necessarily the medium of the day. They understand the advantages of open access publishing. For our profession, it is difficult to overstate the number of opportunities this trend affords librarianship. Anybody can find information. What people need now are tools to make information easier to analyze and use.
</p>
<h3>Tweeting with Twitter</h3>
<p>
Microblogging (think Twitter) is definitely hot. In some situations it can be a really useful application of computer technology. Frankly, I think the fascination will wear off and its functionality will become similar to the use of cellphone photographs at news-breaking events. Tweet, tweet, tweet.
</p>
<h3>Discovery interfaces and mega-indexes</h3>
<p>
If I were to pick the hottest trend in library technology, it would be fledgling implementation of large, all-encompassing indexes of journal and book content &#8212; integrating mega-indexes into the &#8220;discovery&#8221; interface. This is exemplified by Serials Solutions&#8217; Summa, hinted at by an OCLC/EBSCO collaboration, and thought about by other library vendors. Google Scholar comes close but could benefit by adding more complete bibliographic data of books. OAIster worked for OAI-accessible content but needed to be indexed with a less proprietary tool. The folks at Index Data created something similar and included additional content, but the idea never seemed to catch on. Federated (broadcast) search tried and has yet to fulfill the promise. The driver behind this idea is the knowledge that many data silos don&#8217;t meet the needs of our users. Instead people want one box, one button, and one data set. Combine journal bibliographic data with book bibliographic data into a single index (not database). Sort search results by relevance. Provide a set of time-saving services against the result. In order for this technological technique to work each data set must be normalized into a single data structure and indexed (probably with an open source indexer called Lucene). In other words, there will be a large set of core elements such a title, author, note, subject, etc. All bibliographic data from all sets will be mapped to these fields and what doesn&#8217;t fall neatly into any one of them will be mapped to free text fields. Not perfect, not 100 percent, but hugely functional, and it meets user&#8217;s expectations. To see how this can be done with the volumes and volumes of medically-related open access content see the good work done by <a href="http://www.openphi.com/">OpenPHI and their HealthLibrarian</a>.
</p>
<p>
* This posting was originally &#8220;published&#8221; as a part of <a href="http://litablog.org/2009/01/10/eric-lease-morgans-top-tech-trends-for-ala-mid-winter-2009/">litablog.org</a>, and it is duplicated here because many copies keep stuff safe.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Mass Digitization Mini-Symposium: A Reverse Travelogue</title>
		<link>./../2009/07/mass-digitization-mini-symposium-a-reverse-travelogue/index.html</link>
				<pubDate>Wed, 01 Jul 2009 17:23:48 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[mass digitization]]></category>

		<guid isPermaLink="false">./../index.html?p=310</guid>
				<description><![CDATA[The Professional Development Committee of the Hesburgh Libraries at the University of Notre Dame a &#8220;mini-symposium&#8221; on the topic of mass digitization on Thursday, May 21, 2009. This text documents some of what the speakers had to say. Given the increasingly wide availability of free full text information provided through mass digitization, the forum offered [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>
The Professional Development Committee of the Hesburgh Libraries at the University of Notre Dame a &#8220;mini-symposium&#8221; on the topic of mass digitization on Thursday, May 21, 2009. This text documents some of what the speakers had to say. Given the increasingly wide availability of free full text information provided through mass digitization, the forum offered an opportunity for participants to learn how such a thing might affect learning, teaching, and scholarship. *
</p>
<h3>Setting the Stage</h3>
<table align='right'>
<tr>
<td align='center'>
<img src="./../wp-content/uploads/2009/07/symposium-s.jpeg" alt="presenters and organizers" hspace="5" vspace="5" align="right"><br />
<span style='font-size: small'><a href="./../wp-content/uploads/2009/07/symposium.jpg">Presenters and organizers</a></span>
</td>
</tr>
</table>
<p>
After introductions by Leslie Morgan, I gave a talk called &#8220;<a href="http://infomotions.com/musings/mass-digitization-opportunities/">Mass digitization in 15 minutes</a>&#8221; where I described some of the types of library services and digital humanities processes that could be applied to digitized literature. &#8220;What might libraries be like if 51% or more of our collections were available in full text?&#8221;
</p>
<h3>Maura Marx</h3>
<p>
The Symposium really got underway with the remarks of Maura Marx (Executive Director of the Open Knowledge Commons) in a talk called &#8220;<a href="./../wp-content/uploads/2009/07/marx.pdf">Mass Digitization and Access to Books Online</a>.&#8221; She began by giving an overview of mass digitization (such as the efforts of the Google Books Project and the Internet Archive) and compared it with large-scale digitization efforts. &#8220;None of this is new,&#8221; she said, and gave examples including Project Gutenberg, the Library of Congress Digital Library, and the Million Books Project. Because the Open Knowledge Commons is an outgrowth of the Open Content Alliance, she was able to describe in detail the mechanical digitizing process of the Internet Archive with its costs approaching 10¢/page. Along the way she advocated the HathiTrust as a preservation and sharing method, and she described it as a type of &#8220;radical collaboration.&#8221; &#8220;Why is mass digitization so important?&#8221; She went on to list and elaborate upon six reasons: 1) search, 2) access, 3) enhanced scholarship, 4) new scholarship, 5) public good, and 6) the democratization of information.
</p>
<p>
The second half of Ms. Marx&#8217;s presentation outlined three key issues regarding the Google Books Settlement. Specifically, the settlement will give Google a sort of &#8220;most favored nation&#8221; status because it prevents Google from getting sued in the future, but it does not protect other possible digitizers the same way. Second, it circumvents, through contract law, the problem of orphan works; the settlement sidesteps many of the issues regarding copyright. Third, the settlement is akin to a class action suit, but in reality the majority of people affected by the suit are unknown since they fall into the class of orphan works holders. To paraphrase, &#8220;How can a group of unknown authors and publishers pull together a class action suit?&#8221;
</p>
<p>
She closed her presentation with a more thorough description of Open Knowledge Commons agenda which includes: 1) the production of digitized materials, 2) the preservation of said materials, and 3) and the building of tools to make the materials increasingly useful. Throughout her presentation I was repeatedly struck by the idea of the public good the Open Knowledge Commons was trying to create. At the same time, her ideas were not so naive to ignore the new business models that are coming into play and the necessity for libraries to consider new ways to provide library services. &#8220;We are a part of a cyber infrastructure where the key word is &#8216;shared.&#8217; We are not alone.&#8221;
</p>
<h3>Gary Charbonneau</h3>
<p>
Gary Charbonneau (Systems Librarian, Indiana University &#8211; Bloomington) was next and gave his presentation called &#8220;<a href="./../wp-content/uploads/2009/07/charbonneau.pdf">The Google Books Project at Indiana University</a>&#8220;.
</p>
<p>
Indiana University, in conjunction with a number of other CIC (Committee on Institutional Cooperation) libraries have begun working with Google on the Google Books Project. Like many previous Google Book Partners, Charbonneau was not authorized to share many details regarding the Project; he was only authorized &#8220;to paint a picture&#8221; with the metaphoric &#8220;broad brush.&#8221; He described the digitization process as rather straightforward: 1) pull books from a candidate list, 2) charge them out to Google, 3) put the books on a truck, 4) wait for them to return in few weeks or so, and 5) charge the books back into the library. In return for this work they get: 1) attribution, 2) access to snippets, and 3) sets of digital files which are in the public domain. About 95% of the works are still under copyright and none of the books come from their rare book library &#8212; the Lilly Library.
</p>
<p>
Charbonneau thought the real value of the Google Book search was the deep indexing, something mentioned by Marx as well.
</p>
<p>
Again, not 100% of the library&#8217;s collection is being digitized, but there are plans to get closer to that goal. For example, they are considering plans to digitize their &#8220;Collections of Distinction&#8221; as well as some of their government documents. Like Marx, he advocated the HathiTrust but he also suspected commercial content might make its way into its archives.
</p>
<p>
One of the more interesting things Charbonneau mentioned was in regards to URLs. Specifically, there are currently no plans to insert the URLs of digitized materials into the 856 $u field of MARC records denoting the location of items. Instead they plan to use an API (application programmer interface) to display the location of files on the fly.
</p>
<p>
Indiana University hopes to complete their participation in the Google Books Project by 2013.
</p>
<h3>Sian Meikle</h3>
<p>
The final presentation of the day was given by Sian Meikle (Digital Services Librarian, University of Toronto Libraries) whose comments were quite simply entitled &#8220;<a href="./../wp-content/uploads/2009/07/meikle.pdf">Mass Digitization</a>.&#8221;
</p>
<p>
The massive (no pun intended) University of Toronto library system consisting of a whopping 18 million volumes spread out over 45 libraries on three campuses began working with the Internet Archive to digitize books in the Fall of 2004. With their machines (the &#8220;scribes&#8221;) they are able to scan about 500 pages/hour and, considering the average book is about 300 pages long, they are scanning at a rate of about 100,000 books/year. Like Indiana and the Google Books Project, not all books are being digitized. For example, they can&#8217;t be too large, too small, brittle, tightly bound, etc. Of all the public domain materials, only 9% or so do not get scanned. Unlike the output of the Google Book Project, the deliverables from their scanning process include images of the texts, a PDF file of the text, an OCRed version of the text, a &#8220;flip book&#8221; version of the text, and a number of XML files complete with various types of metadata.
</p>
<p>
Considering Meikle&#8217;s experience with mass digitized materials, she was able to make a number of observations and distinctions. For example, we &#8212; the library profession &#8212; need to understand the difference between &#8220;born digital&#8221; materials and digitized materials. Because of formatting, technology, errors in OCR, etc, the different manifestations have different strengths and weaknesses. Some things are more easily searched. Some things are displayed better on screens. Some things are designed for paper and binding. Another distinction is access. According to some of her calculations, materials that are in electronic form get &#8220;used&#8221; more than their printed form. In this case &#8220;used&#8221; means borrowed or downloaded. Sometimes the ratio is as high as 300-to-1. There are three hundred downloads to one borrow. Furthermore, she has found that proportionately, English language items are not used as heavily as materials in other languages. One possible explanation is that material in other languages can be harder to locate in print. Yet another difference is the type of reading one format offers over another; compare and contrast &#8220;intentional reading&#8221; with &#8220;functional reading.&#8221; Books on computers make it easy to find facts and snippets. Books on paper tend to lend themselves better to the understanding of bigger ideas.
</p>
<p>
Lastly, Meikle alluded to ways the digitized content will be made available to users. Specifically, she imagines it will become a part of an initiative called the Scholar&#8217;s Portal &#8212; a single index of journal article literature, full text books, and bibliographic metadata. In my mind, such an idea is the heart of the &#8220;next generation&#8221; library catalog.
</p>
<h3>Summary and Conclusion</h3>
<p>
The symposium was attended by approximately 125 people. Most were from the Hesburgh Libraries of the University of Notre Dame. Some were from regional libraries. There were a few University faculty in attendance. The event was a success in that it raised the awareness of what mass digitization is all about, and it fostered communication during the breaks as well as after the event was over.
</p>
<p>
The opportunities for librarianship and scholarship in general are almost boundless considering the availability of full text content. The opportunities are even greater when the content is free of licensing restrictions. While the idea of complete collections totally free of restrictions is a fantasy, the idea of significant amounts of freely available full text content is easily within our grasp. During the final question and answer period, someone asked, &#8220;What skills and resources are necessary to do this work?&#8221; The answer was agreed upon by the speakers, &#8220;What is needed? An understanding that the perfect answer is not necessary prior to implementation.&#8221; There were general nods of agreement from the audience.
</p>
<p>
Now is a good time to consider the possibilities of mass digitization and to be prepared to deal with them before they become the norm as opposed to the exception. This symposium, generously sponsored by the Hesburgh Libraries Professional Development Committee, as well as library administration, provided the opportunity to consider these issues. &#8220;Thank you!&#8221;
</p>
<h3>Notes</h3>
<p>* This posting was orignally &#8220;published&#8221; as a part of the Hesburgh Libraries of the University of Notre Dame website, and it is duplicated here because &#8220;Lot&#8217;s of copies keep stuff safe.&#8221;
</p>
</div>
]]></content:encoded>
										</item>
		<item>
		<title>Lingua::EN::Bigram (version 0.01)</title>
		<link>./../2009/06/linguaenbigram-version-001/index.html</link>
				<comments>./../2009/06/linguaenbigram-version-001/index.html#comments</comments>
				<pubDate>Tue, 23 Jun 2009 13:41:36 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[bigrams]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">./../index.html?p=307</guid>
				<description><![CDATA[Below is the POD (Plain O&#8217; Documentation) file describing a Perl module I wrote called Lingua::EN::Bigram. The purpose of the module is to: 1) extract all of the two-word phrases from a given text, and 2) rank each phrase according to its probability of occurance. Very nice for doing textual analysis. For example, by applying [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
Below is the POD (Plain O&#8217; Documentation) file describing a Perl module I wrote called Lingua::EN::Bigram.
</p>
<p>
The purpose of the module is to: 1) extract all of the two-word phrases from a given text, and 2) rank each phrase according to its probability of occurance. Very nice for doing textual analysis. For example, by applying this module to Mark Twain&#8217;s <cite>Adventures of Tom Sawyer</cite> it becomes evident that the signifcant two-word phrases are names of characters in the story. On the other hand, Ralph Waldo Emerson&#8217;s <cite>Essays: First Series</cite> returns action statements &#8212; instructions. On the other hand Henry David Thoreau&#8217;s <cite>Walden</cite> returns &#8220;walden pond&#8221; and descriptions of pine trees. Interesting.
</p>
<p>
The code is available <a href="./../wp-content/uploads/2009/06/Lingua-EN-Bigram-0.01.tar.gz">here</a> or on <a href="http://search.cpan.org/~emorgan/Lingua-EN-Bigram-0.01/">CPAN</a>.
</p>
<div>
<h3>NAME</h3>
<p>Lingua::EN::Bigram &#8211; Calculate significant two-word phrases based on frequency and/or T-Score</p>
<h3>SYNOPSIS</h3>
<pre>
<code>  use Lingua::EN::Bigram;
  $bigram = Lingua::EN::Bigram-&gt;new;
  $bigram-&gt;text( 'All men by nature desire to know. An indication of this...' );
  $tscore = $bigram-&gt;tscore;
  foreach ( sort { $$tscore{ $b } &lt;=&gt; $$tscore{ $a } } keys %$tscore ) {
  
    print "$$tscore{ $_ }\t" . "$_\n";
  
  }</code>
</pre>
<h3>DESCRIPTION</h3>
<p>This module is designed to: 1) pull out all of the two-word phrases (collocations or &#8220;bigrams&#8221;) in a given text, and 2) list these phrases according to thier frequency and/or T-Score. Using this module is it possible to create list of the most common two-word phrases in a text as well as order them by their probable occurance, thus implying significance.</p>
<h3>METHODS</h3>
<h4>new</h4>
<p>Create a new, empty bigram object:</p>
<pre>
<code>  # initalize
  $bigram = Lingua::EN::Bigram-&gt;new;</code>
</pre>
<h4>text</h4>
<p>Set or get the text to be analyzed:</p>
<pre>
<code>  # set the attribute
  $bigram-&gt;text( 'All good things must come to an end...' );
  
  # get the attribute
  $text = $bigram-&gt;text;</code>
</pre>
<h4>words</h4>
<p>Return a list of all the tokens in a text. Each token will be a word or puncutation mark:</p>
<pre>
<code>  # get words
  @words = $bigram-&gt;words;</code>
</pre>
<h4>word_count</h4>
<p>Return a reference to a hash whose keys are a token and whose values are the number of times the token occurs in the text:</p>
<pre>
<code>  # get word count
  $word_count = $bigram-&gt;word_count;
  
  # list the words according to frequency
  foreach ( sort { $$word_count{ $b } &lt;=&gt; $$word_count{ $a } } keys %$word_count ) {
  
    print $$word_count{ $_ }, "\t$_\n";
  
  }</code>
</pre>
<h4>bigrams</h4>
<p>Return a list of all bigrams in the text. Each item will be a pair of tokens and the tokens may consist of words or puncutation marks:</p>
<pre>
<code>  # get bigrams
  @bigrams = $bigram-&gt;bigrams;</code>
</pre>
<h4>bigram_count</h4>
<p>Return a reference to a hash whose keys are a bigram and whose values are the frequency of the bigram in the text:</p>
<pre>
<code>  # get bigram count
  $bigram_count = $bigram-&gt;bigram_count;
  
  # list the bigrams according to frequency
  foreach ( sort { $$bigram_count{ $b } &lt;=&gt; $$bigram_count{ $a } } keys %$bigram_count ) {
  
    print $$bigram_count{ $_ }, "\t$_\n";
  
  }</code>
</pre>
<h4>tscore</h4>
<p>Return a reference to a hash whose keys are a bigram and whose values are a T-Score &#8212; a probabalistic calculation determining the significance of bigram occuring in the text:</p>
<pre>
<code>  # get t-score
  $tscore = $bigram-&gt;tscore;
  
  # list bigrams according to t-score
  foreach ( sort { $$tscore{ $b } &lt;=&gt; $$tscore{ $a } } keys %$tscore ) {
  
    print "$$tscore{ $_ }\t" . "$_\n";
  
  }</code>
</pre>
<h3>DISCUSSION</h3>
<p>Given the increasing availability of full text materials, this module is intended to help &#8220;digital humanists&#8221; apply mathematical methods to the analysis of texts. For example, the developer can extract the high-frequency words using the word_count method and allow the user to search for those words in a concordance. The bigram_count method simply returns the frequency of a given bigram, but the tscore method can order them in a more finely tuned manner.</p>
<p>Consider using T-Score-weighted bigrams as classification terms to supplement the &#8220;aboutness&#8221; of texts. Concatonate many texts together and look for common phrases written by the author. Compare these commonly used phrases to the commonly used phrases of other authors.</p>
<p>Each bigram includes punctuation. This is intentional. Developers may need want to remove bigrams containing such values from the output. Similarly, no effort has been made to remove commonly used words &#8212; stop words &#8212; from the methods. Consider the use of Lingua::StopWords, Lingua::EN::StopWords, or the creation of your own stop word list to make output more meaningful. The distribution came with a script (bin/bigrams.pl) demonstrating how to remove puncutation and stop words from the displayed output.</p>
<p>Finally, this is not the only module supporting bigram extraction. See also Text::NSP which supports n-gram extraction.</p>
<h3>TODO</h3>
<p>There are probably a number of ways the module can be improved:</p>
<ul>
<li>the constructor method could take a scalar as input, thus reducing the need for the text method</li>
<li>the distribution&#8217;s license should probably be changed to the Perl Aristic License</li>
<li>the addition of alternative T-Score calculations would be nice</li>
<li>it would be nice to support n-grams</li>
<li>make sure the module works with character sets beyond ASCII</li>
</ul>
<h3>ACKNOWLEDGEMENTS</h3>
<p>T-Score is calculated as per Nugues, P. M. (2006). An introduction to language processing with Perl and Prolog: An outline of theories, implementation, and application with special consideration of English, French, and German. Cognitive technologies. Berlin: Springer. Page 109.</p>
<h3>AUTHOR</h3>
<p>Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt;</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2009/06/linguaenbigram-version-001/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Lingua::Concordance (version 0.01)</title>
		<link>./../2009/06/linguaconcordance-version-001/index.html</link>
				<pubDate>Wed, 10 Jun 2009 17:05:37 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[concordance]]></category>

		<guid isPermaLink="false">./../index.html?p=304</guid>
				<description><![CDATA[Below is a man page describing a Perl I module I recently wrote called Lingua::Concordance (version 0.01). Given the increasing availability of full text books and journals, I think it behooves the library profession to aggressively explore the possibilities of providing services against text as a means of making the proverbial fire hose of information [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
Below is a man page describing a Perl I module I recently wrote called Lingua::Concordance (version 0.01).</p>
<p>Given the increasing availability of full text books and journals, I think it behooves the library profession to aggressively explore the possibilities of providing services against text as a means of making the proverbial fire hose of information more useful. Providing concordance-like functions against texts is just one example.
</p>
<p>
The <a href="./../wp-content/uploads/2009/06/Lingua-Concordance-0.01.tar.gz">distribution is available from this blog</a> as well as <a href="http://search.cpan.org/~emorgan/Lingua-Concordance-0.01/">CPAN</a>.
</p>
<h3>NAME</h3>
<p>Lingua::Concordance &#8211; Keyword-in-context (KWIC) search interface</p>
<h3>SYNOPSIS</h3>
<pre>
<code>  use Lingua::Concordance;
  $concordance = Lingua::Concordance-&gt;new;
  $concordance-&gt;text( 'A long time ago, in a galaxy far far away...' );
  $concordance-&gt;query( 'far' );
  foreach ( $concordance-&gt;lines ) { print "$_\n" }</code>
</pre>
<h3>DESCRIPTION</h3>
<p>Given a scalar (such as the content of a plain text electronic book or journal article) and a regular expression, this module implements a simple keyword-in-context (KWIC) search interface &#8212; a concordance. Its purpose is to return lists of lines from a text containing the given expression. See the Discussion section, below, for more detail.</p>
<h3>METHODS</h3>
<h4>new</h4>
<p>Create a new, empty concordance object:</p>
<pre>
<code>  $concordance = Lingua::Concordance-&gt;new;</code>
</pre>
<h4>text</h4>
<p>Set or get the value of the concordance&#8217;s text attribute where the input is expected to be a scalar containing some large amount of content, like an electronic book or journal article:</p>
<pre>
<code>  # set text attribute
  $concordance-&gt;text( 'Call me Ishmael. Some years ago- never mind how long...' );

  # get the text attribute
  $text = $concordance-&gt;text;</code>
</pre>
<p>Note: The scalar passed to this method gets internally normalized, specifically, all carriage returns are changed to spaces, and multiple spaces are changed to single spaces.</p>
<h4>query</h4>
<p>Set or get the value of the concordance&#8217;s query attribute. The input is expected to be a regular expression but a simple word or phrase will work just fine:</p>
<pre>
<code>  # set query attribute
  $concordance-&gt;query( 'Ishmael' );

  # get query attribute
  $query = $concordance-&gt;query;</code>
</pre>
<p>See the Discussion section, below, for ways to make the most of this method through the use of powerful regular expressions. This is where the fun it.</p>
<h4>radius</h4>
<p>Set or get the length of each line returned from the lines method, below. Each line will be padded on the left and the right of the query with the number of characters necessary to equal the value of radius. This makes it easier to sort the lines:</p>
<pre>
<code>  # set radius attribute
  $concordance-&gt;radius( $integer );

  # get radius attribute
  $integer = $concordance-&gt;query;</code>
</pre>
<p>For terminal-based applications it is usually not reasonable to set this value to greater than 30. Web-based applications can use arbitrarily large numbers. The internally set default value is 20.</p>
<h4>sort</h4>
<p>Set or get the type of line sorting:</p>
<pre>
<code>  # set sort attribute
  $concordance-&gt;sort( 'left' );

  # get sort attribute
  $sort = $concordance-&gt;sort;</code>
</pre>
<p>Valid values include:</p>
<ul>
<li>none &#8211; the default value; sorts lines in the order they appear in the text &#8212; no sorting</li>
<li>left &#8211; sorts lines by the (ordinal) word to the left of the query, as defined the ordinal method, below</li>
<li>right &#8211; sorts lines by the (ordinal) word to the right of the query, as defined the ordinal method, below</li>
<li>match &#8211; sorts lines by the value of the query (mostly)</li>
</ul>
<p>This is good for looking for patterns in texts, such as collocations (phrases, bi-grams, and n-grams). Again, see the Discussion section for hints.</p>
<h4>ordinal</h4>
<p>Set or get the number of words to the left or right of the query to be used for sorting purposes. The internally set default value is 1:</p>
<pre>
<code>  # set ordinal attribute
  $concordance-&gt;ordinal( 2 );

  # get ordinal attribute
  $integer = $concordance-&gt;ordinal;</code>
</pre>
<p>Used in combination with the sort method, above, this is good for looking for textual patterns. See the Discussion section for more information.</p>
<h4>lines</h4>
<p>Return a list of lines from the text matching the query. Our reason de existance:</p>
<pre>
<code>  @lines = $concordance-&gt;lines;</code>
</pre>
<h3>DISCUSSION</h3>
<p>[Elaborate upon a number of things here such as but not limited to: 1) the history of concordances and concordance systems, 2) the usefulness of concordances in the study of linguistics, 3) how to exploit regular expressions to get the most out of a text and find interesting snippets, and 4) how the module might be implemented in scripts and programs.]</p>
<h3>BUGS</h3>
<p>The internal _by_match subroutine, the one used to sort results by the matching regular expression, does not work exactly as expected. Instead of sorting by the matching regular expression, it sorts by the string exactly to the right of the matched regular expression. Consequently, for queries such as &#8216;human&#8217;, it correctly matches and sorts on human, humanity, and humans, but matches such as Humanity do not necessarily come before humanity.</p>
<h3>TODO</h3>
<ul>
<li>Write Discussion section.</li>
<li>Implement error checking.</li>
<li>Fix the _by_match bug.</li>
<li>Enable all of the configuration methods (text, query, radius, sort, and ordinal) to be specified in the constructor.</li>
<li>Require the text and query attributes to be specified as a part of the constructor, maybe.</li>
<li>Remove line-feed characters while normalizing text to accomdate Windows-based text streams, maybe.</li>
<li>Write an example CGI script, to accompany the distribution&#8217;s terminal-based script, demonstrating how the module can be implemented in a Web interface.</li>
<li>Write a full-featured terminal-based script enhancing the one found in the distribution.</li>
</ul>
<h3>ACKNOWLEDGEMENTS</h3>
<p>The module implements, almost verbatim, the concordance programs and subroutines described in Bilisoly, R. (2008). Practical text mining with Perl. Wiley series on methods and applications in data mining. Hoboken, N.J.: Wiley. pgs: 169-185. &#8220;Thanks Roger. I couldn&#8217;t have done it without your book!&#8221;</p>
]]></content:encoded>
										</item>
		<item>
		<title>EAD2MARC</title>
		<link>./../2009/06/ead2marc/index.html</link>
				<pubDate>Fri, 05 Jun 2009 16:28:45 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Encoded Archival Description (EAD)]]></category>
		<category><![CDATA[MARC]]></category>

		<guid isPermaLink="false">./../index.html?p=300</guid>
				<description><![CDATA[This posting simply shares three hacks I&#8217;ve written to enable me to convert EAD files to MARC records, and ultimately add them to my &#8220;discovery&#8221; layer &#8212; VUFind &#8212; for the Catholic Portal: ead2marcxml.sh &#8211; Using xsltproc and a modified version of Terry Reese&#8217;s XSL stylesheet, converts all the EAD/.xml files in the current directory [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting simply shares three hacks I&#8217;ve written to enable me to convert EAD files to MARC records, and ultimately add them to my &#8220;discovery&#8221; layer &#8212; VUFind &#8212; for the Catholic Portal:
</p>
<ul>
<li>ead2marcxml.sh &#8211; Using xsltproc and a modified version of Terry Reese&#8217;s XSL stylesheet, converts all the EAD/.xml files in the current directory into MARCXML files. &#8220;Thanks Terry!&#8221;</li>
<li>marcxml2marc.sh &#8211; Using yaz-marcdump, convert all .marcxml files in the current directory into &#8220;real&#8221; MARC records.</li>
<li>add-001.pl &#8211; A hack to add 001 fields to MARC records. Sometimes necessary since the EAD files do not always have unique identifiers.</li>
</ul>
<p>
The distribution is <a href="./../wp-content/uploads/2009/06/ead2marc.tar.gz">available in the archives</a>, and distributed under the GNU Public License.
</p>
<p>
Now, off to go fishing.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Text mining: Books and Perl modules</title>
		<link>./../2009/06/text-mining-books-and-perl-modules/index.html</link>
				<pubDate>Thu, 04 Jun 2009 02:14:55 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[text mining]]></category>

		<guid isPermaLink="false">./../index.html?p=295</guid>
				<description><![CDATA[This posting simply lists some of the books I&#8217;ve read and Perl modules I&#8217;ve explored in regards to the field of text mining. Through my explorations of term frequency/inverse document frequency (TFIDF) I became aware of a relatively new field of study called text mining. In many ways, text mining is similar to data mining [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting simply lists some of the books I&#8217;ve read and Perl modules I&#8217;ve explored in regards to the field of text mining.
</p>
<p>
Through my explorations of term frequency/inverse document frequency (<a href="./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html">TFIDF</a>) I became aware of a relatively new field of study called text mining. In many ways, text mining is similar to data mining only applied to unstructured texts instead of database rows and columns. Think plain text books such as items from Project Gutenberg or the Open Content Alliance. Text mining is a process including automatic classification, clustering (similar but distinct from classification), indexing and searching, entity extraction (names, places, organization, dates, etc.), statistically significant keyword and phrase extraction, parts of speech tagging, and summarization.
</p>
<p>
As a librarian, I found the whole thing extremely fascinating, consequently I read more.
</p>
<h3>Books<br />
</h3>
<p>
I have found the following four books helpful. They have enabled me to learn about the principles of text mining.
</p>
<ul>
<li>Bilisoly, R. (2008). <a href="http://www.worldcat.org/oclc/212020725">Practical text mining with Perl</a>. Wiley series on methods and applications in data mining. Hoboken, N.J.: Wiley. &#8211; Of all the books listed here, this one includes the most Perl programming examples, and it is not as scholarly as the balance of the list. Much of the book surrounds the description of regular expressions against texts. Its strongest suit is the creation of terminal-based concordance scripts. Very nice. Lot&#8217;s of fun. The concordances return very interesting results. The book does describe clustering techniques too, but the on the overall topic of automatic metadata generation the book is not very strong.</li>
<li>Konchady, M. (2006). <a href="http://www.worldcat.org/oclc/63245489">Text mining application programming</a>. Charles River Media programming series. Boston, Mass: Charles River Media. &#8211; This book is a readable survey of text mining covering parts of speech (POS) tagging, information extraction, search engines, clustering, classification, summarization, and question/answer processing. Many models for each aspect of text mining are described, compared, and contrasted. To put the author&#8217;s knowledge into practice, the book comes with a CD containing a Perl library for text mining, sample applications, and CGI scripts. This library is freely available on the Web.</li>
<li>Nugues, P. M. (2006). <a href="http://www.worldcat.org/oclc/68628882">An introduction to language processing with Perl and Prolog</a>: An outline of theories, implementation, and application with special consideration of English, French, and German. Cognitive technologies. Berlin: Springer. &#8211; Of the four books listed here, this one is probably the most dense. I found its Perl scripts used to parse text more useful than the ones in Bilisoly, but this one included no concordance applications. I also found the description of n-grams to be very interesting &#8212; the extraction of multi-word phrases. I suspect the model they describe can be extended to n number of words. This book also discusses parts of speech (POS) processing but it is the only one that describes how to really parse language. Think semantics, lexicons, discourse, and dialog. After the first couple of chapters the Perl examples disappear and give way to exclusively Prologue examples.</li>
<li>Weiss, S. M. (2005). <a href="http://www.worldcat.org/oclc/56192245">Text mining: Predictive methods for analyzing unstructured information</a>. New York: Springer. &#8211; The complexity of this book lies between Konchady and Nugues; it includes a greater number of mathematical models than Konchady, but it is easier to read than Nugues. Broad topics include textual documents as numeric vectors, using text for prediction, information retrieval, clustering &amp; classification, and looking for information in documents. Each chapter includes a section called &#8220;Historical and Bibliographical Remarks&#8221; which has proved to be very interesting reading.</li>
</ul>
<table align='center' padding='10'>
<tr>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=0470176431&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe>
</td>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=1584504609&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe>
</td>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=354025031X&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe>
</td>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=0387954333&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe>
</td>
</tr>
</table>
<p>
When it comes to the process of text mining I found each of these books useful in their own right. Each provided me with ways to reading texts, parsing texts, counting words, counting phrases, and through the application of statistical analysis create lists and readable summaries denoting the &#8220;aboutness&#8221; of given documents.
</p>
<h3>Perl modules</h3>
<p>
As a Perl hacker I am interested in writing scripts putting into practice some of the things I learn. Listed here are a number of modules that have gotten me further along in regard to text mining:
</p>
<ul>
<li><a href="http://search.cpan.org/dist/Lingua-EN-Fathom/">Lingua::EN::Fathom</a> &#8211; This library outputs interesting statistics regarding a given document: number of words and the number of times each occurs, number of sentences, complexity of words, number of paragraphs, etc. Of greatest interest are numbers (Fog, Flesch, and Flesch-Kincaid) denoting the readability of the text. Quick. Easy. Useful.</li>
<li><a href="http://search.cpan.org/~simon/Lingua-EN-Keywords-2.0/">Lingua::EN::Keywords</a> &#8211; Given a text, this library outputs a list of what it thinks are the most significant individual words in a document, sans stop words. Not fancy.</li>
<li><a href="http://search.cpan.org/dist/Lingua-EN-NamedEntity/">Lingua::EN::NamedEntity</a> &#8211; Given a text, I believe this library comes pre-trained to extract names, places, and organizations from texts. It returns a Perl data structure listing the probabilities of a word or phrase being any particular entity. It may need to be re-trained to work for your corpus.</li>
<li><a href="http://search.cpan.org/~igorm/Lingua-EN-Semtags-Engine-0.02/">Lingua::EN::Semtags::Engine</a> &#8211; Given text this module will return words and phrases in a relevancy ranked order. Initially, I have had some problems using this module because it seems to take a long time to return. On the other hand, it looks promising since it returns both individual words as well as phrases.</li>
<li><a href="http://search.cpan.org/~fimm/Lingua-EN-Summarize-0.2/">Lingua::EN::Summarize</a> &#8211; Given a text this library returns sentences it thinks encapsulates the essence of the document. The result is readable &#8212; grammatically correct. The process it uses to accomplish its task is self-proclaimed as unscientific.</li>
<li><a href="http://search.cpan.org/~acoburn/Lingua-EN-Tagger/">Lingua::EN::Tagger</a> &#8211; This library marks up a document in pseudo XML with tags denoting parts of speech in a given document. To do this work it also can extract words, noun phrases, and sentences from a text. Zippy. Probability-based. Developers are expected to parse the tagged output and do analysis against it, such as count the number of times particular parts of speech occur.</li>
<li><a href="http://search.cpan.org/~creamyg/Lingua-StopWords-0.09/">Lingua::StopWords</a> &#8211; Returns a simple list of stop words. Easy, but I can&#8217;t figure out how customizable it is. &#8220;One person&#8217;s stop word list is another person research topic.&#8221;</li>
<li><a href="http://search.cpan.org/~neilb/Net-Dict-2.07/">Net::Dict</a> &#8211; A network interface to DICT (dictionary) servers. While the DICT protocol is a bit long in the tooth, and not quite as cool as Web interfaces to things like Google or Wikipedia, this module does provide a handy way to look up definitions, a complimentary functionality to WordNet.</li>
<li><a href="http://search.cpan.org/~hank/Text-Aspell-0.09/">Text::Aspell</a> &#8211; A Perl interface to GNU Aspell which is great for spell-checking applications.</li>
<li><a href="http://textmine.sourceforge.net/">TextMine</a> &#8211; This is a set of modules written by Manu Konchady the author of Text Mining Application Programming. It includes submodules named Cluster, Entity, Index, Pos, Quanda (Q &amp; A), Summary, Tokens, and WordNet. While this set of modules is the most comprehensive I&#8217;ve seen, and while they are probably the most theoretically based interfacing with things like WordNet to be thorough, my initial experience has been a bit frustrating since scripts written against the libraries do not turn very quickly. Maybe I&#8217;m feeding them documents that are too large and if so, then the libraries are not necessarily scalable.</li>
<li><a href="http://wordnet.princeton.edu/">WordNet</a> &#8211; There are a bevy of modules providing functionality against WordNet &#8212; a &#8220;lexical database of English&#8230; Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms (synsets), each expressing a distinct concept. Synsets are interlinked by means of conceptual-semantic and lexical relations.&#8221; Any truly thorough text mining application of English will take advantage of WordNet.</li>
</ul>
<h3>Text mining and librarianship</h3>
<p>
Given the volume of &#8220;born digital&#8221; material being created, it is not possible to apply traditional library methods against them. The hand-crafted, heavy human touch process is not scalable. Given the amounts of mass digitized text being generated from the Google Books Project and the Open Content Alliance, new opportunities for literary analysis make themselves evident. Again, the traditional library processes can not fill the bill in these regards.
</p>
<p>
Text mining techniques offer possible solutions to these problems. Count words. Count phrases. Compare these words, phrases, and counts to other texts. Determine their statistical significance. Assign them to documents in the form of subject headings, keywords, author names, and other added entries in our metadata formats. Given large numbers of books, articles, and other &#8220;wordy&#8221; documents, learn how to &#8220;save the time of the reader&#8221; by summarizing these documents and ranking them in some sort of order in addition to alphabetical or date. Compare and contrast full text works by learning what words and types of words are used in documents. Are the words religious in nature? Mathematic and scientific? Poetic? Such things will provide additional means for understanding and interpreting everything from scholarly journal articles to works of classic fiction and philosophy. These techniques are not intended to replace existing methods of understanding and organization, but rather to supplement and build upon them. This is an evolutionary process.`
</p>
<p>
If libraries and librarians desire to remain relevant in the evolving information environment, then they will need to do the good work they do differently. The problem to be solved now-a-days is less about access and more about use. Text mining is one way of making the content of libraries more useful.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Interent Archive content in &#8220;discovery&#8221; systems</title>
		<link>./../2009/06/interent-archive-content-in-discovery-systems/index.html</link>
				<comments>./../2009/06/interent-archive-content-in-discovery-systems/index.html#comments</comments>
				<pubDate>Tue, 02 Jun 2009 12:59:08 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[discovery systems]]></category>
		<category><![CDATA[Internet Archive]]></category>
		<category><![CDATA[VUFind]]></category>

		<guid isPermaLink="false">./../index.html?p=292</guid>
				<description><![CDATA[This quick posting describes how Internet Archive content, specifically, content from the Open Content Alliance can be quickly and easily incorporated into local library &#8220;discovery&#8221; systems. VuFind is used here as the particular example: Get keys &#8211; The first step is to get a set of keys describing the content you desire. This can be [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This quick posting describes how Internet Archive content, specifically, content from the Open Content Alliance can be quickly and easily incorporated into local library &#8220;discovery&#8221; systems. VuFind is used here as the particular example:
</p>
<ol>
<li>Get keys &#8211; The first step is to get a set of keys describing the content you desire. This can be acquired through the Internet Archive&#8217;s advanced search interface.</li>
<li>Convert keys &#8211; The next step is to convert the keys into sets of URLs pointing to the content you want to download. Fortunately, all the URLs have a similar shape: http://www.archive.org/download/KEY/KEY.pdf, http://www.archive.org/download/KEY/KEY_meta.mrc, or http://www.archive.org/download/KEY/KEY__djvu.txt.</li>
<li>Download &#8211; Feed the resulting URLs to your favorite spidering/mirroring application. I use wget.</li>
<li>Update &#8211; Enhance the downloaded MARC records with 856$u valued denoting the location of your local PDF copy as well as the original (cononical) version.</li>
<li>Index &#8211; Add the resulting MARC records to your &#8220;discovery&#8221; system.</li>
</ol>
<p>
Linked here is a small <a href="./../wp-content/uploads/2009/06/ia-and-discovery.tar.gz">distribution of shell and Perl scripts</a> that do this work for me and incorporate the content into VuFind. Here is how they can be used:
</p>
<pre><code>  $ getkeys.sh > catholic.keys
  $ keys2urls.pl catholic.keys > catholic.urls
  $ mirror.sh catholic.urls
  $ updatemarc.pl
  $ find /usr/var/html/etexts -name '*.marc' /
  -exec cat {} >> /usr/local/vufind/marc/archive.marc \;
  $ cd /usr/local/vufind
  $ ./import.sh marc/archive.marc
  $ sudo ./vufind.sh restart</code></pre>
<p>
Cool next steps would be use text mining techniques against the downloaded plain text versions of the documents to create summaries, extract named entities, and identify possible subjects. These items could then be inserted into the MARC records to enhance retrieval. Ideally the full text would be indexed, but alas, MARC does not accomodate that. &#8220;MARC must die.&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/06/interent-archive-content-in-discovery-systems/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>TFIDF In Libraries: Part III of III (For thinkers)</title>
		<link>./../2009/05/tfidf-in-libraries-part-iii-of-iii-for-thinkers/index.html</link>
				<comments>./../2009/05/tfidf-in-libraries-part-iii-of-iii-for-thinkers/index.html#comments</comments>
				<pubDate>Sun, 31 May 2009 20:30:39 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=286</guid>
				<description><![CDATA[This is the third of the three-part series on the topic of TFIDF in libraries. In Part I the why&#8217;s and wherefore&#8217;s of TFIDF were outlined. In Part II TFIDF subroutines and programs written in Perl were used to demonstrate how search results can be sorted by relevance and automatic classification can be done. In [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is the third of the three-part series on the topic of TFIDF in libraries. In <a href="./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html">Part I</a> the why&#8217;s and wherefore&#8217;s of TFIDF were outlined. In <a href="./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html">Part II</a> TFIDF subroutines and programs written in Perl were used to demonstrate how search results can be sorted by relevance and automatic classification can be done. In this last part a few more subroutines and a couple more programs are presented which: 1) weigh search results given an underlying set of themes, and 2) determine similarity between files in a corpus. A distribution including the <a href="./../wp-content/uploads/2009/04/tfidf.tar.gz">library of subroutines, Perl scripts, and sample data</a> are available online.
</p>
<h3>Big Names and Great Ideas</h3>
<p>
As an intellectual humanist, I have always been interested in &#8220;great&#8221; ideas. In fact, one of the reasons I became I librarian was because of the profundity of ideas physically located libraries. Manifested in books, libraries are chock full of ideas. Truth. Beauty. Love. Courage. Art. Science. Justice. Etc. As the same time, it is important to understand that books are not source of ideas, nor are they the true source of data, information, knowledge, or wisdom. Instead, people are the real sources of these things. Consequently, I have also always been interested in &#8220;big names&#8221; too. Plato. Aristotle. Shakespeare. Milton. Newton. Copernicus. And so on.
</p>
<table align='right' padding='10'>
<tr>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=0852295316&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe></td>
</tr>
</table>
<p>
As a librarian and a liberal artist (all puns intended) I recognize many of these &#8220;big names&#8221; and &#8220;great ideas&#8221; are represented in a set of books called the Great Books of the Western World. I then ask myself, &#8220;Is there someway I can use my skills as a librarian to help support other people&#8217;s understanding and perception of the human condition?&#8221; The simple answer is to collection, organize, preserve, and disseminate the things &#8212; books &#8212; manifesting great ideas and big names. This is a lot what my <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> is all about. On the other hand, a better answer to my question is to apply and exploit the tools and processes of librarianship to ultimately &#8220;save the time of the reader&#8221;. This is where the use of computers, computer technology, and TFIDF come into play.
</p>
<p>
<a href="./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html">Part II</a> of this series demonstrated how to weigh search results based on the relevancy ranked score of a search term. But what if you were keenly interested in &#8220;big names&#8221; and &#8220;great ideas&#8221; as they related to a search term? What if you wanted to know about librarianship and how it related to some of these themes? What if you wanted to learn about the essence of sculpture and how it may (or may not) represent some of the core concepts of Western civilization? To answer such questions a person would have to search for terms like sculpture or three-dimensional works of art in addition to all the words representing the &#8220;big names&#8221; and &#8220;great ideas&#8221;. Such a process would be laborious to enter by hand, but trivial with the use of a computer.
</p>
<p>
Here&#8217;s a potential solution. Create a list of &#8220;big names&#8221; and &#8220;great ideas&#8221; by copying them from a place such as the Great Books of the Western World. Save the list much like you would save a stop word list. Allow a person to do a search. Calculate the relevancy ranking score for each search result. Loop through the list of names and ideas searching for each of them. Calculate their relevancey. Sum the weight of search terms with the weight of name/ideas terms. Return the weighted list. The result will be a relevancy ranked list reflecting not only the value of the search term but also the values of the names/ideas. This second set of values I call the Great Ideas Coefficient.
</p>
<p>
To implement this idea, the following subroutine, called great_ideas, was created. Given an index, a list of files, and a set of ideas, it loops through each file calculating the TFIDF score for each name/idea:
</p>
<pre><code>  sub great_ideas {
  
    my $index = shift;
    my $files = shift;
    my $ideas = shift;
    
    my %coefficients = ();
    
    # process each file
    foreach $file ( @$files ) {
    
      my $words = $$index{ $file };
      my $coefficient = 0;
      
      # process each big idea
      foreach my $idea ( keys %$ideas ) {
      
        # get n and t for tdidf
        my $n = $$words{ $idea };
        my $t = 0;
        foreach my $word ( keys %$words ) { $t = $t + $$words{ $word } }
        
          # calculate; sum all tfidf scores for all ideas
          $coefficient = $coefficient + &amp;tfidf( $n, $t, keys %$index, scalar @$files );
        
        }
      
      # assign the coefficient to the file
      $coefficients{ $file } = $coefficient;
    
    }
    
    return \%coefficients;
  
  }</code></pre>
<p>
A Perl script, ideas.pl, was then written taking advantage of the great_ideas subroutine. As described above, it applies the query to an index, calculates TFIDF for the search terms as well as the names/ideas, sums the results, and lists the results accordingly:
</p>
<pre><code>  # define
  use constant STOPWORDS =&gt; 'stopwords.inc';
  use constant IDEAS     =&gt; 'ideas.inc';
  
  # use/require
  use strict;
  require 'subroutines.pl';
  
  # get the input
  my $q = lc( $ARGV[ 0 ] );

  # index, sans stopwords
  my %index = ();
  foreach my $file ( &amp;corpus ) { $index{ $file } = &amp;index( $file, &amp;slurp_words( STOPWORDS ) ) }
  
  # search
  my ( $hits, @files ) = &amp;search( \%index, $q );
  print "Your search found $hits hit(s)\n";
  
  # rank
  my $ranks = &amp;rank( \%index, [ @files ], $q );
  
  # calculate great idea coefficients
  my $coefficients = &amp;great_ideas( \%index, [ @files ], &amp;slurp_words( IDEAS ) );
  
  # combine ranks and coefficients
  my %scores = ();
  foreach ( keys %$ranks ) { $scores{ $_ } = $$ranks{ $_ } + $$coefficients{ $_ } }
  
  # sort by score and display
  foreach ( sort { $scores{ $b } &lt;=&gt; $scores{ $a } } keys %scores ) {
  
    print "\t", $scores{ $_ }, "\t", $_, "\n"
  
  }</code></pre>
<p>
Using the query tool described in <a href="./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html">Part II</a>, a search for librarianship returns the following results:
</p>
<pre>
  $ ./search.pl books
  Your search found 3 hit(s)
    0.00206045818083232   librarianship.txt
    0.000300606222548807  mississippi.txt
    5.91505974210339e-05  hegel.txt
</pre>
<p>
Using the new program, ideas.pl, the same set of results are returned but in a different order, an order reflecting the existence of &#8220;big ideas&#8221; and &#8220;great ideas&#8221; in the texts:
</p>
<pre>
  $ ./ideas.pl books
  Your search found 3 hit(s)
    0.101886904057731   hegel.txt
    0.0420767249559441  librarianship.txt
    0.0279062776599476  mississippi.txt
</pre>
<p>
When it comes to books and &#8220;great&#8221; ideas, maybe I&#8217;d rather read hegel.txt as opposed to librarianship.txt. Hmmm&#8230;
</p>
<p>
Think of the great_ideas subroutine as embodying the opposite functionality as a stop word list. Instead of excluding the words in a given list from search results, use the words to skew search results in a particular direction.
</p>
<p>
The beauty of the the great_ideas subroutine is that anybody can create their own set of &#8220;big names&#8221; or &#8220;great ideas&#8221;. They could be from any topic. Biology. Mathematics. A particular subset of literature. Just as different sets of stop words are used in different domains, so can the application of a Great Ideas Coefficient.
</p>
<h3>Similarity between documents</h3>
<p>
TFIDF can be applied to the problem of finding more documents like this one.
</p>
<p>
The process of finding more documents like this is perennial. The problem is addressed in the field of traditional librarianship through the application of controlled vocabulary terms, author/title authority lists, the collocation of physical materials through the use of classification numbers, and bibliographic instruction as well as information literacy classes.
</p>
<p>
In the field of information retrieval, the problem is addressed through the application of mathematics. More specifically but simply stated, by plotting the TFIDF scores of two or more terms from a set of documents on a Cartesian plane it is possible to calculate the similarity between said documents by comparing the angle and length of the resulting vectors &#8212; a measure called &#8220;cosine similarity&#8221;. By extending the process to any number of documents and any number of dimensions it is relatively easy to find more documents like this one.
</p>
<p>
Suppose we have two documents: A and B. Suppose each document contains many words but those words were only science and art. Furthermore, suppose document A contains the word science 9 times and the word art 10 times. Given these values, we can plot the relationship between science and art on a graph, below. Document B can be plotted similarly supposing science occurs 6 times and the word art occurs 14 times. The resulting lines, beginning at the graph&#8217;s origin (O) to their end-points (A and B), are called &#8220;vectors&#8221; and they represent our documents on a Cartesian plane:
</p>
<pre>
  s    |
  c  9 |         * A 
  i    |        *     
  e    |       *       
  n  6 |      *      * B
  c    |     *     *
  e    |    *    *
       |   *   *
       |  *  *   
       | * * 
       O-----------------------
                10   14
                
                  art
                
  Documents A and B represented as vectors
</pre>
<p>
If the lines OA and OB were on top of each other and had the same length, then the documents would be considered equal &#8212; exactly similar. In other words, the smaller the angle AOB is as well as the smaller the difference between the length lines OA and OB the more likely the given documents are the same. Conversely, the greater the angle of AOB and the greater the difference of the lengths of lines OA and OB the more unlike the two documents.
</p>
<p>
This comparison is literally expressed as the inner (dot) product of the vectors divided by the product of the Euclidian magnitudes of the vectors. Mathematically, it is stated in the following form and is called &#8220;cosine similarity&#8221;:
</p>
<blockquote><p>( ( A.B ) / ( ||A|| * ||B|| ) )</p></blockquote>
<p>
Cosine similarity will return a value between 0 and 1. The closer the result is to 1 the more similar the vectors (documents) compare.
</p>
<p>
Most cosine similarity applications apply the comparison to every word in a document. Consequently each vector has a large number of dimensions making calculations time consuming. For the purposes of this series, I am only interested in the &#8220;big names&#8221; and &#8220;great ideas&#8221;, and since The Great Books of the Western World includes about 150 of such terms, the application of cosine similarity is simplified.
</p>
<p>
To implement cosine similarity in Perl three additional subroutines needed to be written. One to calculate the inner (dot) product of two vectors. Another was needed to calculate the Euclidian length of a vector. These subroutines are listed below:
</p>
<pre><code>  sub dot {
  
    # dot product = (a1*b1 + a2*b2 ... ) where a and b are equally sized arrays (vectors)
    my $a = shift;
    my $b = shift;
    my $d = 0;
    for ( my $i = 0; $i &lt;= $#$a; $i++ ) { $d = $d + ( $$a[ $i ] * $$b[ $i ] ) }
    return $d;
  
  }

  sub euclidian {
  
    # Euclidian length = sqrt( a1^2 + a2^2 ... ) where a is an array (vector)
    my $a = shift;
    my $e = 0;
    for ( my $i = 0; $i &lt;= $#$a; $i++ ) { $e = $e + ( $$a[ $i ] * $$a[ $i ] ) }
    return sqrt( $e );
  
  }</code></pre>
<p>
The subroutine that does the actual comparison is listed below. Given a reference to an array of two books, stop words, and ideas, it indexes each book sans stop words, searches each book for a great idea, uses the resulting TFIDF score to build the vectors, and computes similarity:
</p>
<pre><code>  sub compare {
  
    my $books     = shift;
    my $stopwords = shift;
    my $ideas     = shift;
    
    my %index = ();
    my @a     = ();
    my @b     = ();
    
    # index
    foreach my $book ( @$books ) { $index{ $book } = &amp;index( $book, $stopwords ) }
    
    # process each idea
    foreach my $idea ( sort( keys( %$ideas ))) {
    
      # search
      my ( $hits, @files ) = &amp;search( \%index, $idea );
      
      # rank
      my $ranks = &amp;rank( \%index, [ @files ], $idea );
      
      # build vectors, a &amp; b
      my $index = 0;
      foreach my $file ( @$books ) {
      
        if    ( $index == 0 ) { push @a, $$ranks{ $file }}
        elsif ( $index == 1 ) { push @b, $$ranks{ $file }}
        $index++;
        
        }
      
      }
      
      # compare; scores closer to 1 approach similarity
      return ( cos( &amp;dot( [ @a ], [ @b ] ) / ( &amp;euclidian( [ @a ] ) * &amp;euclidian( [ @b ] ))));
  
  }</code></pre>
<p>
Finally, a script, compare.pl, was written glueing the whole thing together. It&#8217;s heart is listed here:
</p>
<pre><code>  # compare each document...
  for ( my $a = 0; $a &lt;= $#corpus; $a++ ) {
  
    print "\td", $a + 1;
    
    # ...to every other document
    for ( my $b = 0; $b &lt;= $#corpus; $b++ ) {
    
      # avoid redundant comparisons
      if ( $b &lt;= $a ) { print "\t - " }
      
      # process next two documents
      else {
                      
        # (re-)initialize
        my @books = sort( $corpus[ $a ], $corpus[ $b ] );
        
        # do the work; scores closer to 1000 approach similarity
        print "\t", int(( &amp;compare( [ @books ], $stopwords, $ideas )) * 1000 );
      
      }
    
    }
    
    # next line
    print "\n";
  
  }</code></pre>
<p>
In a nutshell, compare.pl loops through each document in a corpus and compares it to every other document in the corpus while skipping duplicate comparisons. Remember, only the dimensions representing &#8220;big names&#8221; and &#8220;great ideas&#8221; are calculated. Finally, it displays a similarity score for each pair of documents. Scores are multiplied by 1000 to make them easier to read. Given the sample data from the distribution, the following matrix is produced:
</p>
<pre>
  $ ./compare.pl 
    Comparison: scores closer to 1000 approach similarity
    
        d1   d2   d3   d4   d5   d6
    
    d1   -  922  896  858  857  948
    d2   -   -   887  969  944  971
    d3   -   -    -   951  954  964
    d4   -   -    -    -   768  905
    d5   -   -    -    -    -   933
    d6   -   -    -    -    -    - 
    
    d1 = aristotle.txt
    d2 = hegel.txt
    d3 = kant.txt
    d4 = librarianship.txt
    d5 = mississippi.txt
    d6 = plato.txt
</pre>
<p>
From the matrix is it obvious that documents d2 (hegel.txt) and d6 (plato.txt) are the most similar since their score is the closest to 1000. This means the vectors representing these documents are closer to congruency than the other documents. Notice how all the documents are very close to 1000. This makes sense since all of the documents come from the Alex Catalogue and the Alex Catalogue documents are selected because of the &#8220;great idea-ness&#8221;. The documents should be similar. Notice which documents are the least similar: d4 (librarianship.txt) and d5 (mississippi.txt). The first is a history of librarianship. The second is a novel called Life on the Mississippi. Intuitively, we would expect this to be true; neither one of these documents are the topic of &#8220;great ideas&#8221;.
</p>
<p>
(Argg! Something is incorrect with my trigonometry. When I duplicate a document and run compare.pl the resulting cosine similarity value between the exact same documents is 540, not 1000. What am I doing wrong?)
</p>
<h3>Summary</h3>
<p>
This last part in the series demonstrated ways term frequency/inverse document frequency (TFIDF) can be applied to over-arching (or underlying) themes in a corpus of documents, specifically the &#8220;big names&#8221; and &#8220;great ideas&#8221; of Western civilization. It also demonstrated how TFIDF scores can be used to create vectors representing documents. These vectors can then be compared for similarity, and, by extension, the documents they represent can be compared for similarity.
</p>
<p>
The purpose of the entire series was to bring to light and take the magic out of a typical relevancy ranking algorithm. A distribution including all the source code and sample documents is available online. Use the distribution as a learning tool for your own explorations.
</p>
<p>
As alluded to previously, TFIDF is like any good folk song. It has many variations and applications. TFIDF is also like milled grain because it is a fundemental ingredient to many recipes. Some of these recipies are for bread, but some of them are for pies or just thickener. Librarians and libraries need to incorporate more mathematical methods into their processes. There needs to be a stronger marriage between the social characteristics of librarianship and the logic of mathematics. (Think <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscience</a>.) The application of TFIDF in libraries is just one example.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/05/tfidf-in-libraries-part-iii-of-iii-for-thinkers/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>The decline of books</title>
		<link>./../2009/05/the-decline-of-books/index.html</link>
				<pubDate>Fri, 08 May 2009 13:41:04 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">./../index.html?p=276</guid>
				<description><![CDATA[[This posting is in response to a tiny thread on the NGC4Lib mailing list about the decline of books. &#8211;ELM] Yes, books are on the decline, but in order to keep this trend in perspective it is important to not confuse the medium with the message. The issue is not necessarily about books as much [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>[This posting is in response to a tiny thread on the NGC4Lib mailing list about the <a href="http://serials.infomotions.com/ngc4lib/sru/?operation=searchRetrieve&#038;version=1.1&#038;stylesheet=%2Fngc4lib%2Fsru%2Fstyle.xsl&#038;query=subject%3D%22decline+of+books%22">decline of books</a>. &#8211;ELM]</p>
<p>Yes, books are on the decline, but in order to keep this trend in perspective it is important to not confuse the medium with the message. The issue is not necessarily about books as much as it is about the stuff inside the books.</p>
<p>Books &#8212; codexes &#8212; are a particular type of technology. Print words and pictures on leaves of paper. Number the pages. Add an outline of the book&#8217;s contents &#8212; a table of contents. Make the book somewhat searchable by adding an index. Wrap the whole thing between a couple of boards. The result is a thing that is portable, durable, long- lasting, and relatively free-standing as well as independent of other technology. But all of this is really a transport medium, a container for the content.</p>
<p>Consider the content of books. Upon close examination it is a recorded manifestation of humanity. Books &#8212; just like the Web &#8212; are a reflection of humankind because just anything you can think of can be manifested in printed form. Birth. Growth. Love. Marriage. Aging. Death. Poetry. Prose. Mathematics. Astronomy. Business. Instructions. Facts. Directories. Gardening. Theses and dissertations. News. White papers. Plans. History. Descriptions. Dreams. Weather. Stock quotes. The price of gold. Things for sale. Stories both real and fictional. Etc. Etc. Etc.</p>
<p>Consider the length of time humankind has been recording things in written form. Maybe five thousand years. What were the mediums used? Stone and clay tablets? Papyrus scrolls. Vellum. Paper. To what extent did people bemoan the death of clay tablets? To what extent did they bemoan the movement from scrolls to codexes? Probably the cultures who valued verbal traditions as opposed to written traditions (think of the American Indians) had more to complain about than the migration from one written from to another. The medium is not as important as the message.</p>
<p>Different types of content lend themselves to different mediums. Music can be communicated via the written score, but music is really intended to be experienced through hearing. Sculpture is, by definition, a three-dimensional medium, yet we take photographs of it, a two-dimensional medium. The poetry and prose lend themselves very well to the written word, but they can be seen as forms of storytelling, and while there are many advantages to stories being written down, there are disadvantages as well. No sound effects. Where to put the emphasis on phrases? Hand gestures to communicate subtle distinctions are lost. It is for all of these reasons that libraries (and museums and archives) also collect the mediums that better represent this content. Paintings. Sound recordings. Artifacts. CDs and DVDs.</p>
<p>The containers of information will continue to change, but I assert that the content will not. The content will continue to be a reflection of humankind. It will represent all of the things that it means to be men, woman, and children. It will continue to be an exposition of our collective thoughts, feelings, beliefs, and experiences.</p>
<p>Libraries and other &#8220;cultural heritage institutions&#8221; do not have and never did have a monopoly on recorded content, but now, more than ever, and as we have moved away from an industrial-based economy to a more service-based economy whose communication channels are electronic and global, the delivery of recorded content, in whatever form, is more profitable. Consequently there is more competition. Libraries need to get a grip on what they are all about. If it is about the medium &#8212; books, CDs, articles &#8212; then the future is grim. If it is about content and making that content useful to their clientele, then the opportunities are wide open. Shifting a person&#8217;s focus from the how to the what is challenging. Looking at the forest from the trees is sometimes overwhelming. Anybody can get information these days. We are still drinking from the proverbial fire hose. The problem to be solved is less about discovery and more about use. It is about placing content in context. Providing a means to understanding it, manipulating it, and using it to solve the problems revolving around what it means to be human.</p>
<p>We are a set of educated people. If we put our collective minds to the problem, then I sincerely believe libraries can and will remain relevant. In fact, that is why I instituted this [the NGC4Lib] mailing list.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Code4Lib Software Award: Loose ends</title>
		<link>./../2009/04/code4lib-software-award-loose-ends/index.html</link>
				<comments>./../2009/04/code4lib-software-award-loose-ends/index.html#comments</comments>
				<pubDate>Mon, 27 Apr 2009 12:42:44 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=273</guid>
				<description><![CDATA[Loose ends make me feel uncomfortable, and one of the loose ends in my professional life is the Code4Lib Software Award. Code4Lib began as a mailing list in 2003 and has grown to about 1,200 subscribers from all over the world. New people subscribe to the list almost daily. Its Web presence started up in [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Loose ends make me feel uncomfortable, and one of the loose ends in my professional life is the <a href="./../2009/03/code4lib-open-source-software-award/index.html">Code4Lib Software Award</a>.</p>
<p>Code4Lib began as a mailing list in 2003 and has grown to about 1,200 subscribers from all over the world. New people subscribe to the list almost daily. Its Web presence started up in 2005. Our conferences have been stimulating, informative, and productive for all three years of their existence. Our latest venture &#8212; the journal &#8212; records, documents, and shares the practical experience of our community. Underlying all of this is an IRC channel where answers to library-related computer problems can be answered in real-time. Heck, there even exists three for four Code4Lib &#8220;franchises&#8221;. In sum, by exploiting both traditional and less traditional mediums the Code4Lib Community has grown and matured quickly over the past five years. In doing so it has provided valuable and long-lasting services to itself as well as the greater library profession.</p>
<p>It is for the reasons outlined above that I believe our community is ripe for an award. Good things happen in Code4Lib. These things begin with individuals, and I believe the good code written by these individuals ought to be formally recognized. Unfortunately, ever since I put forward the idea, I have heard more negative things than positive. To paraphrase, &#8220;It would be seen as an endorsement, and we don&#8217;t endorse&#8230; It would turn out to be just a popularity contest&#8230; There are so many characteristics of good software that any decision would seem arbitrary.&#8221;</p>
<p>Apparently the place for an award is not as obvious to others as it is to me. Apparently our community is not as ready for an award as I thought we were. That is why, for the time being, I am withdrawing my offer to sponsor one. Considering who I am, I simply don&#8217;t have the political wherewithal to make the award a reality, but I do predict there will be an award at some time, just not right now. The idea needs to ferment for a while longer.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/04/code4lib-software-award-loose-ends/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>TFIDF In Libraries: Part II of III (For programmers)</title>
		<link>./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html</link>
				<comments>./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html#comments</comments>
				<pubDate>Tue, 21 Apr 2009 02:42:39 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[term frequency/inverse document frequency (TFIDF)]]></category>

		<guid isPermaLink="false">./../index.html?p=266</guid>
				<description><![CDATA[This is the second of a three-part series called TFIDF In Libraries, where relevancy ranking techniques are explored through a set of simple Perl programs. In Part I relevancy ranking was introduced and explained. In Part III additional word/document weighting techiques will be explored to the end of filtering search results or addressing the perennial [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is the second of a three-part series called TFIDF In Libraries, where relevancy ranking techniques are explored through a set of simple Perl programs. In <a href="./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html">Part I</a> relevancy ranking was introduced and explained. In <a href="./../2009/05/tfidf-in-libraries-part-iii-of-iii-for-thinkers/index.html">Part III</a> additional word/document weighting techiques will be explored to the end of filtering search results or addressing the perennial task of &#8220;finding more documents like this one.&#8221; In the end it is the hoped to demonstrate that relevancy ranking is not magic nor mysterious but rather the process of applying statistical techiques to textual objects.
</p>
<h3>TFIDF, again</h3>
<p>
As described in Part I, term frequency/inverse document frequency (TFIDF) is a process of counting words in a document as well as throughout a corpus of documents to the end of sorting documents in statistically relevent ways.
</p>
<p>
Term frequency (TF) is essencially a percentage denoting the number of times a word appears in a document. It is mathematically expressed as C / T, where C is the number of times a word appears in a document and T is the total number of words in the same document.
</p>
<p>
Inverse document frequency (IDF) takes into acount that many words occur many times in many documents. Stop words and the word &#8220;human&#8221; in the MEDLINE database are very good examples. IDF is mathematically expressed as D / DF, where D is the total number of documents in a corpus and DF is the number of document in which a particular word is found. As D / DF increases so does the significance of the given word.
</p>
<p>
Given these two factors, TFIDF is literally the product of TF and IDF:
</p>
<blockquote><p>
TFIDF = ( C / T ) * ( D / DF )
</p></blockquote>
<p>
This is the basic form that has been used to denote relevance ranking for more than forty years, and please take note that it requires no advanced mathematical knowledge &#8212; basic arithmatic.
</p>
<p>
Like any good recipe or folk song, TFIDF has many variations. Google, for example, adds additional factors into their weighting scheme based on the popularity of documents. Other possibilities could include factors denoting the characteristics of the person using the texts. In order to accomodate for the wide variety of document sizes, the natural log of IDF will be employed throughout the balance of this demonstration. Therefore, for the purposes used here, TFIDF will be defined thus:
</p>
<blockquote><p>
TFIDF = ( C / T ) * log( D / DF )
</p></blockquote>
<h3>Simple Perl subroutines</h3>
<p>
In order to put theory into practice, I wrote a number of Perl subroutines implementing various aspects of relevancy ranking techniques. I then wrote a number of scripts exploiting the subroutines, essencially wrapping them in a user interface.
</p>
<p>
Two of the routines are trivial and will not be explained in any greater detail than below:
</p>
<ul>
<li>corpus &#8211; Returns an array of all the .txt files in the current directory, and is used to denote the library of content to be analyzed.</li>
<li>slurp_words &#8211; Returns a reference to a hash of all the words in a file, specifically for the purposes of implementing a stop word list.</li>
</ul>
<p>
Two more of the routines are used to support indexing and searching the corpus. Again, since neither is the focus of this posting, each will only be outlined:
</p>
<ul>
<li>index &#8211; Given a file name and a list of stop words, this routine returns a reference to a hash containing all of the words in the file (san stop words) as well as the number of times each word occurs. Strictly speaking, this hash is not an index but it serves our given purpose adequately.</li>
<li>search &#8211; Given an &#8220;index&#8221; and a query, this routine returns the number of times the query was found in the index as well as an array of files listing where the term was found. Search is limited. It only supports single-term queries, and there are no fields for limiting.</li>
</ul>
<p>
The heart of the library of subroutines is used to calculate TFIDF, ranks search results, and classify documents. Of course the TFIDF calculation is absolutely necessary, but ironically, it is the most straight-forward routine in the collection. Given values for C, T, D, and DF it returns decimal between 0 and 1. Trivial:
</p>
<pre><code>  # calculate tfidf
  sub tfidf {
  
    my $n = shift;  # C
    my $t = shift;  # T
    my $d = shift;  # D
    my $h = shift;  # DF
    
    my $tfidf = 0;
    
    if ( $d == $h ) { $tfidf = ( $n / $t ) }
    else { $tfidf = ( $n / $t ) * log( $d / $h ) }
    
    return $tfidf;
    
  }
</code></pre>
<p>
Many readers will probably be most interested in the rank routine. Given an index, a list of files, and a query, this code calculates TFIDF for each file and returns the results as a reference to a hash. It does this by repeatedly calculating the values for C, T, D, and DF for each of the files and calling tfidf:
</p>
<pre><code>  # assign a rank to a given file for a given query
  sub rank {
  
    my $index = shift;
    my $files = shift;
    my $query = shift;
    
    my %ranks = ();
    
    foreach my $file ( @$files ) {
    
      # calculate n
      my $words = $$index{ $file };
      my $n = $$words{ $query };
      
      # calculate t
      my $t = 0;
      foreach my $word ( keys %$words ) { $t = $t + $$words{ $word } }
      
      # assign tfidf to file  
      $ranks{ $file } = &amp;tfidf( $n, $t, keys %$index, scalar @$files );
    
    }
    
    return \%ranks;

  }
</code></pre>
<p>
The classify routine is an added bonus. Given the index, a file, and the corpus of files, this function calculates TFIDF for each word in the file and returns a refernece to a hash containing each word and its TFIDF value. In other words, instead of calculating TFIDF for a given query in a subset of documents, it calculates TFIDF for each word in an entire corpus. This proves useful in regards to automatic classification. Like rank, it repeatedly determines values for C, T, D, and DF and calls tfidf:
</p>
<pre><code>  # rank each word in a given document compared to a corpus
  sub classify {
  
    my $index  = shift;
    my $file   = shift;
    my $corpus = shift;
    
    my %tags = ();
    
    foreach my $words ( $$index{ $file } ) {
    
      # calculate t
      my $t = 0;
      foreach my $word ( keys %$words ) { $t = $t + $$words{ $word } }
      
      foreach my $word ( keys %$words ) {
      
        # get n
        my $n = $$words{ $word };
        
        # calculate h
        my ( $h, @files ) = &amp;search( $index, $word );
        
        # assign tfidf to word
        $tags{ $word } = &amp;tfidf( $n, $t, scalar @$corpus, $h );
      
      }
    
    }
    
    return \%tags;
  
  }
</code></pre>
<h3>Search.pl</h3>
<p>
Two simple Perl scripts are presented, below, taking advantage of the routines described, above. The first is search.pl. Given a single term as input this script indexes the .txt files in the current directory, searches them for the term, assigns TFIDF to each of the results, and displays the results in a relevancy ranked order. The essencial aspects of the script are listed here:
</p>
<pre><code>  # define
  use constant STOPWORDS => 'stopwords.inc';
  
  # include
  require 'subroutines.pl';
    
  # get the query
  my $q = lc( $ARGV[ 0 ] );

  # index
  my %index = ();
  foreach my $file ( &amp;corpus ) { $index{ $file } = &amp;index( $file, &amp;slurp_words( STOPWORDS ) ) }
  
  # search
  my ( $hits, @files ) = &amp;search( \%index, $q );
  print "Your search found $hits hit(s)\n";
  
  # rank
  my $ranks = &amp;rank( \%index, [ @files ], $q );
  
  # sort by rank and display
  foreach my $file ( sort { $$ranks{ $b } &lt;=&gt; $$ranks{ $a } } keys %$ranks ) {
  
    print "\t", $$ranks{ $file }, "\t", $file, "\n"
  
  }
  
  # done
  print "\n";
  exit;
</code></pre>
<p>
Output from the script looks something like this:
</p>
<pre><code>  $ ./search.pl knowledge
  Your search found 6 hit(s)
    0.0193061840120664    plato.txt
    0.00558586078987563   kant.txt
    0.00299602568022012   aristotle.txt
    0.0010031177985631    librarianship.txt
    0.00059150597421034   hegel.txt
    0.000150303111274403  mississippi.txt
</code></pre>
<p>
From these results you can see that the document named plato.txt is the most relevent because it has the highest score, in fact, it is almost four times more relevant than the second hit, kant.txt. For extra credit, ask yourself, &#8220;At what point do the scores become useless, or when do the scores tell you there is nothing of significance here?&#8221;
</p>
<h3>Classify.pl</h3>
<p>
As alluded to in Part I of this series, TFIDF can be turned on its head to do automatic classification. Weigh each term in a corpus of documents, and list the most significant words for a given document. Classify.pl does this by denoting a lower bounds for TFIDF scores, indexing an entire corpus, weighing each term, and outputing all the terms whose scores are greater than the lower bounds. If no terms are greater than the lower bounds, then it lists the top N scores as defined by a configuration. The essencial aspects of classify.pl are listed below:
</p>
<pre><code>  # define
  use constant STOPWORDS    => 'stopwords.inc';
  use constant LOWERBOUNDS  => .02;
  use constant NUMBEROFTAGS => 5;
  
  # require
  require 'subroutines.pl';
  
  # initialize
  my @corpus = &amp;corpus;
  
  # index
  my %index = ();
  foreach my $file (@corpus ) { $index{ $file } = &amp;index( $file, &amp;slurp_words( STOPWORDS ) ) }
  
  # classify each document
  foreach my $file ( @corpus ) {
  
    print $file, "\n";
    
    # list tags greater than a given score
    my $tags  = &amp;classify( \%index, $file, [ @corpus ] );
    my $found = 0;
    foreach my $tag ( sort { $$tags{ $b } &lt;=&gt; $$tags{ $a } } keys %$tags ) {
    
      if ( $$tags{ $tag } &gt; LOWERBOUNDS ) {
      
        print "\t", $$tags{ $tag }, "\t$tag\n";
        $found = 1;
      
      }
      
      else { last }
      
    }
      
    # accomodate tags with low scores
    if ( ! $found ) {
    
      my $n = 0;
      foreach my $tag ( sort { $$tags{ $b } <=> $$tags{ $a } } keys %$tags ) {
      
        print "\t", $$tags{ $tag }, "\t$tag\n";
        $n++;
        last if ( $n == NUMBEROFTAGS );
      
      }
  
    }
    
    print "\n";
  
  }
  
  # done
  exit;
</code></pre>
<p>
For example, sample, yet truncated, output from classify.pl looks like this:
</p>
<pre><code>  aristotle.txt
    0.0180678691531642  being
    0.0112840859266579  substances
    0.0110363803118312  number
    0.0106083766432284  matter
    0.0098440843778661  sense
  
  mississippi.txt
    0.00499714142455761  mississippi
    0.00429324597184886  boat
    0.00418922035591656  orleans
    0.00374087743616293  day
    0.00333830388445574  river
</code></pre>
<p>
Thus, assuming a lower TFIDF bounds of 0.02, the words being, substance, number, matter, and sense are the most significant in the document named aristotle.txt. But since none of the words in mississippi.txt have a score that high the top five words are returned instead. For more extra credit, think of ways classify.pl can be improved by answering, &#8220;How can the output be mapped to controlled vocabulary terms or expanded through the use of some other thesarus?&#8221;
</p>
<h3>Summary</h3>
<p>
The Perl subroutines and scripts described here implement TFIDF to do rudimentary ranking of search results and automatic classification. They are not designed to be production applications, just example tools for the purposes of learning. Turning the ideas implemented in these scripts into production applications have been the fodder for many people&#8217;s careers and entire branches of computer science.
</p>
<p>
You can <a href="./../wp-content/uploads/2009/04/tfidf.tar.gz">download the scripts, subroutines, and sample data</a> in order for you to learn more. You are encouraged to remove the .txt files from the distribution and replace them with your own data. I think your search results and automatic classification output will confirm in your mind that TFIDF is well-worth the time and effort of the library community. Given the amounts of full text books and journal articles freely available on the Internet, it behooves the library profession to learn to exploit these concepts because our traditional practices simply: 1) do not scale, or 2) do not meet with our user&#8217;s expectations. Furthermore, farming these sorts of solutions out to vendors is irresponsible.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Ralph Waldo Emerson&#8217;s Essays</title>
		<link>./../2009/04/ralph-waldo-emersons-essays/index.html</link>
				<comments>./../2009/04/ralph-waldo-emersons-essays/index.html#comments</comments>
				<pubDate>Sun, 19 Apr 2009 22:32:47 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">./../index.html?p=262</guid>
				<description><![CDATA[It was with great anticipation that I read Ralph Waldo Emerson&#8217;s Essays (both the First Series as well as the Second Series), but my expectations were not met. In a sentence I thought Emerson used too many words to say things that could have been expressed more succinctly. The Essays themselves are a set of [&#8230;]]]></description>
								<content:encoded><![CDATA[<table align='right' padding='10'>
<tr>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=0674267206&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe></td>
</tr>
</table>
<p>
It was with great anticipation that I read Ralph Waldo Emerson&#8217;s <cite>Essays</cite> (both the <cite><a href="http://infomotions.com/etexts/literature/american/1800-1899/emerson-essays-231.htm">First Series</a></cite> as well as the <cite><a href="http://infomotions.com/etexts/literature/american/1800-1899/emerson-essays-232.htm">Second Series</a></cite>), but my expectations were not met. In a sentence I thought Emerson used too many words to say things that could have been expressed more succinctly.
</p>
<p>
The <cite>Essays</cite> themselves are a set of unsystematic short pieces of literature describing what one man thinks of various classic themes, such as but not limited to: history, intellect, art, experience, gifts, nature, etc. The genre itself &#8212; the literary essay or &#8220;attempts&#8221; &#8212; was apparently first popularized by Montaigne and mimicked by other &#8220;great&#8221; authors in the Western tradition including Bacon, Rousseau, and Thoreau. Considering this, maybe the poetic and circuitous nature of Emerson&#8217;s &#8220;attempts&#8221; should not be considered a fault.
</p>
<h3>Art<br />
</h3>
<p>
Because it was evident that later essays did not necessarily build on previous ones, I jumped around from chapter to chapter as whimsy dictated. Probably one of the first I read was &#8220;Art&#8221; where he describes the subject as the product of men detached from society.
</p>
<blockquote><p>
It is the habit of certain minds to give an all-excluding fulness to the objects, the thought, the world, they alight upon, and to make that for the time the deputy of the world. These are the artists, the orators, the leaders of society. The power to detach and to magnify by detaching, is the essence of rhetoric in the hands of the orator and the poet.
</p></blockquote>
<p>
But at the same time he seems to contradict himself earlier when he says:
</p>
<blockquote><p>
No man can quite emancipate himself from the age and country, or produce a model in which the education, the religion, the politics, usages, and arts, of his times shall have not share. Though he were never so original, never so wilful and fantastic, he cannot wipe out of his work every trace of the thoughts amidst which it grew.
</p></blockquote>
<p>
How can something be the product of a thing detached from society when it is not possible become detached in the first place?
</p>
<h3>Intellect<br />
</h3>
<p>
I, myself, being a person of mind more than heart, was keenly interested in the essay entitled &#8220;Intellect&#8221; where Emerson describes it as something:
</p>
<blockquote><p>
&#8230;void of affection, and sees an object as it stands in the light of science, cool and disengaged&#8230; Intellect pierces the form, overlaps the wall, detects intrinsic likeness between remote things, and reduces all things into a few principles.
</p></blockquote>
<p>
At the same time, intellect is not necessarily genius, since genius also requires spontaneity:
</p>
<blockquote><p>
&#8230;but the power of picture or expression, in the most enriched and flowing nature, implies a mixture of will, a certain control over the spontaneous states, without which no production is possible. It is a conversation of all nature into the rhetoric of thought under the eye of judgement, with the strenuous exercise of choice. And yet the imaginative vocabulary seems to be spontaneous also. It does not flow from experience only or mainly, but from a richer source. Not by any conscious imitation of particular forms are the grand strokes of the painter executed, but by repairing to the fountain-head of all forms in his mind.
</p></blockquote>
<h3>The Poet</h3>
<p>
Emerson apparently carried around his journal wherever he went. He made a living writing and giving talks. Considering this, and considering the nature of his writing, I purposely left his essay entitled &#8220;The Poet&#8221; until last. Not surprisingly, he had a lot to say on the subject, and I found this to be the hilight of my readings:
</p>
<blockquote><p>
The poet is the person in whom these powers [the reproduction of senses] are in balance, the man without impediment, who sees and handles that which others dream of, traverses the whole scale of experience, and is representative of man, in virtue offering the largest power to receive and to impart&#8230; The poet is the sayer, the namer, and represents beauty&#8230; The poet does not wait for the hero or the sage, but as they act and think primarily, so he writes pirmarily what will and must be spoken, reckoning the others, though primaries also, yet, in repsect to him, secondaries and servants.
</p></blockquote>
<p>
I found it encouraging that science was mentioned a few times during his discourse on the poet, since I believe a better understanding of one&#8217;s environment comes from the ability to think both artistically as well as scientifically, an idea I call <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscience</a>:
</p>
<blockquote><p>
&#8230;science always goes abreast with the just elevation of the man, keeping step with religion and metaphysics; or, the state of science is an index of our self-knowledge&#8230; All the facts of the animal economy, &#8212; sex, nutriment, gestation, birth, growth &#8212; are symbols of passage of the world into the soul of man, to suffer there a change, and reappear a new and higher fact. He uses forms according to the life, and not according to the form. This is true science.
</p></blockquote>
<h3>Back to the beginning</h3>
<p>
I think Emerson must have been a bit frustrated (or belittling himself in order be percieved as more believable) with a search for truth when he says, &#8220;I look in vain for the poet whom I describe.&#8221; But later on he summarizes much of what the Essays describe when he says, &#8220;Art is the path of the creator to his work,&#8221; and he then goes on to say what I said at the beginning of this review:
</p>
<blockquote><p>
The poet pours out verses in every solitude. Most of the things he says are conventional, no doubt; but by and by he says something which is original and beautiful. That charms him.
</p></blockquote>
<p>
I was hoping to find more inspriation regarding the definition of Unitarianism throughout the book, but alas, the term was only mentioned a couple of times. Instead, I learnd more indirectly that Emerson affected my thinking in more subtle ways. I have incorporated much of his thought into my own without knowing it. Funny how one&#8217;s education manifests itself.
</p>
<h3>Word cloud</h3>
<p>
Use this word cloud of the combined <cite>Essays</cite> to get an idea of what they are &#8220;about&#8221;:
</p>
<p style='margin-left:10%; margin-right:10%; text-align: center'><span style='font-size: 174%'>nature</span> &nbsp;<span style='font-size: 173%'>men</span> &nbsp;<span style='font-size: 172%'>life</span> &nbsp;<span style='font-size: 171%'>world</span> &nbsp;<span style='font-size: 170%'>good</span> &nbsp;<span style='font-size: 169%'>shall</span> &nbsp;<span style='font-size: 168%'>soul</span> &nbsp;<span style='font-size: 167%'>great</span> &nbsp;<span style='font-size: 166%'>thought</span> &nbsp;<span style='font-size: 165%'>like</span> &nbsp;<span style='font-size: 164%'>love</span> &nbsp;<span style='font-size: 163%'>power</span> &nbsp;<span style='font-size: 162%'>know</span> &nbsp;<span style='font-size: 161%'>let</span> &nbsp;<span style='font-size: 160%'>mind</span> &nbsp;<span style='font-size: 159%'>truth</span> &nbsp;<span style='font-size: 158%'>make</span> &nbsp;<span style='font-size: 157%'>society</span> &nbsp;<span style='font-size: 156%'>persons</span> &nbsp;<span style='font-size: 155%'>day</span> &nbsp;<span style='font-size: 154%'>old</span> &nbsp;<span style='font-size: 153%'>character</span> &nbsp;<span style='font-size: 152%'>heart</span> &nbsp;<span style='font-size: 151%'>genius</span> &nbsp;<span style='font-size: 150%'>god</span> &nbsp;<span style='font-size: 149%'>come</span> &nbsp;<span style='font-size: 148%'>beauty</span> &nbsp;<span style='font-size: 147%'>law</span> &nbsp;<span style='font-size: 146%'>being</span> &nbsp;<span style='font-size: 145%'>history</span> &nbsp;<span style='font-size: 144%'>fact</span> &nbsp;<span style='font-size: 143%'>true</span> &nbsp;<span style='font-size: 142%'>makes</span> &nbsp;<span style='font-size: 141%'>work</span> &nbsp;<span style='font-size: 140%'>virtue</span> &nbsp;<span style='font-size: 139%'>better</span> &nbsp;<span style='font-size: 138%'>art</span> &nbsp;<span style='font-size: 137%'>laws</span> &nbsp;<span style='font-size: 136%'>self</span> &nbsp;<span style='font-size: 135%'>form</span> &nbsp;<span style='font-size: 134%'>right</span> &nbsp;<span style='font-size: 133%'>eye</span> &nbsp;<span style='font-size: 132%'>best</span> &nbsp;<span style='font-size: 131%'>action</span> &nbsp;<span style='font-size: 130%'>poet</span> &nbsp;<span style='font-size: 129%'>friend</span> &nbsp;<span style='font-size: 128%'>think</span> &nbsp;<span style='font-size: 127%'>feel</span> &nbsp;<span style='font-size: 126%'>eyes</span> &nbsp;<span style='font-size: 125%'>beautiful</span> &nbsp;<span style='font-size: 124%'>words</span> &nbsp;<span style='font-size: 123%'>human</span> &nbsp;<span style='font-size: 122%'>spirit</span> &nbsp;<span style='font-size: 121%'>little</span> &nbsp;<span style='font-size: 120%'>light</span> &nbsp;<span style='font-size: 119%'>facts</span> &nbsp;<span style='font-size: 118%'>speak</span> &nbsp;<span style='font-size: 117%'>person</span> &nbsp;<span style='font-size: 116%'>state</span> &nbsp;<span style='font-size: 115%'>natural</span> &nbsp;<span style='font-size: 114%'>intellect</span> &nbsp;<span style='font-size: 113%'>sense</span> &nbsp;<span style='font-size: 112%'>live</span> &nbsp;<span style='font-size: 111%'>force</span> &nbsp;<span style='font-size: 110%'>use</span> &nbsp;<span style='font-size: 109%'>seen</span> &nbsp;<span style='font-size: 108%'>thou</span> &nbsp;<span style='font-size: 107%'>long</span> &nbsp;<span style='font-size: 106%'>water</span> &nbsp;<span style='font-size: 105%'>people</span> &nbsp;<span style='font-size: 104%'>house</span> &nbsp;<span style='font-size: 103%'>certain</span> &nbsp;<span style='font-size: 102%'>individual</span> &nbsp;<span style='font-size: 101%'>end</span> &nbsp;<span style='font-size: 100%'>comes</span> &nbsp;<span style='font-size: 99%'>whilst</span> &nbsp;<span style='font-size: 98%'>divine</span> &nbsp;<span style='font-size: 97%'>property</span> &nbsp;<span style='font-size: 96%'>experience</span> &nbsp;<span style='font-size: 95%'>look</span> &nbsp;<span style='font-size: 94%'>forms</span> &nbsp;<span style='font-size: 93%'>hour</span> &nbsp;<span style='font-size: 92%'>read</span> &nbsp;<span style='font-size: 91%'>place</span> &nbsp;<span style='font-size: 90%'>present</span> &nbsp;<span style='font-size: 89%'>fine</span> &nbsp;<span style='font-size: 88%'>wise</span> &nbsp;<span style='font-size: 87%'>moral</span> &nbsp;<span style='font-size: 86%'>works</span> &nbsp;<span style='font-size: 85%'>air</span> &nbsp;<span style='font-size: 84%'>poor</span> &nbsp;<span style='font-size: 83%'>need</span> &nbsp;<span style='font-size: 82%'>earth</span> &nbsp;<span style='font-size: 81%'>hand</span> &nbsp;<span style='font-size: 80%'>common</span> &nbsp;<span style='font-size: 79%'>word</span> &nbsp;<span style='font-size: 78%'>thy</span> &nbsp;<span style='font-size: 77%'>conversation</span> &nbsp;<span style='font-size: 76%'>young</span> &nbsp;<span style='font-size: 75%'>stand</span> &nbsp;</p>
<p>
And since a picture is worth a thousand words, here is a simple graph illustrating how the 100 most frequently used words in the <cite>Essays</cite> (sans stop words) compare to one another:
</p>
<p style='text-align: center'>
<img src='./../wp-content/uploads/2009/04/emerson-words.png' alt='emerson words' /></p>
]]></content:encoded>
							<wfw:commentRss>./../2009/04/ralph-waldo-emersons-essays/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>TFIDF In Libraries: Part I of III (For Librarians)</title>
		<link>./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html</link>
				<comments>./../2009/04/tfidf-in-libraries-part-i-for-librarians/index.html#comments</comments>
				<pubDate>Mon, 13 Apr 2009 23:57:38 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[term frequency/inverse document frequency (TFIDF)]]></category>

		<guid isPermaLink="false">./../index.html?p=258</guid>
				<description><![CDATA[This is the first of a three-part series called TFIDF In Libraries, where &#8220;relevancy ranking&#8221; will be introduced. In this part, term frequency/inverse document frequency (TFIDF) &#8212; a common mathematical method of weighing texts for automatic classification and sorting search results &#8212; will be described. Part II will illustrate an automatic classification system and simple [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is the first of a three-part series called TFIDF In Libraries, where &#8220;relevancy ranking&#8221; will be introduced. In this part, term frequency/inverse document frequency (TFIDF) &#8212; a common mathematical method of weighing texts for automatic classification and sorting search results &#8212; will be described. <a href="./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html">Part II</a> will illustrate an automatic classification system and simple search engine using TFIDF through a computer program written in Perl. <a href="./../2009/05/tfidf-in-libraries-part-iii-of-iii-for-thinkers/index.html">Part III</a> will explore the possibility of filtering search results by applying TFIDF against sets of pre-defined &#8220;Big Names&#8221; and/or &#8220;Big Ideas&#8221; &#8212; an idea apparently called &#8220;champion lists&#8221;.
</p>
<h3>The problem, straight Boolean logic</h3>
<p>
To many of us the phrase &#8220;relevancy ranked search results&#8221; is a mystery. What does it mean to be &#8220;relevant&#8221;? How can anybody determine relevance for me? Well, a better phrase might have been &#8220;statistically significant search results&#8221;. Taking such an approach &#8212; the application of statistical analysis against texts &#8212; does have its information retrieval advantages over straight Boolean logic. Take for example, the following three documents consisting of a number of words, Table #1:
</p>
<table align='center'>
<tr>
<td style='font-size: 1.125em; font-weight: bold'>Document #1</td>
<td style='font-size: 1.125em; font-weight: bold'>Document #2</td>
<td style='font-size: 1.125em; font-weight: bold'>Document #3</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>Word</td>
<td>Word</td>
</tr>
<tr>
<td>airplane</td>
<td>book</td>
<td>building</td>
</tr>
<tr>
<td>blue</td>
<td>car</td>
<td>car</td>
</tr>
<tr>
<td>chair</td>
<td>chair</td>
<td>carpet</td>
</tr>
<tr>
<td>computer</td>
<td>justice</td>
<td>ceiling</td>
</tr>
<tr>
<td>forest</td>
<td>milton</td>
<td>chair</td>
</tr>
<tr>
<td>justice</td>
<td>newton</td>
<td>cleaning</td>
</tr>
<tr>
<td>love</td>
<td>pond</td>
<td>justice</td>
</tr>
<tr>
<td>might</td>
<td>rose</td>
<td>libraries</td>
</tr>
<tr>
<td>perl</td>
<td>shakespeare</td>
<td>newton</td>
</tr>
<tr>
<td>rose</td>
<td>slavery</td>
<td>perl</td>
</tr>
<tr>
<td>shoe</td>
<td>thesis</td>
<td>rose</td>
</tr>
<tr>
<td>thesis</td>
<td>truck</td>
<td>science</td>
</tr>
</table>
<p>
A search for &#8220;rose&#8221; against the corpus will return three hits, but which one should I start reading? The newest document? The document by a particular author or in a particular format? Even if the corpus contained 2,000,000 documents and a search for &#8220;rose&#8221; returned a mere 100 the problem would remain. Which ones should I spend my valuable time accessing? Yes, I could limit my search in any number of ways, but unless I am doing a known item search it is quite likely the search results will return more than I can use, and information literacy skills will only go so far. Ranked search results &#8212; a list of hits based on term weighting &#8212; has proven to be an effective way of addressing this problem. All it requires is the application of basic arithmetic against the documents being searched.
</p>
<h3>Simple counting</h3>
<p>
We can begin by counting the number of times each of the words appear in each of the documents, Table #2:
</p>
<table align='center'>
<tr>
<td style='font-size: 1.125em; font-weight: bold' colspan='2'>Document #1</td>
<td style='font-size: 1.125em; font-weight: bold' colspan='2'>Document #2</td>
<td style='font-size: 1.125em; font-weight: bold' colspan='2'>Document #3</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>C</td>
<td>Word</td>
<td>C</td>
<td>Word</td>
<td>C</td>
</tr>
<tr>
<td>airplane</td>
<td align='right'>5</td>
<td>book</td>
<td align='right'>3</td>
<td>building</td>
<td align='right'>6</td>
</tr>
<tr>
<td>blue</td>
<td align='right'>1</td>
<td>car</td>
<td align='right'>7</td>
<td>car</td>
<td align='right'>1</td>
</tr>
<tr>
<td>chair</td>
<td align='right'>7</td>
<td>chair</td>
<td align='right'>4</td>
<td>carpet</td>
<td align='right'>3</td>
</tr>
<tr>
<td>computer</td>
<td align='right'>3</td>
<td>justice</td>
<td align='right'>2</td>
<td>ceiling</td>
<td align='right'>4</td>
</tr>
<tr>
<td>forest</td>
<td align='right'>2</td>
<td>milton</td>
<td align='right'>6</td>
<td>chair</td>
<td align='right'>6</td>
</tr>
<tr>
<td>justice</td>
<td align='right'>7</td>
<td>newton</td>
<td align='right'>3</td>
<td>cleaning</td>
<td align='right'>4</td>
</tr>
<tr>
<td>love</td>
<td align='right'>2</td>
<td>pond</td>
<td align='right'>2</td>
<td>justice</td>
<td align='right'>8</td>
</tr>
<tr>
<td>might</td>
<td align='right'>2</td>
<td>rose</td>
<td align='right'>5</td>
<td>libraries</td>
<td align='right'>2</td>
</tr>
<tr>
<td>perl</td>
<td align='right'>5</td>
<td>shakespeare</td>
<td align='right'>4</td>
<td>newton</td>
<td align='right'>2</td>
</tr>
<tr>
<td>rose</td>
<td align='right'>6</td>
<td>slavery</td>
<td align='right'>2</td>
<td>perl</td>
<td align='right'>5</td>
</tr>
<tr>
<td>shoe</td>
<td align='right'>4</td>
<td>thesis</td>
<td align='right'>2</td>
<td>rose</td>
<td align='right'>7</td>
</tr>
<tr>
<td>thesis</td>
<td align='right'>2</td>
<td>truck</td>
<td align='right'>1</td>
<td>science</td>
<td align='right'>1</td>
</tr>
<tr>
<td style='font-weight: bold'>Totals (T)</td>
<td align='right'>46</td>
<td></td>
<td align='right'>41</td>
<td></td>
<td align='right'>49</td>
</tr>
</table>
<p>
Given this simple counting method, searches for &#8220;rose&#8221; can be sorted by its &#8220;term frequency&#8221; (TF) &#8212; the quotient of the number of times a word appears in each document (C), and the total number of words in the document (T) &#8212; TF = C / T. In the first case, rose has a TF value of 0.13. In the second case TF is 0.12, and in the third case it is 0.14. Thus, by this rudimentary analysis, Document #3 is most significant in terms of the word &#8220;rose&#8221;, and Document #2 is the least. Document #3 has the highest percentage of content containing the word &#8220;rose&#8221;.
</p>
<h3>Accounting for common words</h3>
<p>
Unfortunately, this simple analysis needs to be offset considering frequently occurring terms across the entire corpus. Good examples are stop words or the word &#8220;human&#8221; in MEDLINE. Such words are nearly meaningless because they appear so often. Consider Table #3 which includes the number of times each word is found in the entire corpus (DF), and the quotient of the total number of documents (D or in this case, 3) and DF &#8212; IDF = D / DF.  Words with higher scores are more significant across the entire corpus. Search terms whose IDF (&#8220;inverse document frequency&#8221;) score approach 1 are close to useless because they exist in just about every document:
</p>
<table align='center'>
<tr>
<td style='font-size: 1.125em; font-weight: bold' colspan='3'>Document #1</td>
<td style='font-size: 1.125em; font-weight: bold' colspan='3'>Document #2</td>
<td style='font-size: 1.125em; font-weight: bold' colspan='3'>Document #3</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>DF</td>
<td>IDF</td>
<td>Word</td>
<td>DF</td>
<td>IDF</td>
<td>Word</td>
<td>DF</td>
<td>IDF</td>
</tr>
<tr>
<td>airplane</td>
<td>1</td>
<td>3.0</td>
<td>book</td>
<td>1</td>
<td>3.0</td>
<td>building</td>
<td>1</td>
<td>3.0</td>
</tr>
<tr>
<td>blue</td>
<td>1</td>
<td>3.0</td>
<td>car</td>
<td>2</td>
<td>1.5</td>
<td>car</td>
<td>2</td>
<td>1.5</td>
</tr>
<tr>
<td>chair</td>
<td>3</td>
<td>1.0</td>
<td>chair</td>
<td>3</td>
<td>1.0</td>
<td>carpet</td>
<td>1</td>
<td>3.0</td>
</tr>
<tr>
<td>computer</td>
<td>1</td>
<td>3.0</td>
<td>justice</td>
<td>3</td>
<td>1.0</td>
<td>ceiling</td>
<td>1</td>
<td>3.0</td>
</tr>
<tr>
<td>forest</td>
<td>1</td>
<td>3.0</td>
<td>milton</td>
<td>1</td>
<td>3.0</td>
<td>chair</td>
<td>3</td>
<td>1.0</td>
</tr>
<tr>
<td>justice</td>
<td>3</td>
<td>1.0</td>
<td>newton</td>
<td>2</td>
<td>1.5</td>
<td>cleaning</td>
<td>1</td>
<td>3.0</td>
</tr>
<tr>
<td>love</td>
<td>1</td>
<td>3.0</td>
<td>pond</td>
<td>1</td>
<td>3.0</td>
<td>justice</td>
<td>3</td>
<td>1.0</td>
</tr>
<tr>
<td>might</td>
<td>1</td>
<td>3.0</td>
<td>rose</td>
<td>3</td>
<td>1.0</td>
<td>libraries</td>
<td>1</td>
<td>3.0</td>
</tr>
<tr>
<td>perl</td>
<td>2</td>
<td>1.5</td>
<td>shakespeare</td>
<td>1</td>
<td>3.0</td>
<td>newton</td>
<td>2</td>
<td>1.5</td>
</tr>
<tr>
<td>rose</td>
<td>3</td>
<td>1.0</td>
<td>slavery</td>
<td>1</td>
<td>3.0</td>
<td>perl</td>
<td>2</td>
<td>1.5</td>
</tr>
<tr>
<td>shoe</td>
<td>1</td>
<td>3.0</td>
<td>thesis</td>
<td>2</td>
<td>1.5</td>
<td>rose</td>
<td>3</td>
<td>1.0</td>
</tr>
<tr>
<td>thesis</td>
<td>2</td>
<td>1.5</td>
<td>truck</td>
<td>1</td>
<td>3.0</td>
<td>science</td>
<td>1</td>
<td>3.0</td>
</tr>
</table>
<h3>Term frequency/inverse document frequency (TFIDF)</h3>
<p>
By taking into account these two factors &#8212; term frequency (TF) and inverse document frequency (IDF) &#8212; it is possible to assign &#8220;weights&#8221; to search results and therefore ordering them statistically. Put another way, a search result&#8217;s score (&#8220;ranking&#8221;) is the product of TF and IDF:
</p>
<blockquote>
<p>
TFIDF = TF * IDF where:
</p>
<ul type="circle">
<li>TF = C / T where C = number of times a given word appears in a document and T = total number of words in a document</li>
<li>IDF = D / DF  where D = total number of documents in a corpus, and DF = total number of documents containing a given word</li>
</ul>
</blockquote>
<p>
Table #4 is a combination of all the previous tables with the addition of the TFIDF score for each term:
</p>
<table align='center'>
<tr>
<td style='font-size: 1.125em; font-weight: bold' colspan='8'>Document #1</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>C</td>
<td>T</td>
<td>TF</td>
<td>D</td>
<td>DF</td>
<td>IDF</td>
<td>TFIDF</td>
</tr>
<tr>
<td>airplane</td>
<td>5</td>
<td>46</td>
<td>0.109</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.326</td>
</tr>
<tr>
<td>blue</td>
<td>1</td>
<td>46</td>
<td>0.022</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.065</td>
</tr>
<tr>
<td>chair</td>
<td>7</td>
<td>46</td>
<td>0.152</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.152</td>
</tr>
<tr>
<td>computer</td>
<td>3</td>
<td>46</td>
<td>0.065</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.196</td>
</tr>
<tr>
<td>forest</td>
<td>2</td>
<td>46</td>
<td>0.043</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.130</td>
</tr>
<tr>
<td>justice</td>
<td>7</td>
<td>46</td>
<td>0.152</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.152</td>
</tr>
<tr>
<td>love</td>
<td>2</td>
<td>46</td>
<td>0.043</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.130</td>
</tr>
<tr>
<td>might</td>
<td>2</td>
<td>46</td>
<td>0.043</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.130</td>
</tr>
<tr>
<td>perl</td>
<td>5</td>
<td>46</td>
<td>0.109</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.163</td>
</tr>
<tr>
<td>rose</td>
<td>6</td>
<td>46</td>
<td>0.130</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.130</td>
</tr>
<tr>
<td>shoe</td>
<td>4</td>
<td>46</td>
<td>0.087</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.261</td>
</tr>
<tr>
<td>thesis</td>
<td>2</td>
<td>46</td>
<td>0.043</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.065</td>
</tr>
<tr>
<td style='font-size: 1.125em; font-weight: bold' colspan='8'>Document #2</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>C</td>
<td>T</td>
<td>TF</td>
<td>D</td>
<td>DF</td>
<td>IDF</td>
<td>TFIDF</td>
</tr>
<tr>
<td>book</td>
<td>3</td>
<td>41</td>
<td>0.073</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.220</td>
</tr>
<tr>
<td>car</td>
<td>7</td>
<td>41</td>
<td>0.171</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.256</td>
</tr>
<tr>
<td>chair</td>
<td>4</td>
<td>41</td>
<td>0.098</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.098</td>
</tr>
<tr>
<td>justice</td>
<td>2</td>
<td>41</td>
<td>0.049</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.049</td>
</tr>
<tr>
<td>milton</td>
<td>6</td>
<td>41</td>
<td>0.146</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.439</td>
</tr>
<tr>
<td>newton</td>
<td>3</td>
<td>41</td>
<td>0.073</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.110</td>
</tr>
<tr>
<td>pond</td>
<td>2</td>
<td>41</td>
<td>0.049</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.146</td>
</tr>
<tr>
<td>rose</td>
<td>5</td>
<td>41</td>
<td>0.122</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.122</td>
</tr>
<tr>
<td>shakespeare</td>
<td>4</td>
<td>41</td>
<td>0.098</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.293</td>
</tr>
<tr>
<td>slavery</td>
<td>2</td>
<td>41</td>
<td>0.049</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.146</td>
</tr>
<tr>
<td>thesis</td>
<td>2</td>
<td>41</td>
<td>0.049</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.073</td>
</tr>
<tr>
<td>truck</td>
<td>1</td>
<td>41</td>
<td>0.024</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.073</td>
</tr>
<tr>
<td style='font-size: 1.125em; font-weight: bold' colspan='8'>Document #3</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>C</td>
<td>T</td>
<td>TF</td>
<td>D</td>
<td>DF</td>
<td>IDF</td>
<td>TFIDF</td>
</tr>
<tr>
<td>building</td>
<td>6</td>
<td>49</td>
<td>0.122</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.367</td>
</tr>
<tr>
<td>car</td>
<td>1</td>
<td>49</td>
<td>0.020</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.031</td>
</tr>
<tr>
<td>carpet</td>
<td>3</td>
<td>49</td>
<td>0.061</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.184</td>
</tr>
<tr>
<td>ceiling</td>
<td>4</td>
<td>49</td>
<td>0.082</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.245</td>
</tr>
<tr>
<td>chair</td>
<td>6</td>
<td>49</td>
<td>0.122</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.122</td>
</tr>
<tr>
<td>cleaning</td>
<td>4</td>
<td>49</td>
<td>0.082</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.245</td>
</tr>
<tr>
<td>justice</td>
<td>8</td>
<td>49</td>
<td>0.163</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.163</td>
</tr>
<tr>
<td>libraries</td>
<td>2</td>
<td>49</td>
<td>0.041</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.122</td>
</tr>
<tr>
<td>newton</td>
<td>2</td>
<td>49</td>
<td>0.041</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.061</td>
</tr>
<tr>
<td>perl</td>
<td>5</td>
<td>49</td>
<td>0.102</td>
<td>3</td>
<td>2</td>
<td>1.5</td>
<td>0.153</td>
</tr>
<tr>
<td>rose</td>
<td>7</td>
<td>49</td>
<td>0.143</td>
<td>3</td>
<td>3</td>
<td>1.0</td>
<td>0.143</td>
</tr>
<tr>
<td>science</td>
<td>1</td>
<td>49</td>
<td>0.020</td>
<td>3</td>
<td>1</td>
<td>3.0</td>
<td>0.061</td>
</tr>
</table>
<p>
Given TFIDF, a search for &#8220;rose&#8221; still returns three documents ordered by Documents #3, #1, and #2. A search for &#8220;newton&#8221; returns only two items ordered by Documents #2 (0.110) and #3 (0.061). In the later case, Document #2 is almost one and a half times more &#8220;relevant&#8221; than document #3. TFIDF scores can be summed to take into account Boolean unions (or) or intersections (and).
</p>
<h3>Automatic classification</h3>
<p>
TDIDF can also be applied a priori to indexing/searching to create browsable lists &#8212; hence, automatic classification. Consider Table #5 where each word is listed in a sorted TFIDF order:
</p>
<table align='center'>
<tr>
<td style='font-size: 1.125em; font-weight: bold' colspan='2'>Document #1</td>
<td style='font-size: 1.125em; font-weight: bold' colspan='2'>Document #2</td>
<td style='font-size: 1.125em; font-weight: bold' colspan='2'>Document #3</td>
</tr>
<tr  style='font-weight: bold; background-color: silver'>
<td>Word</td>
<td>TFIDF</td>
<td>Word</td>
<td>TFIDF</td>
<td>Word</td>
<td>TFIDF</td>
</tr>
<tr>
<td>airplane</td>
<td align='center'>0.326</td>
<td>milton</td>
<td align='center'>0.439</td>
<td>building</td>
<td align='center'>0.367</td>
</tr>
<tr>
<td>shoe</td>
<td align='center'>0.261</td>
<td>shakespeare</td>
<td align='center'>0.293</td>
<td>ceiling</td>
<td align='center'>0.245</td>
</tr>
<tr>
<td>computer</td>
<td align='center'>0.196</td>
<td>car</td>
<td align='center'>0.256</td>
<td>cleaning</td>
<td align='center'>0.245</td>
</tr>
<tr>
<td>perl</td>
<td align='center'>0.163</td>
<td>book</td>
<td align='center'>0.220</td>
<td>carpet</td>
<td align='center'>0.184</td>
</tr>
<tr>
<td>chair</td>
<td align='center'>0.152</td>
<td>pond</td>
<td align='center'>0.146</td>
<td>justice</td>
<td align='center'>0.163</td>
</tr>
<tr>
<td>justice</td>
<td align='center'>0.152</td>
<td>slavery</td>
<td align='center'>0.146</td>
<td>perl</td>
<td align='center'>0.153</td>
</tr>
<tr>
<td>forest</td>
<td align='center'>0.130</td>
<td>rose</td>
<td align='center'>0.122</td>
<td>rose</td>
<td align='center'>0.143</td>
</tr>
<tr>
<td>love</td>
<td align='center'>0.130</td>
<td>newton</td>
<td align='center'>0.110</td>
<td>chair</td>
<td align='center'>0.122</td>
</tr>
<tr>
<td>might</td>
<td align='center'>0.130</td>
<td>chair</td>
<td align='center'>0.098</td>
<td>libraries</td>
<td align='center'>0.122</td>
</tr>
<tr>
<td>rose</td>
<td align='center'>0.130</td>
<td>thesis</td>
<td align='center'>0.073</td>
<td>newton</td>
<td align='center'>0.061</td>
</tr>
<tr>
<td>blue</td>
<td align='center'>0.065</td>
<td>truck</td>
<td align='center'>0.073</td>
<td>science</td>
<td align='center'>0.061</td>
</tr>
<tr>
<td>thesis</td>
<td align='center'>0.065</td>
<td>justice</td>
<td align='center'>0.049</td>
<td>car</td>
<td align='center'>0.031</td>
</tr>
</table>
<p>
Given such a list it would be possible to take the first three terms from each document and call them the most significant subject &#8220;tags&#8221;. Thus, Document #1 is about airplanes, shoes, and computers. Document #2 is about Milton, Shakespeare, and cars. Document #3 is about buildings, ceilings, and cleaning.
</p>
<p>
Probably a better way to assign &#8220;aboutness&#8221; to each document is to first denote a TFIDF lower bounds and then assign terms with greater than that score to each document. Assuming a lower bounds of 0.2, Document #1 is about airplanes and shoes. Document #2 is about Milton, Shakespeare, cars, and books. Document #3 is about buildings, ceilings, and cleaning.
</p>
<h3>Discussion and conclusion</h3>
<p>
Since the beginning, librarianship has focused on the semantics of words in order to create a cosmos from an apparent chaos. &#8220;What is this work about? Read the descriptive information regarding a work (author, title, publisher date, notes, etc.) to workout in your mind its importance.&#8221; Unfortunately, this approach leaves much up to interpretation. One person says this document is about horses, and the next person says it is about husbandry.
</p>
<p>
The mathematic approach is more objective and much more scalable. While not perfect, there is much less interpretation required with TFIDF. It is just about mathematics. Moreover, it is language independent; it is possible to weigh terms and provide relevance ranking without knowing the meaning of a single word in the index.
</p>
<p>
In actuality, the whole thing is not an either/or sort of question, but instead a both/and sort of question. Human interpretation provides an added value, definitely. At the same time the application of mathematics (&#8220;Can you say &#8216;science?'&#8221;) proves to be quite useful too. The approaches compliment each other &#8212; they are <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">arscient</a>. Much of how we have used computers in libraries has simply been to automate existing processes. We have still to learn how to truly take advantage of a computer&#8217;s functionality. It can remember things a whole lot better than we can. It can add a whole lot faster than we can. Because of this it is almost trivial to calculate ( C / T ) * ( D / DF ) over an entire corpus of 2,000,000 MARC records or even 1,000,000 full text documents.
</p>
<p>
None of these ideas are new. It is possible to read articles describing these techniques going back about 40 years. Why has our profession not used them to our advantage. Why is it taking us so long? If you have an answer, then enter it in the comment box below.
</p>
<p>
This first posting has focused on the fundamentals of TFIDF. <a href="./../2009/04/tfidf-in-libraries-part-ii-of-iii-for-programmers/index.html">Part II</a> will describe a Perl program implementing relevancy ranking and automatic classification against sets of given text files. <a href="./../2009/05/tfidf-in-libraries-part-iii-of-iii-for-thinkers/index.html">Part III</a> will explore the idea of using TFIDF to enable users to find documents alluding to &#8220;great ideas&#8221; or &#8220;great people&#8221;.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/04/tfidf-in-libraries-part-i-for-librarians/feed/index.html</wfw:commentRss>
		<slash:comments>7</slash:comments>
							</item>
		<item>
		<title>A day at CIL 2009</title>
		<link>./../2009/04/a-day-at-cil-2009/index.html</link>
				<pubDate>Sat, 04 Apr 2009 00:40:41 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[cil2009]]></category>
		<category><![CDATA[Computers in Libraries]]></category>

		<guid isPermaLink="false">./../index.html?p=249</guid>
				<description><![CDATA[This documents my day-long experiences at the Computers in Libraries annual conference, March 31, 2009. In a sentence, the meeting was well-attended and covered a wide range of technology issues. Washington Monument The day began with an interview-style keynote address featuring Paul Holdengraber (New York Public Library) interviewed by Erik Boekesteijn (Library Concept Center). As [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This documents my day-long experiences at the <a href="http://www.infotoday.com/cil2009/">Computers in Libraries annual conference</a>, March 31, 2009. In a sentence, the meeting was well-attended and covered a wide range of technology issues.
</p>
<table align='right'>
<tr>
<td align="center"><img src="/blog/wp-content/uploads/2009/04/washington-small.jpg" alt="washington" width="130" height="97" hspace="5" vspace="5"><br /><a href="/blog/wp-content/uploads/2009/04/washington.jpg"><span style='font-size: small'>Washington Monument</small></a></td>
</tr>
</table>
<p>The day began with an interview-style keynote address featuring <strong>Paul Holdengraber</strong> (New York Public Library) interviewed by <strong>Erik Boekesteijn</strong> (Library Concept Center). As the Director of Public Programs at the Public Library, Holdengraber&#8217;s self-defined task is to &#8220;levitate the library and make the lions on the front steps roar.&#8221; Well-educated, articulate, creative, innovative, humorous, and cosmopolitan, he facilitates sets of programs in the library&#8217;s reading room called &#8220;<a href="http://www.nypl.org/live">Live from the New York Public Library</a>&#8221; where he interviews people in an effort to make the library &#8212; a cultural heritage institution &#8212; less like a mausoleum for the Old Masters and more like a place where great ideas flow freely. A couple of notable quotes included &#8220;My mother always told me to be porous because you have two ears and only one mouth&#8221; and &#8220;I want to take the books from the closed stacks and make people desire them.&#8221; Holdengraber&#8217;s enthusiasm for his job is contagious. Very engaging as well as interesting.
</p>
<p>
During the first of the concurrent sessions I gave a presentation called &#8220;<a href="http://infomotions.com/musings/oss4cil/">Open source software: Controlling your computing environment</a>&#8221; where I first outlined a number of definitions and core principles of open source software. I then tried to draw a number of parallels between open source software and librarianship. Finally, I described how open source software can be applied in libraries. During the presentation I listed four skills a library needs to become proficient in in order to take advantage of open source software (namely, relational databases, XML, indexing, and some sort of programming language), but in retrospect I believe basic systems administration skills are the things really required since the majority of open source software is simply installed, configured, and used. Few people feel the need to modify its functionality and therefore the aforementioned skills are not critical, only desirable.
</p>
<table align='right'>
<tr>
<td align="center"><img src="/blog/wp-content/uploads/2009/04/lincoln-small.jpg" alt="washington" width="130" height="97" hspace="5" vspace="5"><br /><a href="/blog/wp-content/uploads/2009/04/lincoln.jpg"><span style='font-size: small'>Lincoln Memorial</small></a></td>
</tr>
</table>
<p>In &#8220;Designing the Digital Experience&#8221; by <strong>David King</strong> (Topeka &#038; Shawnee County Public Library) attendees were presented with ways websites can be created in a way that digitally supplements the physical presents of a library. He outlined the structural approaches to Web design such as the ones promoted by Jesse James Garrett, David Armano and 37Signals. He then compared &#038; contrasted these approaches to the &#8220;community path&#8221; approaches which endeavor to create a memorable experience. Such things can be done, King says, through conversations, invitations, participation, creating a sense of familiarity, and the telling of stories. It is interesting to note that these techniques are not dependent on Web 2.0 widgets, but can certainly be implemented through their use. Throughout the presentation he brought all of his ideas home through the use of examples from the websites of <a href="http://www.harley-davidson.com/">Harley-Davidson</a>, <a href="http://www.starbucks.com/">Starbucks</a>, <a href="http://www.americangirl.com/">American Girl</a>, and <a href="http://www.webkinz.com/">Webkinz</a>. Not ironically, Holdengraber was doing the same thing for the Public Library except in the real world, not through a website.
</p>
<p>
In a session after lunch called &#8220;Go Where The Client Is&#8221; <strong>Natalie Collins</strong> (NRC-CISTI) described how she and a few co-workers converted library catalog data containing institutional repository information as well as SWETS bibliographic data into NLM XML and made it available for indexing by Google Scholar. In the end, she discovered that this approach was much more useful to her constituents when compared to the cool (&#8220;kewl&#8221;) Web Services-based implementation they had created previously. <strong>Holly Hibner</strong> (Salem-South Lyon District Library) compared &#038; contrasted the use of tablet PC&#8217;s with iPods for use during roaming reference services. My two take-aways from this presentation were cool (&#8220;kewl&#8221;) services called <a href="http://drop.io/">drop.io</a> and <a href="http://linkbun.ch/">LinkBunch</a>, websites making it easier to convert data from one format into another and bundle lists of link together into a single URL, respectively.
</p>
<table align='right'>
<tr>
<td align="center"><img src="/blog/wp-content/uploads/2009/04/jefferson-small.jpg" alt="washington" width="130" height="97" hspace="5" vspace="5"><br /><a href="/blog/wp-content/uploads/2009/04/jefferson.jpg"><span style='font-size: small'>Jefferson Memorial</small></a></td>
</tr>
</table>
<p>The last session for me that day was one on open source software implementations of &#8220;next generation&#8221; library catalogs, specifically <a href="http://open-ils.org/">Evergreen</a>. <strong>Karen Collier</strong> and <strong>Andrea Neiman</strong> (both of Kent County Public Library) outlined their implementation process of Evergreen in rural Michigan. Apparently it began with the re-upping the of their contract for their computer hardware. Such a thing would cost more than they expected. This led to more investigations which ultimately resulted in the selection of Evergreen. &#8220;Open source seemd like a logical conclusion.&#8221; They appear to be very happy with their decision. <strong>Karen Schneider</strong> (Equinox Software) gave a five-minute &#8220;lightning talk&#8221; on the who and what of Equinox and Evergreen. Straight to the point. Very nice. <strong>Ruth Dukelow</strong> (Michigan Library Consortium) described how participating libraries have been brought on board with Evergreen, and she outlined the reasons why Evergreen fit the bill: it supported MLCat compliance, it offered an affordable hosted integrated library system, it provided access to high quality MARC records, and it offered a functional system to non-technical staff.
</p>
<p>
I enjoyed my time there in Washington, DC at the conference. Thanks go to <strong>Ellyssa Kroski</strong>, <strong>Steven Cohen</strong>, and <strong>Jane Dysart</strong> for inviting me, and allowing me to share some of my ideas. The attendees at the conference were not as technical as you might find at Access, Code4Lib, and certainly not JCDL nor ECDL. This is not a bad thing. The people were genuinely interested in the things presented, but I did overhear one person say, &#8220;This is completely over my head.&#8221; The highlight for me took a place during the last session where people were singing the praise of open source software for all the same reasons I had been expressing them over the past twelve years. &#8220;<em>It is so much like the principles of librarianship</em>,&#8221; she said. That made my day.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Quick Trip to Purdue</title>
		<link>./../2009/04/quick-trip-to-purdue/index.html</link>
				<comments>./../2009/04/quick-trip-to-purdue/index.html#comments</comments>
				<pubDate>Thu, 02 Apr 2009 02:00:33 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>

		<guid isPermaLink="false">./../index.html?p=240</guid>
				<description><![CDATA[Last Friday, March 27, I was invited by Michael Witt (Interdisciplinary Research Librarian) at Purdue University to give a presentation to the library faculty on the topic of &#8220;next generation&#8221; library catalogs. During the presentation I made an effort to have the participants ask and answer questions such as &#8220;What is the catalog?&#8221;, &#8220;What is [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
Last Friday, March 27, I was invited by Michael Witt (Interdisciplinary Research Librarian) at Purdue University to give a <a href="http://infomotions.com/musings/ngc4purdue/">presentation</a> to the library faculty on the topic of &#8220;next generation&#8221; library catalogs. During the presentation I made an effort to have the participants ask and answer questions such as &#8220;What is the catalog?&#8221;, &#8220;What is it expected to contain?&#8221;, &#8220;What functions is it expected to perform and for whom?&#8221;, and most importantly, &#8220;What problems is it expected to solve?&#8221;
</p>
<p>
I then described how most of the current &#8220;next generation&#8221; library catalog thingees are very similar. Acquire metadata records. Optionally store them in a database. Index them (with Lucene). Provide services against the index (search and browse). I then brought the idea home by describing in more detail how things like VuFind, Primo, Koha, Evergreen, etc. all use this model. I then made an attempt to describe how our &#8220;next generation&#8221; library catalogs could go so much further by providing services against the texts as well as services against the index. &#8220;Discovery is not the problem that needs to be solved.&#8221;
</p>
<p>
Afterwards a number of us went to lunch where we compared &amp; contrasted libraries. It is a shame the Purdue University, University of Indiana, and University of Notre Dame libraries do not work more closely together. Our strengths compliment each other in so many ways.
</p>
<p>
&#8220;Michael, thanks for the opportunity!&#8221;
</p>
<p style='text-align:center'><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Hu_zJNilRX8&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Hu_zJNilRX8&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />Something I saw on the way back home.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/04/quick-trip-to-purdue/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Library Technology Conference, 2009: A Travelogue</title>
		<link>./../2009/04/library-technology-conference-2009-a-travelogue/index.html</link>
				<pubDate>Thu, 02 Apr 2009 01:31:40 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[Twin Cities]]></category>

		<guid isPermaLink="false">./../index.html?p=236</guid>
				<description><![CDATA[This posting documents my experiences at the Library Technology Conference at Macalester  College (St. Paul, Minnesota) on March 18-19, 2009. In a sentence, this well-organized regional conference provided professionals from near-by states an opportunity to listen, share, and discuss ideas concerning the use of computers in libraries. Wallace Library Dayton Center Day #1, Wednesday The [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting documents my experiences at the <a href="http://www.macalester.edu/library/libtechconference/">Library Technology Conference</a> at Macalester  College (St. Paul, Minnesota) on March 18-19, 2009. In a sentence, this well-organized regional conference provided professionals from near-by states an opportunity to listen, share, and discuss ideas concerning the use of computers in libraries.
</p>
<table align="center">
<tr>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2847.jpg" alt="library" hspace="3" vspace="3"><br /><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2847.shtml"><small>Wallace Library</small></a>
</td>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2850.jpg" alt="campus center" hspace="3" vspace="3"><br /><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2850.shtml"><small>Dayton Center</small></a>
</td>
</tr>
<table>
<h3>Day #1, Wednesday</h3>
<p>
The Conference, sponsored by Macalester College &#8212; a small, well-respected liberal arts college in St. Paul &#8212; began with a keynote presentation by <strong>Stacey Greenwell</strong> (University of Kentucky) called &#8220;Applying the information commons concept in your library&#8221;. In her remarks the contagiously energetic Ms. Greenwell described how she and her colleagues implemented the &#8220;<a href="http://www.uky.edu/Libraries/hub">Hub</a>&#8220;, an &#8220;active learning place&#8221; set in the library. After significant amounts of planning, focus group interviews, committee work, and on-going cooperation with the campus computing center, the Hub opened in March of 2007. The whole thing is designed to be a fun, collaborative learning commons equipped with computer technology and supported by librarian and computer consultant expertise. Some of the real winners in her implementation include the use of white boards, putting every piece of furniture on wheels, including &#8220;video walls&#8221; (displaying items from special collections, student art, basketball games, etc.), and hosting parties where as many as 800 students attend. Greenswell&#8217;s enthusiasm was inspiring.
</p>
<p>
Most of the Conference was made up of sets of concurrent sessions, and the first one I attended was given by <strong>Jason Roy</strong> and <strong>Shane Nackerund</strong> (both of the University of Minnesota) called &#8220;What&#8217;s cooking in the lab?&#8221; Roy began by describing both a top-down and bottom-up approach to the curation and maintenance of special collections content. Technically, their current implementation includes a usual cast of characters (DSpace, finding aids managed with DLXS, sets of images, and staff), but sometime in the near future he plans on implementing a more streamlined approach consisting of Fedora for the storage of content with sets of Web Services on top to provide access. It was also interesting to note their support for user-contributed content. Users supply images. Users tag content. Images and tags are used to supplement more curated content.
</p>
<p>
Nackerund demonstrated a number of tools he has been working on to provide enhanced library services. One was the Assignment Calculator &#8212; a tool to outline what steps need to be done to complete library-related, classroom-related tasks. He has helped implement a mobile library home page by exploiting Web Service interfaces to this underlying systems. While the Web Service APIs are proprietary, they are a step in the right direction for further exploitation. He has implementing sets of course pages &#8212; as opposed to subject guides &#8212; too. &#8220;I am in this class, what library resources should I be using?&#8221; (The creation of course guide seems to be a trend.) Finally, he is creating a recommender service of which the core is the creation of &#8220;affinity strings&#8221; &#8212; a set of codes used to denote the characteristics of an individual as opposed to specific identifiers. Of all the things from the Conference, the idea of affinity strings struck me the hardest. Very nice work, and documented in a <a href="http://journal.code4lib.org/articles/501">Code4Lib Journal article</a> too boot.
</p>
<p>
In the afternoon I gave a presentation called &#8220;<a href="http://infomotions.com/musings/trends-and-opportunities/">Technology Trends and Libraries: So many opportunities</a>&#8220;. In it I described why mobile computing, content &#8220;born digital&#8221;, the Semantic Web, search as more important than browse, and the wisdom of crowds represent significant future directions for librarianship. I also described the importance of not loosing the sight of the forest from the trees. Collection, organization, preservation, and dissemination of library content and services are still the core of the profession, and we simply need to figure out new ways to do the work we have traditionally done. &#8220;Libraries are not warehouses of data and information as much as they are gateways to learning and knowledge. We must learn to build on the past and evolve, instead of clinging to it like a comfortable sweater.&#8221;
</p>
<p>
Later in the afternoon <strong>Marian Rengal</strong> and <strong>Eric Celeste</strong> (both of the Minnesota Digital Library) described the status of the <a href="http://www.mndigital.org/">Minnesota Digital Library</a> in a presentation called &#8220;Where we are&#8221;. Using ContentDM as the software foundation of their implementation, the library includes many images supported by &#8220;mostly volunteers just trying to do the right thing for Minnesota.&#8221; What was really interesting about their implementation is the way they have employed a building block approach. PMWiki to collaborate. The Flickr API to share. Pachyderm to create learning objects. One of the most notable quotes from the presentation was &#8220;Institutions need to let go of their content to a greater degree; let them have a life of their own.&#8221; I think this is something that needs to be heard by many of us in cultural heritage institutions. If we make our content freely available, then we will be facilitating the use of the content in unimagined ways. Such is a good thing.
</p>
<table align="center">
<tr>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2861.jpg" alt="cathedral" hspace="3" vspace="3"><br /><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2861.shtml"><small>St. Paul Cathedral</small></a>
</td>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2885.jpg" alt="facade" hspace="3" vspace="3"><br /><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2885.shtml"><small>Balboa facade</small></a>
</td>
</tr>
<table>
<h3>Day #2, Thursday</h3>
<p>
The next day was filled with concurrent sessions. I first attended one by <strong>Alec Sonsteby</strong> (Concordia College) entitled &#8220;VuFind: the MnPALS Experience&#8221; where I learned how MnPALS &#8212; a library consortium &#8212; brought up VuFind as their &#8220;discovery&#8221; interface. They launched VuFind in August of 2008, and they seem pretty much satisfied with the results.
</p>
<p>
During the second round of sessions I lead a discussion/workshop regarding &#8220;next generation&#8221; library catalogs. In it we asked and tried to answer questions such as &#8220;What is the catalog?&#8221;, &#8220;What does it contain?&#8221;, &#8220;What functions is it expected to fulfill and for whom?&#8221;, and most importantly, &#8220;What is the problem it is expected to solve?&#8221; I then described how many of current crop of implementations function very similarly. Dump metadata records. Often store them in a database. Index them (with Lucene). Provide services against the index (search and browse). I then tried to outline how &#8220;next generation&#8221; library catalogs could do more, namely provide services against the texts as well as the index.
</p>
<p>
The last session I attended was about ERMs &#8212; Electronic Resource Management systems. <strong>Don Zhou</strong> (William Mitchel College of Law) described how he implemented Innovative Interface&#8217;s ERM. &#8220;The hard part was getting the data in.&#8221; <strong>Dani Roach</strong> and <strong>Carolyn DeLuca</strong> (both of University of St. Thomas) described how they implemented a Serials Solutions&#8230; solution. &#8220;You need to be adaptive; we decided to do things one way and then went another&#8230; It is complex, not difficult, just complex. There have to be many tools to do ERM.&#8221; Finally, <strong>Galadriel Chilton</strong> (University of Wisconsin &#8211; La Crosse) described an open source implementation written in Microsoft Access, but &#8220;it does not do electronic journals.&#8221;
</p>
<p>
In the afternoon Eric C. was gracious enough to tour me around the Twin Cities. We saw the Cathedral of Saint Paul, the Mississippi River, and a facade by Balboa. But the most impressive thing I saw was the University of Minnesota&#8217;s &#8220;cave&#8221; &#8212; an onsite storage facility for the University&#8217;s libraries. All the books they want to withdraw go here where they are sorted by size, placed into cardboard boxes assigned to a bar code, and put into rooms 100 yards long and three stories high. The facility is manned by two people, and in ten years they have only lost two books out of the 1.3 million. The place is so huge you can literally drive a tractor trail truck into the place. Very impressive, and I got a personal tour. &#8220;Thanks Eric!&#8221;
</p>
<table align="center">
<tr>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2900.jpg" alt="eric and eric" hspace="3" vspace="3"><br /><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2900.shtml"><small>Eric and Eric</small></a>
</td>
<td align="center"><img src="http://infomotions.com/gallery/minneapolis/Thumbs/IMG_2903.jpg" alt="water" hspace="3" vspace="3"><br /><a href="http://infomotions.com/gallery/minneapolis/Pages/IMG_2903.shtml"><small>St. Anthony Falls</small></a>
</td>
</tr>
<table>
<h3>Summary</h3>
<p>
I sincerely enjoyed the opportunity to attend this conference. Whenever I give talks I feel the need to write up a one-page handout. That process forces me to articulate my ideas in writing. When I give the presentation it is not all about me, but rather learning about the environments of my peers. It is an education all around. This particular regional conference was the right size, about 250. Many of the attendees knew each other. They caught up and learned things along the way. &#8220;Good job <strong>Ron Joslin</strong>!&#8221; The only thing I missed was a photograph of Mary Tyler Moore. Maybe next time.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Code4Lib Open Source Software Award</title>
		<link>./../2009/03/code4lib-open-source-software-award/index.html</link>
				<comments>./../2009/03/code4lib-open-source-software-award/index.html#comments</comments>
				<pubDate>Fri, 06 Mar 2009 00:13:28 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=231</guid>
				<description><![CDATA[As a community, let&#8217;s establish the Code4Lib Open Source Software Award. Lot&#8217;s of good work gets produced by the Code4Lib community, and I believe it is time to acknowledge these efforts in some tangible manner. Our profession is full of awards for leadership, particular aspects of librarianship, scholarship, etc. Why not an award for the [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
<img src="http://www.code4lib.org/files/logo/c4l_logo/c4l_logo.RGB_200px.png" alt="" hspace="5" vspace="5" align="right">As a community, let&#8217;s establish the Code4Lib Open Source Software Award.
</p>
<p>
Lot&#8217;s of good work gets produced by the Code4Lib community, and I believe it is time to acknowledge these efforts in some tangible manner. Our profession is full of awards for leadership, particular aspects of librarianship, scholarship, etc. Why not an award for the creation of software? After all, the use of computers and computer software is an essential part of our day-to-day work. Let&#8217;s grant an award for something we value &#8212; good, quality, open source software.
</p>
<p>
While I think the idea of an award is a laudable one, I have more questions than answers about the process of implementing it. Is such a thing sustainable, and if so, then how? Who is eligible for the award? Only individuals? Teams? Corporate entities? How are awardees selected? Nomination? Vote? A combination of the two? What qualities should the software exemplify? Something that solves a problem for many people? Something with a high &#8220;cool factor&#8221;? Great documentation? Easy to install? Well-supported with a large user base? Developed within the past year?
</p>
<p>
As a straw man for discussion, I suggest something like the following:
</p>
<ul>
<li>Regarding selection, I suggest there be a committee who solicits nominations and selects the awardee(s). As the years go by an individual from the committee drops off and the/an awardee becomes a member.</li>
<li>Regarding who is eligible, I suggest it be individuals, teams, or corporate entities. Awardees must be willing to serve on the next year&#8217;s nominating committee.</li>
<li>Regarding what is eligible, I suggest the software be open source, directly library-related, and developed within the past two years.</li>
<li>Regarding the timing, I suggest this be an annual award given at each Code4Lib conference.</li>
</ul>
<p>
These are just suggestions to get us started. What do you think? Consider sharing your thoughts as comments below, in channel, or on the Code4Lib mailing list.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/03/code4lib-open-source-software-award/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>Code4Lib Conference, Providence (Rhode Island) 2009</title>
		<link>./../2009/03/code4lib-conference-providence-rhode-island-2009/index.html</link>
				<comments>./../2009/03/code4lib-conference-providence-rhode-island-2009/index.html#comments</comments>
				<pubDate>Wed, 04 Mar 2009 01:16:15 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[c4l09]]></category>
		<category><![CDATA[Code4Lib]]></category>

		<guid isPermaLink="false">./../index.html?p=226</guid>
				<description><![CDATA[This posting documents my experience at the Code4Lib Conference in Providence, Rhode Island between February 23-26, 2009. To summarize my experiences, I went away with a better understanding of linked data, it is an honor to be a part of this growing and maturing community, and finally, this conference is yet another example of the [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
<img src="http://code4lib.org/files/logo/c4l_conf2009_logo/c4l_conf2009_logo.RGB_Grey_200px.png" alt="logo" hspace="5" vspace="5" align="right"> This posting documents my experience at the Code4Lib Conference in Providence, Rhode Island between February 23-26, 2009. To summarize my experiences, I went away with a better understanding of linked data, it is an honor to be a part of this growing and maturing community, and finally, this conference is yet another example of the how the number of opportunities for libraries exist if only you are to think more about the whats of librarianship as opposed to the hows.
</p>
<h3>Day #0 (Monday, February 23) &#8211; Pre-conferences</h3>
<p>
On the first day I facilitated a half-day pre-conference workshop, one of many, called <a href="http://infomotions.com/musings/xml-in-libraries/" target="_blank">XML In Libraries</a>. Designed as a full-day event, this workshop was not one of my better efforts. (&#8220;I sincerely apologize.&#8221;) Everybody brought their own computer, but some of them could not get on the &#8216;Net. The first half of the workshop should be trimmed down significantly since many of the attendees knew what was being explained. Finally, the hands-on part of the workshop with JEdit was less than successful because it refused to work for me and many of the participants. Lessons learned, and things to keep in mind for next time.
</p>
<p>
For the better part of the afternoon, I sat in on the WorldCat Grid Services pre-conference where we were given an overview of SRU from <strong>Ralph Levan</strong>. There was then a discussion on how the Grid Services could be put into use.
</p>
<p>
During the last part of the pre-conference afternoon I attended the linked data session. Loosely structured and by far the best attended event, I garnered an overview of what linked data services are and what are some of the best practices for implementing them. I had a very nice chat with <strong>Ross Singer</strong> who helped me bring some of these concepts home to my Alex Catalogue. Ironically, the Catalogue is well on its way to being exposed via a linked data model since I have previously written sets of RDF/XML files against its underlying content. The key seems to be to link together as many HTTP-based URIs as possible while providing content-negotiation services in order to disseminate your information in the most readable/usable formats possible.
</p>
<h3>Day #1 (Tuesday, February 24)</h3>
<p>
Code4Lib is a single-track conference, and its 300 or so attendees gathered in a refurbished Masonic Lodge &#8212; in the shadows of the Rhode Island State House &#8212; for the first day of the conference.
</p>
<p>
<strong>Roy Tennant</strong> played Master of Ceremonies for the Day #1 and opened the event with an outline of what he sees as the values of the Code4Lib community: egalitarianism, participation, democracy, anarchy, informality, and playfulness. From my point of view, that sums things up pretty well. In an introduction for first-timers, <strong>Mark Matienzo</strong> (aka anarchist) described the community as &#8220;a bit clique-ish&#8221;, a place where there are a lot of inside jokes (think bacon, neck beards, and ++), and a venue where &#8220;social capital&#8221; is highly valued. Many of these things can be most definitely been seen &#8220;in channel&#8221; by participating in the IRC #code4lib chat room.
</p>
<p>
In his keynote address, <em>A Bookless Future For Libraries</em>, <strong>Stefano Mazzocchi</strong> encouraged the audience to think of the &#8220;iPod for books&#8221; as an ecosystem necessity, not a possibility. He did this by first chronicling the evolution of information technology (speech to cave drawing to clay tablets to fiber to printing to electronic publishing). He outlined the characteristics of electronic publishing: dense, widely available, network accessible, distributed business models, no batteries, lots of equipment, next to zero marginal costs, and poor resolution. He advocated the Semantic Web (a common theme throughout the conference), and used Freebase as a real-world example. One of the most intriguing pieces of information I took away from this presentation was the idea of making games out of data entry in order to get people to contribute content. For example, make it fun to guess whether or not a person was live, dead, male, or female. Based on the aggregate responses of the &#8220;crowd&#8221; it is possible to make pretty reasonable guesses as to the truth of facts.
</p>
<p>
Next, <strong>Andres Soderback</strong> described his implementation of the Semantic Web world in <em>Why Libraries Should Embrace Linked Data</em>. More specifically, he said library catalogs should be: open, linkable, provide links, be a part of the network, not an end of themselves, and hackable. He went on to say that &#8220;APIs suck&#8221; because they are: specific, take too much control, not hackable enough, and not really &#8220;Web-able&#8221;. Not incidentally, he had previously exposed his entire library catalog &#8212; the National Library of Sweden &#8212; as a set of linked data, but it broke after the short-lived lcsh.info site by Ed Summers had been taken down.
</p>
<p>
<strong>Ross Singer</strong> described an implementation and extension to the Atom Publishing Protocol in his <em>Like A Can Opener For Your Data Silo: Simple Access Through AtomPub and Jangle</em>. I believe the core of his presentation can be best described through an illustration where an Atom client speaks to Jangle through Atom/RSS, Jangle communicates with (ILS-) specific applications through &#8220;connectors&#8221;, and the results are returned back to the client:
</p>
<pre>
                   +--------+       +-----------+ 
  +--------+       |        | <---> | connector |
  | client | <---> | Jangle |       +-----------+ 
  +--------+       |        | <---> | connector |  
                   +--------+       +-----------+
</pre>
<p>
I was particularly impressed with <strong>Glen Newton</strong>&#8216;s <em>LuSql: (Quickly And Easily) Getting Your Data From Your DBMS Into Lucene</em> because it described a Java-based command-line interface for querying SQL databases and feeding the results to the community&#8217;s currently favorite indexer &#8212; Lucene. Very nice.
</p>
<p>
<strong>Terence Ingram</strong>&#8216;s presentation <em>RESTafarian-ism At The NLA</em> can be summarized in the phrase &#8220;use REST in moderation&#8221; because too many REST-ful services linked together are difficult to debug, trouble shoot, and fall prey to over-engineering.
</p>
<p>
Based on the the number of comments in previous blog postings, <strong>Birkin James Diana</strong>&#8216;s presentation <em>The Dashboard Initiative</em> was a hit. It described sets of simple configurable &#8220;widgets&#8221; used to report trends against particular library systems and services.
</p>
<p>
In <em>Open Up Your Repository With A SWORD</em> <strong>Ed Summers</strong> and <strong>Mike Giarlo</strong> described a protocol developed through the funding of the good folks at JISC used to deposit materials into an (institutional) repository through the use of AtomPub protocol.
</p>
<p>
In an effort view editorial changes over time against sets of EAD files, <strong>Mark Matienzo</strong> tried to apply version control software techniques against his finding aids. He described these efforts in <em>How Anarchivist Got His Groove Back 2: DVCS, Archival Description, And Workflow</em> but it seems as if he wasn&#8217;t as successful as he had hoped because of the hierarchal nature his source (XML) data.
</p>
<p>
<strong>Godmar Back</strong> in <em>LibX 2.0</em> described how he was enhancing the LibX API to allow for greater functionality by enhancing its ability to interact with an increased number of external services such as the ones from Amazon.com. Personally, I wonder how well content providers will accept the idea of having content inserted into &#8220;their&#8221; pages by the LibX extension.
</p>
<p>
The last formal presentation of the day, <em>djatoka For djummies</em>, was given by <strong>Kevin Clark</strong> and <strong>John Fereira</strong>. In it they described the features, functions, advantages, and disadvantages of a specific JPEG2000 image server. Interesting technology that could be exploited more if there were a 100% open source solution.
</p>
<p>
Day #1 then gave way to about a dozen five-minute &#8220;lightning talks&#8221;. In this session I shared the state of the Alex Catalogue in <a href="http://infomotions.com/sandbox/alex4/" target="_blank">Alex4: Yet Another Implementation</a>, and in retrospect I realize I didn&#8217;t say a single word about technology but only things about functionality. Hmmm&#8230;
</p>
<h3>Day #2 (Wednesday, February 25)</h3>
<p>
On the second day of the conference I had the honor of introducing the keynote speaker, <strong>Sebastian Hammer</strong>. Having known him for at least a few years, I described him as the co-author of the venerable open source Yaz and Zebra software &#8212; the same Z39.50 software that drives quite a number of such implementations across Library Land. I also alluded to the time I visited him and his co-workers at Index Data in Copenhagen where we talked shop and shared a very nice lunch in their dot-com-like flat. I thought there were a number of meaty quotes from his presentation. &#8220;If you have something to say, then say it in code&#8230; I like to write code but have fun along the way&#8230; We are focusing our efforts on creating tools instead of applications&#8230; We try to create tools to enable libraries to do the work that they do. We think this is fun&#8230; APIs are glorified loyalty schemes&#8230; We need to surrender our data freely&#8230; Standardization is hard and boring but essential&#8230; Hackers must become advocates within our organizations.&#8221; Throughout his talk he advocated local libraries that: preserve cultural heritage, converge authoritative information, support learning &amp; research, and are pillars of democracy.
</p>
<p>
<strong>Timothy McGeary</strong> gave an update on the OLE Project in <em>A New Frontier &#8211; The Open Library Environment (OLE)</em>. He stressed that the Project is not about the integrated library system but bigger: special collections, video collections, institutional repositories, etc. Moreover, he emphasized that all these things are expected to be built around a Service Oriented Architecture and there is a push to use existing tools for traditional library functions such as the purchasing department for acquisitions or identity management systems for patron files. Throughout his present he stressed that this project is all about putting into action a &#8220;community source process&#8221;.
</p>
<p>
In <em>Blacklight As A Unified Discovery Platform</em> <strong>Bess Sadler</strong> described Blacklight as &#8220;yet another &#8216;next-generation&#8217; library catalog&#8221;. This seemingly off-hand comment should not be taken as such because the system implements many of the up-and-coming ideas our fledgling &#8220;discovery&#8221; tools espouse.
</p>
<p>
<strong>Joshua Ferraro</strong> walked us through the steps for creating open bibliographic (MARC) data using a free, browser-based cataloging service in a presentation called <em>A New Platform for Open Data &#8211; Introducing &#177;biblios.net Web Services</em>. Are these sort of services, freely provided by the likes of LibLime and the Open Library, the sorts of services that make OCLC reluctant to freely distribute &#8220;their&#8221; sets of MARC records?
</p>
<p>
Building on LibLime&#8217;s work, <strong>Chris Catalfo</strong> described and demonstrated a plug-in for creating Dublin Core metadata records using &#177;biblios.net Web Services in <em>Extending &#177;biblios, The Open Source Web Based Metadata Editor</em>.
</p>
<p>
<strong>Jodi Schneider</strong> and <strong>William Denton</strong> gave the best presentation I&#8217;ve ever heard on FRBR in their <em>What We Talk About When We Talk About FRBR</em>. More specifically, they described &#8220;strong&#8221; FRBR-ization complete with Works, Manifestations, Expressions, and Items owned by Persons, Families, and Corporate Bodies and having subjects grouped into Concepts, Objects, and Events. Very thorough and easy to understand.  <code> schneider++ &amp; denton++ # for a job well-done</code>
</p>
<p>
In <em>Complete Faceting</em> <strong>Toke Eskildsen</strong> described his institutions&#8217;s implementation called Summa from the State and University Library of Denmark.
</p>
<p>
<strong>Erik Hatcher</strong> outlined a number of ways Solr can be optimized for better performance in <em>The Rising Sun: Making The Most Of Solr Power</em>. Solr certainly seems to be on its way to becoming the norm for indexing in the Code4Lib community.
</p>
<p>
A citation parsing application was described by <strong>Chris Shoemaker</strong> in <em>FreeCite &#8211; An Open Source Free-Text Citation Parser</em>. His technique did not seem to be based so much on punctuation (syntax) as much as word groupings. I think we have something to learn from his technique.
</p>
<p>
<strong>Richard Wallis</strong> advocated the use of a Javascript library to update and insert added functionality to OPAC screens in his Great Facets, Like Your Relevance, But Can I Have Links To Amazon And Google Book Search? His tool &#8212; Juice &#8212; shares OPAC-specific information.
</p>
<p>
The Semantic Web came full-circle through <strong>Sean Hannan</strong>&#8216;s <em>Freebasing For Fun And Enhancement</em>. One of the take-aways I got from this conference is to learn more ways Freebase and be used (exploited) in my everyday work.
</p>
<p>
During the Lightning Talks I very briefly outlined an idea that has been brewing in my head for a few years, specifically, the idea of an <em>Annual Code4Lib Open Source Software Award</em>. I don&#8217;t exactly know how such a thing would get established or be made sustainable, but I do think our community is ripe for such recognition. Good work is done by our people, and I believe it needs to be tangibly acknowledged. I am willing to commit to making this a reality by this time next year at Code4Lib Conference 2010.
</p>
<h3>Summary</h3>
<p>
I did not have the luxury for staying the last day of the Conference. I&#8217;m sure I missed some significant presentations. Yet, the things I did see where impressive. They demonstrated ingenuity, creativity, and as the same time, practicality &#8212; the desire to solve real-world, present-day problems. These things require the use of both sides of a person&#8217;s brain. Systematic thinking and intuition; an attention to detail but the ability to see the big picture at the same time. In other words, <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html" target="_blank">arscience</a>.
</p>
<p>
<code>code4lib++</code></p>
]]></content:encoded>
							<wfw:commentRss>./../2009/03/code4lib-conference-providence-rhode-island-2009/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Henry David Thoreau&#8217;s Walden</title>
		<link>./../2009/02/henry-david-thoreaus-walden/index.html</link>
				<pubDate>Mon, 09 Feb 2009 04:09:17 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">./../index.html?p=221</guid>
				<description><![CDATA[As I sit here beside my fire at the cabin, I reflect on the experiences documented by Henry David Thoreau in his book entitled Walden. Being human On one level, the book is about a man who goes off to live in a small cabin by a pond named Walden. It describes how be built [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
As I sit here beside my fire at the cabin, I reflect on the experiences documented by Henry David Thoreau in his book entitled <a href="http://infomotions.com/etexts/philosophy/1800-1899/thoreau-walden-186.htm" target="_blank">Walden</a>.
</p>
<h3>Being human</h3>
<table align='right' padding='10'>
<tr>
<td>
<iframe src="http://rcm.amazon.com/e/cm?t=infomotions-20&#038;o=1&#038;p=6&#038;l=st1&#038;mode=books&#038;search=0679783342&#038;fc1=000000&#038;lt1=&#038;lc1=3366FF&#038;bg1=FFFFFF&#038;f=ifr" marginwidth="0" marginheight="0" width="120" height="150" border="0" frameborder="0" style="border:none;" scrolling="no"></iframe></td>
</tr>
</table>
<p>
On one level, the book is about a man who goes off to live in a small cabin by a pond named Walden. It describes how be built his home, tended his garden, and walked through the woods. On another level, it is collection of self-observations and reflections on what it means to be human. &#8220;I went to the woods because I wished to live deliberately, to front only the essential facts of life, and see if I could not learn what it has to teach, and not, when I came to die, discover that I had not lived&#8230; I wanted to live deep and suck out all the marrow of life, to live so sturdily and Spartan-like as to put to rout all that was not life, to cut a broad swath and shave close, to drive life into a corner, and reduce it to its lowest terms, and, if it proved to be mean, why then to get the whole and genuine meanness of it, and publish its meanness to the world.&#8221;
</p>
<h3>Selected chapters</h3>
<p>
The book doesn&#8217;t really have beginning, a middle, and an end. There is no hero, no protagonist, no conflict, and no climax. Instead, the book is made up of little stories amassed over the period of one and a half years while living alone. Economy &#8212; an outline of the necessities of life such as clothing, shelter, and food. It cost him $28 to built his cabin, and he grew much of his own food. &#8220;Yet men have come to such a pass that they frequently starve not for want of necessities, but for want of <a href="http://infomotions.com/alex/concordance/?cmd=displayText&amp;bookcode=thoreau-walden-186&amp;typesearch=oneword&amp;location=5000&amp;gowhere=none&amp;occurnum=0&amp;word1=LUXURIES&amp;usePre=1&amp;indexloc=366456&amp;numoccur=5&amp;phrase=1+necessaries%2C+but+for+want+of+%3C+luxuries+%3E+%3B+and+I+%7E+know+a+good+woman+who&amp;segsize=1000" target="_blank">luxuries</a>.&#8221;
</p>
<p>
I also enjoyed the chapter called &#8220;The Bean-Field&#8221;. &#8220;I have come to love my rows, my beans, though so many more than I wanted.&#8221; Apparently he had as many as seven miles of beans, if they were all strung in a row. Even over two acres of ground, I find that hard to believe. He mentions <a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=thoreau-walden-186&amp;segsize=1000&amp;usePre=1&amp;word1=woodchuck" target="_blank">woodchucks</a> often in the chapter as well as throuhout the book, and he dislikes them because they eat his crop. I always thought woodchucks &#8212; ground hogs &#8212; were particularly interesting since they were abundant around the property where I grew up. In relation to economy, Thoreau spent just less than $14 on gardening expenses, and after selling his crop made a profit of almost $9. &#8220;Daily the beans saw me come to their rescue armed with a hoe, and thin their ranks of the enemies, filling up the trenches with <a href="http://infomotions.com/alex/concordance/?cmd=displayText&amp;bookcode=thoreau-walden-186&amp;typesearch=oneword&amp;location=5000&amp;gowhere=none&amp;occurnum=0&amp;word1=WEEDY&amp;usePre=1&amp;indexloc=689667&amp;numoccur=1&amp;phrase=1+filling+up+the+trenches+with+%3C+weedy+%3E+dead.+%7E+Many+a+lusty+crest-+waving&amp;segsize=1000" target="_blank">weedy dead</a>.&#8221;
</p>
<p>
The chapter called &#8220;Sounds&#8221; is full of them or allusions to them: voice, rattle, whistle, scream, shout, ring, announce, hissing, bells, sung, lowing, serenaded, music chanted, cluck, buzzing, screech, wailing, trilled, sighs, hymns, threnodies, gurgling, hooting, baying, trump, bellowing, crow, bark, laughing, cackle, creaking, and snapped. Almost a cacophony, but at the same time a possible symphony. It depends on your perspective.
</p>
<p>
While he lived alone, he was never seemingly lonely. In fact, he seemed to attract visitors or sought them out himself. Consider the wood chopper who was extra skilled at this job. Reflect on the Irish family who lived &#8220;rudely&#8221;. Compare and contrast the well-to-do professional with manners to the man who lived in a hollow log. (I wonder whether or not that second man really existed.)
</p>
<p>
Thoreau&#8217;s description of the pond itself were arscient. [1] He describes its color, its depth, and over all size. He ponders where it got its name, its relation to surrounding ponds, and where its water comes from and goes. He fishes in it regularly, and walk upon its ice in the winter. He describes how men harvest its ice and how the pond keeps most of the effort. He appreciates the appearance of the pond as he observes it during different times of year as well as from different vantage points. In my mind, it is a good thing to observe anything and just about everything from many points of view, both literally and figuratively.
</p>
<h3>Conclusion</h3>
<p>
The concluding chapter has a number of meaty thoughts. &#8220;I left the woods for a good a reason as I went there. Perhaps it seemed to me that I had several more lives to live, and could not spare any more time for that one&#8230; I learned this, at least, by my experiment: that if one advances confidently in the direction of his dreams, and endeavors to live the life which he has imagined, he will meet with a success unexpected in common hours&#8230; If a man does not keep pace with his companions, perhaps it is because he hears a different drummer. Let him step to the music which he hears, however measured or far away&#8230; However mean your life is, meet it and live it; do not shun it and call it hard names&#8230; Love your life, poor as it is&#8230; Rather than love, than money, than fame, <a href="http://infomotions.com/alex/concordance/?cmd=displayText&amp;bookcode=thoreau-walden-186&amp;typesearch=oneword&amp;location=5000&amp;gowhere=none&amp;occurnum=0&amp;word1=TRUTH&amp;usePre=1&amp;indexloc=654429&amp;numoccur=26&amp;phrase=20+han+money%2C+than+fame%2C+give+me+%3C+truth+%3E+.+I+sat+at+a+%7E+table+where+were+ric&amp;segsize=1000" target="_blank">give me truth</a>.&#8221;
</p>
<h3>Word cloud</h3>
<p>
As a service against the text, and as a means to learning about it more quickly, I give you the following word cloud (think &#8220;concordance&#8221;) complete with links to the places in the text where the words can be found:
</p>
<p style='margin-left: 5%; margin-right: 5%; text-align: center'><span style='font-size: 174%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LIFE'>life</a></span> &nbsp;<span style='font-size: 173%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=POND'>pond</a></span> &nbsp;<span style='font-size: 172%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=MOST'>most</a></span> &nbsp;<span style='font-size: 171%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=HOUSE'>house</a></span> &nbsp;<span style='font-size: 170%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=DAY'>day</a></span> &nbsp;<span style='font-size: 169%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=THOUGH'>though</a></span> &nbsp;<span style='font-size: 168%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WATER'>water</a></span> &nbsp;<span style='font-size: 167%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=MANY'>many</a></span> &nbsp;<span style='font-size: 166%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=TIME'>time</a></span> &nbsp;<span style='font-size: 165%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=NEVER'>never</a></span> &nbsp;<span style='font-size: 164%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=ABOUT'>about</a></span> &nbsp;<span style='font-size: 163%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WOODS'>woods</a></span> &nbsp;<span style='font-size: 162%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WITHOUT'>without</a></span> &nbsp;<span style='font-size: 161%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=MUCH'>much</a></span> &nbsp;<span style='font-size: 160%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=YET'>yet</a></span> &nbsp;<span style='font-size: 159%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LONG'>long</a></span> &nbsp;<span style='font-size: 158%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SEE'>see</a></span> &nbsp;<span style='font-size: 157%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=BEFORE'>before</a></span> &nbsp;<span style='font-size: 156%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FIRST'>first</a></span> &nbsp;<span style='font-size: 155%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=NEW'>new</a></span> &nbsp;<span style='font-size: 154%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=ICE'>ice</a></span> &nbsp;<span style='font-size: 153%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WELL'>well</a></span> &nbsp;<span style='font-size: 152%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=DOWN'>down</a></span> &nbsp;<span style='font-size: 151%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LITTLE'>little</a></span> &nbsp;<span style='font-size: 150%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=OFF'>off</a></span> &nbsp;<span style='font-size: 149%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=KNOW'>know</a></span> &nbsp;<span style='font-size: 148%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=OWN'>own</a></span> &nbsp;<span style='font-size: 147%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=OLD'>old</a></span> &nbsp;<span style='font-size: 146%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=NOR'>nor</a></span> &nbsp;<span style='font-size: 145%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=GOOD'>good</a></span> &nbsp;<span style='font-size: 144%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=PART'>part</a></span> &nbsp;<span style='font-size: 143%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WINTER'>winter</a></span> &nbsp;<span style='font-size: 142%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FAR'>far</a></span> &nbsp;<span style='font-size: 141%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WAY'>way</a></span> &nbsp;<span style='font-size: 140%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=BEING'>being</a></span> &nbsp;<span style='font-size: 139%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LAST'>last</a></span> &nbsp;<span style='font-size: 138%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=AFTER'>after</a></span> &nbsp;<span style='font-size: 137%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=HEARD'>heard</a></span> &nbsp;<span style='font-size: 136%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LIVE'>live</a></span> &nbsp;<span style='font-size: 135%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=GREAT'>great</a></span> &nbsp;<span style='font-size: 134%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WORLD'>world</a></span> &nbsp;<span style='font-size: 133%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=AGAIN'>again</a></span> &nbsp;<span style='font-size: 132%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=NATURE'>nature</a></span> &nbsp;<span style='font-size: 131%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SHORE'>shore</a></span> &nbsp;<span style='font-size: 130%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=MORNING'>morning</a></span> &nbsp;<span style='font-size: 129%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=THINK'>think</a></span> &nbsp;<span style='font-size: 128%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WORK'>work</a></span> &nbsp;<span style='font-size: 127%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=ONCE'>once</a></span> &nbsp;<span style='font-size: 126%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SAME'>same</a></span> &nbsp;<span style='font-size: 125%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WALDEN'>walden</a></span> &nbsp;<span style='font-size: 124%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=THOUGHT'>thought</a></span> &nbsp;<span style='font-size: 123%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FEET'>feet</a></span> &nbsp;<span style='font-size: 122%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SPRING'>spring</a></span> &nbsp;<span style='font-size: 121%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=EARTH'>earth</a></span> &nbsp;<span style='font-size: 120%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=HERE'>here</a></span> &nbsp;<span style='font-size: 119%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=PERHAPS'>perhaps</a></span> &nbsp;<span style='font-size: 118%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=NIGHT'>night</a></span> &nbsp;<span style='font-size: 117%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SIDE'>side</a></span> &nbsp;<span style='font-size: 116%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SUN'>sun</a></span> &nbsp;<span style='font-size: 115%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=THINGS'>things</a></span> &nbsp;<span style='font-size: 114%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SURFACE'>surface</a></span> &nbsp;<span style='font-size: 113%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FEW'>few</a></span> &nbsp;<span style='font-size: 112%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=THUS'>thus</a></span> &nbsp;<span style='font-size: 111%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FIND'>find</a></span> &nbsp;<span style='font-size: 110%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FOUND'>found</a></span> &nbsp;<span style='font-size: 109%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SUMMER'>summer</a></span> &nbsp;<span style='font-size: 108%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=MUST'>must</a></span> &nbsp;<span style='font-size: 107%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=TRUE'>true</a></span> &nbsp;<span style='font-size: 106%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=GOT'>got</a></span> &nbsp;<span style='font-size: 105%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=ALSO'>also</a></span> &nbsp;<span style='font-size: 104%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=YEARS'>years</a></span> &nbsp;<span style='font-size: 103%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=VILLAGE'>village</a></span> &nbsp;<span style='font-size: 102%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=ENOUGH'>enough</a></span> &nbsp;<span style='font-size: 101%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=MYSELF'>myself</a></span> &nbsp;<span style='font-size: 100%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=HALF'>half</a></span> &nbsp;<span style='font-size: 99%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=POOR'>poor</a></span> &nbsp;<span style='font-size: 98%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SEEN'>seen</a></span> &nbsp;<span style='font-size: 97%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=AIR'>air</a></span> &nbsp;<span style='font-size: 96%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=BETTER'>better</a></span> &nbsp;<span style='font-size: 95%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=PUT'>put</a></span> &nbsp;<span style='font-size: 94%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=READ'>read</a></span> &nbsp;<span style='font-size: 93%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=TILL'>till</a></span> &nbsp;<span style='font-size: 92%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=SMALL'>small</a></span> &nbsp;<span style='font-size: 91%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WITHIN'>within</a></span> &nbsp;<span style='font-size: 90%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WOOD'>wood</a></span> &nbsp;<span style='font-size: 89%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=CANNOT'>cannot</a></span> &nbsp;<span style='font-size: 88%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=FIRE'>fire</a></span> &nbsp;<span style='font-size: 87%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=GROUND'>ground</a></span> &nbsp;<span style='font-size: 86%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=DEEP'>deep</a></span> &nbsp;<span style='font-size: 85%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=END'>end</a></span> &nbsp;<span style='font-size: 84%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=BOTTOM'>bottom</a></span> &nbsp;<span style='font-size: 83%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LEFT'>left</a></span> &nbsp;<span style='font-size: 82%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=NOTHING'>nothing</a></span> &nbsp;<span style='font-size: 81%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=WENT'>went</a></span> &nbsp;<span style='font-size: 80%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=AWAY'>away</a></span> &nbsp;<span style='font-size: 79%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=PLACE'>place</a></span> &nbsp;<span style='font-size: 78%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=ALMOST'>almost</a></span> &nbsp;<span style='font-size: 77%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=thoreau-walden-186&#038;segsize=1000&#038;usePre=1&#038;word1=LEAST'>least</a></span> &nbsp;
</p>
<h3>Note</h3>
<p>
[1] <a href="./../2008/07/origami-is-arscient-and-so-is-librarianship/index.html">Arscience</a> &#8212; art-science &#8212; is a term I use to describe a way of thinking incorporating both artistic and scientific elements. Arscient thinking is poetic, intuitive, free-flowing, and at the same time it is systematic, structured, and repeatable. To my mind, a person requires both in order to create a cosmos from the apparent chaos of our surroundings.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Eric Lease Morgan&#8217;s Top Tech Trends for ALA Mid-Winter, 2009</title>
		<link>./../2009/02/eric-lease-morgans-top-tech-trends-for-ala-mid-winter-2009/index.html</link>
				<pubDate>Mon, 09 Feb 2009 04:03:00 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Top Technology Trends]]></category>

		<guid isPermaLink="false">./../index.html?p=217</guid>
				<description><![CDATA[This is a list of &#8220;top technology trends&#8221; written for ALA Mid-Winter, 2009. They are presented in no particular order. [This text was originally published on the LITA Blog, but it is duplicated here because &#8220;lot&#8217;s of copies keep stuff safe.&#8221; &#8211;ELM] Indexing with Solr/Lucene works well &#8211; Lucene seems to have become the gold [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is a list of &#8220;top technology trends&#8221; written for ALA Mid-Winter, 2009. They are presented in no particular order. [This text was <a href="http://litablog.org/2009/01/10/eric-lease-morgans-top-tech-trends-for-ala-mid-winter-2009/">originally published on the LITA Blog</a>, but it is duplicated here because &#8220;lot&#8217;s of copies keep stuff safe.&#8221; &#8211;ELM]
</p>
<p>
<strong>Indexing with Solr/Lucene works well</strong> &#8211; Lucene seems to have become the gold standard when it comes to open source indexer/search engine platforms. Solr &#8212; a Web Services interface to Lucene &#8212; is increasingly the preferred way to read &#038; write Lucene indexes. Librarians love to create lists. Books. Journals. Articles. Movies. Authoritative names and subjects. Websites. Etc. All of these lists beg for the organization. Thus, (relational) databases. But Lists need to be short, easily sortable, and/or searchable in order to be useful as finding aids. Indexers make things searchable, not databases. The library profession needs to get its head around the creation of indexes. The Solr/Lucene combination is a good place to start &#8212; er, catch up.
</p>
<p>
<strong>Linked data is a new name for the Semantic Web</strong> &#8211; The Semantic Web is about creating conceptual relationships between things found on the Internet. Believe it or not, the idea is akin to the ultimate purpose of a traditional library card catalog. Have an item in hand. Give it a unique identifier. Systematically describe it. Put all the descriptions in one place and allow people to navigate the space. By following the tracings it is possible to move from one manifestation of an idea to another ultimately providing the means to the discovery, combination, and creation of new ideas. The Semantic Web is almost the exactly the same thing except the &#8220;cards&#8221; are manifested using RDF/XML on computers through the Internet. From the beginning RDF has gotten a bad name. &#8220;Too difficult to implement, and besides the Semantic Web is a thing of science fiction.&#8221; Recently the term &#8220;linked data&#8221; has been used to denote the same process of creating conceptual relationships between things on the &#8216;Net. It is the Semantic Web by a different name. There is still hope.
</p>
<p>
<strong>Blogging is peaking</strong> &#8211; There is no doubt about it. The Blogosphere is here to stay, yet people have discovered that it is not very easy to maintain a blog for the long haul. The technology has made it easier to compose and distribute one&#8217;s ideas, much to the chagrin of newspaper publishers. On the other hand, the really hard work is coming up with meaningful things to say on a regular basis. People have figured this out, and consequently many blogs have gone by the wayside. In fact, I&#8217;d be willing to bet that the number of new blogs is decreasing, and the number of postings to existing blogs is decreasing as well. Blogging was &#8220;kewl&#8221; is cool but also hard work. Blogging is peaking. And by the way, I dislike those blogs which are only partial syndicated. They allow you to read the first 256 characters or so of and entry, and then encourage you to go to their home site to read the whole story whereby you are bombarded with loads of advertising.
</p>
<p>
<strong>Word/tag clouds abound</strong> &#8211; It seems very fashionable to create word/tag clouds now-a-days. When you get right down to it, word/tag clouds are a whole lot like concordances &#8212; one of the first types of indexes. Each word (or tag) in a document is itemized and counted. Stop words are removed, and the results are sorted either alphabetically or numerically by count. This process &#8212; especially if it were applied to significant phrases &#8212; could be a very effective and visual way to describe the &#8220;aboutness&#8221; of a file (electronic book, article, mailing list archive, etc.). An advanced feature is to hyperlink each word, tag, or phrase to specific locations in the file. Given a set of files on similar themes, it might be interesting to create word/tag clouds against them in order to compare and contrast. Hmmm&#8230;
</p>
<p>
<strong>&#8220;Next Generation&#8221; library catalogs seem to be defined</strong> &#8211; From my perspective, the profession has stopped asking questions about the definition of &#8220;next generation&#8221; library catalogs. I base this statement on two things. First, the number of postings and discussion on a mailing list called NGC4Lib has dwindled. There are fewer questions and even less discussion. Second, the applications touting themselves, more or less, as &#8220;next generation&#8221; library catalog systems all have similar architectures. Ingest content from various sources. Normalize it into an internal data structure. Store the normalized data. Index the normalized data. Provide access to the index as well as services against the index such as tag, review, and Did You Mean? All of this is nice, but it really isn&#8217;t very &#8220;next generation&#8221;. Instead it is slightly more of the same. An index allows people to find, but people are still drinking from the proverbial fire hose. Anybody can find. In my opinion, the current definition of &#8220;next generation&#8221; does not go far enough. Library catalogs need to provide an increased number services against the content, not just services against the index. Compare &#038; contrast. Do morphology against. Create word cloud from. Translate. Transform. Buy. Review. Discuss. Share. Preserve. Duplicate. Trace idea, citation, and/or author forwards &#038; backwards. It is time to go beyond novel ways to search lists.
</p>
<p>
<strong>SRU is becoming more viable</strong> &#8211; SRU (Search/Retrieve via URL) is a Web Services-based protocol for searching databases/indexes. Send a specifically shaped URL to a remote HTTP server. Get back a specifically shaped response. SRU has been joined with a no-longer competing standard called OpenSearch in the form of an Abstract Protocol Definition, and the whole is on its way to becoming an OASIS standard. Just as importantly, an increasing number of the APIs supporting the external-facing OCLC Grid Services (WorldCat, Identities, Registries, Terminologies, Metadata Crosswalk) use SRU as the query interface. SRU has many advantages, but some of those advantages are also disadvantages. For example, its query language (CQL) is expressive, especially compared to OpenSearch or Google, but at the same time, it is not easy to implement. Second, the nature of SRU responses can range from rudimentary and simple to obtuse and complicated. More over, the response is always in XML. These factors make transforming the response for human consumption sometimes difficult to implement. Despite all these things, I think SRU is a step in the right direction.
</p>
<p>
<strong>The pendulum of data ownership is swinging</strong> &#8211; I believe it was Francis Bacon who said, &#8220;Knowledge is power&#8221;. In my epistemological cosmology, knowledge is based on information, and information is based on data. (Going the other way, knowledge leads to wisdom, but that is another essay.) Therefore, he who owns or has access to the data will ultimately have more power. Google increasingly has more data than just about anybody. They have a lot of power. OCLC increasingly &#8220;owns&#8221; the bibliographic data created by its membership. Ironically, this data &#8212; in both the case of Google and OCLC &#8212; is not freely available, even when the data was created for the benefit of the wider whole. I see this movement akin to the movement of a pendulum swinging one way and then the other. On my more pessimistic days I view it as a battle. On my calmer days I see it as a natural tendency, a give and take. Many librarians I know are in the profession, not for the money, but to support some sort of cause. Intellectual freedom. The right to read. Diversity. Preservation of the historical record. If I have a cause it then is about the free and equal access to information. This is why I advocate open access publishing, open source software, and Net Neutrality. When data and information is &#8220;owned&#8221; and &#8220;sold&#8221; an environment of information have&#8217;s and have not&#8217;s manifests itself. Ultimately, this leads to individual gain but not necessarily the improvement of the human condition as a whole.
</p>
<p>
<strong>The Digital Dark Age continues</strong> &#8211; We, as a society, are continuing to create a Digital Dark Age. Considering all of the aspects of librarianship, the folks who deal with preservation, conservation, and archives have the toughest row to hoe. It is ironic. On one hand there is more data and information available than just about anybody knows what to do with. On the other hand, much of this data and information will not be readable, let alone available, in the foreseeable future. Somebody is going to want to do research on the use of blogs and email. What libraries are archiving this data? We are writing reports and summaries in binary and proprietary formats. Such things are akin to music distributed on 8-track tapes. Where are the gizmos enabling us to read these formats? We increasingly license our most desired content &#8212; scholarly journal articles &#8212; and in the end we don&#8217;t own anything. With the advent of Project Gutenberg, Google Books, and the Open Content Alliance the numbers of freely available electronic books rival the collections of many academic libraries. Who is collecting these things? Do we really want to put all of our eggs into one basket and trust these entities to keep them for the long haul? The HathiTrust understand this phenomonon, and &#8220;Lot&#8217;s of copies keep stuff safe.&#8221; Good. In the current environment of networked information, we need to re-articulate the definition of &#8220;collection&#8221;.
</p>
<p>
Finally, regarding <strong>change</strong>. It manifests itself along a continuum. At one end is evolution. Slow. Many false starts. Incremental. At the other end is revolution. Fast. Violent. Decisive. Institutions and their behaviors change slowly. Otherwise they wouldn&#8217;t be the same institutions. Librarianship is an institution. Its behavior changes slowly. This is to be expected.</p>
]]></content:encoded>
										</item>
		<item>
		<title>YAAC: Yet Another Alex Catalogue</title>
		<link>./../2009/02/yaac-yet-another-alex-catalogue/index.html</link>
				<pubDate>Tue, 03 Feb 2009 01:30:53 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Alex Catalogue]]></category>

		<guid isPermaLink="false">./../index.html?p=211</guid>
				<description><![CDATA[I have implemented another version of my Alex Catalogue of Electronic Texts, more specifically, I have dropped the use of one indexer and replaced it with Solr/Lucene. See http://infomotions.com/alex/ This particular implementation does not have all the features of the previous one. No spell check. No thesaurus. No query suggestions. On the other hand, it [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I have implemented another version of my Alex Catalogue of Electronic Texts, more specifically, I have dropped the use of one indexer and replaced it with Solr/Lucene. See <a href="http://infomotions.com/alex/">http://infomotions.com/alex/</a>  This particular implementation does not have all the features of the previous one. No spell check. No thesaurus. No query suggestions. On the other hand, it does support paging, and since it runs under mod_perl, it is quite responsive.</p>
<p>As always I am working on the next version, and you can see where I&#8217;m going at <a href="http://infomotions.com/sandbox/alex4/">http://infomotions.com/sandbox/alex4/</a>  Like the implementation above, this one runs under mod_perl and supports paging. Unlike the implementation above, it also supports query suggestions, a thesaurus, and faceted browsing. It also sports the means to view metadata details. Content-wise, it included images, journal titles, journal articles, and some content from the HathiTrust.</p>
<p>It would be great if I were to get some feedback regarding these implementations. Are they easy to use?</p>
]]></content:encoded>
										</item>
		<item>
		<title>ISBN numbers</title>
		<link>./../2009/02/isbn-numbers/index.html</link>
				<pubDate>Mon, 02 Feb 2009 05:04:31 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[ISBN numbers]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">./../index.html?p=149</guid>
				<description><![CDATA[I&#8217;m beginning to think about ISBN numbers and the Alex Catalogue of Electronic Texts. For example, I can add ISBN numbers to Alex, link them to my (fledgling) LibraryThing collection, and display lists of recently added items here: Interesting, but I think the list will change over time, as new things get added to my [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I&#8217;m beginning to think about ISBN numbers and the <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a>. For example, I can add ISBN numbers to Alex, link them to my (fledgling) <a href="http://librarything.com/">LibraryThing</a> collection, and display lists of recently added items here:</p>
<div style="margin-right:40%"><script language="javascript" type="text/javascript" src="http://www.librarything.com/jswidget.php?reporton=infomotions&#038;show=recent&#038;header=1&#038;num=3&#038;covers=small&#038;text=all&#038;tag=alltags&#038;css=1&#038;style=3&#038;version=1">
</script></div>
<p>Interesting, but I think the list will change over time, as new things get added to my collection. It would be nice to link to a specific item. Hmm&#8230;</p>
<p>[openbook booknumber=&#8221;9781593082277&#8243;] On the other hand, I could exploit ISBN numbers and <a href="http://openlibrary.org/">OpenLibrary</a> using a WordPress plug-in called <a href="http://johnmiedema.ca/openbook-wordpress-plugin/">OpenBook Book Data</a> by  <a href="http://johnmiedema.ca/">John Miedema</a>. It displays cover art, a link to OpenLibrary as well as <a href="http://worldcat.org/">WorldCat</a></p>
<p>Again, very interesting. For more details, see the<a href="http://journal.code4lib.org/articles/105"> &#8220;OpenBook WordPress Plugin: Open Source Access to Bibliographic Data&#8221;</a> in Code4Lib Journal.</p>
<p>A while ago I wrote a CGI script that took ISBN numbers as input, fed them to <a href="http://www.worldcat.org/affiliate/webservices/xisbn/app.jsp">xISBN</a> and/or <a href="http://www.librarything.com/thingology/2006/06/introducing-thingisbn_14.php">ThingISBN</a> to suggest alternative titles. I called it <a href="http://dewey.library.nd.edu/hacks/send/">Send It To Me</a>.</p>
<p>Then of course there is the direct link to Amazon.com.</p>
<div style='text-align:center'>
<SCRIPT charset="utf-8" type="text/javascript" src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822/US/infomotions-20/8001/b9eae8a2-4f66-47d9-aede-eae2b7fe2c3c"> </SCRIPT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Finfomotions-20%2F8001%2Fb9eae8a2-4f66-47d9-aede-eae2b7fe2c3c&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT>
</div>
<p>I suppose it is nice to have choice.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Fun with WebService::Solr, Part III of III</title>
		<link>./../2009/01/fun-with-webservicesolr-part-iii-of-iii/index.html</link>
				<comments>./../2009/01/fun-with-webservicesolr-part-iii-of-iii/index.html#comments</comments>
				<pubDate>Fri, 23 Jan 2009 01:46:26 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[Search/Retrieve via URL (SRU)]]></category>
		<category><![CDATA[WebService::Solr]]></category>

		<guid isPermaLink="false">./../index.html?p=134</guid>
				<description><![CDATA[This is the last of a three-part series providing an overview of a set of Perl modules called WebService::Solr. In Part I, WebService::Solr was introduced with two trivial scripts. Part II put forth two command line driven scripts to index and search content harvested via OAI. Part III illustrates how to implement an Search/Retrieve via [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This is the last of a three-part series providing an overview of a set of Perl modules called WebService::Solr. In <a href="./../2009/01/fun-with-webservicesolr-part-i-of-iii/index.html">Part I</a>, WebService::Solr was introduced with two trivial scripts. <a href="./../2009/01/fun-with-webservicesolr-part-ii-of-iii/index.html">Part II</a> put forth two command line driven scripts to index and search content harvested via OAI. Part III illustrates how to implement an Search/Retrieve via URL (SRU) search interface against an index created by WebService::Solr.
</p>
<h3>Search/Retrieve via URL</h3>
<p><img src="http://www.loc.gov/standards/sru/images/sru.gif" alt="SRU" width="300" height="25" /></p>
<p>
 <a href="http://www.loc.gov/standards/sru/">Search/Retrieve via URL</a> (SRU) is a REST-like Web Service-based protocol designed to query remote indexes. The protocol essentially consists of three functions or &#8220;operations&#8221;. The first, explain, provides a mechanism to auto-discover the type of content and capabilities of an SRU server. The second, scan, provide a mechanism to browse an index&#8217;s content much like perusing the back-of-a-book index. The third, searchRetrieve, provides the means for sending a query to the index and getting back a response. Many of the librarians in the crowd will recognize SRU as the venerable Z39.50 protocol redesigned for the Web.
</p>
<p>
During the past year, time has been spent joining the SRU community with the <a href="http://www.opensearch.org/">OpenSearch</a> community to form a single, more unified set of Search Web Service protocols. OpenSearch has very similar goals to SRU &#8212; to provide standardized interfaces for searching indexes &#8212; but the techniques between it an SRU are different. Where OpenSearch&#8217;s query language is simple, SRU&#8217;s is expressive. Where OpenSearch returns an RSS-like data stream, SRU includes the ability to return just about any XML format. OpenSearch may be easier to implement, but SRU is suited for a wider number of applications. To bring SRU and OpenSearch together, and to celebrate similarities as opposed to differences, an <a href="http://docs.oasis-open.org/search-ws/v1.0/apd-V1.0.html">OASIS Abstract Protocol Definition</a> has been drafted defining how the searching of Web-based databases and indexes can be done in a standardized way.
</p>
<p>
SRU is an increasingly important protocol for the library community because of a growing number of the <a href="http://worldcat.org/devnet/wiki/Services">WorldCat Grid Services</a> are implemented using SRU. The Grid supports indexes such lists of library holdings (WorldCat), name and subject authority files (Identities), as well as names of libraries (the Registry). By sending SRU queries to these services and mashing up the results with the output of other APIs, all sorts of library and bibliographic applications can be created.
</p>
<h3>Integrating WebService::Solr into SRU</h3>
<p>
Personally, I have been creating SRU interfaces to many of my indexes for about four years. I have created these interfaces against mailing list archives, OAI-harvested content, and MARC records. The underlying content has been indexed with swish-e, Plucene, KinoSearch, and now Lucene through <a href="http://search.cpan.org/~bricas/WebService-Solr/">WebService::Solr</a>.
</p>
<p>
Ironic or not, I use yet another set of Perl modules &#8212; available on CPAN and called SRU &#8212; written by Brian Cassidy to implement my SRU servers. The form of my implementations is rather simple. Get the input. Determine what operation is requested. Branch accordingly. Do the necessary processing. Return a response.
</p>
<p>
The heart of my SRU implementation is a subroutine called search. It is within this subroutine where indexer-specific hacking takes place. For example and considering WebService::Solr:
</p>
<pre><code>sub search {

  # initialize
  my $query   = shift;
  my $request = shift;
  my @results;
  
  # set up Solr
  my $solr = WebService::Solr-&gt;new( SOLR );
    
  # calculate start record and number of records
  my $start_record = 0;
  if ( $request-&gt;startRecord ) { $start_record = $request-&gt;startRecord - 1 }
  my $maximum_records = MAX; $maximum_records = $request-&gt;maximumRecords 
     unless ( ! $request-&gt;maximumRecords );

  # search
  my $response   = $solr-&gt;search( $query, {
                                  'start' =&gt; $start_record,
                                  'rows'  =&gt; $maximum_records });
  my @hits       = $response-&gt;docs;
  my $total_hits = $response-&gt;pager-&gt;total_entries;
  
  # display the number of hits
  if ( $total_hits ) {
  
    foreach my $doc ( @hits ) {
                
      # slurp
      my $id          = $doc-&gt;value_for(  'id' );
      my $name        = &amp;escape_entities( $doc-&gt;value_for(  'title' ));
      my $publisher   = &amp;escape_entities( $doc-&gt;value_for(  'publisher' ));
      my $description = &amp;escape_entities( $doc-&gt;value_for(  'description' ));
      my @creator     = $doc-&gt;values_for( 'creator' );
      my $contributor = &amp;escape_entities( $doc-&gt;value_for(  'contributor' ));
      my $url         = &amp;escape_entities( $doc-&gt;value_for(  'url' ));
      my @subjects    = $doc-&gt;values_for( 'subject' );
      my $source      = &amp;escape_entities( $doc-&gt;value_for(  'source' ));
      my $format      = &amp;escape_entities( $doc-&gt;value_for(  'format' ));
      my $type        = &amp;escape_entities( $doc-&gt;value_for(  'type' ));
      my $relation    = &amp;escape_entities( $doc-&gt;value_for(  'relation' ));
      my $repository  = &amp;escape_entities( $doc-&gt;value_for(  'repository' ));

      # full results, but included entities; hmmm...
      my $record  = '&lt;srw_dc:dc xmlns="http://www.w3.org/TR/xhtml1/strict"
                      xmlns:dc="http://purl.org/dc/elements/1.1/"
                      xmlns:srw_dc="info:srw/schema/1/dc-v1.1"&gt;';
      $record .= '&lt;dc:title&gt;' .  $name . '&lt;/dc:title&gt;';
      $record .= '&lt;dc:publisher&gt;' .  $publisher . '&lt;/dc:publisher&gt;';
      $record .= '&lt;dc:identifier&gt;' .  $url . '&lt;/dc:identifier&gt;';
      $record .= '&lt;dc:description&gt;' .  $description . '&lt;/dc:description&gt;';
      $record .= '&lt;dc:source&gt;' . $source . '&lt;/dc:source&gt;';
      $record .= '&lt;dc:format&gt;' .  $format . '&lt;/dc:format&gt;';
      $record .= '&lt;dc:type&gt;' .  $type . '&lt;/dc:type&gt;';
      $record .= '&lt;dc:contributor&gt;' .   $contributor . '&lt;/dc:contributor&gt;';
      $record .= '&lt;dc:relation&gt;' .   $relation . '&lt;/dc:relation&gt;';
      foreach ( @creator ) { $record .= '&lt;dc:creator&gt;' .  $_ . '&lt;/dc:creator&gt;' }
      foreach ( @subjects ) { $record .= '&lt;dc:subject&gt;' . $_ . '&lt;/dc:subject&gt;' }
      $record .= '&lt;/srw_dc:dc&gt;';
      push @results, $record;
            
    }
    
  }
  
  # done; return it
  return ( $total_hits, @results );
  
}</code></pre>
<p>
The subroutine is not unlike the search script outlined in Part II of this series. First the query, SRU::Request object, results, and local Solr objects are locally initialized. A pointer to the first desired hit as well as the maximum number of records to return are calculated. The search is done, and the total number of search results is saved for future reference. If the search was a success, then each of the hits are looped through while stuffing them into an XML element named record and scoped with a Dublin Core name space. Finally, the total number of records as well as the records themselves are returned to the main module where they are added to an SRU::Response object and returned to the SRU client.
</p>
<p>
This particular implementation is pretty rudimentary, and it does not really exploit the underlying functionality of Solr/Lucene. For example, it does not support facets, spell check, suggestions, etc. On the other hand, it does support paging, and since it is implemented under mod_perl it is just about as fast as it can get on my hardware.
</p>
<p>
<a href="http://infomotions.com/sandbox/solr-sru/server.cgi">Give the implementation a whirl</a>. The underlying index includes about 20,000 records of various electronic books (from the Alex Catalogue of Electronic Texts, Project Gutenberg, and the HathiTrust), photographs (from my own adventures), journal titles, and journal articles (both from the Directory of Open Access Journals).
</p>
<h3>Summary</h3>
<p>
It is difficult for me to overstate the number of possibilities for librarianship considering the current information environment. Data and information abound! Learning has not stopped. It is sexy to be in the information business. All of the core principles of librarianship are at play in this environment. Collection. Preservation. Organization. Dissemination. The application of relational databases combined with indexers provide the means to put into practice these core principles in today&#8217;s world.
</p>
<p>
The Solr/Lucene combination is an excellent example, and WebService::Solr is just one way to get there. Again, I don&#8217;t expect every librarian to know and understand all of things outlined in this series of essays. On the other hand, I do think it is necessary for the library community as a whole to understand this technology in the same way they understand bibliography, conservation, cataloging, and reference. Library schools need to teach it, and librarians need to explore it.
</p>
<h3>Source code</h3>
<p>
Finally, plain text versions of this series&#8217; postings, the necessary Solr schema.xml files, as well as all the <a href="./../wp-content/uploads/2009/01/fun-with-webservice-solr.tar.gz">source code is available for downloading</a>. Spend about an hour putzing around. I&#8217;m sure you will come out the other end learning something.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/01/fun-with-webservicesolr-part-iii-of-iii/feed/index.html</wfw:commentRss>
		<slash:comments>7</slash:comments>
							</item>
		<item>
		<title>Fun with WebService::Solr, Part II of III</title>
		<link>./../2009/01/fun-with-webservicesolr-part-ii-of-iii/index.html</link>
				<comments>./../2009/01/fun-with-webservicesolr-part-ii-of-iii/index.html#comments</comments>
				<pubDate>Mon, 12 Jan 2009 23:50:41 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[OAI-PMH]]></category>
		<category><![CDATA[WebService::Solr]]></category>

		<guid isPermaLink="false">./../index.html?p=129</guid>
				<description><![CDATA[In this posting (Part II), I will demonstrate how to use WebService::Solr to create and search a more substantial index, specifically an index of metadata describing the content of the Directory of Open Access Journals. Part I of these series introduced Lucene, Solr, and WebService::Solr with two trivial examples. Part III will describe how to [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
In this posting (Part II), I will demonstrate how to use WebService::Solr to create and search a more substantial index, specifically an index of metadata describing the content of the Directory of Open Access Journals. <a href="./../2009/01/fun-with-webservicesolr-part-i-of-iii/index.html">Part I</a> of these series introduced Lucene, Solr, and WebService::Solr with two trivial examples. <a href="./../2009/01/fun-with-webservicesolr-part-iii-of-iii/index.html">Part III</a> will describe how to create an SRU interface using WebService::Solr.
</p>
<h3>Directory of Open Access Journals</h3>
<p>
<img src="http://www.doaj.org/doajImages/DOAJ.jpg" alt="solr logo" width="200" height="61" align="right" />The <a href="http://www.doaj.org/">Directory of Open Access Journals</a> (DOAJ) is a list of freely available scholarly journals. As of this writing the Directory contains approximately 3,900 titles organized into eighteen broad categories such as Arts and Architecture, Law and Political Science, and General Science. Based on my tertiary examination, a large percentage of the titles are in the area of medicine.
</p>
<p>
Not only is it great that such a directory exists, but it is even greater that the Directory&#8217;s metadata &#8212; the data describing the titles in the Directory &#8212; is available for harvesting via OAI-PMH. While the metadata is rather sparse, it is more than adequate for creating rudimentary MARC records for importing into library catalogs, or better yet, incorporating into some other Web service. (No puns intended.)
</p>
<p>
In my opinion, the Directory is a especially underutilized. For example, not only are the Directory&#8217;s journal titles available for download, but so is the metadata of about 25,000 journal articles. Given these two things (metadata describing titles as well as articles) it would be entirely possible to seed a locally maintained index of scholarly journal content and incorporate that into library &#8220;holdings&#8221;. But alas, that is another posting and another story.
</p>
<h3>Indexing the DOAJ</h3>
<p>
It is almost trivial to create a search engine against DOAJ content when you know how to implement an OAI-PMH harvester and indexer. First, you need to know the OAI-PMH root URL for the Directory, and it happens to be <a href="http://www.doaj.org/oai?verb=Identify">http://www.doaj.org/oai</a>  Second, you need to peruse the OAI-PMH output sent by the Directory and map it to fields you will be indexing. In the case of this demonstration, the fields are id, title, publisher, subject, and URL. Consequently, I updated the schema from the first demonstration to look like this:
</p>
<pre>&lt;!-- DC-like fields --&gt;
&lt;fields&gt;
  &lt;field name="id" type="string" indexed="true" stored="true" required="true" /&gt;
  &lt;field name="title" type="text" indexed="true" stored="true" /&gt;
  &lt;field name="publisher" type="text" indexed="true" stored="true" /&gt;
  &lt;field name="subject" type="text" indexed="true" stored="true" multiValued="true" /&gt;
  &lt;field name="url" type="text" indexed="false" stored="true" /&gt;
  &lt;field name="text" type="text" indexed="true" stored="false" multiValued="true" /&gt;
  &lt;field name="facet_subject" type="string" indexed="true" stored="true" multiValued="true" /&gt;
&lt;/fields&gt;

&lt;!-- key; for updating purposes --&gt;
&lt;uniqueKey&gt;id&lt;/uniqueKey&gt;

&lt;!-- for non-field searches --&gt;
&lt;defaultSearchField&gt;text&lt;/defaultSearchField&gt;

&lt;!-- AND is more precise --&gt;
&lt;solrQueryParser defaultOperator="AND" /&gt;

&lt;!-- what gets searched by default --&gt;
&lt;copyField source="title" dest="text" /&gt;
&lt;copyField source="subject" dest="text" /&gt;
&lt;copyField source="publisher" dest="text" /&gt;</pre>
<p>
The astute reader will notice the addition of a field named <code>facet_subject</code>. This field, denoted as a string and therefore not parsed by the indexer, is destined to be a browsable facet in the search engine. By including this sort of field in the index it is be possible to return results like, &#8220;Your search identified 100 items, and 25 of them are associated with the subject Philosophy.&#8221; A very nice feature. Think of it as the explicit exploitation of controlled vocabulary terms for search results. Facets turn the use of controlled vocabularies inside out. The library community has something to learn here.
</p>
<p>
Once the schema was updated, I wrote the following script to index the journal title content from the Directory:
</p>
<pre><code>#!/usr/bin/perl

# index-doaj.pl - get doaj content and index it

# Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt;
# January  12, 2009 - version 1.0


# define
use constant OAIURL =&gt; 'http://www.doaj.org/oai';
use constant PREFIX =&gt; 'oai_dc';
use constant SOLR   =&gt; 'http://localhost:210/solr';

# require
use Net::OAI::Harvester;
use strict;
use WebService::Solr;

# initialize oai and solr
my $harvester = Net::OAI::Harvester-&gt;new( baseURL =&gt; OAIURL );
my $solr      = WebService::Solr-&gt;new( SOLR );

# get all records and loop through them
my $records = $harvester-&gt;listAllRecords( metadataPrefix =&gt; PREFIX );
my $id      = 0;
while ( my $record = $records-&gt;next ) {

  # increment
  $id++;
  last if ( $id &gt; 100 );  # comment this out to get everything

  # extract the desired metadata
  my $metadata     = $record-&gt;metadata;
  my $identifier   = $record-&gt;header-&gt;identifier;
  my $title        = $metadata-&gt;title      ? &amp;strip( $metadata-&gt;title )     : '';
  my $url          = $metadata-&gt;identifier ? $metadata-&gt;identifier          : '';
  my $publisher    = $metadata-&gt;publisher  ? &amp;strip( $metadata-&gt;publisher ) : '';
  my @all_subjects = $metadata-&gt;subject    ? $metadata-&gt;subject             : ();

  # normalize subjects
  my @subjects = ();
  foreach ( @all_subjects ) {

    s/DoajSubjectTerm: //;  # remove DOAJ label
    next if ( /LCC: / );    # don't want call numbers
    push @subjects, $_;

  }

  # echo
  print "      record: $id\n";
  print "  identifier: $identifier\n";
  print "       title: $title\n";
  print "   publisher: $publisher\n";
  foreach ( @subjects ) { print "     subject: $_\n" }
  print "         url: $url\n";
  print "\n";

  # create solr/lucene document
  my $solr_id        = WebService::Solr::Field-&gt;new( id        =&gt; $identifier );
  my $solr_title     = WebService::Solr::Field-&gt;new( title     =&gt; $title );
  my $solr_publisher = WebService::Solr::Field-&gt;new( publisher =&gt; $publisher );
  my $solr_url       = WebService::Solr::Field-&gt;new( url       =&gt; $url );

  # fill up a document
  my $doc = WebService::Solr::Document-&gt;new;
  $doc-&gt;add_fields(( $solr_id, $solr_title, $solr_publisher, $solr_url ));
  foreach ( @subjects ) {

    $doc-&gt;add_fields(( WebService::Solr::Field-&gt;new( subject =&gt; &amp;strip( $_ ))));
    $doc-&gt;add_fields(( WebService::Solr::Field-&gt;new( facet_subject =&gt; &amp;strip( $_ ))));

  }

  # save; no need for commit because it comes for free
  $solr-&gt;add( $doc );

}

# done
exit;


sub strip {

  # strip non-ascii characters; bogus since the OAI output is suppose to be UTF-8
  # see: http://www.perlmonks.org/?node_id=613773
  my $s =  shift;
  $s    =~ s/[^[:ascii:]]+//g;
  return $s;

}</code></pre>
<p>
The script is very much like the trivial example from <a href="./../2009/01/fun-with-webservicesolr-part-i-of-iii/index.html">Part I</a>. It first defines a few constants. It then initializes both an OAI-PMH harvester as well as a Solr object. It then loops through each record of the harvested content extracting the desired data. The subject data, in particular, is normalized. The data is then inserted into WebService::Solr::Field objects which in turn are inserted into WebService::Solr::Document objects and added to the underlying Lucene index.
</p>
<h3>Searching the index</h3>
<p>
Searching the index is less trivial than the example in Part I because of the facets, below:
</p>
<pre><code>#!/usr/bin/perl

# search-doaj.pl - query a solr/lucene index of DOAJ content

# Eric Lease Morgan &lt;eric_morgan@infomotions.com&gt;
# January 12, 2009 - version 1.0


# define
use constant SOLR =&gt; 'http://localhost:210/solr';
use constant ROWS =&gt; 100;
use constant MIN  =&gt; 5;

# require
use strict;
use WebService::Solr;

# initalize
my $solr = WebService::Solr-&gt;new( SOLR );

# sanity check
my $query = $ARGV[ 0 ];
if ( ! $query ) {

  print "Usage: $0 &lt;query&gt;\n";
  exit;

}

# search; get no more than ROWS records and subject facets occuring MIN times
my $response  = $solr-&gt;search( $query, { 'rows'           =&gt; ROWS,
                                         'facet'          =&gt; 'true', 
                                         'facet.field'    =&gt; 'facet_subject', 
                                         'facet.mincount' =&gt; MIN });

# get the number of hits, and start display
my $hit_count = $response-&gt;pager-&gt;total_entries;
print "Your search ($query) found $hit_count document(s).\n\n";

# extract subject facets, and display
my %subjects = &amp;get_facets( $response-&gt;facet_counts-&gt;{ facet_fields }-&gt;{ facet_subject } );
if ( $hit_count ) {

  print "  Subject facets: ";
  foreach ( sort( keys( %subjects ))) { print "$_ (" . $subjects{ $_ } . "); " }
  print "\n\n";
  
}

# display each hit
my $index = 0;
foreach my $doc ( $response-&gt;docs ) {

  # slurp
  my $id        = $doc-&gt;value_for( 'id' );
  my $title     = $doc-&gt;value_for( 'title' );
  my $publisher = $doc-&gt;value_for( 'publisher' );
  my $url       = $doc-&gt;value_for( 'url' );
  my @subjects  = $doc-&gt;values_for( 'subject' );

  # increment
  $index++;

  #echo
  print "     record: $index\n";
  print "         id: $id\n";
  print "      title: $title\n";
  print "  publisher: $publisher\n";
  foreach ( @subjects ) { print "    subject: $_\n" }
  print "        url: $url\n";
  print "\n";

}

# done 
exit;


sub get_facets {

  # convert array of facet/hit-count pairs into a hash; obtuse
  my $array_ref = shift;
  my %facet;
  my $i = 0;
  foreach ( @$array_ref ) {

    my $k = $array_ref-&gt;[ $i ]; $i++;
    my $v = $array_ref-&gt;[ $i ]; $i++;
    next if ( ! $v );
    $facet{ $k } = $v;

  }

  return %facet;

}</code></pre>
<p>
The script needs a bit of explaining. Like before, a few constants are defined. A Solr object is initialized, and the existence of a query string is verified. The search method makes use of a few options, specifically, options to return ROW number of search results as well as specific facets occurring MIN number of times. The whole thing is stuffed into a WebService::Solr::Response object, which is, for better or for worse, a JSON data structure. Using the pager method against the response object, the number hits are returned which is assigned to a scalar and displayed.
</p>
<p>
The trickiest part of the script is the extraction of the facets done by the get_facets subroutine. In WebService::Solr, facets names and their values are returned in an array reference. get_facets converts this array reference into a hash, and is then displayed. Finally, each WebService::Solr::Response object is looped through and echoed. Notice how the the subject field is handled. It contains multiple values which are retrieved through the values_for method which returns an array, not a scalar. Below is sample output for the search &#8220;library&#8221;:
</p>
<pre>Your search (library) found 84 document(s).

  Subject facets: Computer Science (7); Library and Information
Science (68); Medicine (General) (7); information science (19);
information technology (8); librarianship (16); libraries (6);
library and information science (14); library science (5);

     record: 1
         id: oai:doaj.org:0029-2540
      title: North Carolina Libraries
  publisher: North Carolina Library Association
    subject: libraries
    subject: librarianship
    subject: media centers
    subject: academic libraries
    subject: Library and Information Science
        url: http://www.nclaonline.org/NCL/

     record: 2
         id: oai:doaj.org:1311-8803
      title: Bibliosphere
  publisher: NBU Library
    subject: Bulgarian libraries
    subject: librarianship
    subject: Library and Information Science
        url: http://www.bibliosphere.eu/ 

     record: 3
         id: ...</pre>
<p>
In a hypertext environment, each of the titles in the returned records would be linked with their associated URLs. Each of the subject facets listed at the beginning of the output would be hyperlinked to subsequent searches combining the original query plus the faceted term, such as &#8220;library AND subject:&#8217;Computer Science'&#8221;. An even more elaborate search interface would allow the user to page through search results and/or modify the value of MIN to increase or decrease the number of relevant facets displayed.
</p>
<h3>Making lists searchable</h3>
<p>
Librarians love lists. We create lists of books. Lists of authors of books. Lists of journals. Lists of journal articles. Recently we have become enamored with lists of Internet resources. We pay other people for lists, and we call these people bibliographic index vendors. OCLC&#8217;s bread and butter is a list of library holdings. Librarians love lists.
</p>
<p>
Lists aren&#8217;t very useful unless they are: 1) short, 2) easily sortable, or 3) searchable. For the most part, the profession has mastered the short, sortable list, but we are challenged when it comes to searching our lists. We insist on using database applications for this, even when we don&#8217;t know how to design a (relational) database. Our searching mentality is stuck in the age of mediated online search services such as DIALOG and BRS. The profession has not come to grips with the advances in information retrieval. Keyword searching, as opposed to field searching, has its merits. Tools like Lucene, KinoSearch, Zebra, swish-e, and a host of predecessors like Harvest, WAIS, and Veronica all facilitate(d) indexing/searching.
</p>
<p>
As well as organizing information &#8212; the creation of lists &#8212; the profession needs to learn how to create its own indexes and make them searchable. While I do not advocate every librarian know how to exploit things like WebService::Solr, I do advocate the use of these technologies to a much greater degree. Without them the library profession will always be a follower in the field of information technology as opposed to a leader.
</p>
<h3>Summary</h3>
<p>
This posting, Part II of III, illustrated how to index and search content from an OAI-PMH data repository. It also advocated the increased use of indexer/search engines by the library profession. In the next and last part of this series WebService::Solr will be used as a part of an Search/Retrieve via URL (SRU) interface.
</p>
<h3>Acknowledgements</h3>
<p>
Special thanks go to Brian Cassidy and Kirk Beers who wrote <a href="http://search.cpan.org/~bricas/WebService-Solr-0.02/">WebService::Solr</a>. Additional thanks go to Ed Summers and Thomas Berger who wrote <a href="http://search.cpan.org/~thb/OAI-Harvester-1.13/">Net::OAI::Harvester</a>. I am simply standing on the shoulders of giants.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/01/fun-with-webservicesolr-part-ii-of-iii/feed/index.html</wfw:commentRss>
		<slash:comments>5</slash:comments>
							</item>
		<item>
		<title>Mr. Serials is dead. Long live Mr. Serials</title>
		<link>./../2009/01/mr-serials-is-dead-long-live-mr-serials/index.html</link>
				<pubDate>Mon, 12 Jan 2009 03:50:17 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>

		<guid isPermaLink="false">./../index.html?p=123</guid>
				<description><![CDATA[This posting describes the current state of the Mr. Serials Process. Background Round about 1994 when I was employed by the North Carolina State University Libraries, Susan Nutter, the Director, asked me to participate in an ARL Collection Analysis Project (CAP). The goal of the Project was to articulate a mission/vision statement for the Libraries [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting describes the current state of the Mr. Serials Process.
</p>
<h3>Background</h3>
<p>
Round about 1994 when I was employed by the North Carolina State University Libraries, Susan Nutter, the Director, asked me to participate in an ARL <a href="http://www.worldcat.org/oclc/35089024">Collection Analysis Project (CAP)</a>. The goal of the Project was to articulate a mission/vision statement for the Libraries fledgling Collection Development Department. &#8220;It will be a professional development opportunity&#8221;, she told me. I don&#8217;t think she knows how much of an opportunity it really was.
</p>
<p>
Through the CAP I, along with a number of others (Margaret Hunt, John Abbott, Caroline Argentati, and Orion Pozo) became acutely aware of the &#8220;serials pricing crisis&#8221;. Academic writes article. Article gets peer-reviewed. Publisher agrees to distribute article in exchange for copyright. Article gets published in journal. Library subscribes to journal at an ever-increasing price. Academic reads journal. Repeat.
</p>
<p>
The whole &#8220;crisis&#8221; made me frustrated (angry), and others were frustrated too. Why did prices need to be increasing so dramatically? Why couldn&#8217;t the Academe coordinate peer-review? Why couldn&#8217;t the Internet be used a distribution medium? Some people tried to answer some of these questions differently than the norm, and the result was the creation of electronic journals distributed via email such as the venerable <cite>Bryn Mawr Classical Review</cite>, <cite>Psycoloquy</cite>, <cite>Postmodern Culture</cite>, and <cite>PACS Review</cite>.
</p>
<p>
Given this environment, I sought to be a part of the solution instead of perpetuating the problem. I created the Mr. Serials Process &#8212; a set of applications/scripts that collected, archived, indexed, and re-distributed sets of electronic journals. I figured I could demonstrate to the library and academic communities that if everybody does their part, then there would less of need for commercial publishers &#8212; entities who were exploiting the system and more interested in profit than the advancement of knowledge. Mr. Serials was &#8220;born&#8221; around 1994 and documented in an <a href="http://infomotions.com/musings/serials/">article from Serials Review</a>. Mr. Serial, now 14-years old, would be considered a child by most people&#8217;s standards. Yet, fourteen years is a long time in Internet years.
</p>
<h3>Mr. Serials is dead</h3>
<p>
For all intents and purposes, Mr. Serials is dead because his process was based on the distribution of electronic serials via email. His death was long and drawn out. The final nail driven into his coffin came when <a href="http://www.acqweb.org/acqnet.html">ACQNET</a>, one of the original &#8220;journals&#8221; he collected, moved from Appalachian State University to iBiblio a few months ago. After the move Mr. Serials was no longer considered the official archivist of the content, and his era had passed.
</p>
<p>
This is not a big deal. Change happens. Processes evolve. Besides, Mr. Serials created a legacy for himself, a set of early electronic serial literature exemplifying the beginnings of networked scholarly communication which includes more than thirty titles archived at <a href="http://serials.infomotions.com/">serials.infomotions.com</a>.
</p>
<h3>Long live Mr. Serials</h3>
<p>
At the same time, Mr. Serials is alive and well. Maybe, like many people his age, he is going through an adolescence.
</p>
<p>
In the middle 1990s electronic journals were distributed via email. As such the Mr. Serials Process used <a href="http://www.procmail.org/">procmail</a> to filter incoming mail. He then used a Hypercard program to create configuration files denoting the locations of bibliographic data in journal titles. He then used a Perl program reading the configuration files, automatically extracting the bibliographic information from each issue, removing the email header, and saving the resulting journal article in a specified location. Initially, the whole collection was made available via a Gopher server and indexed with WAIS. Later, the collection was made available via an HTTP server and other indexing technologies were used but many of them are broken.
</p>
<p>
Somewhere along the line, some of the &#8220;journals&#8221; became mailing lists, and the Process was modified to take advantage of an archiving program called <a href="http://www.hypermail-project.org/">Hypermail</a>. Like the original Process, the archived materials are accessible via a Web server and indexed with some sort of search engine technology. (There have been so many.) With the movement of ACQNET, the original &#8220;journals&#8221; have all gone away, but Mr. Serials has picked up a few mailing lists along the way, notably <a href="http://serials.infomotions.com/colldv-l/">colldv-l</a>, <a href="http://serials.infomotions.com/code4lib/">Code4LIb</a>, and <a href="http://serials.infomotions.com/ngc4lib/">NGC4Lib</a>. Consequently, Mr. Serials is not really dead, just transformed.
</p>
<p>
A lot of the credit goes to procmail, Hypermail, Web servers, and indexers. Procmail reads incoming mail and processes it accordingly. File it here. File it there. Delete it. Send it off to another process. Hypermail makes pretty email archives which are more or less configurable. It allows one to keep email messages in their original RFC 822 (mbox) format and reuse them for many purposes. We all know what HTTP servers do. Indexers complement the Hypermail process by providing searchable interfaces to the collection. The indexer used against colldv-l, Code4Lib, and NGC4Lib is called <a href="http://www.rectangular.com/kinosearch/">KinoSearch</a> and is implemented through an SRU interface.
</p>
<p>
Mr. Serials is a modern day library process. It has a set of collection development goals. It acquires content. It organizes content. It archives and preserves content. It redisseminates content. The content it currently collects may not be extraordinarily scholarly, but someday somebody is going to want it. It is a special collection. Much if its success is a testiment to open source software. All the tools it uses are open source. In fact most of them were distributed as open source even before the phrase was coined.
</p>
<p>
Long live Mr. Serials.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Fun with WebService::Solr, Part I of III</title>
		<link>./../2009/01/fun-with-webservicesolr-part-i-of-iii/index.html</link>
				<comments>./../2009/01/fun-with-webservicesolr-part-i-of-iii/index.html#comments</comments>
				<pubDate>Mon, 05 Jan 2009 23:23:17 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[WebService::Solr]]></category>

		<guid isPermaLink="false">./../index.html?p=118</guid>
				<description><![CDATA[This posting (Part I) is an introduction to a Perl module called WebService::Solr. In it you will learn a bit of what Solr is, how it interacts with Lucene (an indexer), and how to write two trivial Perl scripts: 1) an indexer, and 2) a search engine. Part II of this series will introduce less [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
<img src="http://lucene.apache.org/solr/images/solr_FC.jpg" alt="solr logo" width="141" height="78" align="right" /><br />
This posting (Part I) is an introduction to a Perl module called WebService::Solr. In it you will learn a bit of what Solr is, how it interacts with Lucene (an indexer), and how to write two trivial Perl scripts: 1) an indexer, and 2) a search engine. <a href="./../2009/01/fun-with-webservicesolr-part-ii-of-iii/index.html">Part II</a> of this series will introduce less trivial scripts &#8212; programs to index and search content from the Directory of Open Access Journals (DOAJ). <a href="./../2009/01/fun-with-webservicesolr-part-iii-of-iii/index.html">Part III</a> will demonstrate how to use WebService::Solr to implement an SRU interface against the index of DOAJ content. After reading each Part you should have a good overview of what WebService::Solr can do, but more importantly, you should have a better understanding of the role indexers/search engines play in the world of information retrieval.
</p>
<h3>Solr, Lucene, and WebService::Solr</h3>
<p>
I must admit, I&#8217;m coming to the <a href="http://lucene.apache.org/solr/">Solr</a> party at least one year late, and as you may or may not know, Solr is a Java-based, Web Services interface to the venerable <a href="http://lucene.apache.org/">Lucene</a> &#8212; the current gold standard when it comes to indexers/search engines. In such an environment, Lucene (also a Java-based system) is used to first create inverted indexes from texts or numbers, and second, provide a means for searching the index. Solr is a Web Services interface to Lucene. Instead of writing applications reading and writing Lucene indexes directly, you can send Solr HTTP requests which are parsed and passed on to Lucene. For example, one could feed Solr sets of metadata describing, say, books, and provide a way to search the metadata to identify items of interest. (&#8220;What a novel idea!&#8221;) Using such a Web Servcies technique the programmer is free to use the programming/scripting language of their choice. No need to know Java, although Java-based programs would definitely be faster and more efficient.
</p>
<p>
For better or for worse, my programming language of choice is Perl, and upon perusing CPAN I discovered <a href="http://search.cpan.org/dist/WebService-Solr/">WebService::Solr</a> &#8212; a module making it easy to interface with Solr (and therefore Lucene). After playing with WebService::Solr for a few days I became pretty impressed, thus, this posting.
</p>
<h3>Installing and configuring Solr</h3>
<p>
Installing Solr is relatively easy. Download the distribution. Save it in a convenient location on your file system. Unpack/uncompress it. Change directories to the example directory, and fire up Solr by typing <code>java -jar start.jar</code> at the command line. Since the distribution includes Jetty (a pint-sized HTTP server), and as long as you have not made any configuration changes, you should now be able to connect to your locally hosted Solr administrative interface through your favorite Web browser. Try, http://localhost:8983/solr/
</p>
<p>
When it comes to configuring Solr, the most important files are found in the conf directory, specifically, solrconfig.xml and schema.xml. I haven&#8217;t tweaked the former. The later denotes the types and names of fields that will ultimately be in your index. Describing in detail the in&#8217;s and out&#8217;s of solrconfig.xml and schema.xml are beyond the scope of this posting, but for our purposes here, it is important to note two things. First I modified schema.xml to include the following Dublin Core-like fields:
</p>
<pre>
  &lt;!-- a set of "Dublin Core-lite" fields --&gt;
  &lt;fields&gt;
    &lt;field name="id" type="string" indexed="true" stored="true" required="true" /&gt;
    &lt;field name="title" type="text" indexed="true" stored="true" /&gt;
   &lt;field name="text" type="text" indexed="true" stored="false" /&gt;
  &lt;/fields&gt;

  &lt;!-- what field is the key, very important! --&gt;
  &lt;uniqueKey&gt;id&lt;/uniqueKey&gt;

  &lt;!-- field to search by default; the power of an index --&gt;
  &lt;defaultSearchField&gt;text&lt;/defaultSearchField&gt;

  &lt;!-- how to deal with multiple terms --&gt;
  &lt;solrQueryParser defaultOperator="AND" /&gt;

  &lt;!-- copy content into the default field --&gt;
  &lt;copyField source="title" dest="text" /&gt;
</pre>
<p>
Second, I edited a Jetty configuration file (jetty.xml) so it listens on port 210 instead of the default port, 8983. &#8220;Remember Z39.50?&#8221;
</p>
<p>
There is a whole lot more to configuring Solr than what is outlined above. To really get a handle on the indexing process the Solr documentation is required reading.
</p>
<h3>Installing WebService::Solr</h3>
<p>
Written by Brian Cassidy and Kirk Beers, WebService::Solr is a set Perl modules used to interface with Solr. Create various WebService::Solr objects (such as fields, documents, requests, and responses), and apply methods against them to create, modify, find, add, delete, query, and optimize aspects of your underlying Lucene index.
</p>
<p>
Since WebService::Solr requires a large number of supporting modules, installing WebService::Solr is best done with using CPAN. From the CPAN command line, enter <code>install WebService::Solr</code>. It worked perfectly for me.
</p>
<h3>Indexing content</h3>
<p>
My first WebService::Solr script, an indexer, is a trivial example, below:
</p>
<pre><code> #!/usr/bin/perl
 
 # trivial-index.pl - index a couple of documents
 
 # define
 use constant SOLR =&gt; 'http://localhost:210/solr';
 use constant DATA =&gt; ( 'Hello, World!', 'It is nice to meet you.' );
 
 # require
 use strict;
 use WebService::Solr;
 
 # initialize
 my $solr = WebService::Solr-&gt;new( SOLR );
 
 # process each data item
 my $index = 0;
 foreach ( DATA ) {
 
   # increment
   $index++;
     
   # populate solr fields
   my $id  = WebService::Solr::Field-&gt;new( id  =&gt; $index );
   my $title = WebService::Solr::Field-&gt;new( title =&gt; $_ );
 
   # fill a document with the fields
   my $doc = WebService::Solr::Document-&gt;new;
   $doc-&gt;add_fields(( $id, $title ));
 
   # save
   $solr-&gt;add( $doc );
   $solr-&gt;commit;
 
 }
 
 # done
 exit;</code></pre>
<p>
To elaborate, the script first defines the (HTTP) location of our Solr instance as well as array of data containing two elements. It then includes/requires the necessary Perl modules. One to keep our programming technique honest, and the other is our reason de existence. Third, a WebService::Solr object is created. Fourth, a pointer is initialized, and a loop instantiated reading each data element. Inside the loop the pointer is incremented and local WebService::Solr::Field objects are created using the values of the pointer and the current data element. The next step is to instantiate a WebService::Solr:Document object and fill it up with the Field objects. Finally, the Document is added to the index, and the update is committed.
</p>
<p>
If everything went according to plan, the Lucene index should now contain two documents. The first with an id equal to 1 and a title equal to &#8220;Hello, World!&#8221;. The second with an id equal to 2 and a title equal to &#8220;It is nice to meet you.&#8221; To verify this you should be able to use the following script to search your index:
</p>
<pre><code>  #!/usr/bin/perl
  
  # trivial-search.pl - query a lucene index through solr
  
  # define
  use constant SOLR =&gt; 'http://localhost:210/solr';
  
  # require
  use strict;
  use WebService::Solr;
  
  # initialize
  my $solr = WebService::Solr-&gt;new( SOLR );
  
  # sanity check
  my $query = $ARGV[ 0 ];
  if ( ! $query ) {
  
    print "Usage: $0 &lt;query&gt;\n";
    exit;
    
  }
  
  # search &amp; get hits
  my $response = $solr-&gt;search( $query );
  my @hits = $response-&gt;docs;
  
  # display
  print "Your search ($query) found " . ( $#hits + 1 ) . " document(s).\n\n";
  foreach my $doc ( @hits ) {
  
    # slurp
    my $id    = $doc-&gt;value_for( 'id' );
    my $title = $doc-&gt;value_for( 'title' );
    
    # echo
    print "     id: $id\n";
    print "  title: $title\n";
    print "\n";
      
  }</code></pre>
<p>
Try queries such as hello, &#8220;hello OR meet&#8221;, or &#8220;title: world&#8221; will return results. Because the field named text includes the content of the title field, as per our definition, queries without field specifications default to the text field. Nice. The power of an index.
</p>
<p>
Here is how the script works. It first denotes the location of Solr. It then includes/requires the necessary modules. Next, it creates a WebService::Solr object. Fourth, it makes sure there is a query on the command line. Fifth, it queries Solr creating a WebService::Solr::Response object, and this object is queried for an array of hits. Finally, the hits are looped through, creating and displaying the contents of each WebService::Solr::Document object (hit) found.
</p>
<h3>Summary</h3>
<p>
This posting provided an overview of Lucene, Solr, and a set of Perl modules called WebService::Solr. It also introduced the use of the modules to index content and search it. <a href="./../2009/01/fun-with-webservicesolr-part-ii-of-iii/index.html">Part II</a> will provide a more in-depth introduction to the use of WebService::Solr and Solr in general.</p>
]]></content:encoded>
							<wfw:commentRss>./../2009/01/fun-with-webservicesolr-part-i-of-iii/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Visit to Ball State University</title>
		<link>./../2008/12/visit-to-ball-state-university/index.html</link>
				<comments>./../2008/12/visit-to-ball-state-university/index.html#comments</comments>
				<pubDate>Wed, 17 Dec 2008 17:17:43 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[Ball State University]]></category>

		<guid isPermaLink="false">./../index.html?p=107</guid>
				<description><![CDATA[I took time yesterday to visit a few colleagues at Ball State University. Ball State, the movie! Over the past few months the names of some fellow librarians at Ball State University repeatedly crossed my path. The first was Jonathan Brinley who is/was a co-editor on Code4Lib Journal. The second was Kelley McGrath who was [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I took time yesterday to visit a few colleagues at Ball State University.
</p>
<table align="right">
<tr valign="top">
<td align="center">
        <img src="./../wp-content/uploads/2008/12/ball-state.jpg" alt="group photo" /><br />
        <span class="caption"><br />
          <a href="./../wp-content/uploads/2008/12/ball-state.mov">Ball State, the movie!</a><br />
        </span>
      </td>
</tr>
</table>
<p>Over the past few months the names of some fellow librarians at Ball State University repeatedly crossed my path. The first was Jonathan Brinley who is/was a co-editor on Code4Lib Journal. The second was Kelley McGrath who was mentioned to me as top-notch cataloger. The third was Todd Vandenbark who was investigating the use of MyLibrary. Finally, a former Notre Damer-er, Marcy Simons, recently started working at Ball State. Because Ball State is relatively close, I decided to take the opportunity to visit these good folks during this rather slow part of the academic year.
</p>
<h3>Compare &amp; contrast</h3>
<p>
After I arrived we made our way to lunch. We compared and contrasted our libraries. For example, they had many &#8212; about say 200 &#8212; public workstations. The library was hustling and bustling. About 18,000 students go to Ball State and seemingly many of them go home on the weekends. Ball State was built with money from the canning jar industry, but upon a visit to the archives no canning jars could be seen. I didn&#8217;t really expect any.
</p>
<h3>Shop talk</h3>
<p>
Over lunch we talked a lot about FRBR and the possibilities of creating work-level records from the myriad of existing item-level (MARC) records. Since the work-related content is often times encoded as free text in some sort of 500 field, I wonder how feasible the process would be. Ironically, an article, &#8220;<a href="http://journal.code4lib.org/articles/775">Identifying FRBR Work-Level Data in MARC Bibliographic Records for Manifestations of Moving Images</a>&#8221; by Kelley had been published the day before in Code4Lib. Boy, it certainly is a small world.
</p>
<p>
I always enjoy &#8220;busman&#8217;s holidays&#8221; and visiting other libraries. I find we oftentimes have more things in common than differences.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/12/visit-to-ball-state-university/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
				<enclosure url="./../wp-content/uploads/2008/12/ball-state.mov" length="2455297" type="video/quicktime" />
			</item>
		<item>
		<title>A Day with OLE</title>
		<link>./../2008/12/a-day-with-ole/index.html</link>
				<comments>./../2008/12/a-day-with-ole/index.html#comments</comments>
				<pubDate>Sat, 13 Dec 2008 13:20:27 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[OLE (Open Library Environment)]]></category>

		<guid isPermaLink="false">./../index.html?p=97</guid>
				<description><![CDATA[This posting documents my experience at Open Library Environment (OLE) project workshop that took place at the University of Chicago, December 11, 2008. In a sentence, the workshop provided an opportunity to describe and flowchart a number of back-end library processes in an effort to help design an integrated library system. What is OLE full-scale [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
This posting documents my experience at Open Library Environment (OLE) project workshop that took place at the University of Chicago, December 11, 2008. In a sentence, the workshop provided an opportunity to describe and flowchart a number of back-end library processes in an effort to help design an integrated library system.
</p>
<h3>What is OLE</h3>
<table align="right">
<tr valign="top">
<td align="center">
        <img src="./../wp-content/uploads/2008/12/gargoyle-small.jpg" alt="gargoyle" /><br />
        <span class="caption"><br />
          <a href="./../wp-content/uploads/2008/12/gargoyle-big.jpg">full-scale gargoyle</a><br />
        </span>
      </td>
</tr>
</table>
<p>As you may or may not know, the <a href="http://oleproject.org/">Open Library Environment</a> is a Mellon-funded initiative in cooperation with a growing number of academic libraries to explore the possibilities of building an integrated library system. Since this initiative is more about library back-end and business processes (acquisitions, cataloging, circulation, reserves, ILL, etc.), it is complimentary to the the <a href="http://www.extensiblecatalog.org/">eXtensible Catalog (XC)</a> project which is more about creating a &#8220;discovery&#8221; layer against and on top of existing integrated library system&#8217;s public access interfaces.
</p>
<h4>Why OLE?</h4>
<p>
Why do this sort of work? There are a few reasons. First, vendor consolidation makes the choices of commercial solutions few. Not a good idea; we don&#8217;t like monopolies. Second, existing applications do not play well with other (campus) applications. Better integration is needed. Third, existing library systems are designed for print materials, but with the advent of greater and greater amounts of electronic materials the pace of change has been inadequate and too slow.
</p>
<p>
OLE is an effort to help drive and increase change in Library Land, and this becomes even more apparent when you consider all of the Mellon-related library initiatives it is supporting: Portico (preservation), JSTOR and ArtSTOR (collections), XC (discovery), OLE (business processes/technical services).
</p>
<h3>The day&#8217;s events</h3>
<p>
The workshop took place at the Regenstein Library (University of Chicago). There were approximately thirty or forty attendees from universities such as Grinnell, Indiana, Notre Dame, Minnesota, Illinois, Iowa, and of course, Chicago.
</p>
<p>
After being given a short introduction/review of what OLE is and why, we were broken into four groups (cataloging/authorities, circulation/reserves/ILL, acquisitions, and serials/ERM), and we were first asked to enumerate the processes of our respective library activities. We were then asked to classify these activities into four categories: core process, shifting/changing process, processes that could be stopped, and processes that we wanted but don&#8217;t have. All of us, being librarians, were not terribly surprised by the enumerations and classifications. The important thing was to articulate them, record them, and compare them with similar outputs from other workshops.
</p>
<p>
After lunch (where I saw the gargoyle and made a few purchases at the Seminary Co-op Bookstore) we returned to our groups to draw flowcharts of any of our respective processes. The selected processes included checking in a journal issue, checking in an electronic resource, keeping up and maintaining a file of borrowers, acquiring a firm order book, cataloging a rare book, and cataloging a digital version of a rare book. This whole flowcharting process was amusing since the workflows of each participants&#8217; library needed to be amalgamated into a single processes. &#8220;We do it this way, and you do it that way.&#8221; Obviously there is more than one way to skin a cat. In the end the flowcharts were discussed, photographed, and packaged up to ship back to the OLE home planet.
</p>
<h3>What do you really want?</h3>
<p>
The final, wrap-up event of the day was a sharing and articulation of what we really wanted in an integrated library system. &#8220;If there one thing you could change, then what would it be?&#8221; Based on my notes, the most popular requests were:
</p>
<ol>
<li>make the system interoperable with sets of APIs (4 votes)</li>
<li>allow the system to accommodate multiple metadata formats (3 votes)</li>
<li>include a robust reporting mechanism; give me the ARL Generate Statistics Button (2 votes)</li>
<li>implement a staff interface allowing work to be done without editing records (2 votes)</li>
<li>implement consortial borrowing across targets (2 votes)</li>
<li>separate the discovery processes from the business processes (2 votes)</li>
</ol>
<p>
Other wish list items I thought were particularly interesting included: integrating the collections process into the system, making sure the application was operating system independent, and implementing Semantic Web features.
</p>
<h3>Summary</h3>
<p>
I&#8217;m glad I had the opportunity to attend. It gave me a chance to get a better understanding of what OLE is all about, and I saw it as a professional development session where I learned more about where things are going. The day&#8217;s events were well-structured, well-organized, and manageable given the time restraints. I only regret there was too little &#8220;blue skying&#8221; by attendees. Much of the time was spent outlining how our work is done now. I hope any future implementation explores new ways of doing things in order to take better advantage of the changing environment as opposed to simply automating existing processes.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/12/a-day-with-ole/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>ASIS&#038;T Bulletin on open source software</title>
		<link>./../2008/12/asist-bulletin-on-open-source-software/index.html</link>
				<pubDate>Fri, 12 Dec 2008 13:37:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[ASIS&T Bulletin]]></category>
		<category><![CDATA[open source software]]></category>

		<guid isPermaLink="false">./../index.html?p=94</guid>
				<description><![CDATA[The following is a verbatim duplication of an introduction I wrote for a special issue of the ASIS&#038;T Bulletin on open source software in libraries. I appreciate the opportunity to bring the issue together because I sincerely believe open source software provides a way for libraries to have more control over their computing environment. This [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
The following is a verbatim duplication of an introduction I wrote for a special issue of the ASIS&#038;T Bulletin on open source software in libraries. I appreciate the opportunity to bring the issue together because I sincerely believe open source software provides a way for libraries to have more control over their computing environment. This is especially important for a profession that is about learning, teaching, scholarship, data, information, and knowledge. Special thanks goes to Irene L. Travis who brought the opportunity to my attention. <em>Thank you.</em>
</p>
<h3>Open Source Software in Libraries</h3>
<p>
It is a privilege and an honor to be the guest editor for this <a href="http://www.asis.org/Bulletin/Dec-08/">special issue of the Bulletin of the American Society for Information Science and Technology on open source software</a>. In it you will find a number of articles describing open source software and how it has been used in libraries. Open source software or free and open source software is defined and viewed in a variety of ways, and the definition will be refined and enriched by our authors. However, very briefly, for those readers unfamiliar with it, open source software is software that is distributed under one of a number of licensing arrangements that (1) require that the software&#8217;s source code be made available and accessible as part of the package and (2) permit the acquirer of the software to modify the code freely to fit their own needs provided that, (3) if they distribute the software modifications they create, they do so under an open source license. If these basic elements are met, there is no requirement that the resulting software be distributed at no cost or non-commercially, although much widely used open source software such as the web browser Firefox is also distributed without charge. 
</p>
<h4>In This Issue</h4>
<p>
The articles begin with Scot Colford&#8217;s &#8220;<a href="http://www.asis.org/Bulletin/Dec-08/DecJan09_Colford.html">Explaining Free and Open Source Software</a>,&#8221; in which he describes how the process of using open source software is a lot like baking a cake. He goes on to outline how open source software is all around us in our daily computing lives.
</p>
<p>
Karen Schneider&#8217;s &#8220;<a href="http://www.asis.org/Bulletin/Dec-08/DecJan09_Schneider.html">Thick of the Fray</a>&#8221; lists some of the more popular open source software projects in libraries and describes how these sorts of projects would not have been nearly as feasible in an era without the Internet.
</p>
<p>
Marshall Breeding&#8217;s &#8220;<a href="http://www.asis.org/Bulletin/Dec-08/DecJan09_Breeding.html">The Viability of Open Source ILS</a>&#8221; provides a balanced comparison between open source software integrated library systems and closed source software integrated library systems. It is a survey of the current landscape.
</p>
<p>
Bob Molyneux&#8217;s &#8220;<a href="http://www.asis.org/Bulletin/Dec-08/DecJan09_Molyneux.html">Evergreen in Context</a>&#8221; is a case study of one particular integrated library system, and it is a good example of the open source adage &#8220;scratching an itch.&#8221;
</p>
<p>
In &#8220;<a href="http://www.asis.org/Bulletin/Dec-08/DecJan09_Witten.html">The Development and Usage of the Greenstone Digital Library Software</a>,&#8221; Ian Witten provides an additional case study but this time of a digital library application. It is a good example of how many different types of applications are necessary to provide library service in a networked environment.
</p>
<p>
Finally, Thomas Krichel expands the idea of open source software to include open data and open libraries. In &#8220;<a href="http://www.asis.org/Bulletin/Dec-08/DecJan09_Krichel.html">From Open Source to Open Libraries</a>,&#8221; you will learn that many of the principles of librarianship are embodied in the principles of open source software. In a number of ways, librarianship and open source software go hand-in-hand.
</p>
<h4>What Is Open Source Software About?</h4>
<p>
Open source software is about quite a number of things. It is about taking more complete control over one&#8217;s computer infrastructure. In a profession that is a lot about information, this sort of control is increasingly necessary. Put another way, open source software is about &#8220;free.&#8221; Not free as in gratis, but free as in liberty. Open source software is about community – the type of community that is only possible in a globally networked computer environment. There is no way any single vendor of software will be able to gather together and support all the programmers that a well-managed open source software project can support. Open source software is about opportunity and flexibility. In our ever-dynamic environment, these characteristics are increasingly important.
</p>
<p>
Open source software is not a panacea for libraries, and while it does not require an army of programmers to support it, it does require additional skills. Just as all libraries – to some degree or another – require collection managers, catalogers and reference librarians, future-thinking libraries require people who are knowledgeable about computers. This background includes knowledge of relational databases, indexers, data formats such as XML and scripting languages to glue them together and put them on the web. These tools are not library-specific, and all are available as open source.
</p>
<p>
Through reading the articles in this issue and discussing them with your colleagues, you should become more informed regarding the topic of open source software. Thank you for your attention and enjoy.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Fun with the Internet Archive</title>
		<link>./../2008/12/fun-with-the-internet-archive/index.html</link>
				<pubDate>Wed, 10 Dec 2008 13:02:51 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[Internet Archive]]></category>

		<guid isPermaLink="false">./../index.html?p=90</guid>
				<description><![CDATA[I&#8217;ve been having some fun with Internet Archive content. The process More specifically, I have created a tiny system for copying scanned materials locally, enhancing it with a word cloud, indexing it, and providing access to whole thing. There is how it works: Identify materials of interest from the Archive and copy their URLs to [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I&#8217;ve been having some fun with Internet Archive content.
</p>
<h3>The process</h3>
<p>
<img src="http://dewey.library.nd.edu/hacks/ia/archive/ia310805.us.archive.org/0/items/nd_eveninghoursamongthedead00notre_g57/nd_eveninghoursamongthedead00notre_g57.gif" alt="cover art" hspace="5" vspace="5" align="right">More specifically, I have created a tiny system for copying scanned materials locally, enhancing it with a word cloud, indexing it, and providing access to whole thing. There is how it works:
</p>
<ol>
<li>Identify materials of interest from the Archive and copy their URLs to a text file.</li>
<li>Feed the text file to a wget (wget.sh) which copies the plain text, PDF, XML metadata, and GIF cover art locally.</li>
<li>Create a rudumentary word cloud (cloud.pl) against each full text version of a document in an effort to suppliment the MARC metadata.</li>
<li>Index each item using the MARC metadata and full text (index.pl). Each index entry also includes the links to the word cloud, GIF image, PDF file, and MARC data.</li>
<li>Provide a simple one-box, one-button interface to the index (search.pl &amp; search.cgi). Search results appear much like the Internet Archive&#8217;s but also include the word cloud.</li>
<li>Go to Step #1; rinse, shampoo, and repeat.</li>
</ol>
<h3>The demonstration</h3>
<p>
<a href="http://dewey.library.nd.edu/hacks/ia/etc/ia-2008-12-07.tar.gz">Attached are all the scripts</a> I&#8217;ve written for the as-of-yet-unamed process, and you can try the demonstration at <a href="http://dewey.library.nd.edu/hacks/ia/search.cgi">http://dewey.library.nd.edu/hacks/ia/search.cgi</a>, but remember, there are only about two dozen items presently in the index.
</p>
<h3>The possibilities</h3>
<p>
There are many ways the system can be improved, and they can be divided into two types: 1) servcies against the index, and 2) services against the items. Services against the index include things like paging search results, making the interface &#8220;smarter&#8221;, adding things like faceted browse, implementing an advaced search, etc.
</p>
<p>
Services against the items interest me more. Given the full text it might be possible to do things like: compare &#038; contrast documents, cite documents, convert documents into many formats, trace idea forward &amp; backward, do morphology against words, add or subtract from &#8220;my&#8221; collection, search &#8220;my&#8221; collection, share, annotate, rank &amp; review, summarize, create relationships between documents, etc. These sort of features I believe to be a future direction for the library profession. It is more than just get the document; it is also about doing things with them once they are acquired. The creation of the word clouds is a step in that direction. It assists in the compare &amp; contrast of documents.
</p>
<p>
The Internet Archive makes many of these things possible because they freely distribute their content &#8212; including the full text.</p>
<p><code>InternetArchive++</code></p>
]]></content:encoded>
										</item>
		<item>
		<title>Snow blowing and librarianship</title>
		<link>./../2008/12/snow-blowing-and-librarianship/index.html</link>
				<comments>./../2008/12/snow-blowing-and-librarianship/index.html#comments</comments>
				<pubDate>Sun, 07 Dec 2008 18:37:46 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[community service]]></category>

		<guid isPermaLink="false">./../index.html?p=88</guid>
				<description><![CDATA[I don&#8217;t exactly know why, but I enjoy snow blowing. snow blower I think it began when I was college. My freshman year I stayed on during the January earning money from Building &#38; Grounds. For much of the time they simply said, &#8220;Go shovel some snow.&#8221; It was quiet, peaceful, and solitary. It was [&#8230;]]]></description>
								<content:encoded><![CDATA[<div>
<p>I don&#8217;t exactly know why, but I enjoy snow blowing.</p>
<table align="right">
<tr valign="top">
<td align="center">
        <img src="./../wp-content/uploads/2008/12/snowblower.gif" alt="snow blower" /><br />
        <br />
        <span class="caption"><br />
          <a href="./../wp-content/uploads/2008/12/snowblower.jpg">snow blower</a><br />
        </span>
      </td>
</tr>
</table>
<p>I think it began when I was college. My freshman year I stayed on during the January earning money from Building &amp; Grounds. For much of the time they simply said, &#8220;Go shovel some snow.&#8221; It was quiet, peaceful, and solitary. It was physical labor. It was a good time to think, and the setting was inspirational.</p>
<p>A couple of years later, in order to fulfill a graduation requirement, I needed to design and complete a &#8220;social practicum&#8221;. I decided to shovel snow for my neighbors. Upon asking them for permission, I got a lot of strange looks. &#8220;Why would you want to shovel my snow?&#8221;, they&#8217;d ask. I&#8217;d say, &#8220;Because I am more able to do it than you. I&#8217;m just being helpful and providing a social service.&#8221; Surprisingly, many people did not take me up on my offer, but a few did.</p>
<p>I now live and work in northern Indian only forty-five minutes from Lake Michigan where &#8220;lake effect&#8221; snow is common. I own a big, bad snowblower. It gives me a sense of power, and even though it disturbs the quiet, I enjoy the process of cleaning my driveway and sidewalk. I enjoy trying to figure out the most effectient way to get the job done. I enjoy it so much I even snow blow around the block.</p>
<h3>Snow blowing and librarianship</h3>
<p>What does this have to do with librarianship? In reality, not a whole lot. On the other hand, one of the aspects of librarianship, especially librarianship in public libraries, is community service &#8212; providing means for improving society. My clearing of snow for my neighbors is done in a similar vein, and it works for me. I can do something for my fellow man and have fun at the same time. Weird?</p>
<p>P.S. Mowing the grass gives me the same sort of feelings.</p>
</div>
]]></content:encoded>
							<wfw:commentRss>./../2008/12/snow-blowing-and-librarianship/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Tarzan of the Apes</title>
		<link>./../2008/12/tarzan-of-the-apes/index.html</link>
				<pubDate>Mon, 01 Dec 2008 13:34:02 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Text Mining and Natural Langauge Processing]]></category>
		<category><![CDATA[word cloud]]></category>

		<guid isPermaLink="false">./../index.html?p=86</guid>
				<description><![CDATA[This is a simple word cloud of Edgar Rice Burroughs&#8217; Tarzan of the Apes: [openbook]978-1593082277[/openbook] tarzan &#160;little &#160;clayton &#160;great &#160;jungle &#160;before &#160;]]></description>
								<content:encoded><![CDATA[<p>This is a simple word cloud of Edgar Rice Burroughs&#8217; <a href="http://infomotions.com/etexts/gutenberg/dirs/etext93/tarzn10.htm">Tarzan of the Apes</a>:</p>
<p>[openbook]978-1593082277[/openbook]</p>
<p style="margin: 2em; text-align: center">
<span style="font-size: 174%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TARZAN">tarzan</a></span> &nbsp;<span style="font-size: 173%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=LITTLE">little</a></span> &nbsp;<span style="font-size: 172%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=CLAYTON">clayton</a></span> &nbsp;<span style="font-size: 171%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=GREAT">great</a></span> &nbsp;<span style="font-size: 170%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=JUNGLE">jungle</a></span> &nbsp;<span style="font-size: 169%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=BEFORE">before</a></span> &nbsp;<span style="font-size: 168%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=D" arnot'="">d&#8217;arnot</a></span> &nbsp;<span style="font-size: 167%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=JANE">jane</a></span> &nbsp;<span style="font-size: 166%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=BACK">back</a></span> &nbsp;<span style="font-size: 165%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=ABOUT">about</a></span> &nbsp;<span style="font-size: 164%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=CABIN">cabin</a></span> &nbsp;<span style="font-size: 163%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MR">mr</a></span> &nbsp;<span style="font-size: 162%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TOWARD">toward</a></span> &nbsp;<span style="font-size: 161%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=PORTER">porter</a></span> &nbsp;<span style="font-size: 160%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=PROFESSOR">professor</a></span> &nbsp;<span style="font-size: 159%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=SAW">saw</a></span> &nbsp;<span style="font-size: 158%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=AGAIN">again</a></span> &nbsp;<span style="font-size: 157%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TIME">time</a></span> &nbsp;<span style="font-size: 156%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=PHILANDER">philander</a></span> &nbsp;<span style="font-size: 155%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=EYES">eyes</a></span> &nbsp;<span style="font-size: 154%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=STRANGE">strange</a></span> &nbsp;<span style="font-size: 153%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=KNOW">know</a></span> &nbsp;<span style="font-size: 152%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=FIRST">first</a></span> &nbsp;<span style="font-size: 151%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=HERE">here</a></span> &nbsp;<span style="font-size: 150%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=THOUGH">though</a></span> &nbsp;<span style="font-size: 149%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=NEVER">never</a></span> &nbsp;<span style="font-size: 148%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=OLD">old</a></span> &nbsp;<span style="font-size: 147%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TURNED">turned</a></span> &nbsp;<span style="font-size: 146%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MANY">many</a></span> &nbsp;<span style="font-size: 145%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=AFTER">after</a></span> &nbsp;<span style="font-size: 144%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=BLACK">black</a></span> &nbsp;<span style="font-size: 143%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=FOREST">forest</a></span> &nbsp;<span style="font-size: 142%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=LEFT">left</a></span> &nbsp;<span style="font-size: 141%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=HAND">hand</a></span> &nbsp;<span style="font-size: 140%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=OWN">own</a></span> &nbsp;<span style="font-size: 139%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=THOUGHT">thought</a></span> &nbsp;<span style="font-size: 138%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=DAY">day</a></span> &nbsp;<span style="font-size: 137%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=KNEW">knew</a></span> &nbsp;<span style="font-size: 136%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=BENEATH">beneath</a></span> &nbsp;<span style="font-size: 135%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=BODY">body</a></span> &nbsp;<span style="font-size: 134%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=HEAD">head</a></span> &nbsp;<span style="font-size: 133%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=SEE">see</a></span> &nbsp;<span style="font-size: 132%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=YOUNG">young</a></span> &nbsp;<span style="font-size: 131%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=LIFE">life</a></span> &nbsp;<span style="font-size: 130%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=LONG">long</a></span> &nbsp;<span style="font-size: 129%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=FOUND">found</a></span> &nbsp;<span style="font-size: 128%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MOST">most</a></span> &nbsp;<span style="font-size: 127%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=GIRL">girl</a></span> &nbsp;<span style="font-size: 126%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=LAY">lay</a></span> &nbsp;<span style="font-size: 125%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=VILLAGE">village</a></span> &nbsp;<span style="font-size: 124%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=FACE">face</a></span> &nbsp;<span style="font-size: 123%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TRIBE">tribe</a></span> &nbsp;<span style="font-size: 122%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=WILD">wild</a></span> &nbsp;<span style="font-size: 121%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=AWAY">away</a></span> &nbsp;<span style="font-size: 120%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TREE">tree</a></span> &nbsp;<span style="font-size: 119%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=UNTIL">until</a></span> &nbsp;<span style="font-size: 118%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=APE">ape</a></span> &nbsp;<span style="font-size: 117%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=DOWN">down</a></span> &nbsp;<span style="font-size: 116%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MUST">must</a></span> &nbsp;<span style="font-size: 115%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=SEEN">seen</a></span> &nbsp;<span style="font-size: 114%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=FAR">far</a></span> &nbsp;<span style="font-size: 113%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=WITHIN">within</a></span> &nbsp;<span style="font-size: 112%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=DOOR">door</a></span> &nbsp;<span style="font-size: 111%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=WHITE">white</a></span> &nbsp;<span style="font-size: 110%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=FEW">few</a></span> &nbsp;<span style="font-size: 109%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MUCH">much</a></span> &nbsp;<span style="font-size: 108%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=ESMERALDA">esmeralda</a></span> &nbsp;<span style="font-size: 107%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=SAVAGE">savage</a></span> &nbsp;<span style="font-size: 106%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=ABOVE">above</a></span> &nbsp;<span style="font-size: 105%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=ONCE">once</a></span> &nbsp;<span style="font-size: 104%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=DEAD">dead</a></span> &nbsp;<span style="font-size: 103%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MIGHTY">mighty</a></span> &nbsp;<span style="font-size: 102%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=GROUND">ground</a></span> &nbsp;<span style="font-size: 101%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=STOOD">stood</a></span> &nbsp;<span style="font-size: 100%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=SIDE">side</a></span> &nbsp;<span style="font-size: 99%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=LAST">last</a></span> &nbsp;<span style="font-size: 98%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TREES">trees</a></span> &nbsp;<span style="font-size: 97%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=APES">apes</a></span> &nbsp;<span style="font-size: 96%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=CRIED">cried</a></span> &nbsp;<span style="font-size: 95%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=THING">thing</a></span> &nbsp;<span style="font-size: 94%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=AMONG">among</a></span> &nbsp;<span style="font-size: 93%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=MOMENT">moment</a></span> &nbsp;<span style="font-size: 92%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TOOK">took</a></span> &nbsp;<span style="font-size: 91%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=HANDS">hands</a></span> &nbsp;<span style="font-size: 90%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=NEW">new</a></span> &nbsp;<span style="font-size: 89%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=OFF">off</a></span> &nbsp;<span style="font-size: 88%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=WITHOUT">without</a></span> &nbsp;<span style="font-size: 87%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=ALMOST">almost</a></span> &nbsp;<span style="font-size: 86%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=BEAST">beast</a></span> &nbsp;<span style="font-size: 85%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=HUGE">huge</a></span> &nbsp;<span style="font-size: 84%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=ALONE">alone</a></span> &nbsp;<span style="font-size: 83%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=CLOSE">close</a></span> &nbsp;<span style="font-size: 82%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=JUST">just</a></span> &nbsp;<span style="font-size: 81%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=TUT">tut</a></span> &nbsp;<span style="font-size: 80%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=CANLER">canler</a></span> &nbsp;<span style="font-size: 79%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=NOR">nor</a></span> &nbsp;<span style="font-size: 78%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=WAY">way</a></span> &nbsp;<span style="font-size: 77%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=KNIFE">knife</a></span> &nbsp;<span style="font-size: 76%"><a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext78&amp;segsize=1000&amp;usePre=1&amp;word1=SMALL">small</a></span> &nbsp;</p>
<p>I found this story to have quite a number of similarities with James Fenimore Cooper&#8217;s <a href="./../2008/08/last-of-the-mohicans-and-services-against-texts/index.html">The Last of the Mohicans</a>. The central character in both was super human. Both includes some sort of wilderness. In the Last of the Mohicans it was the forest. In Tarzan it was the jungle. In both cases the wilderness was inhabited by savages. Indians, apes, or pirates. Both included damsels in distress who were treated in a rather Victorian manner and were sought after by an unwanted lover. Both included characters with little common sense. David and Professor Porter.</p>
<p>I found Tarzan much more readable and story-like compared to the Last of the Mohicans. It can really be divided into two parts. The first half is a character development. Who is Tarzan, and how did he becomes who he is. The second half is a love story, more or less, where Tarzan pursues his love. I found it rather distasteful that Tarzan was a man of &#8220;<a href="http://infomotions.com/alex/concordance/?cmd=displayText&amp;bookcode=etext78&amp;typesearch=oneword&amp;location=5000&amp;gowhere=none&amp;occurnum=0&amp;word1=BREEDING&amp;usePre=1&amp;indexloc=68446&amp;numoccur=1&amp;phrase=1+g+of+many+generations+of+fine+%3C+breeding+%3E+%2C+an+hereditary+%7E+instinct+of+g&amp;segsize=1000">breeding</a>&#8220;. I don&#8217;t think people are to bred like animals.</p>
]]></content:encoded>
										</item>
		<item>
		<title>WorldCat Hackathon</title>
		<link>./../2008/11/worldcat-hackathon/index.html</link>
				<comments>./../2008/11/worldcat-hackathon/index.html#comments</comments>
				<pubDate>Sun, 09 Nov 2008 14:29:36 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[hackny08]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">./../index.html?p=82</guid>
				<description><![CDATA[I attended the first-ever WorldCat Hackathon on Friday and Saturday (November 7 &#38; 8), and us attendees explored ways to take advantage of various public application programmer interfaces (APIs) supported by OCLC. Web Services The WorldCat Hackathon was an opportunity for people to get together, learn about a number of OCLC-supported APIs, and take time [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I attended the first-ever WorldCat Hackathon on Friday and Saturday (November 7 &amp; 8), and us attendees explored ways to take advantage of various public application programmer interfaces (APIs) supported by OCLC.
</p>
<h2>Web Services</h2>
<p>
<img src="http://worldcat.org/devnet-real/images/e/e9/Poster-sm.jpg" alt="logo" width="150" height="219" hspace="5" vspace="5" align="right">The <a href="http://worldcat.org/devnet/wiki/2008NYCHackathon">WorldCat Hackathon</a> was an opportunity for people to get together, learn about a number of OCLC-supported APIs, and take time to explore how they can be used. These APIs are a direct outgrowth of <a href="http://infomotions.com/musings/oclc-2002/">something that started at least 6 years ago</a> with an investigation of how OCLC&#8217;s data can be exposed through Web Service computing techniques. To date OCLC&#8217;s services fall into the following categories, and they are described in greater detail as a part of the <a href="http://worldcat.org/devnet/wiki/Services">OCLC Grid Services</a> Web page:
</p>
<ul>
<li><strong>WorldCat Search API</strong> &#8211; Search and display content from WorldCat &#8212; a collection of mostly books owned by libraries</li>
<li><strong>Registry Services</strong> &#8211; Search and display names, addresses, and information about libraries</li>
<li><strong>Identifier Services</strong> &#8211; Given unique keys, find similar items found in WorldCat</li>
<li><strong>WorldCat Identities</strong> &#8211; Search and display information about authors from a name authority list</li>
<li><strong>Terminology Services</strong> &#8211; Search and display subject authority information</li>
<li><strong>Metadata Crosswalk Service</strong> &#8211; Convert one metadata format (MARC, MARCXML, XML/DC, MODS, etc.) into another. (For details of how this works, see &#8220;<a href="http://journal.code4lib.org/articles/54">Toward element-level interoperability in bibliographic metadata</a>&#8221; in Issue #2 of the <i>Code4Lib Journal</i>).</li>
</ul>
<h2>The Hacks</h2>
<p>
The event was attended by approximately fifty (50) people. The prize going to the person coming the furthest went to someone from France. A number of OCLC employees attended. Most people were from academic libraries, and most people were from the surrounding states. About three-quarters of the attendees were &#8220;hackers&#8221;, and the balance were there to learn.
</p>
<p>
Taking place in the Science, Industry and Business Library (New York Public Library), the event began with an overview of each of the Web Services and the briefest outline of how they might be used. We then quickly broke into smaller groups to &#8220;hack&#8221; away. The groups fell into a number of categories: Drupal, VUFind, Find More Like This One/Miscellaneous, and language-specific hacks. We reconvened after lunch on the second day sharing what we had done as well as what we had learned. Some of the hacks included:
</p>
<ul>
<li><strong><a href="http://dewey.library.nd.edu/hacks/term-finder/">Term Finder</a></strong> &#8211; Enter a term. Query the Terminology Services. Get back a list of broader and narrower terms. Select items from results. Repeat. Using such a service a person can navigate a controlled vocabulary space to select the most appropriate subject heading.</li>
<li><strong><a href="http://dewey.library.nd.edu/hacks/name-finder/">Name Finder</a></strong> &#8211; Enter a first name and a last name. Get back a list of WorldCat Identities matching the queries. Display the subject terms associated with the works of this author. Select subject terms results are displayed in Term Finder.</li>
<li><strong><a href="http://dewey.library.nd.edu/hacks/send/">Send It To Me</a></strong> &#8211; Enter an ISBN number. Determine whether or not the item is held locally. If so, then allow the user to borrow the item. If not, then allow the user to find other items like that item, purchase it, and/or facilitate an interlibrary load request. All three of these services were written by myself. The first two were written at during the Hackathon. The last was written more than a year ago. All three could be used on their own or incorporated into a search results page.</li>
<li><strong><a href="http://misinformed.info/vufind/">Find More Like This One in VUFind</a></strong> &#8211; Written by Scott Mattheson (Yale University Library) this prototype was in the form of a number of screen shots. It allows the user to first do a search in VUFind. If desired items are checked out, then it will search for other local copies.</li>
<li><strong>Google Map Libraries</strong> &#8211; Greg McClellan (Brandeis University) combined the WorldCat Search API, Registries Services, the Google Maps to display the locations of nearby libraries who reportably own a particular item.</li>
<li><strong>Recommend Tags</strong> &#8211; Chad Fennell (University of Minnesota Libraries) overrode a Drupal tagging function to work with MeSH controlled vocabulary terms. In other words, as items in Drupal are being tagged, this hack leads the person doing data entry to use MeSH headings.</li>
<li><strong>Enhancing Metadata</strong> &#8211; Piotr Adamzyk (Metropolitan Museum of Art) has access to both bibliographic and image materials. Through the use of Yahoo Pipes technology he was able to read metadata from an OAI repository, map it to metadata found in WorldCat, and ultimately supplement the metadata describing the content of his collections.</li>
<li><strong>Pseudo-Metasearch in VUFind</strong> &#8211; Andrew Nagy (Villanova University) demonstrated how a search could be first done in VUFind, and have subsequent searches done against WorldCat by simply clicking on a tabbed interface. </li>
<li><strong>Find More Like This One</strong> &#8211; Mark Matienzo (NYPL Labs) created an interface garnering an OCLC number as input. Given this it returned subject headings an effort to return other items. It was at this point Ralph LeVan (OCLC) said, &#8220;Why does everybody use subject headings to find similar items? Why not map your query to Dewey numbers and find items expected to be placed right next to the given item on the shelf?&#8221; Good food for thought.</li>
<li><strong>xISBN Bookmarklette</strong> &#8211; Liu Xiaoming (OCLC) demonstrated a Web browser tool. Enter your institution&#8217;s name. Get back a browser bookmarklette. Drag bookmarklette to your toolbar. Search things like Amazon. Select ISBN number from the Web page. Click bookmarklette. Determine whether or not your local library owns the item.</li>
</ul>
<h2>Summary</h2>
<p>
Obviously the hacks created in this short period of time by a small number of people illustrate just a tiny bit of what could be done with the APIs. More importantly and IMHO, what these APIs really demonstrate is the ways librarians can have more control over their computing environment if they were to learn to exploit these tools to their greatest extent. Web Service computing techniques are particularly powerful because they are not wedded to any specific user interface. They simply provide the means to query remote services and get back sets of data. It is then up to librarians and developers &#8212; working together &#8212; to figure out what to do the the data. As I&#8217;ve said somewhere previously, &#8220;Just give me the data.&#8221;
</p>
<p>
I believe the Hackathon was a success, and I encourage OCLC to sponsor more of them.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/11/worldcat-hackathon/feed/index.html</wfw:commentRss>
		<slash:comments>5</slash:comments>
							</item>
		<item>
		<title>VUFind at PALINET</title>
		<link>./../2008/11/vufind-at-palinet/index.html</link>
				<comments>./../2008/11/vufind-at-palinet/index.html#comments</comments>
				<pubDate>Fri, 07 Nov 2008 03:37:47 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[open source software]]></category>
		<category><![CDATA[VUFind]]></category>

		<guid isPermaLink="false">./../index.html?p=79</guid>
				<description><![CDATA[I attended a VUFind meeting at PALINET in Philadelphia today, November 6, and this posting summarizes my experiences there. As you may or may not know, VUFind is a &#8220;discovery layer&#8221; intended to be applied against a traditional library catalog. Originally written by Andrew Nagy of Villanova University, it has been adopted by a handful [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>
I attended a VUFind meeting at PALINET in Philadelphia today, November 6, and this posting summarizes my experiences there.
</p>
<p>
<img src="http://vufind.org/demo/images/vufind.jpg" alt="" hspace="5" vspace="5" align="right">As you may or may not know, <a href="http://vufind.org/">VUFind</a> is a &#8220;discovery layer&#8221; intended to be applied against a traditional library catalog. Originally written by Andrew Nagy of Villanova University, it has been adopted by a handful of libraries across the globe and is being investigated by quite a few more. Technically speaking, VUFind is an open source project based on Solr/Lucene. Extract MARC records from a library catalog. Feed them to Solr/Lucene. Provide access to the index as well as services against the search results.
</p>
<p>
The meeting was attended by about thirty people. The three people from Tasmania won the prize for coming the furthest, but there were also people from Stanford, Texas A&amp;M, and a number of more regional libraries. The meeting had a barcamp-like agenda. Introduce ourselves. Brainstorm topics for discussion. Discuss. Summarize. Go to bar afterwards. Alas, I didn&#8217;t get to go to the bar, but I was there for the balance. The following bullet points summarize each discussion topic:
</p>
<ul>
<li><strong>Jangle</strong> &#8211; A desire was expressed to implement some sort of API (application programmer interface) to VUFind in order to ensure a greater degree of interoperability. The DLF-DI was mentioned quite a number of times, but <a href="http://journal.code4lib.org/articles/109">Jangle</a> was the focus of the discussion. Unfortunately, not a whole lot of people around the room knew about Jangle, the ATOM Publishing Protocol, nor REST-ful computing techniques in general. Because creating an API was desired there was some knowledge of the XC (<a href="http://www.extensiblecatalog.org/">eXtensible Catalog</a>) project around the room, and there was curiosity/frustration as to why more collaboration could not be done with XC. Apparently the XC process and their software is not as open and transparent has I had thought. (Note to self: ping the folks at XC and bring this issue to their attention.) In the end, implementing something like Jangle was endorsed.</li>
<li><strong>Non-MARC content</strong> &#8211; It was acknowledged that non-MARC content ought to be included in any sort of &#8220;discovery layer&#8221;. A number of people had experimented with including content from their local institutional repositories, digital libraries, and/or collection of theses &amp; dissertations. The process is straight-forward. Get set of metadata. Map it to VUFind/Solr fields. Feed it to the indexer. Done. Other types of data people expressed an interest in incorporating included: EAD, TEI, images, various types of data sets, and mathematical models. From here the discussion quickly evolved into the next topic&#8230;</li>
<li><strong>Solrmarc</strong> &#8211; Through the use of a Java class called MARC4J, a Solr plug-in has been created by the folks at the University of Virginia. This plug-in &#8212; <a href="http://code.google.com/p/solrmarc/">Solrmarc</a> &#8212; makes it easier to read MARC data and feed it to Solr. There was a lot of discussion whether or not this plug-in should be extended to include other data types, such as the ones outlined above, or to distribute Solrmarc as-is, more akin to a GNU &#8220;do one thing and one thing well&#8221; type of tool. From my perspective, no specific direction was articulated.</li>
<li><strong>Authority control</strong> &#8211; We all knew the advantage of incorporating authority lists (names, authors, titles) into VUFind. The general ideas was to acquire authority lists. Incorporate this data into the underlying index. Implement &#8220;find more like this one&#8221; types of services against search results based on the related records linked through authorities. There was then much discussion on how to initially acquire the necessary authority data. We were a bit stymied. After lunch a slightly different tack was taken. Acquire some authority data, say about 1,000 records. Incorporate it into an implementation of VUFind. Demonstrate the functionality to wider audiences. Tackle the problem of getting more complete and updated authority data later.</li>
<li><strong>De-duplication/FRBR</strong> &#8211; This was probably the shortest discussion point, and it really surrounded FRBR. We ended up asking ourselves, &#8220;To what degree do we want to incorporate Web Services such as <a href="www.worldcat.org/affiliate/webservices/xisbn/app.jsp">xISBN</a> into VUFind to implement FRBR-like functionality, or to what degree should &#8216;real&#8217; FRBRization take place?&#8221; Compared to other things, de-duplication/FRBR seemed to be taking a lower priority.</li>
<li><strong>Serials holdings</strong> &#8211; This discussion was around indexing and/or displaying serials holdings information. There was much talk about the ways various integrated library systems allow libraries to export holdings information, whether or not it was merged with bibliographic information, and how consistent it was from system to system. In general it was agreed that this holdings information ought to be indexed to enable searches such as &#8220;Time Magazine 2004&#8221;, but displaying the results was seen as problematic. &#8220;Why not use your link resolver to address this problem?&#8221; was asked. This whole issue too was given a lower priority since more and more serial holdings are increasingly electronic in nature.</li>
<li><strong>Federated search</strong> &#8211; It was agreed that federated search s?cks, but it is a necessary evil. Techniques for incorporating it into VUFind ranged from: 1) side-stepping the problem by licensing bibliographic data from vendors, 2) side-stepping the problem by acquiring binary Lucene indexes of bibliographic data from vendors, 3) creating some sort of &#8220;smart&#8221; interface that looks at VUFind search results to automatically select and search federated search targets whose results are hidden behind a tab until selected by the user, or 4) allow the user to assume some sort of predefined persona (Thomas Jefferson, Isaac Newton, Kurt Godel, etc.) to point toward the selection of search targets. <a href="http://libraryfind.org/">LibraryFind</a> was mentioned as a store for federated search targets. <a href="http://indexdata.com/pazpar2/">Pazpar2</a> was mentioned as tool to do the actual searching. </li>
<li><strong>Development process</strong> &#8211; The final discussion topic regarded the on-going development process. To what degree should the whole thing be more formalized? Should VUFind be hosted by a third party? Code4Lib? PALINET? A newly created corporation? Is it a good idea to partner with similar initiative such as OLE (<a href="http://oleproject.org/">Open Library Environment</a>), XC, <a href="https://project.library.upenn.edu/confluence/display/ilsapi/Home">ILF-DI</a>, or <a href="http://blacklight.betech.virginia.edu/">BlackLight</a>? On one hand, such formalization would give the process more credibility and open more possibilities for financial support, but on the other hand the process would also become more administratively heavy. Personally, I liked the idea of allowing PALINET to host the system. It seems to be an excellent opportunity for such an library-support organization.</li>
</ul>
<p>
The day was wrapped up by garnering volunteers to see after each of the discussion points in the hopes of developing them further.
</p>
<p>
I appreciated the opportunity to attend the meeting, especially since it is quite likely I will be incorporating VUFind into a portal project called the <a href="http://www.catholicresearch.net/">Catholic Research Resources Alliance</a>. I find it amusing the way many &#8220;next generation&#8221; library catalog systems &#8212; &#8220;discovery layers&#8221; &#8212; are gravitating toward indexing techniques and specifically Lucene. Currently, these systems include VUFind, XC, BlackLight, and <a href="http://www.exlibrisgroup.com/category/PrimoOverview">Primo</a>. All of them provide a means to feed an indexer data, and then user access to the index.
</p>
<p>
Of all the discussions, I enjoyed the one on federated search the most because it toyed with the idea of making the interfaces to our indexes smarter. While this smacks of artificial intelligence, I sincerely think this is an opportunity to incorporate library expertise into search applications.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/11/vufind-at-palinet/feed/index.html</wfw:commentRss>
		<slash:comments>6</slash:comments>
							</item>
		<item>
		<title>Dinner with Google</title>
		<link>./../2008/09/dinner-with-google/index.html</link>
				<comments>./../2008/09/dinner-with-google/index.html#comments</comments>
				<pubDate>Mon, 22 Sep 2008 21:45:32 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[datasets]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">./../index.html?p=76</guid>
				<description><![CDATA[On Thursday, September 4 a person from Google named Jon Trowbridge gave a presentation at Notre Dame called &#8220;Making scientific datasets universally accessible and useful&#8221;. This posting reports on the presentation and dinner afterwards. The presentation Jon Trowbridge is a software engineer working for Google. He seems to be an open source software and an [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>On Thursday, September 4 a person from Google named Jon Trowbridge gave a presentation at Notre Dame called &#8220;Making scientific datasets universally accessible and useful&#8221;. This posting reports on the presentation and dinner afterwards.</p>
<h3>The presentation</h3>
<p>Jon Trowbridge is a software engineer working for Google. He seems to be an open source software and an e-science type of guy who understands academia. He echoed the mission of Google &#8212; &#8220;To organize the world&#8217;s information and make it universally accessible and useful&#8221;, and he described how this mission fits into his day-to-day work. (I sort of wish libraries would have such a easily stated mission. It might clear things up and give us better focus.)</p>
<p>Trowbridge works for group in Google exploring ways to making large datasets available. He proposes to organize and distribute datasets in the same manner open source software is organized.</p>
<p>He enumerated things people do with data of this type: compute against it, visualize it, search it, do meta-analysis, and create mash-ups. But all of this begs Question 0. &#8220;You have to possess the data before you can do stuff with it.&#8221; (This is also true in libraries, and this is why I advocate digitization as oppose to licensing content.)</p>
<p>He speculated why scientists have trouble distributing their data, especially if it more than a terabyte in size. URLs break. Datasets are not very indexable. Datasets of the fodder for new research. He advocated the creation of centralized data &#8220;clouds&#8221;, and these &#8220;clouds&#8221; ought to have the following qualities:</p>
<ul>
<li>archival</li>
<li>librarian-friendly (have some metadata)</li>
<li>citation-friendly</li>
<li>publicly accessible</li>
<li>legally unencumbered</li>
<li>discipline neutral</li>
<li>massively scalable</li>
<li>downloadable via HTTP</li>
</ul>
<p>As he examined people&#8217;s datasets he noticed that many of them are simple hierarchal structures saved to file systems, but they are so huge that transporting them over the network isn&#8217;t feasible. After displaying a few charts and graphs, he posited that physically shipping hard disks via FedEx provides the fastest throughput. Given that hard drives can cost as little as 16¢/GB, FedEx can deliver data at a rate of 20 TB/day. Faster and cheaper than the just about anybody&#8217;s network connection.</p>
<h3>The challenge</h3>
<p>Given this scenario, Trowbridge gave away 5 TB of hard disk disk space. He challenged us to fill it up with data and share it with him. He would load the data into his &#8220;cloud&#8221; and allow people to use it. This is just the beginning of an idea, not a formal service. Host data locally. Provide tools to access and use it. Support e-science.</p>
<p>Personally, I thought it was a pretty good idea. Yes, Google is a company. Yes, I wonder to what degree I can trust Google. Yes, if I make my data accessible then I don&#8217;t have a monopoly on it, and others will may beat me to the punch. On the other hand, Google has so much money that they can afford to &#8220;Do no evil.&#8221; I sincerely doubt anybody was trying to pull the wool over our eyes.</p>
<h3>Dinner with Jon</h3>
<p>After the presentation I and a couple of my colleagues (Mark Dehmlow and Dan Marmion) had dinner with Jon. We discussed what it is like to work for Google. The hiring process. The similarities and differences between Google and libraries. The weather. Travel. Etc.</p>
<p>All in all, I thought it was a great experience. &#8220;Thank you for the opportunity!&#8221; It is always nice to chat with sets of my peers about my vocation (as well as my avocation).</p>
<p>Unfortunately, we never really got around to talking about the use of data, just its acquisition. The use of data is a niche I believe libraries can fill and Google can&#8217;t. Libraries are expected to know their audience. Given this, information acquired through a library settings can be put into the user&#8217;s context. This context-setting is a service. Beyond that, other services can be provided against the data. Translate. Analyze. Manipulate. Create word cloud. Trace idea forward and backward. Map. Cite. Save for later and then search. Etc. These are spaces where libraries can play a role, and the lynchpin is the acquisition of the data/information. Other institutions have all but solved the search problem. It is now time to figure out how to put the information to use so we can stop drinking from the proverbial fire hose.</p>
<p>P.S. I don&#8217;t think very many people from Notre Dame will be taking Jon up on his offer to host their data.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/09/dinner-with-google/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>MyLibrary: A Digital library framework &#038; toolbox</title>
		<link>./../2008/09/mylibrary-a-digital-library-framework-toolbox/index.html</link>
				<comments>./../2008/09/mylibrary-a-digital-library-framework-toolbox/index.html#comments</comments>
				<pubDate>Thu, 18 Sep 2008 03:26:12 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[MyLibrary]]></category>

		<guid isPermaLink="false">./../index.html?p=70</guid>
				<description><![CDATA[I recently had published an article in Information Technology and Libraries (ITAL) entitled &#8220;MyLibrary: A Digital library framework &#38; toolkit&#8221; (volume 27, number 3, pages 12-24, September 2008). From the abstract: This article describes a digital library framework and toolkit called MyLibrary. At its heart, MyLibrary is designed to create relationships between information resources and [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I recently had published an article in Information Technology and Libraries (ITAL) entitled &#8220;MyLibrary: A Digital library framework &amp; toolkit&#8221; (volume 27, number 3, pages 12-24, September 2008). From the abstract:</p>
<blockquote>
<p>This article describes a digital library framework and toolkit called MyLibrary. At its heart, MyLibrary is designed to create relationships between information resources and people. To this end, MyLibrary is made up of essentially four parts: 1) information resources, 2) patrons, 3) librarians, and 4) a set of locally-defined, institution-specific facet/term combinations interconnecting the first three. On another level, MyLibrary is a set of object-oriented Perl modules intended to read and write to a specifically shaped relational database. Used in conjunction with other computer applications and tools, MyLibrary provides a way to create and support digital library collections and services. Librarians and developers can use MyLibrary to create any number of digital library applications: full-text indexes to journal literature, a traditional library catalog complete with circulation, a database-driven website, an institutional repository, an image database, etc. The article describes each of these points in greater detail.</p>
<p><a href="http://infomotions.com/musings/mylibrary-framework/">http://infomotions.com/musings/mylibrary-framework/</a></p>
</blockquote>
<p>The folks at ITAL are gracious enough to allow authors to distribute their work on the Web as long as the distribution happens after print publication. &#8220;Nice policy!&#8221;</p>
<p>Many people will remember <a href="http://mylibrary.library.nd.edu/">MyLibrary</a> from more than ten years ago. It is alive and well. It drives a few digital library projects at Notre Dame. It is often associated with customization/personalization, but now it is more about creating relationships between people and information resources through an institution-defined controlled vocabulary &#8212; a set of facet/term combinations. </p>
<p style='text-align: center'><img src="./../wp-content/uploads/2008/09/mylibrary-is-about-relationships.jpg" alt="MyLibrary is about relationships" title="MyLibrary" width="254" height="300" /></p>
<p>In my opinion, libraries spend too much time describing resources and creating interdependencies between them. Instead, I think libraries should be spending more time creating relationships between resources and people. You can do this in any number of ways, and sets of facet/term combinations are just one. Think up qualities used to describe people. Think up qualities used to describe information resources. Create relationships by bringing resources and people together that share qualities.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/09/mylibrary-a-digital-library-framework-toolbox/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>MBooks, revisited</title>
		<link>./../2008/09/mbooks-revisited/index.html</link>
				<comments>./../2008/09/mbooks-revisited/index.html#comments</comments>
				<pubDate>Tue, 09 Sep 2008 01:36:59 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[University of Michigan]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">./../index.html?p=63</guid>
				<description><![CDATA[This posting makes available a stylesheet to render MARCXML from a collection of records called MBooks. In a previous post &#8212; get-mbooks.pl &#8212; I described how to use OAI-PMH to harvest MARC records from the MBooks project. The program works; it does what it is suppose to do. The MBooks collection is growing so I [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting makes available a stylesheet to render MARCXML from a collection of records called MBooks.</p>
<p>In a previous post &#8212; <a href="./../2008/05/get-mbookspl/index.html">get-mbooks.pl</a> &#8212; I described how to use OAI-PMH to harvest MARC records from the MBooks project. The program works; it does what it is suppose to do.</p>
<p>The MBooks collection is growing so I harvested the content again, but this time I wanted to index it. Using an indexer/search engine called <a href="http://indexdata.com/zebra/">Zebra</a>, the process was almost trivial. (See &#8220;<a href="http://wiki.code4lib.org/index.php/Getting_Started_with_Zebra">Getting Started With Zebra</a>&#8221; for details.)</p>
<p>Since Zebra supports SRU (<a href="http://www.loc.gov/standards/sru/">Search/Retrieve via URL</a>) out of the box, searches against the index return MARCXML. This will be a common returned XML stream for a while, so I needed to write an XSLT stylesheet to render the output. Thus, mbooks.xsl was born.</p>
<p>What is really &#8220;kewl&#8221; about the stylesheet is the simple inline Javascript allowing the librarian to view the MARC tags in all their glory. For a little while you can see how this all fits together in a <a href="http://infomotions.com/mbooks/">simple interface to the index</a>.</p>
<p>Use <a href="./../wp-content/uploads/2008/09/mbooks.tar.gz">mbooks.xsl</a> as you see fit, but remember &#8220;Give back to the &#8216;Net.&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/09/mbooks-revisited/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>wordcloud.pl</title>
		<link>./../2008/08/wordcloudpl/index.html</link>
				<pubDate>Mon, 25 Aug 2008 13:50:25 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[word cloud]]></category>

		<guid isPermaLink="false">./../index.html?p=59</guid>
				<description><![CDATA[Attached should be simple Perl script called wordcloud.pl. Initialize it with a hash of words and associated integers. Output rudimentary HTML in the form of a word cloud. This hack was used to create the word cloud in a posting called &#8220;Last of the Mohicans and services against texts&#8220;.]]></description>
								<content:encoded><![CDATA[<p>Attached should be simple Perl script called <a href="./../wp-content/uploads/2008/08/wordcloud.pl">wordcloud.pl</a>. Initialize it with a hash of words and associated integers. Output rudimentary HTML in the form of a word cloud. This hack was used to create the word cloud in a posting called &#8220;<a href="./../2008/08/last-of-the-mohicans-and-services-against-texts/index.html">Last of the Mohicans and services against texts</a>&#8220;.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Last of the Mohicans and services against texts</title>
		<link>./../2008/08/last-of-the-mohicans-and-services-against-texts/index.html</link>
				<pubDate>Mon, 25 Aug 2008 13:28:27 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[concordance]]></category>
		<category><![CDATA[James Fenimore Cooper]]></category>

		<guid isPermaLink="false">./../index.html?p=52</guid>
				<description><![CDATA[Here is a word cloud representing James Fenimore Cooper&#8217;s The Last of the Mohicans; A narrative of 1757. It is a trivial example of how libraries can provide services against documents, not just the documents themselves. scout &#160;heyward &#160;though &#160;duncan &#160;uncas &#160;little &#160;without &#160;own &#160;eyes &#160;before &#160;hawkeye &#160;indian &#160;young &#160;magua &#160;much &#160;place &#160;long &#160;time &#160;moment [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Here is a word cloud representing James Fenimore Cooper&#8217;s <i><a href="http://infomotions.com/etexts/gutenberg/dirs/9/4/940/940.htm">The Last of the Mohicans; A narrative of 1757</a></i>. It is a trivial example of how libraries can provide services against documents, not just the documents themselves.</p>
<p style='margin: 2em; text-align: center'><span style='font-size: 174%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SCOUT'>scout</a></span> &nbsp;<span style='font-size: 173%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HEYWARD'>heyward</a></span> &nbsp;<span style='font-size: 172%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=THOUGH'>though</a></span> &nbsp;<span style='font-size: 171%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=DUNCAN'>duncan</a></span> &nbsp;<span style='font-size: 170%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=UNCAS'>uncas</a></span> &nbsp;<span style='font-size: 169%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=LITTLE'>little</a></span> &nbsp;<span style='font-size: 168%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WITHOUT'>without</a></span> &nbsp;<span style='font-size: 167%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=OWN'>own</a></span> &nbsp;<span style='font-size: 166%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=EYES'>eyes</a></span> &nbsp;<span style='font-size: 165%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=BEFORE'>before</a></span> &nbsp;<span style='font-size: 164%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HAWKEYE'>hawkeye</a></span> &nbsp;<span style='font-size: 163%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=INDIAN'>indian</a></span> &nbsp;<span style='font-size: 162%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=YOUNG'>young</a></span> &nbsp;<span style='font-size: 161%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MAGUA'>magua</a></span> &nbsp;<span style='font-size: 160%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MUCH'>much</a></span> &nbsp;<span style='font-size: 159%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=PLACE'>place</a></span> &nbsp;<span style='font-size: 158%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=LONG'>long</a></span> &nbsp;<span style='font-size: 157%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=TIME'>time</a></span> &nbsp;<span style='font-size: 156%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MOMENT'>moment</a></span> &nbsp;<span style='font-size: 155%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=CORA'>cora</a></span> &nbsp;<span style='font-size: 154%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HAND'>hand</a></span> &nbsp;<span style='font-size: 153%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=AGAIN'>again</a></span> &nbsp;<span style='font-size: 152%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=AFTER'>after</a></span> &nbsp;<span style='font-size: 151%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HEAD'>head</a></span> &nbsp;<span style='font-size: 150%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=RETURNED'>returned</a></span> &nbsp;<span style='font-size: 149%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=AMONG'>among</a></span> &nbsp;<span style='font-size: 148%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MOST'>most</a></span> &nbsp;<span style='font-size: 147%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=AIR'>air</a></span> &nbsp;<span style='font-size: 146%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HURON'>huron</a></span> &nbsp;<span style='font-size: 145%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=TOWARD'>toward</a></span> &nbsp;<span style='font-size: 144%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WELL'>well</a></span> &nbsp;<span style='font-size: 143%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FEW'>few</a></span> &nbsp;<span style='font-size: 142%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SEEN'>seen</a></span> &nbsp;<span style='font-size: 141%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MANY'>many</a></span> &nbsp;<span style='font-size: 140%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FOUND'>found</a></span> &nbsp;<span style='font-size: 139%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=ALICE'>alice</a></span> &nbsp;<span style='font-size: 138%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MANNER'>manner</a></span> &nbsp;<span style='font-size: 137%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=DAVID'>david</a></span> &nbsp;<span style='font-size: 136%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HURONS'>hurons</a></span> &nbsp;<span style='font-size: 135%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=VOICE'>voice</a></span> &nbsp;<span style='font-size: 134%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=CHIEF'>chief</a></span> &nbsp;<span style='font-size: 133%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SEE'>see</a></span> &nbsp;<span style='font-size: 132%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WORDS'>words</a></span> &nbsp;<span style='font-size: 131%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=ABOUT'>about</a></span> &nbsp;<span style='font-size: 130%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=KNOW'>know</a></span> &nbsp;<span style='font-size: 129%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=NEVER'>never</a></span> &nbsp;<span style='font-size: 128%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WOODS'>woods</a></span> &nbsp;<span style='font-size: 127%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=GREAT'>great</a></span> &nbsp;<span style='font-size: 126%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=RIFLE'>rifle</a></span> &nbsp;<span style='font-size: 125%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HERE'>here</a></span> &nbsp;<span style='font-size: 124%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=UNTIL'>until</a></span> &nbsp;<span style='font-size: 123%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=JUST'>just</a></span> &nbsp;<span style='font-size: 122%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=LEFT'>left</a></span> &nbsp;<span style='font-size: 121%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SOON'>soon</a></span> &nbsp;<span style='font-size: 120%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WHITE'>white</a></span> &nbsp;<span style='font-size: 119%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=HEARD'>heard</a></span> &nbsp;<span style='font-size: 118%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FATHER'>father</a></span> &nbsp;<span style='font-size: 117%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=LOOK'>look</a></span> &nbsp;<span style='font-size: 116%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=EYE'>eye</a></span> &nbsp;<span style='font-size: 115%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SAVAGE'>savage</a></span> &nbsp;<span style='font-size: 114%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SIDE'>side</a></span> &nbsp;<span style='font-size: 113%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=YET'>yet</a></span> &nbsp;<span style='font-size: 112%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=ALREADY'>already</a></span> &nbsp;<span style='font-size: 111%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FIRST'>first</a></span> &nbsp;<span style='font-size: 110%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WHOLE'>whole</a></span> &nbsp;<span style='font-size: 109%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=PARTY'>party</a></span> &nbsp;<span style='font-size: 108%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=DELAWARES'>delawares</a></span> &nbsp;<span style='font-size: 107%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=ENEMY'>enemy</a></span> &nbsp;<span style='font-size: 106%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=LIGHT'>light</a></span> &nbsp;<span style='font-size: 105%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=CONTINUED'>continued</a></span> &nbsp;<span style='font-size: 104%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WARRIOR'>warrior</a></span> &nbsp;<span style='font-size: 103%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WATER'>water</a></span> &nbsp;<span style='font-size: 102%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WITHIN'>within</a></span> &nbsp;<span style='font-size: 101%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=APPEARED'>appeared</a></span> &nbsp;<span style='font-size: 100%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=LOW'>low</a></span> &nbsp;<span style='font-size: 99%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SEEMED'>seemed</a></span> &nbsp;<span style='font-size: 98%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=TURNED'>turned</a></span> &nbsp;<span style='font-size: 97%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=ONCE'>once</a></span> &nbsp;<span style='font-size: 96%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SAME'>same</a></span> &nbsp;<span style='font-size: 95%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=DARK'>dark</a></span> &nbsp;<span style='font-size: 94%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MUST'>must</a></span> &nbsp;<span style='font-size: 93%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=PASSED'>passed</a></span> &nbsp;<span style='font-size: 92%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=SHORT'>short</a></span> &nbsp;<span style='font-size: 91%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FRIEND'>friend</a></span> &nbsp;<span style='font-size: 90%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=BACK'>back</a></span> &nbsp;<span style='font-size: 89%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=INSTANT'>instant</a></span> &nbsp;<span style='font-size: 88%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=PROJECT'>project</a></span> &nbsp;<span style='font-size: 87%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=AROUND'>around</a></span> &nbsp;<span style='font-size: 86%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=PEOPLE'>people</a></span> &nbsp;<span style='font-size: 85%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=AGAINST'>against</a></span> &nbsp;<span style='font-size: 84%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=BETWEEN'>between</a></span> &nbsp;<span style='font-size: 83%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=ENEMIES'>enemies</a></span> &nbsp;<span style='font-size: 82%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=WAY'>way</a></span> &nbsp;<span style='font-size: 81%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FORM'>form</a></span> &nbsp;<span style='font-size: 80%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=MUNRO'>munro</a></span> &nbsp;<span style='font-size: 79%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FAR'>far</a></span> &nbsp;<span style='font-size: 78%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=FEET'>feet</a></span> &nbsp;<span style='font-size: 77%'><a href='http://infomotions.com/alex/concordance/?cmd=wordSearch&#038;phrase=zzzz&#038;word=zzzz&#038;bookcode=etext940&#038;segsize=1000&#038;usePre=1&#038;word1=NOR'>nor</a></span> &nbsp;</p>
<h3>About the story</h3>
<p>While I am not a literary scholar, I am able to read a book and write a synopsis.</p>
<p>Set during the French And Indian War in what was to become upper New York State, two young women are being escorted from one military camp to another. Along the way the hero, Natty Bumppo (also known by quite a number of other names, most notably &#8220;Hawkeye&#8221; or the &#8220;scout&#8221;), alerts the convoy that their guide, Magua, is treacherous. Sure enough, Magua kidnaps the women. Fights and battles ensue in a pristine and idyllic setting. Heroic deeds are accomplished by Hawkeye and the &#8220;last of the Mohicans&#8221; &#8212; Uncas. Everybody puts on disguises. In the end, good triumphs over evil but not completely. </p>
<p>Cooper&#8217;s style is verbose. Expressive. Flowery. On this level it was difficult to read. Too many words. In the other hand the style was consistent, provided a sort of pattern, and enabled me to read the novel with a certain rhythm.</p>
<p>There were a couple of things I found particularly interesting. First, the allusion to &#8220;<a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext940&amp;segsize=1000&amp;usePre=1&amp;word1=relish">relish</a>&#8220;. I consider this to be a common term now-a-days, but Cooper thought it needed elaboration when used to describe food. Cooper used the word within a relatively short span of text to describe condiment as well as a feeling. Second, I wonder whether or not Cooper&#8217;s description of Indians built on existing stereotypes or created them. &#8220;<a href="http://infomotions.com/alex/concordance/?cmd=wordSearch&amp;phrase=zzzz&amp;word=zzzz&amp;bookcode=etext940&amp;segsize=1000&amp;usePre=1&amp;word1=hugh">Hugh</a>!&#8221;</p>
<h3>Services against texts</h3>
<p>The word cloud I created is simple and rudimentary. From my perspective, it is just a graphical representation of a <a href="http://en.wikipedia.org/wiki/Concordance_(publishing)">concordance</a>, and a concordance has to be one of the most basic of indexes. This particular word cloud (read &#8220;concordance&#8221; or &#8220;index&#8221;) allows the reader to get a sense of a text. It puts words in context. It allows the would-be reader to get an overview of the document.</p>
<p>This particular implementation is not pretty, nor is it quick, but it is functional. How could libraries create other services such as these? Everybody can find and get data and information these days. What people desire is help understanding and using the documents. Providing services against texts such as word clouds (concordances) might be one example.</p>
<div style='text-align: center'><SCRIPT charset="utf-8" type="text/javascript" src="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822/US/infomotions-20/8001/c501758d-d70f-4eea-8a89-7ecc86001949"> </SCRIPT> <NOSCRIPT><A HREF="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&#038;MarketPlace=US&#038;ID=V20070822%2FUS%2Finfomotions-20%2F8001%2Fc501758d-d70f-4eea-8a89-7ecc86001949&#038;Operation=NoScript">Amazon.com Widgets</A></NOSCRIPT></div>
]]></content:encoded>
										</item>
		<item>
		<title>Crowd sourcing TEI files</title>
		<link>./../2008/08/crowd-sourcing-tei-files/index.html</link>
				<comments>./../2008/08/crowd-sourcing-tei-files/index.html#comments</comments>
				<pubDate>Fri, 15 Aug 2008 19:44:21 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[crowd sourcing]]></category>

		<guid isPermaLink="false">./../index.html?p=50</guid>
				<description><![CDATA[How feasible and/or practical do you think &#8220;crowd sourcing&#8221; TEI files would be? I like writing in my books. In fact, I even have a particular system for doing it. Circled things are the subjects of sentences. Squared things are proper nouns. Underlined things connected to the circled and squared things are definitions. Moreover, my [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>How feasible and/or practical do you think &#8220;crowd sourcing&#8221; TEI files would be?</p>
<p>I like writing in my books. In fact, I even have a particular system for doing it. Circled things are the subjects of sentences. Squared things are proper nouns. Underlined things connected to the circled and squared things are definitions. Moreover, my books are filled with marginalia. Comments. Questions. See alsos. I call this process ELMTGML (Eric Lease Morgan&#8217;s Truly Graphic Mark-up Language), and I find it a whole lot more useful than the use of simple highlighter pen that where all the mark-up has the same value. Florescent yellow.</p>
<p>I think I could easily &#8220;crosswalk&#8221; my mark-up process to TEI mark-up because there are TEI elements for many of things I highlight. Given such a thing I could mark-up texts using my favorite editor and then create stylesheets that turn on or turn off my commentary.</p>
<p>Suppose many classic texts were marked-up in TEI. Suppose there were stylesheets that allowed you to turn on or turn off other people&#8217;s commentary/annotations or allowed you to turn on or turn off particular people&#8217;s commentary/annotation. Wouldn&#8217;t that be interesting?</p>
<p>Moreover, what if some sort of tool, widget, or system were created that allowed anybody to add commentary to texts in the form of TEI mark-up. Do you think this would be feasible? Useful?</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/08/crowd-sourcing-tei-files/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Metadata and data structures</title>
		<link>./../2008/08/metadata-and-data-structures/index.html</link>
				<comments>./../2008/08/metadata-and-data-structures/index.html#comments</comments>
				<pubDate>Wed, 06 Aug 2008 01:18:08 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Dublin Core]]></category>
		<category><![CDATA[MARC]]></category>
		<category><![CDATA[MARCXML]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[MODS]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">./../index.html?p=45</guid>
				<description><![CDATA[It is important to understand the differences between metadata and data structures. This posting outlines some of the differences between the two. Introduction Every once in a while people ask me for advice that I am usually very happy to give because the answers usually involve succinctly articulating some of the things floating around in [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>It is important to understand the differences between metadata and data structures. This posting outlines some of the differences between the two.</p>
<h3>Introduction</h3>
<p>Every once in a while people ask me for advice that I am usually very happy to give because the answers usually involve succinctly articulating some of the things floating around in my head. Today someone asked:</p>
<blockquote><p>I&#8217;ve been looking at Dublin Core and looking at MODS to arrive at the best metadata for converting MARC records into human readable format. Dublin Core lacks specificity, but maybe I don&#8217;t understand it that well. Plus, I cannot find what parts of the MARC are mapped to what&#8211;where are the &#8220;rules.&#8221; I look at Mods and find it overwhelming and I&#8217;m not even sure of its intended purpose.</p></blockquote>
<p>Below is how I replied.</p>
<h3>Dublin Core is a list of element names</h3>
<p>First of all, please understand that Dublin Core is really just a list of fifteen or so metadata element names. Title. Creator. Publisher. Format. Identifier. Etc. Moreover, each of these names come with simple definitions denoting the type of content they are expected to represent. Dublin Core is NOT a metadata format. Dublin Core does not define how data should be encoded. It is simply a list of elements.</p>
<h3>MARC and XML as data structures</h3>
<p>MARC is a metadata format &#8212; a data structure &#8212; a container &#8212; a &#8220;bit bucket&#8221;. The MARC standard defines how data should be encoded. First there is a leader. It is always 24 characters long and different characters in the leader denote different things. Then there is the directory &#8212; a &#8220;map&#8221; of where the data resides in the file. Finally, there is the data itself which is divided into indicators, fields, and subfields. This MARC standard has been used to hold bibliographic data as well as authority data. In one case the 245 field is intended to encode title/author information. In another case the 245 means something else. In both cases they are using MARC &#8212; a data structure.</p>
<p>XML is second type of data structure. Instead of leaders, directories, and data sections, XML is made up of nested elements where the elements of the file are denoted by a Document Type Definition (DTD) or XML schema. XML is much more flexible than MARC. XML is much more verbose than MARC. There are many industries supporting XML. MARC is supported by a single industry. MARC was cool in its time, but it has grown long in the tooth. XML is definitely the data structure to use now-a-days.</p>
<h3>MARCXML and MODS</h3>
<p>MARCXML is a specific flavor of XML used to contain 100% of the data in a bibliographic MARC file. It works. It does what it is suppose to do, but in order to really take advantage of it the user needs to know that the 245 field contains title information, the 100 field contains author information, etc. In other words, to use MARCXML the user needs to know the &#8220;secret code book&#8221; translating library tags into human-readable elements. Moreover, MARCXML retains all of the &#8220;syntactical&#8221; sugar of MARC. Last name first. First name last. Parentheses around birth and death dates. &#8220;pbk&#8221; to denote paperback. Etc.</p>
<p>MODS is a second flavor of XML also designed to contain bibliographic data. In at least a couple of ways, MODS is much better than MARCXML. First and foremost, MODS removes the need for &#8220;secret code book&#8221; because the element names are human-readable, not integers. Second, some but not all, of the syntactical sugar is removed.</p>
<p>When it comes to bibliographic data, I advocate MODS over MARCXML any day. Not perfect, but a step in the right direction. There are utilities to convert MARC to MARCXML and then to MODS. Conversion is almost a trivial computing problem to solve.</p>
<h3>The &#8220;right&#8221; metadata standard</h3>
<p>When it comes to choosing the &#8220;right&#8221; metadata standard it is often about choosing the &#8220;right&#8221; flavor of XML. VRACore, for example, is more amenable to describing image data. TEI is best suited to describe &#8212; mark-up &#8212; prose and/or poetry. EAD is the &#8220;best&#8221; candidate for archival finding aids. Authority data can be represented in a relatively new XML flavor called MADS. METS is used, more or less, to create collections of metadata objects. RDF is similar to METS and is intended to form the basis of the Semantic Web. SKOS is an XML format for thesauri.</p>
<p>In short, there are two things to consider. First, what is your data? Bibliographic? Image? Full texts? Second, what data structure do you want to employ? MARC? XML? Something else such as a tab-delimited file? (Ick!) Or maybe a relational database schema? (Maybe.) In most cases I expect XML will be the data structure you want to employ, and then the question is, &#8220;What XML DTD or schema do I want to exploit?&#8221;</p>
<p>I allude to many of these issues in an XML workshop I wrote called <a href="http://infomotions.com/musings/xml-in-libraries/">XML In Libraries</a>.</p>
<p>&#8216;Hope this helps.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/08/metadata-and-data-structures/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>Origami is arscient, and so is librarianship</title>
		<link>./../2008/07/arscience/index.html</link>
				<comments>./../2008/07/arscience/index.html#comments</comments>
				<pubDate>Wed, 30 Jul 2008 17:08:52 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[arscience]]></category>
		<category><![CDATA[origami]]></category>

		<guid isPermaLink="false">./../index.html?p=42</guid>
				<description><![CDATA[To do origami well a person needs to apply both artistic and scientific methods to the process. The same holds true for librarianship. Arscience Arscience is a word I have coined to denote the salient aspects of both art and science. It is a type of thinking &#8212; thinquing &#8212; that is both intuitive as [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>To do origami well a person needs to apply both artistic and scientific methods to the process. The same holds true for librarianship.</p>
<h3>Arscience</h3>
<p>Arscience is a word I have coined to denote the salient aspects of both art and science. It is a type of thinking &#8212; thinquing &#8212; that is both intuitive as well as systematic. It exemplifies synthesis &#8212; the bringing together of ideas and concepts &#8212; and analysis &#8212; the division of our world into smaller and smaller parts. Arscience is my personal epistemological method employing a Hegalian dialectic &#8212; an internal discussion. It juxtaposes approaches to understanding including art and science, synthesis and analysis, as well as faith and experience. These epistemological methods can be compared and contrasted, used or exploited, applied and debated against many of the things we encounter in our lives. Through this process I believe a fuller understanding of many things can be achieved.</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2008/07/origami-duck.gif" alt="arscience" width="256" height="256" hspace="5" vspace="5"></p>
<h3>Origami</h3>
<p>A trivial example is origami. One one hand, origami is very artistic. Observe something in the natural world. Examine its essential parts and take notice of their shape. Acquire a piece of paper. Fold the paper to bring the essential parts together to form a coherent whole. The better your observation skills, the better your command of the medium, the better your origami will be.</p>
<p>On the other hand, you can discover that a square can be inscribed on any plane, and upon a square any number of regular polygons can be further inscribed. All through folding. You can then go about bisecting angles and dividing paper in halves, creating symbols denoting different types of folds, and systematically recording the process so it can be shared with others, ultimately creating a myriad of three-dimensional objects from an essentially two-dimensional thing. Unfold the three-dimensional object to expose its mathematics.</p>
<p>Seemingly conflicting approaches to the same problem results in similar outcomes. Arscience.</p>
<p style="text-align: center"><a href="./../wp-content/uploads/2008/07/flock-of-ducks-big.gif"><img src="./../wp-content/uploads/2008/07/flock-of-ducks-small.gif" alt="arscience" width="256" height="256" hspace="5" vspace="5"></a></p>
<h3>Librarianship</h3>
<p>The same artistic and scientific processes &#8212; an arscient process &#8212; can be applied to librarianship. While there are subtle differences between different libraries, they all do essentially the same thing. To some degree they all collect, organize, preserve, and disseminate data, information, and knowledge for the benefit their respective user populations.</p>
<p>To accomplish these goals the librarian can take both an analysis tack as well as a synthesis tack. Interactions with people is more about politics, feelings, wants, and needs. Such things are not logical but emotional. This is one side of the coin. The other side of the coin includes well-structured processes &#038; workflows, usability studies &#038; statistical analysis, systematic analysis &#038; measurable results. In our hyper-dynamic environment, such as the one we are working it, innovation &#8212; thinking a bit outside the box &#8212; is a necessary ingredient for moving forward. At the same time, it is not all about creativity but it is also about strategically planning for the near, medium, and long term future.</p>
<p>Librarianship requires both. Librarianship is arscient.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/07/arscience/feed/index.html</wfw:commentRss>
		<slash:comments>8</slash:comments>
							</item>
		<item>
		<title>On the move with the Mobile Web</title>
		<link>./../2008/07/on-the-move-with-the-mobile-web/index.html</link>
				<pubDate>Sun, 20 Jul 2008 23:26:56 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[mobile web]]></category>

		<guid isPermaLink="false">./../index.html?p=38</guid>
				<description><![CDATA[On The Move With The Mobile Web by Ellyssa Kroski provides a nice overview of mobile technology and what it presently means for libraries. What is in the Report In my most recent list of top technology trends I mentioned mobile devices. Because of this Kroski had a copy of the Library Technology Report she [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><em><a href="http://www.techsource.ala.org/ltr/on-the-move-with-the-mobile-web-libraries-and-mobile-technologies.html">On The Move With The Mobile Web</a></em> by Ellyssa Kroski provides a nice overview of mobile technology and what it presently means for libraries.</p>
<h3>What is in the Report</h3>
<p>In my <a href="./../2008/06/top-tech-trends-for-ala-summer-08/index.html">most recent list of top technology trends</a> I mentioned mobile devices. Because of this Kroski had a copy of the Library Technology Report she authored, above, sent to me. Its forty-eight pages essentially consists of six chapters (articles) on the topic of the Mobile Web:</p>
<ol>
<li><strong>What is the Mobile Web?</strong> &#8211; An overview of Web technology and its use on hand-held, portable devices. I liked the enumeration of Mobile Web benefits such as: constant connectivity, location-aware services, limitless access, and interactive capabilities. Also, texting was described here as a significant use of the Mobile Web. Ironically, I sent my first text message just prior to the 2008 ALA Annual Meeting.</li>
<li><strong>Mobile devices</strong> &#8211; A listing and description of the hardware, software (operating systems as well as applications), networks, and companies working in the sphere of the Mobile Web. Apparently three companies (Verizon, AT&amp;T, and Sprint Nextel) have 70% of the market share in terms of network accessibility in the United States.</li>
<li><strong>What can you do with the Mobile Web?</strong> &#8211; Another list and description but this time of application types: email, text messaging, ringtones &amp; wallpaper, music &amp; radio, software &amp; games, instant messaging, social networking, ebooks, social mapping networks (sort of scary if you ask me), search, mapping, audiobooks, television, travel, browsers, news, blogging, food ordering, and widgets.</li>
<li><strong>Library mobile initiatives</strong> &#8211; A listing and description of what some libraries are doing with the Mobile Web. <a href="http://www.bsu.edu/libraries/mobile/">Ball State University&#8217;s Mobile Web presence</a> seems to be out in front in this regard, and <a href="http://pubmedhh.nlm.nih.gov/nlm/">PubMed</a> seems pretty innovative as well. For some commentary regarding iPhone-specific applications for libraries see Peter Brantley&#8217;s &#8220;<a href="http://blogs.lib.berkeley.edu/shimenawa.php/2008/07/14/the_show_room_library">The Show Room Library</a>&#8220;.</li>
<li><strong>How to create a mobile experience</strong> &#8211; This is more or less a set of guidelines for implementing Mobile Web services. Some of the salient points include: it is about providing information to people who don&#8217;t have a computer, think a lot about location-based services, understand the strengths &amp; weaknesses of the technology. I found this chapter to be the most useful.</li>
<li><strong>Getting started with the Mobile Web</strong> &#8211; A list of fun things to do to educate yourself on what the Mobile Web can do.</li>
</ol>
<p>Each chapter is complete with quite a number of links and citations for further reading.</p>
<h3>Cellphone barcodes</h3>
<p>Through my reading of this Report my knowledge of the Mobile Web increased. The most interesting thing I learned was the existence of <a href="http://semapedia.org/">Semapedia</a>, a project that &#8220;strives to tag real-world objects with 2D barcodes that can be read by camera phones.&#8221; Go to Semapedia. Enter a Wikipedia URL. Get back a PDF document containing &#8220;barcodes&#8221; that your cellphone should be able to read (with the appropriate application). Label real-world things with the barcode. Scan the code with your cellphone. See a Wikipedia article describing the thing. Interesting. Below is one of these barcodes for the word &#8220;blog&#8221; which links to the <a href="http://semapedia.org/w/31963">Mobile Web-ready Wikipedia entry on blogs</a>:</p>
<p style="text-align: center"><img src="./../wp-content/uploads/2008/07/barcode-for-blog.png" alt="barcode" width="164" height="164"></p>
<h3>Read the report</h3>
<p>I still believe the Mobile Web is going to play larger role in people&#8217;s everyday lives. (Duh!) By extension, I believe it is going to play a larger role in libraries. Ellyssa Kroski&#8217;s <em>On The Move With The Mobile Web</em> will give you a leg up on the technology.</p>
]]></content:encoded>
										</item>
		<item>
		<title>TPM &#8212; technological protection measures</title>
		<link>./../2008/07/tpm-technological-protection-measures/index.html</link>
				<pubDate>Sun, 20 Jul 2008 18:55:25 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[technological protection measures]]></category>
		<category><![CDATA[TPM]]></category>

		<guid isPermaLink="false">./../index.html?p=33</guid>
				<description><![CDATA[I learned a new acronym a few weeks ago &#8212; TPM &#8212; which stands for &#8220;technological protection measures&#8221;, and in the May 2008 issue of College &#38; Research Libraries Kristin R. Eschenfelder wrote an article called &#8220;Every library&#8217;s nightmare?&#8221; and enumerated various types of protection measures employed by publishers to impede the use of electronic [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I learned a new acronym a few weeks ago &#8212; TPM &#8212; which stands for &#8220;technological protection measures&#8221;, and in the May 2008 issue of <em>College &amp; Research Libraries</em> Kristin R. Eschenfelder wrote an article called &#8220;<a href="http://www.ala.org/ala/acrl/acrlpubs/crljournal/backissues2008/crlmay08/eschenfelder.cfm">Every library&#8217;s nightmare?</a>&#8221; and enumerated various types of protection measures employed by publishers to impede the use of electronic scholarly material.</p>
<h3>Types of restrictions</h3>
<p>In today&#8217;s environment, where digital information is increasingly bought, sold, and/or licensed, publishers feel the need to protect their product from duplication. As described by Eschenfelder, these protections &#8212; restrictions &#8212; come in two forms: soft and hard.</p>
<p>Soft restrictions are &#8220;configurations of hardware or software that make certain uses such as printing, saving, copy/pasting, or e-mailing more difficult &#8212; but not impossible &#8212; to achieve.&#8221; The soft restrictions have been divided into the following subtypes:</p>
<ul>
<li><strong>extent of use</strong> &#8211; page print limits; PDF download limits; data export limits; suspicious use tracking</li>
<li><strong>obfuscation</strong> &#8211; need to select items before options become available</li>
<li><strong>omission</strong> &#8211; not providing buttons or links to enact users</li>
<li><strong>decomposition</strong> &#8211; saving document results in many files, making recreating or e-mailing the document difficult</li>
<li><strong>frustration</strong> &#8211; page chunking in e-books</li>
<li><strong>warning</strong> &#8211; copyright warnings; end-user licenses on startup</li>
</ul>
<p>Hard restrictions are &#8220;configurations of software or hardware that strictly prevent certain uses.&#8221; The hard restrictions have been divided into the following subtypes:</p>
<ul>
<li><strong>restricted copy and paste OCR</strong> &#8211; OCR exposed for searching, but not for copying and pasting of text</li>
<li><strong>secure container TPM</strong> &#8211; use rights vary by resource</li>
</ul>
<p>To investigate what types of restricts were put into everyday practice Eschenfelder studied a total of about seventy-five resources from three different disciplines (engineering, history, art history) and tallied the types of restrictions employed.</p>
<h3>Salient quotes</h3>
<p>A few salient quotes from the article exemplify Eschenfelder&#8217;s position on TPM:</p>
<ul>
<li>&#8220;This paper suggests that the soft restrictions that are present in licensed products may haver already changed user&#8217;s and librarian&#8217;s expectations about what the use rights they ought to expect from vendors and their products.&#8221; (Page 207)</li>
<li>&#8220;One concern is that the library community has already accepted many of the soft use restrictions identified in this paper.&#8221; (Page 219)</li>
<li>&#8220;[Librarians] should also advocate for removal of use restrictions, or encourage new vendors to offer competing restriction-free products.&#8221; (Page 219)</li>
<li>&#8220;A more realistic solution might be a shared knowledge base of vendor interfaces and known use restrictions.&#8221; (Page 219)</li>
<li>&#8220;The paper argues that soft use restrictions deserve more attention from the library community, and that librarians should not accept these restrictions as the natural order of things.&#8221; (Page 220)</li>
</ul>
<h3>My commentary</h3>
<p>I agree with Eschenfelder.</p>
<p>Many people who work in libraries seem to be there because of the values libraries portray. Examples include but are not limited to: intellectual freedom, education, diversity, equal access to information, preservation of the historical record for future generations, etc. Heaven know, people who work in libraries are not in it for the money! I fall into the equal access to information camp, and that is why I advocate things like open access publishing and open source software development.</p>
<p>TPM inhibits the free and equal access of information, and I think Eschenfelder makes a good point when she says the &#8220;library community has already accepted many of the soft use restrictions.&#8221; Why do we accept them? Librarians are <em>not required</em> to purchase and/or license these materials. We have choice. If much of the scholarly publishing industry is driven by the marketplace &#8212; supply &amp; demand &#8212; then why don&#8217;t/can&#8217;t we just say, &#8220;No&#8221;. Nobody is forcing us spend our money this way. If vendors don&#8217;t provide the sort of products and services we desire, then the marketplace will change. Right?</p>
<p>In any event, consider educating yourself on the types of TPM and read Eschenfelder&#8217;s article.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Against The Grain is not</title>
		<link>./../2008/07/against-the-grain-is-not/index.html</link>
				<pubDate>Tue, 15 Jul 2008 23:24:26 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[against the grain]]></category>

		<guid isPermaLink="false">./../index.html?p=31</guid>
				<description><![CDATA[Against The Grain is not your typical library-related serial. Last year I had the opportunity to present at the 27th Annual Charleston Conference where I shared my ideas regarding the future of search and how some of those ideas can implemented in &#8220;next-generation&#8221; library catalogs. In appreciation of my efforts I was given a one-year [&#8230;]]]></description>
								<content:encoded><![CDATA[<p><em>Against The Grain</em> is not your typical library-related serial.</p>
<p>Last year I had the opportunity to present at the 27th Annual Charleston Conference where I shared my ideas regarding the <a href="http://infomotions.com/musings/future-of-search/">future of search</a> and how some of those ideas can implemented in &#8220;next-generation&#8221; library catalogs. In appreciation of my efforts I was given a one-year subscription to <a href="http://www.against-the-grain.com/d/"><em>Against The Grain</em></a>. From the website&#8217;s masthead:</p>
<blockquote><p>
<em>Against the Grain</em> (ISSN: 1043-2094) is your key to the latest news about libraries, publishers, book jobbers, and subscription agents. It is a unique collection of reports on the issues, literature, and people that impact the world of books and journals. ATG is published on paper six times a year, in February, April, June, September, and November and December/January.
</p></blockquote>
<p>I try to read the issues as they come out, but I find it difficult. This not because the content is poor, but rather because the there is so much of it! In a few words and phrases, <em>Against The Grain</em> is full, complete, dense, tongue-in-cheek, slightly esoteric, balanced, graphically challenging and at the same time graphically interesting, informative, long, humorous, supported by advertising, somewhat scholarly, personal, humanizing, a realistic reflection of present-day librarianship (especially in regards to technical services in academic libraries), predictable, and consistent. For example, the every issue contains a &#8220;rumors&#8221; article listing bunches and bunches of people, where they are going, and what they are doing. Moreover, the articles are printed in a relatively small typeface in a three-column format. Very dense. To make things easier to read, sort of, all names and titles are bolded. I suppose the dutiful reader could simply scan for names of interest and read accordingly, but there are so many of them. (Incidentally, the bolded names pointed me to the <a href="http://digital.casalini.it/retreat/">Tenth Fiesole Retreat</a> which piqued my interest because I had given a <a href="http://infomotions.com/musings/sigir-99/">modified SIG-IR presentation on MyLibrary</a> at the <a href="http://digital.casalini.it/retreat/retreat_2000.html">Second Fiesole Retreat</a>. Taking place at Oxford, that was a really cool meeting!)</p>
<p>Don&#8217;t get me wrong. I like <em>Against The Grain</em> but it so full of information and has been so thoroughly put together that I feel almost embarrassed not reading it. I feel like the amount of work put into each issue warrants the same amount of effort on my part to read it.</p>
<p>The latest issue (volume 20, number 3, June 2008) includes a number of articles about Google. For me, the most interesting articles included:</p>
<ul>
<li>&#8220;Kinda just like Google&#8221; by Jimmy Ghaphery &#8211; an examination of the number of search targets appearing on ARL library home pages. Almost all of them include a search of the catalog. Just fewer have searches of meta-search engines. Just fewer than that are pages including searches of Google and its relatives, and just fewer than that, if not non-existent, were searches of locally created indexes like institution repositories or digital collections. Too many search boxes?</li>
<li>&#8220;Giggling Over Google&#8221; by Lilia Murray &#8211; a description of how Google Docs and Google Custom Search engines can be used and harnessed in libraries. Well-documented. Well-written. Advocates the creation of more Custom Search Engines by librarians. Sounds like a great idea to me.</li>
<li>&#8220;Keeping the Enemy Close&#8221; by John Wender &#8211; compares and contrasts the advantages and disadvantages of including/supporting Google Scholar in an academic library setting. I liked the allusion to Carl Shapiro and Hall Varian&#8217;s idea of &#8220;information as an &#8216;experience good'&#8221;. Kinda like, &#8220;A bird in the hand is worth two in the bush.&#8221;</li>
<li>&#8220;Measuring the &#8216;Google Effect&#8217; at JSTOR by Bruce Heterick &#8211; a description of how JSTOR&#8217;s usage skyrocketed after its content was indexed by Google.</li>
<li>&#8220;Prescription vs. Description in the information-seeking process, or should we encourage our patrons to use Google Scholar?&#8221; by Bruce Sanders &#8211; contrasts &#8220;prescription&#8221; and &#8220;description&#8221; librarianship. One encourages competent, sophisticated searching of databases. The other tailors the library Website to make the patron search strategies as effective as possible. An interesting comparison.</li>
<li>&#8220;Medium rare books, PODS wars, instant books brought to you by algorithms&#8221; by John D. Riley &#8211; describes how a fortune of books was found in the stacks of the Forbes Library as opposed to the library&#8217;s special collections.</li>
</ul>
<p>If you have the time, spent it reading <em>Against The Grain</em>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>E-journal archiving solutions</title>
		<link>./../2008/07/e-journal-archiving-solutions/index.html</link>
				<pubDate>Tue, 15 Jul 2008 03:01:26 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[archiving]]></category>
		<category><![CDATA[LOCKSS]]></category>
		<category><![CDATA[Portico]]></category>
		<category><![CDATA[preservation]]></category>

		<guid isPermaLink="false">./../index.html?p=30</guid>
				<description><![CDATA[A JISC-funded report on e-journal archiving solutions is an interesting read, and it seems as if no particular solution is the hands-down &#8220;winner&#8221;. Terry Morrow, et al. recently wrote a report sponsored by JISC called &#8220;A Comparative study of e-journal archiving solutions&#8220;. Its goal was to compare &#038; contrast various technical solutions to archiving electronic [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>A JISC-funded report on e-journal archiving solutions is an interesting read, and it seems as if no particular solution is the hands-down &#8220;winner&#8221;.</p>
<p>Terry Morrow, et al. recently wrote a report sponsored by JISC called &#8220;<a href="http://www.slainte.org.uk/news/archive/0805/jiscejournalreport.pdf">A Comparative study of e-journal archiving solutions</a>&#8220;. Its goal was to compare &#038; contrast various technical solutions to archiving electronic journals and present the informed opinion on the subject.</p>
<h3>Begged and unanswered questions</h3>
<p>The report begins by setting the stage. Of particular note is the increased movement to e-only journal solutions many libraries are adopting. This e-only approach begs unanswered questions regarding the preservation and archiving of electronic journals &#8212; two similar but different aspects of content curation. To what degree will e-journals suffer from technical obsolescence? Just as importantly, how will the change in publishing business models, where access, not content, is provided through license agreements effect perpetual access and long-term preservation of e-journals?</p>
<h3>Two preservation techniques</h3>
<p>The report outlines two broad techniques to accomplish the curation of e-journal content. On one hand there is &#8220;source file&#8221; preservation where content (articles) are provided by the publisher to a third-party archive. This is the raw data of the articles &#8212; possibly SGML files, XML files, Word documents, etc. &#8212; as opposed to the &#8220;presentation&#8221; files intended for display. This approach is seen as being more complete, but relies heavily on active publisher and third party participation. This is the model employed by Portico. The other technique is harvesting. In this case the &#8220;presentation&#8221; files are archived from the Web. This method is more akin to the traditional way libraries preserved and archived their materials. This is the model employed by LOCKSS.</p>
<h3>Compare &#038; contrast</h3>
<p>In order to come their conclusions, Morrow et al. compared &#038; contrasted six different e-journal preservation initiatives while looking through the lense of four possible trigger events. These initiatives (technical archiving solutions) included:</p>
<ol>
<li>British Library e-Journal Digital Archive &#8211; a fledgling initiative by a national library</li>
<li>CLOCKSS &#8211; a dark archive of articles using the same infrastructure as LOCKSS</li>
<li>e-Depot &#8211; a national library initiative from The Netherlands</li>
<li>LOCKSS &#8211; an open source and distributed harvesting implementation</li>
<li>OCLC ECO &#8211; an aggregation of aggregators, not really preservation</li>
<li>Portico &#8211; a Mellon-backed &#8220;source file&#8221; approach</li>
</ol>
<p>The trigger events included:</p>
<ol>
<li>cancelation of an e-journal title</li>
<li>e-journal no longer available from a publisher</li>
<li>publisher ceased operation</li>
<li>catastrophic hardware or network failure</li>
</ol>
<p>These characteristics made up a matrix and enabled Morrow, et al. to describe what would happen with each initiative under each trigger event. In summary, they would all function but it seems the LOCKSS solution would provide immediate access to content whereas most of the other solutions would only provide delayed access. Unfortunately, the LOCKSS initiative seems to have less publisher backing than the Portico initiative. On the other hand, the Portico initiative costs more money and assumes a lot of new responsibilities from publishers.</p>
<p>In today&#8217;s environment where information is more routinely sold and licensed, I wonder whether or not what level of trust can be given to publishers. What&#8217;s in it for them? In the end, neither solution &#8212; LOCKSS nor Portico &#8212; can be considered ideal, and both ought to be employed at the present time. One size does not fit all.</p>
<h3>Recommendations</h3>
<p>In the end there were ten recommendations:</p>
<ol>
<li>carry out risk assessments</li>
<li>cooperate with one or more external e-journal archiving solutions</li>
<li>develop standard cross-industry definitions of trigger events and protocols</li>
<li>ensure archiving solutions cover publishers of value to UK libraries</li>
<li>explicitly state perpetual access policies</li>
<li>follow the Transfer Code of Practice</li>
<li>gather and share statistical information about the likelihood of trigger events</li>
<li>provide greater detail of coverage details</li>
<li>review and update this study on a regular basis</li>
<li>take the initiative by specifying archiving requirements when negotiating licenses</li>
</ol>
<p>Obviously the report went into much greater detail regarding all of these recommendations and how they derived. Read the report for the details.</p>
<p>There are many aspects that make up librarianship. Preservation is just one of them. Unfortunately, when it comes to preservation of electronic, born-digital content, the jury is still out. I&#8217;m afraid we are suffering from a wealth of content right now, but in the future this content may not be accessible because society has not thought very long into the future regarding preservation and archiving. I hope we are not creating a Digital Dark Age as we speak. Implementing ideas from this report will help reduce the possibility of this problem from becoming a reality.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Web 2.0 and &#8220;next-generation&#8221; library catalogs</title>
		<link>./../2008/07/web-20-and-next-generation-library-catalogs/index.html</link>
				<pubDate>Tue, 15 Jul 2008 01:50:50 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">./../index.html?p=29</guid>
				<description><![CDATA[A First Monday article systematically comparing &#038; contrasting Web 1.0 and Web 2.0 website technology recently caught my interest, and I think it points a way to making more informed decisions regarding &#8220;next-generation&#8221; library catalog interfaces and Internet-based library services in general. Web 1.0 versus Web 2.0 Graham Cormode and Balachander Krishnamurthy in &#8220;Key differences [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>A <em>First Monday</em> article systematically comparing &#038; contrasting Web 1.0 and Web 2.0 website technology recently caught my interest, and I think it points a way to making more informed decisions regarding &#8220;next-generation&#8221; library catalog interfaces and Internet-based library services in general.</p>
<h3>Web 1.0 versus Web 2.0</h3>
<p>Graham Cormode and Balachander Krishnamurthy in &#8220;<a href="http://www.uic.edu/htbin/cgiwrap/bin/ojs/index.php/fm/article/view/2125/1972">Key differences between Web 1.0 and Web 2.0</a>&#8220;, <em>First Monday</em>, 13(6): June 2008 thoroughly describe the characteristics of Web 2.0 technology. It outlines the features of Web 2.0, describes the structure of Web 2.0 sites, identifies problem with measurement of Web 2.0 usage, and covers technical issues.</p>
<p>I really liked the how it listed some of the identifying characteristics. Web 2.0 sites usually:</p>
<ul>
<li>encourage user-generated content</li>
<li>exploit AJAX</li>
<li>have a strong social component</li>
<li>support some sort of public API</li>
<li>support the ability to form connections between people</li>
<li>support the posting of content in many forms</li>
<li>treat users as first class entities in the system</li>
</ul>
<p>The article included a nice matrix of popular websites across the top and services down the side. At the intersection of the rows and columns check marks were placed denoting whether or not the website supported the services. Of all the websites Facebook, YouTube, Flicr, and MySpace ranked as being the most Web 2.0-esque. Not surprising.</p>
<p>The compare &#038; contrast between Web 1.0 and Web 2.0 sites was particular interesting, and can be used as a sort of standard/benchmark for comparing existing (library) websites to the increasingly expected Web 2.0 format. For example, Web 1.0 sites are characterized as being:</p>
<ul>
<li>stateless</li>
<li>shaped like a &#8220;bow-tie&#8221; where there is a front-page linked to many sub-pages and supplimented with many cross links between sub-pages</li>
<li>covering a single topic</li>
</ul>
<p>Whereas Web 2.0 websites generally:</p>
<ul>
<li>include a broader mixture of content types</li>
<li>produce groups or feeds of content</li>
<li>rely on user-provided content</li>
<li>represent a shared space</li>
<li>require some sort of log-in function</li>
<li>see &#8220;portalization&#8221; is a trend</li>
</ul>
<p>For readers who feel they they do not understand the meaning of Web 2.0, the items outlined above and elaborated upon in the article will make the definition of Web 2.0 clearer. Good reading.</p>
<h3>Library &#8220;catalogs&#8221;</h3>
<p>The article also included an interesting graphic, Figure 1, illustrating the paths from content creator to consumer in Web 2.0. The images is linked from the article, below:</p>
<p><img src="http://www.uic.edu/htbin/cgiwrap/bin/ojs/index.php/fm/article/viewFile/2125/1972/21814" alt="Figure 1: Paths from content creator to consumer in Web 2.0"></p>
<p>The far left denotes people creating content. The far right denotes people using content. In the middle are services. When I look at the image I see everything from the center to the far right of the following illustration (of my own design):</p>
<p><img src="http://infomotions.com/musings/ngc-in-fifteen-minutes/ngc.gif" alt="infrastructure for a next-generation library catalog"></p>
<p>This illustration represents a model for a &#8220;next-generation&#8221; library catalog. On the far left is content aggregation. In the center is content normalization and indexing. On the right are services against the content. The right half of the illustration above is analgous to the entire illustration from Cormode and Krishnamurthy.</p>
<p>Like the movement from Web 1.0 to Web 2.0, library websites (online &#8220;catalogs&#8221;) need to be more about users, their content, and services applied against it. &#8220;Next-generation&#8221; library catalogs will fall short if they are only enhanced implementations of search and browse interfaces. With the advent of digization, everybody has content. What is needed are tools &#8212; services &#8212; to make it more useful.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Alex Lite: A Tiny, standards-compliant, and portable catalogue of electronic texts</title>
		<link>./../2008/07/alex-lite-a-tiny-standards-compliant-and-portable-catalogue-of-electronic-texts/index.html</link>
				<comments>./../2008/07/alex-lite-a-tiny-standards-compliant-and-portable-catalogue-of-electronic-texts/index.html#comments</comments>
				<pubDate>Sat, 12 Jul 2008 16:13:01 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Alex Catalogue]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[TEI]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">./../index.html?p=28</guid>
				<description><![CDATA[One the beauties of XML its ability to be transformed into other plain text files, and that is what I have done with a simple software distribution called Alex Lite. My TEI publishing system(s) A number of years ago I created a Perl-based TEI publishing system called &#8220;My personal TEI publishing system&#8220;. Create a database [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>One the beauties of XML its ability to be transformed into other plain text files, and that is what I have done with a simple software distribution called Alex Lite.</p>
<h3>My TEI publishing system(s)</h3>
<p>A number of years ago I created a Perl-based TEI publishing system called &#8220;<a href="http://infomotions.com/musings/publishing-system/">My personal TEI publishing system</a>&#8220;. Create a database designed to maintain authority lists (titles and subjects), sets of XSLT files, and TEI/XML snippets. Run reports against the database to create complete TEI files, XHTML files, RSS files, and files designed to be disseminated via OAI-PMH. Once the XHTML files are created, use an indexer to index them and provide a Web-based interface to the index. Using this system I have made accessible more than 150 of my essays, travelogues, and workshop handouts retrospectively converted as far back as 1989. Using this system, many (if not most) of <a href="http://infomotions.com/musings/">my writings</a> have been available via RSS and OAI-PMH since October 2004. </p>
<p>A couple of years later I morphed the TEI publishing system to enable me to mark-up content from an <a href="http://infomotions.com/alex/">older version of my Alex Catalogue of Electronic Texts</a>. Once marked up I planned to transform the TEI into a myriad of ebook formats: plain text, plain HTML, &#8220;smart&#8221; HTML, PalmPilot DOC and eReader, Rocket eBook, Newton Paperback, PDF, and TEI/XML. The mark-up process was laborious and I have only marked up about 100 texts, and you can see the <a href="http://infomotions.com/alex2/">fruits of these labors</a>, but the combination of database and XML technology has enabled me to create Alex Lite.</p>
<h3>Alex Lite</h3>
<p>Alex Lite the result of a report written against my second TEI publishing system. Loop through each item in the database and update an index of titles. Create a TEI file against each item. Using XSLT, convert each TEI file into a plain HTML file, a &#8220;pretty&#8221; XHTML file, and a FO (Formatting Objects) file. Use a FO processor (like FOP) to convert the FO into PDF.  Loop through each creator in the database to create an author index. Glue the whole thing together with an index.html file. Save all the files to a single directory and tar up the directory.</p>
<p>The result is a single file that can be downloaded, unpacked, and provide immediate access to sets of electronic books in an standards-compliant, operating system independent manner. Furthermore, no network connection is necessary except for the initial acquisition of the distribution. This directory can then be networked or saved to a CD-ROM. Think of the whole thing as if it were a library.</p>
<p>Give it a whirl; <a href="./../wp-content/uploads/2008/07/alex-lite-2005-08-18.tar.gz">download a version of Alex Lite</a>. Here is a list of all the items in the tiny collection:</p>
<ol>
<li>Alger Jr., Horatio (1834-1899)
<ul>
<li>The Cash Boy</li>
<li>Cast Upon The Breakers</li>
</ul>
</li>
<li>Bacon, Francis (1561-1626)
<ul>
<li>The Essays</li>
<li>The New Atlantis</li>
</ul>
</li>
<li>Burroughs, Edgar Rice (1875-1850)
<ul>
<li>At The Earth&#8217;s Core</li>
<li>The Beasts Of Tarzan</li>
<li>The Gods Of Mars</li>
<li>The Jungle Tales Of Tarzan</li>
<li>The Monster Men</li>
<li>A Princess Of Mars</li>
<li>The Return Of Tarzan</li>
<li>The Son Of Tarzan</li>
<li>Tarzan And The Jewels Of Opar</li>
<li>Tarzan Of The Apes</li>
<li>The Warlord Of Mars</li>
</ul>
</li>
<li>Conrad, Joseph (1857-1924)
<ul>
<li>The Heart Of Darkness</li>
<li>Lord Jim</li>
<li>The Secret Sharer</li>
</ul>
</li>
<li>Doyle, Arthur Conan (1859-1930)
<ul>
<li>The Adventures Of Sherlock Holmes</li>
<li>The Case Book Of Sherlock Holmes</li>
<li>His Last Bow</li>
<li>The Hound Of The Baskervilles</li>
<li>The Memoirs Of Sherlock Holmes</li>
</ul>
</li>
<li>Machiavelli, Niccolo (1469-1527)
<ul>
<li>The Prince</li>
</ul>
</li>
<li>Plato (428-347 B.C.)
<ul>
<li>Charmides, Or Temperance</li>
<li>Cratylus</li>
<li>Critias</li>
<li>Crito</li>
<li>Euthydemus</li>
<li>Euthyphro</li>
<li>Gorgias</li>
</ul>
</li>
<li>Poe, Edgar Allan (1809-1849)
<ul>
<li>The Angel Of The Odd&#8211;An Extravaganza</li>
<li>The Balloon-Hoax</li>
<li>Berenice</li>
<li>The Black Cat</li>
<li>The Cask Of Amontillado</li>
</ul>
</li>
<li>Stoker, Bram (1847-1912)
<ul>
<li>Dracula</li>
<li>Dracula&#8217;s Guest</li>
</ul>
</li>
<li>Twain, Mark (1835-1910)
<ul>
<li>The Adventures Of Huckleberry Finn</li>
<li>A Connecticut Yankee In King Arthur&#8217;s Court</li>
<li>Extracts From Adam&#8217;s Diary</li>
<li>A Ghost Story</li>
<li>The Great Revolution In Pitcairn</li>
<li>My Watch: An Instructive Little Tale</li>
<li>A New Crime</li>
<li>Niagara</li>
<li>Political Economy</li>
</ul>
</li>
</ol>
<h3>XSLT</h3>
<p>As alluded to above, the beauty of XML is its ability to be transformed into other plain text formats. XSLT allows me to convert the TEI files into other files for different mediums. The distribution includes only simple HTML, &#8220;pretty&#8221; XHTML, and PDF versions of the texts, but for the XSLT affectionatos in the crowd who may want to see the XSLT files, I have included them here:</p>
<ul>
<li><a href="./../wp-content/uploads/2008/07/tei2htm.xsl">tei2htm.xsl</a> &#8211; used to create plain HTML files complete with metadata</li>
<li><a href="./../wp-content/uploads/2008/07/tei2html.xsl">tei2html.xsl</a> &#8211; used to create XHTML files complete with metadata as well as simple CSS-enabled navigation</li>
<li><a href="./../wp-content/uploads/2008/07/tei2fo.xsl">tei2fo.xsl</a> &#8211; used to create FO files which were fed to FOP in order to create things designed for printing on paper</li>
</ul>
<p>Here&#8217;s a sample TEI file, <a href="./../wp-content/uploads/2008/07/poe-cask-641.xml">Edgar Allen Poe&#8217;s The Cask Of Amontillado</a>.</p>
<h3>Future work</h3>
<p>I believe there is a lot of promise in the marking-up of plain text into XML, specifically works of fiction and non-fictin into TEI. Making available such marked-up texts paves the way for doing textual analysis against them and for enhancing them with personal commentary. It is too bad that the mark-up process, even simple mark-up, is so labor intensive. Maybe I&#8217;ll do more of this sort of thing in my copius spare time.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/07/alex-lite-a-tiny-standards-compliant-and-portable-catalogue-of-electronic-texts/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Indexing MARC records with MARC4J and Lucene</title>
		<link>./../2008/07/indexing-marc-records-with-marc4j-and-lucene/index.html</link>
				<pubDate>Wed, 09 Jul 2008 21:35:36 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[MARC4J]]></category>

		<guid isPermaLink="false">./../index.html?p=27</guid>
				<description><![CDATA[In anticipation of the eXtensible Catalog (XC) project, I wrote my first Java programs a few months ago to index MARC records, and you can download them from here. The first uses MARC4J and Lucene to parse and index MARC records. The second uses Lucene to search the index created from the first program. They [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>In anticipation of the <a href="http://www.extensiblecatalog.info/">eXtensible Catalog (XC)</a> project, I wrote my first Java programs a few months ago to index MARC records, and you can <a href="./../wp-content/uploads/2008/07/indexing-searching-marc.tar.gz">download them from here</a>.</p>
<p>The first uses MARC4J and Lucene to parse and index MARC records. The second uses Lucene to search the index created from the first program. They are very simple programs &#8212; functional and not feature-rich. For the budding Java programmer in libraries, these programs could be used as a part a rudimentary self-paced tutorial. From the distribution&#8217;s README:</p>
<blockquote><p>
This is the README file for two Java programs called Index and Search.</p>
<p>Index and Search are my first (real) Java programs. Using Marc4J, Index<br />
reads a set of MARC records, parses them (for authors, titles, and call<br />
numbers), and feeds the data to Lucene for indexing. To get the program<br />
going you will need to:</p>
<ol>
<li>Get the MARC4J .jar files, and make sure they are in your CLASSPATH.</li>
<li>Get the Lucene .jar files, and make sure they are in your CLASSPATH.</li>
<li>Edit Index.java so the value of InputStream points to a set of MARC records.</li>
<li>Create a directory named index in the same directory as the source code.</li>
<li>Compile the source (javac Index.java).</li>
<li>Run the program (java Index).</li>
</ol>
<p>The program should echo the parsed data to the screen and create an<br />
index in the index directory. It takes me about fifteen minutes to index<br />
700,000 records.</p>
<p>The second program, Search, is designed to query the index created by<br />
the first program. To get it to run you will need to:</p>
<ol>
<li>Get the Lucene .jar files, and make sure they are in your CLASSPATH.</li>
<li>Make sure the index created by Index is located in the same directory as the source code.</li>
<li>Compile the source (javac Search.java).</li>
<li>Run the program (java Search <query> where <query> is a word or phrase).</li>
</ol>
<p>The result should be a list items from the index. Simple.
</p></blockquote>
<p>Enjoy?!</p>
]]></content:encoded>
										</item>
		<item>
		<title>Encoded Archival Description (EAD) files everywhere</title>
		<link>./../2008/07/encoded-archival-description-ead-files-everywhere/index.html</link>
				<comments>./../2008/07/encoded-archival-description-ead-files-everywhere/index.html#comments</comments>
				<pubDate>Wed, 02 Jul 2008 02:24:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Encoded Archival Description (EAD)]]></category>

		<guid isPermaLink="false">./../index.html?p=26</guid>
				<description><![CDATA[I&#8217;m beginning to see Encoded Archival Description (EAD) files everywhere, but maybe it is because I am involved with a project called the Catholic Research Resources Alliance (CRRA). As you may or may not know, EAD files are the &#8220;MODS files&#8221; of the archival community. These XML files provide the means to administratively describe archival [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I&#8217;m beginning to see Encoded Archival Description (EAD) files everywhere, but maybe it is because I am involved with a project called the Catholic Research Resources Alliance (CRRA).</p>
<p>As you may or may not know, <a href="http://www.loc.gov/ead/">EAD files</a> are the &#8220;MODS files&#8221; of the archival community. These XML files provide the means to administratively describe archival collections as well as describe the things in the collections at the container, folder, or item level.</p>
<p><strong>Columbia University and MARC records</strong></p>
<p>During the past few months, I helped edit and shepherd an article for <em>Code4Lib Journal</em> by Terry Catapano, Joanna DiPasquale, and Stuart Marquis called &#8220;<a href="http://journal.code4lib.org/articles/77">Building an archival collections portal</a>&#8220;. The article describes the environment and outlines the process folks at Columbia University use to make sets of their archival collections available on the Web. Their particular process begins with sets of MARC records dumped from their integrated library system. Catapano, DiPasquale, and Marquis then crosswalk the MARC to EAD, feed the EAD to Solr/Lucene, and provide access to the resulting index. Their implementation uses a mixture of Perl, XSLT, PHP, and Javascript. What was most interesting was the way they began the process with MARC records.</p>
<p><strong>Florida State University and tests/tools</strong></p>
<p>Today I read an article by Plato L. Smith II from <em>Information Technology and Libraries</em> (volume 27, number 2, pages 26-30) called &#8220;Preparing locally encoded electronic finding aid inventories for union environments: A Publishing model for Encoded Archival Description&#8221;. [<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.genre=article&amp;rft.atitle=Preparing+locally+encoded+electronic+finding+aid+inventories+for+union+environments%3A+A+Publishing+model+for+Encoded+Archival+Description&amp;rft.title=Information+Technology+and+Libraries&amp;rft.stitle=ITAL&amp;rft.issn=0730-9295&amp;rft.date=2008&amp;rft.volume=27&amp;rft.issue=2&amp;rft.spage=26&amp;rft.epage=30&amp;rft.aulast=Smith&amp;rft.aufirst=Plato&amp;rft.auinit=L&amp;rft.au=Plato+L+Smith"><a href="http://ocoins.info/">COinS</a></span>] Smith describes how the Florida State University Libraries create their EAD files with Note Tab Light templates and then convert them into HTML and PDF documents using XSLT. They provide access to the results through the use of content management system &#8212; DigiTool. What I found most intriguing about this article where the links to test/tools used to enrich their EAD files, namely the <a href="http://www.oclc.org/programs/ourwork/past/ead/reportcard.htm">RLG EAD Report Card</a> and the <a href="http://www.cdlib.org/inside/diglib/guidelines/bpgead/bpgead_app.html#d0e2995">Online Archive of California Best Practices Guidelines, Appendix B</a>. While I haven&#8217;t set it up yet, the former should check EAD files for conformity (beyond validity), and the later will help create DACS-compliant EAD Formal Public Identifiers.</p>
<p><strong>Catholic Research Resources Alliance portal</strong></p>
<p>Both of these articles will help me implement the <a href="http://www.catholicresearch.net/">Catholic Research Resources Alliance (CRRA) portal</a>. From a <a href="http://infomotions.com/musings/crra-workshop/">recent workshop I facilitated</a>:</p>
<blockquote><p>The ultimate goal of the CRRA is to facilitate research in Catholic scholarship. The focus of this goal is directed towards scholars but no one is excluded from using the Alliance&#8217;s resources. To this end, participants in the Alliance are expected to make accessible rare, unique, or infrequently held materials. Alliance members include but are not limited to academic libraries, seminaries, special collections, and archives. Similarly, content might include but is not limited to books, manuscripts, letters, directories, newspapers, pictures, music, videos, etc. To date, some of the Alliance members are Boston College, Catholic University, Georgetown University, Marquette University, Seton Hall University, University of Notre Dame, and University of San Diego.</p></blockquote>
<p>Like the Columbia University implementation, the portal is expected to allow Alliance members to submit MARC records describing individual items. The Catapano, DiPasquale, and Marquis article will help me map my MARC fields to my local index. Like the Florida Sate University implementation, the portal is expected to allow Alliance members to submit EAD files. The Smith article will help me create unique identifiers. For Alliance members who have neither MARC nor EAD files, the portal is expected to allow Alliance members submit their content via a <a href="http://www.archiveshub.ac.uk/eadform2002.html">fill-in-the-blank interface</a> which I am adopting from the good folks at the <a href="http://www.archiveshub.ac.uk/">Archives Hub</a>.</p>
<p>The CRRA portal application is currently based on <a href="http://mylibrary.library.nd.edu/">MyLibrary</a> and an indexer/search engine called <a href="http://www.rectangular.com/kinosearch/">KinoSearch</a>. After submitting them to the portal, EAD files and MARC records are parsed and saved to a MySQL database using the Perl-based MyLibrary API. Various reports are then written against the database, again, using the MyLibrary API. These reports are used to create on-the-fly browsable lists of formats, names, subjects, and CRRA &#8220;themes&#8221;. They are used to create sets of XML files for OAI-PMH harvesting. They are used to feed data to Kinosearch to create an index. (For example, see <a href="./../wp-content/uploads/2008/07/mylibrary2files.pl">mylibrary2files.pl</a> and then <a href="./../wp-content/uploads/2008/07/ead2kinosearch.pl">ead2kinosearch.pl</a>.) Finally, the whole thing is brought together with a single Perl script for searching (via SRU) and browsing.</p>
<p>It is nice to see a growing interest in EAD. I think the archival community has a leg up on it library brethren regarding metadata. They are using XML more and more. Good for them!</p>
<p>Finally, let&#8217;s hear it for the &#8216;Net, free-flowing communication, and open source software. Without these things I would not have been able to accomplish nearly as much as I have regarding the portal. &#8220;Thanks guys and gals!&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/07/encoded-archival-description-ead-files-everywhere/feed/index.html</wfw:commentRss>
		<slash:comments>4</slash:comments>
							</item>
		<item>
		<title>eXtensible Catalog (XC): A very transparent approach</title>
		<link>./../2008/06/extensible-catalog-xc-a-very-transparent-approach/index.html</link>
				<pubDate>Fri, 27 Jun 2008 00:19:25 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[eXtensible Catalog]]></category>

		<guid isPermaLink="false">./../index.html?p=25</guid>
				<description><![CDATA[An article by Jennifer Bowen entitled &#8220;Metadata to support next-generation library resource discovery: Lessons from the eXtensible Catalog, Phase 1&#8221; appeared recently in Information Technology &#38; Libraries, the June 2008 issue. [1] The article outlines next-steps for the XC Project and enumerates a number of goals for their &#8220;&#8216;next-generation&#8217; library catalog&#8221; application/system: provide access to [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>An <a href="http://hdl.handle.net/1802/5757">article by Jennifer Bowen</a> entitled &#8220;Metadata to support next-generation library resource discovery: Lessons from the eXtensible Catalog, Phase 1&#8221; appeared recently in <a href="http://www.lita.org/ala/lita/litapublications/ital/italinformation.cfm">Information Technology &amp; Libraries</a>, the June 2008 issue. [1]</p>
<p>The article outlines next-steps for the <a href="http://extensiblecatalog.info/">XC Project</a> and enumerates a number of goals for their &#8220;&#8216;next-generation&#8217; library catalog&#8221; application/system:</p>
<ol>
<li>provide access to all library resources, digital and non-digital</li>
<li>bring metadata about library resources into a more open Web environment</li>
<li>provide an interface with new Web functionality such as Web 2.0 features and faceted browsing</li>
<li>conduct user research to inform system development</li>
<li>publish the XC code as open-source software</li>
</ol>
<p>Because I am somewhat involved in the XC Project from <a href="http://infomotions.com/musings/xc-2007/">past meetings</a> and as a <a href="http://www.extensiblecatalog.info/?page_id=46">Development Partner</a>, the article did not contain a lot of new news for me, but it did elaborate on a number of points.</p>
<p>Its underlying infrastructure is a good example. Like many &#8220;next-generation&#8221; library catalog applications/systems, it proposes to aggregate content from a wide variety of sources, normalize the data into a central store (the &#8220;hub&#8221;), index the content, and provide access to the central store or index through a number of services. This is how Primo, VUFind, AquaBrowser operate. Many others work in a similar manner; all of these systems have more things in common than differences. Unlike other applications/systems, XC seems to embrace a more transparent and community-driven process.</p>
<p>One of the things that intrigued me most was goal #2. &#8220;XC will reveal library metadata not only through its own separate interface.., but will also allow library metadata to be revealed through other Web applications.&#8221; This definitely the way to go. A big part of librarianship is making data, information, and knowledge widely accessible. Our current systems do this very poorly. XC is moving in the right direction in this regard. Kudos.</p>
<p>Another thing that caught my eye was a requirement for goal #3, &#8220;The XC system will capture metadata generated by users from any one of the system&#8217;s user environments&#8230; and harvest it back into the system&#8217;s metadata services hub for processing.&#8221; This too sounds like a good idea. People are the real sources of information. Let&#8217;s figure out ways to harness the knowledge, expertise, and experiences of our users.</p>
<p>What is really nice about XC is the approach they are taking. It is not all about their software and their system. Instead, it is about building on the good work of others and providing direct access to their improvements. &#8220;Projects such as the eXtensible Catalog can serve as a vehicle for moving forward by providing an opportunity for libraries to experiment and to then take informed action to move the library community toward a next generation of resource discovery systems.&#8221;</p>
<p>I wish more librarians would be thinking about their software development processes in the manner of XC.</p>
<p>[1] The article is immediately available online at <a href="http://hdl.handle.net/1802/5757">http://hdl.handle.net/1802/5757</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Top Tech Trends for ALA (Summer &#8217;08)</title>
		<link>./../2008/06/top-tech-trends-for-ala-summer-08/index.html</link>
				<comments>./../2008/06/top-tech-trends-for-ala-summer-08/index.html#comments</comments>
				<pubDate>Thu, 19 Jun 2008 03:59:07 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Librarianship]]></category>
		<category><![CDATA[ALA]]></category>
		<category><![CDATA[LITA]]></category>
		<category><![CDATA[Top Technology Trends]]></category>

		<guid isPermaLink="false">./../index.html?p=24</guid>
				<description><![CDATA[Here is a non-exhaustive list of Top Technology Trends for the American Library Association Annual Meeting (Summer, 2008). These Trends represent general directions regarding computing in libraries &#8212; short-term future directions where, from my perspective, things are or could be going. They are listed in no priority order. &#8220;Bling&#8221; in your website &#8211; I hate [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>Here is a non-exhaustive list of Top Technology Trends for the American Library Association Annual Meeting (Summer, 2008). These Trends represent general directions regarding computing in libraries &#8212; short-term future directions where, from my perspective, things are or could be going. They are listed in no priority order.</p>
<ul>
<li><strong>&#8220;Bling&#8221; in your website</strong> &#8211; I hate to admit it, but it seems increasingly necessary to make sure your institution&#8217;s website be aesthetically appealing. This might seem obvious to you, but considering the fact we all think &#8220;content is king&#8221; we might have to reconsider. Whether we like it or not, people do judge a book by its cover, and people do judge other&#8217;s on their appearance. Websites aren&#8217;t very much different. While librarians are great at organizing information bibliographically, we stink when it comes to organizing things visually. Think graphic design. Break down and hire a graphic designer, and temper their output with usability tests. We all have our various strengths and weaknesses. Graphic designers have something to offer that, in general, librarians lack.</li>
<li><strong>Data sets</strong> &#8211; Increasingly it is not enough for the scholar or researcher to evaluate old texts or do experiments and then write an article accordingly. Instead it is becoming increasingly important to distribute the data and information the scholar or researcher used to come to their conclusions. This data and information needs to be just as accessible as the resulting article. How will this access be sustained? How will it be described and made available? To what degree will it be important to preserve this data and/or migrate it forward in time? These sorts of questions require some thought. Libraries have experience in these regards. Get your foot in the door, and help the authors address these issues.</li>
<li><strong>Institutional repositories</strong> &#8211; I don&#8217;t hear as much noise about institutional repositories as I used to hear. I think their lack of popularity is directly related to the problems they are designed to solve, namely, long-term access. Don&#8217;t get me wrong, long-term access is definitely a good thing, but that is a library value. In order to be compelling, institutional repositories need to solve the problems of depositors, not the librarians. What do authors get by putting their content in an institutional repository that they don&#8217;t get elsewhere? If they supported version control, collaboration, commenting, tagging, better syndication and possibilities for content reuse &#8212; in other words, services against the content &#8212; then institutional repositories might prove to be more popular.</li>
<li><strong>Mobile devices</strong> &#8211; The iPhone represents a trend in mobile computing. It is both cool and &#8220;kewl&#8221; for three reasons: 1) its physical interface complete with pinch and drag touch screen options make it easy to use; you don&#8217;t need to learn how to write in its language, 2) its always-on and endlessly-accessible connectivity to the Internet make it trivial to keep in touch, read mail, and &#8220;surf the Web&#8221;, 3) its software interface is implemented in the form of full-blown applications, not dummied down text interfaces with lot&#8217;s of scrolling lists. Apple Computer got it right. Other companies will follow suit. Sooner or later we will all by walking around like people from the Starship Enterprise. &#8220;Beam me up, Scotty!&#8221; Consider integrating into your services the ability to text the content of library research to a telephone.</li>
<li><strong>Net Neutrality</strong> &#8211; The Internet, by design, is intended to be neutral, but increasingly Internet Service Providers (ISP) are twisting the term &#8220;neutrality&#8221; to mean, &#8220;If you pay a premium, then we won&#8217;t throttle your network connection.&#8221; Things like BitTorrent is a good example. This technique exploits the Internet making file transfers more efficient, but ISPs want to inhibit it and/or charge more for its use. Yet again, the values and morals of a larger, more established community, in this case capitalism, are influencing the Internet. Similar value changes manifested themselves when email became commonplace. Other values, such as not wasting Internet bandwidth by transferring unnecessarily large files over the &#8216;Net, have changed as both the technology and the numbers of people using the Internet have changed. Take a stand for &#8220;Net Neutrality&#8221;.</li>
<li><strong>&#8220;Next generation&#8221; library catalogs</strong> &#8211; The profession has finally figured it out. Our integrated library systems don&#8217;t solve the problems of our users. Consequently, the idea of the &#8220;next generation&#8221; library catalog is all the rage, but don&#8217;t get too caught up in features such as Did You Mean?, faceted browse, cover art, or the ability of include a wide variety of content into a single interface. Such things are really characteristics and functions of underlying index. They are all things designed to make it easier to accomplish the problem of find, but this is not the problem to be solved. Google make it easy to find. Really easy. We are unable to compete in that arena. Everybody can find, and we are still &#8220;drinking&#8221; from the proverbial &#8220;fire hose&#8221;. Instead, think about ways to enable the patron to use the content they find. Put the content into context. Like the institutional repositories, above, and the open access content, below, figure out way to make the content useful. Empower the patron. Enable them to apply actions against the content, not just the index. Such things are exemplified by action verbs. Tag. Share. Review. Add. Read. Save. Delete. Annotate. Index. Syndicate. Cite. Compare forward and backward in time. Compare and contrast with other documents. Transform into other formats. Distill. Purchase. Sell. Recommend. Rate. Create flip book. Create tag cloud. Find email address of author. Discuss with colleagues. Etc. The types of services implementable by &#8220;next generation&#8221; library catalogs is as long as the list of things people do with the content they find in libraries. This is one of the greatest opportunities facing our profession.</li>
<li><strong>Open Access Publishing</strong> &#8211; Like its sister, institutional repositories, I don&#8217;t hear as much about open access publishing as I used to hear. We all know it is a &#8220;good thing&#8221; but like so many things that are &#8220;free&#8221; its value is only calculated by the amount of money paid for it. &#8220;The journals from this publisher are very expensive. We had better promote them and make them readily visible on our website in order for us to get our money&#8217;s worth.&#8221; In a library setting, the value of material is not based on dollars but rather on things such as but limited to usefulness, applicability, keen insight, scholarship, and timeliness. Open access publishing content manifests these characteristics as much a traditionally published materials. Open access content can be made even more valuable if its open nature were exploited. Like the content found in institutional repositories, and like the functions of &#8220;next generation&#8221; library catalogs outlined above, the ability to provide services against open access content are almost limitless. More than any other content, open access content combined with content from things like the Open Content Alliance and Project Gutenburg can be freely collected, indexed, searched, and then put into the context of the patron. Create bibliography. Trace citation. Find similar words and phrases between articles and books. Take an active role in making open access publishing more of a reality. Don&#8217;t wait for the other guy. You are a part of the solution.</li>
<li><strong>Social networking</strong> &#8211; Social networking is beyond a trend. It is all but a fact of the Internet. Facebook, MySpace, and LinkedIn as well as Wikipedia, YouTube, Flickr, and Delicious are probably the archetypical social networking sites. They have very little content of their own. Instead, they provide a platform for others to provide content &#8212; and then services against that content. (&#8220;Does anybody see a trend in these trends, yet?&#8221;) What these social networking sites are exploiting is a new form of the numbers game. Given a wide enough audience it is possible to find and create sets of others interested in just about any topic under the sun. These people will be passionate about their particular topic. They will be sincere, adamant, and arduous about making sure the content is up-date, accurate, and thoroughly described and accessible. Put your content into these sorts of platforms in the same way the Library of Congress as well as the Smithsonian Institution has put some of their content into Flickr. A rising tide floats all boats. Put your boat into the water. Participate in this numbers game. It is not really about people using your library, but rather about people using the content you have made available.</li>
<li><strong>Web Services-based APIs</strong> &#8211; xISBN and thingISBN. The Open Library API. The DLF ILS-DI Technical Recommendation. SRU and OpenSearch. OAI-PMH and now OAI-ORE. RSS and ATOM. All of these things are computing techniques called Web Services Application Programmer Interfaces (API). They are computer-to-computer interfaces akin to things like Z39.50 of Library Land. They enable computers to unambiguously share data between themselves. A number of years ago implementing Web Services meant learning things like SOAP, WSDL, and UDDL. These things were (are) robust, well-documented, and full-featured. They are also non-trivial to learn. (OCLC&#8217;s Terminology Service embedded within Internet Explorer uses these techniques.) After that REST become more popular. Simpler, and exploits the features of HTTP. The idea was (is) send a URL to a remote computer. Get a response back as XML. Transform the response and put it to use &#8212; usually display things on a Web page. This is the way most of the services work (&#8220;There&#8217;s that word again!&#8221;) The latest paradigm and increasingly popular technique uses a data structure called JSON as opposed to XML as the form of the server&#8217;s response because JSON is easier to process with Javascript. This is very much akin to AJAX. Despite the subtle differences between each of these Web Services computing techniques, there is a fundamental commonality. Make a request. Wait. Get a response. Do something with the content &#8212; make it useful. Moreover, the returned content is devoid of display characteristics. It is just data. It is your responsibility to turn it into information. Learn to: 1) make your content accessible via Web Services, and 2) learn how to aggregate content through Web Services in order to enhance your patron&#8217;s experience.</li>
</ul>
<p>Wow! Where did all of that come from?</p>
<p>(This posting is also available at on the <a href="http://tinyurl.com/3rtddn">LITA Blog</a>. &#8220;Lot&#8217;s of copies keep stuff safe.&#8221;)</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/06/top-tech-trends-for-ala-summer-08/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>Google Onebox module to search LDAP</title>
		<link>./../2008/06/google-onebox-module-to-search-ldap/index.html</link>
				<pubDate>Mon, 16 Jun 2008 22:13:09 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Google Onebox]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">./../index.html?p=23</guid>
				<description><![CDATA[This posting describes a Google Search Appliance Onebox module for searching an LDAP directory. At my work I help administrate a Google Search Appliance. It is used index the university&#8217;s website. The Appliance includes a functionality &#8212; called Onebox &#8212; allowing you to search multiple indexes and combining the results into a single Web page. [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This posting describes a Google Search Appliance Onebox module for searching an LDAP directory.</p>
<p>At my work I help administrate a Google Search Appliance. It is used index the university&#8217;s website. The Appliance includes a functionality &#8212; called Onebox &#8212; allowing you to search multiple indexes and combining the results into a single Web page. It is sort of like libraray metasearch.</p>
<p>In an effort to make it easier for people to find&#8230; people, we created a Onebox module, and you can <a href="./../wp-content/uploads/2008/06/people-2008-06-16.tar.gz">download the distribution</a> if you so desire. It is written in Perl.</p>
<p>In regards to libraries and librarianship, the Onebox technique is something the techno-weenies in our profession ought to consider. Capture the user&#8217;s query. Do intelligent processing on it by enhancing it, sending it to the appropriate index, making suggestions, etc., and finally returning the results. In other words, put some smarts into the search interface. You don&#8217;t need a Google Search Appliance to do this, just control over your own hardware and software.</p>
<p>From the distribution&#8217;s README file:</p>
<blockquote><p>This distribution contains a number of files implementing a Google Onebox &#8220;widget&#8221;. It looks people&#8217;s names up in an LDAP directory.</p>
<p>The distribution contains the following files:</p>
<ul type="circle">
<li>people.cgi &#8211; the reason de existance</li>
<li>people.pl &#8211; command-line version of people.cgi</li>
<li>people.png &#8211; an image of a person</li>
<li>people.xsl &#8211; XSL to convert people.cgi output to HTML</li>
<li>README &#8211; this file</li>
<li>LICENSE &#8211; the GNU Public License</li>
</ul>
<p>The &#8220;widet&#8221; (people.cgi) is almost trivial. Read the value of the query paramenter sent as a part of the GET request. Open up a connection to the LDAP server. Query the server. Loop through the results keeping only a number of them as defined by the constant UPPER. Mark-up the results as Google XML. Return the XML to the HTTP client. It is then the client&#8217;s resposibility to transform the XML into an HTML (table) snippet for display. (That is what people.xsl is for.)</p>
<p>This widget ought to work in many environments. All you really need to do is edit the values of the constants at the beginning of people.cgi.</p>
<p>This code is distributed under the GNU Public License.</p></blockquote>
<p>Enjoy.</p>
]]></content:encoded>
										</item>
		<item>
		<title>DLF ILS Discovery Internet Task Group Technical Recommendation</title>
		<link>./../2008/06/dlf-ils-discovery-internet-task-group-ils-di-technical-recommendation/index.html</link>
				<pubDate>Thu, 12 Jun 2008 04:50:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA["next generation" library catalogs]]></category>
		<category><![CDATA[Digital Library Federation (DLF)]]></category>

		<guid isPermaLink="false">./../index.html?p=22</guid>
				<description><![CDATA[I read the great interest the DLF ILS Discovery Internet Task Group (ILS-DI) Technical Recommendation [1], and I definitely think it is a step in the right direction for making the content of library systems more accessible. In regards to the integrated systems of libraries, the primary purpose of the Recommendations is to: improve discovery [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I read the great interest the <a href="http://tinyurl.com/3lqxx2">DLF ILS Discovery Internet Task Group (ILS-DI) Technical Recommendation</a> [1], and I definitely think it is a step in the right direction for making the content of library systems more accessible.</p>
<p>In regards to the integrated systems of libraries, the primary purpose of the Recommendations is to:</p>
<ul>
<li>improve discovery and use of library resources</li>
<li>articulate a clear set of expectations for developers</li>
<li>make recommendations applicable to existing and future systems</li>
<li>ensure the recommendations are feasible</li>
<li>support interoperation and cooperation</li>
<li>be responsive to the user and developer community</li>
</ul>
<p>To this end the Recommendations list a set of abstract functions integrated library systems &#8220;should&#8221; implement, and it enumerate a number of concrete bindings that can be used to implement these functions. Each of the twenty-five (25) functions can be grouped into one of four overall categories:</p>
<ol>
<li>data aggregation &#8211; harvest content en masse from the underlying system</li>
<li>search &#8211; supply a query and get back a list of matching records</li>
<li>patron services &#8211; support things like renew, hold, recall, etc.</li>
<li>OPAC integration &#8211; provide ways to link to outside services</li>
</ol>
<p>The Recommendations also group the functions into levels of interoperability:</p>
<ol>
<li>Level 1: basic interface &#8211; simple harvest, search, and display record</li>
<li>Level 2: supplemental &#8211; Level 1 plus more robust harvest and search</li>
<li>Level 3: alternative &#8211; Level 2 plus patron services</li>
<li>Level 4: robust &#8211; Level 3 plus reserves functions and support of an explain function</li>
</ol>
<p>After describing the things outlined above in greater detail, the Recommendations get down to business, list each function, its parameters, why it is recommended, and suggests one or more &#8220;bindings&#8221; &#8212; possible ways the function can be implemented. Compared to most recommendations in my experience, this one is very easy to read, and it is definitely approachable by anybody who calls themselves a librarian. A few examples illustrate the point. </p>
<p>The Recommendations suggest a number of harvest functions. These functions allow a harvesting system to specify a number of date ranges and get back a list records that have been created or edited within those ranges. These records may be bibliographic, holdings, or authority in nature. These records may be in MARC format, but is strongly suggested they be in some flavor of XML. The search functions allow a remote application to query the system and get back a list of matching records. Like the harvest functions, records may be returned in MARC but XML is prefered. Patron functions support finding patrons, listing patron attributes, allowing patrons to place holds, recalls, or renewals on items, etc.</p>
<p>There was one thing I especially liked about the Recommendations. Specifically, whenever possible, the bindings were based on existing protocols and &#8220;standards&#8221;. For example, they advocated the use of OAI-PMH, SRU, OpenSearch, NCIP, ISO Holdings, SIP2, MODS, MADS, and MARCXML.</p>
<p>From my reading, there were only two slightly off kilter things regarding the Recommendations. First, it advocated the possible use of an additional namespace to fill in some blanks existing XML vocabularies are lacking. I suppose this was necessary in order to glue the whole thing together. Second, it took me a while to get my head around the functions supporting links to external services &#8212; the OPAC interaction functions. These functions are expected to return Web pages that is static, writable, or transformative in nature. I&#8217;ll have to think about these some more.</p>
<p>It is hoped vendors of integrated library systems support these functions natively or they are supported through some sort of add-on system. The <a href="http://www.extensiblecatalog.info/">eXstensible Catalog</a> (XC) is a good example here. The use of Ex Libris&#8217;s X-Server interface is another. At the very least a number of vendors have said they would make efforts to implement Level 1 functionality, and this agreement been called the &#8220;Berkley Accord&#8221; and includes: AquaBrowser, BiblioCommonsCalifornia Digital Library, Ex Libris, LibLime, OCLC, Polaris Library Systems, SirsiDynix, Talis, and VTLS. </p>
<p>Within my own sphere of hack-dom, I think I could enhance my <a href="http://infomotions.com/alex/">Alex Catalogue of Electronic Texts</a> to support these Recommendations. Create a (<a href="http://mylibrary.library.nd.edu/">MyLibrary</a>) database. Populate it with the metadata and full-text data of electronic books, open access journal articles, Open Content Alliance materials, records from Wikipedia, and photographic images of my own creation. Write reports in the form of browsable lists or feeds expected to be fed to an indexer. Add an OAI-PMH interface. Make sure the indexer is accessible via SRU. Implement a &#8220;my&#8221; page for users and enhance it to support the Recommendations. Ironically, much of this work has already been done.</p>
<p>In summary, and as I mentioned previously, these Recommendations are a step in the right direction. The implementation of a &#8220;next generation&#8221; library catalog is not about re-inventing a better wheel and trying to corner the market with superior or enhanced functionality. Instead it is about providing a platform for doing the work libraries do. For the most part, libraries and their functions have more things in common than they have differences. These Recommendations articulate a lot of these commonalities. Implement them, and kudos to Team DLF ILS-DI.</p>
<p>[1] PDF version of Recommendation &#8211; <a href="http://tinyurl.com/3lqxx2">http://tinyurl.com/3lqxx2</a></p>
]]></content:encoded>
										</item>
		<item>
		<title>HyperNote Pro: a text annotating HyperCard stack</title>
		<link>./../2008/06/hypernote-pro-a-text-annotating-stack/index.html</link>
				<pubDate>Sun, 08 Jun 2008 02:53:48 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[HyperCard]]></category>
		<category><![CDATA[hypertext]]></category>

		<guid isPermaLink="false">./../index.html?p=20</guid>
				<description><![CDATA[In 1992 I wrote a HyperCard stack called HyperNote Pro. HyperNote allowed you to annotate plain text files, and it really was a hypertext system. Import a plain text file. Click a word to see a note. Option-click a word to create a note. Shift-click a word to create an image note. Option-shift-click a word [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>In 1992 I wrote a HyperCard stack called HyperNote Pro.</p>
<p><a href='./../wp-content/uploads/2008/06/hypernote.gif'><img src="./../wp-content/uploads/2008/06/hypernote.gif" alt="HyperNote screenshot" title="hypernote" width="150" height="105" hspace='5' vspace='5' align="right" class="size-thumbnail wp-image-21" /></a>HyperNote allowed you to annotate plain text files, and it really was a hypertext system. Import a plain text file. Click a word to see a note. Option-click a word to create a note. Shift-click a word to create an image note. Option-shift-click a word to link to another document. Use the HyperNote > New HypernNote menu option to duplicate the stack and create a new HyperNote document. </p>
<p>HyperCard is all but dead, and need an older Macintosh computer to use the application. It was pretty cool. You can <a href="./../wp-content/uploads/2008/06/HyperNote.hqx">download it from my archives</a>. Here is the text from the self-extracting archive:</p>
<blockquote><p>HyperNote Pro: a text annotating stack by Eric Lease Morgan</p>
<p>HyperNote Pro is a HyperCard stack used to annotate text. It can also create true hypertext links between itself and other documents or applications.</p>
<p>Simply create a new HyperNote Pro stack, import a text file, and add pop–up notes, pictures, and/or hypertext links to the text. The resulting stack can be distributed to anybody with HyperCard 2.0 and they will be able to read or edit your notes and pictures. They will be able to link to other documents if the documents are available.</p>
<p>Here are some uses for HyperNote Pro. Context sensitive help can be created for applications. News or journal articles could be imported and your opinions added. Business reports could be enhances with graphs. Resumes could go into greater detail without overwhelming the reader. Students could turn in papers and teachers could comment on the text.</p>
<p>Another neat thing about HyperNote Pro is it self–replicating. By selecting “New HN…” and choosing a text–file, HyperNote Pro creates a copy of itself except with the text of the chosen file.</p>
<p>HyperNote Pro is free. It requires HyperCard 2.0 to run.</p>
<p>Features:</p>
<ul>
<li>any size text–file can be imported</li>
<li>format the text with any available font</li>
<li>add/edit pop–up notes and/or pictures to imported text</li>
<li>add true hypertext links to any document or application</li>
<li>includes a “super find” feature</li>
<li>self–replicating</li>
<li>System 7 compatible</li>
</ul>
<pre>        \ /
       - * -      
     \ // \       Eric Lease Morgan, Systems Librarian 
    - * -|\ /     North Carolina State University
     / \ - * -    Box 7111, Room 2111
      |  |/ \     Raleigh, NC 29695-7111
      \ /| |      (919) 515-6182
     - * - |
      / \| /      
       | |/       
    ===========   America Online: EricMorgan
     \=======/    Compu$erve: 71020,2026
      \=====/     Internet: eric_morgan@ncsu.edu
       =====      The Well: emorgan</pre>
</blockquote>
<p>P.S. Maybe I will be able to upload this stack to <a href="http://www.tilestack.com/">TileStack</a> as seen on <a href="http://developers.slashdot.org/article.pl?sid=08/06/07/196242">Slashdot</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Steve Cisler</title>
		<link>./../2008/06/steve-cisler/index.html</link>
				<comments>./../2008/06/steve-cisler/index.html#comments</comments>
				<pubDate>Fri, 06 Jun 2008 05:01:19 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Tributes]]></category>
		<category><![CDATA[Steve Cisler]]></category>

		<guid isPermaLink="false">./../index.html?p=19</guid>
				<description><![CDATA[This is a tribute to Steve Cisler, community builder and librarian. Late last week I learned from Paul Jones&#8217;s blog that Steve Cisler had died. He was a mentor to me, and I&#8217;d like to tell a few stories describing the ways he assisted me in my career. I met Steve in 1989 or so [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>This is a tribute to Steve Cisler, community builder and librarian.</p>
<p><a href="http://infomotions.com/musings/ties-that-bind-95/"><img src="http://infomotions.com/musings/ties-that-bind-95/cisler.gif" alt="Steve Cisler" align="right"></a>Late last week <a href="http://ibiblio.org/pjones/wordpress/?p=2503">I learned from Paul Jones&#8217;s blog</a> that Steve Cisler had died. He was a mentor to me, and I&#8217;d like to tell a few stories describing the ways he assisted me in my career.</p>
<p>I met Steve in 1989 or so after I applied for an Apple Library of Tomorrow (ALOT) grant. The application was simple. &#8220;Send us a letter describing what you would do with a computer if you had one.&#8221; Being a circuit-rider medical librarian at the Catawba-Wateree Area Health Education Center (AHEC) in rural Lancaster, South Carolina, I outlined how I would travel from hospital to hospital facilitating searches against MEDLINE, sending requests for specific articles via &#8216;fax back to my home base, and having the articles &#8216;faxed back to the hospital the same day. Through this process I proposed to reduce my service&#8217;s turn-around time from three days to a few hours.</p>
<p>Those were the best two pages of text I ever wrote in my whole professional career because Apple Computer (Steve Cisler) sent me all the hardware I requested &#8212; an Apple Macintosh portable computer and printer. He then sent me more hardware and more software. It kept coming. More hardware. More software. At this same time I worked with my boss (Martha Groblewski) to get a grant from the National Library of Medicine. This grant piggy-backed on the ALOT grant, and I proceeded to write an expert system in HyperCard. It walked the user through a reference interview, constructed a MEDLINE search, dialed up PubMED, executed the search, downloaded the results, displayed them to the user, allowed the user to make selections, and finally turned-around and requested the articles for delivery via DOCLINE. I called it AskEric, about four years before the ERIC Clearinghouse used the same name for their own expert system. In my humble opinion, AskEric was very impressive, and believe it or not, the expert part of the system still works (as long as you have the proper hardware). It was also during this time when I wrote my first two library catalog applications. The first one, QuickCat, read the output of a catalog card printing program called UltraCard. Taking a clue from OCLC&#8217;s (Fred Kilgour&#8217;s) 4,2,2,1 indexing technique, it parsed the card data creating author, title, subject, and keyword indexes based on a limited number of initial characters from each word. It supported simple field searching and Boolean logic. It even supported rudimentary circulation &#8212; search results of items that had been checked-out were displayed a different color than the balance of the display. QuickCat earned me the 1991 Meckler Computers In Libraries Software Award. My second catalog application, QuickCat Mac, read MARC records and exploited HyperCard&#8217;s free-text searching functionality. Thanks goes to Walt Crawford who taught me about MARC through his book, MARC For Library Use. Thanks goes to Steve for encouraging the creativity.</p>
<p>Steve then came to visit. He wanted to see my operation and eat barbecue. During his visit, he brought a long a video card, and I had <a href="./../wp-content/uploads/2008/06/eric.gif">my first digital image</a> taken. The walk to the restaurant where we ate his barbecue was hot and humid but he insisted on going. &#8220;When in South Carolina you eat barbecue&#8221;, he said. He was right.</p>
<p>It was time for the annual ALOT conference, and Steve flew me out to Apple Computer&#8217;s corporate headquarters. There I met other ALOT grantees including Jean Armor Polly (who coined the phrase &#8220;surfing the Internet&#8221;), Craig Summerhill who was doing some very interesting work indexing content using BRS, folks from OCLC who were scanning tables-of-contents and trying to do OCR against them, and people from the Smithsonian Institution who were experimenting with a new image file format called JPEG.</p>
<p>I outgrew the AHEC, and with the help of a letter of reference from Steve I got a systems librarian job at the North Carolina State University Libraries. My boss, John Ulmschneider, put me to work on a document delivery project jointly funded by the National Agriculture Library and an ALOT grant. &#8220;One of the reasons I hired you&#8221;, John said, &#8220;was because of your experience with a previous ALOT grant.&#8221; Our application, code named &#8220;The Scan Plan&#8221;, was a direct competitor to the fledgling application called Ariel. Our application culminated in an article called &#8220;Digitized Document Transmission Using HyperCard&#8221;, ironically <a href="http://eric.ed.gov:80/ERICWebPortal/custom/portlets/recordDetails/detailmini.jsp?_nfpb=true&amp;_&amp;ERICExtSearch_SearchValue_0=ED355949&amp;ERICExtSearch_SearchType_0=no&amp;accno=ED355949">available as a scanned image</a> from the ERIC Clearinghouse (or this <a href="./../wp-content/uploads/2008/06/digitized-document-transmission.pdf">cached version</a>). That year, during ALA, I remember walking through the exhibits. I met up with John and one of his peers, Bil Stahl (University of North Carolina &#8211; Charlotte). As we were talking Charles Bailey (University of Houston) of PACS Review fame joined us. Steve then walked up. Wow! I felt like I was really a part of the in crowd. They didn&#8217;t all know each other, but they knew me. Most of the people whose opinions I respected the most at that particular time were all gathered in one place.</p>
<p>By this time the &#8220;Web&#8221; was starting to get hot. Steve contacted me and asked, &#8220;Would you please write a book on the topic of Macintosh-based Web servers?&#8221; Less than one year, one portable computer, and one QuickTake camera later I had written <a href="http://infomotions.com/musings/tricks/manuscript/">Teaching a New Dog Old Tricks: A Macintosh-Based World Wide Web Starter Kit Featuring MacHTTP and Other Tools</a>. This earned me two more trips. The first was to <a href="http://infomotions.com/musings/webedge/">WebEdge</a>, the first Macintosh WWW Developer&#8217;s Conference, where I won a hackfest award for my webcam application called &#8220;Save 25¢ or &#8216;Is Eric In&#8217;?&#8221; The second was back to Apple headquarters for the <a href="http://infomotions.com/musings/ties-that-bind-95/">Ties That Bind</a> conference where I learned about AppleSearch which (eventually) morphed into the search functionality of Mac OS X, sort of. I remember the Apple Computer software engineers approaching the Apple Computer Library staff and asking, &#8220;Librarians, you have content, right? May we have some to index?&#8221;</p>
<p><a href="http://infomotions.com/musings/ossnlibraries-workshop/"><img src="./../wp-content/uploads/2008/06/motif.gif" alt="motif" align="right"></a>To me it was the Ties That Bind conference that optimized the Steve Cisler I knew. He described there his passion for community. For sharing. For making content (and software) freely available. We discussed things like &#8220;copywrite&#8221; as opposed to copyright. It was during this conference he pushed me into talking with a couple of Apple Computer lawyers and convince them to allow the Tricks book to be freely published. It was during this conference he described how we are all a part of a mosaic. Each of us are a dot. Individually we have our own significance, but put together we can create an even more significant picture. He used an acrylic painting he recently found to literally illustrate the point, all puns intended. Since then I have used the mosaic as a part my <a href="http://infomotions.com/musings/ossnlibraries-workshop/">open source software in libraries handout</a>. I took the things Steve said to heart. Because of Steve Cisler I have been practicing open access publishing and open source software distribution for longer than the phrases have been coined.</p>
<p>A couple more years past and Apple Computer shut down their library. Steve lost his job, and I sort of lost track of Steve. I believe he did a lot of traveling, and the one time I did see him he was using a Windows computer. He didn&#8217;t like it, but he didn&#8217;t seem to like Apple either. I tried to thank him quite a number of times for the things he had done for me and my career. He shrugged off my praise and more or less said, &#8220;Pass it forward.&#8221; He then went &#8220;off the &#8216;Net&#8221; and did more traveling. (Maybe I got some of my traveling bug from Steve.) I believe I wrote him a letter or two. A few more years past, and like I mentioned above, I learned he had died. Ironically, the next day I was off to Santa Clara (California) to give a <a href="http://infomotions.com/musings/xml-in-libraries/">workshop on XML</a>. I believe Steve lived in Santa Clara. I thought of him as I walked around downtown.</p>
<p>Tears are in my eyes and my heart is in my stomach when I say, &#8220;Thank you, Steve. You gave me more than I ever gave in return.&#8221; Every once in a while younger people than I come to visit and ask questions. I am more than happy to share what I know. &#8220;Steve, I am doing my best to pass it forward.&#8221;</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/06/steve-cisler/feed/index.html</wfw:commentRss>
		<slash:comments>3</slash:comments>
							</item>
		<item>
		<title>Code4Lib Journal Perl module (version .003)</title>
		<link>./../2008/05/code4lib-journal-perl-module-version-003/index.html</link>
				<pubDate>Wed, 28 May 2008 18:36:21 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Code4Lib]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://infomotions.com/mini-musings/?p=17</guid>
				<description><![CDATA[I hacked together a Code4Lib Journal Perl module providing read-only access to the Journal&#8217;s underlying WordPress (MySQL) database. You can download the distribution, and the following is from the distribution&#8217;s README file: This is the README file for a Perl module called C4LJ &#8212; Code4Lib Journal Code4Lib Journal is the refereed serial of the Code4Lib [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I hacked together a Code4Lib Journal Perl module providing read-only access to the Journal&#8217;s underlying WordPress (MySQL) database. You can <a href="./../wp-content/uploads/2008/05/c4lj-0003tar.gz">download the distribution</a>, and the following is from the distribution&#8217;s README file:</p>
<blockquote><p>This is the README file for a Perl module called C4LJ &#8212; Code4Lib Journal</p>
<p><a href="http://journal.code4lib.org/">Code4Lib Journal</a> is the refereed serial of the Code4Lib community. [1] The community desires to make the Journal&#8217;s content as widely accessible as possible. To that end, this Perl module is a read-only API against the Journal&#8217;s underlying WordPress database. Its primary purpose is to generate XML files that can be uploaded to the Directory of Open Access Journals and consequently made available through their OAI interface. [2]</p>
<p>Installation</p>
<p>To install the module you first need to have access to a WordPress (MySQL) database styled after the Journal. There is sample data in the distribution&#8217;s etc directory.</p>
<p>Next, you need to edit lib/C4LJ/Config.pm. Specifically, you will need to change the values of:</p>
<p>* $DATA_SOURCE &#8211; the DSN of your database, and you will probably need to only edit the value of the database name</p>
<p>* $USERNAME &#8211; the name of a account allowed to read the database</p>
<p>* $PASSWORD &#8211; the password of $USERNAME</p>
<p>Finally, exploit the normal Perl installation procedure: make; make test; make install.</p>
<p>Usage</p>
<p>To use the module, you will want to use C4LJ::Articles->get_articles. Call this method. Get back a list of article objects, and process each one. Something like this:</p>
<pre>  use C4LJ::Article;
  foreach ( C4LJ::Article->get_articles ) {
    print '        ID: ' . $_->id       . "\n";
    print '     Title: ' . $_->title    . "\n";
    print '       URL: ' . $_->url      . "\n";
    print '  Abstract: ' . $_->abstract . "\n";
    print '    Author: ' . $_->author   . "\n";
    print '      Date: ' . $_->date     . "\n";
    print '     Issue: ' . $_->issue    . "\n";
    print "\n";
  }</pre>
<p>The bin directory contains three sample applications:</p>
<p>1. dump-metadata.pl &#8211; the code above, basically</p>
<p>2. c4lj2doaj.pl &#8211; given an issue number, output XML suitable for DOAJ</p>
<p>3. c4lj2doaj.cgi &#8211; the same as c4lj2doaj.pl but with a Web interface</p>
<p>See the modules&#8217; PODs for more detail.</p>
<p>License</p>
<p>This module is distributed under the GNU General Public License.</p>
<p>Notes</p>
<p>[1] Code4Lib Journal &#8211; http://journal.code4lib.org/<br />
[2] DOAJ OAI information &#8211; http://www.doaj.org/doaj?func=loadTempl&#038;templ=070509
</p></blockquote>
]]></content:encoded>
										</item>
		<item>
		<title>Open Library, the movie!</title>
		<link>./../2008/05/open-library-the-movie/index.html</link>
				<pubDate>Tue, 27 May 2008 02:29:54 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Travelogues]]></category>
		<category><![CDATA[Internet Archive]]></category>
		<category><![CDATA[Open Library]]></category>

		<guid isPermaLink="false">http://infomotions.com/mini-musings/?p=15</guid>
				<description><![CDATA[For a good time, I created a movie capturing some of the things I saw while attending the Open Library Developer&#8217;s Meeting a few months ago. Introducing, Open Library, the movie!]]></description>
								<content:encoded><![CDATA[<p>For a good time, I created a movie capturing some of the things I saw while attending the <a href="http://infomotions.com/musings/open-library/">Open Library Developer&#8217;s Meeting</a> a few months ago. Introducing, Open Library, the movie!</p>
<p><object width="212" height="187"><param name="movie" value="http://www.youtube.com/v/mT2UFcG8Fso&#038;hl=en&#038;rel=0&#038;color1=0x2b405b&#038;color2=0x6b8ab6&#038;border=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/mT2UFcG8Fso&#038;hl=en&#038;rel=0&#038;color1=0x2b405b&#038;color2=0x6b8ab6&#038;border=1" type="application/x-shockwave-flash" wmode="transparent" width="212" height="187"></embed></object></p>
]]></content:encoded>
										</item>
		<item>
		<title>get-mbooks.pl</title>
		<link>./../2008/05/get-mbookspl/index.html</link>
				<comments>./../2008/05/get-mbookspl/index.html#comments</comments>
				<pubDate>Tue, 27 May 2008 01:50:33 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Google Books]]></category>
		<category><![CDATA[OAI-PMH]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[University of Michigan]]></category>

		<guid isPermaLink="false">http://infomotions.com/mini-musings/?p=13</guid>
				<description><![CDATA[I few months ago I wrote a program called get-mbooks.pl, and it is was used to harvest MARC data from the University of Michigan&#8217;s OAI repository of public domain Google Books. You can download the program here, and what follows is the distribution&#8217;s README file: This is the README file for script called get-mbooks.pl This [&#8230;]]]></description>
								<content:encoded><![CDATA[<p>I few months ago I wrote a program called get-mbooks.pl, and it is was used to harvest MARC data from the University of Michigan&#8217;s OAI repository of public domain Google Books. You can <a href="./../wp-content/uploads/2008/05/get-marc-2008-05-28.tar.gz">download the program here</a>, and what follows is the distribution&#8217;s README file:</p>
<blockquote><p>This is the README file for script called get-mbooks.pl</p>
<p>This script &#8212; get-mbooks.pl &#8212; is an OAI harvester. It makes a connection to the OAI data provider at the University of Michigan. [1] It then requests the set of public domain Google Books (mbooks:pd) using the marc21 (MARCXML) metadata schema. As the metadata data is downloaded it gets converted into MARC records in communications format through the use of the MARC::File::SAX handler.</p>
<p>The magic of this script lies in MARC::File::SAX. Is a hack written by Ed Summers against MARC::File::SAX found on CPAN. It converts the metadata sent from the provider into &#8220;real&#8221; MARC. You will need this hacked version of the module in your Perl path, and it has been saved in the lib directory of this distribution.</p>
<p>To get get-mbooks.pl to work you will first need Perl. Describing how to install Perl is beyond the scope of this README. Next you will need the necessary modules. Installing them is best accomplished through the use of cpan but you will need to be root. As root, run cpan and when prompted, install Net::OAI::Harvester:</p>
<p>  $ sudo cpan<br />
  cpan> install Net::OAI::Harvester</p>
<p>You will also need the various MARC::Record modules:</p>
<p>  $ sudo cpan<br />
  cpan> install MARC::Record</p>
<p>When you get this far, and assuming the hacked version of MARC::File::SAX is saved in the distribution&#8217;s lib directory, all you need to do next is run the program.</p>
<p>  $ ./get-mbooks.pl</p>
<p>Downloading the data is not a quick process, and progress will be echoed in the terminal. At any time after you have gotten some records you can quit the program (ctrl-c) and use the Perl script marcdump to see what you have gotten (marcdump &lt;file&gt;).</p>
<p>Fun with OAI, Google Books, and MARC.</p>
<p>[1] http://quod.lib.umich.edu/cgi/o/oai/oai
</p></blockquote>
]]></content:encoded>
							<wfw:commentRss>./../2008/05/get-mbookspl/feed/index.html</wfw:commentRss>
		<slash:comments>2</slash:comments>
							</item>
		<item>
		<title>Hello, World!</title>
		<link>./../2008/05/hello-world/index.html</link>
				<comments>./../2008/05/hello-world/index.html#comments</comments>
				<pubDate>Tue, 27 May 2008 01:09:40 +0000</pubDate>
		<dc:creator><![CDATA[Eric Lease Morgan]]></dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://infomotions.com/mini-musings/?p=12</guid>
				<description><![CDATA[Hello, World! It is nice to meet you.]]></description>
								<content:encoded><![CDATA[<p>Hello, World! It is nice to meet you.</p>
]]></content:encoded>
							<wfw:commentRss>./../2008/05/hello-world/feed/index.html</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
	</channel>
</rss>
