2013-02-13 29 views
0

我有從谷歌的公開可用的ngram數據派生的最常用詞彙的列表。如何通過使用最常用單詞的列表來排序,以儘可能找到使用最獨特單詞的高效組合?

我:

6800頻繁2克 4800頻繁3克 2500頻繁4克 1100頻繁5克

一個例子2 NGRAM會是這樣的:

「狗」 「一書「 」三把椅子「 等

一個例子5 ngram woul d是這樣的: 「曾幾何時有」「很久以前,有」 「這是一個黑暗和」 等

我也有2,000頻繁出現的詞彙列表。

1)我想找出來自我的各種列表的最少數量的ngram包含來自頻繁字列表的最多字數的組合。

例如,如果我找到200個2克,40個3克,50個4克和20個5克,使用1800個常用詞語,那將是成功的。我將這些比例提高了,但我希望找到少於500個使用大多數單詞的組合。

2)我還想找出包含列表中單詞總數最高的各種ngram的最小組合數。

例如,如果我能找到使用2000多個不同單詞的500個ngram,那就太棒了。

我遇到的問題是我不知道如何去做這件事。我認爲hadoop和mapreduce是在正確的方向......但任何幫助將不勝感激!

+0

@Jeremy,你能讓我們知道你在CS中有什麼樣的背景嗎? – 2013-02-13 22:14:18

+0

@AlptiginJalayr我對PHP,JavaScript和MySQL充滿信心......但從未冒險進入任何類似的機器學習之前。這可能與我的聯盟有點不同,但我希望至少嘗試瞭解將涉及解決問題的技術。 – Jeremy 2013-02-13 23:10:30

回答

2

您的訂單爲15k ngrams。這是一個非常小的數據集。它可能適合1 MB的內存,可能不到機器內存總量的1/5000。你不需要hadoop來解決這個問題。而且,這根本不是一個機器學習問題,它只是一個優化問題。

你可以把你的n-gram看作(小)單詞集,把你頻繁的單詞列表看作一個更大的集合。對於你的第一個問題,你想選擇最少數量的n-gram,這樣你就可以用這些n-gram來覆蓋(或儘可能接近覆蓋)頻繁的單詞列表。這完全是set cover problem。你可能不會得到一個確切的解決方案,但有簡單的啓發式做得很好。

但是,我不完全清楚您的第一個問題與第二個問題的不同之處。

+1

這真的很有幫助,謝謝。我一直在想。有時間在劍橋發郵件給我的朋友 - 現在我知道我在問什麼了!我非常感謝你的迴應。乾杯。 – Jeremy 2013-02-14 00:35:06