Nltk for biginer

12,214
-1

Published on

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
12,214
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
39
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Nltk for biginer

  1. 1. にこにこテキストマイニング勉強会 初めての NLTKーツイートでの累積頻度ー 早川 敦士
  2. 2. http://www.slideshare.net/gepuro/ に資料が公開されています。
  3. 3. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  4. 4. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  5. 5. 自己紹介 早川 敦士電気通信大学電気通信学部 システム工学科 二年 TwitterID: @gepuroテキストマイニング初心者 プログラミング初心者
  6. 6. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  7. 7. NLTK について Natural Language Toolkit の略 ペンシルバニア大学で、コンピュータ言語学コーパスの一部として作成 ● 単純化 ● 一貫性 ● 拡張性 ● モジュール性 を目標にデザインされた。
  8. 8. NLTK について 単純化 退屈で面倒な作業を少なくするユーザーへ NLP の実用知識を与える 直感的なフレームワーク
  9. 9. NLTK について 一貫性一貫したインターフェイスとデータ構造 推測しやすいメソッド名
  10. 10. NLTK について 拡張性新しいソフトウェアモジュールが容易に対応可能であるような構造
  11. 11. NLTK について モジュール性ツールキットの他の部分の理解を必要なしで、独 立して利用できるコンポーネント
  12. 12. NLTK について 要は、使いやすいように 作った
  13. 13. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  14. 14. ツイートの取得 ぺちゃくちゃ Reader で取得 Windows で使用可能です。python-twitter なるものがあるそうだけど、 知識不足の為、断念。 一度目の挫折 orz
  15. 15. ツイートの取得 まずは、ダウンロード。しみず工房 http://pcbase.web.infoseek.co.jp/ 過去の投稿を取得後、 csv ファイルに出力
  16. 16. ツイートの取得 csv ファイルには、● 何番目のツイートか ● 発言ユーザー ● ツイート内容● ツイートの投稿時間 ● 謎の数字
  17. 17. ツイートの取得 今回、使用した情報は、 自分のツイート内容です。投稿時間等の他の情報は使用しませんでした。
  18. 18. ツイートの取得Python で csv を使おうとしたら苦戦しました。 ↓ Google Document を使用した。 二度目の挫折 orz
  19. 19. ツイートの取得必要な無いツイート以外の内容を削除したのち、 tcv 形式で出力しました。 これで、とりあえず一段落。
  20. 20. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  21. 21. MeCab で分かち書き分かち書きするなら、 MeCab でしょ!
  22. 22. MeCab で分かち書きという訳で、 MeCab のインストール $ sudo apt-get install mecab Ubuntu10.10 で動作確認
  23. 23. MeCab で分かち書き$ mecab -Owakati input.tcv -o twitter.txt これで分かち書きされる。
  24. 24. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  25. 25. NLTK を用いて累積頻度プロット まずは、インストールを、 $ sudo apt-get install python-nltk 参考書を見ながら、 プログラムを書いてみました。
  26. 26. NLTK を用いて累積頻度プロット#!/usr/bin/pythonimport sysimport nltkfrom nltk.book import *from nltk.corpus import PlaintextCorpusReaderreload(sys)sys.setdefaultencoding(utf-8)corpus_root = /home/dedicatus545/Dropbox/Documents/nlp/wordlist = PlaintextCorpusReader(corpus_root,twitter.txt,encoding=utf-8)fdist = FreqDist(wordlist.words(twitter.txt))fdist.plot(40,cumulative=True)
  27. 27. NLTK を用いて累積頻度プロット
  28. 28. NLTK を用いて累積頻度プロット 文字化け!!
  29. 29. NLTK を用いて累積頻度プロット しかも、文字化けだけで無く、 y 軸が割合では無く、 カウントで表示されている。 三度目の挫折 orz
  30. 30. NLTK を用いて累積頻度プロット しかし、ここは譲ることができない。 という訳で、文字化けの修正と、 y 軸を割合で表示できるよう にしました。
  31. 31. NLTK を用いて累積頻度プロット どうやら、NLTK ツールキットの内部的な問題なので、 ライブラリにパッチを当ててみました。
  32. 32. NLTK を用いて累積頻度プロット グラフ出力のメソッドは、/usr/lib/pymodules/python2.6/nltk/probability.py を参照してます。
  33. 33. NLTK を用いて累積頻度プロット 変更した内容は、 ascii コードでの処理を utf-8 に変更 累積の割合で表示できるように、引数を追加 フォントの指定による文字化けの回避です。http://www.mma.club.uec.ac.jp/~hayakawa/nltk_probability_plot.txt に掲載しました。
  34. 34. NLTK を用いて累積頻度プロット#!/usr/bin/pythonimport nltkfrom nltk.book import *from nltk.corpus import PlaintextCorpusReadercorpus_root = /home/dedicatus545/Dropbox/Documents/nlp/wordlist = PlaintextCorpusReader(corpus_root,twitter.txt,encoding=utf-8)fdist = FreqDist(wordlist.words(twitter.txt))fdist.plot(40,cumulative=True,percent=True)   # 上位 40 単語でプロットを実行しました。
  35. 35. NLTK を用いて累積頻度プロット
  36. 36. NLTK を用いて累積頻度プロット助詞や句読点で大半を占めていることが分かる。 自分のツイートの特徴的なものが 出てこなかった。
  37. 37. NLTK を用いて累積頻度プロット そこで、上位 100 語を出力してみた。 fdist.tabulate(100) で表示される。
  38. 38. NLTK を用いて累積頻度プロット 特徴的な語は、 Http, 今日、何、時間、僕、 勉強、 R 、 fkhr 、 mlka 、 けど、良い、アニメ、明日 頻度順
  39. 39. NLTK を用いて累積頻度プロット アニメ!
  40. 40. NLTK を用いて累積頻度プロット しかし、アニメより、 勉強という語の方が出現頻度が高くて、 安心しました。
  41. 41. AGENDA●自己紹介●NLTK について●ツイートの取得●MeCab でツイートの分かち書き●NLTK を用いて累積頻度プロット●参考資料
  42. 42. 参考資料 出版  ORELLY   入門 自然言語処理Steven Bird, Ewan Klein, Edward Loper 著萩原 正人、中山 敬広、水野 貴明 訳
  43. 43. おわりご清聴ありがとうございました。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×