Skip to content
Paquete en python para análisis, clasificación y recuperación de textos, utilizado por el equipo de Datos Argentina.
Python Jupyter Notebook Makefile
Branch: master
Clone or download
Latest commit 44fb5b5 Sep 25, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Agrego templates de contribuciones de la comunidad. May 12, 2017
docs Nueva version: 0.0.6 Sep 25, 2017
tests Merge branch 'dev-nacho' of https://github.com/datosgobar/textar into… Jun 13, 2017
textar Nueva version: 0.0.6 Sep 25, 2017
.gitignore Nueva version: 0.0.6 Sep 25, 2017
.travis.yml Elimino python 2.6 como versión en la lista de pypi. Nov 27, 2016
HISTORY.md Nueva version: 0.0.6 Sep 25, 2017
LICENSE Initial commit con el esqueleto del paquete. Nov 22, 2016
MANIFEST.in Sacamos tests del deploy a pypi. Nov 25, 2016
Makefile Corrijo travis para auto-deploy en pypi. Nov 24, 2016
README.md
requirements.txt Agrego código del paquete text-classifier en textar. Nov 22, 2016
requirements_dev.txt Nueva version: 0.0.6 Sep 25, 2017
setup.cfg Initial commit con el esqueleto del paquete. Nov 22, 2016
setup.py Nueva version: 0.0.6 Sep 25, 2017
tox.ini Initial commit con el esqueleto del paquete. Nov 22, 2016
travis_pypi_setup.py Initial commit con el esqueleto del paquete. Nov 22, 2016

README.md

Analizador de Textos

Coverage Status Build Status PyPI Stories in Ready Documentation Status

Paquete en python para análisis, clasificación y recuperación de textos, utilizado por el equipo de Datos Argentina.

  • Licencia: MIT license

Instalación

Dependencias

textar usa pandas, numpy, scikit-learn y scipy. Para que funcionen, se requiere instalar algunas dependencias no pythonicas:

  • En Ubuntu: sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran

Desde pypi

pip install textar

Para desarrollo

git clone https://www.github.com/datosgobar/textar.git
cd path/to/textar
pip install -e .

Cualquier cambio en el código está disponible en el entorno virtual donde fue instalado de esta manera.

Uso

Búsqueda de textos similares

from textar import TextClassifier

tc = TextClassifier(
    texts=[
        "El árbol del edificio moderno tiene manzanas",
        "El árbol más chico tiene muchas mandarinas naranjas, y está cerca del monumento antiguo",
        "El edificio más antiguo tiene muchos cuadros caros porque era de un multimillonario",
        "El edificio más moderno tiene muchas programadoras que comen manzanas durante el almuerzo grupal"
    ],
    ids=map(str, range(4))
)

ids, distancias, palabras_comunes = tc.get_similar(
    example="Me encontré muchas manzanas en el edificio", 
    max_similars=4
)

print ids
['0', '3', '2', '1']

print distancias
[0.92781458944579009, 1.0595805639371083, 1.1756638126839645, 1.3206413200640157]

print palabras_comunes
[[u'edificio', u'manzanas'], [u'edificio', u'muchas', u'manzanas'], [u'edificio', u'muchas'], [u'muchas']]

Clasificación de textos

from textar import TextClassifier

tc = TextClassifier(
    texts=[
        "Para hacer una pizza hace falta harina, tomate, queso y jamón",
        "Para hacer unas empanadas necesitamos tapas de empanadas, tomate, jamón y queso",
        "Para hacer un daiquiri necesitamos ron, una fruta y un poco de limón",
        "Para hacer un cuba libre necesitamos coca, ron y un poco de limón",
        "Para hacer una torta de naranja se necesita harina, huevos, leche, ralladura de naranja y polvo de hornear",
        "Para hacer un lemon pie se necesita crema, ralladura de limón, huevos, leche y harina"
    ],
    ids=map(str, range(6))
)

# entrena un clasificador
tc.make_classifier(
    name="recetas_classifier",
    ids=map(str, range(6)),
    labels=["Comida", "Comida", "Trago", "Trago", "Postre", "Postre"]
)

labels_considerados, puntajes = tc.classify(
    classifier_name="recetas_classifier", 
    examples=[
        "Para hacer un bizcochuelo de chocolate se necesita harina, huevos, leche y chocolate negro",
        "Para hacer un sanguche de miga necesitamos pan, jamón y queso"
    ]
)

print labels_considerados
array(['Comida', 'Postre', 'Trago'], dtype='|S6')

print puntajes
array([[-3.52493526,  5.85536809, -6.05497008],
       [ 2.801027  , -6.55619473, -3.39598721]])

# el primer ejemplo es un postre
print sorted(zip(puntajes[0], labels_considerados), reverse=True)
[(5.8553680868184079, 'Postre'),
 (-3.5249352611212568, 'Comida'),
 (-6.0549700786502845, 'Trago')]

# el segundo ejemplo es una comida
print sorted(zip(puntajes[1], labels_considerados), reverse=True)
[(2.8010269985828997, 'Comida'),
 (-3.3959872063363505, 'Trago'),
 (-6.5561947275785393, 'Postre')]

Tests

Los tests sólo se pueden correr habiendo clonado el repo. Luego instalar las dependencias de desarrollo:

pip install -r requirements_dev.txt

y correr los tests:

nosetests

Créditos

Contacto

Te invitamos a [crearnos un issue](https://github.com/datosgobar/textar/issues/new?title=Encontré un bug en textar) en caso de que encuentres algún bug o tengas feedback de alguna parte de textar.

Para todo lo demás, podés mandarnos tu comentario o consulta a datos@modernizacion.gob.ar.

You can’t perform that action at this time.