高校生の時に書いた日記をpythonのJanomeで分析した。(お試し投稿)

折角noteのアカウント作ったんだから1つくらい書いておきたいと思い、お試しで書きました。

大学1年生になりました。
半年前は高校生だったのに、今高校生を見るだけで「若いなぁ」なんて思ってしまいます。
高校1年の冬から今日に至るまで毎日とは言えないけど、それなりに日記を書いてました。
最近pythonを勉強してJanomeという日本語分析のライブラリを知ったので、どんな高校生活だったのか、Janomeで振り返って見ます。

そもそもJanomeとは
日本語の形態分析をするpythonライブラリ。(ライブラリというのは大雑把に言えばゲームの追加コンテンツみたいなものですかね)
文を最小の単語まで分解できます。
例えば…
土佐日記を読みたい。
だと
土佐(名詞)/日記(名詞)/を(助詞)/読み(動詞)/たい(助動詞)
みたいに分解してくれます。

●素材
高校生活を記したデジタルの日記
2018.1.10(高1)→2020.2.26(前期試験翌日)
「高1ほぼ無い!」
「受験期は手書き日記の日が多かったので大幅に欠けてる!」
大雑把です。ごめんなさい。

合計約9万字。これはMicrosoft Wordのページにすると220ページくらい。
チリツモですね。


では始めます。


テキストファイルを読み込み、
指定した品詞の中で多い順に並べるコードを用意。

これが基本のコード。
ここからは6行目の'品詞'ってところに名詞や形容詞と入れ替えたり、あとちょっとごちゃごちゃいじるだけ。
コードの説明は目的としていないので省かせていただきます。

from janome.analyzer import Analyzer
from janome.tokenfilter import *

f = open('schooldays.txt','r',encoding='UTF-8')
text = f.read()
tf = [POSKeepFilter(['品詞']),TokenCountFilter()]
a = Analyzer(token_filters = tf)
results = a.analyze(text)

s =sorted(results, key=lambda x:x[1],reverse=True)
for i,wc in enumerate(s):
   if i >= 100:break
   print((i +1),':',wc)


①名詞で高校生活は振り返れるのか。

下記が結果。
TOP100。()の中は出現回数

1 : ('.', 766)
2 : ('の', 440)
3 : ('こと', 419)
4 : ('さん', 408)
5 : (':', 386)
6 : ('-', 373)
7 : ('自分', 307)
8 : ('人', 295)
9 : ('勉強', 265)
10 : ('午後', 253)
11 : ('くん', 221)
12 : ('先生', 219)
13 : ('2019', 196)
14 : ('2018', 169)
15 : ('11', 157)
16 : ('時間', 151)
17 : ('ん', 147)
18 : ('午前', 144)
19 : ('12', 143)
20 : ('今日', 139)
21 : ('俺', 135)
22 : ('とき', 122)
23 : ('部活', 118)
24 : ('10', 117)
25 : ('あと', 111)
26 : ('日', 105)
27 : ('さ', 95)
28 : ('最近', 93)
29 : ('一', 90)
30 : ('01', 87)
31 : ('気', 86)
32 : ('話', 85)
33 : ('それ', 83)
34 : ('テスト', 80)
35 : ('何', 80)
36 : ('みたい', 79)
37 : ('08', 75)
38 : ('1', 74)
39 : ('今', 73)
40 : 個人名なのでお見せできません!
41 : ('会', 73)
42 : ('09', 72)
43 : ('前', 71)
44 : ('ところ', 71)
45 : ('生徒', 71)
46 : ('05', 70)
47 : ('年', 70)
48 : ('よう', 68)
49 : ('課題', 67)
50 : ('もの', 65)
51 : 個人名なのでお見せできません!
52 : ('周り', 64)
53 : ('07', 62)
54 : ('明日', 59)
55 : ('そう', 59)
56 : ('これ', 56)
57 : 個人名なのでお見せできません!
58 : ('06', 55)
59 : ('2', 54)
60 : ('方', 54)
61 : ('気持ち', 54)
62 : ('的', 53)
63 : ('03', 53)
64 : ('なん', 53)
65 :個人名なのでお見せできません!
66 : ('04', 53)
67 : ('02', 52)
68 : ('中', 48)
69 : ('受験', 48)
70 : ('他', 47)
71 : ('センター', 45)
72 : ('3', 45)
73 : ('問題', 44)
74 : ('部', 44)
75 : ('目', 43)
76 : ('大学', 42)
77 :個人名なのでお見せできません!
78 : ('感', 41)
79 : ('ほう', 39)
80 : ('好き', 39)
81 : ('研究', 39)
82 : ('大会', 39)
83 : 個人名なのでお見せできません!
84 : ('学校', 37)
85 : ('昨日', 37)
86 : ('大事', 37)
87 : ('成績', 37)
88 : ('ここ', 36)
89 : ('力', 36)
90 : ('動画', 35)
91 : ('嫌', 34)
92 : ('期間', 34)
93 : 個人名なのでお見せできません!
94 : ('やる気', 34)
95 :個人名なのでお見せできません!
96 : ('夜', 32)
97 : ('最後', 32)
98 : ('感じ', 32)
99 : ('朝', 31)
100 : ('ため', 31)
数字や記号を除外してなかったのでごちゃごちゃしてます…
この記事はお試し投稿に過ぎないのでこのまま放置します。お許しください。

結果:
いまいち分からない。

でも、関わりが深かった人の名前は読み取れた。


②形容詞で高校生活は読み取れるのか。
ここではTOP10のみ。上で示したコードをちょこっとかえるだけ。
ライブラリの力は偉大ですね。

1 : ('ない', 215)
2 : ('いい', 160)
3 : ('悪い', 84)
4 : ('すごい', 65)
5 : ('よい', 59)
6 : ('良い', 58)
7 : ('多い', 39)
8 : ('辛い', 38)
9 : ('忙しい', 34)
10 : ('楽しい', 30)

高校生活は
忙しくも楽しく、良いことも悪いこともあった。
ってことが分かりますね(適当)

"いい"と"よい"と"良い"が混在しちゃってます。
日記を書いているのは人間なのでしょうがない。

③助詞だと何か分析できないか。

1 : ('は', 1644)
2 : ('て', 1603)
3 : ('の', 1594)
4 : ('に', 1421)
5 : ('が', 1305)

もちろん何もわからない。

ちなみに動詞

1 : ('する', 995)
2 : ('いる', 574)
3 : ('てる', 451)
4 : ('なる', 297)
5 : ('ある', 252)
6 : ('思う', 234)
7 : ('れる', 225)
8 : ('言う', 217)
9 : ('やる', 194)
10 : ('できる', 188)

んー……



データを適切に前処理すると、もっと綺麗な順位が出るかもしれませんが、やる気が底をつきたのでやめておきます。

結論
日記の分析はうまくいかなかったけど、Janomeはすごい!
Janomeにはもっといろんな関数があるので、ここでしたことは本当に一部に過ぎません!!
みなさんもぜひ使ってみてください!

終わり




この記事が気に入ったらサポートをしてみませんか?