これは、テキストデータからの機能選択コードのセットです。 (機能の選択については、こちらまたはこちらをご覧ください)
自然言語データで機械学習メトリックを使用する場合、機能の選択は非常に重要です。自然言語データには通常、多くのノイズ情報が含まれているため、機能の選択を処理しないと機械学習メトリックが弱くなります。 (意思決定ツリーやランダムフォレストなどのアルゴリズムにはいくつかの例外があります。アルゴリズム自体の内部に特徴選択メトリックがあります)
機能の選択は、テキストデータを観察するときにも役立ちます。機能の選択により、どの機能が実際に特定のラベルに貢献しているかを知ることができます。
Githubのプロジェクトページにアクセスしてください。
バグを見つけて、それをGithubの問題に報告した場合は、うれしいです。
どんなプルレクエストも歓迎されます。
このパッケージは、いくつかの機能選択メトリックを提供します。現在、このパッケージは、次の機能選択方法をサポートしています
実際、この方法は、Scikit-LearnのTfidfTransformer呼び出すだけです。
詳細情報に関するScikit-Learn文書を参照してください。
PMIは、特徴(つまりトークン)とカテゴリ(つまりラベル)との相関によって計算されます。具体的には、それはクロステーブル(または緊急時テーブルと呼ばれる)を作り、それに共同の確率と周辺確率を計算します。
詳細については、参照を参照してください
Python Worldでは、NLTKやその他のパッケージもPMIを提供しています。それらをチェックして、あなたの好みと使用法に基づいて選択します。
SOAは、PMIからの機能選択法の改善です。特徴の単語頻度が低い場合、PMIは弱いです。 SOAはPMIコンピューティングに基づいていますが、このような低周波数機能では実行可能です。さらに、機能とカテゴリの間で相関を防ぐことができます。
このパッケージでは、SOAフォーミュラは次の紙からのものです。
Saif Mohammad and Svetlana Kiritchenko, "Using Hashtags to Capture Fine Emotion Categories from Tweets", Computational Intelligence, 01/2014; 31(2).
SOA(w, e) = log_2frac{freq(w, e) * freq(neg{e})}{freq(e) * freq(w, neg{e})}
どこ
BNSは、バイナリクラスデータの機能選択方法です。情報ゲイン(IG) 、カイ2乗(CHI) 、オッズ比(オッズ)など、バイナリクラスデータに利用可能な方法がいくつかあります。
問題は、歪んだデータで機能選択を実行するときです。これらの方法はそのような歪んだデータでは弱いですが、 BNSは歪んだデータでのみ実行可能です。次の論文は、歪んだデータに対してBNSがどのように実行可能であるかを示しています。
Lei Tang and Huan Liu, "Bias Analysis in Text Classification for Highly Skewed Data", 2005
または
George Forman, "An Extensive Empirical Study of Feature Selection Metrics for Text Classification",Journal of Machine Learning Research 3 (2003) 1289-1305
python setup.py install
このコマンドの実行中にエラーメッセージが表示される場合があります。
We failed to install numpy automatically. Try installing numpy manually or Try anaconda distribution.
これは、 setup.py pipでNumpyとScipyをインストールしようとするためですが、失敗します。 scikit-learnをインストールする前に、NumpyとScipyが必要です。
この場合、次の選択をします
numpyとscipy手動でインストールしますanaconda Python Distributionを使用します。彼らのサイトにアクセスしてください。 input_dict = {
"label_a" : [
[ "I" , "aa" , "aa" , "aa" , "aa" , "aa" ],
[ "bb" , "aa" , "aa" , "aa" , "aa" , "aa" ],
[ "I" , "aa" , "hero" , "some" , "ok" , "aa" ]
],
"label_b" : [
[ "bb" , "bb" , "bb" ],
[ "bb" , "bb" , "bb" ],
[ "hero" , "ok" , "bb" ],
[ "hero" , "cc" , "bb" ],
],
"label_c" : [
[ "cc" , "cc" , "cc" ],
[ "cc" , "cc" , "bb" ],
[ "xx" , "xx" , "cc" ],
[ "aa" , "xx" , "cc" ],
]
}
from DocumentFeatureSelection import interface
interface . run_feature_selection ( input_dict , method = 'pmi' , use_cython = True ). convert_score_matrix2score_record ()次に、結果を取得します
[{ 'score' : 0.14976146817207336 , 'label' : 'label_c' , 'feature' : 'bb' , 'frequency' : 1.0 }, ...] examples/のスクリプトを参照してください
Docker-Composeを使用して開発環境をセットアップできます。
このコマンドは、Dockerコンテナでテストを実行します。
$ cd tests/
$ docker-compose build
$ docker-compose up