1 / 102

テキストマイニングのための 基礎技術(前編)

テキストマイニングのための 基礎技術(前編). 北陸先端科学技術大学院大学 鶴岡 慶雅. スケジュール. 1 日目 10:00 – 12:00 データ構造、辞書、 索引付け 12:00 – 13:00 昼食休憩 13:00 – 14:45 実習(検索エンジンの作成) 14:45 – 15:00 コーヒーブレイク 15:00 – 16:30 ベクトル空間モデル 資料 http://www.jaist.ac.jp/~tsuruoka/alaginseminar2010/. スケジュール. 2 日目 10:00 – 12:00 データマイニング入門、機械学習

sulwyn
Download Presentation

テキストマイニングのための 基礎技術(前編)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. テキストマイニングのための基礎技術(前編)テキストマイニングのための基礎技術(前編) 北陸先端科学技術大学院大学 鶴岡 慶雅

  2. スケジュール • 1日目 10:00 – 12:00 データ構造、辞書、索引付け 12:00 – 13:00 昼食休憩 13:00 – 14:45 実習(検索エンジンの作成) 14:45 – 15:00 コーヒーブレイク 15:00 – 16:30 ベクトル空間モデル 資料 http://www.jaist.ac.jp/~tsuruoka/alaginseminar2010/

  3. スケジュール • 2日目 10:00 – 12:00データマイニング入門、機械学習 12:00 – 13:00 昼食休憩 13:00 – 14:45 実習(クラスタリング、機械学習) 14:45 – 15:00 コーヒーブレイク 15:00 – 16:30 機械学習(続き) 資料 http://www.jaist.ac.jp/~tsuruoka/alaginseminar2010/

  4. 参考書 • Introduction to Information Retrieval • Manning, Raghavan and Schütze • Cambridge University Press. 2008. • http://nlp.stanford.edu/IR-book/information-retrieval-book.html • The Elements of Statistical Learning (2nd edition) • Hastie, Tibshirani and Friedman • Springer-Verlag. 2008 • http://www-stat.stanford.edu/~tibs/ElemStatLearn/

  5. 自己紹介 • 経歴 • 東京大学工学系研究科(工学博士) • 東京大学理学部 • 科学技術振興機構 研究員 • University of Manchester • National Centre for Text Mining (NaCTeM) • 北陸先端科学技術大学院大学 • 研究分野 • 自然言語処理 • テキストマイニング • ゲームAI

  6. 激指(げきさし) • コンピュータ将棋プログラム • 2010年世界コンピュータ将棋選手権優勝(4度目) • 機械学習を用いた探索制御、形勢判断 • レーティング:約3000点(プロ棋士レベル) Windows XP/Vista/7 PlayStation2 PSP ニンテンドーDS

  7. デモ • FACTA+ • 医学・生物学文献用の情報検索システム • 1700万文献 • 概念間の直接・間接的な関係を検索 • http://refine1-nactem.mc.man.ac.uk/facta/

  8. デモ • GENIA tagger • 英語用の言語処理ツール • Tokenization • 品詞タグ付け • 原型の出力 • 浅い構文解析 • 固有表現認識 http://www-tsujii.is.s.u-tokyo.ac.jp/GENIA/tagger/

  9. テキスト処理のためのデータ構造 • 文書⇒数値列 • ハッシュテーブル • 辞書 • Nグラム • 転置インデックス • 接尾辞配列

  10. 文字列から数値列へ • 文字列をそのまま扱うのは速度・メモリ効率が悪い • 文字列を数値列に変換

  11. 入力を単語に分割(英語) • Tokenization Humpty Dumpy sat on a wall, Humpty Dumpy sat on a wall , • ルールベースのスクリプト • カンマ、ピリオド、括弧などを切り離す • Tokenizer.sed • http://www.cis.upenn.edu/~treebank/tokenizer.sed

  12. 入力を単語に分割(日本語) • 単語分割 すももももももももものうち  すもも も もも も もも の うち • 曖昧性が大きく英語よりもはるかに難しい • 統計、機械学習を用いた手法が主流 • MeCabhttp://mecab.sourceforge.net/ • JUMAN http://www-lab25.kuee.kyoto-u.ac.jp/nl-resource/juman.html

  13. 単語列から数値列へ 入力単語列 (tokenization済) 数値列

  14. 単語と数値の対応表 • 出現した単語列の辞書をつくる必要 • 単純に配列に格納すると、辞書引きのたびにO(n) の計算量(nは辞書中の単語数) Humpty Dumpty sat on a wall Humpty Dumpty had a great fall …

  15. 連想配列 • 添え字に文字列を使える配列 例(Python) dictionary.has_key(’Humpty’) dictionary[’Humpty’] = 2 • 辞書引きの計算量 • O(1): ハッシュテーブルによる実装 • O(log n): 平衡2分探索木などによる実装 • 多くのプログラミング言語で標準装備

  16. ハッシュテーブル(HashTables) ハッシュテーブル 文字列 数値(ハッシュ値) • 文字列をハッシュ関数を用いて適当な数値に変換 • ハッシュテーブルのサイズで余りをとると、テーブル上での位置が一意に決まる • O(1) の計算量で辞書引きができる Humpty 261 inthash_function(string s) h = 0 for i = 0 to s.length h = h * 101 h = h + s[i] return h% hashtable.size 適当な素数

  17. ハッシュテーブル • 衝突(collision) • 違う文字列から同じハッシュ値が計算されてしまうことがある • チェイン法(chaining) • エントリをリストへのポインターにして複数の要素を保持する • オープンアドレス法(open addressing) • 空のエントリを探す

  18. トライ木(Trie) k • 前方一致検索が効率的に実行できる • 実装: ダブル配列(double array)など back c a b l l ball t bat c u t cut

  19. 索引付け(indexing) • 情報検索 • クエリーにマッチする文書を取得 • 基本操作:ある単語が出現する文書すべてを取得 • 文書を頭から単純にスキャンするのは、文書量が増えると遅くなる

  20. 転置インデックス(inverted index) • 単語ごとにそれが出現する文書IDのリスト 転置インデックス

  21. 全文検索 • 転置インデックスなどの単語ベースの索引付けでは、全文検索ができない • 全文検索 • クエリーの文字列が出現している場所をすべて見つける • 単語区切りの境界は関係なし

  22. 接尾辞配列(suffix array) abracadabra 文書 Suffix Array Suffixの辞書順 にソート

  23. 接尾辞配列(suffix array) abracadabra 文書 Suffix Array 文書中から raが出現する位置 をすべて知りたい場合 SuffixArray 上で2分探索 1 O(log n) で検索できる! 2 3

  24. 実習1 検索エンジンの作成 • ファイルから文書集合を読み込む • 文書を単語列に変換 • 転置インデックスを作成 • クエリー(単語)にマッチする文書を返す • 余裕があれば全文検索も

  25. ベクトル空間モデル • ベクトル空間モデル • tf-idf • 類似度 • 再現率・適合率

  26. ベクトル空間モデル • 文書やクエリを高次元空間における点で表現 似てる文書

  27. ベクトル空間モデル • 単語の出現回数でベクトルを作ると 次元 単語 d1 = (1, 1, 1, 1, 1, 1, 0, 0, 0) 単語 “Humpty” の出現回数 d2 = (1, 1, 0, 0, 1, 0, 1, 1, 1)

  28. 文書の類似度 • コサイン類似度(cosine similarity) • ベクトルが同じ方向を向いていれば 1、直交してると 0 例 (1, 1, 1, 1, 1, 1, 0, 0, 0) (1, 1, 0, 0, 1, 0, 1, 1, 1) 参考

  29. tf-idf • 単語の重み付け手法 • 頻度を直接用いた場合、機能語(a, the, on, to など)の頻度に大きく影響される • 意味的に重要な単語の重みを大きくしたい 重み Term Frequency (TF) Inverse Document Frequency (IDF) 珍しい単語ほど重みが大きくなる

  30. 情報検索(information retrieval) • クエリで取得したい情報を指定 クエリ 文書集合

  31. 性能評価 • 適合率(precision) • 検索ノイズがどれだけ少ないか • 再現率(recall) • 検索漏れがどれだけ少ないか • f-score • 適合率と再現率の調和平均

  32. 性能評価 • 適合率(precision) • 再現率(recall) • f-score

  33. データマイニング入門 • クラスタリング • 階層クラスタリング • K-means クラスタリング • スペクトラルクラスタリング • 類似度・相関の計算 • 相関ルールの抽出

  34. クラスタリング • 似たようなサンプルをまとめあげる • 階層的クラスタリング • 非階層的クラスタリング

  35. 検索エンジン + クラスタリング http://clusty.com

  36. 階層的クラスタリング • サンプル間に距離を定義 • 例 ベクトル空間モデルによるコサイン類似度 • アルゴリズム • すべてのサンプルを個別のクラスタとして開始 • もっとも近いクラスタ同士を統合し新たなクラスタとする • すべてのクラスタが統合されるまで 2 に戻り繰り返す

  37. 階層的クラスタリング • 例 デンドログラム (Dendrogram) 1 3 5 2 4 1 2 3 4 5

  38. クラスタ間の距離の定義 最短距離法(single link) 最長距離法(complete link) 重心法(centroid) 群平均法(group-average)

  39. 階層的クラスタリング • 計算量 • ナイーブに実装すると O(n3) • 効率的な実装 O(n2 log n) • サンプル数が多くなると大変

  40. k-means法 • クラスタの重心 • 最小化 • アルゴリズム • k個の代表点c1,…ckをランダムに選択 • すべての点を代表点がもっとも近いクラスタに割り当て • 各クラスタの重心を代表点にして2へ戻り繰り返す

  41. k-means法 • 実装が簡単 • 計算量が小さい • クラスタ数 k をあらかじめ決めておく必要 • すべてのクラスタがほぼ同じサイズ • 初期値のランダムな配置に依存

  42. スペクトラルクラスタリング spectral clustering k-means (Lee and Choi, 2004)

  43. スペクトラルクラスタリング • 準備 類似度行列 頂点 iの次数(接続しているエッジの類似度の和) 次数行列 (サブ)グラフ A の頂点の数

  44. グラフラプラシアン • グラフラプラシアン(graph Laplacian) • 性質 正規化バージョン

  45. スペクトラルクラスタリング • 入力:類似度行列 S, クラスタ数 k • グラフラプラシアンの固有ベクトルを固有値が小さいものから k 個求める (最初のは無視) • それらの固有ベクトルを並べて行列 V を作成 • 行列 V の個々の行を、k 次元空間上の位置とみなし、頂点を空間上の点として配置 • K-means アルゴリズムでそれらの点をクラスタリング

  46. スペクトラルクラスタリング • グラフをサブグラフに分割

  47. 関連する概念・単語の抽出 • 糖尿病と関係が深い症状は? 「糖尿病」との共起頻度 単に「痛み」がありふれた 単語だからでは?

  48. Pointwise Mutual Information • Pointwise Mutual Information(PMI) • 偶然共起するよりもどれだけ多く共起したか • X と Y が独立なら PMI = 0

  49. Pointwise Mutual Information • 糖尿病と関係が深い症状は? 「糖尿病」とのPMI P(糖尿病) = 0.6 P(狭心症) = 0.4 P(痛み) = 0.8 P(疲労感) = 0.6 P(糖尿病, 狭心症) = 0.4 P(糖尿病, 痛み) = 0.6 P(糖尿病, 疲労感) = 0.4

  50. Symmetric Conditional Probability • Symmetric Conditional Probability (SCP) • 両方向の条件付確率の積

More Related