2008/02/05

SPARQL - FILTER functions

SPARQLのFILTERに関する話.

などを参考にFILTERを試みる.

PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE {
  ?x dc:title ?title
  FILTER regex(?title, "web", "i" )
}

これはW3Cの解説クエリ例を引っ張ってきたものだが,通常のFILTERはこのように記述できる.
?titleは比較対象であり,webが含まれるものを抽出する.
第三引数の"i"は,case-insensitive(英語での大文字小文字の区別なし)を意味する.

比較対象がintであるならば,

FILTER (?price < 30.5)

このようにさらに単純になる.

--

しかしこの第二引数に日本語を入力するとどうしても比較できず,No Matchという何も抽出されない状況になって非常に困った.これは前々からできなくて何度も挫折してたんだが,今日は気合を入れて検索結果と睨めっこしまくった.

するとhttp://thefigtrees.net/lee/blog/2006/04/sparql_calendar_demo_retrievin.htmlで,


FILTER regex(str(?g_wrapped), str(?g))

こんな表記を発見した.
よくわからないけど,比較対象をstrでくくっていたので,同様にしてみたところなんと解決.
しっかりとフィルタリングされた.


× FILTER ( regex(?s_relate, "年金問題","i"))
○ FILTER ( regex(str(?s_relate), "年金問題","i"))


たったこの違いである.
はじめは日本語だからフィルタがかからないのかと思ったけど,そうじゃないのかもしれない.
多分strでくくることで,その対象がstring型だと指定しているのかな.

でもそうすると,
FILTER regex(?title, "web", "i" )

これは?ってことになる. うーん.


とりあえずこの発見はメチャクチャ大きい.よっしゃああああ!(叫)


[キーワード]SPARQL,FILTER,regex,RDF,OWL

RAPで文字化け

RAPにオントロジーを噛ませると特定の文字のみ化ける.
解決できず(>_<)

とりあえず今のところ文字化けする漢字は以下.

"一"
"通"
"倍"
"瀬"
"言"

ぽたモバ: 文字化けでは,”通””一””瀬”が化けると書かれていて同じような状況.
しかしこのエントリーは,E61での文字化けなので違うのかな.

救いの手求む.

2008/01/31

PHPとMeCabでオートリンクの実装をする2

PHPとMeCabでオートリンクの実装をする の続きエントリー.

上ではMeCabを用いてオートリンクを行う仕組みを作ったので,これをPHPで使うのがこのエントリーの目的.

まず,ウノウではPHPのMecab拡張モジュールを用いている.
ただ俺はPHPからコマンドプロンプトに処理を投げる方式を用いる.
利用する関数はshell_execです.

ポイントはコマンドプロンプトから入力したコマンド
mecab -d.
にある.
このコマンドのドットがカレントディレクトリを指しているので,PHPから利用する場合は絶対パス指定をしてやればOK.

つまり
mecab -d "C:\Program Files\MeCab\dic\autolink"
と同義であるということ.

これを踏まえて簡単なPHPで実装する.

<?php
  echo mecab("京都に行きたいな");

  function mecab($input){
    $mecab = '"C:\Program Files\MeCab\bin\mecab.exe"';
    $mecab2 = '"C:\Program Files\MeCab\dic\autolink"';
    $str= shell_exec('echo '.$input.' '.$mecab." -d ".$mecab2);
    return $str;
  }
?>

で実装ができる.
ソースは適宜変更するべし.

以上.

PHPとMeCabでオートリンクの実装をする

ウノウラボ
PHPとMecabでキーワード自動リンクを実装する(以下,ウノウ)
を参照して,PHPとMeCabを用いたオートリンクの実装をWindowsで試みる.

知識不足のせいでいろいろ戸惑った箇所があったので,俺のようなダメ院生でも理解できるように書く.アドバイスを頂いた研究室の先輩には大感謝.

------

MeCabインストールに関しては割愛.
今回俺は C:\Program Files\MeCab にインストールをした.

-----

自動リンク用辞書の作成
ここはウノウを参照して同じものを作成する.

  • 単語辞書(url.csv)
  • 連接表(matrix.def)
  • 未知語の文字定義(char.def)
  • 未知語用品詞定義(unk.def)
  • 設定ファイル(dicrc)
設定ファイル(dicrc)を普通に作ると.txtになるので注意.
拡張子はありません.
俺は C:\Program Files\MeCab\dic\ipadic の中のdicrcをコピーして中を書き換えた.
もしくは,コマンドプロンプトから C:\Program Files\MeCab\dic\autolink>ren dicrc.txt dicrc とリネームしてもOK.

-----

さて,これらのファイルを用いて辞書のコンパイルを行う.
ウノウの例を見てみると1行目に
# /usr/libexec/mecab/mecab-dict-index -f utf-8 -c utf-8
とある.正直意味不明だった.
この例はLinuxで行ってるため,今回のようにWindowsで行う場合は以下の方法を試す.

まず,1行目にあるmecab-dict-indexに注目する.
C:\Program Files\MeCab\bin の中にmecab-dict-index.exeがあることを確認して欲しい.
他にはmecab.exeなどもある.

ここで確認しておく.
MeCabを使うためのPATHは通してあるだろうか?
俺のインストール先を例にするならば c:\program files\mecab\bin とPATHを通す.
これ必須.

試しにプロンプトでmecab-dict-indexと入力してみる.

C:\>mecab-dict-index
'mecab-dict-index' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。


と出るのであれば,PATHが通ってない.
コマンドプロンプトを立ち上げたり,PATHを見直してみることをお薦めする.

C:\>mecab-dict-index
dictionary_compiler.cpp(70) [param.load(DCONF(DICRC))] no such file or directory: .\dicrc

と表示されるならOKである.

ということで,コンパイルをはじめる.
今回作成したautolinkフォルダまでカレントディレクトリを移動させる.
そこで,以下のコマンドを使用.

C:\Program Files\MeCab\dic\autolink>mecab-dict-index -f shuft-jis -c shuft-jis
エンコードは適宜
C:\Program Files\MeCab\dic\autolink>mecab-dict-index -f UTF-8 -c UTF-8
のように変更すること.

すると何かぐちゃぐちゃと表示された後,最後に「done!」と表示されれば成功だ.
autolinkフォルダのファイルが増えていることを確認しよう.

--

コンパイルに成功したところで,さっそく使ってみる.
コマンドは
C:\Program Files\MeCab\dic\autolink>mecab -d .
である.
その後待機状態になるので入力文を入力する.

C:\Program Files\MeCab\dic\autolink>mecab -d.
京都でムフフなことしたいどすえ
京都でムフフなことしたいどすえ


大成功である.
ちなみに mecab -d . のドットはカレントディレクトリを指すので重要.
ゴミと思って入力し忘れないように.


MeCabを用いたオートリンクの実装に成功した.
ウノウの例では,PHPのMeCab拡張モジュールを用いてPHPの実装を行っているが,今回はコマンドプロンプトを直接介して処理を行う.

これに関しては以下の別エントリーで解説します.
PHPとMeCabでオートリンクの実装をする2

--

参考リンク
http://labs.unoh.net/2008/01/keyword-autolink-using-php-and-mecab.html
http://mecab.sourceforge.net/dic-detail.html
http://d.hatena.ne.jp/tokushiman/20071024/1198588473
http://ratti.kachoufuugetu.net/diary/diary_archive/0710.html(10/25(10/25)の記事

2008/01/22

RDFGravityに投げてみた

今日は他研究室の先輩に研究のお話をして頂いた.
大変貴重なお話や提案をして頂き,研究が一歩前進したと思う.
ありがとうございました.

--
今構築しているオントロジーをRDF Gravity(RDFファイル可視化ツールのようなもの)に投げてみたら凄いことになった笑

2007/12/17

caesar sipher_Java

3年ゼミのプログラミングテーマに「シーザー暗号」というものがある.
恥ずかしながらこの暗号を知らなかったので調べて,Javaで実装してみた.

入力平文 : My name is Kakku.
暗号結果 : Jvk^jbfpH^hhr+
復号結果 : My name is Kakku.

でけてるお.

入力平文 : 今日は良い天気ですね.
暗号結果 : 仇既ぬ?ぁ?气つざな+
復号結果 : 今日は良い天気ですね.

でけてるお.

--

ソース

import java.io.*;
public class Saesar_cipher {
 public static void main(String[] args) throws IOException {
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String keyword = br.readLine();
  String e_text = "";
  String d_text = "";
  char key = 3;

  //暗号化
  for(int i=0; i<keyword.length(); i++)
    e_text = e_text + String.valueOf((char)(keyword.charAt(i) - key));
  System.out.println(e_text);
  //復号
  for(int i=0; i<e_text.length(); i++)
    d_text = d_text + String.valueOf((char)(e_text.charAt(i) + key));
  System.out.println(d_text);
 }
}

2007/09/23

SPARQLを用いたRDF検索 - 01

SPARQL を用いたRDF検索をしてみようと思い,突然始めた.
なんとなく書き留めておく.
ちなみに,SPARQL (SPARQL Protocol and RDF Query Language)とは, RDF クエリ言語.
この言語をJavaのフレームワークであるJenaから実行する.
--

今日は,名前とメールアドレスを記述した簡単なRDFファイルから,それぞれを取り出せるようにした.そのRDFファイルのソースをここに載せたいんだけど,投稿の際に弾かれるので,ダメっぽい.
--

以下がSPARQLのクエリ例

PREFIX foaf: < http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE { ?x foaf:name ?name .?x foaf:mbox ?mbox }
--

以下がクエリ実行結果例

kakaka:mailto:kakaka@kakku.com
Kakku:mailto:kakku@kakku.com
--

ほら,ちゃんと取り出せた.
だから何!?と言われたらそれまでなんだけども.

中間発表(エントリー)で聞いた,K林研の先輩がやられている研究は,この延長上にあるはず.
なんとなく,後を追ってみる.

眠いぜ.

2007/09/02

広がる大学院飛び入学

8/27の日経新聞に「広がる大学院飛び入学」という記事があった.

大学院に飛び級で入学した学生,また飛び入学の実績のある大学院が共に増えているそう.
2005年で,約400人の学生が飛び入学をしているらしいので,きっと僕と同期(2007年入学)は,もっと増えているんだと思う.

実際に「飛び級入学」をした自分から言わせて見ると,メリットよりもデメリットの方が多いような気もするし,それ相応の覚悟が必要だと思う.デメリットと言っても,努力次第で解決できるものもあるから,とにかく「やる気」が漲っている学生なら,是非チャレンジするべき壁だと思う.

2007/08/15

トロイの木馬と失恋物語_NO7

ファイルを完全に退避できたため,このPCを再インストールして返そうと思いました.

しかしその前に,問題のPCの
C:\WINDOWS\
を見てみると,やっぱり「explorer.exe」ファイルがありませんでした.

そこで,自分のPCの「explorer.exe」を送ったらどうなるんだろう,と思い試してみました. 場所は以下.
C:\WINDOWS\explorer.exe

すると,完全復帰しました.
今まで通りのPC,元通り.ヤッタネ!

本当は再インストールした方が良かったんだろうけど,現状ではネット繋がってないし,ローカルだし,このままで良いと判断.インターネットをすることになったら,新しいノートPCを買ってあげよう.

FIN

--

結局,問題はなんだったんだろう.
OSには大きな問題はなかった気がするし,explorer.exeに寄生するウィルスがいて,それを俺がファイルごとごっそり削除しちゃった感じ!?

今回の件で,ウィルス感染ファイルは消さずに退避する,ということを学びました.
そして,自分の知識不足を大変痛感しました.

ここはこう対処するべきだった,正しいウィルス対処はこうやる,など,何かアドバイスを頂けると嬉しいです.今後二度と同じヘマをしないように勉強したいと思います.

最後に,深刻に悩んで落ち込んでいた僕にアドバイスをして頂いたO野先輩,Y政先輩には,心から感謝しています.ありがとうございました.

--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7

トロイの木馬と失恋物語_NO6



唯一の解決策と思われた「explorer.exeの復帰」が不発に終わり,諦めかけた僕.土壇場で秘策を発見したんです.

ダメ元で,色々いじってたら,新しいタスクで「参照」を押すと,ファイルの参照(画像)が出てくることに気付いた.
慎重に確認していくと,大事なファイルが残ってた.

キタ━━━━━(゚∀゚)━━━━━!!!!

ということで,
抽出フォルダ→右クリック→送る→USB
という,超地味奥義!!笑

何度も往復し,自分のPCにデータを退避しました.
良かった,本当良かった.

彼女に「ファイル残ってた(涙)」とすぐメールを送り,涙.
きっと俺泣いてた.心の中では間違いなく泣いてた.安堵.激しく安堵.

--

後々思ったんだけど,「cmd」で,コマンドプロンプトが開けたので,冷静に考えれば,ここからでも,ファイル確認・抽出が出来たんじゃないかなと思った.
自分が無知なだけで,他にもファイルを取り出す方法があったのかもしれない.

--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7

トロイの木馬と失恋物語_NO5

前エントリーで書いたように,explorer.exeを復帰させれば,直ることがわかったので,意気揚々と入力したわけです.正直,OKボタンを押す時は,緊張しましたよ.変な汁も出ましたよ.

(ポチっとな!!)

そして,押したんです.
しかし,期待する結果にはなりませんでした.

(explorer(explorer.exe)はありません)

Σ(゚д゚lll)アボーン

まさかの大逆転.
サヨナラ満塁ホームランを打たれた気分.

explorer.exeがないなんて,考えてませんでしたよ.
またもや,不安が蘇って来ました.
--

研究室のY政先輩から「セーフモードで起動すればイイんじゃないっすか」とのアドバイスを頂いたのを思い出し,即効で試しました.



この写真は,セーフモードで起動した状態です.
何これw
状態は何も変わっていません,同様にexplorer.exeは見つからず,TOP画面すら表示されません.

絶望的な状況に追い込まれた僕は,涙を堪え,とりあえずその日はPCを閉じるのであった.

--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7

2007/08/14

トロイの木馬と失恋物語_NO4

ベッコベコに落ち込んだ僕の頭に真っ先に浮かんだのは,大学院の先輩,O野さんでした.何でも詳しいO野先輩にメールをし,状況を伝えました.

ちなみに,後日O野先輩と一緒にTAをやってる時

今までの写真データ全部消えるって,アルバムを投げ捨てるのと同じことだよね

なんて冗談混じりに言われたときには,もう,なんか,アルバムを捨ててる自分を想像しちゃって,さらに落ち込みました.忘れられない一言です.今思えば,愛情ですよね.(何が)

--

O野先輩からは,

うーむ、見た感じですと[explorer.exe]が動いていないだけのような気がしますぜ。
OSちゃんと立ち上がってるみたいだし、HDDクラッシュとかの可能性は無いんじゃない?

とのアドバイスを頂きました.
データ消えてないよ,と言われたときのあの安心感はこの状況に立たされないと味わえないものだと思う.うん.

--

で,「explorer.exe」が,OSとしてどんな機能をしているのかは,わからないけど,さっそく試しに自分のPCで「explorer.exe」のプロセスを終了してみたところ,問題のPCと同じ状況になった.

ちなみに,explorer.exeの終了は以下.
タスクマネージャ→プロセスのタブ→explorer.exe選択→プロセスの終了


(通常時)

(explorer.exeを終了するとこーなる)

--

まさに,困っていた状況を再現でき,感動した.
O野先輩を改めて神だと思った時でもあった.

よーするに,
タスクマネージャ→アプリケーションのタブ→新しいタスク→explorer.exeと入力
することで,この問題を解決できるということである.

満面の笑みと安堵の気持ちが迫る中,問題のPCで処理を行うのでした.

--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7

2007/08/12

トロイの木馬と失恋物語_NO3

ウィルス除去が終わり,Windowsの起動.
普段通りの起動.
よし,直った,と思った時,デスクトップに異変を感じました.

アイコンやスタートメニューのGUIが何も出てないのです.
よーするに,デスクトップに何もない状態です.

(こんな感じ)

マウスは動くだけで,右クリックのポップアップなどは,機能しませんでした.
辛うじて機能したのは,「Alt+Ctrl+Delete」のタスクマネジャー.

とにかく焦りました.


(もしや,俺OSのファイル消しちゃった!?)
(ヤッちゃった感ありあり!?)
(ど,ど,どーする,俺!?)


僕の顔が引き攣り,激しく焦ってるのを察した彼女.

「もしかして,PC壊れちゃった?」
「パソコンに仕事のデータと,今まで撮ってきた写真全部入ってるんだけど.」
「データなくなっちゃうの?」

PCに詳しい人だったら,慌てず現状を見極め対処するんだろうけど,正直見せ掛けで,実際は無知な僕.超不安になり,本当にデータ消えちゃってたらどーしよう,と涙が出そうでした.

--

その後,お互い無言で夕食.
(これでフラれたらどーしよう)
なんて考えながら,ホントに落ち込みました.

そのまま無言で帰宅.
こんなに落ち込んだのは,間違いなく今年初.


そして,誰かに助けを求めるしかないな,と思ったのでした.

--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7

2007/08/01

トロイの木馬と失恋物語_NO2

avast! 4 Home Editionをインストールして,検査を始めた.

このアプリケーションは,ウィルスを発見すると,「プゥープゥー」というサイレンのような音を出して警告してくれるようなんですけど,検査開始すぐに警告が出ました.

全然詳しくないけど,ワームとトロイの木馬がうじゃうじゃ検出されました.正直焦った.

よくわからないけど,「チェストへ移動」という動作が推奨されていたので,押す.その繰り返し.結局,ウィルスが多すぎて,警告が永遠止まらなくて怖くなった.

  

どういう流れだったかは忘れたけど,このまま再起動をして起動時にウィルスチェックをすることになった.



ウィルスがたくさんいるようで,ゴリゴリ検査が進んで行きます.
結構な時間が経過してから,何か選択を聞かれました.

とりあえずRepairを選択したところ,拒否された気がする.
でも,Ignoreは無視するって意味だから,ダメな気がする...ということで,思い切って,ALL Deleteを選択しました.

ここが,事件の発端だったと,今になって思います.


ガガガガ.
ウィルス感染ファイルの全消去は進む.

この時は,これでウィルスが全部死んでくれると余裕こいてた.
一件落着で「わぁー凄いね!」と褒めてもらう予定だった.

そして,ウィルス除去終了.
そのままWindowsの起動に進むPCであった.



--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7

2007/07/30

トロイの木馬と失恋物語_NO1

2007年6月下旬,彼女からのこんなSOSからこの話は始まるんです.

「パソコンにウィルス入っちゃったかもしれないから,今度見てくれる!?」

彼女のノートPCは,主に仕事の書類作成のみで使ってて,スペックも弱い昔のノートPC.一人暮らしを始めてから,契約をしていないので,ネットには繋いでなく,完全ローカル.
でも,なんで,インターネットに繋げてないのに,ウィルスが入るのだろうか,と思った.

話を聞いたところ,職場のPCにウィルスが感染していたらしく,そのPCで作業をしたので,その際USBでウィルスをお持ち帰りしちゃったかも,ということだそうです.まぁ,実際には,ウィルスを完全にお持ち帰りしちゃってたわけなんですけど.

--

彼女のPCは,ネットに繋げないし,ウィルス対策ソフトも入ってない.
ローカルで,ウィルス検査と除去がしたいなと思って,2フリーソフトをGET.

このアプリケーションファイルをCDに焼いて,準備しました.

--

CDを挿入し,まずはstingerを試す.
驚くほど遅く,検査に3,4時間かかったけど,特に何もなく終了.
今思えば,stingerの使い方をわかっていなかっただけなのかもしれないけど,この時は,ああ大丈夫なんだ,と安心した.

なぜかここで,満足しなかった俺.
きっと本能的に何かを感じ取ったんだろう.

avast! 4 Home Editionをインストールして,検査スタート!!
ウィルスがいないことを祈りつつ...

--

全エントリー
トロイの木馬と失恋物語_NO1
トロイの木馬と失恋物語_NO2
トロイの木馬と失恋物語_NO3
トロイの木馬と失恋物語_NO4
トロイの木馬と失恋物語_NO5
トロイの木馬と失恋物語_NO6
トロイの木馬と失恋物語_NO7