Hatena::ブログ(Diary)

public static void main

誰かが困って検索したときに助けになる話題を書いていければと思っています。

2009-07-22

[][]Solr勉強会行ってきた。

21日にECナビさんで開催されたSolr(そーら)勉強会に参加してきました。

http://atnd.org/events/937

Luceneを1、2年前ぐらいに触っていて、そのときSolrも調査したことがあったので、その頃からどのように変わったのか楽しみにしていきました。

以下発表内容のまとめです。

Solrとは?(ロンウィット関口さん)

  • 全文検索ライブラリのLucene
    • JavaAPIを使うので、開発期間の短くなっている昨今では導入の敷居が高い
  • SolrはLuceneを使った検索サーバ実装
    • HTTPベースのAPIが提供されている→言語を選ばない
    • 検索アプリが非常に楽に作成可能→時代に合っている
  • Solrとのデータやりとり
    • XMLで登録データを作成(CSVでも可)→HTTPでPOSTすると登録が完了
    • 検索結果もXMLでGETする
    • 検索アプリでは、XMLで返ってきた結果を加工してHTMLに変換して表示する
  • 多彩なナビゲーション機能
    • ハイライト機能、ファセット機能など
    • ファセットを使うと検索結果からジャンルなどで絞込み可能なナビゲーションを実現可能
  • キャッシュ機能
    • documentCache … ドキュメントをキャッシュしてIOなしで結果を返す
    • filterCache … ファセット利用のためのキャッシュ
    • queryResultCache … クエリ結果をキャッシュしてIOなしで結果を返す
    • Luceneでは難しいキャッシュのウォームアップを実現→インデックス更新時に遅くならない
  • インデックスレプリケーション
    • マスター・スレーブ構成のレプリケーションが可能
  • 分散検索
    • インデックスを分散して配置して横断的に検索可能
  • ApacheライセンスのOSS + LuceneもSolrも機能拡張を前提としたインターフェース(API)+ 活発なコミュニティ

関口宏司のLuceneブログ」の方です。

質疑応答でSolrの次バージョンである1.4リリース日について質問がありました。Lucene 2.9のリリースが先なので、9月ぐらいに出るといいなあ、とのことでした。

その他、CJKAnalyzerやHilighterのバグについての質問がありました。


事例紹介

商品検索でのSolrの利用(ECナビ春山さん)
  • ECナビでの利用
    • 商品検索、Buzzurlなど
    • 去年の7月ぐらいから使い始めた
  • ECナビ商品検索での利用状況
    • 登録件数2300万件
    • クエリ数最大100万/日
    • 元のデータサイズ10G
    • インデックスサイズ18G
  • 利用しているSolrの機能
    • DistributedSearch(分散検索)
    • rsyncでのレプリケーション
    • ファセット
    • 独自Tokenizer
    • 元データはMySQLに格納
    • インデックス作成用SolrにMySQLからCSVでインデクシング
    • 検索用マシンにrsyncでレプリケート(一日一回)
    • 2台ずつの検索用マシンでユーザ用とロボット用に
    • 3分の1に分割して一台の中で分散検索
  • スペック
    • インデックス用 … メモリ4G、RAIDなし
    • 検索用メモリ … メモリ18G、RAID0+1
  • バージョン
  • ECNaviTokenizer
    • つのだ☆ひろのように星があってもなくても同じトークンを
    • ハイフンの表記ゆれに対応(cyber-shot→cyber shot cybersyot)
    • 半角カナを全角カナに正規化

質疑応答でインデックスを3つに分割して分散検索していることについて質問がありました。試験的にやってみたが微妙で、まだベストプラクティスを模索中とのことです。

プロキシを使ってインデックス更新中は軽いほうに処理が向くようにしているらしいです。

Solr+SSDについてもLTする予定でしたが、マシントラブルで聞けなかったので次回に期待です。


Solr導入事例@リクルート(リクルート植野さん)
  • 社内事業を横断してSolrでの開発支援を仕事に
  • 某事例でのSolr利用状況
    • 25〜280 QPS(5台運用)
    • ドキュメント数250万件
    • 10分間隔で差分更新
    • ファセットも一部で利用
  • 信頼性の担保
    • 冗長化で5台以上
    • ロードバランシング
    • 更新は全台同時投入
    • 小規模な場合は相乗りも
  • 誰でも使えるように
    • 自社Solrクライアント、スキーマ定義にワークシート、DynamicField活用
    • Solrサーバ上での作業を極力0に
    • S2JDBCのJDBCManagerに習ってSolrManagerを→流れるようなインターフェースを実現
    • Solrの学習コスト低減、実装方法の統一、冗長化実装の隠蔽
  • Solrの拡張
    • mecabN-gram
    • 拡張はpluginとして展開→solr.warに手を加えずpluginとしてjarに
  • 今後の展開
    • SolrのUIライブラリの展開→利用者にわかりやすいSolrの伝え方
    • ほぼリアルタイムな検索
    • ×それSolrでできるよ。→○Solrじゃないと大変だよ?

質疑応答での、Solrクライアントを用意したことで全くSolrを意識せずにDBと同じように使うようになって、結果としてSolr利用のナレッジが蓄積されないという話が印象的でした。

Solrの拡張性をうまく生かして利用されているように思いました。

冗長化した事例は初めて聞いたので興味深かったです。


MapionにおけるSolr状況(マピオン*1
  • 利用方法
    • フリーワード検索
    • ファセット検索(ジャンル)
    • 地図から緯度経度からの検索
  • Solr導入経緯
    • マピオン電話帳で当初MySQL5.0 + Sennaを利用
    • データ数900万件でチューニングしても負荷が高い
    • Solr1.3リリース→1ヶ月調査→導入
  • 利用状況
    • 1日約100万クエリ
    • 範囲検索30%、キーワード検索70%
  • データ件数
    • 電話帳900万件(Shard 30)
    • ランドマーク40万件(Shard 4)
  • データ更新
    • 電話帳は差分更新で1日2回
    • そのほかは更新頻度に応じて全件更新
  • サーバ構成
    • インデックス作成用サーバ1台
    • 検索サーバ8台
    • Shards用3台(検索結果をマージするサーバ?)
    • 元データはRDBMS
    • Shardsと検索用Solrサーバの間でロードバランシング
  • 緯度経度検索
    • 拡張コンポーネントとして実装
    • 距離計算をして出すのに負荷が高いので8台使用
  • 検索の拡張
    • 2Box検索(q=キーワード&near=場所)
    • 1Box検索(キーワード 場所)
    • どちらも場所をジオコーディングして内部的に拡張コンポーネントに検索方法を切り替え
  • 1ホストあたりの最大コネクション数を修正してJavaの起動オプションで制御可能に

検索での地名の判定について質問がありました。裏側でマピオン独自の住所エンジンで位置的なクエリかどうか判別して緯度経度を付与しているそうです。

先ほどのリクルートでもジオコーディングのコンポーネントを作っていたので、Solrがそういう検索に利用されているというのは意外でした。


LT

Yahoo!Japanにおけるジオコーダの実装の紹介(ヤフー西岡さん)
  • Solrのではなくジオコーダについて
  • 前処理
    • 同義語クエリーの書き換え
    • 表記ゆれ
      • 住所・地名の揺らぎ、異体字など
    • バーストワード対応
      • ある場所に関係する流行のキーワードで検索して対応する場所を出す対応
      • 例:ガンダムなど
    • ローマ字問題(sibuya→渋谷)
  • 形態素解析 OR N-gramの利用→0マッチを避ける
  • ソート
    • CTRを優先
    • タイトルより業種に一致を優先
    • 完全一致>形態素>N-gram
  • Yahooでは独自形態素解析を利用

某全裸のアイドルが逮捕された公園をバーストワード対応を行ったらCTRが90%言ったという話が非常に興味深かったです。


EC2とOpenSocialちょっぴりAndoroid(GMOインターネット新里さん)

PIAXno titleを初めて知ったのですが、使うとなかなか面白そうなものが作れそうです。時間があるときに是非試してみたいと思いました。

Solr@twitter検索(@penguinana
  • 発表資料
  • Twitter検索(yats)
    • 3億以上の呟きを収集
    • 日本語ユーザ5500万が検索対象
    • つぶやいて平均60秒ぐらいで検索可能に
    • 50万/月PV
    • 270万リクエスト/月
  • Twitter検索の特徴
    • 更新頻度高い
    • 文章短いが件数多い
    • 日付でソート
  • インデックス更新の高速化
    • 一日分のデータしか持たない追加専用のSolrを作成し、100秒間隔更新(数秒で更新終了)
    • 1ヶ月分を12時間間隔で更新(数十秒で更新終了)
    • 全体を1ヶ月に一回しか更新(数時間で更新終了)
  • キャッシュ
    • キャッシュをオンにして更新
    • ヒット率:五時間後64%→1週間後77%
  • 遅いクエリをはじく
    • ページングの後のほう、複雑な条件式、ヒット数が多いものなど
    • 時間がかかるとApacheのプロセスが溜まって落ちる
    • 5秒で返ってこなかったらタイムアウト
  • SSDの利用

具体的な施策の話が主だったので、個人的には一番参考になりました。

Solrに限らず、結構なデータ数がある検索システムを作る場合でも参考になるのではないかと思います。


全体的な感想

自分の想像していたよりもSolrが一般的になってきている印象を受けました。気に入っているプロダクトなので、今後利用実績や資料がもっと増えることを期待しています。

元データをRDBMSで持っているというパターンが多かったです。個人的にもSolrだけにデータを持たせるのは若干不安を感じますが、2重に持つのは冗長な気もしました。

CJKAnalyzerを使うとN-gramになるのでインデックスサイズがかなり大きくなるというデメリットがあるのですが、結構気にせずに使っている方が多いように思いました。検索漏れのほうが困るので使っている場合もあるかもしれませんが、Javaの形態素解析ライブラリのSenの更新が止まっているのも原因のひとつかも、と思って検索していたらcmecab-javaというライブラリを発見。Solrを使う機会があったら試してみたいです。


他の方の勉強会の記事

*1:名前をメモってませんでした・・・。

2009-05-17

[][]集合知イン・アクション

本書は2008年10月に発売された「Collective Intelligence in Action」の邦訳されたものです。

集合知とはどういうものなのかから始まり、Javaを用いて実際に集合知を扱うアプリケーションの作り方まで広い内容が書いてあります。

データマイニングのような話題ばかりではなく、既存のブログ検索から情報を取得してきたり、検索の仕組みの作り方やタグクラウドの実現方法、クローリングについてなど集合知の収集方法についても言及がなされています。


集合知プログラミングとの違い

集合知を扱った本としては「集合知プログラミング」が有名だと思います。

集合知プログラミングは各手法について解説と実際にコーディングを行うことでその動きを知ることで理解を進めていくという形になっていました。

集合知イン・アクションは、実際に使うことを意識してスキーマやクラスの設計から考えている点と、簡単な解説はありますが自分でアルゴリズムを実装しているところもありますがどちらかといえばLuceneやWekaのようなライブラリを用いることが多い点が大きな違いではないかと思いました。また、全般的に検索に関する話が多かったというのも違いといえます。

PythonとJavaという言語の違いもあるのかもしれませんが、集合知プログラミングのほうはPythonを知らなくても結構読めたのですが、こちらはJavaを知らないとソースコード部分に関しては厳しいかもしれません。


LuceneやWekaなどの使い方を知る本として

Javaの全文検索エンジンであるLuceneやデータマイニングツールであるWekaやJDM(Java Data Mining)APIといった、名前は聞いたことがあるけど日本語の情報がなかなかないJavaのライブラリなどのコードが載っているので、これらを使ってみようと思っている人にとって参考になるかもしれません。


日本語の扱いについて

本文では元が英語で書かれていたため日本語で発生するような問題については言及されていないのですが、付録として形態素解析はてなを使った日本語対応のコードも載っています。


個人的に興味深かった点

タグづけのアーキテクチャ

3.4で触れられているのですが、タグ付けのアーキテクチャとして3つ紹介されています。

最近のWebアプリケーションだとタグはよく実装される機能の1つだと思いますが、パフォーマンスやスケーラビリティを意識するとどのように実装するのがいいのか少し悩むところでもありますので、ここで触れられているスキーマ設計を参考にしてみるのもいいのではないでしょうか。

クローリング

インテリジェントなクローラについて6章に載っています。

クローラを作るときに意識しておくことや拡張する上で考えるべきことを決定するのヒントになるのではないかと思いました。


全体的な感想

500ページ近くある非常に厚い本ですので、全部読むというよりは自分の興味のあるところだけを拾い読みする形で読んでいます。

スケーラビリティについて言及してあったりちょっとしたテクニックが載っていたりと、あまり興味がない部分でも個々の詳細を見ていると参考になるところが見つかります。

Javaをやっていない人だとコード部分を読むのはきついと思いますが、アーキテクチャの話などは参考になるのではないかと思いました。

2008-09-18

[]ESPer2008行ってきた

次の日に用事があって前日に上京することになったので、何かイベントがないかとIT勉強会カレンダーで探したところESPer2008を発見しました。前日でも人数が上限に達していなかったので助かりました。

想像以上に刺激的な話が聞けて、個人的に特に面白かったのは小野さんゆーすけべーさんひげぽんさんの話でした。

ということで以下まとめ。


グリーンITのすすめ -未踏的アプローチに向けて-(加藤和彦PM 筑波大学大学院システム情報工学研究科)

  • 普段、PCを置いてある部屋やひざの上のノートPCや無線アクセスポイントなどで暑い思いをしているのではないか?
  • 未踏的にこの熱を減らすことはできないか?
  • 京都議定書は日本に不利にできているかも
  • グリーンITの3つの可能性
    • 人やモノの移動の効率化(ITによる)
    • 産業活動の生産性向上(ITによる)
    • 機器のエネルギー効率の向上(ITそのもの)
  • サーバ統合、クラウド化、SaaS化など
  • RAIDはCO2の排出量が多い → MAID(メイドさんではない)
  • 年間電力消費が減っても、それに対する投資がその100倍では・・・ → 費用対効果を考えた対策が必要

未踏のPMの方です。前期採択0件なので後期に予算を全力投入でき、採択件数も多くなりそうとのことですので、グリーンITで未踏に応募してみるのもよいかもしれませんね。

HDDが安価になったことで、SBMとかミニブログの情報をクローリングするタイプのサービスが増えている昨今ですが、ちょっと資源を無駄にしているよなー、とか思ってしまいます。

省電力、熱対策はサーバを運用するなら考える必要がある話ですが、仮想化のようなソフトウェアアプローチは面白いと思いました。



パッケージベンチャーの立ち上げ(小野和俊さん 株式会社アプレッソ)

  • http://blog.livedoor.jp/lalha/ (ブログ)
  • http://twitter.com/lalhaTwitter
  • 作ったソフトウェアとか
    • DataSpider ・・・ アプレッソの製品。データ連携のためのミドルウェア。800社以上の導入実績有
    • Galapagos ・・・ 未踏で採択。議事録をプロジェクターで写してリアルタイムに作成
    • QuestJapanizer ・・・ WoWのクエスト日本語化モジュール
  • 日本のIT業界はSIが多数を占め、パッケージベンダーは非常に少ない
  • 売り上げ曲線のタイムライン(成功ケース)
    • SI ・・・ リスクはないけどブレークしにくい
    • サービス ・・・ マネタイズに時間がかかる
    • パッケージ ・・・ 比較的マネタイズが容易かつブレーク可能
  • 起業のHowToについては総務省の資料が秀逸
  • ブログ/Twitterがプログラマ同士をつなげる時代
    • 履歴書のより、その人の日常を知ることができる
    • 小野さんの会社でも何人か採用実績有
  • パッケージベンダーのビジネスの収益構造
    • ライセンス
    • メンテナンス
      • 通常、15%〜20%の年間メンテナンス料
      • これをもらわないとおかしい
    • 使い続けてくれるお客さんがどの程度出てくるかが鍵
    • ちゃんとつかってくれればそのお金で新しいプロダクトを作ることができる
  • パッケージベンダーのフェーズ
    1. ソフトウェア開発フェーズ
      • ソフトウェアの完成がゴール
      • 資金が穴の開いたバケツのように減っていく
      • 苦しくても受託開発と言う「禁断の果実」に手を出さない
    2. ソフトウェアラウンチフェーズ
      • ソフトウェアの販売がゴール
      • 軌道に乗るのが先か、資金が尽きるのが先か
      • 顧客の視点:いつつぶれるかわからない弱小ベンチャーのパッケージを採用して大丈夫か
      • 製品そのものより個人の技術力を信用してもらうことが重要
    3. メンテナンスフェーズ
      • ソフトウェアのデファクトスタンダード化・ブランドの確立がゴール
      • 製品出荷後に見つかった問題への対応コストは事前に問題を検知できた時の数倍から数十倍
    4. 4期:新規ソフトウェア開発フェーズ
      • 二本目の柱を確立する
      • 集金エンジン、キャッシュカウを確立
  • 永遠の中級者
    • Officeでそこそこ使える人は多いけど、上級者になる人はほとんどいない
    • 初心者の期間は実は短い
    • マーケティングは初心者向けにデザインする
    • プログラマは上級者向けにデザインする
    • 永遠の中級者が最も多い

受託開発を「禁断の果実」と言っていたのが興味深かったです。確かに受託は売り上げを上げるには手っ取り早い手段ですが、そこに人的資源を割いてしまうと自社製品の開発がおろそかになってしまいます。受託を受けた知り合いの会社が結局SIになってしまったり、消えていってしまったりと言う話がリアルでした。

永遠の中級者の話は、パッケージだけじゃなくてWebやそのほかのUIを持つソフトウェア全般に言えることだと思います。この辺を意識していないとどちらかに偏ったものになってしまいがちな気がします。



いつの間にか社長になっていた〜未踏と社長と開発と〜(ゆーすけべーさん 株式会社ワディット)

  • http://yusukebe.com/
  • http://twitter.com/yusukebe
  • 修士卒業後、ニートになる予定が気づいたら社長になっていた
  • 未踏で採択されたもの:音楽でつながってコミュニケーションを行うソフトウェア→どうみてもLast.fmです。本当に(ry
  • Last.fmに負けて、サービスにできなかったという悔しさ→これがいい経験になった
  • 株式会社ワディット:和田のITだから
  • 一年ぐらい仕事がない → 開き直って「迎合するようなのはやめよう」
  • 「面白いものを作って日記(ブログ)で発信していこう」
    • ゆーすけべーにっき
    • ネトランに載るようなサービス(顔がみんな樋口一葉になるサービスとか)
  • エロギーク宣言
    • 07/9/29
    • erogeek is not geek
    • エロを促進する技術
  • エンジニアの勉強会に行くとお世話になってますといわれる
  • すると仕事が振ってきた
  • エロギークというブランディング
    • タブーっぽいアダルト業界
    • おおっぴらにする
    • エロという尽きない欲求
  • 積極的にこちらから出向くような営業は必要なくなった
    • ブランディング
    • ウェブプレゼンス作成 → これだけではアルファブロガーになってしまう
    • プロトタイプを作ってサービス化する
  • これをウェブプレゼンスドリブンマネッジメントと呼んでいる
  • ウェブで発信している内容に沿った自分しかできない受託開発
  • Subversion + IRC で鎌倉にいながらも渋谷の人たちと開発できる
  • おまけ:シエスタの薦め ・・・ 朝が2度来る
  • 経験がとにかく足りないので将来のために泥のようにコードを書く

ブログ/Twitterを書いて、サービスを公開して、というようなセルフブランディングは積極的に行っていきたいところ。

おおっぴらに「エロサイト作ってるよ!」と言うことで、この分野に関してものすごいブレークスルーをしていると思いました。



パフォーマンスチューニングの基礎の基礎(ひげぽんさん サイボウズラボ)

  • Mosh ・・・ Shemeのインタプリタ
  • Mona ・・・ OSSのOS
  • こんな経験ありませんか?
    • いくらチューニングしても早くない
    • 森に迷い込んでしまった
    • 早くするのに大幅変更いるけど、ちゃんと早くなるかわからん
    • なんかわかんないけど早くなった
  • 問題点:方法論がいまいち浸透していない
  • やってはいけないこと
    1. パフォーマンスを後回しに
      • ×リリース直前にチューニングすればいいや
      • 最悪の場合どうしようもなくなる
    2. 速度を計測しない
      • ここがいかにも遅そうだから
        • memcachedにキャッシュしよう
        • インライン展開しよう
        • インラインアセンブラにしよう
      • プログラマは謎の直観力で遅いところを見つけるけど、結構な確率で外れる
    3. 小さなパフォーマンスのために良いデザイン、機能性、柔軟性を壊しては駄目
      • memcached → コード量が増える、コード本来の目的がぼんやりするなど
      • インライン展開 → build時間が増える、インターフェースが読みづらくなる
    4. パフォーマンスチューニングにはコストとリスクがある
  • チューニングを開発プロセスに
    • 開発→測定→チューニングというサイクル
      1. 最初 ・・・ ゴールを決める
      2. 開発 ・・・ パフォーマンスのことは考えず、良いデザイン良いコードに集中!高速化できそうな箇所はコメントにメモする
      3. 計測 ・・・ 短いサイクルで計測する → 遅くなったら一つ前の開発が悪い
      4. チューニング ・・・ 目標を満たしていなければ行う
  • 測定
    • 環境構築
      • 初期の環境構築で効率が変わる
      • 本番環境に近い形で
    • 記録と参照
      • 過去のデータを保持してレポジトリに入れる
      • どのチューニングがいい成績を出したのかがわかりにくい
    • グラフを描く
      • グラフで一目瞭然
    • 遅いところはどこか?の道具
      • プロファイラ
      • プロファイラがない場合は
        • ストップウォッチ
        • ログ
        • プロファイラ実装
    • VMでは普通のプロファイラが使えない
    • プロファイラを作ろう
      • 一定の間隔で実行を割り込み
      • そのとき何してたかを記録
  • おまけ:Shibuya.lispを立ち上げ
    • 10/18にteck talk


DJ Player for iPhone(星野厚さん 株式会社ニューフォレスター)

  • Windows版のDJソフトを作っていた
  • iPhoneを見たときからこれはDJに使えると直感
  • 日本的な要素を取り入れてRaijin、Fujinモデルを作った
  • アメリカ以外の人には開発コードが発行されない→高度な方法を駆使して解決
  • チケット無しでWWDCへ
    • 一日目は入れなかった → サンフランシスコのアップルストアで勝手にデモをやってきた → 非常に好評
    • 現地のダンサーでプロモーションをやっている出会った
    • WWDCの会場の警備員から死角のところでデモ → 大好評
    • 新しくダンスチームを結成してサンフランシスコ中にデモを
    • そんなこんなで三日目ぐらいにAppleの人から呼び出しが
    • とうとう開発コードの発行をしてもらえた!
  • 現在まだアップルストアにこのソフトがない
    • iPhoneアプリからiPhoneの音楽にアクセスできない
    • ハックとかしないでね by アップル
    • グレーだけどなんとかできるようになったので10月ぐらいにはアップルストアで

分子計算支援システムWinmostarの開発とTencubeの起業(千田範夫さん テンキューブ研究所)

  • Winmostar分子計算ソフトの開発
  • サルでもできるMO計算
  • 量子化学計算などの小難しい計算を簡単にできるように
  • 機能向上をして専門家も使うツールとして
  • 得意な言語はFORTRAN
  • 計算化学系のテーマは未踏では非常に少ない
  • 千田 = 1000 = 10 ^ 3 = テンキューブ
  • 商標登録に8ヵ月半で17万円
  • アカデミックフリーのものがWebmostarは定番ソフトになってきている
  • Tencube/VMを商用版として10万円ほどで
  • 雑誌に取り上げられたけど広告がナニでアレだったので会社では自慢できなかった
  • グリーンIT
  • 分子計算で物性の予測や合成方法の提案、分析データの解析など
  • 軽い、簡単、きれいの3Kで
  • アカデミックフリーでデファクトスタンダードを目指す
  • DelphiからFortranの外部プログラムを呼び出している

定年で会社を退社された世代の方ですが、まだまだ現役と言うのがすごいです。

計算化学のようなソフトウェアだと確かになかなか売れなそうなものですが、アカデミックで無料に提供すると言うのはいい方法ではないでしょうか。

ところどころに挟む笑いの部分が非常にうまいプレゼンだと思いました。



事典検索システムCycloneの展開(藤井敦さん 筑波大学大学院)

  • 研究内容の紹介:自然言語を中心とした計算機科学と情報学
  • 時点検索サイトCyclone( http://cyclone.slis.tsukuba.ac.jp
  • Webから見出し語と説明を収集し体系化・多様な検索機能
  • 今回のテーマ
    • Cycloneのその後
    • 画像との統合、自動予約、特許への応用など
    • NEDOで採択
  • 背景
    • 知的な想像の成果を活用して国際京省力を強化する動きがある
    • 特許=知的財産権の一つ
  • 特許情報に内在する知識を体系化できれば学術や産業における価値が高い → 特許情報を用語辞典として活用する検索システムを構築
  • なぜ特許情報から用語辞典を作るのか?
    • Webになく特許情報には存在する用語があるから
  • 提案するシステムの機能
    1. 新語抽出 ・・・ 形態素解析を元に品詞に基づく造語規則を利用
    2. 文書検索 ・・・ 特許広報の検索エンジンを独自に開発
    3. 説明抽出 ・・・ 特許構造を自動解析して段落に分割し、抽出
    4. 組織化 ・・・ 用語説明として尤度が高い段落を選択して段落を分野に分類(SVMを利用)
    5. 関連語抽出 ・・・ 説明の段落から単語や複合語を抽出
  • アンケート調査による評価 → 49%が良いと回答 → 既存の検索システムと比較してなら結構良い値ではないか?
  • 数字が具体的に出るところが特徴

学術機関の人らしい発表でした。

システムのところどころで使っている技術は、個人的には非常に興味のある話でした。



ライトニングトーク

Webjigを用いたWebサイト最適化の提案(木浦さん NAIST)
  • 趣味で人工衛星の開発をやっている
  • ニコニコオーケストラをやっている
  • Webサイトを作った人は見た人がどう感じたのか知りたいが、質問しても正直な感想は聞けない → ソフトウェアで解決!
  • Webjigの開発
    • Webサイトに埋め込まれたJSコードがユーザの行動を分析
    • どのように使われたかアニメーションで可視化
    • JSで動的に変化するサイトにも対応
  • 現在使ってくれる人募集中

縁があってESPerの前に昼食をご一緒しました。

面白そうなソフトなのでshuugi.inとかkouna.ruとかで使ってみたいですね。



固有表現、メタデータ抽出が切り拓くマッシュアップ応用の世界(野村さん メタデータ)
  • パッケージソフト:Mextractr
    • MetaデータをExtract(抽出)する
    • プレーンテクストを入れることで5W1Hを抽出
    • セマンティクスで年齢、位置などが認識される
  • MA4にAPI提供中
  • この発表の時点で、Last.fmの情報を扱うソフトウェアが参加してくれている

ただの形態素解析ならYahoo! APIなどがありますが、セマンティックなデータが取れるというのは非常に面白いです。



Asiajinでみるエンジニアの海外進出方法(新井さん メロートーン)
  • Asiajin ・・・ 日本のIT業界を英語で紹介するブログ
  • 日本→海外の流れを作ろう!
  • 現状
    • RSS購読者1660名
    • ライター8名
    • TechCrunchライターも所属
  • 面白いネタやニュースリリースなどをご送付ください
  • 10月14日 アジア発共同ウェブカンファレンスがあるので是非ご参加ください

秋元さんがデブサミ2008で話していた内容と大体いっしょだったと思います。

なにかサービスリリースするときは連絡したいと思いました。



FireMobileSimulatorについて(堀川さん MTI)
  • http://d.hatena.ne.jp/thorikawa
  • FireMobileSimulator ・・・ 携帯向けサイトテスト用のFirefoxアドオン
  • 主な特徴
    • 端末のHTTPヘッダを一括で設定可能
    • UID・端末製造番号などの送信も可能
    • 絵文字
    • GPS
  • OSSとして公開する予定
  • 端末をたくさん持たなくていい → グリーンIT

今月の頭ぐらいにたしかホッテントリに記事が上がっていた記憶があります。

これでMobaSiFの挙動を試してみたいとか思いました。



XUIではじめる携帯コンテンツ制作(大澤さん ネイキッドテクノロジー)
  • 携帯コンテンツは見た目がダサいめんどくさい
  • モバイルRIAプラットフォーム「Colors」 ・・・ 従来の携帯電話で話しえなかったAjaxっぽい携帯コンテンツを
  • 利用方法
    • XUIライブラリのバインド
    • XUI属性の記述
  • TwitterクライアントやFlickrクライアントを作成
  • 開発に参加してくれる人を募集中。特にiPhone開発やってみたい人

会場でのデモはかなりすごかったです。

どうやって実現しているのかを知りたいと思いました。



RCMSとmixGroup(加藤さん ディバータ)
  • RCMS ・・・ Relational Contents Management System
  • 関連性を扱えるCMS
  • CMSとしてのほとんどの機能を実装済み
  • SaaSのみで提供
  • 利用サイト合計で1500万PV/月
  • CMS:フォルダで管理
  • RCMS:メタデータで管理
  • 特徴
    • データの定義に拡張性を
    • 詳細同士の関係をリンクで表現
    • メイン情報が大きく一つとサブ情報が周りに少なめに
  • 収益モデル
    • RCMS本体 湯量版 初期費用4万 月額1万
    • RCMSプラットフォーム提供によるライセンスフィー
    • カスタマイズモジュールの開発
    • デザイン制作費
  • mixiのOpenIDを利用したものを作成
    • 一晩で作ったことが評価
  • 今後はいろいろなAPIに対応する予定
  • GoogleAppEngineなどがライバルと思っている

大抵のCMSは他のページへの遷移に自分でリンクを作成するしかないので、メタデータでつながるのは面白いです。



Webブラウザで簡単にマッシュアップ作成 "Afrous"(冨田さんマッシュマトリックス)
  • http://twitter.com/stomita
  • JSのマッシュアップ開発環境Afrous
    • 多彩なWebサービスAPIをサポート
    • ドラッグドロップによるデータバインディング
    • グリッドやチャートによるデータ表示
    • 既存のWebサイトからもスクレイピング可能
  • クライアントサイドマッシュアップ
  • マッシュアップした結果をダッシュボードで表示

普通のWebサイトからもスクレイピング可能なので汎用性が高そうです。

ただ、マッシュアップでできるものにおもちゃのようなものが多いので、実際の利用シーンがどうなるのか想像がつきにくかったかも。



「海外事業化支援事業」(米国)報告(神島万喜也さん 情報処理推進機構)

  • 未踏でグローバルなビジネス展開を希望する開発者に対し、米国における事業化を支援する事業を実施
  • あくまで支援で渡米費用などは参加者の自腹
  • 未踏をどうやって英語でどう表現する? → ネイティブの人に聞いてみた
    • Exploratory Sonettftware Project
    • 反応:What? Is it Indy Jones?
    • Super Creator
    • Super man? Is it a comic character?
  • そこで
    • The MITOH
    • The Super Creator
  • 海外事業化支援事業
    • ネットワーク形成のためのセミナー・意見交換会を実施
    • GoogleやAppleやsalefforce.comやベンチャーを訪問
  • JETROP_BIC ・・・ 2年間無償でオフィスを借りれるインキュベーション施設

訪問した企業の中には占い感覚で唾液でDNA鑑定して結果を返すベンチャーとかいろいろあって面白そうです。

日本から突然海外に出てもネットワーク形成は確かに難しそうなので、よい試みだと思いました。



全体的な感想

未踏なので話のスタートはソフトウェアなのですが、ビジネスとしてのソフトウェアの話はなかなか聞けないので非常に面白い集まりでした。

懇親会には用事があったので参加できませんでしたが、もっと詳細な話が聞きたいプレゼンが多かったです。

あと、今回聞いてて思ったのは、画像の多いプレゼンは聞くほうはわかりやすいけどメモを取る方は大変だということでしたw

2008-02-12

[]DeNAテクノロジーセミナー行ってきた

モバイルサービスでもっともPVを集めているモバゲータウンの技術的な話を聞いてきました。

モバゲータウンは簡単にいうとオンラインゲーム+SNSな携帯電話向けのサービスです。

DeNA 技師のメモ」に応募したところ、運良く抽選に通ることができました。出席率が非常に高く、部屋がいっぱいになっていました。

id:tokiharuさんが司会で、前半はモバゲーのインフラの構築・運用の話、後半はテンプレートエンジンとか絵文字とかTips的な話。

以下個人的に参考になった話の箇条書き。

モバゲータウンのインフラストラクチャ構築・運用

  • データベースはMySQL5でテーブルはinnoDB
  • HWはHP、Dellのマシンでメモリ16GのCPUはCore2Duo * 2。全部64bitだそうです。
  • 1回のメンテナンスにかかる時間は90秒でほとんどスクリプトで自動化
  • 開発ルール「SQLでjoinしないように」
  • 参照系の割り振りはMyDNSを利用(参考:DBマガジン6月号)
  • memcachedは導入しておらず今後導入するかも

実際にスケールアウトする場合の具体的な方法やスクリプトの一部も紹介して下さったので非常に参考になりました。

モバゲータウンでの絵文字対応, HTMLテンプレートエンジン+α

  • モバゲー2008年1月現在利用者903万人、151億PV/月
  • 独自テンプレートエンジンを使って、一つのHTMLで3キャリアに対応(絵文字も)
  • DBの文字コードはSJIS
  • 文字サイズの制御がキャリア、端末によって違うので面倒
  • 動画もエンコーダを使って3キャリアで見えるように
  • 従来の課金方式はキャリア決済が主流だったが、多様化してきている
    • 未成年者はWebMoneyの利用多い
  • コミュニティの健全化・・・目視や自然言語処理と統計処理の利用
  • Willcomには未対応→端末情報を送信できないのが問題
  • 雨や雪、台風などの天気がアクセス数に大きく影響

不具合や不正な利用があった場合のユーザの反応が非常に早いというのが、モバイルサービスならではだと思いました。


MySQLやモバイルのコアな知識がある方が何人かいらしており、質疑応答では結構ディープな話題も出てきました。

後の懇親会は、DeNAの中の方や有名な方やこの分野の技術に詳しい方などと話ができて非常に面白かったです。

2007-12-17

[][]自然言語処理ことはじめ―言葉を覚え会話のできるコンピュータ

自然言語処理ことはじめ―言葉を覚え会話のできるコンピュータ
荒木 健治
森北出版
売り上げランキング: 88452


研究などでmecabやYahoo! 日本語形態素解析Webサービスを使って形態素解析した結果を統計的に処理したりすることが多いのですが、きちんと自然言語処理について網羅的に内容を勉強していないので、店頭で見かけて一番わかりやすそうなこの本を呼んでみることにしました。

わかりやすくするために詳しい話はカットされているので、難しい説明はほとんど出てこず、ページ数もそう多くないので、すぐに読むことが出来ました。

読み終わってから、今後意味解析とかに一歩足を踏み出せそうな気がしました。

各章ごとにコンピュータに自然言語を扱わせる方法を紹介しているのですが、章の終わりにその対象に対して筆者が実際にどのような研究をしているかの説明が入ります。

自然言語初心者としては少々難解な部分もあるので、興味のない部分は飛ばしてもよいと思うのですが、個人的にはGAを用いた帰納的学習の話が面白かったですが、論文をWebから自由に見ることができないのが残念でした。



以下、後でもうちょっと調べようと思った話。

n-gramの統計言語モデルで文章から単語を切り出す

文章中の単語の出現頻度を調べるときに、隣接するものを一まとめにして共起頻度を求め、確率が閾値を越えた場合に単語分割を行う手法です。文字単位でやる場合もあれば、単語単位でやる場合もあります。

buzztterの裏側でフレーズを抽出する話でも出てきましたね。

dara日記


ELIZAの話

精神分析医のインタビュー代行システムで、人間と雑談を行うことができるシステムです。

人口無能に興味がある人なら多分知っていると思います。

マイクロソフトも参入、広告分野で注目される人工「無脳」の魅力とは - CNET Japan

上記の記事でもあるように最近また人口無能が注目されてきているのかな?

実際のルールについては詳しく知らないので、時間があれば調べたいです。


遺伝的アルゴリズムによる文生成ルールの学習

先ほども少し触れましたが、これについてはちゃんと論文を読んでみたいと思っています。



筆者のWebページ:

no title

2007-12-06

[]テキスト変換(笑)をなでしこで書いてみた

昨日、id:foaran主催の日本語プログラム言語「なでしこ」の勉強会がありました。

Word、Excelなどを操作する命令もあり、少ない行数でいろいろなことができるので、魅力的に感じました。

〜して、の形でつなげていけば、一行でプログラムを書くこともできます。

頑張れば、ソースコードで詩や小説を書くことも不可能ではないので、普段のプログラミングとは違った楽しみ方ができますね。

ということで、勉強会の中でAtomをパースする話があったので、それを改良してYahoo! 日本語形態素解析Webサービスを使って、「no title」のようなものを作ってみました。

ソースコード

●スイーツ(笑を)
	それは笑&「(笑)」。
「何か入力してください。」と尋ねる。
文章はそれをUTF8N変換してURLエンコード。
「http://api.jlp.yahoo.co.jp/MAService/V1/parse?appid=YahooDemo&results=ma,uniq&uniq_filter=9|10&sentence={文章}」をHTTPデータ取得。
それをSJIS変換してレスポンスへ代入。
お仕事は、レスポンスから「ResultSet/ma_result/word_list/word」の階層タグ切り出す。
ご褒美とは文字列。
お仕事を反復
	対象から「pos」の階層タグ切り出して、タグ削除して、品詞に代入。
	対象から「surface」の階層タグ切り出して、タグ削除して、パスタに代入。
	もし、品詞が「名詞」ならば、パスタをスイーツして、パスタに代入。
	ご褒美は、ご褒美&パスタ。
ご褒美を表示。

実行結果

テキスト(笑)を解析(笑)し、適宜「(笑)」を追加(笑)するという、
Web(笑)2.0(笑)でスーパー(笑)スイーツ(笑)なウェブ(笑)サービス(笑)です。
よろしくお願い(笑)します。
スイーツ(笑)。

熟達した人はもっとエレガントな文章でソースコードを書くのでしょうが、これだけの行数で、Web APIからXMLを持ってきてパースできるというのはすばらしいですね。

プログラム時間もほとんどかかりませんでした。

何よりスイーツ関数を作れるのが日本語プログラム言語ならではです。

こういったお遊びをどこまでやるかがこの言語の醍醐味だと思いました。

現在、2007日本語プログラミングコンテストを開催中らしいので、時間があればぜひ何か作りたいですね。


参考:

なでしこ:日本語プログラミング言語

2007-07-11

[]SEO的に見た選挙におけるひらがな表記

現在参議院に関係するプロジェクトにかかわっているのですが、候補者のデータベースを作っていると、通称としてひらがなで氏名表記をしている人が多く見られます。

データベースを作る側から見ると何が面倒かっていうと表記ゆれ。

漢字の名前と両方が置いてあったりするとどっちを登録すればいいのか迷います。

んで、SEO的にこういうのはどうなのよって話。

表記ゆれがあるってのは、SEO的にはあまりよろしくないのですが、それよりも形態素解析をするときに誤爆をする可能性があることのほうが問題かなと思います。

GoogleやYahoo!クラスの検索エンジンだと形態素解析エンジンも賢いし、N-gramでもインデックスを付けているようなのであまり問題にならないかもしれないのですが、簡単に全文検索エンジンを作ろうと思ったらLuceneとかSennaとか使うわけで、IPAの辞書とMecab形態素解析をすることになります。その場合、ひらがなが連続していると、たまに副詞や助詞に間違われることがあるわけです。

ひらがなにすると人間には分かりやすくなるかもしれませんが、機械的にはどうよって話でした。