2017-03-08 1 views
-1

私は、コアJavaのプロジェクトを開発する必要があります。このプロジェクトでは、ユーザーから約100行のテキストを取得します。ここで、テキスト全体をクラスタに分割して、それぞれのクラスタがキーワードに関連するとします。Javaのテキストクラスタリングプログラム

"Javaはオブジェクト指向言語です。モジュール化のためのクラスを使用しています。bla bla bla .. 。

C++は、オブジェクト指向言語である。ここではOOPSの概念についてかくかくしかじか...

何か...」

さて、私はプログラムへの入力として、このテキスト全体を与えれば、私は、プログラムがキーワードの名前を持つディレクトリを作成し、それ自身でキーワードを選択することも望みます。私はこのテキストのキーワードがJava、Modularisation、C++、OOPSであることを期待しています。このプログラムの後半では、私は異なるテキストを扱うことになるので、このプログラムは、どの単語がキーワードであり、どの単語がそうでないかを理解するのに十分な知能を持たせなければなりません。それで、どんなテキストでも動作できるようになります。

私はたくさんの場所を調べて、多くの人に尋ね、多くのチュートリアルで大部分が数値データをクラスタリングしていることを知りました。しかし、誰もテキストクラスタリングを取り扱っていることはめったにありません。私はアルゴリズムやこの作業を行う方法を探しています。機械学習の面積のアルゴリズムは数値データを必要とするので、あなただけのチュートリアルを見つけている理由

おかげ

答えて

0

理由があります。したがって、データを数値形式に変換する必要があります。 テキストの数値表現を作成するには、いくつかのアルゴリズムがあります。例として、レーベンシュタインdistnace。 この距離尺度を使用すると、数値表現ができ、クラスタリングアルゴリズムが適用されます。 例として、k-Meansアルゴリズムなどを使用してテキストデータをクラスタ化することができます。

また、グーグルでテキストマイニングについて説明してください。ウェブには多くの良い例があります。このlinkは良いリソースになる可能性があります

0

テキストを前処理し、その処理されたデータをクラスタ化するためにさまざまな方法があります。例としては、テキストとアプリケーションのクラスタリング方法の表現をbag-of-wordsとして生成することです。

しかし、私は個人的にLDAトピックモデリングを選択します。このアルゴリズム自体はテキストをクラスタリングしませんが、テキストクラスタリングの前処理ステップとして使用できます。これは、文書や文章のセットに関連するトピックのリストを提供する別の教師なしのアプローチです。これらのトピックは、実際には、基礎となるテキストにどのように表示されるかに基づいて互いに関連しているとみなされる一連の単語です。

  • 食品、ワイン、ビール、ランチ、おいしい、ダイニング
  • 家、不動産、家、ヒント、住宅ローン、不動産
  • :たとえば、次は、つぶやきのセットから抽出された3つのトピックです
  • 統計、信者、unfollowersは、自動的に

その後、あなたはこれらの単語が文と、総単語数に表示される数時間をカウントすることにより、これらのトピックのそれぞれに属する文の確率を計算することができ、確認しました。最後に、これらの確率値をテキストクラスタリングに使用することができる。LDAによって生成されたこれらの単語は重み付けされているので、最大の重みを持つ単語をメインキーワードとして使用できます。たとえば、上記のリストでは、「食べ物」、「家庭」、「統計」がそれぞれ最大の重みを持っています。

LDAの実装では、Javaで開発されたMalletライブラリをチェックしてください。

関連する問題