私は、トラックの歌詞を使用して、曲がお互いに感情的にどれだけ密接に関連しているかを把握する音楽レコメンデーション エンジンを構築しています。tfidf アルゴリズム (ここには示されていません) を使用して各曲のスコアを生成しました。各トラックの tfidf スコアを django モデル フィールドに保存したいと思いtfidf
ます。しかし、各 tfidf スコアを 0 ~ 1 のスケールで正規化したいと思います。
私が抱えている問題は、誰かが管理インターフェイスに tfidf 値を入力するとすぐに、これらの tfidf スコアを自動的に正規化する方法を見つけることです。管理画面に入って、「In Da Club」という曲をデータベースに追加したいとします。曲の名前とその tfidf スコアを次のように入力します。
私がやりたいのは、保存ボタンを押すとすぐに、空のnormalized_tfidf
列に正規化された値が自動的に入力されるようにすることです。単純なアルゴリズムを使用して tfidf 値を正規化しています。説明に入る前に、アルゴリズムが何をしているかをより明確に把握できるように、この表がどのようになるかをお見せしましょう。したがって、「In Da Club」がデータベースに追加された後 (およびデータが正規化された後)、テーブルの列は次のようになります。
曲 x と曲 y は、アルゴリズムが動作する上限と下限を設定するためにデータベースにシードしたダミーの曲です。あなたが見るその値は.50077
、私が自動的に生成しようとしているものです。
アルゴリズムは、曲 x の特徴 tfidf の正規化された値 (nv) を見つけるために、曲の tfidf スコアとテーブル内の最小の tfidf スコアとの差を見つけ、それを最大と最小の tfidf スコアの差で割ります。テーブル。ここでは数学的にです。
nv(in da club tfidf ) = (in da club tfidf – tfidf min ) / (tfidf max – tfidf min )
そして、ここに計算があります:
nv(クラブ内) = (.25048 - .00010) / (.50000 - .00010) = .50077
だから私はそれを自分のモデルにコーディングしようとしています。問題は、django には、SQL ステートメントでできるように、テーブル内の最小値と最大値の tfidf 値を選択できるメソッドがないように見えることです。私はdjangoにかなり慣れていないため、djangoの機能を完全には認識していません。このテーブルのモデルが以下のように見える場合、管理者に入力すると tfidf が自動的に正規化されるように書き換える最良の方法は何でしょうか?
class Party(models.Model):
song = models.CharField(max_length=30)
tfidf = models.FloatField()
normalized_tfidf = models.FloatField()