2002-06-09
タイトル
普段使ってる Mozilla ではめもプリがしんどいのでやめ。なんとなくタイトルを置いてみました。手書き。
_ 音楽
ぴたテンを見てたらなんとなくトレジャーハンター G の音楽を思い出しました。CD 置場のかなり奥底に眠ってて、埃被ってて大変。サントラの CD から mp3PRO に encode 。久しぶりに聞きました。ああまさにゲームミュージック。
このサントラの面白いところは曲名。たとえばこう。この辺はラスボスからエンディングの曲なんだけどこの曲名。
18_死ぬかもしんない.mp3 19_演歌見習.mp3 20_演歌の帝王.mp3 21_雨の長浜岬.mp3 22_ACROSS_THE_WORLD.mp3
あと、せっかくなので MACROSS PLUS の音楽も mp3PRO に encode 。そいや、for fans only な CD に菅野よう子のこんな言葉があったよ。
「大人が本気で遊ぶとすごいんだぞ。」
やっぱすげぇよ。ヲレこんなこと言えないもん。
_ メガネ
というわけでメガネを改修。
メガネ改修よろしく〜と店員に言ってから出来上がるまで 1 h 暇潰してろということで、玉川高島屋の地下にあるミラにて暇潰し。新しいケーキかしら。
ほどよく時間を潰してメガネを改修。新しいやつ。3 段階ほどアップしたそうな。なにが。1 段階が視力でいうと 0.25 くらいになるそうです。
玉川高島屋からの帰路にさっそく着用。世界が違うっすよダンナ。いままで使っていたメガネは左右の視力のバランスが悪かったのですね。どーりでなんか違和感があると思ってたんだ。
今日は目当ての店員さんが居なかったのでショボーン。もう当面来ないけど。
2003-06-09
_ 朝
ああいかん。ヤバい兆候だ。
_ ジャンプ
週間少年のやつ。HUNTER X HUNTER は相変わらず炸裂してた。ていうかワンピースはそーいう展開かよっ。
_ むぅ
たくみさま離脱か。うーむ。
_ ISP とフレッツスクウェアに同時接続
そんな話題が rt100i-users に流れた。こんなのがあったのか。
2004-06-09
2005-06-09
_ 仕事
0750 へいしゃー。
_ 会議
毎週恒例のグループ会議というのがある。
私が所属しているグループ 6 人での現状報告会議である。
しかし、この会議の空気が悪い。険悪な雰囲気というか。
そのように感じているのは私だけかもしれないけど。
会議してても面白くない。
というかやりたくない。
なぜ険悪だと感じるのか。
もうしばらく観察してみよう。
_ ICVSOC構成員
成り立ちなどの詳しいことは知らないのだけど IRC には太古の昔から ICVSOC という組織が存在している。
と思ったら説明しているのですね。ああでも「 あゆみ 」などのページが 404 Not Found ですわっ
ICVSOCとは? が ジョーク RFC みたいでナイスです。
さて、ICVSOC 構成員になる条件は以下だろうか。
- IRC チャネル %CV に居る
- 濃い
私は %CV には居るのだけど、いわゆる「 濃いひと 」ではなく、活動範囲も狭く、存在感も薄いために ICVSOC 構成員ではなかった。
目立ちたがりな私にとって ICVSOC 構成員になり尊称を与えられることはじつはちょっとした野望であった。
先日までは ICVSOC 構成員に nick は載っていた。しかし尊称がなかった。いつかヲレもー などと思いつつ悶え悶えて はや幾年。
そしてとうとう最近のロマサガ旋風や双子ブームの追い風もあり尊称を与えられた次第である( 2005-06-06 )。
ついにねんがんの尊称を手に入れたぞ!
みたいな。
自分がネタになることは大好きなので本心では喜んでます。
精進しないと。
ちなみに ICVSOC 構成員の尊称と IRC nick とリアルネームの対応はほとんど分かりません笑
_ 飯
たけのこごはん、コールスロー、味噌汁。

たけのこごはんは醤油の量をいつもより 2 倍にしてみた。
晶かに色が変わったのだけどちとしょっぱいな...。
食卓にビールを。

畑亜貴さんが白ビールを飲んでいた ので買ってみたけど、なんか、いまいちうまくないな。
色が白っぽいし。
ああ、だから白ビールというのか。
久しぶりに酒を飲んだらものすごく酔っ払ってしまった。
_ Microsoft Windows Media Player
清水愛 箱入り柘榴姫 を聴いてるときにうにょうにょと遊んでいたらこんなエフェクトを発見した。
ザ・ワールド。
ただそれだけ。

って 箱入り柘榴姫は今月で終わりだってー。
畑亜貴を出せー。そっちかよ。そっちです。
2006-06-09 :-)
_ 飯
きくらげの炒め煮、キャベツと豆腐のとろみ汁。
まぐろかぶと煮がまだあったので消費した。

- きくらげをお湯に入れて戻す
- フライパンにごま油を入れて熱する
- きくらげを入れて強火で炒める
- 豆板醤を入れて混ぜる
- しょうがとねぎを入れて混ぜる
- 酒、醤油、砂糖、水をテキトーに入れる
2007-06-09 :-(
_ [Ruby][日本Ruby会議2007][RubyKaigi2007]日本 Ruby 会議 2007 1 日目
Ruby のプログラムほとんどさっぱり書いてないしいまだにファイル開閉の仕方も身についていないのだけどせっかくだから行ってきました。
受付
入場したらネックストラップを受け取りました。自分の名前を書いて首にぶらさげます。


RubyKaigi07

カバンを貰いました。No Ruby, No Life

IRC
IRC チャネルが用意されてました。講演プレゼンテーションのスライドスクリーンの横に IRC の画面が映されてました。Binary 2.0カンファレンス2006[ 2006-12-15 ]のときも IRC チャネルがありましたね。Binary 2.0カンファレンス2006 のときは私は会場に行かなかったので( チケット買えなかった ) IRC に参加したのだけど、IRC はそれはそれでものすごい盛り上がってて面白かったです。今回の日本 Ruby 会議でも講演に対して IRC に居るひとから鋭いツッコミが入ったりしてました。その模様を写しているスクリーンを見ていた観客から爆笑が起きたり歓声が起きたりして面白かったです。
プログラム
1 日目のプログラムはこちらです。
講演者も客席もなんだか Macbook が多かったです。
以下メモしたところだけ。
Ruby 1.9実装の現状と今後 (ささだ こういち)
- Ruby 1.9.1 は 2007-12-25 リリース!
- VM を導入する → VM 速いよ
- 並列処理に対応すると既存のライブラリがほとんど使えなくなるので並列処理は対応しない
- 継続かわいいよ、継続
- Fiber 入れる ( Fiber ってこれか → [ 2006-07-02 ] )
- リリースしないとバグが減らない
JRuby: Ruby for the Java Platform (Charles Nutter / Thomas Enebo)
講演者は sum.com のひと。普通に英語をしゃべるんですが英語はさっぱり分からないです orz
- JRuby 1.0 Release!
- デモを動かしてた
- タイピング速い! これがプログラマというものか
- DB と Java の資産を Ruby から使える → ウマー
- 質疑応答も英語。わかんない orz
セッション 弐 13:00 - 14:00 基調講演 (まつもと ゆきひろ)
- 2007年とその先のRuby
- Ruby 2.0 は Perl6 の 2 年後に出す :-)
- Perl はニンジン
- 「 飲み屋で『キーワード引数を実装しようぜ』と盛り上がった、しかしよく検討してみたら無理だと気づいた」
- → IRC からツッコミ「 所詮飲み屋の妄想 」
以降のセッション参も聞いたのだけど、どうにも全身がだるくて講演の半分くらいを寝てました。体力の限界を感じたので途中で引き上げました。うう。ライトニングトークスは楽しみににしていたのに orz
_ [おひる][すぎやまこういち][やぶそば][じゅんさいそば]おひる
すぎやまこういちさんのお気に入りの店を探訪するよシリーズ。
日本 Ruby 会議のお昼の休憩時間に神田の「やぶそば」へ行ってきました。
手前に看板がありました。

店の入り口です。

12:00 ころに到着したら 10 人くらい行列がありました。店内は満席に近いんじゃないかしら。5 分くらい待機してお店に入りました。メニューに「 いまのお勧め 」とあったので じゅんさいそばです。

ref.
_ [4行日記]4行日記
- 【事実】ウェブ巡回した
- 【気づき】光田康典さんのブログを読んだ( MITSUDA'S DIARY m(_ _)m。コンサートがあることを知った。すでに申し込み終了だった。「Destiny : Dreamer's Alliance」前売チケットお申込フォーム。なんてこった。平日に仕事場でウェブ巡回してるんだが、「 1. 光田康典さんのブログは RSS 全文配信してない」「 2. fc2.com ブログは仕事場からアクセス禁止されてるので全文を確認しようとしても出来ない 」ということでさっぱりチェックできていなかった。全文を見てなかったから見逃してたかもしれない。
- 【教訓】たくみから「 アクセス禁止されてるならケータイを使えばいいのに 」と助言を貰った
- 【宣言】ケータイも活用して情報を逃さないようにする。通勤、帰宅中にケータイでウェブ巡回すればいいか。もしくはブックマークしておいて【あとで読む】
メールマガジンもいま読みました orz
【Hopeful Weeds Vol.28】光田康典&崎元仁氏主催のコンサート開催決定!!
ああああ予定曲目に「ラクガキ王国2〜魔王城の戦い〜 」とか「Colors of Life / Lia」とか「ロミオ×ジュリエット」とかありますよ....orz 。Lia が来るのかしら。それはないか。
2008-06-09 :-)
_ 朝ったー
0530 起床。
_ [キングダムハーツ2][下村陽子][宇多田ヒカル]通勤ったー
キングダムハーツ2
ゲーム未プレイ。作曲は下村陽子さん。「Passion」を宇多田ヒカルさんが歌っています。
ディズニーとファイナルファンタジーシリーズとのコラボレーション作品( ref. キングダムハーツII - Wikipedia )となっているようにディズニーの曲や FF の曲( 「One-Winged Angel」( FF7「片翼の天使」) )もあります。「Fragments of Sorrow」など前作( キングダムハーツ1 )から流用している曲もいくつかあります。登場するキャラクター( やそのキャラクターが所属する世界 )が多彩なために曲も多彩です。
「Swim This Way」のように歌が付き、ミュージカル風味な曲があるんですが、どうも聴いていてもノリ切れないというか盛り上がり切れません。歌は要らないんじゃないかなあ。ゲームの演出なのだろうけど。
B000BRWJ9C
_ 仕事
0830 出勤。
_ [Plan9][NetBSD][puffs][FUSE]NetBSD puffs の文脈で登場する「9P」ってなに?
ref. Filesystems in userspace: puffs, refuse, FUSE, and more
9P file servers
man mount_9p
The mount_9p program is used to mount a file hierarchy served with the Plan 9 file sharing protocol
_ オレオレ
あーなにここってオレオレ証明書使ってるんですね。
_ 電車内で PSP をよく見かける
周囲 6 人のうち 4 人が PSP 使ってるとかよく見かけます。何のゲームやってるか見てないけど。
2010-06-09 :-)
_ 朝ッ
0520 起床
_ [プログラミング][自習][勉強]もう一つ別の言語を学ぶには
抜粋
- 即座にコーディングを始める
- プロジェクトを立ち上げる
- e.g. C# で FTPクライアント
- ウィンドウ, aero, ソケット, マルチスレッド
- クラスコンストラクタ, 型変換, パスワード暗号化
- プロジェクトを移植
- 1 対 1でもおk
- e.g. C# で FTPクライアント
- ほかの人の書いたコードを読む
- SourceForge, Google Code, github
- その言語についての良い本を読む
_ 接骨院行ってきた
肩こりの自覚はなかったんだが( 肩こりがどういうものか分からなかったので自分が肩こりなのかそうでないのか判断できなかった )先日知り合いから「肩こってる」といわれたので診断してもらう意味で人生初の接骨院に行った。当初は整体に行くつもりだったんだけどまあいいや
オレ「肩こってる?(・ω・)」
院長「こってる ヽ( ´ー`)ノ」
_ [hns][tdiary]hns から tdiary へデータを移行した
概要
hns のころの日記を見ようとして【中略】 hns を動作させるのが面倒くさくなったので移行してみることにした。
これ
tDiary-users wiki - hnsから移行したいのですが、データの移行方法はありますか?
環境
- tDiary version 2.3.3.20090826
- Ruby version 1.8.7-p174
ツール
最新(?)の 移行ツールがこちら nemuiDoc: Hns2TDiary
手元だと tdiary データの文字コードが UTF-8 だったりするので変更しておく
--- hns2td.src 2003-05-20 19:06:49.000000000 +0900
+++ hns2td 2010-06-09 20:12:10.000000000 +0900
@@ -22,9 +22,11 @@
# *SUB changed: b -> h4
#
-$KCODE = 'e'
+$KCODE = 'u'
require 'tdiary'
+require 'cgi'
+require 'kconv'
module TDiary
class TDiaryConvert < TDiaryBase
@@ -444,7 +446,7 @@
def convert(filename)
y, m, d = filename.scan(/(\d\d\d\d)(\d\d)(\d\d)/)[0]
@date = Time::local y, m, d
- @body = File::readlines(filename).join.to_euc
+ @body = File::readlines(filename).join.toutf8
@title = ''
@io.transaction(@date) do |diaries|
@@ -466,7 +468,9 @@
end
end
-tdiary = TDiary::TDiaryConvert.new(nil, nil, TDiary::Config.new)
+cgi = CGI::new
+conf = TDiary::Config.new( cgi )
+tdiary = TDiary::TDiaryConvert.new(cgi, nil, conf )
ARGV.each do |f|
tdiary.convert f
移行手順
~/diary-hns に hns のデータがあり、~/diary に既存の tdiary データがある。hns の 2003年5月と tdiay の 2003年5月が重なってるはずなので( そのときに tdiary を使い始めたため ) 念のため tdiary データをコピーしておく( 結局これは杞憂だった。hns2td がイイ感じにマージしてくれるようだ )
% cd ~ % cp ~/diary ~/diary.td % cd ~/public_html/diary % ./hns2td ~/diary-hns/200?/*.hnf
コンバートされた箇所を確認しておく。
rin@hitomi[~]% diff -uqr diary.td diary
結果
hns の「場所」がセクションになったりしてるけど、まあじゅうぶんだろう。
一番古いのはこちら [ 20010801 ]
昔のほうが日記らしかったなあ。
_ RR7愛車の変遷
ビゾンテ
アベイユ
マグニフィコ
ベイヨネット ←DYN車練習開始
エスペランザ
フィエラ
スザク
ベイヨネット ←交流戦前
フィエラ ←交流戦後
アベイユ ←STD車レース前後
フィエラ ←いまここ
2011-06-09 :-(
_ 午後
1300 行列計算
_ [NetBSD][IPv6]hubertf's NetBSD blog - NetBSD and the World IPv6 Day
June 8th 2001 was announced as World IPv6 Day, where some major websites would increase adoption of the "new" internet protocol by actually using it.
2001 年 6 月 8 日 { 2011 年だよね?? } World IPv6 Day が告知された。いくつかの有名なウェブサイトは 新しい インターネットプロトコルを実際に使用することにより少しずつ採用している。
Interested NetBSD users have a variety of options to get NetBSD to talk IPv6, and Eric Haszlakiewicz has posted about his experience: ``If anyone else has been putting off setting this up because it seemed like it would be hard to do, I urge you to give it a shot.''
面白いNetBSD ユーザーは 様々なオプション により NetBSD で IPv6 をしゃべらせることが出来る。Eric Haszlakiewicz は 彼の経験について投稿した。「他にこれを設定するひとが居ないと、それをやるにはしんどいので、みんなもやろうよ」
To test ones IPv6 connectivity, there are several websites available.
2013-06-09 :-)
_ [はてな][スクレイピング][ruby][mechanize]はてなブログをスクレイピングする
# coding: utf-8
# hatenablog をスクレイピング
#
# 使い方:
# hatenablog.rb <hatenablog URI> [カテゴリ]
#
# 例:
# ruby hatenablog.rb http://jkondo.hatenablog.com/ > jkondo.txt
#
# ruby hatenablog.rb http://dennou-kurage.hatenablog.com/ 仕事観 > kurage.txt
#
require 'mechanize'
require 'uri'
require 'pp'
def get_text(uri)
agent = Mechanize.new
agent.get(uri)
texts = ""
while true
agent.page.at("//div[@class='entry-content']").children.each {|node|
text = node.text
texts << text
}
link = agent.page.link_with(:text => '次のページ')
break if link == nil
agent.page.link_with(:text => '次のページ').click
end
return texts
end
def main(argv)
uri_base = argv[0]
cat = ""
if argv[1] != nil
cat = "category/" + URI::encode(argv[1])
end
uri = uri_base + cat
text = get_text(uri)
puts text
end
main(ARGV)
_ [自然言語処理][係り受け解析][構文解析][ruby][NLP]テキストを係り受け解析する
前提
テキスト解析サンプルコード:係り受け解析 - Yahoo!デベロッパーネットワーク
日本語係り受け解析API の制限が以下のようになっている。
日本語係り受け解析Web APIは、24時間以内で1つのアプリケーションIDにつき50000件のリクエストが上限となっています。また、1リクエストの最大サイズを4KBに制限しています。詳しくは「利用制限」をご参照ください。
UTF-8 エンコード 1 文字は最大 4 バイトでエンコードされるとする。
それを URI.encode すると最大 12 バイトになると見積もる
( たとえば 4 バイト 0xAA 0xBB 0xCC 0xDD であるとすると、これが URI.encode されるとテキストで表現されるので %AA %BB %CC %DD の 12 文字、つまり 12 バイトになる )
↓リクエストパラメータのうち &sentence= までで 152 バイトある。
http://jlp.yahooapis.jp/DAService/V1/parse?appid=<あなたのアプリケーションID>&sentence=
↓リクエストに指定できる sentence としては 3848 バイト。
(4 * 1000) - 152 = 3848
上述のように 1 文字 12 バイトとして 320 文字まで指定できる。
3848 / 12 = 320
320 文字はギリギリなので、これをプログラムで扱うときは。まあざっくり 300 文字までとしてみる。
与えられたテキストが長文だった場合を考慮して、最初に「。」でぶったぎっておいて、300 文字を超えないように文を再度連結していく。しかしそもそも「。」までが 300 文字を超えるような文もあるわけだが、それは無視する(どこで区切るのか割りと重要かもそれんけどよく分からないのでスルー)。
実装
とりあえず作ったのがこちら。
syntactic.rb としておく。
# coding: utf-8
# Yahoo デベロッパーネットワーク の 日本語係り受け解析API を使う
# http://developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html
require 'uri'
require 'open-uri'
require 'rexml/document'
require 'pp'
module NLP
module Syntactic
SENTENCE_LENGTH_MAX = 300
def parse(xml)
syntactic ||= []
doc = REXML::Document.new(xml)
doc.elements.each('ResultSet/Result/ChunkList/Chunk') do |chunk|
chunks = ""
chunk.elements.each('MorphemList') do |ml|
ml.elements.each("Morphem/Surface") do |mo|
chunks << mo.text
end
end
syntactic << chunks
end
return syntactic
end
def build_sweep(text)
text.gsub!("\n", "")
text.rstrip!
text.lstrip!
text.gsub!(/\A +/, "")
text.gsub!(/ /, "")
text.chomp!
text.gsub!(/[\r\n]/, "")
return text
end
def build_sentence(text)
text = build_sweep(text)
request_sentence ||= []
if text.length < SENTENCE_LENGTH_MAX
request_sentence << text
else
lump = ""
text.split(/。/).each {|sentence|
s = sentence + "。"
if (lump + s).length < SENTENCE_LENGTH_MAX
lump << s
else
request_sentence << lump
lump = ""
lump << s
end
}
end
return request_sentence
end
# 文章が長いのは無視
def _analysis(text)
apiuri = "http://jlp.yahooapis.jp/DAService/V1/parse"
appid = "?appid=" + ここにあたなのAPI IDを入れる
sentence = "&sentence=" + URI.encode(text)
request_uri = apiuri + appid + sentence
syntactics = ""
begin
response = open(request_uri).read()
syntactics = parse(response)
rescue => e
end
return syntactics
end
def analysis(text)
syntactics ||= []
sentences = build_sentence(text)
sentences.each {|s|
syntactics << _analysis(s)
}
return syntactics
end
end
end
使うときはこう。
# coding: utf-8
#
# 与えられたファイルを係り受け解析する
#
require 'pp'
require './syntactic'
include NLP::Syntactic
def build(text)
return NLP::Syntactic::analysis(text)
end
def read(text)
File.open(text).read
end
def main(argv)
infile = argv[0]
text = read(infile)
syntactic = build(text)
puts syntactic.join("\n")
end
main(ARGV)
_ [ベイズ][自然言語処理][ナイーブベイズ][ruby][NLP]文章をナイーブベイズする
以前作業しておいたナイーブベイズ[ 20130505#p04 ] を利用する。
# -*- encoding: utf-8 -*-
#
# ナイーブベイズを用いたテキスト分類 - 人工知能に関する断創録
# http://aidiary.hatenablog.com/entry/20100613/1276389337
#
def maxint()
return 2 ** ((1.size) * 8 -1 ) -1
end
def sum(data)
return data.inject(0) {|s, i| s + i}
end
include Math
require 'pp'
require 'json'
require 'yaml'
module NLP
# Multinomial Naive Bayes
class NaiveBayes
def initialize()
# カテゴリの集合
@categories = []
# ボキャブラリの集合
@vocabularies = []
# wordcount[cat][word] カテゴリでの単語の出現回数
@wordcount = {}
# catcount[cat] カテゴリの出現回数
@catcount = {}
# denominator[cat] P(word|cat)の分母の値
@denominator = {}
end
# ナイーブベイズ分類器の訓練
def train(data)
data.each {|d|
cat = d[0]
@categories << cat
}
@categories.each {|cat|
@wordcount[cat] ||= {}
@wordcount[cat].default = 0
@catcount[cat] ||= 0
}
# 文書集合からカテゴリと単語をカウント
data.each {|d|
cat, doc = d[0], d[1, d.length-1]
@catcount[cat] += 1
doc.each {|word|
@vocabularies << word
@wordcount[cat][word] += 1
}
}
@vocabularies.uniq!
# 単語の条件付き確率の分母の値をあらかじめ一括計算しておく(高速化のため)
@categories.each {|cat|
s = sum(@wordcount[cat].values)
@denominator[cat] = s + @vocabularies.length
}
end
# 事後確率の対数 log(P(cat|doc)) がもっとも大きなカテゴリを返す
def classify(doc)
best = nil
max = -maxint()
@catcount.each_key {|cat|
_p = score(doc, cat)
if _p > max
max = _p
best = cat
end
}
return best
end
# 単語の条件付き確率 P(word|cat) を求める
def wordProb(word, cat)
return (@wordcount[cat][word] + 1).to_f / (@denominator[cat]).to_f
end
# 文書が与えられたときのカテゴリの事後確率の対数 log(P(cat|doc)) を求める
def score(doc, cat)
# 総文書数
total = sum(@catcount.values)
# log P(cat)
sc = Math.log((@catcount[cat]) / total.to_f)
doc.each {|word|
# log P(word|cat
sc += Math.log(wordProb(word, cat))
}
return sc
end
# 総文書数
# def to_s()
# total = sum(@catcount.values)
# return "documents: #{total}, vocabularies: #{@vocabularies.length}, categories: #{@categories.length}"
# end
end
end # end of module
if __FILE__ == $0
# Introduction to Information Retrieval 13.2の例題
data = [
["yes", "Chinese", "Beijing", "Chinese"],
["yes", "Chinese", "Chinese", "Shanghai"],
["yes", "Chinese", "Macao"],
["no", "Tokyo", "Japan", "Chinese"]
]
# ナイーブベイズ分類器を訓練
nb = NLP::NaiveBayes.new
nb.train(data)
p nb
puts "P(Chinese|yes) = #{nb.wordProb('Chinese', 'yes')}"
puts "P(Tokyo|yes) = #{nb.wordProb('Tokyo', 'yes')}"
puts "P(Japan|yes) = #{nb.wordProb('Japan', 'yes')}"
puts "P(Chinese|no) = #{nb.wordProb('Chinese', 'no')}"
puts "P(Tokyo|no) = #{nb.wordProb('Tokyo', 'no')}"
puts "P(Japan|no) = #{nb.wordProb('Japan', 'no')}"
# テストデータのカテゴリを予測
test = ['Chinese', 'Chinese', 'Chinese', 'Tokyo', 'Japan']
puts "log P(yes|test) = #{nb.score(test, 'yes')}"
puts "log P(no|test) = #{nb.score(test, 'no')}"
puts nb.classify(test)
end
_ [構文解析][係り受け解析][社畜][ベイズ][自然言語処理][ナイーブベイズ][ruby][NLP]文章が社畜的かどうかをナイーブベイズ推定する
準備
社畜的文章の学習データとして 脱社畜ブログ のカテゴリ 仕事観 を利用する。
非社畜的文章の学習データとして jkondoのはてなブログ を利用する。
先ほどのコード[ 20130609#p04 ]でスクレイピングする。
% ruby hatenablog.rb http://jkondo.hatenablog.com/ > jkondo.txt
% ruby hatenablog.rb http://dennou-kurage.hatenablog.com/ 仕事観 > kurage.txt
先ほどのコード[ 20130609#p05 ]で係り受け解析しておく
% ruby parse.rb kurage.txt > kurage.2.txt
% ruby parse.rb jkondo.txt > jkondo.2.txt
判定の実装
先ほどのナイーブベイズのコード [ 20130609#p06 ] を利用する。
企業戦士として名高い クラウド・ストライフさん のセリフを社畜判定してみる。( FFシリーズ セリフ人気投票 )
# coding: utf-8
require './naivebayes'
require './syntactic'
include NLP::Syntactic
def get_words(text)
words = NLP::Syntactic::analysis(text)
words.flatten!
words.map! {|w|
w.gsub(/[、。\n]/, "")
}
return words
end
def build_learning(filepath, cat)
lines = File.open(filepath).readlines()
lines.map! {|w|
w.gsub(/[、。\n]/, "")
}
data = [cat, *lines]
return data
end
def classify(nb, text)
words = get_words(text)
cat = nb.classify(words)
# puts nb.score(words, "社畜")
# puts nb.score(words, "人間")
return "#{text} => #{cat}"
end
def main(argv)
shatiku_file = argv[0]
not_shatiku_file = argv[1]
shatiku_data = build_learning(shatiku_file, "社畜")
not_shatiku_data = build_learning(not_shatiku_file, "人間")
nb = NLP::NaiveBayes.new
nb.train([shatiku_data])
nb.train([not_shatiku_data])
text = %w(
興味ないね
エアリスはもう喋らない・・・笑わない・・・泣かない、怒らない・・・!
大切じゃない物なんか無い!
俺は俺の現実を生きる
俺は、お前の生きた証だ
指先がチリチリする。口の中はカラカラだ。目の奥が熱いんだ!
オレが・・・お前の生きた証・・・
引きずりすぎて少しすり減ったかな・・・
お前の分まで生きよう。そう決めたんだけどな…
もう・・・揺るがないさ・・
帰るぞ
俺は幻想の世界の住人だった。でも、もう幻想はいらない……俺は俺の現実を生きる
ここに女装に必要な何かがある。おれにはわかるんだ。いくぜ!
星よ・・・降り注げ!!
罪って…許されるのかな?
まだ終わりじゃない…終わりじゃないんだ!
俺はクラウド、ソルジャークラス1st
)
text.each {|t|
puts classify(nb, t)
}
end
main(ARGV)
実行
% ruby shatiku.rb kurage.2.txt jkondo.2.txt 興味ないね => 社畜 エアリスはもう喋らない・・・笑わない・・・泣かない、怒らない・・・! => 社畜 大切じゃない物なんか無い! => 社畜 俺は俺の現実を生きる => 社畜 俺は、お前の生きた証だ => 社畜 指先がチリチリする。口の中はカラカラだ。目の奥が熱いんだ! => 社畜 オレが・・・お前の生きた証・・・ => 社畜 引きずりすぎて少しすり減ったかな・・・ => 人間 お前の分まで生きよう。そう決めたんだけどな… => 社畜 もう・・・揺るがないさ・・ => 社畜 帰るぞ => 社畜 俺は幻想の世界の住人だった。でも、もう幻想はいらない……俺は俺の現実を生きる => 社畜 ここに女装に必要な何かがある。おれにはわかるんだ。いくぜ! => 人間 星よ・・・降り注げ!! => 社畜 罪って…許されるのかな? => 社畜 まだ終わりじゃない…終わりじゃないんだ! => 人間 俺はクラウド、ソルジャークラス1st => 社畜
ふむ。
2014-06-09 :-(
_ 午後
1300 デバッグしTARI
_ 夜
1700 残業アワー
2130 退勤 || 東京アメッシュを見たら東京都がすげえことになってたんだけど外に出てみたら小降りだった
2230 飯。鮭の味噌焼き? 味噌漬けてフライパンでごーんとしただけ
_ ,
汝、いま何時?
_ ,
life is game.
2019-06-09 :-)
2020-06-09 :-|
_ 労
ストレージ労。今日もパッケージ。
_ ,
帰宅する前に読書。
_ [結目ユイ]結目ユイSHOWROOM配信を見ていた
さすがに全部は無理だったけど。
どうも SHOWROOM はボットが許されるようなので温もりある☆投げ作業はツール(探せばあるらしい)で自動化したい。
。* ❤︎… 本日の配信 …❤︎*。
— 結目ユイ🍸 (@musubimeyui) June 9, 2020
イベント参加中のため、14日まで
SHOWROOMにて毎日配信中🌟
お星さま、カウント等
ぜひよろしくお願いします(ㅅ˙ ˘ ˙ )♡
💗配信先▼
【https://t.co/5fA4KfQdNC】 pic.twitter.com/H5sRYr9NVu
2023-06-09 :-)
_ C2機関佐世保本遠征「艦これ」公式コラボ【Operation SASEBO Expedition 2023】 1日目
2 月に「先行偵察遠征」があり、ついに「本遠征」です。ステージイベント、佐世保市内コラボフード、ラッピングバスなどなどあります。ステージイベントのチケットはこちら C2機関佐世保本遠征「艦これ」公式コラボ【Operation SASEBO Expedition 2023】佐世保鎮守府”SASEBO Special Stage!” - イープラス
JAL 戦略機動
往路のみ利用しました。
長崎空港の出発ロビーにはゴトランドが居ました。到着の通路からは区切られているので遠くから眺めました。
スタンプラリーとか物販とか
すでにスタンプラリーなどは開催されているので現地についてとっとと台紙を買ってスタンプラリーをやります。
物販もいくつか買いました。
西肥バスの一日乗車券。
アクスタはさいちゃん(西肥バスのキャラクター)が買えたので満足。さいちゃんかわいい。
法被も買えました。
現地の企業から歓迎されてます。
JAL の戦略機動にはステージイベントのチケットも付属しているので、現地で引き取ります。チケットと一緒に特典のアクスタも貰います。
パネル
艦娘のパネルがあります。
コラボフード
ラーメンを食べたりします。
コラボフードを食べるとシールが貰えます。全部で 20 種類。
艦娘音頭
夕方から艦娘音頭です。艦娘音頭は海上自衛隊とコラボし、 海上自衛隊は艦娘音頭のためだけにミサイル艇「しらたか」を隣に設置しました。
艦娘遊撃隊も居ます。
艦娘音頭には井料 愛良さんが初登場。タスカルーサ、ヘイウッド、熊野丸の声を充てているそうです。
スペシャルステージ SASEBO前夜祭
京本政樹や伊藤みどりも来て盛り上がりました。
帰路になにかありました。(時雨の衣装らしい)
2024-06-09 :-)
_ よこすかYYのりものフェスタ2024 に行ってきた
土曜日から開催されていて今日は 2 日目。
汐入に 0800 ころ到着。入場列へ。
演奏隊がいた。4, 5 曲演奏していた。
入場
入場したらまっさきに機動船・処分船のチケットへ。昨日 処分船の話題をタイムラインで見かけたので行ってみた。機動船・処分船どちらにするか選べたらしいが先に機動船のチケットが枯渇したので選択の余地なく処分船となった。最初から処分船目当てなのでよし。
ライフジャケットを着る。隊員に着せてもらう。
手荷物を預けて処分船に乗る。手荷物はホテルのクロークのように同じ数字の札が 2 つ用意されて、片方を荷物に付けて、もう片方を持っておく。受け取るときに札を返却する。桟橋の奥に見える黒いボートが処分船。 4 人しか乗れない。膝下にロープが張っていてそれを掴んでバランスをとる。手荷物を持っている余裕はないのだ。
潜水艦「うずしお」を海から見れたりする。
「あきづき」たちも海から見れたりする。
こんなに接近してくれる。
串というやつ。
「もがみ」もこんなに近くから見られる。
「くまの」(2) や「やはぎ」(5) もこんなに近くから見られる。
処分船は大正解だったぜ。機動船もあったが機動船は速く水上を走ってくれるが護衛艦に接近して見せてくれるわけではない。
「もがみ」に乗る。
「もがみ」は船尾しか解放されておらず、且つトラテープの内側からしか撮影できない。格納庫の中に入った位置は撮影禁止である。
最上
こちらは「やはぎ」。つい先日就航したばかり。 三菱重工 | 防衛省向け3,900トン型護衛艦「やはぎ」を長崎にて引渡し 海自護衛艦「やはぎ」完成 防衛省に引き渡し 舞鶴基地に配備|NHK 長崎県のニュース
解放されておらず、外から眺めるだけ。
「てるづき」を見学します。
「てるづき」に居る照月。親子連れがパネルの前で記念撮影などしており大人気でした。
奥に見えるのは照月撮影の待機列です。
艦めし
せっかくだから護衛缶を買った。
ヴェルニー公園でもよこすかYYのりものフェスタ関連のイベントが開催されていて、店があったのでカレーを食べる。「きりしま」と「うずしお」のカレーです。
2025-06-09 :-(
_ Amazon Prime を解約した
いつのまにか契約していたので。 アマゾンも evil だなあ。
なお解約は自分のプロフィールから解約手続きに進んでも下記エラーとなるのでヘルプから進まないといけない。 evil だなあ。
申し訳ありません
大変申し訳ございません。お客様からのご依頼内容を処理中に問題が発生したため、ご要望にお応えできませんでした。
もう一度試してブラウザの [戻る] ボタンをクリックし、リクエストを再度試みてください。
Amazon のホームページに戻るには、ここをクリックしてください
こちらから手続きを進めるのが正解








































































Before...
_ みわ [エネルなり。これで世の子供たちは雷の日でもゴムを装着(ってなんかアレだ)して外に出れば安全と思うようになってしまうの..]
_ たくみ [俺の屍を超えて行け(何]
_ みわ [たくみさまは萌え死んでしまった...]
_ さいき [たくみさまの屍は、高幡不動か高尾にあるんだろうか?(何]
_ のぶ [んじゃ、八王子に1票(何]