Python+ChatGPTでブログ作成の幅が広がる

最近、サイト作成にPythonを取り入れてみたのですが、非常に便利なプログラミング言語だと感じています。

特に、パソコン上で静的なホームページを作成している場合に有効であると感じてまして、HTMLファイルの置換や書き換えなどを柔軟に実現することができます。

例えば、今回、当ブログではPythonを活用して関連記事を設置してみましたが、まずはFFFTPでブログのHTMLファイルをパソコン上に一括でダウンローしておきます。

そこから、Pythonで個別ページのコンテンツ部分のみのテキストを抽出し、形態素の最小単位に分解したのがこちらになります。

形態素に分解

形態素分解

ここから、形態素の出現頻度などから文書をベクトル化して類似度を測定し、各HTMLファイルごとに、類似度の高い上位5つのファイルを抽出します。値が1に近いほど類似度が高く、0に近いほど類似度が低くなります。

類似度のランキング

類似度ランキング

次に、Movable Typeのサイトマップページを活用し、URLのほか、記事タイトルやエントリーIDを一括で出力させて取得します。このサイトマップページは、データを出力したら忘れないうちに元に戻しておきます。

HTMLタグによるリスト化

サイトマップ出力

この「URL」と「記事タイトル」、「エントリーID」の情報を元に、エントリーIDごとの関連上位5つの記事のURLと記事タイトルが判明するので、HTMLタグの形にしてリスト化しておきます。これもPythonでコードを書けば、すぐです。

さらに、Mobable Typeのカスタムフィールドを使用して、「テキスト(複数行)」を選択し、関連記事としてリスト化したHTMLタグを出力できるようにします。

ただし、各ページごとに手動で入力していくのは膨大な手間がかかるため、SQLでデータベースに直接、上記の関連リストを挿入していきます。

関連記事をデータベースに挿入

データベースへの自動挿入

この箇所が一番手間がかかったのですが、エントリーIDに対応する関連記事リストの.txtファイルをサーバー上にアップロードしておき、PHPを使用してデータベースのSQLで自動で挿入する形にすると便利です。

カスタムフィールドの場合、「mt_entry_meta」の箇所を使用しますが、「entry_meta_entry_id」にエントリーIDの番号、「entry_meta_type」の箇所にカスタムフィールドの名前、「entry_meta_vclob」の箇所に関連リストタグを挿入すると反映されます。

試しに、1つを手動で入力すると、どこに何が出力されるのかが判明するため、それを元にデータベースに直接挿入していきます。

データベースへの挿入が終了したら、テンプレートにも自動で出力されるように設定した上で再構築すると、各ページにて関連記事が反映されます。カスタムフィールドの箇所に、例が表示されていますので、そちらを参考に、ブログ記事の詳細あたりに挿入しておくとよいでしょう。

テンプレートへのタグの挿入

関連記事のタグ

「entry_meta_type」の箇所が抜けていると反映されないため、忘れずに入力しておくとよいでしょう。

結局、全部で10個ぐらいのプロセスを経由しましたが、PythonとPHPで数十個のスクリプトをChatGPTに書いてもらいました。

これを自分だけでプログラミングコードを書くとなると、数か月はかかったと思いますが、わずか10時間程度で完了しました。

結果として、関連記事の精度としては無難な形で関連しているのではないかなと思いますが、他にも類似度数を測る指標が数多くあるようなので、いろいろ研究して精度を上げていきたいと思います。

この各ページの類似度数を計測できれば、サイト内検索でのクエリとの関連度数にも活用できると思います。このような形で、Pythonを活用するとサイト運営の幅が広がるかもしれません。

関連記事: