=========== Descripcion del proyecto ===========
Aplicación creada para el curso de Sistemas Operativos - TEC
Esta aplicación es un clasificador de páginas web basado en el teorema de Bayes
Kimberly Vargas, Jonathan Mendoza y Johan Zamora
Descripción Frontend
Se consume el Endpoints: localhost:3001/urls
Se almacena en variables de estados [React.useState]
Se usa el método filter para dividir los resultados según las categorías:
['Bloqueo', "Vestimenta", "Tecnología", "Sin Categoría"]
Los resultados se muestran con gráficas
- PieChart: Gráfica en forma de Pie.
- BarChart: Gráfica de barra.
Extra:
- Se implementa un estado para
saber cuando el usuario quiere
ver más páginas [Mostrar más] o
Si solo quiere ver el 'Top 5'.
WEB SCRAPING
Se utilizó puppeteer, esta es una librería de node que
utiliza Chrome Devtools Protocol (CDP), esta es una API
que permite gestionar instancias de los navegadores
Chrome mediante connecciones con sockets
- Se toma una url
- Se abre una instancia de un browser
- Se abre una instancia de una página en ese browser
- Se dirige la página hacia la url
- Se espera por los selectores
- Se obtienen los elementos de html de esos selectores
- Se extrae el contenido de texto en esos elementos
MULTICORE
Se utilizaron los worker threads, esta es una característica
de Node, que permite correr código de javascript en paralelo
usando hilos, haciéndolo más rápido y eficiente.
¿Cómo se aplicó?
- Se dividen de forma equitativa las urls entre la cantidad
de CPUs -1 (-1 porque el 1 está reservado para el hilo
principal de javascript)
- Primer nivel de concurrencia: se envía un mensaje a un
worker para que cree un hilo por cada chunk y este los
ejecuta de forma paralela
- Segundo nivel de concurrencia: en cada hilo se divide el
chunk asignado en tres partes y manda un mensaje a un
segundo worker para que cree un sub-hilo por cada sub-chunk
y ejecute en hilos aparte el scraping de la web.
El teorema de Bayes expresa la probabilidad de que ocurra un suceso A, teniendo en cuenta la información de otro
suceso ocurrido B. Este es súper útil para realizar clasificaciones con mayor índice de confianza
puesto que nos da una probabilidad condicionada.
¿Cómo se aplicó?
Este bayes se aplica para 2 categorías:
Tecnología: 302 palabras
Ropa: 182
- Se obtienen todas las palabras de la categoria 1 y 2
- Se calcula la probabilidad previa para cada categoria: cantidad de palabras en una categoria / total de palabras de esa categoria
- Se calcula la cantidad de incidencias por categoria: recorre toda la lista de palabras encontradas en una url y se obtienen
la cantidad de incidencias para cada categoria
- Se calcula la probabilidad de las incidencias: cantidad de incidencias en una categoria / total de palabras de esa categoria
- Se calcula la probabilidad total por categoria: probabilidad previa de una categoria * probalidad de incidencias de esa categoria
Para dar un resultado se comparan ambas categorias y se escoge la que tenga una probabilidad mayor
Gráficos | Top 5 páginas |
---|---|
Botón["Mostrar más detalles"] | Endpoint |
---|---|
Inicio Backend | Fin Backend |
---|---|
git clone https://github.com/kimberly-vargas/web_clasifier.git
src [web_clasifier\backend]> npm i
src [web_clasifier\backend]> node index
<src [web_clasifier\frontend]> npm i
<src [web_clasifier\frontend]> npm start
Kimberly Vargas | Jonathan Mendoza | Johan Zamora |