AIレコメンド機能を乗せれるかもしれない.VPSだから微妙 #TFIDFベクトライザ

2025.06.03

Logging

おはようございます.AIレコメンド機能を乗せれるかもしれないけど無理かもしれないということで、まだ試してはいないのだけど機械学習で学習済みのモデルをVPSに乗せ動かすことが出来れば、AIレコメンド機能が出来そうです.

いまある記事のデータのタグ付け部分をTF-IDFベクトライザの学習させれば案外簡単に学習させることが出来そうなので生成AIにコードを書いてもらいました.

尚、この方法はECサイトの商品のレコメンド機能にも同じような感じでデータを与えるとレコメンドしてくれたりします.

最後にPythonコードを貼っときます.VPSサーバで再学習できれば良いだけども難しいかもしれない、、、.

import pickle
import os

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd

# モデル保存ファイル名
MODEL_PATH = "tfidf_vectorizer.pkl"  # TfidfVectorizer
DATA_PATH = "article_tags.pkl"       # 記事IDとタグ

# 類似度モデル構築(再学習対応)
def build_similarity_model(article_tags_input, save_model=True, retrain=False):
    # 再学習時は既存データを読み込んで結合する
    if retrain and os.path.exists(DATA_PATH):
        with open(DATA_PATH, "rb") as f:
            existing_data = pickle.load(f)
        existing_data.update(article_tags_input)  # 新しいデータを追加
        article_tags_input = existing_data

    article_ids = list(article_tags_input.keys())
    processed_corpus = [" ".join(tags) for tags in article_tags_input.values()]

    # 再学習またはモデル未保存時に新たにモデルを学習・保存
    if retrain or not os.path.exists(MODEL_PATH):
        vectorizer = TfidfVectorizer()
        tfidf_matrix = vectorizer.fit_transform(processed_corpus)

        if save_model:
            with open(MODEL_PATH, "wb") as f:
                pickle.dump(vectorizer, f)  # ← ここでモデルを保存
            with open(DATA_PATH, "wb") as f:
                pickle.dump(article_tags_input, f)  # ← ここで元データを保存

    else:
        # 保存済みモデルを使って変換する
        with open(MODEL_PATH, "rb") as f:
            vectorizer = pickle.load(f)
        tfidf_matrix = vectorizer.transform(processed_corpus)

    cosine_sim_matrix = cosine_similarity(tfidf_matrix)
    cosine_sim_df = pd.DataFrame(cosine_sim_matrix, index=article_ids, columns=article_ids)

    return cosine_sim_df, article_ids

# 類似記事を取得する関数
def get_recommendations(article_title, similarity_matrix, articles_map, top_n=3):
    if article_title not in articles_map:
        print(f"エラー: 記事 '{article_title}' が見つかりません。")
        return []

    sim_scores = list(enumerate(similarity_matrix[article_title]))
    sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)

    recommended_articles = []
    for i, score in sim_scores:
        if articles_map[i] != article_title and len(recommended_articles) < top_n:
            recommended_articles.append((articles_map[i], score))
        if len(recommended_articles) >= top_n:
            break

    return recommended_articles

# 入力記事データ ( 例 )
article_tags_input = {
    "記事1": ["Python", "機械学習", "データサイエンス"],
    "記事2": ["Python", "Web開発", "Django"],
    "記事3": ["機械学習", "自然言語処理"],
    "記事4": ["データサイエンス", "統計学"],
    "記事5": ["Python", "データサイエンス", "可視化"]
}

# 類似度モデル構築 + モデル保存 ( 初回学習 )
cosine_sim_df, article_ids = build_similarity_model(article_tags_input)

# 使用例
target_article = "記事1"
recommendations = get_recommendations(target_article, cosine_sim_df, article_ids, top_n=2)
print(f"\n「{target_article}」へのおすすめ記事 ( 上位2件 ):")
for article, score in recommendations:
    print(f"- {article} (類似度: {score:.4f})")

# 新しい記事を追加して再学習
new_article_id = "記事6"
new_article_tags = ["Python", "統計学"]
article_tags_input = {new_article_id: new_article_tags}

# 再構築+再学習
cosine_sim_df, article_ids = build_similarity_model(article_tags_input, retrain=True)
target_article = new_article_id
recommendations = get_recommendations(target_article, cosine_sim_df, article_ids, top_n=2)
print(f"\n「{target_article}」へのおすすめ記事 ( 上位2件 ):")
for article, score in recommendations:
    print(f"- {article} (類似度: {score:.4f})")

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

エラー, コード, サーバ, タグ, データサイエンス, ベクトライザ, レコメンド機能, 上位件, 初回学習, 学習, 学習済み, 既存データ, 最後, 機械学習, 統計学, 自然言語処理, 良いだけ, 関数, 類似度, 類似度モデル構築,

VPSサーバーで学習済みのモデルを動かすことが出来るのか.

2025.02.14

Logging

おはようございます.VPSサーバーで学習済みのモデルを動かすことが出来るのかな…一度、こっそり試してみたけど動かなかった.2Gでは無理、最低4Gメモリは必要みたいです.この4Gというのは生成AIの回答なので本当なのかは分からないけど、小さなモデル?ならVPSサーバーでも動かすことは可能だと思います.

あと、それとは別にPythonのAPIフレームワークを使用して内部的に処理することを検討中です.今までも例えばPythonのライブラリMeCabとかを使用して形態素解析をさらっと処理してもらっていたのですがサービスAにもサービスBにも導入したい時にいちいち新たにファイルを生成するもの手間なのでFastAPIというフレームワークを導入したいなって思っています.

其の為、新たにコンテナを追加する予定です.こういう時にコンテナ運用は楽ですね.

なお、非公開APIですので外部からは叩け無いようにしたいなって思っています.こちらの構築したものを近日中に出来たら公開したいなと思っています.

明日へ続く

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

こんてな, コンテナ運用, サーバー, サービス, フレームワーク, モデル, ライブラリ, 一度, , 回答, 外部, 学習済み, 形態素解析, 手間, 最低メモリ, 検討中, 無理, 近日中, 非公開,

Photo by Stas Knop on Pexels.com

釣りマップなう

2024.03.19

Logging

おはようございます、ある程度出来たのでリリースしました.これからはデータ削除とかが出来なくなりました.ローカルで検証してファイルアップロードとか行う感じになりますね.

釣りマップなう』というサイトは、一応TensorFlowのJSを使用して魚の画像か判別しています.大量の魚が写っている画の場合、魚と判定されない場合があります、また、小さな魚の画像でも同様に魚の画像と判定されないです.この判定を良いものにするにはモデルを自分で生成してあげる必要がありそうです.

魚の動画から水回しして魚を学習させれば良いらしいのですが、商用利用でも可能な魚の動画を探すので苦戦しています.

学習させればあとは、学習済みのモデルをTensorFlow.jsでも使用できるようにコンバーター(変換)させて上げれば良いのです.

さて、馬しかな自分でも機械学習出来るようになってきました.ここはレッドオーシャンなのかもしれません.

明日へ続く.

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

JS, tensorflow, Tensorflow.js, コンバーター, データ削除, ファイルアップロード, モデル, レッドオーシャン, 判定, 動画, 商用利用, 学習済み, 感じ, 機械学習, , , 画像, 自分, , ,

副業OKな会社が増えているらしい。#副業

2023.06.27

Logging

おはようございます、昨日の続きです。働いている会社は副業OKなので何か副業をしたいなって思っています。例えばビットコインの自動売買を運用するなど考えたことがあります。因みにビットコインの自動売買をさくらレンタルサーバーとかでやっては駄目です。規約でそういう文言があります、違反した場合、見つかればサーバー停止になりますので注意しましょう。

自動売買している人は大体、自社サーバーかAWSあたりを上手く使用して運用している気がします。AWSが自動売買を許しているかは分からないので確認が必要です。

自動売買してみたみたいな動画は結構YOUTUBEでもありますが、儲けたよとかいう話はあまり聞かないので、やはり運用は難しいようです。楽して儲けるということは出来ないだというのが定説だと思いますが、これからは機械学習を上手く活用できる人が波に乗れると思っていてます。

特にデジタルな分野ではその傾向が強くなるじゃないかって思います。自分は機械学習を絵の具のように使いこなせないけど学習済みのモデルやAPIを駆使すればなんとか出来るので何とか活用して、何か副業に活かせればと思っています。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

OFUSEで応援を送る

タグ

API, AWS, youtube, サーバー停止, さくらレンタルサーバー, ビットコイン, 傾向, 分野, 副業, 副業OK, 売買, 学習済み, 定説, 文言, 機械学習, , 絵の具, 自動売買, 自社サーバーかAWSあたり, 運用,