2016-09-23 5 views
0

多分これはmath.stacexhangeに関連しているかもしれませんが、私は申し訳ありません。出現によって単語の重みを得る

私のデータベースには製品がありますが、私は別のテーブルの異なるサプライヤーの製品を持っています。

私が欲しいのは、可能な場合には、これらの製品を私たちの製品に提供することです。少なくとも、マッチングが高いリストを表示してください。

すべてのサプライヤ製品を繰り返し、スペースで製品名を爆発させてテーブルに格納し、発生回数を格納しました。

表はこのようです。

+--------+-------------+---------------+-------+ 
| id | word  | originalWord | count | 
+--------+-------------+---------------+-------+ 
| 220950 | Tracer  | Tracer  | 493 | 
| 220951 | Destroyer | Destroyer  |  3 | 
| 220952 | Avago5050 | Avago5050  |  4 | 
| 220953 | mouse  | mouse   | 2535 | 
| 220954 | TRAMYS44916 | /TRAMYS44916/ |  2 | 
| 220955 | GameZone | GameZone  | 16 | 
| 220956 | Enduro  | Enduro  |  3 | 
| 220957 | AVAGO  | AVAGO   | 10 | 
| 220958 | 5050  | 5050   |  4 | 
| 220959 | optical  | optical  | 2370 | 
| 220960 | USB   | USB   | 6160 | 
+--------+-------------+---------------+-------+ 

など。もちろん、私が保存した別のテーブルでは、各単語の製品IDは何ですか。

私がしたいことは、発生した単語の重みを決定することです。

ご覧のとおり、TRAMYS44916という単語は2度しか出現せず、ほとんどがパートナンバーであることが分かります。これは最も重い単語です。それは1でなければなりません。

私は、6160発生のUSBが最も多いとしましょう。したがって、それは0.01のようなものでなければなりません。

単語のすべての重みを取得する最良の方法は何ですか?

他の供給元のための他の表がありますので、分散は常に変更されます。

答えて

2

これはNaive Bayesのテキスト分類を思い出させるので、どの製品がそれに属するべきかを決定するために、すべての単語のtf-idfを計算することができます。

他の製品名とペアにしたい場合は、それを再び単語に分解し、最高の用語の値に基づいて製品IDを選択することができますが、場合によってはそれははっきりしないでしょう。

TF-IDF =(「単語の数は、製品名に一致する」/「の製品名の単語数」)*ログ(「番号製品の」/「という単語が含まれている製品の数」)

あなたは(あなたのケースでは、ドキュメントは、製品の完全な名前になります)、それがここでの例ではどのように行われるかを見ることができます:https://en.wikipedia.org/wiki/Tf–idf#Example_of_tf.E2.80.93idf

Javaでの実装例:https://guendouz.wordpress.com/2015/02/17/implementation-of-tf-idf-in-java/

+0

はい、私はこれは私の友人になると思います。ありがとう、今私は車輪を再考する必要はありません。 – vaso123

+0

私はちょうどtf-idf wikiを読んだだけで十分だと思うので、私はあなたの数式を逆翻訳したならば、それは平均です、 ""単語数全体 "* log("ドキュメントの) '右? – vaso123

+0

実際にはidfは別の方法ですが、残念ですが、私はそれを更新します。ログには文書番号/単語数が含まれていなければなりません –

関連する問題