問題タブ [document-classification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
2241 参照

mysql - SQL分類

ユーザーが表示するドキュメントを追跡するシステムがあります。各ドキュメントには、その ID とそれが属するクラスターがあります。私のシステムは、セッション ID とビューの数を追跡します。ここで、セッション ID と分類されたクラスターの 2 つの列を提供する SQL クエリを作成したいと思います。分類のアルゴリズムは単純です。

テーブル構造は次のとおりです。MySQL 5.5.16 を使用しています。

セッション

セッションドキュメント

集まる

ClusterDocument

したがって、基本的には、セッションごとにクラスターを選択し、表示されたドキュメントの各クラスターの発生をカウントし、最大発生を見つけたいと考えています。次に、最も多く発生したクラスターの ID がセッションの結果であるため、最終的な結果セットにはセッション ID と最も多く発生したクラスターが保持されます。

結果

このクエリを使用して、各セッション (ステップ 2/II) で表示されたドキュメントのクラスターを取得することができました。

残りが分からなくて困っています。これは、ネストされた SELECT クエリでも可能ですか? カーソルを使用する必要がありますか?もしそうなら、誰かがカーソルを使った例を示すことができますか? どんな助けでも大歓迎です。

編集 #1: C# 実装、MySQL ダンプ、および期待される結果を追加しました

C# 実装

テーブル構造、テストデータ、期待される結果

テーブル構造とテスト データ

期待される結果

編集 #2: より小さいデータ セットとさらなるアルゴリズム ウォークスルーを追加

より小さなデータセットを次に示します。

セッション

集まる

SESSION_DOCUMENT

CLUSTER_DOCUMENT

アルゴリズムの詳細

ステップ 1:セッションで表示されたドキュメントのクラスターを取得する

ステップ 2:クラスターの発生をカウントする

ステップ 3 (最終結果):各セッションで発生した最大クラスターを見つけ (上記を参照)、最終的な結果セット (session_id、cluster_id) を構築します。

編集#3:受け入れられた回答の説明

与えられた答えはどちらも正しいです。どちらも問題の解決策を提供します。Mosty Mostacho が最初にソリューションを提供し、別のバージョンのソリューションをVIEW. mankuTimma のソリューションは、Mosty Mostacho のソリューションと同じ品質です。したがって、2 つの同等に優れた解決策があります。モスティ モスタチョを選んだのは、彼が 1 位だったからです。

両氏の貢献に感謝します。.

0 投票する
1 に答える
2306 参照

weka - Weka+ NaiveBayes Classifier+ テキスト分類による分類

テキスト分類タスクに Weka を使用しています。data.arff ファイルを作成しました。次の 2 つの属性が含まれます。

  1. テキスト属性
  2. クラス属性

次に、生成された ARFF ファイルが StringToWordVector で処理されます。

java weka.filters.unsupervised.attribute.StringToWordVector -i data/weather.arff -o data/out.arff 次に、NaiveBayes が使用されます: java weka.classifiers.bayes.NaiveBayes -t data/out.arff -K

私はこの問題を抱えています:

weka.core.UnsupportedAttributeTypeException: weka.classifiers.bayes.NaiveBayes: 数値クラスを処理できません! weka.core.Capabilities.test (Capabilities.java:954) で weka.core.Capabilities.test (Capabilities.java:1110) で weka.core.Capabilities.test (Capabilities.java:1023) で weka.core で。 weka.classifiers.bayes.NaiveBayes.buildClassifier(NaiveBayes.java:213) の Capabilities.testWithFail(Capabilities.java:1302) weka.classifiers.Evaluation.evaluateModel(Evaluation.java:1076) の weka.classifiers.Classifier.runClassifier (Classifier.java:312) weka.classifiers.bayes.NaiveBayes.main(NaiveBayes.java:944) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース) で.reflect.DelegatingMethodAccessorImpl.

誰でも私を助けることができますか?私はこのレベルで立ち往生しています。

0 投票する
1 に答える
692 参照

user-interface - Weka の GUI での NaiveBayes の奇妙な結果

Weka の GUI を使用してテキスト ドキュメントを分類しています。私のデータセットは .arff 形式です。

StringToWordVector フィルターを適用します。次に、RemovePercentage フィルターを適用して、データ セットをトレーニング セットとテスト セットに分割します。合計 99 個のインスタンスと 934 個の属性が含まれています。トレーニングとテストの分割後、トレーニング セットには 66 個のインスタンスが含まれ、テスト セットには 33 個のインスタンスが含まれます。

トレーニング セットでモデルを学習します。結果は精度として 100% です。次に、テスト セットで学習したモデルをテストします。結果は 3.0303 % です。

3.0303 % を取得する理由と、この結果を改善する方法を理解するのを手伝ってくれる人はいますか?

0 投票する
1 に答える
1129 参照

java - wekaによるテキスト分類

Weka ライブラリを使用して Java でテキスト分類器を構築しています。

最初にストップワードを削除してから、ステマーを使用しています (例: 車を車に変換します)。現在、6 つの定義済みカテゴリがあります。カテゴリごとに 5 つのドキュメントで分類子をトレーニングします。ドキュメントの長さは似ています。

分類するテキストが短い場合、結果は問題ありません。しかし、テキストが 100 語を超えると、結果はますます奇妙になります。

次のように、各カテゴリの確率を返します。

[0.0015560238056109177、0.1808919321002592、0.6657404531908249、0.004793498469427115、0.13253647895234325、0.014481613481534815]

これはかなり信頼できる分類です。

しかし、約 100 語を超えるテキストを使用すると、次のような結果が得られます。

確率: [1.2863123678314889E-5, 4.3728547754744305E-5, 0.9964710903856974, 5.539960514402068E-5, 0.002993481218084141, 4.2343741196E4-1]

これは良いことです。

現在、ドキュメントの分類に Naive Bayes Multinomial を使用しています。私はそれについて読んで、長いテキストで奇妙な行動をする可能性があることを知りました. 今の私の問題かも?

なぜこれが起こっているのか、誰にも良い考えがありますか?

0 投票する
1 に答える
587 参照

machine-learning - Wekaのテストケース

次の形式で書かれたARFFファイルがあるかもしれません。

そして、これを実行して、Wekaで単純ベイズ分類器をトレーニングしました。この訓練された分類器が予測を行えるように、どのようにテストセットを作成しますか?ありがとう。

0 投票する
3 に答える
16373 参照

java - Java での Weka による基本的なテキスト分類

Weka を使用して JAVA でテキスト分類器を構築しようとしています。いくつかのチュートリアルを読み、独自の分類器を構築しようとしています。

次のカテゴリがあります。

および次の既にトレーニングされたデータ

したがって、たとえば、ユーザーが単語 java を分類したい場合、カテゴリ computer を返す必要があります (Java はそのカテゴリにしか存在しないことは間違いありません!)。

コンパイルはしますが、奇妙な出力が生成されます。

出力は次のとおりです。

ただし、分類する最初のテキストは java であり、それはカテゴリ computer でのみ発生するため、次のようにする必要があります。

もう1つはまったく見つからないため、不明として分類する必要があります

コードは次のとおりです。

ところで、良いページを見つけました:

http://www.hakank.org/weka/TextClassifierApplet3.html

0 投票する
1 に答える
435 参照

weka - Weka実験環境でのナイーブベイズランタイム

Weka実験環境で同じデータセットに対してSMOとNaiveBayesを実行します。SMOの場合、トレインセットで116.547秒、テストセットで19.865秒です。ナイーブベイズの場合、トレインセットで80.665秒、テストセットで699.594秒です。ナイーブベイズは高速分類器として知られているので、これらの結果は重要かどうか疑問に思います。

誰かが私にこれらの結果を説明できますか?

0 投票する
2 に答える
1868 参照

weka - 属性選択+weka+ Naive Bayes

次の3つの方法のうち、属性選択を実行するのに最適な方法はどれかと思います。

  1. メタ分類子を使用する
  2. フィルターアプローチ
  3. 属性選択クラスを直接使用するネイティブアプローチ

私が使用している分類器はNaiveBayesです。

誰かが私に最良の選択を見つけるように案内してもらえますか?

0 投票する
3 に答える
1145 参照

math - 単純ベイズの確率計算を理解する

単純なベイズ テキスト分類手法では、通常、トレーニング データ内の単語をカウントし、ドキュメントが単語の文字列である p(label | document) を計算しますか?

テキスト分類の場合、ラベルを予測するために P(label | word1、word2 など) を直接計算できないのはなぜですか? (つまり、なぜベイズ定理を使う必要があるのですか)

ドキュメントがあれば、完全なデータがあります... p(label and w1 and w2 ) / p(w1 and w2) を直接計算できるはずですか?

トレーニング セットがグラウンド トゥルースではないことに気付きました。ベイズの定理でそれを計算すれば、その問題は解決しますか? もしそうなら、どのように?数学がどのように機能するかを示すことができますか?