1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

年賀状をpythonを使って他己分析してみた

Posted at

#開発の動機
毎年送りあう年賀状…
部屋の整理をしていたら、先輩や後輩からもらった年賀状がたくさん出てきた。
これを何か役立てないかと考えた。

そこで閃いたのが、他人から見た自分を年賀状を通じて可視化できるのではなかろうかと思いついた。
いわゆる他己分析が年賀状を通じてできるのではないだろうかと思った。

考えてみれば、自分が他の人に書くときは、去年のその人の印象やエピソードなんかを交えて書く。
これは他人も同じなのではないかと考えた。

年賀状を形態素解析して、自分に対する印象を抽出できるはず…
それをワードクラウドにして、自分の他人に対する印象を可視化しようと思った。

#作り方

##1 年賀状の文面の打ち込み(データ入力)

まず、分析するデータを集める必要があるので、年賀状の内容をエクセルにまとめる。

messageImage_1585488373040.jpg

こんな感じで、あけおめ・ことよろ系のしょうもない挨拶は省いたもので入力した。
なるべく、自分の印象やエピソードに関連する文言のみを入力するようにした。

##2 データをまとめる

次に、入力したエクセルを一つのデータにまとめる

import xlrd

wb = xlrd.open_workbook('/nenga2020.xlsx')
sheet = wb.sheet_by_name('Sheet1')
col_values = sheet.col_values(0)
text=""
for i in col_values:
    text=text+i
print(text)

これで、textに年賀状の文面がすべて入っていることになる。

##3 形態素解析&ワードクラウド作成
とうとうここから形態素解析&ワードクラウドの作成をする。


import MeCab
import wordcloud, codecs

m = MeCab.Tagger("")
text = text.replace('\r', '')
parsed = m.parse(text)

splitted = ' '.join(
    [x.split('\t')[0] for x in parsed.splitlines()[:-1] if x.split('\t')[1].split(',')[0]  in ["名詞","形容詞","形容動詞"] ])

wordc = wordcloud.WordCloud(font_path='HGRGM.TTC',
                            background_color='white',
                            contour_color='steelblue',
                            contour_width=2).generate(splitted)
wordc.to_file('nenga2020.png')

これで年賀状で書かれた印象について、解決できる。

splitted = ' '.join(
    [x.split('\t')[0] for x in parsed.splitlines()[:-1] if x.split('\t')[1].split(',')[0]  in ["名詞","形容詞","形容動詞"] ])

のところで、品詞を名詞,形容詞,形容動詞に絞っている。
これは自分の印象の抽出を目的にしているから。

#まとめ
コード全体

import xlrd
import MeCab
import wordcloud, codecs


wb = xlrd.open_workbook('/nenga2020.xlsx')
sheet = wb.sheet_by_name('Sheet1')
col_values = sheet.col_values(0)
text=""
for i in col_values:
    text=text+i

m = MeCab.Tagger("")
text = text.replace('\r', '')
parsed = m.parse(text)

splitted = ' '.join(
    [x.split('\t')[0] for x in parsed.splitlines()[:-1] if x.split('\t')[1].split(',')[0]  in ["名詞","形容詞","形容動詞"] ])

wordc = wordcloud.WordCloud(font_path='HGRGM.TTC',
                            background_color='white',
                            contour_color='steelblue',
                            contour_width=2).generate(splitted)
wordc.to_file('nenga2020.png')

そして完成した他己分析のワードクラウドはこちら。
nenga2020_qujita.png

剣道部関連から多くの年賀状をもらったので、関連ワードが多い…

面白いとか有能とか尊敬とかのワードが他人からの自分の印象であると考察される。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?