Skip to content

Web page classifier that uses the Bayes algorithm to accurately and efficiently analyze and categorize web pages.

Notifications You must be signed in to change notification settings

jonathan20dev/Web_Clasifier-Using-Bayes

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Web Scraping - JavaScript

react native chat


=========== 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


Frontend

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'.


Backend

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.

Bayes

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

Screenshots de la app

Gráficos Top 5 páginas
Botón["Mostrar más detalles"] Endpoint
Inicio Backend Fin Backend

Instalación

Clonar el repositorio

git clone https://github.com/kimberly-vargas/web_clasifier.git

Correr Backend

src [web_clasifier\backend]> npm i

src [web_clasifier\backend]> node index

Correr Frontend

<src [web_clasifier\frontend]> npm i

<src [web_clasifier\frontend]> npm start

Autores 👍✨

Kimberly Jonathan Johan
Kimberly Vargas Jonathan Mendoza Johan Zamora

About

Web page classifier that uses the Bayes algorithm to accurately and efficiently analyze and categorize web pages.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 91.1%
  • HTML 7.3%
  • CSS 1.6%