2016-11-20 3 views
0

次の問題があります。セットに基づいてワードをクラスタリングするために使用するアルゴリズム

私は、単語の行を含む大きなデータセットを持っています。 はとてもすなわち

apple,door,wood 
window,door,house 
boot,pie,dessert 

私はすべてのこれらの言葉のうち、4つのカテゴリーを作成してから4つのいずれかのカテゴリに単語の新しい行を一致させたいです。一行にある単語は何らかの形で結びついていますが、単語の行をどうやって取得するかについての情報はありません。

私はこれに使用できるscikit-learnや他のpythonパッケージにアルゴリズムがありますか?

編集:

私は少しの情報を与えました。

例では単語はウェブページのキーワードにすることができ、そのキーワードに基づいてカテゴリを選択したいので、次の記事として何を読むべきかを提案することができます。

しかし、私は多くのカテゴリを作成したくないので、カテゴリを結合したいと思います。つまり、「犬」が「家」と同じ行で何度も見つかった場合、「犬」がキーワードに存在する場合は「家」を提案できます。

カテゴリを先に設定したくない場合は、最初にグループを取得してから、最もよく一致するカテゴリを作成します。

+0

あなたの質問は非常に不明瞭で幅広いです。カテゴリは何ですか?行や個別の単語を分類しますか?これまでに何を試しましたか? scikit-learnは、さまざまな機械学習アルゴリズムの実装を提供します。 –

+0

データセット内の単語はすべて異なっていますか?あるいは、しばしば自分自身を繰り返すような言葉のような「パターン」を見つけますか?あなたはあなたが持っている別の言葉の数を数えることができますか? –

+0

@EliKorvigoさらに詳しい情報を追加しました。私はちょうどシキットで始まっているので、まだ多くのアルゴを知らない。しかし、私はkmeansやminibatchについて考えましたが、複数のセットでこれを行う方法は分かりませんでした。 – user3605780

答えて

1

代わりに単語表現を生成しますか?もしそうなら、gensims word2vecを使って単語ベクトルを作ることができます。あなたができることは、各行をセンテンスとして使用し、カンマを削除することです。次に、どのような単語が一緒になっているかを知ると、同様のコンテキストを持つ単語は、同様の単語埋め込みを持ちます。その後、単語ベクトルそのものにk-meansを実行し、表現に基づいてより良いクラスターを得ることができます。

あなたの質問から、特定の単語が常に一緒に来て、1つのステップであるカテゴリを作成したいと思っているが、その時点では、そうでない場合を除き、k-meansを使用する必要はないと思うあなたは単語の任意の組み合わせを持つことができます。どの組み合わせが似ているかを知りたい場合は、各単語を整数idに設定することができます。apple1door - >2wood - >3などです。そうです。最初の例のようなベクトルは[1,1,1,0,....0]のようになります。ここで問題となるのは、K-meansはそのようなベクトルではあまりうまくいかないことです。一緒になる言葉のパターンを知らなければ、単語埋め込みを構築する方がよいでしょう。

+0

ありがとう、私はこれを試してみます。 – user3605780

関連する問題