自前のAPIでほぼ動かしている.利点はサービスの終了が無いところ

20250605

Logging

おはようございます.自前のAPIでほぼ動かしている.利点はサービスの終了が無いところですが、VPSサーバー等でしか動かない代物なのでそこが難でサーバー代がかさみます.

そこを何とか低予算で運用したいのだけどもなかなか難しいのが現状です.因みにいまはVPSサーバーとレンタルサーバーを合わして1300円ぐらいを毎月支払っています.

自分にとっては1300円は高いし未だに生成AIの有料版は高いので無料版でしのいでいます.もっと稼げるように慣れば有料版とかを使ってみたいなって思います.

お給与が今の倍以上に慣れば良いのだけども、なかなか難しいそうと言う想いもあります.何時までこのような状況が続くか分からないのであまりお金の掛かることは控えています.

最近読んだ記事で老後2000万円では足りないとか言う記事を読んで絶望しています、老後が心配でいまをあまり楽しんでいないような気もしています.今を楽しみたいなーって!

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

お給与, サーバー, サーバー代, ば有料版, ば良い, レンタルサーバー, 代物, 低予算, 倍以上, 利点, 有料版, 未だ, 状況, 現状, 生成, 終了, 老後, 老後万円, 自前, ,


Photo by Adil on Pexels.com

AIでレコメンド記事が表示させるロジックを作りました.#機械学習って

20250604

Logging

おはようございます.AIでレコメンド記事が表示させるロジックを作りました、前からそのような事を考えていたのですが、あまり機械学習のことを分かっていなかったのですが、以前、地域の商品券で「実務で役立つPython機械学習入門」を購入していたのを先日の休みにパラパラと捲っていたら、これだったらなんか出来そうだなって思いたち.

昨日の休みに生成AIともに作りました.生成AIが出力したコードに対して再度指示を出したり自分で直したりして上手く処理される形に落ち着きました.

Pythonコードは昨日の記事がある程度役に立つと思います、あのコードを元にブラッシュアップ(改善)した形になります.

自分で機械学習のことに手を出すことになるとは思っていなかったけど、これからはPythonの事もたまに試していこうと思います.

因みに過去記事を参照してもらったら分かるかもですが何度か機械学習にトライして挫折した経緯がありますが、今回は生成AIという物があるので生成AIよって噛み砕いた言葉とコードで何とか自分でも初級か中級ぐらいのことは出来そうな気もします.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

コード, ブラッシュアップ, レコメンド記事, ロジック, 中級, 休み, 何度か機械学習, , 再度指示, 初級, 実務, , 改善, 機械学習, 機械学習入門, 生成, 生成とも, 程度役, 経緯, 言葉,


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

20250603

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で応援を送る

タグ

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


高知県の地方通貨ジモッペイに対応したら恐らく使う人増えると思うこと.

20250602

Logging

おはようございます、高知県の地方通貨ジモッペイに対応したら恐らく使う人増えると思うことを書いていきます.1.JR四国とタイアップ、2.とさでん交通とタイアップ、これらが出来れば間違いなく使う人が増えると思います.

特にとさでん交通とタイアップは出来そうな気もします.ジモッペイでとさでん交通を乗れるように慣れば結構便利だなって思います.そもそもとさでん交通のicカード「ですか」のチャージがとても不便です、チャージ出来る場所も限られていたり、スマホ板「ですか」も無いので高知県人でも限られた人しかicカードを持ってない気がしています.

なので、ジモッペイにシステム作ってもらったら、どちらもウィン・ウィンになるのではないかと思います.

JR四国とのタイアップが出来れば良いのだけども恐らく難しいと思うので、まずはとさでん交通さんとタイアップして頂きたいです.

ちなみにジモッペイ使ったことがないです、間違いなくとさでん交通さんとタイアップしたら自分のスマホにジモッペイを入れます!

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

カード, これら, システム, ジモッペイ, スマホ, スマホ板, タイアップ, チャージ, でん交通さん, どちらもウィン・ウィン, ば結構, 交通, , 四国, 地方通貨ジモッペイ, 場所, , 自分, 高知県, 高知県人,


お知らせ.ブログの不具合をコンプリートしました.

20250601

Logging

おはようございます、ブログの不具合をコンプリートしました.今までほったらかしにしていた、検索結果のページの不具合をこの度修正しました.

どんな不具合が発生していたかと言えば、次頁へ遷移せずシングルページの次頁へ遷移するという不具合です.この不具合は自分のテンプレートを作ってからずっと今まで発生したのを知っていたけど対応を放置していた不具合になります.

ちなみに分かりにくいと思いますが、関数名のポストが複数形に置き換わっただけです…じゃ直ぐに対応出来たのではというご指摘があるかと思いますが案外気が付かないですよ.生成AIに投げてやっと「あっ」と思ったわけです.

人には先入観とかいう物があるけど今のところ、生成AIは機械的なのでそういうミスは指摘してくれます.いやー便利ですよね本当に.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

ご指摘, シングルページ, テンプレート, ところ, ブログ, ページ, ミス, , 先入観, , 検索結果, 次頁, , , 生成, 自分, 複数形, 関数名,