

# Cómo contar términos de habilidad en descripciones de empleo

Cuente cada descripción de empleo completa una sola vez para un término de habilidad cuando el término aparece en un contexto pertinente. Cuente ese aviso una vez para ese uso de la habilidad. Una palabra repetida dentro de un aviso no suma otro aviso. Un conteo bruto de palabras es un número distinto. Mantenga el conteo bruto de palabras separado del conteo de avisos.

Contexto pertinente significa que las palabras alrededor del término muestran que el texto trata de esa habilidad. Una letra suelta no es un contexto pertinente. Un Actor es un programa alojado de recolección de datos. Una Task es un ajuste de entrada guardado. El Actor recolecta filas de origen. Usted marca los términos de habilidad.

## 1. Defina primero el panel

Escriba las reglas del panel antes de marcar cualquier habilidad. Un panel es el grupo de avisos para un rol, un mercado y una regla de fecha. Escriba la regla de fecha en la nota del panel. Una regla de fecha es la ventana de tiempo que usted acepta.

Nombre el número que va a informar antes de codificar. Puede informar cuántos avisos tienen un uso de la habilidad. Puede informar cuántos empleadores tienen ese uso. Puede informar cuántas veces aparecen las palabras. Estos son tres números distintos. No los mezcle.

Una proporción es un conteo dividido por un número de abajo. El denominador es ese número de abajo. Lo fijará después de saber qué avisos tienen el texto completo. No codifique términos antes de nombrar la proporción.

Para un mes anterior, use las copias de las descripciones que ya guardó. El Actor no puede recolectar descripciones de 2020 ni de 2021. Una ejecución nueva solo puede iniciar un panel nuevo. No puede reconstruir un panel anterior.

## 2. Recolecte y guarde las filas de origen

Use el Actor [Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper). La compilación pública 1.2.14 toma estos campos: searchTerm, country, location, maxItems, maxPagesPerSearch, postedWithinDays, sortBy y saveOnlyUniqueItems. La [Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper) guardada se revisó el 13 de octubre de 2026. Una Task es solo una entrada de inicio. No hace este conteo por usted.

La entrada de la Task guardada es:

```json
{
  "country": "us",
  "searchTerm": "software engineer",
  "maxItems": 100,
  "postedWithinDays": "7",
  "sortBy": "date",
  "maxPagesPerSearch": 2,
  "saveOnlyUniqueItems": true
}
```

2. Recolecte y guarde las filas de origen

Esta Task fija el país en us y el término de búsqueda en software engineer. No fija una ciudad. Agregue location solo cuando su mercado sea más pequeño que el país. Reemplace el rol y el mercado cuando estudie otra cosa. Mantenga un rol y un mercado en la ejecución.

El tope es el límite maxItems. Esta Task fija el tope en 100 filas y lee hasta 2 páginas de búsqueda. Ese tope amplio no es el primer control del texto. Para el primer control, mantenga un rol y un mercado. Fije maxItems en 2. Fije maxPagesPerSearch en 1. Una entrada del primer control es:

```json
{
  "country": "us",
  "searchTerm": "software engineer",
  "maxItems": 2,
  "postedWithinDays": "7",
  "sortBy": "date",
  "maxPagesPerSearch": 1,
  "saveOnlyUniqueItems": true
}
```

2. Recolecte y guarde las filas de origen

Una ejecución con tope en esta compilación devolvió dos filas. Cada fila tenía un ID de empleo de origen y una URL de origen. Cada fila tenía el texto completo de la descripción. La ejecución llegó a maxItems. Copie los ID y las URL de su propia salida. No escriba ID nuevos. Esta ejecución muestra que la recolección de texto funciona. No es un resultado de habilidades. No es el panel ficticio de más abajo.

La Task guardada fija saveOnlyUniqueItems en true. Ese ajuste puede reducir repeticiones cuando el Actor recolecta filas. No termina una revisión de duplicados. Una republicación es la misma vacante publicada otra vez. Antes de codificar, quite las filas duplicadas ya revisadas y las filas de republicación ya revisadas. Use la [guía de duplicados y republicaciones](https://chronometrica.com/es/articles/avisos-duplicados-y-posibles-republicaciones/) para esa revisión. Conserve en sus notas el conteo de lo que quitó.

Cada fila de origen es un registro recolectado. Un aviso es una fila que usted conserva para el conteo. Guarde jobId como texto. No deje que una hoja de cálculo convierta jobId en un número.

Use estos campos de salida. Un contador de la ejecución es un número para toda la ejecución. No es una fila de aviso.

| Nombre de salida | Tipo | Cómo usarlo |
| --- | --- | --- |
| jobId | Campo de fila | Guárdelo como texto. |
| title | Campo de fila | Consérvelo. No trate el título como el requisito completo. |
| companyName | Campo de fila | Consérvelo para el conteo de empleadores. |
| locationRaw | Campo de fila | Conserve el texto de ubicación de origen. |
| descriptionText | Campo de fila | Codifique las habilidades a partir de este texto. |
| descriptionStatus | Campo de fila | Use solo full o missing. |
| jobUrl | Campo de fila | Conserve la URL de origen. |
| query | Campo de fila | Conserve el texto de búsqueda de la fila. |
| searchLocation | Campo de fila | Conserve la ubicación de búsqueda de la fila. |
| scrapedAt | Campo de fila | Este es el momento de la recolección. |
| seniority | Campo de fila opcional | Puede faltar. No es el requisito completo. |
| employmentType | Campo de fila opcional | Puede faltar. |
| salaryRaw | Campo de fila opcional | Puede faltar. Que falte no es un salario de cero. |
| postedAt | Campo de fila opcional | Puede faltar. No invente un mes de publicación. |
| postedAtRaw | Campo de fila opcional | Puede faltar. |
| rowsExcludedByCompany | Contador de la ejecución | Conserve este conteo por separado. |
| rowsExcludedByDate | Contador de la ejecución | Conserve este conteo por separado. |
| rowsExcludedBySalary | Contador de la ejecución | Conserve este conteo por separado. |

descriptionStatus es full cuando descriptionText está presente. Es missing cuando el texto no está. No agregue un estado de fragmento. El texto completo aquí es el texto que dio el origen. No es una promesa del documento entero del empleador.

scrapedAt es el momento en que el Actor recolectó la fila. No es el mes en que el empleador publicó el empleo. Si postedAt falta, deje desconocido el mes de publicación.

rowsExcludedByCompany es el conteo de la ejecución de filas dejadas afuera por un motivo de empresa. rowsExcludedByDate es el conteo de la ejecución de filas dejadas afuera por un motivo de fecha. rowsExcludedBySalary es el conteo de la ejecución de filas dejadas afuera por un motivo de salario. No sume estos tres conteos en un total. No convierta los contadores en filas de aviso. Este control da cada conteo. Ninguno de los tres está omitido. rowsExcludedByCompany es 0. rowsExcludedByDate es 0. rowsExcludedBySalary es 0. No escriba cero para un contador omitido. Estos tres contadores están presentes, así que cada cero es el conteo. El mapa de la ejecución lista cada campo y su valor. Un campo que este control no da es desconocido. Un campo futuro que está ausente es desconocido. El control actual de Indeed, con tope de dos filas, tiene estos valores de salida: requestedMaxItems: 2, candidateItemsSeen: 100, jobsSaved: 2, pagesParsed: 1, blockedPages: 0, failedRequests: 0, stopReason: "max_items_reached", rowsExcludedByCompany: 0, rowsExcludedByDate: 0, rowsExcludedBySalary: 0. Esta ejecución no es desconocida. Los campos futuros ausentes siguen desconocidos.

Guarde la entrada que se ejecutó, las filas en bruto y la salida. Escriba el maxItems que fijó y la cantidad de filas devueltas. Si los dos números son iguales, la ejecución llegó al tope. Una ejecución en el tope no es todos los empleos que coinciden. Si la ejecución no devuelve filas, escriba que la ejecución estuvo vacía. Una ejecución vacía no prueba que no existan empleos. Si la ejecución falla, guarde la nota de la falla. No llene una ejecución fallida con ceros de habilidad.

Mantenga fuera del conjunto codificado una fila con descriptionText ausente. Sume 1 al conteo de huecos por cada fila así. Un hueco no es un aviso en el que la habilidad está ausente.

El Actor da filas públicas actuales. No da texto de descripción antiguo. No da los momentos de edición del empleador. No da el estado de las personas postulantes. No da un plan de aprendizaje. No etiqueta términos de habilidad. Usted los etiqueta con las reglas de abajo.

## 3. Escriba la lista de habilidades antes de buscar coincidencias

Escriba una lista de habilidades antes de buscar en el texto. La clave de habilidad es el único nombre que guarda para una habilidad. Un alias es otra forma de escribir esa misma habilidad. Un token es una palabra completa o un símbolo independiente. No es un fragmento de una palabra más larga. Una exclusión es una coincidencia que usted rechaza.

Ignore la distinción entre mayúsculas y minúsculas cuando haga coincidir SQL, Structured Query Language y las otras claves de abajo. Deje que SQL y Structured Query Language compartan una clave cuando las palabras significan ese lenguaje. Mantenga Java separado de JavaScript. Haga coincidir R solo como un token completo de habilidad en un texto pertinente. No haga coincidir la letra R dentro de otra palabra.

Una etiqueta de versión, como la versión de un lenguaje, necesita una regla escrita. Un nombre de producto necesita una regla escrita. Decida la regla antes de codificar. No adivine mientras lee.

Esta lista de habilidades es para el panel ficticio de este artículo. No es una lista provista por el Actor. Su propio panel necesita sus propias claves.

| Clave de habilidad | Alias permitidos | Regla de token | Exclusiones |
| --- | --- | --- | --- |
| SQL | SQL; Structured Query Language | Los dos alias comparten esta clave cuando el texto se refiere al lenguaje. | No use esta clave para una frase distinta. |
| Python | Python | Acepte la coincidencia solo si es la palabra completa. | No codifique como obligatoria una frase que dice que la habilidad no es obligatoria. |
| R | R | Acepte la coincidencia solo si es un token completo en un texto de habilidad pertinente. | No acepte la letra cuando está dentro de una palabra. |
| Java | Java | Acepte la coincidencia solo si es la palabra completa. | No acepte JavaScript como coincidencia. |
| JavaScript | JavaScript | Acepte la coincidencia solo si es la palabra completa. | No cuente Java como JavaScript. |

Esta lista no tiene regla de versión ni regla de nombre de producto. Los textos ficticios no tienen versión ni nombre de producto. Si su texto tiene alguna de las dos, agregue primero la regla a la lista.

## 4. Codifique cada pasaje

Encuentre el pasaje que contiene el nombre de la habilidad. Después lea las palabras que lo rodean. Una clase es el tipo de mención. Use estas clases:

- Obligatoria significa que el texto dice que la persona postulante debe tener la habilidad.
- Preferida significa que el texto pide la habilidad, pero no dice que la persona postulante deba tenerla.
- Contexto significa que el texto dice que el trabajo usa la habilidad, pero no la exige a la persona postulante.
- Explícitamente no obligatoria significa que el texto dice que la persona postulante no necesita la habilidad.
- No clara significa que usted no puede distinguir la clase a partir de las palabras.

Una mención léxica significa que el nombre de la habilidad aparece en el texto. Conserve la mención léxica aun cuando la clase no sea obligatoria. No descarte la oración.

El panel ficticio de más adelante contiene las palabras "no Python experience required". Esas palabras son una mención léxica de Python. La clase es explícitamente no obligatoria. La clase no es obligatoria.

El mismo panel contiene las palabras "we use R for reports". Esas palabras son una mención léxica de R. La clase es contexto. No marque R como obligatoria salvo que el texto también diga que la persona postulante debe tener R.

La letra r dentro de "reports" no es la habilidad R. La letra r dentro de "required" no es la habilidad R.

Si un aviso tiene dos clases para una habilidad, marque cada clase. Si la misma clase se repite en un aviso, marque esa clase una sola vez.

## 5. Arme la matriz de avisos

Una matriz de término por aviso es una tabla con una fila por cada aviso codificado. Cada clase de habilidad tiene su propia columna. Ponga 1 cuando el texto completo tiene esa clase. Ponga 0 cuando leyó el texto completo y esa clase está ausente. Un 0 significa que usted leyó el texto. No significa que el texto faltaba.

Las menciones repetidas de una clave en un aviso siguen formando una sola marca de aviso en esa clase. La presencia en el aviso es ese 1. Conserve un conteo bruto de apariciones en una tabla aparte cuando lo necesite. Una aparición bruta es una aparición de la clave. No sume las apariciones brutas en la columna del aviso.

Un aviso puede tener 1 en preferida y 0 en obligatoria. Un aviso puede tener 1 en explícitamente no obligatoria y 0 en obligatoria. Un aviso puede tener 1 en contexto y 0 en obligatoria. No fusione esas columnas.

No ponga una descripción ausente en la matriz como una fila de ceros. Consérvela en el conteo de huecos.

## 6. Fije el denominador

El denominador es la cantidad de avisos distintos con texto completo en el mismo panel. Distinto significa que cuenta el mismo aviso una sola vez. Cuente solo los avisos que quedan después de la revisión de duplicados. Cuente solo los avisos con descriptionStatus full.

La proporción de avisos es igual al conteo de la clase dividido por el denominador. Escriba la proporción como un conteo sobre el denominador. Informe el conteo de huecos al lado. Informe el conteo de ID inciertos al lado. Un ID incierto está en blanco, cambió o está en conflicto con otra fila. Mantenga un ID incierto fuera del denominador.

Informe también la incertidumbre de codificación. La incertidumbre de codificación significa que quienes revisan no coinciden en la clase. Mantenga un aviso en disputa fuera del conteo de obligatoria hasta que el registro indique la clase acordada. No convierta una disputa en un cero tácito.

La amplitud de empleadores es la cantidad de empleadores distintos con esa clase. Divida ese conteo de empleadores por la cantidad de empleadores distintos del denominador. Un empleador puede escribir muchos avisos. Una proporción alta de avisos puede ir junto con una proporción baja de empleadores. Informe las dos proporciones.

Estas proporciones describen solo su panel. No son la demanda nacional de habilidades. No son una medida de lo que pueden hacer las personas postulantes.

## 7. Compare paneles con las mismas reglas

Compare dos meses solo cuando las reglas del panel coinciden. Mantenga el mismo rol, mercado, consulta, ventana de fechas, tope y versión de la lista de habilidades. Una versión de la lista de habilidades es el nombre que usted da a una lista de habilidades guardada.

Si cambia un alias o una regla de clase, la proporción puede cambiar mientras el texto del empleo sigue igual. Ese cambio es un cambio de codificación. Infórmelo antes de leer la proporción nueva.

Si cambian el tope, la consulta, el mercado o la ventana de fechas, la muestra cambió. El texto de origen ausente también es un cambio de cobertura. Informe el cambio de muestra antes de leer el cambio de la proporción. No trate un cambio de codificación como un cambio de muestra.

Una muestra de búsqueda no muestra la causa de un cambio. No muestra que todo el mercado haya crecido. Un cambio en la proporción de una habilidad no es un cambio en la cantidad de avisos. Para los conteos de avisos a lo largo del tiempo, use la [guía de tendencias de contratación](https://chronometrica.com/es/articles/como-medir-tendencias-de-contratacion/).

## 8. Guarde el registro

Guarde la lista de habilidades y el nombre de su versión. Guarde cada pasaje que codificó, con el ID del aviso, la clave de habilidad y la clase. Guarde la matriz. Guarde el registro del denominador.

El registro del denominador debe incluir:

- El rol, el mercado, la consulta, la ventana de fechas y el tope.
- La entrada que se ejecutó y la compilación del Actor.
- La cantidad de filas devueltas y si la ejecución llegó a maxItems.
- Cualquier nota de falla.
- rowsExcludedByCompany, rowsExcludedByDate y rowsExcludedBySalary, o desconocido para cada contador omitido.
- Las filas duplicadas que quitó.
- El conteo de huecos.
- El conteo de ID inciertos.
- El conteo de incertidumbre de codificación.
- El denominador.
- El conteo de empleadores en ese denominador.

Una segunda persona debería poder partir del pasaje guardado y llegar a la misma celda de la matriz. Si no puede, el registro no está completo.

Deténgase en el conteo de términos. Una tarea repetida puede orientar una [decisión de aprendizaje](/es/articles/plan-de-habilidades-desde-descripciones-de-empleo/) posterior. Esa decisión no es este conteo. Este conteo tampoco es un puntaje de preparación personal.

## Cuente un panel ficticio

Las cinco descripciones de esta sección son ficción. No son resultados del Actor. No son un hallazgo real de habilidades. J1 a J5 son etiquetas. No son ID reales de origen. La lista de habilidades de arriba es la regla para este panel.

| Etiqueta | Empleador | descriptionText | descriptionStatus |
| --- | --- | --- | --- |
| J1 | A | SQL required. SQL reports run daily. Python preferred. | full |
| J2 | A | Structured Query Language required; no Python experience required. | full |
| J3 | B | JavaScript required; we use R for reports. | full |
| J4 | C | Java required; R preferred. | full |
| J5 | D | `""` | missing |

Estas etiquetas no tienen valores de scrapedAt ni valores de postedAt. No les asigne un mes de publicación.

J1 y J2 usan el empleador A. Sus textos difieren. Esta ficción conserva los dos avisos. No llama a J2 una republicación de J1. Si una revisión real quitara J2 como republicación, el denominador cambiaría. Esta ficción no hace esa determinación.

J5 tiene una etiqueta conocida y no tiene texto completo. J5 queda fuera de la matriz. El conteo de huecos es 1. El conteo de ID inciertos es 0 porque la etiqueta es conocida y el texto es el hueco. No invente texto para J5.

El registro de pasajes es:

| Aviso | Pasaje | Clave de habilidad | Clase |
| --- | --- | --- | --- |
| J1 | SQL required. | SQL | obligatoria |
| J1 | SQL reports run daily. | SQL | contexto |
| J1 | Python preferred. | Python | preferida |
| J2 | Structured Query Language required | SQL | obligatoria |
| J2 | no Python experience required | Python | explícitamente no obligatoria |
| J3 | JavaScript required | JavaScript | obligatoria |
| J3 | we use R for reports | R | contexto |
| J4 | Java required | Java | obligatoria |
| J4 | R preferred | R | preferida |
| J5 | Sin texto completo | ninguna | No codificada |

Una ocurrencia es una vez que aparece el texto de la habilidad. La presencia es una marca de aviso para una clase. Marque cada clase una sola vez para un aviso. Una segunda oración con la misma clave y la misma clase suma una ocurrencia bruta. No suma una segunda presencia. Una segunda oración con la misma clave y una clase distinta obtiene su propia presencia. No descarte esa clase porque la clave también tiene texto de obligatoria.

La primera oración de SQL en J1 es obligatoria. Es una ocurrencia de obligatoria. La presencia de obligatoria para J1 es 1. La oración "SQL reports run daily." es contexto. Es una ocurrencia de contexto. La presencia de contexto para J1 es 1. J2 cuenta como SQL porque Structured Query Language es un alias permitido. Las palabras significan el lenguaje, y la oración dice que es obligatorio. Ese alias es una ocurrencia de obligatoria. La presencia de obligatoria para J2 es 1.

La matriz usa 1 y 0 solo para los cuatro textos completos. J5 no es una fila aquí.

| Aviso | Empleador | SQL obligatoria | SQL contexto | Python obligatoria | Python preferida | Python explícitamente no obligatoria | R obligatoria | R contexto | R preferida | Java obligatoria | JavaScript obligatoria |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| J1 | A | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| J2 | A | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| J3 | B | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| J4 | C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| Conteo de avisos | `""` | 2 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |

Cada 0 en J1 a J4 significa que el texto completo se leyó y que esa clase estaba ausente. Ningún pasaje codificado es no claro, así que no clara es 0 de 4. Ese cero sigue a una lectura. No es el hueco de J5. Ninguna clase está en disputa, así que el conteo de incertidumbre de codificación es 0.

Los conteos brutos quedan en una tabla aparte.

| Aviso | Clave de habilidad | Clase | Ocurrencias brutas |
| --- | --- | --- | --- |
| J1 | SQL | obligatoria | 1 |
| J1 | SQL | contexto | 1 |
| J2 | SQL | obligatoria | 1 |
| J2 | SQL | contexto | 0 |
| J1 | Python | preferida | 1 |
| J2 | Python | explícitamente no obligatoria | 1 |
| J2 | Python | obligatoria | 0 |
| J3 | R | contexto | 1 |
| J4 | R | preferida | 1 |
| J3 | R | obligatoria | 0 |
| J4 | R | obligatoria | 0 |
| J3 | Java | obligatoria | 0 |
| J4 | Java | obligatoria | 1 |
| J3 | JavaScript | obligatoria | 1 |
| J4 | JavaScript | obligatoria | 0 |

Cuatro avisos válidos con texto completo forman el denominador. Los avisos son J1, J2, J3 y J4. Los empleadores del denominador son A, B y C. Ese total de empleadores es 3. El empleador D queda afuera porque J5 no tiene texto completo.

J1 tiene 2 ocurrencias brutas de SQL. La clase obligatoria tiene 1. La clase contexto tiene 1. J2 tiene 1 ocurrencia bruta de SQL, y esa clase es obligatoria. El conteo bruto de SQL obligatoria es 1 más 1, que es igual a 2. El conteo bruto de SQL contexto es 1. 2 más 1 es igual a 3 ocurrencias brutas de SQL. El conteo léxico total de SQL sigue en 3. El total bruto de obligatoria es 2. El conteo de avisos de obligatoria también es 2. El mismo número no convierte las dos medidas en una sola medida. La ocurrencia de contexto queda fuera del total bruto de obligatoria. El conteo de avisos de SQL obligatoria es 2. La proporción de SQL obligatoria es igual a 2 dividido por 4. No es igual a 3 dividido por 4. No es igual a 2 dividido por 5. La mención bruta de más es contexto. No es un aviso de más. J5 no entra en el número de abajo.

El conteo de avisos de SQL contexto es 1. La proporción de SQL contexto es igual a 1 dividido por 4. No sume el 1 aviso de contexto a los 2 avisos de obligatoria. J1 contaría dos veces. Las clases siguen separadas.

Los dos avisos de SQL obligatoria pertenecen al empleador A. La proporción de empleadores de SQL obligatoria es igual a 1 dividido por 3. El único aviso de SQL contexto pertenece al empleador A. La proporción de empleadores de SQL contexto es igual a 1 dividido por 3. El empleador A también escribió 2 de los 4 avisos. Informe esa amplitud junto a la proporción de avisos. En esta ficción, un empleador puede mover la proporción de SQL.

El texto de Python aparece en J1 y J2. Son dos menciones léxicas, y las dos quedan en el registro. Python preferida es igual a 1 dividido por 4. Python explícitamente no obligatoria es igual a 1 dividido por 4. Python obligatoria es igual a 0 dividido por 4. No sume la mención de preferida a la mención de no obligatoria y llame obligatoria a la suma. La frase de no obligatoria sigue siendo una mención léxica.

El texto de R aparece en J3 y J4. R contexto es igual a 1 dividido por 4. R preferida es igual a 1 dividido por 4. R obligatoria es igual a 0 dividido por 4. La presencia léxica de R es igual a 2 dividido por 4. No informe esos dos avisos como obligatoria.

Java obligatoria es solo J4. Esa proporción es igual a 1 dividido por 4. JavaScript obligatoria es solo J3. Esa proporción es igual a 1 dividido por 4. El conteo de Java en J3 es 0 porque JavaScript es una clave distinta.

Las proporciones informadas son:

| Clase | Avisos | Proporción de avisos | Empleadores | Proporción de empleadores |
| --- | --- | --- | --- | --- |
| SQL obligatoria | J1, J2 | 2 de 4 | A | 1 de 3 |
| SQL contexto | J1 | 1 de 4 | A | 1 de 3 |
| Python obligatoria | ninguno | 0 de 4 | ninguno | 0 de 3 |
| Python preferida | J1 | 1 de 4 | A | 1 de 3 |
| Python explícitamente no obligatoria | J2 | 1 de 4 | A | 1 de 3 |
| R obligatoria | ninguno | 0 de 4 | ninguno | 0 de 3 |
| R contexto | J3 | 1 de 4 | B | 1 de 3 |
| R preferida | J4 | 1 de 4 | C | 1 de 3 |
| Java obligatoria | J4 | 1 de 4 | C | 1 de 3 |
| JavaScript obligatoria | J3 | 1 de 4 | B | 1 de 3 |

Un contador de palabras es una herramienta que encuentra una secuencia de letras y suma uno. Dos resultados de un contador de palabras no cumplen esta regla ficticia. Úselos como pruebas de la regla. No son un puntaje de un producto de software.

Un contador de palabras marca Java cuando ve JavaScript. Marcaría J3 como Java. Esa marca no cumple la regla de token. Java sigue en 1 de 4, solo desde J4.

Un contador de palabras trata "no Python experience required" como demanda de Python o como Python obligatoria. Esa marca no cumple la regla de clase. Python obligatoria sigue en 0 de 4. La oración de J2 sigue como explícitamente no obligatoria.

Una búsqueda de las letras SQL tampoco encuentra J2. La regla de alias igual marca J2. El conteo de SQL obligatoria sigue en 2 de 4.

## Siguiente acción

Codifique una descripción completa con sus reglas de alias y sus reglas para explícitamente no obligatoria. Revise el denominador antes de informar una frecuencia. Recolecte filas actuales con el Actor [Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper) y esta [Task](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper) guardada.

## Fuentes y lecturas adicionales

- [Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper)
- [Task de Indeed Jobs Scraper](https://apify.com/chronometrica/indeed-jobs-scraper/examples/indeed-jobs-scraper)
- [Correspondencia de duplicados y republicaciones](https://chronometrica.com/es/articles/avisos-duplicados-y-posibles-republicaciones/)
- [Tendencias del conteo de avisos](https://chronometrica.com/es/articles/como-medir-tendencias-de-contratacion/)
- [Pregunta pública sobre avisos de Indeed recolectados](https://www.reddit.com/r/webscraping/comments/p3110c/what_type_of_analysis_to_do_on_indeed_scraped_data/)