Ceci est défini des codes de sélection des fonctionnalités à partir de données texte. (Sur la sélection des fonctionnalités, voir ici ou ici)
La sélection des fonctionnalités est vraiment importante lorsque vous utilisez des mesures d'apprentissage automatique sur les données du langage naturel. Les données du langage naturel contient généralement beaucoup d'informations sur le bruit, donc les mesures d'apprentissage automatique sont faibles si vous ne traitez aucune sélection de fonctionnalités. (Il y a quelques exceptions d'algorithmes comme l'arbre de décision ou la forêt aléatoire . Ils ont une métrique de sélection des fonctionnalités à l'intérieur de l'algorithme lui-même)
La sélection des fonctionnalités est également utile lorsque vous observez vos données de texte. Avec la sélection des fonctionnalités, vous pouvez savoir quelles fonctionnalités contribuent vraiment à des étiquettes spécifiques.
Veuillez visiter la page du projet sur GitHub.
Si vous trouvez des bogues et que vous le signalez à GitHub, je suis content.
Tous les requêtes de traction sont les bienvenues.
Ce package vous fournit quelques mesures de sélection de fonctionnalités. Actuellement, ce package prend en charge les méthodes de sélection des fonctionnalités suivantes
Cette méthode, en fait, appelle simplement TfidfTransformer du Scikit-Learn.
Voir le document Scikit-Learn sur les informations détaillées.
Le PMI est calculé par corrélation entre la fonctionnalité (IE Token) et la catégorie (étiquette IE). Concrètement, il rend la table croisée (ou appelée table d'urgence ) et calcule la probabilité articulaire et la probabilité marginale à ce sujet.
Pour en savoir plus, voir référence
Dans Python World, NLTK et d'autres packages fournissent également PMI. Vérifiez-les et choisissez en fonction de votre préférence et de votre utilisation.
SOA est une méthode de sélection de fonctions améliorée de PMI. PMI est faible lorsque la fonction a une fréquence de mots basse. Le SOA est basé sur l'informatique PMI, cependant, il est possible sur de telles fonctionnalités à basse fréquence. De plus, vous pouvez obtenir une anti-corrélation entre les fonctionnalités et les catégories.
Dans ce paquet, la formule SOA provient du papier suivant,
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})}
Où
BNS est une méthode de sélection de fonctionnalités pour les données de classe binaire. Il existe plusieurs méthodes disponibles pour les données de classe binaire, telles que le gain d'information (IG) , le chi carré (CHI) , le rapport de cotes (cotes) .
Le problème est lorsque vous exécutez votre sélection de fonctionnalités sur des données asymétriques. Ces méthodes sont faibles pour de telles données asymétriques, cependant, le BNS n'est possible que pour les données asymétriques. Le document suivant montre comment BNS est possible pour les données asymétriques.
Lei Tang and Huan Liu, "Bias Analysis in Text Classification for Highly Skewed Data", 2005
ou
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
Vous pouvez voir un message d'erreur lors de l'exécution de cette commande, comme
We failed to install numpy automatically. Try installing numpy manually or Try anaconda distribution.
En effet, setup.py essaie d'installer Numpy et Scipy avec pip , mais il échoue. Nous avons besoin de Numpy et Scipy avant d'installer scikit-learn .
Dans ce cas, vous prenez le choix suivant
numpy et scipy manuellementanaconda Python. Veuillez visiter leur site. 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 ()Ensuite, vous obtenez le résultat
[{ 'score' : 0.14976146817207336 , 'label' : 'label_c' , 'feature' : 'bb' , 'frequency' : 1.0 }, ...] Voir les scripts dans examples/
Vous pouvez configurer un environnement Dev avec Docker-Compose.
Cette commande exécute le test avec le conteneur Docker.
$ cd tests/
$ docker-compose build
$ docker-compose up