---
name: words_to_dataset
kind: function
lang: py
domain: datascience
version: "1.0.0"
purity: pure
signature: "def words_to_dataset(texts: Iterable[str | None], min_ocurrencias: int = 1, eliminar_stopwords: bool = False) -> list[dict]"
description: "Extrae palabras y sus ocurrencias de un iterable de textos. Tokeniza con \\b\\w+\\b, convierte a mayusculas, cuenta con Counter, filtra por minimo de ocurrencias y opcionalmente elimina stopwords en espanol. Sin pandas."
tags: [nlp, text, words, frequency, counter, stopwords, spanish, datascience]
params:
  - name: texts
    desc: Iterable de strings o None. Los None se ignoran silenciosamente.
  - name: min_ocurrencias
    desc: Numero minimo de ocurrencias para incluir una palabra. Default 1.
  - name: eliminar_stopwords
    desc: Si True, filtra un conjunto embebido de stopwords comunes en espanol.
output: "Lista de dicts {'palabra': str, 'ocurrencias': int} ordenada por ocurrencias descendente."
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
tested: true
tests:
  - "cuenta palabras repetidas"
  - "eliminar stopwords filtra del"
  - "min ocurrencias filtra"
  - "none ignorados"
  - "lista vacia"
  - "orden descendente"
test_file_path: "python/functions/datascience/tests/test_words_to_dataset.py"
file_path: "python/functions/datascience/words_to_dataset.py"
source_repo: "internal:footprint_aurgi"
source_license: "internal-aurgi"
source_file: "fuzzy_joins/arreglo_fuzzy.py"
---

## Ejemplo

```python
from words_to_dataset import words_to_dataset

texts = ["calle mayor", "calle del sol", "avenida principal"]
result = words_to_dataset(texts)
# [{"palabra": "CALLE", "ocurrencias": 2}, {"palabra": "MAYOR", "ocurrencias": 1}, ...]

result_clean = words_to_dataset(texts, eliminar_stopwords=True)
# "DEL" no aparece
```

## Notas

Stopwords embebidas (frozenset de ~40 palabras ES). Funcion pura: solo stdlib (re, collections.Counter). Tokens en mayusculas para unificar "Calle" y "CALLE".
