2016-09-23 61 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這個詞只出現兩次,幾乎可以肯定這是一個零件編號,所以這是最重的單詞。它的重量應該是1.

比方說,最常發生的是USB 6160發生,所以它的重量應該是0.01或類似的東西,我想。

獲得單詞的所有權重的最佳方法是什麼?

其他供應商還有其他表格,因此分散度總是在變化。

回答

2

這讓我想起Naive Bayes文本分類,因此要確定它屬於哪個產品,可以計算所有單詞的tf-idf。

然後,如果要將其與另一個產品名稱配對,可以再次將其分解爲單詞,並根據最高期限值選擇產品ID,但也許應該爲此指定一些閾值,因爲在某些情況下,不會那麼清楚。

TF-IDF = *日誌(/「中包含單詞產品編號」,「產品編號」)

(/「產品名稱的字數統計」「字的數量在產品名稱是否一致」)你可以看到它是如何的例子一樣,在這裏(在你的情況下,文件將是產品全名):在Java中https://en.wikipedia.org/wiki/Tf–idf#Example_of_tf.E2.80.93idf

實現示例:https://guendouz.wordpress.com/2015/02/17/implementation-of-tf-idf-in-java/

+0

是的,我認爲這將是我的朋友。謝謝,現在我不需要重新發明輪子。 – vaso123

+0

我剛剛讀過tf-idf維基,我認爲它對我們來說已經足夠了,所以如果我把你的公式翻譯回來,那就意味着,''字數統計'* log(「文檔數包含單詞」/ number文件)'對嗎? – vaso123

+0

實際上idf是其他方式,對不起,我會更新它,它應該是日誌(「文檔數量」/「包含單詞的文檔數量」) –