Skip to main content

Libreria para clasificar texto

Project description

Twotuples: Clasificador de Texto con Lógica Difusa

GitHub Repo

La librería twotuples tiene como objetivo clasificar opiniones o comentarios en tres categorías: positivo (POS), negativo (NEG) o neutral (NEU).

A diferencia de otras librerías de procesamiento de lenguaje natural (NLP), twotuples utiliza tres clasificadores de texto robustos internamente y combina sus resultados utilizando un clasificador difuso basado en el modelo de 2-tuplas lingüísticas, ofreciendo resultados más precisos y de consenso.

Durante su desarrollo, la librería fue probada con 21,847 comentarios de hoteles extraídos de TripAdvisor, obteniendo resultados excelentes evaluados a través del análisis de diversas métricas.

Características

  • Integración de múltiples modelos de estado del arte: Pysentimiento, Vader y Asent.
  • Sistema de decisión consensuada basado en Lógica Difusa (Fuzzy Logic).
  • Soporte para textos en Español. Traduce automáticamente los textos al inglés para los modelos que lo requieren.
  • Exportación automática de resultados y métricas a archivos Excel.

Instalación

Puedes instalar la librería utilizando pip. Como la librería está alojada en TestPyPI, debes incluir el parámetro --extra-index-url para que las dependencias estándar se descarguen de PyPI correctamente.

pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ Twotuples==1.1.1

[!TIP] Recomendación: Es altamente aconsejable ejecutar e instalar esta librería en entornos como Google Colab o un entorno virtual local dedicado, ya que requiere descargar modelos pesados de Machine Learning y diccionarios como transformers, spacy y los léxicos de nltk.

Uso Rápido (Quickstart)

1. Clasificación Difusa de Opiniones

Esta es la funcionalidad principal. Toma un archivo Excel con una columna de textos, ejecuta los tres modelos, aplica la lógica difusa y devuelve archivos Excel con las predicciones.

from Twotuples import Twotuples

# 1. Definimos la ruta al archivo y la columna a analizar
archivo_excel = "data.xlsx"
nombre_columna = "Opinion"

# 2. Ejecutamos el clasificador difuso
# NOTA: C=True habilita la traducción de los textos al inglés para los modelos Vader y Asent.
Twotuples.difuso_clasificator(data=archivo_excel, ColumnName=nombre_columna, C=True)

Archivos generados tras la ejecución:

  • score_diffuse.xlsx: Archivo final recomendado. Contiene el texto original y una nueva columna llamada Clasicacion_Difusa con las etiquetas finales (POS, NEG, NEU).
  • score_pysentiment.xlsx, score_vader.xlsx, score_asent.xlsx: Archivos con los resultados individuales por cada modelo.
  • score.xlsx: Resumen unificado numérico.

2. Evaluación de Métricas

Si tu archivo Excel original contiene una columna con las etiquetas reales o esperadas (Ground Truth), puedes comparar las predicciones de la librería con la realidad utilizando la función Metric.

# Reporte de métricas (Precision, Recall, F1-Score)
# Sustituye 'Etiqueta_Real' por el nombre de la columna que contiene los valores esperados en tu Excel.
Twotuples.Metric(etiqueta='Etiqueta_Real', metric='ClassificationReport', sorter='difuse', ClassNumber=3)

# Mostrar la matriz de confusión de forma gráfica
Twotuples.Metric(etiqueta='Etiqueta_Real', metric='ConfusionMatrix', sorter='difuse', ClassNumber=3)

Referencia de la API

Twotuples.difuso_clasificator(data, ColumnName, C=False)

Ejecuta la predicción sobre un dataset completo.

  • data (str): Ruta al archivo .xlsx que contiene los datos. Debe tener una hoja llamada Sheet1.
  • ColumnName (str): Nombre de la columna en el Excel que contiene el texto a analizar.
  • C (bool, opcional): Si es True, traduce los textos al inglés (requerido para Vader y Asent si los textos originales están en español). Por defecto es False.

Twotuples.Metric(etiqueta, metric='ClassificationReport', sorter='difuse', ClassNumber=3)

Evalúa y visualiza el rendimiento de las predicciones.

  • etiqueta (str): Nombre de la columna con las clasificaciones manuales/reales.
  • metric (str, opcional): Tipo de visualización. Opciones: 'ClassificationReport' (tabla de texto) o 'ConfusionMatrix' (gráfico visual).
  • sorter (str, opcional): Define qué modelo específico evaluar. Opciones: 'difuse', 'pysentiment', 'vader', 'asent'. Por defecto es 'difuse'.
  • ClassNumber (int, opcional): Cantidad de clases de salida. Valores válidos son 2 o 3. Por defecto es 3.

Tecnologías Usadas

  • Pysentimiento (v0.7.2): Herramienta de NLP basada en Transformers para español e inglés.
  • Asent (v0.8.0): Análisis de sentimientos basado en reglas para Spacy.
  • NLTK Vader (v3.8.1): Herramienta heurística robusta para el análisis de sentimientos.
  • Transformers: Uso del modelo de traducción Helsinki-NLP/opus-mt-es-en.
  • Otras dependencias: spacy, scikit-learn, pandas, numpy, matplotlib.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twotuples-1.3.4.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

twotuples-1.3.4-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file twotuples-1.3.4.tar.gz.

File metadata

  • Download URL: twotuples-1.3.4.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for twotuples-1.3.4.tar.gz
Algorithm Hash digest
SHA256 74a0f2d5f19e1813255ed6ce004a82ce50dcd1174f957b28b89359ba2f234e22
MD5 3b882809c7a410e587cc74d135ce6af8
BLAKE2b-256 8b6d266c1565e8a827dea0a61fbea5b0f3f4d7e6835dbb1e1fb1607e95d281e1

See more details on using hashes here.

File details

Details for the file twotuples-1.3.4-py3-none-any.whl.

File metadata

  • Download URL: twotuples-1.3.4-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for twotuples-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8546085edfd9cd5655df76085a7640e4a42544836c8f8890b433c2b4501af63c
MD5 4fbc96d649ffa5590d67d01e17f07016
BLAKE2b-256 4bb5c95796533c8e87aeb089619f15e38060a0b28d6463d8dc31561d5bcdb571

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page