Este es un conjunto de códigos de selección de características de los datos de texto. (Sobre la selección de características, ver aquí o aquí)
La selección de características es realmente importante cuando usa métricas de aprendizaje automático en datos del lenguaje natural. Los datos del lenguaje natural generalmente contienen mucha información de ruido, por lo que las métricas de aprendizaje automático son débiles si no procesa ninguna selección de características. (Hay algunas excepciones de algoritmos como el árbol de decisión o el bosque aleatorio . Tienen una métrica de selección de características dentro del algoritmo en sí)
La selección de características también es útil cuando observa sus datos de texto. Con la selección de características, puede saber qué características realmente contribuyen a etiquetas específicas.
Visite la página del proyecto en GitHub.
Si encuentra algún error y lo informa al problema de GitHub, me alegro.
Cualquier solicitud de extracción es bienvenida.
Este paquete le proporciona algunas métricas de selección de características. Actualmente, este paquete admite los siguientes métodos de selección de características
Este método, de hecho, solo llama TfidfTransformer de Scikit-Learn.
Consulte el documento Scikit-Learn sobre información detallada.
PMI se calcula por correlación entre característica (es decir, token) y categoría (es decir, etiqueta). Concretamente, fabrica una tabla cruzada (o llamada tabla de contingencia ) y calcula la probabilidad articular y la probabilidad marginal.
Para saber más, ver referencia
En Python World, NLTK y otro paquete también proporcionan PMI. Visítelos y elija en función de su preferencia y uso.
SOA es un método de selección de características mejorado de PMI. PMI es débil cuando la característica tiene una frecuencia de palabras baja. SOA se basa en la computación PMI, sin embargo, es factible en características de baja frecuencia. Además, puede obtener anticorrelación entre características y categorías.
En este paquete, la fórmula de SOA es del siguiente papel,
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})}
Dónde
BNS es un método de selección de características para datos de clase binaria. Existe varios métodos disponibles para datos de clase binaria, como ganancia de información (IG) , chi-cuadrado (chi) , odds ratio (probabilidades) .
El problema es cuando ejecuta su selección de características en datos sesgados. Estos métodos son débiles para tales datos sesgados, sin embargo, BNS es factible solo para los datos sesgados. El siguiente artículo muestra cómo BNS es factible para los datos sesgados.
Lei Tang and Huan Liu, "Bias Analysis in Text Classification for Highly Skewed Data", 2005
o
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
Es posible que vea un mensaje de error durante la ejecución de este comando, como
We failed to install numpy automatically. Try installing numpy manually or Try anaconda distribution.
Esto se debe a que setup.py intenta instalar Numpy y Scipy con pip , sin embargo, falla. Necesitamos Numpy y Scipy antes de instalar scikit-learn .
En este caso, tomas la opción de después
numpy y scipy manualmenteanaconda Python. Visite su sitio. 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 ()Entonces, obtienes el resultado
[{ 'score' : 0.14976146817207336 , 'label' : 'label_c' , 'feature' : 'bb' , 'frequency' : 1.0 }, ...] Ver scripts en examples/
Podrías configurar el entorno de desarrollo con Docker-Compose.
Este comando ejecuta prueba con el contenedor Docker.
$ cd tests/
$ docker-compose build
$ docker-compose up