Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

ブログで職業、性別、配偶者の有無が分かる?

2007-05-28 21:17:21 | Weblog

ここのニュース
ブログで職業、性別、配偶者の有無が分かる? キーウォーカーがリサーチサービス
http://headlines.yahoo.co.jp/hl?a=20070528-00000034-zdn_b-sci

によると(以下斜体は上記ニュースより引用)

キーウォーカーは5月28日、自然文解析技術を応用したブログ検索エンジン「BlogSphere」を利用した企業向けマーケティングリサーチサービス「BlogSphere for Research」を開始した。


 そうだが、その機能は。。

BlogSphereは、キーウォーカーが開発した自然文解析エンジンによって、ブログに書かれている全テキストの文意を解析できる検索エンジン。ブログの内容からブロガーの年代や性別、居住地、配偶者の有無などの属性を総合的に判断し、グラフなどにビジュアル化して表示する。α版が2006年10月から1カ月間試験的に公開されていた。

 今回開発した「BlogSphere for Research」はBlogSphereのブロガー分析機能、属性表示機能を、マーケティングリサーチ用にブラッシュアップ。自社商品や競合商品などをキーワードとして入力すると、キーワードを含むブログ記事を抽出し、「キーワード毎の言及度」「男女比」「年代構成」「趣味」「職業」「配偶者や子供の有無」「買った物」「欲しい物」など、言及しているブロガーの特性を表示する。また、「視聴メディア(雑誌、新聞、テレビ番組、インターネット)」「好感度の高いタレント」に加え、居住地毎の「地域別言及度」なども解析可能だという。


 なので、たしかにブログから職業、性別、配偶者の有無が分かるんだけど、
人探しサービスのサイト、スポック(Spock)
http://blog.manabiyahonpo.com/archives/category_cat7/spock/#more

のような、個人情報を調べるものではなく、マーケティングに使うもののようだ。。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

国立国語研究所が大規模コーパスを試験公開

2007-05-28 20:58:29 | Weblog

ここのニュース
国立国語研究所が大規模コーパスを試験公開
http://headlines.yahoo.co.jp/hl?a=20070528-00000001-zdn_ait-sci

によると、日本語コーパスが公開されているということだけど。。

ここ
KOTONOHA
現代日本語書き言葉均衡コーパス
http://www.kotonoha.gr.jp/demo/



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

開発の初めから順番に書いていってみる その50:プログラミング(12)自動生成決定表3

2007-05-28 16:54:22 | Weblog

 シリーズ「開発の初めから順番に書いていってみる」の続きです。
 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングです。
(プログラミング以前は、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm)

 プログラミングでは決定表と自動生成のお話をします。
 現在、決定表の自動生成をやっています。

 仕様とサンプルについては前々回
 入力用となる作業用の仕様書は、前回やりましたので、
 今回は、雛形シートです。




■その前に

 その前に、前回の修正というか、つけたし。
 配列のところ、最後以外は、,(カンマ)で区切るのですが、この処理、
 L桁に、カンマをもち(最後だけなにもかかない)このL桁を出力したほうが、やりやすいので、そのようにしました。
 そうすると、作業用仕様書は、こちら





■雛形シート

それをもとに、雛形シートをつくると、こうなります。
import java.util.*;

/**
 * 
 * 決定表のコントロール部分
 */
public class  $#$CELL B2$#$Cntl {

	/*
	 * 右側の上のYN
	 */
	public static final String[] zyoken_list={
$#$REP 5$#$			"$#$KETA J$#$"$#$KETA L$#$
$#$REPEND J$#$
};

	/*
	 * 右側の下の実行内容
	 */
	public static final String[] todo_list={
$#$REP 5$#$			"$#$KETA K$#$"$#$KETA L$#$
$#$REPEND K$#$
};

	/*
	 * 	決定表の実行処理
	 */	
	public int execute(HashMap map) 
	{
		//======================//
		//	データ取得     //
		//======================//
$#$REP 5$#$
$#$IFKETA H,i$#$
		int	$#$KETA G$#$	=	0;
		try
		{
			String buf =	(String)map.get("$#$KETA G$#$");
			$#$KETA G$#$	=	Integer.parseInt(buf);
		}
		catch(Exception e)
		{
			e.printStackTrace();
			return	-1;
		}		
$#$IFEND$#$
$#$IFKETA H,S$#$
		String	$#$KETA G$#$ = (String)map.get("$#$KETA G$#$");
		if ( $#$KETA G$#$	==	null )
		{
			return	-1;
		}
$#$IFEND$#$
$#$REPEND H$#$

		//======================//
		//	条件判定	//
		//======================//
		//	条件文をここに設定
		String	zyoken = "";
$#$REP 5$#$
		//	$#$KETA A$#$
		if ( $#$KETA B$#$ )
		{
			zyoken = zyoken+"Y";
		}
		else
		{
			zyoken = zyoken+"N";
		}
$#$REPEND B$#$		

		logout(zyoken);

		//======================//
		//	実行条件の選択 //
		//======================//
		String todo = "----";
		for(int i = 0 ; i < zyoken_list.length ; i ++ )
		{
			if ( zyoken_list[i].equals(zyoken)==	true )
			{
				todo	=	todo_list[i];
			}	
		}
		logout(todo);
		
		//======================//
		//	実行 	      //
		//======================//
		$#$CELL B2$#$Model $#$CELL B1$#$Model=new $#$CELL B2$#$Model();

$#$REP 5$#$
		if ( todo.charAt($#$KETA D$#$)	==	'X' )
		{
			$#$KETA E$#$
		}
$#$REPEND D$#$	

		return	0;
	}

	/*
	 * 	ログ出力
	 */	
	 public void logout(String msg)
	 {
//		System.out.println(msg);
	 }

}

(上記 < > ¥ は本当は半角です)




■あとは。。

 あとは、前処理の中で、仕様書から、上記の作業用仕様書を作成し、作業一覧シートの中の、仕様書のなまえのところを、作業用仕様書に書き直すことになります。Excelマクロで組むのですが、ここは省略します。

 そしたら、作業一覧シートをうめて、実行するってことになります。




ということで、決定表はおしまい。次は入出力についてです。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

プログラムやテストデータを自動生成する方法 その13 動作3 。

2007-05-28 14:04:51 | Weblog

 雛形ソースを作成し、Excelの仕様書を用意すると、プログラムのソースやテストデータを生成する方法について説明するシリーズ、「プログラムやテストデータを自動生成する方法」です。

今までに、インストールして、概要、DBの例を説明しました。
 過去のものに関しては
 ここ http://www.geocities.jp/xmldtp/index_zido.htm
 にリンクしてあります。

 今は、動き方について説明しています。
 押されたとき呼び出されるshiyoToFile()の説明でした。結局、関数は
・前処理
・自動生成(makefile)
・後処理
というかたちになっていて、前処理と後処理は関数名はきまっていますが、中身は自由に書くことが出来ます。

 で、前回は、makefileについてかきました。
 この関数は、

・タグをみつけて、そこまでを書き出し、
・見つけたタグについてはchgTagToStrで解析、必要な内容を仕様書から
 もってきて書き出し
・次のタグを探す


という操作をしていると書きました。
今回は、繰り返しと条件の実権方法を示しながら、chgTagToStrを説明します。




■REP~REPENDでの繰り返し方法
 まず、chgTagToStrを説明するまえに、どのようにして、繰り返しを実現しているのかについて説明します。

chgTagToStrは、

 chgTagToStr(タグ,タグの終わりの次の文字,仕様書のシート名)という形で呼び出し、返り値は、次に調べる場所の位置が帰ってきます。

 このとき、REPEND以外では、タグの終わりの次の文字が返ります。
 したがって、chgTagToStrで書き出した後、タグの終わりから次のタグを書き出し、どんどん、タグごとにchgTagToStrで書き出した後、次のタグをさがして・・・というふうになって、最後まで行きます。

 一方、REPENDでは、REPの終わりが返ります。
 したがって、chgTagToStrで書き出した後、REPの初めに戻って、次のタグを書き出し、どんどん、タグごとにchgTagToStrで書き出した後、REPENDにきたら、条件を満たしていなかったら、REPの初めに戻って、次のタグを書き出し、どんどん、タグごとにchgTagToStrで書き出した後・・・REPENDにきて、終了条件を満たしたら、タグの終わりを返すので、次のタグを書き出し・・以下、REPEND以外と同じということになります。

 つまり、繰り返しは、chgTagToStrの返り値をかえることで実現していて、
・REPEND以外はタグの終わり
・REPENDで終了条件を満たしていなければREPのところまで戻る
・REPENDで終了条件を満たしていれば、タグの終わり
 を返すことで、(REPに戻されるから)繰り返しを実現できるということになります。




■ソース

で、chgTagToStrのソースは、こんなかんじ
'//=========================//
'// タグを処理する      //
'//=========================//
Function chgTagToStr(tag As String, next_str_pos As Integer, shname As String) As Integer
    
    If (Mid(tag, 1, 6) = "REPEND") Then
        lpgyo = lpgyo + 1
        cellpos = Replace(Mid(tag, 7), " ", "") & CStr(lpgyo)
        celldata = Sheets(shname).Range(cellpos)
        If (celldata = "") Then
            chgTagToStr = next_str_pos
        Else
            chgTagToStr = lpstr_pos
        End If
        Exit Function
    End If
    
    If (Mid(tag, 1, 3) = "REP") Then
        lpstr_pos = next_str_pos
        lpgyo = CInt(Replace(Mid(tag, 4), " ", ""))
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    If (Mid(tag, 1, 4) = "CELL") Then
        cellpos = Replace(Mid(tag, 5), " ", "")
        celldata = Sheets(shname).Range(cellpos)
        If (no_out_flg = 0) Then
            outdata = outdata & celldata
        End If
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    If (Mid(tag, 1, 4) = "KETA") Then
        cellpos = Replace(Mid(tag, 5), " ", "") & CStr(lpgyo)
        celldata = Sheets(shname).Range(cellpos)
        If (no_out_flg = 0) Then
            outdata = outdata & celldata
        End If
        chgTagToStr = next_str_pos
        Exit Function
    End If

    If (Mid(tag, 1, 6) = "IFKETA") Then
        kugiri_pos = InStr(7, tag, ",")
        cellpos = Replace(Mid(tag, 7, kugiri_pos - 7), " ", "") & CStr(lpgyo)
        celldata = Sheets(shname).Range(cellpos)
        chkdata = Mid(tag, kugiri_pos + 1)
        If (celldata = chkdata) Then
            no_out_flg = 0
        Else
            no_out_flg = 1
        End If
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    If (Mid(tag, 1, 6) = "IFCELL") Then
        kugiri_pos = InStr(7, tag, ",")
        cellpos = Replace(Mid(tag, 7, kugiri_pos - 7), " ", "")
        celldata = Sheets(shname).Range(cellpos)
        chkdata = Mid(tag, kugiri_pos + 1)
        If (celldata = chkdata) Then
            no_out_flg = 0
        Else
            no_out_flg = 1
        End If
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    If (Mid(tag, 1, 5) = "IFEND") Then
        no_out_flg = 0
        chgTagToStr = next_str_pos
        Exit Function
    End If
    
    chgTagToStr = next_str_pos

End Function

(上記< > ¥は、本当は半角)
上記のプログラムを理解するうえで、以下の変数が重要です

lpstr_pos=REPタグの直後の位置、ループのとき、ここにかえる
lpgyo=現在、仕様書(Excelシート)で、対象にしている行
next_str_pos=タグの終わり(ループ以外はこれを返す)
no_out_flg=書き出すかどうかを決める。IF文で設定する。0のとき書き出し




■IF文の実現

no_out_flgで実現します。普段は0なので、書き出します。
IFKETA,IFCELLで、条件を満たせば、no_out_flgを0=書き出します
みたさないとno_out_flgを1にして、書き出しません。
IFENDで、no_out_flgを0クリア(書き出す)ようにします。





■説明

ということを踏まえ説明します。

基本的に、タグが一致したら、以下の処理を行うということになっています。

●タグがREPENDのとき
 lpgyo(仕様書のチェック行)を次の行にして,
 celldataに、チェック内容を入れます
    (cellposはチェックするセルの位置)。
 もし、チェックデータが何もなければ、そこでループが終わりなので
   タグの後next_str_pos
 データがあれば、繰り返し開始位置lpstr_posをセットして、返ります

●タグがREPのとき
 繰り返し開始位置lpstr_posをREPタグの終わりに、
 lpgyoをとってきて、セットして、返ります

●タグがCELLのとき
 cellposにデータを取ってくるセルの場所をセットし、
 celldataにデータをセットし、
 書き出しの場合(no_out_flg=0)、
   書き出し用バッファ(out_data)に内容をセットします

●タグがKETAのとき
 cellposにデータを取ってくるセルの場所をセットし、
   →この求め方がCELLとちがうだけ
 celldataにデータをセットし、
 書き出しの場合(no_out_flg=0)、
   書き出し用バッファ(out_data)に内容をセットします

●タグがIFKETAのとき
 cellposにデータを取ってくるセルの場所をセットし、
 celldataにデータをセットし、
chkdataに条件を取り出し、
 とってきたデータ(celldata)と書かれている条件(chkdata)が
   一致していたら、書き出しの場合(no_out_flg=0)
   ちがってたら、書き出さない場合(no_out_flg=1)
 をセットします

●タグがIFCELLのとき
 cellposにデータを取ってくるセルの場所をセットし、
   →この求め方がIFKETAとちがうだけ
 celldataにデータをセットし、
chkdataに条件を取り出し、
 とってきたデータ(celldata)と書かれている条件(chkdata)が
   一致していたら、書き出しの場合(no_out_flg=0)
   ちがってたら、書き出さない場合(no_out_flg=1)
 をセットします

●タグがIFENDのとき
 書き出し用(no_out_flg=0)にします。

と、こんなかんじです。




これで、自動生成のプログラムも全部説明しました。
これで、説明は終わりです。
このあと、いつか、自動生成用にExcelシートを今回の例と一緒にまとめるかもしれません。けど、それはたぶん、まだまだ先のことでしょう。

 ということで、ひとまずこのシリーズはおわりということになります。

 なお、今後、「一般的なエディタの作り方」という、違うシリーズを書くことを予定しています。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ケータイでマウス風操作もありかもね!

2007-05-28 12:02:24 | Weblog

さすが、松丸アナだ!

5月21日の松丸アナのトレンドたまご、「マウスtoマウス」
これ自体は、(パソコンで使う)マウスのかわりに、
帽子をかぶって息をすってクリックという。。
うーん、使えねーっていうやつなんだけど。。

 松丸アナの取材報告をみてて、
「この会社には、その技術があって・・・」みたいなこと言ってた。。

 そーだよ、普通、帽子かぶったら、
 こうやっては、マウス操作をしないだろう!




 ふつー、帽子の中心になにかマークを入れて、そのマークの動きを画像処理してマウスの動きを判断するだろう。

1.たとえば、志茂田かげきが着そうなド派手な色の帽子の、正面真ん中に、
  それとまったく違う色(補色とか)の星かかんかの目立つマークを
  入れておく。

2.カメラでその様子を撮影し、帽子の色とマークの色をもとに、
  画像処理で、帽子がどこにあって、基準となるマークがどこに
  あるかを判断する

3.マウスを動かしたかったら、横、斜めに頭を振る

4.下を向くと、左ボタンクリック、上を向くと、右ボタンクリック
  急いで何回か振ると、ダブルクリック

5.画像処理で、星の動きを追っていき、それに基づきマウス操作

 なお、派手な色だけだと、志茂田氏は操作できない(>_<!)となるので、帽子は何通りかの色をつくって、それをメニューで選べるようにすると(なので帽子は、自分が着ていたり、背景となる服以外の色を選ぶ)・・
 
これなら、ケータイで自分どりすれば、ケータイでもマウス風の操作が出来るし。。




 さらにいうと、帽子である必要はなく、手袋に色を付けて、

1、人差し指を1本たてたら、その方向にポインタは動く
2.グーにするととまる
3.パーで左クリック
4.チョキで左ダブルクリック
5.ぐわしで、右クリック
  (って、出来ない人は ^^;3本指で右クリックでいいですね ^^;)

っていうことで、ケータイで手袋をはめた手を写真でとればOKでもいいんだけどね(ただ、帽子の利用は手が利用できない人のため・・・なんだけど)




うーん、どっかで、帽子のマウス、画像処理で
やってくれませんかねえ(^^;)

で、そーしたら、松丸アナがまた取材に行って。。

マウス代わりの帽子は、もちろん、テレビ東京ですので、
ケロロ軍曹の帽子であります。
ちゃんとまんなかに星があって・・・

で、それを撮って、マウスを動かすわけですが、
えー、アプリは、水を入れるゲームとか。。
で、マウスで水をどんどん入れていってもらって。。。

松丸アナ、

「水位がどんどん上昇しています!!」

って、ゆうきんファン以外には、一切分からないオチなのでした。。
(って、このオチを書くためにこのエントリを書いていたりする。。)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする