たつをの ChangeLog : 2010-03-12

YDNのウェブ検索APIを使って、Twitterのプロフィール(Location や Bio)を検索するサイトを作ったので公開します。

使用している Web API の提供が終了となったため、現在動作しません。ご了承ください。


Twitterプロフィール検索「つやぷ」
http://tsuyafu.ta2o.net/prof/
画像

検索例: 浦和, デザイナー, 小説家, 議員, iPhone, 函館, 社長, 漫画家, 声優

どうぞご利用ください。

なお、六本木系IT技術集団であるところの「つヤ部」とは名前が似ているだけで直接の関係はありません。

ref.
- Yahoo!デベロッパーネットワーク - 検索 - ウェブ検索
http://developer.yahoo.co.jp/webapi/search/websearch/v1/websearch.html
- 使える!「twitter×Google」でマーケティングする4つの方法
http://www.earthinus.com/2010/03/twitter-google-marketing.html
- [N] ツイッターのプロフィールを検索「TwitterプロフィールG検索」
http://netafull.net/twitter/033846.html
- TwitterプロフィールG検索
http://twiscouter.com/profile/
- twitter[2007-04-06-1]

午前半休だったので夫婦で恵比寿の「Lav」でランチ。
早めの時間のゆったりランチでした。

恵比寿LAVでカフェランチ

Semi Organic Lounge Bar LAV
http://www.val-up.com/lav/
http://gourmet.walkerplus.com/102461021750/
http://tracks.seesaa.net/article/133977414.html
場所:渋谷区恵比寿南2-3-10

恵比寿LAVでカフェランチ 恵比寿LAVでカフェランチ

ランチメニューいろいろ。
私はオムライスカレー「バターライスdeオムカレー」900円、
妻はオムライス「半熟とろとろ懐かしオムライス」850円、
にしました。
恵比寿LAVでカフェランチ 恵比寿LAVでカフェランチ

ランチはサラダとドリンクがセットになっています。
恵比寿LAVでカフェランチ 恵比寿LAVでカフェランチ

オムライスカレーです。
卵ふわふわ、カレーはしっかり。
ランチどき以外で何回か単品で頂いていますが、やっぱこれは美味しいです。
お気に入りの一品です。
恵比寿LAVでカフェランチ 恵比寿LAVでカフェランチ

卵ふわふわオムライスです。
オムライスのソースは、「ワサビマヨネーズ」「デミグラス」「ケチャップ」「ベシャメルソース」から2種類まで選べます。
これはワサビマヨ+デミグラス。
中はケチャップなチキンライスです。
恵比寿LAVでカフェランチ 恵比寿LAVでカフェランチ

今回はオムライス系2品でしたが、ランチプレートとか食べたらまた報告しますね。

追記100409: ランチプレートを食べました。
この日は豆腐ハンバーグでした。ふわふわ〜♪
恵比寿LAVのランチプレート

追記100506: グリーンカレーとマグロ丼を頂きました。
LAV(恵比寿)
カレーは激辛ではないけどじわじわくる辛さ。
暑い日にはぴったり。
LAV(恵比寿)
マグロ丼は山芋入りで元気になれます!
LAV(恵比寿)

LAV ガイド

- [を] LAV で夜御飯(恵比寿)[2009-12-16-1]
- [を] LAV でカフェタイム(恵比寿)[2010-02-01-5]

今週の平日のランチ。
自分用メモ。

■3/8(月) 鍋ランチ

昼だけやってる「鍋ランチ」でした[2010-03-08-1]
麻婆鍋!
麻婆鍋

■3/9(火) お弁当

おにぎりでした。もぐもぐ。

■3/10(水) カレー

一日中東大に行ってました[2010-03-11-2]
ランチはココイチでカレーでした。
100310 ココイチのカレー

■3/11(木) お弁当

おにぎりでした。むしゃむしゃ。

■3/12(金) カフェランチ

午前半休だったので、恵比寿のカフェ「LAV」でオムライスカレー[2010-03-12-2]
恵比寿LAVでカフェランチ

sufary の Perl モジュールである SUFARY.pm を使って v-gram による類似文字列検索を実現するサンプル。

コード

vgram.pl
#!/usr/bin/perl
use strict;
use warnings;
use SUFARY;
use Encode;
use open ':utf8';
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

my $min_ngram = 1;
my $wordset_fn = shift @ARGV;
my $suf = SUFARY->new($wordset_fn);

while (<>) {
    chomp;
    next if /^\s*$/;
    my @chars = split(//, $_);
    my %phrases;
    my %scores;
    my %seen;
    for (my $i = 0; $i < @chars; $i++) {
        for (my $j = $i + $min_ngram - 1; $j < @chars; $j++) {
            my $key = join("", @chars[$i..$j]);
	    next if $seen{$key};
	    $seen{$key} = 1;
            my ($left, $right) = $suf->range_search($key);
            last if not defined $left and not defined $right;
            for (my $k = $left; $k <= $right; $k++) {
                my $pos = $suf->get_position($k);
                my @lis = $suf->get_line_info($pos);
                next if $phrases{$lis[0]}{$key};
                $phrases{$lis[0]}{$key} = 1;
                $scores{$lis[0]}++;
            }
        }
    }
    foreach my $li (sort {$scores{$b} <=> $scores{$a}} keys %scores) {
        my $line = $suf->get_line($li);
        print "$scores{$li} ";
        print decode('utf-8', $line);
        print " vgram:".join(",", sort keys %{$phrases{$li}})."\n";
    }
}

データの準備


辞書ファイル (a.txt)。
各行のフォーマットは「^検索対象文字列\t付加情報$」。
これはゆで卵	卵
あれはカレー	米
カレーな釜玉	卵
焼き鳥はカレー	鶏
ゆで卵は豚カツ	豚
豚カツと豚汁	豚

mkipu8.pl で文字単位でインデックスポイントを出力。
mkary (SUFARYに付属) でインデックスポイントをソートし、suffix arrays を完成させる。
./mkipu8.pl a.txt > a.txt.ary
mkary -so a.txt

実行例


% echo "これはカレー" | ./vgram.pl a.txt
15 あれはカレー 米
 vgram:は,はカ,はカレ,はカレー,れ,れは,れはカ,れはカレ,れはカレー,カ,カレ,カレー,レ,レー,ー
10 焼き鳥はカレー       鶏
 vgram:は,はカ,はカレ,はカレー,カ,カレ,カレー,レ,レー,ー
6 カレーな釜玉  卵
 vgram:カ,カレ,カレー,レ,レー,ー
6 これはゆで卵  卵
 vgram:こ,これ,これは,は,れ,れは
2 ゆで卵は豚カツ        豚
 vgram:は,カ
1 豚カツと豚汁  豚
 vgram:カ

解説


連続一致する部分文字列に高スコアを与えるように検索する手法。
(あとで書く)

参考


- SUFARY.pm で Longest Common Prefix Search[2007-05-15-5]
- SUFARY用インデクサのPerl版の雛形[2007-06-10-3]
- D論 (http://ta2o.net/doc/pub/)
- 富士通研究所時代の学会発表 (http://ta2o.net/doc/pub/)

たつをの ChangeLog
Powered by chalow