<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xml:lang="ja">
	<channel>
		<title>@monadoの日記</title>
		<link>http://twitter.g.hatena.ne.jp/leibniz/</link>
		<description>@monadoの日記</description>
		<dc:creator>leibniz</dc:creator>


		<item>
			<title>えくそいぼっと</title>
			<link>http://twitter.g.hatena.ne.jp/leibniz/20080225</link>

			<description><![CDATA[
		<div class="section">
			<h4>えくそいぼっと改良中</h4>
			<p>いろんな機能を追加してます。</p>
			<p><a href="http://twitter.com/exsoy_bot" target="_blank">http://twitter.com/exsoy_bot</a></p>			<br>

			<p>あまり手の内をあかすと逆につまらなくなっちゃうので、この辺から推測して色々試してみてください。</p>
			<p><a href="http://twitter.1x1.jp/search/?source=&keyword=exsoy_bot" target="_blank">http://twitter.1x1.jp/search/?source=&amp;keyword=exsoy_bot</a></p>			<br>

			<h4>コーパスの作り方</h4>
			<p>ちなみにexsoy_botを作るにあたって、exsoyと旧exsoyのtwitterページをスクレイピングしてコーパスを作りました。何かの役に立つかもしれないので、コードを載せておきます。途中でタイムアウトした場合の例外処理はしてないので、そのときはpageをいじって切れたところからやりなおせばいいと思います。</p>
			<p>それにしてもhpricot便利！</p>
<pre class="syntax-highlight">
<span class="synPreProc">require</span> <span class="synSpecial">'</span><span class="synConstant">rubygems</span><span class="synSpecial">'</span>
<span class="synPreProc">require</span> <span class="synSpecial">'</span><span class="synConstant">hpricot</span><span class="synSpecial">'</span>
<span class="synPreProc">require</span> <span class="synSpecial">'</span><span class="synConstant">open-uri</span><span class="synSpecial">'</span>

<span class="synIdentifier">$twitter_id</span> = <span class="synSpecial">'</span><span class="synConstant">exsoy</span><span class="synSpecial">'</span>
<span class="synIdentifier">$export_file</span> = <span class="synSpecial">'</span><span class="synConstant">exsoy.txt</span><span class="synSpecial">'</span>

<span class="synPreProc">def </span><span class="synIdentifier">scrape</span>(page)
  doc = Hpricot( open(<span class="synSpecial">&quot;</span><span class="synConstant">http://twitter.com/</span><span class="synSpecial">#{$twitter_id}</span><span class="synConstant">?page=</span><span class="synSpecial">#{page}&quot;</span>).read )
  flag = <span class="synConstant">false</span>
  open(<span class="synIdentifier">$export_file</span>,<span class="synSpecial">'</span><span class="synConstant">a</span><span class="synSpecial">'</span>) <span class="synStatement">do</span> |<span class="synIdentifier">z</span>|
    (doc/<span class="synSpecial">&quot;</span><span class="synConstant">td.content</span><span class="synSpecial">&quot;</span>).each <span class="synStatement">do</span> |<span class="synIdentifier">td</span>|
      entry = href = published = reply = <span class="synSpecial">''</span>
      (td/<span class="synSpecial">&quot;</span><span class="synConstant">span.entry-content</span><span class="synSpecial">&quot;</span>).each <span class="synStatement">do</span> |<span class="synIdentifier">span</span>|
        entry = span.inner_html.gsub(<span class="synSpecial">/</span><span class="synConstant">&lt;.+?&gt;</span><span class="synSpecial">/</span>,<span class="synSpecial">''</span>).strip
      <span class="synStatement">end</span>
      (td/<span class="synSpecial">&quot;</span><span class="synConstant">a.entry-date</span><span class="synSpecial">&quot;</span>).each <span class="synStatement">do</span> |<span class="synIdentifier">a</span>|
        href = a[<span class="synIdentifier">:href</span>].strip
      <span class="synStatement">end</span>
      (td/<span class="synSpecial">&quot;</span><span class="synConstant">abbr.published</span><span class="synSpecial">&quot;</span>).each <span class="synStatement">do</span> |<span class="synIdentifier">abbr</span>|
        published = abbr[<span class="synIdentifier">:title</span>].strip
      <span class="synStatement">end</span>
      (td/<span class="synSpecial">&quot;</span><span class="synConstant">a[text()*='in reply to']</span><span class="synSpecial">&quot;</span>).each <span class="synStatement">do</span> |<span class="synIdentifier">a</span>|
        reply = a[<span class="synIdentifier">:href</span>].strip
      <span class="synStatement">end</span>
      z.puts [entry, href, published, reply].join(<span class="synSpecial">&quot;\t&quot;</span>)
      flag = <span class="synConstant">true</span>
    <span class="synStatement">end</span>
  <span class="synStatement">end</span>
  flag
<span class="synPreProc">end</span>

page = <span class="synConstant">0</span>
<span class="synStatement">while</span> scrape(page+=<span class="synConstant">1</span>)
  puts page
<span class="synStatement">end</span>
</pre>

		</div>
]]></description>

			<dc:creator>leibniz</dc:creator>

			<pubDate>Sun, 24 Feb 2008 15:00:00 GMT</pubDate>



		</item>

		<item>
			<title>exsoy_botを作ったよ</title>
			<link>http://twitter.g.hatena.ne.jp/leibniz/20080224</link>

			<description><![CDATA[
		<div class="section">
			<p>exsoyがあまりにもかわいくて……かわいくて……かわいくて……作ってしまったよ！</p>
			<p><a href="http://twitter.com/exsoy_bot" target="_blank">http://twitter.com/exsoy_bot</a></p>			<br>

			<h4>使い方</h4>
			<p>とりあえずfollowする（しなくてもいいけど、返信がわからんので）</p>
			<p>そして、</p>
			<p>@exsoy_bot おはよう</p>
			<p>とか書くと、愛らしく返答してくれるよ。</p>
			<p>初めてのreplyに対して、follow返しとはじめましての挨拶をしてくれる。</p>
			<p>現在のところ対応してるのは、</p>
			<ul>
				<li>おはよう</li>
				<li>おかえり（ただいまーに対して）</li>
				<li>おやすみ</li>
				<li>いってらっしゃーい(いってくるーに対して)</li>
				<li>&lt;3（ハート）</li>
			</ul>
			<p>です。</p>
			<p>適当に判定してるので、「@exsoy_bot おはー」とか「@exsoy_bot ただいもー」とかでも対応してくれるよ。（逆に言うと誤判定しまくるよ）</p>
			<p>あとは、オススメのマンガとか聞いてみるといいんじゃないかな。</p>			<br>

			<h4>実装</h4>
			<p>ruby&sqliteで動いてます。</p>
			<p>とりあえず動けばいいやということで、やっつけすぎるソースになっちゃった。</p>
			<p>語彙はtwitter検索を使い、半自動で収集。いまのところそれぞれが50フレーズ近くあります。</p>
			<p>レンタルサーバとかでなく自前のPCで動かしてるので、いきなり動かなくなったりするかも。</p>			<br>

			<h4>注意！</h4>
			<p>botだからといって、心ない言葉を投げかけちゃ、ダメ絶対！</p>
			<p>本物のexsoyだと思って、可愛がってやってください。</p>
		</div>
]]></description>

			<dc:creator>leibniz</dc:creator>

			<pubDate>Sat, 23 Feb 2008 15:00:00 GMT</pubDate>



		</item>

		<item>
			<title>小心者忘年会</title>
			<link>http://twitter.g.hatena.ne.jp/leibniz/20071113</link>

			<description><![CDATA[
		<div class="section">
			<p>口は災いの元、適当につぶやいたらオフをやることになってました。</p>
			<p>ついったー忘年会みたいな大人数とか無理だよ！という肝っ玉の小さい人たちのためのオフです。</p>			<br>

			<h4>小心者忘年会――やったよ！こんな僕でもリア充になれたよ！――</h4>
			<p>内容：<a href="http://twitter.com/ka_o_ri" target="_blank">@ka_o_ri</a><del datetime="2007-11-22T17:25:41+09:00">不在</del>の誕生会</p>
			<p>日程：12/15（土曜）18時～</p>
			<p>集合場所：17：50に<a href="http://tinyurl.com/2euq9s" target="_blank">ここに集合！</a></p>
			<p>お店：<a href="http://www.hotpepper.jp/A_20100/strJ000005937.html" target="_blank">町家和食 京町恋しぐれ 新宿のクーポン・店舗/ホットペッパーFooMoo</a></p>
			<p>条件：<a href="http://twitter.g.hatena.ne.jp/U-ta/20071025/1193277992" target="_blank">twitter忘年会</a>に参加してないこと</p>
			<p>予算：3000円～4000円</p>
			<p>給仕係：<a href="http://twitter.com/cnpn" target="_blank">@cnpn</a></p>			<br>

			<h4>参加メンバー：15人</h4>
			<p><a href="http://twitter.com/monado" target="_blank">@monado</a></p>
			<p><a href="http://twitter.com/jazzanova" target="_blank">@jazzanova</a></p>
			<p><a href="http://twitter.com/riko" target="_blank">@riko</a></p>
			<p><a href="http://twitter.com/ma_shimaro" target="_blank">@ma_shimaro</a></p>
			<p><a href="http://twitter.com/os0x" target="_blank">@os0x</a></p>
			<p><a href="http://twitter.com/ynk" target="_blank">@ynk</a></p>
			<p><a href="http://twitter.com/rawpower521" target="_blank">@rawpower521</a></p>
			<p><a href="http://twitter.com/MondoBuzz" target="_blank">@MondoBuzz</a></p>
			<p><a href="http://twitter.com/kusigahama" target="_blank">@kusigahama</a></p>
			<p><a href="http://twitter.com/Metaphone" target="_blank">@Metaphone</a></p>
			<p><a href="http://twitter.com/bulkneets" target="_blank">@bulkneets</a></p>
			<p><a href="http://twitter.com/hazy_moon" target="_blank">@hazy_moon</a></p>
			<p><a href="http://twitter.com/tily" target="_blank">@tily</a></p>
			<p><a href="http://twitter.com/video_" target="_blank">@video_</a></p>
			<p><a href="http://twitter.com/ka_o_ri" target="_blank">@ka_o_ri</a></p>			<br>

			<h4>妄想</h4>
			<p>小心者ってハジけると凄いじゃないですか。だから、こんなイベントがあったらいいですね。</p>
			<ul>
				<li>jazzanovaによる U S A 1987 腹踊り！</li>
				<li>rikoがust越しにoqunoと最終対決だ！</li>
				<li>ma_shimaroが大迫力のケーキ大食いに挑戦！</li>
				<li>os0xがグリモンでtwitter生ハック！</li>
				<li>ynkオーボエとtily笛のアドリブセッション！</li>
				<li>rawpower521が所望するワカメ酒の餌食になるのは誰か？</li>
				<li>MondoBuzzの下ネタ百連発！</li>
				<li>kusigahamaの隠し球、ついにあの犬ビームが正体を現す！</li>
				<li>Metaphoneのサブカル講義も見逃せない！</li>
				<li>bulkneetsがjavascriptを駆使して5分で作る最速rssリーダー！</li>
				<li>hazy_moonの生朗読に悶えろ！</li>
				<li>video_師匠のヴィデオアートに酩酊！</li>
				<li>合唱でka_o_riにハッピーバースデー</li>
			</ul>			<br>

			<h4>備考</h4>
			<p>参加者で、やっぱダメとかはおはやめに。</p>
			<p>現時点で参加もキャンセル待ちも受け付けておりません。</p>
		</div>
]]></description>

			<dc:creator>leibniz</dc:creator>

			<pubDate>Mon, 12 Nov 2007 15:00:00 GMT</pubDate>



		</item>

	</channel>
</rss>
