LoginSignup
25
16

More than 5 years have passed since last update.

Mecabで自分のツイートを形態素解析し頻出一般名詞を一覧化する

Posted at

はじめに

[アカデメイア]自然言語処理勉強会 #1に参加させていただきました。
こちらの勉強会では、
- 自然言語処理の基礎
- ビジネスにおける活用例
- 実習
を学習、実施しました。

実習では個人的に、自分がツイートしているワードにはどのようなものが多いかを見てみました。

自分のツイートのダウンロード

ツイッターのユーザー情報から全ツイート履歴の申請が行えます。
私の場合は申請から数分でダウンロードリンクが送られてきました。

Mecabのインストール

下記を参考にインストールを行いました。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer

Macだと文字化けしてしまうようなので、下記も参考にしました。
UTF-8の設定が必要なようです。
MacにMecabをインストールする (2013.3)

無駄な列の削除

ダウンロードしたツイートデータのうち、投稿内容列のみ残し、他は削除しました。(投稿日時等)

mecabで形態素分解する

terminalで下記のコマンドを実行し、各投稿を形態素で分解しました。
-E ""はツイートごとのEOSをなくすオプション、
-F "%m,%H\n"は出力形式の設定を行うオプションです。

mecab tweets.csv -o mecab_tweets.txt -E "" -F "%m,%H\n"

オプションについては下記を参考にしました。

MeCabのコマンドライン引数一覧とその実行例

下記のように、ツイートを分解したものが取得できます。

今日,名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
の,助詞,連体化,*,*,*,*,の,ノ,ノ
エンジニア,名詞,一般,*,*,*,*,エンジニア,エンジニア,エンジニア
飲み,動詞,自立,*,*,五段・マ行,連用形,飲む,ノミ,ノミ
会,名詞,接尾,一般,*,*,*,会,カイ,カイ

Pythonで集計する

下記のように、形態素解析したもののうち一般名詞のみ抽出した上で集計しました。
雑すぎてゴメンなさい。

sample.py
import pandas as pd

col_names = ['c{0:02d}'.format(i) for i in range(8)]

# ツイートデータの読み込み
tweet = pd.read_csv('mecab_tweets_only.txt',names=col_names)

# 一般名詞のみ抽出
tweet_meishi_ippan = tweet[tweet.c01 == '名詞'][tweet.c02 == '一般']

# c07には単語の原形が入っている(名詞については、辞書登録されているもののみ単語が入る?)
tweet_meishi_ippan_sort = tweet_meishi_ippan.groupby('c07')[['c07']].count().sort('c07',ascending=False)

集計結果

下記のような結果となりました。
(初めのアスタリスクはゴミです。)

tweet_meishi_ippan_sort

    c07
c07 
*   37147
人 807
自分  439
月 256
ゲーム   166
会社  163
(以下略)

ビジュアライズ

勉強会ではワードとそのカウント数でビジュアライズできるスクリプトを配布いただきました。
それを用いてビジュアライズしたものがこちら。
スクリーンショット 2016-11-20 16.49.06.png

ゲーム、漫画、映画など、自分の興味のあるワードが表現されていたので良かったです。

ありがとうございました。

25
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
16