0

Googleの公開されているngramデータから導き出された、最も頻繁に使用される単語のリストがあります。

私は持っています:

6800頻繁な2グラム4800頻繁な3グラム2500頻繁な4グラム1100頻繁な5グラム

例2ngramは、次のようになります。

「犬」「本」「椅子3脚」など

例5ngramは、「ある時はそこにあった」「ある時はあった」「それは暗かった」などのようになります。

よく使う単語のリストも2,000語あります。

1)さまざまなリストの中で最も少ない数のngramのどの組み合わせに、頻繁な単語のリストからの最も多くの単語が含まれているかを調べたい。

たとえば、200個の2グラム、40個の3グラム、50個の4グラム、および20個の5グラムで、1800個の頻繁な単語を使用していることがわかった場合、それは成功です。私はそれらの比率を上げましたが、単語の大部分を使用する500未満の組み合わせを見つけたいと思います。

2)また、リストから単語の総数が最も多いさまざまなngramの組み合わせの最小数を見つけたいと思います。

たとえば、2000を超える異なる単語を使用する500 ngramを見つけることができれば、それは素晴らしいことです。

私が抱えている問題は、これをどうやってやるのかわからないということです。hadoopとmapreduceは正しい方向に進んでいると思います...しかし、助けていただければ幸いです。

4

1 に答える 1

2

あなたは15,000ngramのオーダーを持っています。これは非常に小さなデータセットです。1 MBのメモリに収まる可能性があり、おそらくマシンの合計メモリの1/5000未満です。このような問題を解決するためにHadoopは必要ありません。さらに、これは実際には機械学習の問題ではなく、単なる最適化の問題です。

n-gramは(小さな)単語のセットと考えることができ、頻繁な単語リストはより大きな単語のセットと考えることができます。最初の問題では、頻繁に使用する単語リストをそれらのn-gramでカバーできる(またはカバーにできるだけ近づける)ことができるように、n-gramの数をできるだけ少なくする必要があります。これはまさに集合被覆問題です。正確な解決策はおそらく得られませんが、うまくいく単純なヒューリスティックがあります。

ただし、最初の問題が2番目の問題とどのように異なるのか完全にはわかりません。

于 2013-02-14T00:20:12.000 に答える