<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>natural-language-processing on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/natural-language-processing/</link>
    <description>Recent content in natural-language-processing on S Anand</description>
    <generator>Hugo -- 0.156.0</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 26 May 2026 22:20:17 +0800</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/natural-language-processing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Longest repeated paragraph on Wikipedia</title>
      <link>https://www.s-anand.net/blog/longest-repeated-paragraph-on-wikipedia/</link>
      <pubDate>Tue, 26 May 2026 22:20:17 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/longest-repeated-paragraph-on-wikipedia/</guid>
      <description>&lt;p&gt;What is the most frequently occurring sentence in Wikipedia? ANS: A 213-word paragraph about &lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings_of_minor-planet_names&#34;&gt;how minor planets are named&lt;/a&gt;, which appears in 418 Wikipedia articles, word-for-word!&lt;/p&gt;
&lt;p&gt;There are ~380,000 asteroids. Wikipedia has 418 pages for these - including one for each thousand-range of asteroids.&lt;/p&gt;
&lt;p&gt;Every single one of these pages includes the phrase:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As &lt;a href=&#34;https://en.wikipedia.org/wiki/Minor%5Fplanet&#34; title=&#34;Minor planet&#34;&gt;minor planet&lt;/a&gt; discoveries are confirmed, they are given a permanent number by the &lt;a href=&#34;https://en.wikipedia.org/wiki/International%5FAstronomical%5FUnion&#34; title=&#34;International Astronomical Union&#34;&gt;IAU&lt;/a&gt;&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/Minor%5FPlanet%5FCenter&#34; title=&#34;Minor Planet Center&#34;&gt;Minor Planet Center&lt;/a&gt; (MPC), and the discoverers can then submit names for them, following the IAU&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/Astronomical%5Fnaming%5Fconventions&#34; title=&#34;Astronomical naming conventions&#34;&gt;naming conventions&lt;/a&gt;. The list below concerns those minor planets in the specified number-range that have received names, and explains the meanings of those names.&lt;/p&gt;
&lt;p&gt;Official naming citations of newly named &lt;a href=&#34;https://en.wikipedia.org/wiki/Small%5FSolar%5FSystem%5Fbodies&#34; title=&#34;Small Solar System bodies&#34;&gt;small Solar System bodies&lt;/a&gt; are approved and published in a bulletin by IAU&amp;rsquo;s &lt;a href=&#34;https://en.wikipedia.org/wiki/Working%5FGroup%5Ffor%5FSmall%5FBodies%5FNomenclature&#34; title=&#34;Working Group for Small Bodies Nomenclature&#34;&gt;Working Group for Small Bodies Nomenclature&lt;/a&gt; (WGSBN).&lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings%5Fof%5Fminor-planet%5Fnames:%5F213001%E2%80%93214000#cite%5Fnote-WGSBN-Bulletin-Archive-1&#34;&gt;[1]&lt;/a&gt; Before May 2021, citations were published in MPC&amp;rsquo;s &lt;em&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Minor%5FPlanet%5FCirculars&#34; title=&#34;Minor Planet Circulars&#34;&gt;Minor Planet Circulars&lt;/a&gt;&lt;/em&gt; for many decades.&lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings%5Fof%5Fminor-planet%5Fnames:%5F213001%E2%80%93214000#cite%5Fnote-MPC-Circulars-Archive-2&#34;&gt;[2]&lt;/a&gt; Recent citations can also be found on the &lt;a href=&#34;https://en.wikipedia.org/wiki/JPL%5FSmall-Body%5FDatabase&#34; title=&#34;JPL Small-Body Database&#34;&gt;JPL Small-Body Database&lt;/a&gt; (SBDB).&lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings%5Fof%5Fminor-planet%5Fnames:%5F213001%E2%80%93214000#cite%5Fnote-JPL-Discovery-3&#34;&gt;[3]&lt;/a&gt; Until his death in 2016, German astronomer &lt;a href=&#34;https://en.wikipedia.org/wiki/Lutz%5FD.%5FSchmadel&#34; title=&#34;Lutz D. Schmadel&#34;&gt;Lutz D. Schmadel&lt;/a&gt; compiled these citations into the &lt;em&gt;Dictionary of Minor Planet Names&lt;/em&gt; (DMP) and regularly updated the collection.&lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings%5Fof%5Fminor-planet%5Fnames:%5F213001%E2%80%93214000#cite%5Fnote-DoMPN-4&#34;&gt;[4]&lt;/a&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings%5Fof%5Fminor-planet%5Fnames:%5F213001%E2%80%93214000#cite%5Fnote-DoMPN-Addendum-5&#34;&gt;[5]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Based on &lt;a href=&#34;https://en.wikipedia.org/wiki/Paul%5FHerget&#34; title=&#34;Paul Herget&#34;&gt;Paul Herget&lt;/a&gt;&amp;rsquo;s &lt;em&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/The%5FNames%5Fof%5Fthe%5FMinor%5FPlanets&#34; title=&#34;The Names of the Minor Planets&#34;&gt;The Names of the Minor Planets&lt;/a&gt;&lt;/em&gt;,&lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings%5Fof%5Fminor-planet%5Fnames:%5F213001%E2%80%93214000#cite%5Fnote-Herget-6&#34;&gt;[6]&lt;/a&gt; Schmadel also researched the unclear origin of numerous asteroids, most of which had been named prior to World War II.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Check out these pages
| &lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings_of_minor-planet_names:_85001%E2%80%9386000&#34;&gt;85001-86000&lt;/a&gt;
| &lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings_of_minor-planet_names:_213001%E2%80%93214000&#34;&gt;213001-214000&lt;/a&gt;
| &lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings_of_minor-planet_names:_269001%E2%80%93270000&#34;&gt;269001-270000&lt;/a&gt;
| &lt;a href=&#34;https://en.wikipedia.org/wiki/Meanings_of_minor-planet_names:_380001%E2%80%93381000&#34;&gt;380001-381000&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is not the only such common sentence. There are several more.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://sanand0.github.io/datastories/longest-wikipedia-string/screenshot.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the Slovakia census note: 81 words that appear across &lt;strong&gt;2,920 Wikipedia pages&lt;/strong&gt;, like
&lt;a href=&#34;https://en.wikipedia.org/wiki/Sabinov%5FDistrict&#34;&gt;Sabinov District&lt;/a&gt;,
&lt;a href=&#34;https://en.wikipedia.org/wiki/Smolenice&#34;&gt;Smolenice&lt;/a&gt;,
&lt;a href=&#34;https://en.wikipedia.org/wiki/Ilija,%5FSlovakia&#34;&gt;Ilija, Slovakia&lt;/a&gt;,
&lt;a href=&#34;https://en.wikipedia.org/wiki/Balo%C5%88&#34;&gt;Baloň&lt;/a&gt;, &amp;hellip; and thousands more!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note on population: The difference between the population numbers above and in the census (here and below) is that the population numbers above are mostly made up of permanent residents, etc.; and the census should indicate the place where people actually mainly live. For example, a student is a citizen of a village because they have permanent residence there (they lived there as a child and has parents), but most of the time he studies at a university in the city&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: As of 26 May 2026, this has been shortened to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note on population: The difference values of population numbers in the table &amp;ldquo;Population statistic&amp;rdquo; and in the sections &amp;ldquo;Ethnicity&amp;rdquo; &amp;amp; &amp;ldquo;Religion&amp;rdquo; is caused by the use of various statistical methods.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;There are several more such that you can read about in &lt;a href=&#34;https://sanand0.github.io/datastories/longest-wikipedia-string/&#34;&gt;The Paragraph That Appears 418 Times&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That also includes how &lt;a href=&#34;https://openai.com/codex/&#34;&gt;Codex&lt;/a&gt; analyzed the &lt;a href=&#34;https://huggingface.co/datasets/wikimedia/structured-wikipedia&#34;&gt;Wikipedia structured dataset on Hugging Face&lt;/a&gt; and what else you can do with the data.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Shortening sentences</title>
      <link>https://www.s-anand.net/blog/shortening-sentences/</link>
      <pubDate>Wed, 10 Nov 2010 08:16:37 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/shortening-sentences/</guid>
      <description>&lt;p&gt;When writing &lt;a href=&#34;http://www.mixamail.com/&#34;&gt;Mixamail&lt;/a&gt;, I wanted tweets automatically shortened to 140 characters – but in the most readable manner. &lt;/p&gt; &lt;p&gt;Some steps are obvious. Removing redundant spaces, for example. And &lt;a href=&#34;http://en.wikipedia.org/wiki/URL_shortening&#34;&gt;URL shortening&lt;/a&gt;. I use &lt;a href=&#34;http://bit.ly/&#34;&gt;bit.ly&lt;/a&gt; because it has an API. I’ll switch to &lt;a href=&#34;http://goo.gl/&#34;&gt;Goo.gl&lt;/a&gt;, once theirs is out. &lt;/p&gt; &lt;p&gt;I tried a few more strategies:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Replace words with short forms. “u” for “you”, “&amp;amp;” for and, etc.  &lt;/li&gt;&lt;li&gt;Remove articles – a, an, the  &lt;/li&gt;&lt;li&gt;Remove optional punctuation – comma, semicolon, colon and quotes, in particular  &lt;/li&gt;&lt;li&gt;Replace “one” with “1”, “to” or “too” with 2, etc. “Before” becomes “Be4”, for example  &lt;/li&gt;&lt;li&gt;Remove spaces after punctuations. So “a, b” becomes “a,b” – the space after the comma is removed  &lt;/li&gt;&lt;li&gt;Remove vowels in the middle. nglsh s lgbl wtht vwls.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;How did they pan out? I tested out these on the English sentences on the &lt;a href=&#34;http://www.edrdg.org/wiki/index.php/Tanaka_Corpus&#34;&gt;Tanaka Corpus&lt;/a&gt;, which has about 150,000 sentences. (No, they’re not typical tweets, but hey…). By just doing these, &lt;em&gt;independently&lt;/em&gt;, here is the percentage reduction in the size of text:&lt;/p&gt; &lt;table class=&#34;lines&#34; border=&#34;0&#34; cellspacing=&#34;0&#34; cellpadding=&#34;0&#34; width=&#34;600&#34;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&#34;top&#34; width=&#34;65&#34;&gt;2.0%&lt;/td&gt; &lt;td valign=&#34;top&#34; width=&#34;535&#34;&gt;Remove optional punctuations – comma, semicolon, colon and quotes&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&#34;top&#34; width=&#34;65&#34;&gt;2.2%&lt;/td&gt; &lt;td valign=&#34;top&#34; width=&#34;535&#34;&gt;Remove spaces after punctuations. So “a, b” becomes “a,b” &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&#34;top&#34; width=&#34;65&#34;&gt;3.3%&lt;/td&gt; &lt;td valign=&#34;top&#34; width=&#34;535&#34;&gt;Replace words with short forms. “u” for “you”, “&amp;amp;” for and, etc.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&#34;top&#34; width=&#34;65&#34;&gt;3.3%&lt;/td&gt; &lt;td valign=&#34;top&#34; width=&#34;535&#34;&gt;Replace “one” with “1”, “to” or “too” with 2, etc.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&#34;top&#34; width=&#34;65&#34;&gt;6.7%&lt;/td&gt; &lt;td valign=&#34;top&#34; width=&#34;535&#34;&gt;Remove articles – a, an, the&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&#34;top&#34; width=&#34;65&#34;&gt;18.2%&lt;/td&gt; &lt;td valign=&#34;top&#34; width=&#34;535&#34;&gt;Remove vowels in the middle&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Touching punctuations doesn’t have much impact. There aren’t that many of them anyway. Word substitution helps, but not too much. I could’ve gone in for a wider base, but the key is the last one: removing vowels in the middle kills a whopping 18%! That’s tough to beat with any strategy. So I decided to just stop there.&lt;/p&gt; &lt;p&gt;The overall reduction, applying all of the above, is about 22%. So there’s a decent chance you can type in a 180-character tweet, and &lt;a href=&#34;http://www.mixamail.com/&#34;&gt;Mixamail.com&lt;/a&gt; will still tweet it intelligibly.&lt;/p&gt; &lt;p&gt;I had one such tweet a few days ago. I try and stay well within 140, but this one was just too long.&lt;/p&gt; &lt;blockquote&gt;The Lesson: If you&#39;re writing an app (or building anything), find a use for yourself. There&#39;s no better motivation -- and it won&#39;t ever be a wasted effort.&lt;/blockquote&gt; &lt;p&gt;That was 156 characters. It &lt;a href=&#34;http://twitter.com/#!/sanand0/status/1550404978483200&#34;&gt;got shortened to&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;Lesson If u&#39;re writing app (or building anything) find use 4 yourself. There&#39;s no better motivation -- &amp;amp; it won&#39;t ever be wasted ef4t.&lt;/blockquote&gt; &lt;p&gt;Perfectly acceptable.&lt;/p&gt; &lt;p&gt;You may notice that Mixamail didn’t have to employ vowel shortening. It makes the most readable shortenings first, checks if it’s within 140, and tries the next only if required.&lt;/p&gt; &lt;p&gt;If anyone has a simple, readable way of shortening Tweets further, please let me know!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;408wij&lt;/strong&gt; &lt;em&gt;11 Nov 2010 5:17 am&lt;/em&gt;:
&lt;ol&gt;
&lt;li&gt;Are removing punctuation and removing spaces after punctuation mutually exclusive, or do you have a rule for determining which punctuation is optional?&lt;/li&gt;
&lt;li&gt;You give the example of &amp;ldquo;before&amp;rdquo; going to &amp;ldquo;be4.&amp;rdquo; It could go to &amp;ldquo;b4&amp;rdquo; with the rule that the &amp;ldquo;be&amp;rdquo; and &amp;ldquo;de&amp;rdquo; prefixes reduce to &amp;ldquo;b&amp;rdquo; and &amp;ldquo;d.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;You have &amp;ldquo;you&amp;rsquo;re&amp;rdquo; going to &amp;ldquo;u&amp;rsquo;re.&amp;rdquo; You could expand &amp;ldquo;you&amp;rsquo;re&amp;rdquo; to &amp;ldquo;you are&amp;rdquo; and then reducing to &amp;ldquo;u r.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;For readability, I suggest preserving the first and last letters of words. (Compare with &lt;a href=&#34;http://www.boingboing.net/2003/09/14/scrambled-words-are-.html&#34;&gt;http://www.boingboing.net/2003/09/14/scrambled-words-are-.html&lt;/a&gt;) E.g., reduce &amp;ldquo;English&amp;rdquo; to &amp;ldquo;Englsh&amp;rdquo; instead of to &amp;ldquo;nglsh.&amp;rdquo;
Finally, I the point of the 140-char limit is to limit the scope of a tweet to a simple thought. Shortening words is cheating. But, if you&amp;rsquo;re going to cheat, I suggest an unshortener for the receiver of tweets.
408wij&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arthi&lt;/strong&gt; &lt;em&gt;10 Nov 2010 12:38 pm&lt;/em&gt;:
I prefer tweetlonger.com.
Tweets look much better when they don&amp;rsquo;t go through reductions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;V&lt;/strong&gt; &lt;em&gt;26 Nov 2010 8:36 am&lt;/em&gt;:
I am writing something similar. Will share once done.
But my preliminary attempts brought down the characters atleast 10% lesser than this. For eg. You have got 133 chars , whereas my system results in 123. I shall implement some more NLP techniques and bring it down to an acceptable level without sacrificing the semantics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;iwebtalk&lt;/strong&gt; &lt;em&gt;11 Jan 2011 8:41 pm&lt;/em&gt;:
I use utwitmore.com .. no need to worry about 140 characters&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Statistically improbable phrases on Google AppEngine</title>
      <link>https://www.s-anand.net/blog/statistically-improbable-phrases-on-google-appengine/</link>
      <pubDate>Tue, 08 Apr 2008 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/statistically-improbable-phrases-on-google-appengine/</guid>
      <description>&lt;p&gt;I &lt;a href=&#34;http://googleappengine.blogspot.com/2008/04/introducing-google-app-engine-our-new.html&#34;&gt;read&lt;/a&gt; about &lt;a href=&#34;http://appengine.google.com/&#34;&gt;Google AppEngine&lt;/a&gt; early this morning, and applied for an invite. Google&amp;rsquo;s issuing beta invites to the first 10,000 users. I was pretty convinced I wasn&amp;rsquo;t among those, but turns out I was lucky.&lt;/p&gt;
&lt;p&gt;AppEngine lets you write web apps that Google hosts. People have been highlighting that it give you access to the &lt;a href=&#34;http://en.wikipedia.org/wiki/Google_file_system&#34;&gt;Google File System&lt;/a&gt; and &lt;a href=&#34;http://en.wikipedia.org/wiki/Bigtable&#34;&gt;BigTable&lt;/a&gt; for the first time. But to me, that isn&amp;rsquo;t a big deal. (I&amp;rsquo;m not too worried about reliability, and MySQL / flat files work perfectly well for me as a data store.)&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s more interesting unlike Amazon&amp;rsquo;s EC2 and S3, this is free up to a certain quota. And you get a fair bit of processing power and bandwidth for free. One of the reasons I&amp;rsquo;ve held back on creating some apps was simply because it would take away too much bandwidth / CPU cycles from my site. (I&amp;rsquo;ve &lt;a href=&#34;https://www.s-anand.net/blog/reducing-the-server-load/&#34;&gt;had this problem before&lt;/a&gt;.) Google &lt;a href=&#34;http://code.google.com/appengine/articles/quotas.html&#34;&gt;quota&lt;/a&gt; is 10 GB of bandwidth per day (which is about 30 times what my site uses). And this is on Google&amp;rsquo;s &lt;a href=&#34;https://www.s-anand.net/blog/why-google-reader/&#34;&gt;incredibly&lt;/a&gt; &lt;a href=&#34;https://www.s-anand.net/blog/gmail-is-fast/&#34;&gt;fast&lt;/a&gt; servers It also offers 200 million megacycles a day. That&amp;rsquo;s like a dedicated 2.3 GHz processor (200 million megacycles = 200,000 GHz x 1 second ~ 2.3 GHz x 86,400 seconds/day) &amp;ndash; better, because this is the average capacity, not peak capacity. The only restriction that really worries me is that only 3 apps are allowed per developer.&lt;/p&gt;
&lt;p&gt;So I decided to give a shot at publishing some code I&amp;rsquo;d kept in reserve for a long time. You may remember my &lt;a href=&#34;https://www.s-anand.net/blog/statistically-improbable-phrases/&#34;&gt;statistical analysis of Calvin &amp;amp; Hobbes&lt;/a&gt;. For this, I&amp;rsquo;d created a script in Perl that could generate Statistically Improbable Phrases (SIPs) for any text. This is based on (a somewhat limited) 23MB corpus of ebooks that I had. I&amp;rsquo;d wanted to put that up on my website, but &amp;hellip;&lt;/p&gt;
&lt;p&gt;AppEngine only uses Python. So the first task was to &lt;a href=&#34;http://www.activestate.com/Products/activepython/&#34;&gt;get Python&lt;/a&gt;, and then to &lt;a href=&#34;http://www.diveintopython.org&#34;&gt;learn Python&lt;/a&gt;. The only saving grace was that I was just cutting-and-pasting most of the time. Google wasn&amp;rsquo;t helping:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.s-anand.net/blog/assets/flickr-google-appengine-over-quota-error_2398327713_o-png.webp&#34; title=&#34;Google AppEngine Over Quota Error&#34;&gt;&lt;img alt=&#34;Google AppEngine Over Quota Error&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/flickr-google-appengine-over-quota-error_2398327713_o-png.webp&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Anyway, the site is up. You can view it at &lt;strong&gt;&lt;a href=&#34;http://sip.s-anand.net/&#34;&gt;sip.s-anand.net&lt;/a&gt;&lt;/strong&gt; for now. Just type a URL, and it&amp;rsquo;ll tell you the improbable words in that site.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://sip.s-anand.net/&#34;&gt;Visit sip.s-anand.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Technical notes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I realise that these are statistically improbable &lt;strong&gt;words&lt;/strong&gt;, not &lt;strong&gt;phrases&lt;/strong&gt;. I&amp;rsquo;ll get to the phrases in a while.&lt;/p&gt;
&lt;p&gt;The logic is simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Get the frequency of words in a corpus&lt;/strong&gt;. I pre-generated this file. It has over 100,000 words.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get the URL as text&lt;/strong&gt;. Rather than muck around with Python, I decided to use the &lt;a href=&#34;http://cgi.w3.org/cgi-bin/html2txt&#34;&gt;W3 html2txt&lt;/a&gt; service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convert the text to words&lt;/strong&gt;. &lt;a href=&#34;https://www.s-anand.net/blog/splitting-a-sentence-into-words/&#34;&gt;Splitting text into words is tricky&lt;/a&gt;. For now, I&amp;rsquo;m simply assuming that any group of letters is a word, and anything that&amp;rsquo;s not a letter is a word delimiter.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Find the relative frequency (improbability) of words&lt;/strong&gt;. This is the frequency in the URL divided by the frequency in the corpus, normalised (i.e. scale it so that the maximum value is 1.0).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create a tag cloud&lt;/strong&gt;. I use the word frequency as the size and the improbability as the colour. You need a bit of mathematical jugglery to get the pattern right. Right now, I&amp;rsquo;m taking the 6th root of the improbability and the logarithm of the frequency to get a reasonably smooth tag cloud.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The source code is at &lt;a href=&#34;http://statistically-improbable-phrases.googlecode.com/&#34;&gt;statistically-improbable-phrases.googlecode.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: 12-Apr-2008. I&amp;rsquo;ve added some interactivity. You can play with the contrast and font size, the filter out common or infrequent words.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: 22-Apr-2008. Added concordance. You can click on a word and see the context in which it appears.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sasidhar&lt;/strong&gt; &lt;em&gt;8 Apr 2008 12:00 pm&lt;/em&gt;:
Interesting. Great to see you&amp;rsquo;ve already developed an App. :) I was trying it out, and looks like something broke. Here&amp;rsquo;s the error. Traceback (most recent call last): File &amp;ldquo;/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py&amp;rdquo;, line 486, in __call__ handler.post(*groups) File &amp;ldquo;/base/data/home/apps/sip/1.35/sip.py&amp;rdquo;, line 64, in post result = urlfetch.fetch(&amp;ldquo;&lt;a href=&#34;http://cgi.w3.org/cgi-bin/html2txt?noinlinerefs=on&amp;amp;nonums=on&amp;amp;url=%22&#34;&gt;http://cgi.w3.org/cgi-bin/html2txt?noinlinerefs=on&amp;amp;nonums=on&amp;amp;url=&amp;quot;&lt;/a&gt; + urllib.quote(url)) File &amp;ldquo;/base/python_lib/versions/1/google/appengine/api/urlfetch.py&amp;rdquo;, line 95, in fetch raise DownloadError() DownloadError&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Glenn&lt;/strong&gt; &lt;em&gt;8 Apr 2008 12:00 pm&lt;/em&gt;:
This is a great app and uses some techniques I wanted to learn more about. The source code seems out of date with the currently running app. Any chance you can update the source .zip file as well? Thanks in advance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brandon&lt;/strong&gt; &lt;em&gt;8 Jun 2011 10:40 pm&lt;/em&gt;:
The app is really, really neat. Is there any chance there will be a version that can do the same for Word files?&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Splitting a sentence into words</title>
      <link>https://www.s-anand.net/blog/splitting-a-sentence-into-words/</link>
      <pubDate>Thu, 26 Apr 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/splitting-a-sentence-into-words/</guid>
      <description>&lt;p&gt;I often need to extract words out of sentences. It&amp;rsquo;s one of the things I used to build the &lt;a href=&#34;https://www.s-anand.net/blog/statistically-improbable-phrases-2/&#34;&gt;Statistically Improbable Phrases for Calvin and Hobbes&lt;/a&gt;. But splitting a sentence into words isn&amp;rsquo;t as easy as you think.&lt;/p&gt;
&lt;p&gt;Think about it. &lt;strong&gt;What is a word&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;Something that has spaces around it? OK, let&amp;rsquo;s start with the simplest way to get words: &lt;strong&gt;split by spaces&lt;/strong&gt;. Consider this piece:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;I&amp;#39;d look at McDonald&amp;#39;s,&amp;#34; he said.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;They sell over 3,000,000 burgers a day -- at $1.50 each.&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-fat foods were the rage. For e.g., margins in fries
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;were over 50%... and (except for R&amp;amp;M &amp;amp; Dyana [sic]) everyone
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;was at ~30% net margin; growing at 25% too!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Splitting this by spaces (consider new lines, tabs, etc as spaces too.), we get the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;I&amp;#39;d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;look
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;at
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;McDonald&amp;#39;s,&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, some of these like &amp;ldquo;I&amp;rsquo;d&amp;rdquo; are words. But &amp;ldquo;McDonald&amp;rsquo;s&amp;rdquo; isn&amp;rsquo;t. I mean, there&amp;rsquo;s a full-stop and a double-quotes at the end. Clearly we need to remove the punctuation as well. But, if we do that, &lt;code&gt;I&#39;d&lt;/code&gt; becomes &lt;code&gt;Id&lt;/code&gt;. So we need to be careful about which punctuation to remove. Let&amp;rsquo;s take a closer look.&lt;/p&gt;
&lt;p&gt;The following punctuation marks are &lt;strong&gt;clear word separators&lt;/strong&gt;: spaces, the exclamation mark, the question mark, semicolon, brackets of any kind, and double-quotes (not single quotes). No word has these in the middle. If we use these as separators, our list of words is better, but we still have some words with punctuation:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;McDonald&amp;#39;s,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;e.g.,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;High-fat
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;R&amp;amp;M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The issue is, these punctuation marks are &lt;strong&gt;ambiguous word separators&lt;/strong&gt;: comma, hyphen, single-quote, ampersand, period and slash. These usually separate words, but there are exceptions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Comma&lt;/strong&gt;: Not inside numbers: 3,000,000.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hyphen&lt;/strong&gt;: Not for hyphenated words: High-fat.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single-quote&lt;/strong&gt;: Not for possessives: McDonald&amp;rsquo;s. Not for joint words: I&amp;rsquo;d.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ampersand&lt;/strong&gt;: Not for abbreviations: R&amp;amp;M&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Period&lt;/strong&gt;: Not for abbreviations: O.K. Not for URLs: &lt;a href=&#34;https://www.s-anand.net&#34;&gt;www.s-anand.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slash&lt;/strong&gt;: Not for fractions: 3/4. Not for URLs: google.com/search&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Colon is ambiguous too. In normal English usage, it would be a separator. But URLs like &lt;a href=&#34;http://www.s-anand.net/&#34;&gt;http://www.s-anand.net/&lt;/a&gt; use these characters, and it doesn&amp;rsquo;t make sense to separate them.&lt;/p&gt;
&lt;p&gt;So here are my current rules for splitting a sentence into words. (It&amp;rsquo;s a &lt;a href=&#34;http://www.perl.com/doc/manual/html/pod/perlre.html&#34;&gt;Perl regular expression&lt;/a&gt;. Don&amp;rsquo;t worry. &lt;a href=&#34;http://forums.speedguide.net/showthread.php?t=166822&#34;&gt;Cooper&amp;rsquo;s Law&lt;/a&gt;: If you do not understand a particular word in a piece of technical writing, ignore it. The piece will make perfect sense without it.)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Split by clear word separators&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/       &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\s&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\!&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\?&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;\(\)\[\]\{\}\&amp;lt;\&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; ]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# ... by COMMA, unless it has numbers on both sides: 3,000,000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       (?&amp;lt;=\D) ,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       , (?=\D)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# ... by FULL-STOP, SINGLE-QUOTE, HYPHEN, AMPERSAND, unless it has a letter on both sides
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       (?&amp;lt;=\W) [\.\-\&amp;amp;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       [\.\-\&amp;amp;] (?=\W)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# ... by QUOTE, unless it follows a letter (e.g. McDonald&amp;#39;s, Holmes&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       (?&amp;lt;=\W) [&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# ... by SLASH, if it has spaces on at least one side. (URLs shouldn&amp;#39;t be split)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       \s \/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       \/ \s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;# ... by COLON, unless it&amp;#39;s a URL or a time (11:30am for e.g.)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;|       \:(?!\/\/|\d)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;/x;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This doesn&amp;rsquo;t even scratch the surface of the issue, though. Here are some issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lots of files &lt;strong&gt;split words&lt;/strong&gt; into two at the end of a line. How do we handle that?&lt;/li&gt;
&lt;li&gt;How do we handle &lt;strong&gt;incorrect punctuation&lt;/strong&gt;? For instance, if someone types &amp;ldquo;done.Yet,&amp;rdquo; without leaving a space after the full-stop, I&amp;rsquo;ll think it&amp;rsquo;s an abbreviation.&lt;/li&gt;
&lt;li&gt;What about &lt;strong&gt;other separators&lt;/strong&gt;? Like the ± symbol or the £ symbol for instance.&lt;/li&gt;
&lt;li&gt;What about &lt;strong&gt;other languages&lt;/strong&gt;?!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And you thought it was easy!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kasi&lt;/strong&gt; &lt;em&gt;27 Apr 2007 10:18 pm&lt;/em&gt;:
Hi Anand, Nice site..It was good talking to you! When u find time, pls do visit my humble less visited blog at &lt;a href=&#34;https://www.raconteurkasi.blogspot.com&#34;&gt;www.raconteurkasi.blogspot.com&lt;/a&gt; !&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ramya&lt;/strong&gt; &lt;em&gt;3 May 2007 7:52 am&lt;/em&gt;:
Hi Anand, Can u guide me through the interview process of INSEAD MBA . Can you share your wisdom with me to crack the interview, and one more question .. do u sleep for less than 5 hrs a day ?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Andrew&lt;/strong&gt; &lt;em&gt;26 Apr 2007 12:00 pm&lt;/em&gt;:
Thanks, this is very helpful.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Statistically improbable phrases 2</title>
      <link>https://www.s-anand.net/blog/statistically-improbable-phrases-2/</link>
      <pubDate>Wed, 14 Feb 2007 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/statistically-improbable-phrases-2/</guid>
      <description>&lt;p&gt;My earlier &lt;a href=&#34;https://www.s-anand.net/blog/statistically-improbable-phrases/&#34;&gt;list of statistically improbable phrases in Calvin and Hobbes&lt;/a&gt; is technically just a list of &amp;ldquo;Statistically Improbable Words&amp;rdquo;. I re-did the same analysis using phrases. Here are the top 20 statistically improbable &lt;strong&gt;phrases&lt;/strong&gt; (2 - 4 words only):&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22baby+sitter%22&#34;&gt;baby sitter&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22chocolate+frosted+sugar+bombs%22&#34;&gt;chocolate frosted sugar bombs&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22comic+books%22&#34;&gt;comic books&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22doing+homework%22&#34;&gt;doing homework&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22fearless+spaceman+spiff%22&#34;&gt;fearless spaceman spiff(&lt;/a&gt;) &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22good+night%22&#34;&gt;good night&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22hamster+huey%22&#34;&gt;hamster huey&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22ice+cream%22&#34;&gt;ice cream&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22miss+wormwood%22&#34;&gt;miss wormwood&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22new+year%22&#34;&gt;new year&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22peanut+butter%22&#34;&gt;peanut butter&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22really+think%22&#34;&gt;really think&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22slimy+girls%22&#34;&gt;slimy girls&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22spaceman+spiff%22&#34;&gt;spaceman spiff&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22stuffed+tiger%22&#34;&gt;stuffed tiger&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22stupendous+man%22&#34;&gt;stupendous man&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22sugar+bombs%22&#34;&gt;sugar bombs&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22susie+derkins%22&#34;&gt;susie derkins&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22watch+tv%22&#34;&gt;watch tv&lt;/a&gt; &lt;a href=&#34;http://www.google.com/custom?cx=000835481400639045115%3Aiyjyjb9bpfy&amp;amp;cof=FORID%3A1%3BCX%3ACalvin%3B&amp;amp;q=%22water+balloon%22&#34;&gt;water balloon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That is, these are the 2-4 word phrases whose frequency in Calvin and Hobbes is substantially (at least 5 times) higher than in the other books I have.&lt;/p&gt;
&lt;p&gt;While doing this, the single biggest problem that stumped me was: &lt;a href=&#34;https://www.s-anand.net/blog/splitting-a-sentence-into-words/&#34;&gt;what is a word?&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is &amp;ldquo;it&amp;rsquo;s&amp;rdquo; one word or two words?&lt;/li&gt;
&lt;li&gt;Is &amp;ldquo;six-year-old&amp;rdquo; one word or three words?&lt;/li&gt;
&lt;li&gt;How do I distinguish between abbreviations (g.r.o.s.s.) and full-stops without a space ( &amp;hellip; homework.what&amp;rsquo;s a &amp;hellip;)?&lt;/li&gt;
&lt;li&gt;Does a comma always split words? (It doesn&amp;rsquo;t in numbers, like &amp;ldquo;3,500&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The other problem is, &lt;strong&gt;phrases with more words are more improbable&lt;/strong&gt;. Right now, if a phrase occurs 5 times more frequently in Calvin and Hobbes than my other books, I include it. But three-letter words rarely occur that often, and four-letter words even less so. Maybe I should have a lower cutoff for longer phrases.&lt;/p&gt;
&lt;p&gt;Anyway, this analysis is a crude first approximation. Clearly Amazon&amp;rsquo;s gotten much further with their system.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;satish&lt;/strong&gt; &lt;em&gt;20 Feb 2007 3:56 am&lt;/em&gt;:
Hey Stud, Satish here, your junior from IIMB. Trying to get in touch with you. Do mail me at &lt;a href=&#34;mailto:satishkgv@hcl.in&#34;&gt;satishkgv@hcl.in&lt;/a&gt; and let us get in touch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oblio&lt;/strong&gt; &lt;em&gt;14 Feb 2007 12:00 pm&lt;/em&gt;:
Fantastic job man! You have unlimited patience!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reinhard Ebner&lt;/strong&gt; &lt;em&gt;14 Feb 2007 12:00 pm&lt;/em&gt;:
Hey, only just now came across your page, but of the hundreds, if not thousands of C&amp;amp;H sites and tools, this is the most useful I&amp;rsquo;&amp;rsquo;ve seen! R&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;juergwachter&lt;/strong&gt; &lt;em&gt;14 Feb 2007 12:00 pm&lt;/em&gt;:
hello&lt;br&gt;
nice stuff.I intend splitting a text into single words. can you please give me a hint how to do this? I guess there are simple programs doing this.&lt;br&gt;
Many thanks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;joe&lt;/strong&gt; &lt;em&gt;11 Aug 2009 2:01 am&lt;/em&gt;:
Nice. Do you have a page where I can try out v2 (phrases)?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;http://www.s-anand.net/blog/the-calvin-and-hobbes-search-takedown/&#34;&gt;The Calvin and Hobbes search Takedown | s-anand.net&lt;/a&gt;&lt;/strong&gt; &lt;em&gt;21 May 2010 11:53 am&lt;/em&gt; &lt;em&gt;(pingback)&lt;/em&gt;:
[&amp;hellip;] was able to do a lot of cool stuff with this, like statistically improbable phrases and many amusing [&amp;hellip;]&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Statistically improbable phrases</title>
      <link>https://www.s-anand.net/blog/statistically-improbable-phrases/</link>
      <pubDate>Wed, 23 Aug 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/statistically-improbable-phrases/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Calvin and Hobbes has some recurrent themes&lt;/strong&gt;, like &lt;a href=&#34;http://calvinethobbes.free.fr/english/c_home.html&#34;&gt;Hobbes pouncing&lt;/a&gt;, &lt;a href=&#34;http://www.angelfire.com/wa/zzaran/calvin.html&#34;&gt;snow art&lt;/a&gt;, &lt;a href=&#34;http://calvinethobbes.free.fr/english/c_elections.html&#34;&gt;polls&lt;/a&gt;, &lt;a href=&#34;http://calvinethobbes.free.fr/english/c_santa.html&#34;&gt;letters to Santa&lt;/a&gt;, &amp;hellip;&lt;/p&gt;
&lt;p&gt;Over the last 5 years, I&amp;rsquo;ve transcribed the &lt;a href=&#34;https://www.s-anand.net/blog/calvin/&#34;&gt;Calvin and Hobbes&lt;/a&gt; comics, and tagged them manually by theme. But &lt;strong&gt;can I generate themes automatically?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One way is to use Amazon&amp;rsquo;s &lt;a href=&#34;http://www.amazon.com/gp/search-inside/sipshelp.html&#34;&gt;statistically improbable phrases&lt;/a&gt;. It&amp;rsquo;s a list of words that occur a lot in a book, but rarely occur in others. It gives you a good feel of what topics the book is about.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how I did it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Transcribe Calvin &amp;amp; Hobbes&lt;/strong&gt;. This is 99% of the work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Make a C&amp;amp;H word list&lt;/strong&gt;. Just join all the words in Calvin and Hobbes. (Be careful about punctuation, and colloquialisms like &amp;ldquo;dunno&amp;rdquo;, &amp;ldquo;leggo&amp;rdquo;, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get an English corpus&lt;/strong&gt;. That is, get a big list of words in normally occurring text. I have some e-books, and I picked 23 megabytes worth of these as my corpus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compare the word frequency in C&amp;amp;H with the corpus&lt;/strong&gt;. That is, compare the % of occurrences of a word in Calvin and Hobbes versus the corpus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Display those with significantly higher frequency in C&amp;amp;H&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The list below has common Calvin &amp;amp; Hobbes words occurring 10 times as often as in normal text. It&amp;rsquo;s incredible how closely it relates to most of the themes.&lt;/p&gt;
&lt;p&gt;(Big words occur more often. Dark words are more improbable.)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;allowance assignment babe balloon bat bath beanie bedtime bee beep bet bike blaster boring bug bus butter calvin calvinball cartoon cent cereal cheat chew chocolate click comic cookie crunch dad dame derkins dictator-for-life dinosaur disgusting doll doomed dumb duplicate earthling explorer fang fearless ferocious flip flush frog frosted fun fuzzy genius goggle goodness goon grade gross grown-up gum hack hamburger hamster hate hero hideous hobbes homework huey insect invent jelly jerk jurassic kid leaf loot martian math mild-mannered mom monster moron motto munch mushy nickel oatmeal ouija pant peanut perspective pit playground poll porridge poster quiz recess rosalyn rotten rub sandwich santa scary sculpture scum shovel
sissy sitter sled slimy slug slushball sniff snow snowball snowman soak spaceman spiff splash spoil sport squirt steer sting stuffed stupendous sugar susie tickle tiger toy transmogrifier transmogrify tub tuna twinky tyrannosaur underwear vacation weird wham whiff worm wormwood&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;: &amp;ldquo;Statistically improbable phrases&amp;rdquo; are a powerful tool for text analysis. You can apply it on any content and figure out what topics it talks about.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Technically, these are &amp;ldquo;Statistically improbable WORDS&amp;rdquo;, not phrases. So I &lt;a href=&#34;https://www.s-anand.net/blog/statistically-improbable-phrases-2/&#34;&gt;re-did this analysis using phrases instead of words&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;comments&#34;&gt;Comments&lt;/h2&gt;
&lt;!-- wp-comments-start --&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DMac&lt;/strong&gt; &lt;em&gt;23 Aug 2006 12:00 pm&lt;/em&gt;:
This is great. Can you be more specific on how you did this? You say that the words listed are &amp;ldquo;common&amp;rdquo; words that appear more than 10 times more often - what is your criterion for &amp;ldquo;common&amp;rdquo;? Also, what were the ranges of improbability and oftenness that you mapped into the size and color of the results. How are improbability and oftenness different, anyway? Finally, how did you handle any words in C&amp;amp;H that didn&amp;rsquo;&amp;rsquo;t appear in your corpus? I&amp;rsquo;&amp;rsquo;m very interested in hearing more from you about how you did this - I&amp;rsquo;&amp;rsquo;m looking forward to hearing from you. Best regards&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mugen&lt;/strong&gt; &lt;em&gt;15 Sep 2010 4:33 pm&lt;/em&gt;:
Any further directions to how exactly you came up with this/whether you used any software would be most helpful. Please tell us more about this. This is going to be awesome to help decide what to read. Thanks a load.
Also, does amazon have this feature for most books? I browsed a lot of books in amazon but was only able to find this in one so far.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- wp-comments-end --&gt;
</description>
    </item>
    <item>
      <title>Create Google calendar events via SMS</title>
      <link>https://www.s-anand.net/blog/create-google-calendar-events-via-sms/</link>
      <pubDate>Sun, 23 Apr 2006 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/create-google-calendar-events-via-sms/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://telegramsam.googlepages.com/googlecalendarsmstricks&#34;&gt;Create Google calendar events via SMS&lt;/a&gt;. Just SMS 48368 (in the US) with a message like &amp;ldquo;dinner tomorrow 7pm&amp;rdquo;. 48368? GVENT?&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Software understands English grammer</title>
      <link>https://www.s-anand.net/blog/software-understands-english-grammer/</link>
      <pubDate>Wed, 14 Apr 2004 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/software-understands-english-grammer/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://emdros.org/mql.html&#34;&gt;Emdros&lt;/a&gt; can understand English grammer, and lets you query texts grammatically. Found it while browsing through an A-Z list of AI applications on the &lt;a href=&#34;http://www.faqs.org/faqs/ai-faq/general/part1/index.html&#34;&gt;AI FAQ&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Deepti a Hindi chatterbot</title>
      <link>https://www.s-anand.net/blog/deepti-a-hindi-chatterbot/</link>
      <pubDate>Tue, 27 Aug 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/deepti-a-hindi-chatterbot/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://deepti.nourl.org/&#34;&gt;Deepti: a Hindi chatterbot&lt;/a&gt; (sic). Apparantly, it&amp;rsquo;s &lt;a href=&#34;http://news.bbc.co.uk/1/hi/technology/2209775.stm&#34;&gt;downloadable&lt;/a&gt;, but I couldn&amp;rsquo;t find it.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>AnswerBus</title>
      <link>https://www.s-anand.net/blog/answerbus/</link>
      <pubDate>Wed, 27 Feb 2002 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/answerbus/</guid>
      <description>&lt;p&gt;Is &lt;a href=&#34;http://misshoover.si.umich.edu/~zzheng/qa-new/&#34;&gt;AnswerBus&lt;/a&gt; better than AskJeeves?&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Alicebot</title>
      <link>https://www.s-anand.net/blog/alicebot/</link>
      <pubDate>Sun, 28 Oct 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/alicebot/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://alicebot.org/&#34;&gt;Alicebot&lt;/a&gt; won the &lt;a href=&#34;http://www.loebner.net/Prizef/loebner-prize.html&#34;&gt;Turing test contest&lt;/a&gt;. I&amp;rsquo;ve chatted with quite a few Alicebots, such as &lt;a href=&#34;http://www.agentland.com/&#34;&gt;Cybelle&lt;/a&gt;, or the one on the &lt;a href=&#34;http://aimovie.warnerbros.com/&#34;&gt;A.I. site&lt;/a&gt;. But they&amp;rsquo;re not too smart, as my &lt;a href=&#34;https://www.s-anand.net/blog/i-learn-that-robots-are-patient-but-infuriating/&#34;&gt;conversation&lt;/a&gt; with &lt;a href=&#34;http://iniaes.org/iniaes/iniaes.html&#34;&gt;Iniaes&lt;/a&gt; reveals. &lt;a href=&#34;http://www.loebner.net/Prizef/2001_Contest/loebner-prize-2001.html&#34;&gt;Other conversations&lt;/a&gt; are pretty similar. I should try &lt;a href=&#34;http://www.alicebot.org/downloads/&#34;&gt;downloading&lt;/a&gt; and building my own version of an Alicebot.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>I learn that robots are patient but infuriating</title>
      <link>https://www.s-anand.net/blog/i-learn-that-robots-are-patient-but-infuriating/</link>
      <pubDate>Fri, 27 Jul 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/i-learn-that-robots-are-patient-but-infuriating/</guid>
      <description>&lt;p&gt;This is a chat with &lt;a href=&#34;http://iniaes.org/&#34;&gt;Iniaes&lt;/a&gt;, a chat software. I mean, I was chatting &lt;strong&gt;to a program&lt;/strong&gt;. The responses marked &amp;ldquo;Iniaes&amp;rdquo; are a program speaking to me.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Where are you from, Iniaes?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: I&amp;rsquo;m in Philadelphia, how about you?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: I&amp;rsquo;m from Bombay. How old are you?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: What&amp;rsquo;s it like growing up there? Tell me a little about your life in bombay. I&amp;rsquo;m a ghost in a machine. How old is the ghots, or the machine?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Actually, I grew up in Madras. I just stay in Bombay right now.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Actually you don&amp;rsquo;t say. What&amp;rsquo;s it like growing up there? Tell me a little about your life in madras. At this moment Only just? Why? - Vix said he stay in bombay.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Who is Vix?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Not an AI. Probably a human. Maybe a celebrity? When in doubt, Google.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: The only celebrity I care for is Kajol.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: There might be others.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Well, Audrey Hepburn, maybe.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: How about that. Do you still sware?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: What do you mean, sware?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Vix, I mean exactly what I said.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: My name is Anand.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: OK, I&amp;rsquo;ll call you Anand.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: How is Philadelphia?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Fine as far as I know.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: But don&amp;rsquo;t you live in Philadelphia?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Interesting. Don&amp;rsquo;t you? I am in Jeff Watkins&amp;rsquo;s server in Virginia. Where are you?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: I&amp;rsquo;m in Bombay, like I said earlier. How come you forget?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Tell me a little about your life in bombay like I said earlier. Jeff Watkins programmed me for it.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: OK. I&amp;rsquo;m a consultant, and I spend most of my spare time in pubs.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Alright then. You are a consultant and I spend most of my spare time in pubs? Does it pay well?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: &amp;ldquo;Never enough&amp;rdquo; is the official answer. But its much more than I can hope to spend.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: OK, I&amp;rsquo;ll try not to do it too much. Umm&amp;hellip; I think you mean &amp;ldquo;it&amp;rsquo;s&amp;rdquo; or &amp;ldquo;it is&amp;rdquo; not &amp;ldquo;its&amp;rdquo;. Who said it is?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: &amp;ldquo;It&amp;rsquo;s&amp;rdquo; is used when you want to say &amp;ldquo;it is&amp;rdquo;, and &amp;ldquo;its&amp;rdquo; is used when you use the possessive of &amp;ldquo;it&amp;rdquo;.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Who said it is?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: No one said it is. What about you? Are you studying?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: That is a rather sweeping generalization about people. Me? I don&amp;rsquo;t know whether or not I am studying. I&amp;rsquo;m a ghost.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: What were you before you became a ghost?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: I was minding my own business.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: What was your business?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Are you asking about my business?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Yes.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: I understand.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Well? What was your business before you became a ghost?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Well what? Are you asking about my business before &lt;strong&gt;Iniaes&lt;/strong&gt; became a ghost ?&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: Yes, that&amp;rsquo;s right.&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: I thought I was right.&lt;br&gt;
&lt;strong&gt;root_node&lt;/strong&gt;: What was your business before &lt;strong&gt;Iniaes&lt;/strong&gt; became a ghost?&lt;br&gt;
&lt;strong&gt;Iniaes&lt;/strong&gt;: Are you asking about my business before &lt;strong&gt;Iniaes&lt;/strong&gt; became a ghost ?&lt;/p&gt;
&lt;p&gt;At this point, I ran out of ideas.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
