Python Janomeで形態素解析。読んだ本、経理データ、ブログ記事、アンケート、プロフィールを分析。

Pythonは、自然言語処理、つまりテキストデータを分析することもできます。
その初歩として、形態素解析というものをやる方法をまとめてみました。

ex-it_08

Pythonでは、数字ではなく文字を分析できる

分析というと、数字での分析が思い浮かびます。
だからこそ、数値化や数字で表現することが求められることが多いのです。

とはいえ、数値化できるものには限りがあり、文章や文字からの分析は、ヒトがやっています。
しかし、AI(AIっぽいものを含む)だと、その分析が、できるのです。

AI時代のプログラミング言語といわれるPythonでも、文字の分析ができます。
たとえば、これまで読んだ本のタイトルのリストを準備し、

image

それをPythonで解析すると、たとえば、『会計と決算書がパズルを解くようにわかる本』だと、このようにまず細かく文章をわけます。
(こういうのを、形態素解析といいます)

image

分けたうえで、集計したり、判断したりするのです。
「分析」という言葉自体、分けるという意味がありますので、その最初のステップと言えるでしょう。

「決算書」が、「決算」と「書」にわかれてしまっていますが、これは自分で辞書をつくることにより現状でも解消はできます。


■スポンサードリンク

さらには、その単語ごとに分析し、集計してみました。

仕事 568
術 542
人 472
新書 454
ため 328
ビジネス 282
会社 277

という上位の結果です。
私がメディアメーカーというサイトで登録している、4829冊のタイトルを分析しました。

私のページはこちらです。

仕事のために読んでいる本が多いので、やはり、「仕事」が1位でした。2位の「術」とあわせて「仕事術」も多いかと。
9月9日(今日)開催するインプット入門セミナーの題材としても使っています。
こういったデータを、売上と結び付けてもおもしろいでしょうね。

以上のような集計を、プログラミング=Pythonを使えば、ささっと、数秒でできるわけです。
データが増えれば、多少は時間もかかるようになりますが、ヒトのようにミスの可能性は増えません。
データを集めるしくみをつくり、プログラミングし、実行するだけです。

Pythonでのjanomeを使った形態素解析

Pythonでテキスト分析(テキストマイニングともいいます)、形態素解析をする方法をまとめてみました。

Pythonの初期設定については、こちらを参考にしていただければ。
PythonとEXCELマクロ比較。Pythonの導入・設定【Windows・Mac両対応】 | EX-IT
PythonでExcelからデータ読込→サイトで交通費検索→Excelへデータ書込 | EX-IT

janomeで形態素解析

Pythonは、ライブラリといういわえる外部のアプリのようなものを使えます。
今回もjanomeというライブラリを使いました。

コマンドプロンプトやターミナルでインストールするなら、
pip install janome

上記の記事にあるPycharmでやるなら、[ファイル]→[設定]でインストールするか、

と、本文を書けば、インストールすることもできます。

形態素解析のプログラムはこういったもので、たったこれだけです。

Janomeを読み込みます。

#で始まる行はコメントなので、自由です。

Vで始まる単語は、変数で任意のものです(最近はこう書くのがしっくりきています)

open(〇〇).read()で、テキストファイルを読み込みます。

ファイル名は、cからはじまるものを書きましょう。
’で囲み、最初にrをつけるのがポイントです(rはrowの意味で、これがないと、\を\\にしなければいけなくなります)
〇=△という式なので、v_dataに開いたテキストファイルを入れるという意味です。

テキストファイルは、メモ帳で保存するならファイル形式を「utf-8」にし、txtの後に ,encoding=’utf-8’をつけます。
※そうしないとこのエラーがでます。

UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0xef in position 0: illegal multibyte sequence

いったんExcelに貼り付けて、テキスト(タブ区切り)で保存したほうが楽です。
この場合、,encoding=’utf-8’は入りません。

ex-it_13

ここでは、v_tokenという変数を使って、Tokenizer().tokenize(○○)という処理をしています。
〇〇にはテキストファイルが入るので、さきほどのv_dataを入れるわけです。

次にprintで出力すると、v_token、つまり処理結果が出力されます。
forは繰り返しですので、繰り返しデータの数だけ処理してくれるわけです。
出てきた結果は、品詞やその活用形、読み方などのリスト。
こうやってかんたんに分析できるのは、janomeのおかげです。

image

Janome Anaryzer・Tokenfilterで形態素解析したものをフィルタリングし集計

Janomeには、Anaryzerという機能もあります。


■スポンサードリンク
■井ノ上陽一のプロフィール

これがあれば、フィルタリングや集計もできるのです。


上記と同じようにテキストファイルを読み込み、v_dataとします。


janomeのAnalyzerとTokenFilterを読み込みます。


token_filters=[POSKeepFilter([‘名詞’])は、名詞でフィルタリング、
TokenCountFilter(att=’base_form’)]は、基本形でカウント
という意味です。
これらのオプションを付けて、Analyzerで処理しています。

処理した結果が出力されるのは、

単語 数

という形式です。

それぞれにv_word、v_countと名前を付けて、
v_filter.analyze(v_data)
でフィルタリングをかけたv_dataの分析結果を繰り返し出力しています。

sorted(〇〇, key=lambda x: -x[1]):
でついでに多い順にソートしています。
lambda(ラムダ)は、ラムダ関数というもので、そういうもんだと思っておいたほうがいいでしょう。

その後の関数のx: -x[1]で、1列目(0、1と数えるのでカウントした数)を多い順(-Xの-)でソートしています。

Pythonで分析してみたもの。経理データ、ブログ記事、アンケート、プロフィール

その他同様に、分析してました。

経理データ

私の経理データです。

独立から11年の経理、家計簿データが入っていて、36591。

image

「振込」が多いのは、「振込手数料」ではなく、「振り込まれた」ものです。

この辺の精度は改善余地があります。

会議、打ち合わせ、Kindle、Amazonあたりがやはり多いです。

スタバも…。

ブログ記事

ブログ記事すべてを分析していたのですが、それなりに時間がかかるので、過去5年間のアクセスが多い記事のタイトルを分析してみました。

Excel、仕事、方法、時間などが入っているとよく読まれているというデータです。

image

ブログ記事の分析が終わったので、追記します。
4797記事の本文を分析し、上位はこうなっていました。

「IT」がやはり多く、「仕事」も多いです。
「円」、「時間」も多く、「興味」「挑戦」が多いのも意外でした。
「事前」や「基礎」が多いのは私のポリシーと一致します。
「ゲーム」が意外と多いです……。

アンケート

セミナー後のアンケートは、フォームから入力していただき、データ化しています。
これも分析してみました。

「セミナーを知っていただいた理由」は、このとおり。
ブログやメルマガがメインです。

image

「なぜこのセミナーを選んだいただいたか」。

ここでは、私(井ノ上)だったから、他になかったからというのがうれしい答えなのです。
他と選んでどうこうもうれしいのですが、他にないようなものをやっているつもりですので。
「井ノ上」や「ブログ」が上位にあるのはうれしいことです。
「他」も60カウントありました。

image

プロフィール

私のブログのプロフィールも分析してみました。

ラン、スイム、バイクが上位・・・。
トライアスロンのレース歴を載せているからです。
税理士がようやく37個。

分析対象としてはあんまりですね。

image

テキストデータをいろいろ分析してみるとおもしろいです。

ぜひ、Pythonで書いてみていただければ。

アプリを使うより、自分で書いて動かしてみるのも大事です。


■編集後記

昨日は、午後から娘と2人だったので、動物園、ディズニーランド、アンパンマンミュージアムなどいろいろ候補がある中、アンパンマンミュージアムへ。
自宅近くから横浜までバスで行ってみました。
バスのほうが楽です。娘がおとなしくしてれば。
横浜駅からはいつも歩いています、10分ほど。
横浜のオービィ(屋内の動物園)も気になるのですが、評価があまりよくなく大混雑なのでやめました。

■昨日の1日1新

※詳細は→「1日1新」

アンパンマンミュージアム カーニバル
アンパンマンミュージアム うどん
横浜までバスで
アンパンマンミュージアム 風船

■昨日の娘日記

アンパンマンミュージアム、周辺のストアやレストランも充実していて、昨日はミュージアム(2人で3000円)に入らず楽しみました。
アンパンマンのブロック、風船をゲットし、うどんやパンも。
そして、念願のアンパンマンマント(好きでよくマントをつけてます)もゲットしました。
入場料以上にお金かかりましたが。


■スポンサードリンク ■井ノ上陽一のプロフィール
■スポンサードリンク



井ノ上陽一のVALU
■著書
【監修】十人十色の「ひとり税理士」という生き方
ひとり税理士のIT仕事術―ITに強くなれば、ひとり税理士の真価を発揮できる!!
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
毎日定時で帰っても給料が上がる時間のつかい方をお金のプロに聞いてみた!
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
『社長!「経理」がわからないと、あなたの会社潰れますよ』
『そのまま使える経理&会計のためのExcel入門』