Está en la página 1de 7

# Detección de noticias falsas

Detección de noticias falsas en Python

En este proyecto, hemos utilizado varias técnicas de procesamiento de lenguaje natural y


algoritmos de aprendizaje automático para clasificar artículos de noticias falsas utilizando
bibliotecas sci-kit de python.

## Empezando

Estas instrucciones le proporcionarán una copia del proyecto en funcionamiento en su máquina


local para fines de desarrollo y prueba. Consulte implementación para obtener notas sobre cómo
implementar el proyecto en un sistema en vivo.

### Requisitos previos

Qué cosas necesita para instalar el software y cómo instalarlas:

1. Pitón 3.6

- Esta configuración requiere que su máquina tenga instalado Python 3.6. puede consultar esta
URL https://www.python.org/downloads/ para descargar python. Una vez que haya descargado e
instalado python, deberá configurar las variables PATH (si desea ejecutar el programa python
directamente, las instrucciones detalladas se encuentran a continuación en la sección *cómo
ejecutar el software*). Para hacer eso, marque esto: https://www.pythoncentral.io/add-python-
to-path-python-is-not-recognized-as-an-internal-or-external-command/.

- La configuración de la variable PATH es opcional, ya que también puede ejecutar el programa sin
ella y, a continuación, se brindan más instrucciones sobre este tema.

2. La segunda y más fácil opción es descargar anaconda y usar su indicador de anaconda para
ejecutar los comandos. Para instalar anaconda, consulte esta URL
https://www.anaconda.com/download/

3. También deberá descargar e instalar los siguientes 3 paquetes después de instalar python o
anaconda de los pasos anteriores

- Sklearn (scikit-aprender)

- entumecido

- espía

- si ha elegido instalar python 3.6, ejecute los siguientes comandos en el símbolo del
sistema/terminal para instalar estos paquetes

```

pip install -U scikit-learn

pip instalar numpy

pip instalar scipy


```

- si ha elegido instalar anaconda, ejecute los siguientes comandos en el indicador de anaconda


para instalar estos paquetes

```

conda install -c scikit-learn

conda install -c anaconda numpy

conda install -c anaconda scipy

```

#### Conjunto de datos utilizado

La fuente de datos utilizada para este proyecto es el conjunto de datos LIAR que contiene 3
archivos con formato .tsv para prueba, entrenamiento y validación. A continuación se muestra una
descripción de los archivos de datos utilizados para este proyecto.

MENTIROSO: UN CONJUNTO DE DATOS DE REFERENCIA PARA LA DETECCIÓN DE NOTICIAS FALSAS

William Yang Wang, "Liar, Liar Pants on Fire": un nuevo conjunto de datos de referencia para la
detección de noticias falsas, que aparecerá en las actas de la 55.ª reunión anual de la Asociación
de Lingüística Computacional (ACL 2017), artículo breve, Vancouver, BC, Canadá , 30 de julio al 4
de agosto, ACL.

el conjunto de datos original contenía 13 variables/columnas para conjuntos de entrenamiento,


prueba y validación de la siguiente manera:

* Columna 1: el ID de la declaración ([ID].json).

* Columna 2: la etiqueta. (La clase de etiqueta contiene: Verdadero, Mayormente cierto, Medio
cierto, Apenas cierto, FALSO, Pantalones de fuego)

* Columna 3: el enunciado.

* Columna 4: el(los) tema(s).

* Columna 5: el hablante.

* Columna 6: el cargo del orador.

* Columna 7: la información del estado.

* Columna 8: la afiliación partidaria.

* Columna 9-13: el recuento total del historial de crédito, incluido el estado de cuenta actual.

* 9: cuentas apenas verdaderas.

* 10: recuentos falsos.

* 11: recuentos medio verdaderos.


* 12: en su mayoría conteos verdaderos.

* 13: pantalones en cuentas de fuego.

* Columna 14: el contexto (lugar/lugar del discurso o declaración).

Para simplificar las cosas, hemos elegido solo 2 variables de este conjunto de datos original para
esta clasificación. Las otras variables se pueden agregar más tarde para agregar algo más de
complejidad y mejorar las funciones.

A continuación, se muestran las columnas utilizadas para crear 3 conjuntos de datos que se han
utilizado en este proyecto

* Columna 1: Declaración (Título de noticia o texto).

* Columna 2: Etiqueta (La clase de etiqueta contiene: Verdadero, Falso)

Verá que el conjunto de datos recién creado tiene solo 2 clases en comparación con las 6 de las
clases originales. A continuación, se muestra el método utilizado para reducir el número de clases.

* Original --Nuevo

* Verdadero --Verdadero

* Mayormente-verdadero -- Verdadero

* Cierto a medias -- Cierto

* Apenas cierto -- Falso

* Falso -- Falso

* Pantalones-fuego -- Falso

El conjunto de datos utilizado para este proyecto estaba en formato csv llamado train.csv, test.csv
y valid.csv y se puede encontrar en el repositorio. Los conjuntos de datos originales están en la
carpeta "mentiroso" en formato tsv.

### Descripciones de archivos

#### Preparación de datos.py

Este archivo contiene todas las funciones de procesamiento previo necesarias para procesar todos
los documentos y textos de entrada. Primero, leemos los archivos de datos de entrenamiento,
prueba y validación, luego realizamos un procesamiento previo como tokenización, derivación,
etc. Hay algunos análisis de datos exploratorios que se realizan como distribución de variables de
respuesta y controles de calidad de datos como valores nulos o faltantes, etc.

#### Selección de funciones.py

En este archivo, hemos realizado métodos de selección y extracción de características de las


bibliotecas de sci-kit learn python. Para la selección de funciones, hemos utilizado métodos como
simple bolsa de palabras y n-gramas y luego términos de frecuencia como ponderación tf-tdf.
también hemos utilizado word2vec y etiquetado POS para extraer las funciones, aunque el
etiquetado POS y word2vec no se han utilizado en este punto del proyecto.

#### clasificador.py

Aquí hemos creado todos los clasificadores para predecir la detección de noticias falsas. Las
características extraídas se introducen en diferentes clasificadores. Hemos utilizado clasificadores
Naive-bayes, Regresión logística, SVM lineal, Descenso de gradiente estocástico y Bosque aleatorio
de sklearn. Cada una de las características extraídas se utilizó en todos los clasificadores. Una vez
ajustado el modelo, comparamos la puntuación f1 y comprobamos la matriz de confusión.
Después de ajustar todos los clasificadores, se seleccionaron los 2 modelos con mejor desempeño
como modelos candidatos para la clasificación de noticias falsas. Realizamos el ajuste de
parámetros implementando métodos GridSearchCV en estos modelos candidatos y elegimos los
parámetros de mejor rendimiento para estos clasificadores. Finalmente se utilizó el modelo
seleccionado para la detección de noticias falsas con probabilidad de verdad. Además de esto,
también hemos extraído las 50 características principales de nuestro vectorizador tfidf de
frecuencia de términos para ver qué palabras son más importantes en cada una de las clases.
También hemos utilizado Precision-Recall y curvas de aprendizaje para ver cómo se comporta el
conjunto de pruebas y entrenamiento cuando aumentamos la cantidad de datos en nuestros
clasificadores.

#### predicción.py

Nuestro clasificador finalmente seleccionado y con el mejor rendimiento fue ```Logistic


Regression```, que luego se guardó en el disco con el nombre ```final_model.sav```. Una vez que
cierre este repositorio, este modelo se copiará en la máquina del usuario y el archivo de
predicción.py lo utilizará para clasificar las noticias falsas. Toma un artículo de noticias como
entrada del usuario, luego el modelo se usa para la salida de clasificación final que se muestra al
usuario junto con la probabilidad de verdad.

A continuación se muestra el flujo de proceso del proyecto:

<p align="centro">

<img width="600" height="750"


src="https://github.com/nishitpatel01/Fake_News_Detection/blob/master/images/
ProcessFlow.PNG">

</p>

### Actuación

A continuación se muestran las curvas de aprendizaje de nuestros modelos candidatos.

**Clasificador de regresión logística**

<p align="centro">
<img width="550" height="450"
src="https://github.com/nishitpatel01/Fake_News_Detection/blob/master/images/
LR_LCurve.PNG">

</p>

**Clasificador de bosque aleatorio**

<p align="centro">

<img width="550" height="450"


src="https://github.com/nishitpatel01/Fake_News_Detection/blob/master/images/
RF_LCurve.png">

</p>

### Próximos pasos

Como podemos ver, nuestros modelos con mejor rendimiento tenían una puntuación de f1 en el
rango de los 70. Esto se debe a la menor cantidad de datos que hemos utilizado con fines de
capacitación y la simplicidad de nuestros modelos. Para futuras implementaciones, podríamos
introducir algunos métodos de selección de características más, como etiquetado POS, word2vec y
modelado de temas. Además, también podríamos aumentar el tamaño de los datos de
entrenamiento. Ampliaremos este proyecto para implementar estas técnicas en el futuro para
aumentar la precisión y el rendimiento de nuestros modelos.

### Instalación y pasos para ejecutar el software

Una serie de ejemplos paso a paso que le indican que tiene que poner en marcha un entorno de
desarrollo

1. El primer paso sería clonar este repositorio en una carpeta en su máquina local. Para hacerlo,
debe ejecutar el siguiente comando en el símbolo del sistema o en git bash

```

$ clon de git https://github.com/nishitpatel01/Fake_News_Detection.git

```

2. Esto copiará todo el archivo de origen de datos, archivos de programa y modelo en su máquina.

3.

- Si ha elegido instalar anaconda, siga las instrucciones a continuación

- Después de que todos los archivos se guarden en una carpeta en su máquina. Si eligió instalar
anaconda a partir de los pasos dados en las secciones ```Requisitos previos```, abra el indicador
de anaconda, cambie el directorio a la carpeta donde se guarda este proyecto en su máquina,
escriba el siguiente comando y presione Intro.

```
cd C:/la ruta de la carpeta del proyecto clonado va aquí/

```

- Una vez que esté dentro del directorio, llame al archivo ```prediction.py```. Para hacer esto,
ejecute el siguiente comando en el indicador de anaconda.

```

Python predicción.py

```

- Después de presionar Intro, el programa le pedirá una entrada que será una información o un
titular de noticias que desea verificar. Una vez que pegue o escriba el titular de la noticia,
presione Intro.

- Una vez que presione Intro, el programa tomará la entrada del usuario (titular de noticias) y el
modelo lo utilizará para clasificar en una de las categorías de "Verdadero" y "Falso". Además de
clasificar el titular de la noticia, el modelo también proporcionará una probabilidad de verdad
asociada con él.

4. Si ha elegido instalar python (y no configuró la variable PATH para ello), siga las instrucciones a
continuación:

- Después de clonar el proyecto en una carpeta en su máquina. Abra el símbolo del sistema y
cambie el directorio al directorio del proyecto ejecutando el siguiente comando.

```

cd C:/la ruta de la carpeta del proyecto clonado va aquí/

```

- Ubique ```python.exe``` en su máquina. puede buscar esto en la barra de búsqueda del


explorador de ventanas.

- Una vez que localice la ruta ```python.exe```, debe escribir la ruta completa y luego la ruta
completa de la carpeta del proyecto con ```prediction.py``` al final. Por ejemplo, si ```python.exe```
está ubicado en ```c:/Python36/python.exe``` y la carpeta del proyecto está en
```c:/users/user_name/desktop/fake_news_detection/` ``, entonces su comando para ejecutar el
programa será el siguiente:

```

c:/Python36/python.exe C:/users/user_name/desktop/fake_news_detection/prediction.py

```
- Después de presionar Intro, el programa le pedirá una entrada que será una información o un
titular de noticias que desea verificar. Una vez que pegue o escriba el titular de la noticia,
presione Intro.

- Una vez que presione Intro, el programa tomará la entrada del usuario (titular de noticias) y el
modelo lo utilizará para clasificar en una de las categorías de "Verdadero" y "Falso". Además de
clasificar el titular de la noticia, el modelo también proporcionará una probabilidad de verdad
asociada con él. El modelo puede tardar unos segundos en clasificar la declaración dada, así que
espérelo.

5. Si eligió instalar python (y ya configuró la variable PATH para ```python.exe```), siga las
instrucciones:

- Abra el símbolo del sistema y cambie el directorio a la carpeta del proyecto como se mencionó
anteriormente ejecutando el siguiente comando

```

cd C:/la ruta de la carpeta del proyecto clonado va aquí/

```

- ejecutar debajo del comando

```

python.exe C:/la ruta de la carpeta del proyecto clonado va aquí/

```

- Después de presionar Intro, el programa le pedirá una entrada que será una información o un
titular de noticias que desea verificar. Una vez que pegue o escriba el titular de la noticia,
presione Intro.

- Una vez que presione Intro, el programa tomará la entrada del usuario (titular de noticias) y el
modelo lo utilizará para clasificar en una de las categorías de "Verdadero" y "Falso". Además de
clasificar el titular de la noticia, el modelo también proporcionará una probabilidad de verdad
asociada con él.

También podría gustarte