0

RSS フィード内のキーワードの頻度に基づいて Weka の J48 および Naive Bayes Multinomial (NBM) 分類子を使用して、フィードをターゲット カテゴリに分類しています。

たとえば、私の .arff ファイルの 1 つには、次のデータ抽出が含まれています。

@attribute Keyword_1_nasa_Frequency numeric
@attribute Keyword_2_fish_Frequency numeric
@attribute Keyword_3_kill_Frequency numeric
@attribute Keyword_4_show_Frequency numeric
…
@attribute RSSFeedCategoryDescription {BFE,FCL,F,M, NCA, SNT,S}

@data
0,0,0,34,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,12,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,10,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,BFE
…
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,FCL
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,F
…
20,0,64,19,0,162,0,0,36,72,179,24,24,47,24,40,0,48,0,0,0,97,24,0,48,205,143,62,7
8,0,0,216,0,36,24,24,0,0,24,0,0,0,0,140,24,0,0,0,0,72,176,0,0,144,48,0,38,0,284,
221,72,0,72,0,SNT
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,SNT
0,0,0,0,0,0,11,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,S

などなど: 合計 570 行あり、それぞれに 1 日のフィード内のキーワードの頻度が含まれています。この場合、10 日間で 57 のフィードがあり、合計 570 のレコードが分類されます。各キーワードにはサロゲート番号が前に付けられ、「頻度」が後置されます。

「ブラックボックス」ベースで、J48s と NBM 分類器の両方に 10 倍 x 検証を使用しています。使用されるその他のパラメータもデフォルトです。つまり、信頼度は 0.25 で、J48 のオブジェクトの最小数は 2 です。

これまでのところ、さまざまな日数、日付範囲、および実際のキーワード頻度のインスタンスに対する私の分類率は、J28 と NBM の両方の結果で 50 ~ 60% の範囲で一貫しています。でも、できればこれを改善したい。

デシジョン ツリーの信頼度を 0.1 まで下げることもありますが、改善はごくわずかです。

誰かが私の結果を改善する他の方法を提案できますか?

より多くの情報を提供するために、ここでの基本的なプロセスには、それぞれが 1 つのカテゴリに属する​​ RSS フィードの多様なコレクションが含まれます。

2011 年 9 月 1 日から 10 日などの特定の日付範囲では、各フィードの item 要素のテキストが結合されます。次に、テキストを検証して、数字、アクセントなどを含む単語、およびストップ ワードを削除します (MySQL からの 500 個のストップ ワードのリストが使用されます)。残りのテキストは Lucene でインデックス化され、最も一般的な 64 語が計算されます。

次に、これらの 64 語のそれぞれが、指定された日付範囲内の各日のフィードの説明要素で検索されます。この一環として、説明テキストもタイトル テキストと同じ方法で検証され、Lucene によって再度インデックス化されます。したがって、「辞退」などのタイトルの人気キーワードは、「辞退」に語幹が付けられます。「辞退」などの「辞退」にも語幹が含まれる類似の単語が説明要素に見つかった場合、「辞退」の頻度は次のようになります。説明要素からの単語の Lucene の索引付けから取得されます。

.arff ファイルに示されている頻度は、これに基づいて一致しています。つまり、上記の最初の行で、'nasa'、'fish'、'kill' は、その日の BFE カテゴリの特定のフィードの説明項目にはありません。しかし、'show' は 34 回見つかりました。各行は、64 個のキーワードすべてについて、1 日のフィードの説明項目での出現回数を表します。

したがって、低周波はステミングによるものではないと思います。むしろ、あるカテゴリのフィードで人気があり、他のフィードではまったく表示されないキーワードがあることの必然的な結果だと私は考えています。したがって、結果に示されている余裕があります。ここでも一般的なキーワードが適切な場合があります。

他の可能性としては、カテゴリごとのフィード数の違いで、S よりも多くのフィードが NCA のようなカテゴリに含まれているか、キーワード選択プロセス自体に問題があります。

4

2 に答える 2

1

ステミングを完全にオフにしてみてください。Stanford Intro to IR authorは、テキスト分類のコンテキストにおいてステミングが害を及ぼし、少なくとも役に立たない理由を大まかに説明しています。

カスタムの多項単純ベイズ テキスト分類ツールでステミングをテストしました (85% の精度が得られます)。org.apache.lucene.analysis.en バージョン 4.4.0 から入手できる 3 つの Lucene ステマー (EnglishMinimalStemFilter、KStemFilter、PorterStemFilter) とステミングなしを試し、小規模および大規模なトレーニング ドキュメント コーパスでテストを行いました。 トレーニング コーパスが小さい場合、ステミングによって分類精度が大幅に低下し、より大きなコーパスでは精度が変化しませんでした。これは、Intro to IR ステートメントと一致しています。

試してみるいくつかのこと:

  • なぜ64語しかないのですか?私はその数を大幅に増やしますが、制限がまったくないことが望ましいです。
  • tf-idf (用語頻度、逆ドキュメント頻度) を試してください。あなたが今使っているのはただのtfです。これに idf を掛けると、「show」などの一般的で有益でない単語から生じる問題を軽減できます。トップワードをほとんど使用していないことを考えると、これは特に重要です。
  • トレーニング コーパスのサイズを増やします。
  • バイグラム、トライグラムなど、およびさまざまなN グラムの組み合わせにシングリングしてみてください(現在はユニグラムのみを使用しています)。

あなたが回すことができる他のノブがたくさんありますが、私はこれらから始めます. 60% よりもはるかに良い結果が得られるはずです。80% から 90% 以上が一般的です。

于 2013-10-24T14:31:08.410 に答える
1

Stemingについては何も言及していません。私の意見では、単語ステミングを実行していて、WEKA 評価がキーワード ステムに基づいていれば、より良い結果が得られる可能性があります。

たとえば、キーワード surf を指定して WEKA モデルが構築され、新しい rss フィードにsurfという単語が含まれているとします。これら 2 つの単語が一致する必要があります。

いくつかの言語用に無料で利用できるステマーが多数あります。

英語の場合、ステミングに使用できるオプションは次のとおりです。

WordNet の辞書を使用してステミングを実行する場合は、WordNet との統合を実行するライブラリとフレームワークがあります。

以下に、それらのいくつかを示します。

  • MIT Java WordNet インターフェイス ( JWI )
  • リタ
  • Java ワーネット ライブラリ ( JWNL )

詳細情報が提供された後に編集

特定の場合のポイントは、「最もポピュラーな64語」の選択だと思います。選択した単語またはフレーズは、キーワードまたはキーフレーズである必要があります。ここでの課題は、キーワードまたはキーフレーズの抽出です。

キーワード/キーフレーズ抽出について書かれた本、論文、アルゴリズムがいくつかあります。ワイカト大学は、キーワード抽出アルゴリズム(KEA)と呼ばれる有名なアルゴリズムをJAVAで実装しています。KEA はテキスト ドキュメントからキーフレーズを抽出し、無料のインデックス作成または制御された語彙によるインデックス作成に使用できます。実装は、GNU General Public License の下で配布されます。

考慮すべきもう 1 つの問題は、(品詞)POS タグ付けです。名詞には、他の POS タグよりも多くの情報が含まれています。したがって、POS タグをチェックしていて、選択した 64 語のほとんどが名詞であった場合、より良い結果が得られる可能性があります。

さらに、Anette Hulth の公開された論文より多くの言語知識が与えられた場合の自動キーワード抽出の改善によると、彼女の実験では、キーワード/キーフレーズが次の 5 つのパターンのいずれかを持っている、または含まれていることが示されました。

  • 形容詞名詞 (単数または質量)
  • NOUN NOUN (歌うかミサの両方)
  • 形容詞名詞(複数)
  • NOUN (sing. or mass) 名詞 (pl.)
  • NOUN (sing. or mass)

結論として、私の意見では、結果を改善できる簡単なアクションは、新しい RSS フィードを評価するために、各単語の POS タグを見つけて、主に名詞を選択することです。WordNet を使用して各単語の POS タグを見つけることができます。前述のように、WordNet の辞書との統合を実行するライブラリがウェブ上に多数あります。もちろん、ステミングも分類プロセスに不可欠であり、維持する必要があります。

これが役立つことを願っています。

于 2012-08-22T14:04:01.977 に答える