ゼロから始める自然言語処理 【FIT2016チュートリアル】

5,012 views

Published on

テキストマイニングして知識抽出,に初めて取り組む方へ向けたチュートリアルです.

Published in: Data & Analytics
0 Comments
26 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,012
On SlideShare
0
From Embeds
0
Number of Embeds
1,771
Actions
Shares
0
Downloads
31
Comments
0
Likes
26
Embeds 0
No embeds

No notes for slide

ゼロから始める自然言語処理 【FIT2016チュートリアル】

  1. 1. ゼロから始める自然言語処理 大阪大学大学院情報科学研究科 荒瀬由紀
  2. 2. 自己紹介 荒瀬由紀 2010年: 博士号(情報科学)取得 2010年~2014年: Microsoft Research (Beijing)にて 自然言語処理研究に従事 2014年~: 大阪大学大学院情報科学研究科 准教授 初めて自然言語 処理に触れる!
  3. 3. 自然言語処理に初めてふれる方の: ・テキストデータを扱いたい! ・テキストから知識を抽出したい! をお助けするためのチュートリアルです.
  4. 4. 例題: Twitterから話題のポケGo用語を抽出
  5. 5. 処理の流れ • データの準備 • データクリーニング • 前処理 • 形態素解析 • 後処理 • 特徴語抽出
  6. 6. 処理の流れ • データの準備 • データクリーニング • 前処理 • 形態素解析 • 後処理 • 特徴語抽出
  7. 7. データ準備 • ダウンロードする – アノテーション付データが多い – 研究機関が作成・公開していることが多い • NII 情報学研究データリポジトリ http://www.nii.ac.jp/dsc/idr/datalist.html • ALAGIN 言語資源・音声資源サイト https://alaginrc.nict.go.jp/ – Pros: • 既存研究と実験結果を比較できる. • 無料! – Cons: • 最新のデータは手に入りにくい.
  8. 8. データ準備 • 購入する – 新聞記事,アノテーション付データ – Pros: • フォーマットされている • ノイズが少ない(ことが多い) – Cons: • 結構高い • 契約の年次更新が必要なことも
  9. 9. データ準備 • 自分でクロールする – Pros: • 欲しいデータが手に入る • 速報性 – Cons: • ノイズ除去が大変 • 時間がかかる.テクニックも必要.
  10. 10. データクローリング • クローリングのマナー – 相手のサーバに負荷をかけない. – API利用制限 Twitter search API: 180 requests/queries per 15 minutes – 違反すると,所属全体のIPがBanされたり怒られた り. • 取得失敗時のリカバリ – 壊れたデータを保存しないようロールバック – 重複チェック • ネットワーク障害,サーバダウン,停電,etc.
  11. 11. 処理の流れ • データの準備 • データクリーニング • 前処理 • 形態素解析 • 後処理 • 特徴語抽出
  12. 12. 形態素解析 • 形態素への分割と品詞タグ付け – 意味を構成する最小単位 • 精度の高いツールがあります! – Chasen,Mecab http://chasen-legacy.osdn.jp/ http://taku910.github.io/mecab/ – JUMAN http://nlp.ist.i.kyoto- u.ac.jp/index.php?JUMAN
  13. 13. Mecabの分析例 新宿 名詞,固有名詞,地域,一般,*,*,新宿,シンジュク,シンジュク 御苑 名詞,一般,*,*,*,*,御苑,ギョエン,ギョエン で 助詞,格助詞,一般,*,*,*,で,デ,デ ピカチュウ 名詞,固有名詞,一般,*,*,*,ピカチュウ,ピカチュウ,ピカチュウ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 会い 動詞,自立,*,*,五段・ワ行促音便,連用形,会う,アイ,アイ たかっ 助動詞,*,*,*,特殊・タイ,連用タ接続,たい,タカッ,タカッ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 形態素の 表層 読み 原形 品詞情報 発音
  14. 14. 処理の流れ • データの準備 • データクリーニング • 前処理 • 形態素解析 • 後処理 • 特徴語抽出
  15. 15. 特徴語抽出 • TF-IDF強し – Term Frequency – Inverse Document Frequency TF−IDF = tf 𝑡𝑡, 𝑑𝑑 idf 𝑡𝑡, 𝐷𝐷 idf 𝑡𝑡, 𝐷𝐷 = log 𝑁𝑁 𝑑𝑑𝑑𝑑(𝑡𝑡, 𝐷𝐷) tf 𝑡𝑡, 𝑑𝑑 :ターム𝑡𝑡のドキュメント𝑑𝑑での頻度 𝑑𝑑𝑑𝑑(𝑡𝑡, 𝐷𝐷): 全てのドキュメント𝐷𝐷で𝑡𝑡を含む𝑑𝑑の数 𝑁𝑁:ドキュメント数
  16. 16. TF-IDFの注意点 • 𝐷𝐷を定義(用意)できるか? • ドキュメントを扱う場合IDFは重要 • Tweetのような短文ではTFのみで良 いことも
  17. 17. やってみる.
  18. 18. こうなる
  19. 19. あれ,思てたんと違う… …
  20. 20. 処理の流れ • データの準備 • データクリーニング • 前処理 • 形態素解析 • 後処理 • 特徴語抽出
  21. 21. データクリーニング 現実のデータは… ノイズだらけ!
  22. 22. よくあるノイズ • URL • 非文(@mention,hashtag,商品コー ド,etc.) • アクセント記号:ã,ä,é • 対象以外の言語データ • 記号のバリエーション --﹣ ‐ - ⁃ ˗ − ➖ ‒ – ~ ~ ∼ ˜ ˷ ∽ ∾ ∿ 〜 〰 ﹏ • 謎のUnicode文字
  23. 23. ノイズ除去 • URL,非テキスト,記号のバリエーション -->データに頻繁に出現するパターンを観察して, ルールで除去 • アクセント記号 -->文字コードに注意すれば大丈夫. HTMLでは特殊記号に置き替えられるので置換 • 対象言語以外 -->Unicodeの範囲指定である程度何とかなる. 本気を出すならLanguage Identification • 謎のUnicode文字 -->テキストをまずデコード,失敗したものは排除.
  24. 24. リュウ 「単語」とのずれ
  25. 25. 「単語」とのずれ • 形態素解析の単位は「形態素」 • 「単語」って実はすごく曖昧 – 「大阪」「大学」vs「大阪大学」 • ルールで形態素を合併 – 連続した(固有)名詞はつなげる • 辞書の追加
  26. 26. • URL, @mentionの除去 • 「。!?」でテキストを 分割 • ポケモン,ポケモン技の 辞書作成 • 形態素解析の結果,ポケ モンとポケモンの技のみ 抽出 • 出現頻度カウント
  27. 27. 発展編 • 単語ペアを扱う! --> コロケーション抽出 • 文の意味を考慮したい! --> 係り受け解析
  28. 28. コロケーション抽出 • 頻繁に共起する単語のペアを特定 • Pointwise Mutual Information (PMI) 𝑃𝑃𝑃𝑃𝑃𝑃 𝑡𝑡1, 𝑡𝑡2 = log 𝑝𝑝(𝑡𝑡1, 𝑡𝑡2) 𝑝𝑝 𝑡𝑡1 𝑝𝑝(𝑡𝑡2) – 𝑃𝑃𝑃𝑃𝑃𝑃 𝑡𝑡1, 𝑡𝑡2 > 0:共起しやすい – 𝑃𝑃𝑃𝑃𝑃𝑃 𝑡𝑡1, 𝑡𝑡2 = 0:関連無し(独立) – 𝑃𝑃𝑃𝑃𝑃𝑃 𝑡𝑡1, 𝑡𝑡2 < 0:共起しにくい
  29. 29. コロケーション抽出 • 単語の出現確率 𝑝𝑝 𝑡𝑡1 の推定 – 簡単なのは最尤推定 𝑝𝑝 ピカチュウ = 200/1000000 – 低頻度の単語ペアのPMI値が非常に高く なってしまう -->出現確率の推定が正しくない • 解決策 – 頻度を考慮する – 事後分布最大化推定値
  30. 30. コロケーション抽出
  31. 31. 係り受け解析 • 係り受けを解析 – 文節単位 • 固有表現抽出 上野公園で 強い ギャラドスに 会いたかった LOC ART
  32. 32. 係り受け解析 • 「誰が」「どうした」を抽出できる. • 単純な単語の共起よりも,文の意味を反 映した情報抽出が可能 • 精度の高いツールあります! – Cabocha https://taku910.github.io/cabocha/ – KNP http://nlp.ist.i.kyoto- u.ac.jp/index.php?KNP
  33. 33. 係り受け解析 & PMI イーブイって 出やすいのか? ソーラービームが 強すぎる! カイリューゲットしたんだけど 育てるべき? ラプラスが れいとうビームだったんだけど 「はがねのつばさカイ リュー」って ハズレなの? カイリューに 勝てる・・・だと? ミュウツーを GETするには? ギャラドス 作って フーディンって 強いの? かえんほうしゃは、 はずれだよね? シャワーズ虐めすぎたら 調整入るぞ! イワークが 捕まらない
  34. 34. おまけ:おススメの環境 • Python – 強力な文字列処理ライブラリ – 自然言語処理・機械学習ライブラリも充実 NLTK:http://www.nltk.org/ scikit-learn:http://scikit- learn.org/stable/ – MecabなどのNLPツールとバインディング • C#, Java, Perl もよい • 速度を求めるならC++
  35. 35. まとめ • 利用できるデータは積極的に利用 • 自然言語処理ツールはたくさん – 辞書,ルールの活用 • 地道なノイズ除去が肝心 – データの観察 – 諦めも大事

×