rubyã§èªåã®ãã¤ã¼ããã¼ã¿ããé »åºèªãè¦ã¤ãã
ãµã¨èªåã®ãã¤ã¼ããã¼ã¿ã使ã£ã¦é »åºèªãªã¹ããä½ã£ã¦ã¿ãããªã¨æã£ãã®ã§ãã£ã¦ã¿ã¾ããã
å¿ è¦ãªãã®ãã¤ã³ã¹ãã¼ã«ãã
MeCab(ããã¶)ã¨ã¯ãªã¼ãã³ã½ã¼ã¹ã®å½¢æ
ç´ è§£æã¨ã³ã¸ã³ã§ãããã使ãã¨ãæååãåèªãã¨ã«åºåããã¨ãã§ãã¾ãã
(ä¾: ã仿¥ã¯ãã天æ°ã§ãããâã仿¥ | 㯠| ãã | å¤©æ° | ã§ã | ãã)
mecabç¨ã®è¾æ¸ãã¡ã¤ã«ã¨ã¨ãã«ã¤ã³ã¹ãã¼ã«ãã¾ãã
$ brew install mecab-ipadic mecab
- gem 'natto'
MeCabãrubyãã使ãããã«ãä»åã¯'natto'ã¨ããgemã使ãã¾ãã
$ gem install natto
ãã¤ã¼ããã¼ã¿ããã¦ã³ãã¼ããã
Twitterã®è¨å®ç»é¢ã®ä¸ã®ã»ãã«ãå
¨ãã¤ã¼ãå±¥æ´ã®ãã¦ã³ãã¼ãããªã¯ã¨ã¹ããããã¿ã³ãããã¾ãã
https://twitter.com/settings/account
ãªã¯ã¨ã¹ããã¦ãããã°ããçµã¤ã¨ããã¦ã³ãã¼ãæºåå®äºã®ã¡ã¼ã«ãããã®ã§ãããã«æ¸ãã¦ãããªã³ã¯ãããã¦ã³ãã¼ããã¾ããããtweets.zipã¨ãããã¡ã¤ã«ããã¦ã³ãã¼ãã§ããã¯ãã§ãã
tweets.zipãè§£çããã¨ãããã¤ããã¡ã¤ã«ãããã¨æãã¾ãããä»åã¯tweets.csvã使ç¨ãã¾ãã
ãã®ãã¡ã¤ã«ãããã¹ãã¨ãã£ã¿ãExcelçã§éãã¦é ãã¨ãã©ããªæ§é ããã¦ããã®ãããããã¨æãã¾ãã
é »åºèªã®éè¨æ¹æ³
é »åºèªãéè¨ããã«ããã£ã¦ã®é çªã¯ã
- tweets.csvã«ãã¹ã¦ã®ãã¤ã¼ããã¼ã¿ãå«ã¾ãã¦ããã®ã§ãã¾ããããããã¤ã¼ãã®ããã¹ãã ããæ½åºãã¾ãã
- ãããããã¹ãä¸ä»¶ä¸ä»¶ã«å¯¾ãã¦ãå½¢æ ç´ è§£æãè¡ãã¾ãã
- å½¢æ ç´ è§£æã«ãã£ã¦åè§£ãããåèªã²ã¨ã¤ã²ã¨ã¤ã«ã¤ãã¦ããã¤ã¼ããã¼ã¿å ¨ä½ã§ä½ååºç¾ããããt_mapã«æ ¼ç´ãã¾ãã
- t_mapã«æ ¼ç´ãããåèªãã¼ã¿ãåºç¾åæ°ã§ã½ã¼ããã¾ãã
- t_mapã®å 容ãt.csvã«åºåãã¾ãã
ã¨ãã£ãæãã§ãã
å®éã«ã³ã¼ãã«ãã
ãããªæãã§ãã
# count.rb require 'csv' require 'natto' require 'pp' reader = CSV.open('tweets.csv', 'r') # å é è¡ã¯ä¸è¦ãªã®ã§ãèªã¿é£ã°ã reader.take 1 nm = Natto::MeCab.new t_map = {} reader.each do |row| # RTã§å§ã¾ããã¤ã¼ãã¯ãªãã¤ã¼ããªã®ã§å¦çããªã next if row[5].index('RT') == 0 nm.parse(row[5]) do |n| t_map[n.surface] = t_map[n.surface] ? t_map[n.surface] + 1 : 1 end end t_map = t_map.sort_by {|k, v| v} File.open('t.csv','w'){|f| t_map.each do |word, count| f.write "#{word},#{count}\n" end }
å®è¡
count.rbã¨åããã£ã¬ã¯ããªã«tweets.csvãç½®ãã¦ãå®è¡ãã¾ãããã¤ã¼ãæ°ã«ãã£ã¦ã¯å¤å°æéããããããããã¾ããã
$ ls count.rb tweets.csv $ ruby count.rb $ ls count.rb t.csv tweets.csv
çµæ
èªåã®ãã¤ã¼ããç´3ä¸ä»¶ã«å¯¾ãã¦ãã£ã¦ã¿ãã¨ããã15ç§ãããã§å¦çãçµããã¾ããã
çµæãåºç¾åæ°ã®å¤ãé ããããã¤ãæããã¨ã
åèª | åºç¾åæ° |
---|---|
, | 24657 |
ã® | 16085 |
ã | 13683 |
ã | 12598 |
@ | 12062 |
㦠| 11845 |
ã | 10393 |
ã¨ãªãã¾ããå®éã«ãã£ã¦ã¿ã¦ãã¼ã¿ãçºãã¦ã¿ãã¨ãããã¨æãã®ã§ãããä¸ä½ã«åºã¦ãããã®ã®ä¸ã«ã¯ãåèªã¨ãã¦æå³ããªããªãæåãå¤ãåºã¦ãã¾ãã
ãããã¯ã¹ãããã¯ã¼ãã¨ããããã¡ãã¨è§£æãããéã«ã¯ãéè¨ãããåã«æå³ã®ãªãåèªãæåãé¤å»ãã¦ããè§£æãè¡ãã¾ãã
äºåã«ãã¼ã¿ã綺éºã«æ´çããå¦çãå
¥ããªããã°ããã®ããã«æå³ã®ãªãè¨èã大éã«åºã¦ãã¦ãã¾ãã¾ãã
ä»åã¯ç°¡åã®ãããã¹ãããã¯ã¼ããé¤å»ããå¦çã¯å
¥ãã¾ããã§ããã®ã§ãä¸»è¦³ã§æå³ã®ããåèªãé¸ã³ããã®ä¸ã§å¤ãé ä¸ä½10åèªãæãã¦ã¿ã¾ãã
åèª | åºç¾åæ° |
---|---|
ç¬ | 3722 |
俺 | 920 |
仿¥ | 917 |
æé | 685 |
å¤§å¦ | 493 |
èªå | 469 |
å ç | 453 |
ãã¤ã | 420 |
ææ¥ | 416 |
åå¼· | 413 |
ä»åã¯ãåç´ã«åºç¾åæ°ã®å¤ããã®ããé ã«åºåããã ãã§ãããæ¬¡ã¯ç¹å¾´èªãæ½åºããããã¦ã¿ããã¨æãã¾ãã