タグ

ブックマーク / echizen-tm.hatenadiary.org (63)

  • 「閉じこもるインターネット――グーグル・パーソナライズ・民主主義」を読んだ - EchizenBlog-Zwei

    「閉じこもるインターネット――グーグル・パーソナライズ・民主主義」を読んだ。フィルターバブル(受け取る情報がパーソナライズによって偏向されている状態)のお話。 書はフィルターバブルによってパーソナライズを行う側がサービスを受けるユーザをコントロールできる危険性について書いてある。と同時にパーソナライズの利便性についても。要は何が起きているのかが少ない労力で理解できてユーザが必要な時だけ利用できるように、と。 フィルターバブルという単語は最近知ったのだが、パーソナライズによってこういう問題が起きるなーというのはレコメンデーションに関わりだした頃(5年前)からずっと気になっていた。 これについては企業側がパーソナライズされたコンテンツであることを明示する、パーソナライズに使う情報はユーザの同意を得る必要があるようにする、などして解決できるかなーと思っていたら書の結論もそんなような感じだった

    「閉じこもるインターネット――グーグル・パーソナライズ・民主主義」を読んだ - EchizenBlog-Zwei
    yuiseki
    yuiseki 2012/04/29
  • 良い技術書は3パターンに分類できる気がする - EchizenBlog-Zwei

    いけてるエンジニアが「これは良書だ!」と絶賛しているので買ってみたら、よくわからないことが書いてあるだけで理解できなかった。という経験をした人は多いのではないかと思う。 こういうことはなぜ起きるかというと、別にいけてるエンジニアが初心者に意地悪をしているわけでもないし、いけてるエンジニアとは頭の出来が違いすぎたということもなく、単純に「良書」には複数のパターンがあるからなのでは、と私は思っている。 全くの私見だが大別して3パターンある気がする。以下、これについて述べたい。 1.「わからない」を解決する良書 初心者にとって最もうれしいのがこのパターンの書籍。一般的に良書と言われるのはこのパターンに属する書籍だと思われる。 (私もそうだったのだが)初心者はそもそも、その技術分野に対するカンが全く働かないので、を最初から順番に読む傾向がある。また自分で具体例をノートに書いたり、コーディングした

    良い技術書は3パターンに分類できる気がする - EchizenBlog-Zwei
    yuiseki
    yuiseki 2012/03/29
  • 自然言語処理とか機械学習とかグラフとか簡潔データ構造とか全部入った良書「日本語入力を支える技術」がすごい - EchizenBlog-Zwei

    @tkngさんの力作「日本語入力を支える技術」が2/8に発売される。既に秋葉原のヨドバシ有隣堂や池袋のジュンク堂店では早売りされている様子。ってことで早速購入してきた。 書が扱うテーマはGoogleIMEのような「日本語入力」のシステム。これだけだとさして興味ないや、って人も多いかもしれない。ところがこの日本語入力というのは技術的には形態素解析に非常に近い。自然言語処理やテキストマイニングに関わる方にとっては形態素解析は最も基的かつ重要な技術。その仕組みを知っておくのは非常に重要だと思う。 また日本語入力(形態素解析)は技術的には機械学習、グラフの最短経路問題、簡潔データ構造など多くの分野が関わっているので「日本語入力」を理解することでこれらの多くの基礎技術の具体例を体感できるというメリットがある。 そんな日本語入力をまとめて勉強できるのが書「日本語入力を支える技術」である!ばーん

    自然言語処理とか機械学習とかグラフとか簡潔データ構造とか全部入った良書「日本語入力を支える技術」がすごい - EchizenBlog-Zwei
    yuiseki
    yuiseki 2012/02/04
  • ウェーブレット木のライブラリshellinfordを作ったので公開しておく - EchizenBlog-Zwei

    ついかっとなってウェーブレット木のライブラリを作ってみた。せっかくなので公開しておく。LOUDSはerika-trieを作ったので今度はウェーブレット木を作りたかった。 ライブラリ名はおおかたの予想を裏切りshellinford。かびーん。 なお、ウェーブレット木で用いている簡潔ビットベクトルは前回のDSIRNLPで発表したものの公開していなかった「少ない労力でそこそこいけてるビットベクトル」を使っている。 shellinford - shellinford: succinct document retrieval library - Google Project Hosting DSIRNLP#2で発表しました「作ろう!簡潔ビットベクトル」 - EchizenBlog-Zwei まずソースコードを取ってきてインスト。 $$ svn checkout https://shellinford

    ウェーブレット木のライブラリshellinfordを作ったので公開しておく - EchizenBlog-Zwei
    yuiseki
    yuiseki 2012/02/02
  • 最近のSuffix Arrayによる全文検索について調べてみた - EchizenBlog-Zwei

    ちょっと興味があったので調べてみた。 全文検索には主に転置インデックス(Inverted Index)によるものと接尾辞配列(Suffix Array)/接尾辞木(Suffix Tree)によるものがある。 前者は効率的にデータを扱えるものの、キーワード単位でしかインデックスを付けられないので形態素解析するなどして検索対象のテキストからキーワードを取り出す必要がある。 後者は任意のクエリにマッチすることができるもののデータサイズが大きくなりがちであることと検索結果となる文書にスコア付けができないなどの問題がある。 最近ではSuffix Array/Treeによる全文検索に対して簡潔データ構造(Succinct Data Structure)を導入してデータサイズを小さくしたり、スコアをもたせる方法が提案されたりと何かと話題が多い。 Suffix Array/Treeが持つ文書検索の機能は、

    最近のSuffix Arrayによる全文検索について調べてみた - EchizenBlog-Zwei
    yuiseki
    yuiseki 2012/01/20
  • テキストデータを使ってお手軽にNgram統計を取る方法 - EchizenBlog-Zwei

    テキストデータの言語的な特徴を知りたい場合、そのデータを使ってNgram統計を取ることがよくある。Ngram統計というのはテキスト中の連続したN文字それぞれが何回出現したかの統計をとること。 といわれてもピンとこない人もいるかも知れない。実例を見るのが早いので当ブログの昨年12月の記事タイトルを使ってNgram統計を取ってみる。 まず記事タイトルを一行一列でテキストファイルに書き出す。 $$ cat blog-title.txt 「PIANO OPERA FINAL FANTASY I/II/III」がとても気になる そっくりヒロインなラノベ「おおコウスケよ、えらべないとはなさけない!」を読みました PSP「探偵オペラ ミルキィホームズ1.5」第5話(最終話)だよ? 簡潔ビットベクトル性能評価実験のソースコード(rx-trie編) 簡潔ビットベクトル性能評価実験のソースコード(ux-tri

    テキストデータを使ってお手軽にNgram統計を取る方法 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2012/01/13
  • 再生核ヒルベルト空間(reproducing kernel Hilbert space) - EchizenBlog-Zwei

    カーネル関数のお勉強をしていたら、再生核ヒルベルト空間(もしくは再生カーネルヒルベルト空間)は当然しってるよね的な展開になって困ったので調べてみた。 集合の要素間に内積が定義されている空間をヒルベルト空間という(厳密には内積について完備(complete)である必要があるが、ここではそんなに気にしなくても大丈夫)。要するに通常のベクトル空間を想像しておくと間違いない。 線形識別関数f_w(x) = はヒルベルト空間上のベクトルw,φ(x)の内積で表現される。これに対して再生核ヒルベルト空間とは線形識別関数f_w(x)を要素とする集合に対して内積を定義した空間のこと。 再生核ヒルベルト空間の内積は = として定義する。カーネル関数k(x,x')も<φ(x),φ(x')>であるから重みベクトルw=φ(x')の線形識別関数といえるので再生核ヒルベルト空間の要素になる。 このときxに対してカーネル

    再生核ヒルベルト空間(reproducing kernel Hilbert space) - EchizenBlog-Zwei
  • 30分でわかるレコメンデーションエンジンの作り方 - EchizenBlog-Zwei

    レコメンデーションというのはamazonとかで見かける「XXXを買った人はYYYも買っていますよ」というサービスのこと。最近ではレコメンデーションは珍しいものではなく多くのサービスで導入されている。 またレコメンデーションを実現するレコメンデーションエンジンを開発している企業もわりと多くて検索すると結構たくさん出てくる。 「レコメンデーションエンジン」でぐぐった結果 そんなレコメンデーションエンジンだが作るのはそれほど大変ではない。というか情報検索の基礎知識があれば誰でも作れる。ので作り方の解説をしてみるよ。 レコメンデーションは何を与えると何が返ってくるの? まずはレコメンデーションの入出力の話。入力としては「ユーザ」もしくは「アイテム」というものが考えられる。「ユーザ」というのはレコメンデーションを利用しているユーザのこと。「アイテム」というのはレコメンデーションの対象となるもので例え

    30分でわかるレコメンデーションエンジンの作り方 - EchizenBlog-Zwei
  • 簡潔データ構造超入門V 〜LOUDSというメモリ効率のよい木構造の話(本編)〜 - EchizenBlog-Zwei

    前回に引き続きLOUDSという簡潔木の話。前回準備したunaryの簡潔ビットベクトルを使って親ノード、子ノードへのアクセスが効率的に可能な木構造であるLOUDSの話をする。 前回までの記事: 簡潔データ構造超入門 〜つくって学ぶ簡潔ビットベクトル〜 - EchizenBlog-Zwei 簡潔データ構造超入門II 〜ちょっとだけ実用的な簡潔ビットベクトル〜 - EchizenBlog-Zwei 簡潔データ構造超入門III 〜簡潔ビットベクトルで転置インデックスを効率的に実装する〜 - EchizenBlog-Zwei 簡潔データ構造超入門IV 〜LOUDSというメモリ効率のよい木構造の話(準備編)〜 - EchizenBlog-Zwei さて、LOUDS(Level Order Unary Degree Sequence、ラウズ)は木構造を表すデータ構造のひとつ。データサイズを小さく抑えつつ

    簡潔データ構造超入門V 〜LOUDSというメモリ効率のよい木構造の話(本編)〜 - EchizenBlog-Zwei
  • 簡潔データ構造超入門IV 〜LOUDSというメモリ効率のよい木構造の話(準備編)〜 - EchizenBlog-Zwei

    今回はLOUDS(Level Order Unary Degree Sequence, ラウズ)というデータ構造の話。LOUDSは木構造の簡潔データ構造版、簡潔木と呼ばれているものの一種。 簡潔木には他にBP(Balanced Parentheses)やDFUDS(Depth First Unary Degree Sequence)というものがある。BPやDFUDSは部分木の大きさを効率的に計算できるという利点がある。実際は各ノードから親ノード、子ノードへのアクセスが効率的に出来れば十分な場合も多いので、そういう場合はLOUDSが活躍する。 今回はそんなLOUDSのお話の準備編。LOUDSに必要なデータ構造を用意するところまで。 前回までの記事: 簡潔データ構造超入門 〜つくって学ぶ簡潔ビットベクトル〜 - EchizenBlog-Zwei 簡潔データ構造超入門II 〜ちょっとだけ実用的な

    簡潔データ構造超入門IV 〜LOUDSというメモリ効率のよい木構造の話(準備編)〜 - EchizenBlog-Zwei
  • 簡潔データ構造超入門III 〜簡潔ビットベクトルで転置インデックスを効率的に実装する〜 - EchizenBlog-Zwei

    前回までで簡潔ビットベクトルというデータ構造を実装した。簡潔ビットベクトルとは普通のビット列に少しの追加データを持たせることでrank/selectという2つの操作が可能にしたもの。そしてrank/selectとはそれぞれ以下の操作のこと。 rank(x) : x番目のビット以前(xの位置を含む)の立っているビットの数 select(i): i番目に立っているビットの位置今回は簡潔ビットベクトルを利用して転置インデックスを効率的に実装してみる。 前回までの記事: 簡潔データ構造超入門 〜つくって学ぶ簡潔ビットベクトル〜 - EchizenBlog-Zwei 簡潔データ構造超入門II 〜ちょっとだけ実用的な簡潔ビットベクトル〜 - EchizenBlog-Zwei 転置インデックスとは検索エンジンに用いられるインデックスで apple 1, 3 orange 1, 2, 4, 6のように各単

    簡潔データ構造超入門III 〜簡潔ビットベクトルで転置インデックスを効率的に実装する〜 - EchizenBlog-Zwei
  • DSIRNLP#2で発表しました「作ろう!簡潔ビットベクトル」 - EchizenBlog-Zwei

    DSIRNLP#1に続いて今回の#2も発表の場をいただきました。今回は簡潔データ構造、とくに最も基的なデータ構造である簡潔ビットベクトルについて発表しました。@overlastさん、@kimurasさん、@rindai87さんをはじめ関係者、参加者の皆様どうもありがとうございました。 twitterでも紹介しましたが発表資料リンクを置いておきます。 発表資料:作ろう!簡潔ビットベクトル 第2回 データ構造と情報検索と言語処理勉強会 #DSIRNLP - [PARTAKE] DSIRNLP#1で発表しました「TRIEにトライ!〜今日からはじめるTRIE入門〜」 - EchizenBlog-Zwei なお質疑では以下のようなものがありました。 ・popcountを使った二分探索をするときのpopcount値はいつ持っておくの? =>直前の64bit毎の線形探索時に使ったものを残しておいて使い

    DSIRNLP#2で発表しました「作ろう!簡潔ビットベクトル」 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/12/11
  • 話題の新技術、簡潔データ構造の入門用資料をまとめてみた - EchizenBlog-Zwei

    最近私の周辺で簡潔データ構造に興味を持つ人が増えてきた。簡潔データ構造といえばGoogle日本語入力でも使われている話題の新技術。自然言語処理界隈で機械学習の次にブームになるのはこれだ!と個人的に思っている。 というわけで入門用の資料をまとめてみた。 簡潔データ構造では、すべての基礎である簡潔ビットベクトルがあって、その上に応用として簡潔木(LOUDSなど。Google日本語入力で利用されている)、簡潔文字列(ウェーブレット木など。FM-Indexに利用されている)がある。最近ではこれらより複雑なデータ構造に対する簡潔構造も研究されている。 ということをふまえて以下の資料を読むと良い。 Efficient dictionary and language model compression for input method editors Taku Kudo et al. Google

    話題の新技術、簡潔データ構造の入門用資料をまとめてみた - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/12/09
  • CRFがよくわからなくてお腹が痛くなってしまう人のための30分でわかるCRFのはなし - EchizenBlog-Zwei

    機械学習の3大有名手法といえばSVM、CRF、LDAではないだろうか(と勝手に思っている)。 SVM(Support Vector Machine)については以前記事を書いたので今回はCRF(Conditional Random Fields)について書いてみたい。 機械学習超入門IV 〜SVM(サポートベクターマシン)だって30分で作れちゃう☆〜 - EchizenBlog-Zwei といっても今回はさくっと読んでもらうのを目的にしているので手法の具体的な解説は行わない。具体的な部分は@uchumik氏の資料がとても詳しい。 uchiumi log: 間違ってるかもしれないCRFの説明 また、実装方法については高村(言語処理のための機械学習入門)がとても詳しい。 さて、具体的な解説をしないなら何をするの?ということだが、今回はそもそもCRFとは何かという話をする。過去の経験上この、そも

    CRFがよくわからなくてお腹が痛くなってしまう人のための30分でわかるCRFのはなし - EchizenBlog-Zwei
  • ALSIP2011に参加して簡潔データ構造の話を聴いて来ました - EchizenBlog-Zwei

    香川県高松市にて開催されたALSIP2011(Second Workshop on Algorithms for Large-Scale Information Processing in Knowledge Discovery)に参加してきた。 簡潔データ構造で有名なRajeev Raman先生、NIIの定兼先生、PFIの岡野原さんが招待講演をして下さるということで以前から注目していた。 招待講演に加えて興味深い10の発表がありとても楽しめた。私の勉強不足もあって初めて知ることが非常に多く勉強になった。簡単に内容をメモしておく(理解不足のため間違ったことを書いていたらすみません)。 今回の会議で最も興味深かったのがgrammer-based compressionというもので、これは例えばX=ababという文字列があったときにX1=a,X2=b,X3=X1X2,X=X3X3という感じで

    ALSIP2011に参加して簡潔データ構造の話を聴いて来ました - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/12/04
  • 自然言語処理の教科書はもう全部FSNLP一冊でいいんじゃないかな - EchizenBlog-Zwei

    自然言語処理の優秀なエンジニア各位にオススメを聞くと大抵FSNLP(Foundations of Statistical Natiral Language Processing)という答えが返ってくる。またブログ等でFSNLPを絶賛している方も多い。 私は自然言語処理は長尾で満足してしまっていたのでFSNLPは読んでいなかったのだけれど、長尾は現在入手困難ということもあって入手しやすい自然言語処理の教科書があるといいなと思っていたのでFSNLPを読んでみた。 その結果。自然言語処理の教科書はもう全部FSNLP一冊でいいんじゃないかな。という結論に至ったので全力でFSNLPを推薦する記事を書くことにした。 参考: [を]FSNLP @ytoさん 自然言語処理の定番の教科書まとめ - 生駒日記 @mamorukさん Perl で自然言語処理 @overlastさん ざっと読んでみてFSN

    自然言語処理の教科書はもう全部FSNLP一冊でいいんじゃないかな - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/11/05
  • SPIRE2011の論文でweb公開されているものをリストアップしてみた - EchizenBlog-Zwei

    SPIREは文字列処理や情報検索に関する発表が行われる国際会議。今年も10/17から10/21にかけてイタリアでSPIRE2011が開催された。 SPIREで発表された論文については例年Springerからまとめた書籍が発売される。が、無料で済ませられるならそれに越したことはない。というわけでSPIRE2011の論文でweb公開されているものをリストアップしてみた。 SPIRE 2011 | October 17-21, 2011 - Pisa, Tuscany, Italy Tuesday, Oct 18, 2011 Cross-lingual Text Fragment Alignment using Divergence from Randomness (link) Sirvan Yahyaei, Marco Bonzanini and Thomas Roelleke. Spaced

    SPIRE2011の論文でweb公開されているものをリストアップしてみた - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/11/02
  • 「珠玉のプログラミング」のチュートリアル的な読みもの - EchizenBlog-Zwei

    先日「自然言語処理を活用したwebサービスをつくるときに参考になる5冊の書籍」というタイトルでを紹介したら評判が良かった。記事では最初の一冊である「珠玉のプログラミング」のコラム1を読みつつチュートリアル的な記事を書いてみる。 自然言語処理を活用したwebサービスをつくるときに参考になる5冊の書籍 - EchizenBlog-Zwei さて、早速コラム1「真珠貝を開いて」を読み始めると著者が「ディスク上でのソートをしたい」という質問を受けたという話が書いてある。ここで、開発のお仕事をしている人はなんとなく想像が付くと思うのだが実は質問者は「ディスク上でのソートをしたい」わけではない。 フレンドリーな会話に潜むトラップ!? 「1.1 フレンドリーな会話」を読むと書いてあるように質問者は「メモリがほとんど使えない状況で重複のない数値データをソート」したかったのだ。そして質問者は思考の末「デ

    「珠玉のプログラミング」のチュートリアル的な読みもの - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/10/15
  • 自然言語処理を活用したwebサービスをつくるときに参考になる5冊の書籍 - EchizenBlog-Zwei

    自然言語処理を活用したwebサービス開発に関わって5年以上経った。いい機会なのでこれまでを振り返って役に立ったと思う5冊をメモしておく。 1.珠玉のプログラミング―質を見抜いたアルゴリズムとデータ構造 まずはこれ。有名ななので知っている人も多いと思う。簡単に説明するとちょっと前に「フェルミ推定」という名前で流行ったような、データから必要な数値を概算する方法や、問題が起きたときに問題点がどこにあるのか?最小の労力で解決するにはどこをいじればよいのか?などが書いてある。「webサービスで自然言語処理だ!」というと無限に夢が広がりがちなので、どういうデータが使えるのか、それをどういう形にもっていけばイケてるサービスになるのか、それはどのくらいの期間で実現できるか、ということを考える必要がある。そういうわけで書は真っ先に読むべき一冊なのでは(余談だけれど、以前M << Nなデータに対してO(

    自然言語処理を活用したwebサービスをつくるときに参考になる5冊の書籍 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/10/10
  • 「テキストマイニングを使う技術/作る技術」を読んだ - EchizenBlog-Zwei

    自然言語処理は大学時代からやっていたのだが、恥ずかしながらテキストマイニングについてはよくわかっていなかった。@shima__shima先生から「テキストマイニングを使う技術/作る技術」を紹介していただいたので読んでみた(紹介していただき、ありがとうございました)。 書によるとテキストマイニングは厳密な定義はないものの、テキストデータから抽出されたデータを用いたデータマイニングを指すらしい。 で、従来のデータマイニングであれば数値データからそのままマイニングすればいいけれどテキストデータは自然言語で書かれていてそのままでは使えないので自然言語処理(NLP)を用いてマイニングで使うデータを抽出するよ。ということらしい。なんとなくNLPの中にテキストマイニングがあるのかと思っていたのだが、テキストデータとデータマイニングの橋渡しをする技術としてNLPを使っている、というのが正しいのかも。

    「テキストマイニングを使う技術/作る技術」を読んだ - EchizenBlog-Zwei
    yuiseki
    yuiseki 2011/10/03