1682記事をLDAトピック分類(scikit-learn LDAとldaを比較)

※こちらはQiitaの投稿記事の一部修正版です。

※Qiita投稿記事はこちら

※記事内で動かない・間違い箇所などありましたら是非教えて下さい!

こちらは前回の記事の続きです。
下準備まではコチラをご覧ください。

記事の概要

前回は、169ページ分、1682個の「非エンジニア」記事を取ってきて、タイトル・本文・その他のデータフレームを作りました。
また単語に分解し、数字など不要なものを綺麗にしました。

この記事では、記事本文データを使ってLDAでいくつかのトピックに分けていこうと思います。
先に書いておくと、最初scikit-learnのLDAを使ったのですが、100記事以上が重くて動かず・・・コチラのldaを使いました。
https://pypi.org/project/lda/

まずはscikit-learnのLDAを動かしてみる

まずは途中で動かなくなったscikit-learnから。

↑ここでdf[“Content_normalization”]とありますが、僕のPCだとdfは100記事までしか動きませんでした!なので、ここのdfは縮小版です。

▼JupyterNotebook
スクリーンショット 2018-08-19 19.34.26.png

うーん。という感じですね。
考えるに、下記の順でパッとしない原因と対策があると思っています。
「ため」などの無駄なものが多い。ストップワードで単語データを綺麗にする
データ数が100記事しか食わせてないので少ない
カテゴリ数が微妙。変えてみる
そもそも綺麗に分かれるはずがない?
そもそもなにか手順が変?

とりあえずこのまま、タイトル分類も見てみます。

▼JupyterNotebook
スクリーンショット 2018-08-19 19.40.27.png

なんとなく、トピック0:教育、トピック1:実用、トピック2:その他、という感じで分かれている、と言われればそう見えなくもないような、どうなんだろう・・・。

次はldaを使ってみる

スクリーンショット 2018-08-19 22.04.17.png
あれ、、、アルファベット順?笑
ちょっと並べ替えが上手くいっていないですが、タイトル分類にいきます。

スクリーンショット 2018-08-19 19.40.27.png

これはなかなかいい感じ・・・ですね!?笑

トピック0は考え方や言葉でのまとめ系、トピック1は挑戦してみた系の技術記事、トピック2は解説系(教える感じ)の技術記事、と分かれているように、僕は見えます!!笑

このニュアンス感がLDAっぽい…?

改善策

今回はとりあえずアウトプットを出してみましたが、前述した通り、下記の方法でもうちょっと改善しそうです。

  • ストップワードなど、もっと単語データを綺麗にする
  • カテゴリ数やその他オプション値を変えてみる

この記事は単純にLDAを使ってみたかった。という気持ちが先行しましたが、「非エンジニア」記事と他記事と比較・クラスタリングなどするともうちょっと何か見えそうです。記事自体はけっこうあったので、また手が空いた時に、単語ベースでの特徴抽出や、時系列で記事遷移やいいね数などを追ってみようかと思います。

※コードはサポートページや本などから持ってきている部分が多く、完全に理解できていない部分もあります。「もっとこうしたら良い」「ここいらない」など是非教えて下さい!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です