• No se han encontrado resultados

Práctica profesional Ingeniería de ejecución en computación e informática. Realizada en: Universidad de Concepción

N/A
N/A
Protected

Academic year: 2021

Share "Práctica profesional Ingeniería de ejecución en computación e informática. Realizada en: Universidad de Concepción"

Copied!
22
0
0

Texto completo

(1)

Práctica profesional Ingeniería de

ejecución en computación e informática.

“Realizada en: Universidad de

Concepción”

Integrantes: Diego Andrés Herrera

Herrera. Pablo Andrés Lastra Cid.

Supervisor: Dr. Pedro Salcedo Lagos.

Jefa de carrera: Sra. Damaris Poblete.

(2)

Sumario

El objetivo principal de este informe, será mostrar un corrector ortográfico realizado en lenguaje Python para ser usado en el proyecto fondecyt. Ayudar con la corrección de las palabras ingresadas para el posterior aprendizaje de dichos alumnos que ingresan estas palabras.

Sincronizar el código con la página en uso para que se puedan ver los resultados de los test`s aplicados al corrector ortográfico.

Permitir la instalación de Python en el servidor de la página asociada al proyecto: Lexmath, para así emplear adecuadamente el corrector. Los métodos utilizados para realizar esta tarea serán: Lenguaje Python para la programación, XAMPP (para poder trabajar a nivel de página web con la base de datos “PhpMyAdmin”).

Explicar paso a paso el algoritmo de “Levenshtein”, el cual es la base para el código de corrección ortográfico. Explicar línea por línea nuestro código solución, el cual logrará llevar a cabo la

(3)

Introducción General.

En este informe de práctica, se detallará y mostrará todo lo planteado y realizado lo cual sirvió como aporte para el proyecto Fondecyt. Este proyecto está siendo realizado por la facultad de educación de la universidad de Concepción, y explicando a cabalidad, este proyecto trata principalmente de extraer estadísticas sobre el conocimiento de todo el ámbito matemático que poseen distintos alumnos de colegios de enseñanza básica y media a lo largo de Concepción, Esta medición se realiza mediante el siguiente método: El alumno ingresará al sistema, y en una determinada cantidad de tiempo, ingresará todas las palabras que sepa o recuerde dentro de un área matemática específica, por ejemplo, Algebra. Así el alumno ingresará palabras como: Binomio, suma por su diferencia, etc. Posteriormente, esta información obtenida será almacenada y posteriormente estudiada por varias herramientas, como por ejemplo: Bases de datos para almacenar los datos, valga la redundancia, grafos para la visualización de estos datos, y lo que será la base de este informe, un corrector ortográfico realizado en

lenguaje Python.

Este corrector ortográfico realizado, permitirá, como su nombre lo indica, corregir las palabras ingresadas por el alumno del tipo matemático mencionado anteriormente, ya sea un error por digitación muy rápida, o que la palabra tenga alguna falta ortográfica. A continuación, se explicará, primero que todo, una pequeña reseña de cómo funciona el lenguaje Python y como se logró implementar este corrector ortográfico.

(4)

Lenguaje de programación: Python

Como mencionamos anteriormente, la base de este informe de práctica será explicar un poco acerca del lenguaje Python, y acerca del corrector ortográfico realizado en dicho lenguaje. Python es un lenguaje de programación de alto nivel, muy simple sintácticamente hablando, lo cual permite una lectura de código más amena. Además es un lenguaje interpretado y es “Open Source” o de Software libre, lo cual lo hace ser utilizable para todo público. Según opiniones populares, Python es un lenguaje muy parecido a el lenguaje “C”, ya sea en sus tipos de estructuras para generar los códigos, como a los ciclos iterativos propios de ambos lenguajes, y a funciones típicas que posee “C”, que las mencionaremos (y que son utilizadas dentro de nuestro Código en Python) más adelante.

¿Por qué trabajar con Python para realizar este corrector ortográfico?

Se escogió el lenguaje Python ya que los encargados del proyecto de nuestra facultad pensaron que era el lenguaje más apropiado para generar estos trabajos. Posteriormente se va comprobando que están en lo correcto, ya que es un lenguaje simple sintácticamente, que va directo al grano y a fin de cuentas, el código fue absolutamente un éxito.

(5)

Composición

del

código

base.

Como mencionamos anteriormente, nuestra solución para la tarea que nos encomendaron, será crear un código tipo “corrector” ortográfico, desarrollado en lenguaje Python, para ser aplicado en las palabras que se ingresarán a la página del proyecto Fondecyt. De esta manera, como hincapié para comenzar y tomando alguna referencia, nos realizamos la siguiente interrogante: ¿Cómo Google puede corregir su buscador si una palabra está escrita de forma incorrecta? Claramente todos sabemos que es lo que pasa cuando ingresamos una palabra incorrecta en el famoso buscador, este nos dirá: ¿Quizás quería decir: (la palabra correcta)? , de esta manera, es un tema muy entretenido para poder averiguar como Google lo hace, y de esta forma, tomar una idea para poder implementar este corrector en lenguaje Python. De esta forma, y buscando en internet soluciones, hemos encontrado un “Script” en lenguaje Python que será nuestra base para realizar la tarea solicitada. El script es el siguiente:

(6)

¿Cómo explicamos este Script?: Primero que todo, cabe destacar que el Script

está lleno de “funciones” en Python, las funciones en Python las definimos con el patrón “Def” (como se observa en el Script). Veamos una función sencilla:

Def Cuadrado(x): c = x*x

return(c)

Esta sencilla función en python, sirve para calcular el cuadrado de numero ingresado por el usuario para posteriormente imprimirlo en pantalla. Con el patrón “Def” definimos que se va a colocar una función, posteriormente el nombre de esta y dentro del paréntesis, el parámetro o variable que se va a utilizar. En la parte de abajo (segunda línea del código), se define el cuerpo de la función con la operación que realiza esta función, en este caso, multiplicar por sí mismo el valor

(7)

de “x” ingresado por el usuario y almacenarlo en la variable “c”. En la tercera y última línea, se retorna el valor de “c” que contiene el número ingresado al cuadrado y es mostrado por pantalla, por el comando “return” De esta forma se trabajan las funciones en Python, y mencionamos esto porque en al Script de corrección ortográfica, se utilizan muchas funciones que se explicaran a cabalidad a continuación:

(8)

Funciones que posee nuestro Script por líneas.

- Al comienzo, y como primera función: “Def Words”, nos indica que el código trabajará en base a palabras, las cuales, obviamente, pueden tener las letras referidas en el alfabeto clásico (desde la A a la Z, como lo explica el código) las cuales serán definidas posteriormente. - Como segunda función, tenemos: “Def Train”. En esta función, y como su nombre en inglés lo indica, “Train” en este tipo de contexto significa “Importar”. Lo que hace es importar o tomar todas las palabras como referencia desde el diccionario seleccionado, ya que, este corrector ortográfico debe tener una “base de palabras” por así llamarla, el cual le permita guiarse para realizar la correspondiente corrección. Este diccionario puede ser en “TxT” o en Word. - En la tercera parte, tenemos el pequeño comando: NWORDS. Este comando, luego de que la función “Train” importe las palabras, este comando las lee desde el archivo de texto para ser corregidas. - En la parte siguiente a NWORDS, sale otro pequeño comando llamado: “Alphabet”. En este comando sólo se almacenan en un String todas las letras del alfabeto, para que el corrector las tome como referencia junto con las palabras del diccionario.

- Como tercera función, y siguiente al comando “Alphabet”, tenemos: “Def Edit1” Esta función es la más importante del Script, ya que esta es la que hace la corrección de las palabras seleccionadas. Esta corrección es realizada mediante el “Algoritmo de Levenshtein”, el cual explicaremos al terminar esta sección y en profundidad ya que es muy importante y cumple un rol fundamental. - Las 2 siguientes funciones, “Known_edits2” y “Known”. La primera sirve para editar alguna palabra del diccionario que quiera ser modificada. La segunda

(9)

simplemente verifica que la palabras esté dentro del diccionario. - La última función, “Def Correct”, como se puede deducir, es la que muestra la palabra corregida, previamente realizada con la función: “Def Edit1” Como mencionamos anteriormente, este Script será nuestra base para la corrección de las palabras que se ingresen al sistema. Ahora que está 99% explicado cómo funciona, solo falta el 1% restante, que es el algoritmo de Levenshtein. Veamos cómo funciona.

(10)

Algoritmo

de

distancia

de

Levenshtein

Vladímir Iósifovich Levenshtéin, es un matemático y científico Ruso, cuyas principales áreas de investigación fueron “la teoría de la información” y “códigos de

detección de errores”

Este último tema es el que nos importa a nosotros, ya que está dentro del área en la cual estamos trabajando. Este científico Ruso, creo un algoritmo de distancia que lleva su nombre: “Algoritmo de distancia de Levenshtein”. Este algoritmo consiste en el número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. Estas operaciones mencionadas que pueden ser utilizadas consisten en 3: inserción, eliminación o sustitución de un carácter. Cabe destacar que la respuesta a alguna transformación con este algoritmo es un valor numérico, ya veremos por qué. Este algoritmo es el núcleo de lo que queremos realizar: El corrector ortográfico. Veamos cómo funciona el algoritmo con la transformación de un carácter en otro: Si queremos determinar la distancia entra las palabras “Casa” y “Calle”, utilizamos algunas de las 3 operaciones que posee el algoritmo, en este caso:

* casa cala (sustitución de 's' por 'l')

* cala calla (inserción de 'l' entre 'l' y 'a')

* calla calle (sustitución de 'a' por 'e')

Según las operaciones, la distancia de Lavenshtein entre “Casa” y “Calle” es de : 3, ya que fueron 3 las operaciones realizadas para llevar a cabo el cálculo de la distancia. (una sustitución, una inserción y otra sustitución) Ya teniendo el código fuente de la base de la corrección en Python, y con este algoritmo aplicado dentro del mismo script, estamos encaminados totalmente al

(11)

éxito para poder realizar nuestra tarea requerida. En la última parte de este informe, veremos este código un sistema más completo, con una pequeña interfaz y lograr completar la actividad definitiva, aplicado con ejemplos, y la fusión de este script con PHP y MySql para poder hacer la actividad final.

(12)

Combinación

Python,

PHP

y

MySql.

En la parte anterior hemos explicado todo lo relacionado con Python, y la estructura de este. En esta sección, veremos cómo utilizamos este Script corrector de Python (el que está descrito en la sección anterior) con otras metodologías y tipos de lenguajes, estos son: PHP y MySql, con tal de hacer la ejecución del código más ameno y con más interfaces didácticas, ya que, nunca hay que olvidar que estamos lidiando con “niños”- Ya que tenemos nuestro código base en Python listo para manipular, procederemos a mostrar nuestro código completo que permite realizar la evaluación de las palabras de Geometría a través de la página Web de “lexmath” (que es la asociada al proyecto), ingresar a la base de datos, tanto las palabras corregidas como las incorrectamente escritas y poder realizar consultas sobre los usuarios que han manipulado el sistema.

Mostraremos nuestro código por partes, explicando paso a paso que realiza cada línea de código, obviamente, especificando la linera que se va a explicar. Comencemos:

(13)

En este primer trozo de código, se explica cómo se realiza la recepción y conversión de las palabras, se crea el archivo “txt” para su almacenamiento y como se realiza la apertura y cláusula del archivo. Línea 29: Se le asigna a una variable el nombre del archivo “txt” el cual está conformado por 2 partes: primero el nombre "palabra", seguido de un "-" y luego el "ID de usuario", para que se cree un archivo txt por cada usuario.

Línea 30: Se concatena la extensión ".txt" para que el archivo a crear, sea efectivamente un archivo “txt” luego de su creación.

Línea 32: Se recibe la palabra que ingreso el usuario al sistema en el formulario por el método "$_post" (ya que por este medio se envió la palabra). Posteriormente, convertimos a minúscula la palabra y se le asigna a la variable "$texto".

Línea 34: Sea abre un archivo de texto en modo de escritura (para que la palabra nueva de sobre escriba en la anterior, así, el archivo “txt” solo contendrá una palabra). La variable "$f" está encargada de abrir el archivo, y este se crea con el nombre que se asignó a dicha variable.

Línea 35: En esta línea, se escribe en el archivo que se ha abierto anteriormente ("$f"), lo que está almacenado en la variable texto (“$texto”).

(14)
(15)

Línea 39: En esta línea, se le asigna a la variable "$python", el contenido de todo el archivo Python disponible para trabajar (programa en python que corrige las palabras).

Cabe destacar que desde la línea 40 a la 69, está el código base de Python que está explicado y detallado en el comienzo de este informe y que ha sido la base de trabajo.

También mencionaremos que la parte del código que dice: “lee y corrige frases”, que comprende de la línea 74 a la 99. En esta parte, y como su nombre lo dice, se realizará la lectura y la corrección de las frases, además de ordenar y concatenar adecuadamente los espacios para realizar una correcta sintaxis.

(16)

Línea 103: Se termina de asignar el programa correspondiente en Python.

Línea 105: A la variable “$py”, se le asigna el nombre que contendrá el archivo Python, el cual consta de 2 partes: La palabra "geometría" indicando a que àrea pertenece el archivo Python a crear, seguido de un "-" y finalmente, del id de usuario que esté en aquel momento realizando la encuesta dentro de la página.. Línea 106: Se le concatena la extensión ".py", para que se cree correctamente el archivo Python.

Línea 108: Se abre un archivo Python en modo de escritura (“W”, para que se sobre escriba cada vez que se ingrese una palabra). La apertura del archivo se la asignamos a la variable "$f2”, y se crea con el nombre que se asignó a la variable anterior, “$py”.

Línea 109: En esta línea, se escribe en el archivo abierto ("$f2") lo que está almacenado en la variable “$py”, como un tipo de traspaso,

(17)

Línea 112: Se declara una variable tipo “Array” (Arreglo), la que almacenará el valor que arroje el archivo Python creado anteriormente. .

Línea 114: A la variable “$py2”, se le asignan los datos nesesarios para que se logre ejecutar el archivo Python. el cual funciona mediante la colocación del nombre "Python", seguido de un espacio para luego colocar el nombre del archivo el cual es: geometria seguido del "-" y el ID de usuario (Ej: Python geometria-4.py). Línea 115: Se le concatena la extension “.py”, para que se ejecute correctamente

un archivo Python.

Línea 116: Con el comando “exec”, se ejecuta un archivo Python el cual necesita 2 parámetros: El nombre del archivo el cual está almacenado en la variable “$py2”, seguido de la variable tipo “Array” definida anteriormente para que capture todos los valores obtenidos.

Línea 117: El valor obtenido en la variable tipo “Array” la convertimos a mayúsculas y se la asignamos a una variable.

Línea 123: En la variable “$pal_corregidas”, le indicamos la ruta de donde deberá crear un nuevo “txt” el cual contendrá todas las palabras corregidas que digitó el usuario

Línea 124: Se indica el nombre que contendrá ese archivo dentro de la ruta anterior el cual será "pal_corr" seguido de un "-" más el ID de usuario (para que sean archivos únicos)

Línea 125: Se concatena él .txt para que se cree con dicha extensión

Línea 127: Se abre un archivo de texto (donde se escribirán todas las palabras corregidas), la apertura del archivo se la asigna a la variable "$f3" y se crea con el nombre que se asignò a la variable “$pal_corregidas”

Línea 128: En esta línea, se escribe en el archivo abierto ("$f3") lo que está almacenado en la variable “$pal_corregidas”

Línea 129: Con este comando dentro del txt, se agregará un salto de linea. Línea 130: Se cierra el archivo abierto.

(18)

Al transcurrir 2 minutos luego de la encuesta sobre las palabras vìa web, se finaliza la encuesta y el usuario es re direccionado a otra página web donde se le muestran las palabras que respondió en el tiempo, es en esa página, es en donde se leerá el archivo txt que contiene todas las palabras corregidas de un usuario. Para esto se le deberá de indicar la ruta y el nombre de ese archivo.

Línea 1: A la variable “$pal_corregidas2”, se le asigna la ruta que muestra donde está almacenado el archivo txt.

Línea 2: A la misma variable, se le indica el nombre del archivo el cual consta de dos partes: "pal_corr" seguido de un "-" y el ID del usuario que respondió la encuesta (nótese que todos los archivos creados (programa python, txt que contiene la palabra dicha por el usuario, y el txt que contiene todas las palabras corregidas del usuario) dentro de esta sección tendrán el mismo ID de usuario lógicamente ya que pertenecen al mismo usuario).

Línea 3: Se le indica la extensión que contendrá nuestro archivo.

Línea 4: Se abre el archivo que le indicamos por medio de la variable en modo de lectura y se lo asignamos a la variable “$f3”

(19)

Inicialmente en esta página, se realiza una extracción de una tabla (de paso) de la base de datos en la cual se iban ingresando todas las palabras que ingresaba el usuario (esto se realizaba al momento de realizar la encuesta en la página web anterior), para luego ingresarla a la tabla encuestas de la base de datos. Una vez hecho esto, se deberá realizar una consulta para saber cuál es el id de encuesta con el que se ingresó la palabra, para ser ingresada a la tabla palabras corregidas de la BBDD.

Línea 117: Se le asigna la palabra obtenida de la tabla de paso (llamada "prueba1") y se almacena en una variable.

Línea 119: Se realiza la consulta preguntando a la tabla encuesta por la palabra que se ingresó (antes de llegar a esta parte de código, recordemos que en esta página se obtuvo la palabra de la tabla de paso se ingresaba a la tabla encuesta, todo esto se realizaba dentro de un ciclo while y dentro de este ciclo, se realiza esta consulta), además consultando si es el mismo ID de usuario, si la posición es la misma, y por último, si la categoría es la misma.

Línea 123: Se verifica si hubo algún error o no, en caso de no haber, se ingresa el resultado a una variable

Línea 125: Se asigna el resultado a una variable para que quede con el formato de filas.

(20)

Línea 126: Se asigna el resultado (el ID de encuesta) a una variable. Línea 128: Se lee una línea del archivo de texto anteriormente abierto (fuera del ciclo while, ya que si se hiciera dentro del while, abriría el archivo y lo cerraría de forma inmediata entregando en cada lectura la misma línea), el resultado es almacenado en una variable, recordemos que este archivo contenía las palabras ya corregidas dichas por el usuario.

Línea 131: Finalmente, se ingresan a la tabla de palabras corregidas los valores que esta pide: el id de dicha tabla, la palabra dicha por el usuario tal cual como esté (recordemos que en la línea 117 se almaceno dicha palabra a una variable), seguido de la palabra corregida (que es la que se extrajo del archivo de texto), y por último, el id de la encuesta.

Línea 143: Fuera del ciclo se cierra el archivo abierto.

Línea 153: En la variable “$eli_py”, se le indica el nombre del archivo Python el cual es "geometria-" más el ID del usuario.

Línea 154: Se le concatena él .py para indicarle la extensión del archivo (Python) Línea 155: En “$eli_pc” se le indica el nombre del archivo que contiene las palabra que ingresaba el usuario, el cual era "palabra-" y el id de usuario.

(21)

Línea 156: Se le concatena èl .txt para indicarle que es un archivo de texto.

Para concluir, de la línea 157 a la 159, se realiza la eliminación de dichos archivos (el archivo que se elimina en la línea 157 es el archivo que se abrió dentro de esta página), de esta forma, queda totalmente limpio de archivos innecesarios una vez terminada la encuesta.

(22)

Referencias

Documento similar

Sanz (Universidad Carlos III-IUNE): "El papel de las fuentes de datos en los ranking nacionales de universidades".. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

La determinación molecular es esencial para continuar optimizando el abordaje del cáncer de pulmón, por lo que es necesaria su inclusión en la cartera de servicios del Sistema

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

La siguiente y última ampliación en la Sala de Millones fue a finales de los años sesenta cuando Carlos III habilitó la sexta plaza para las ciudades con voto en Cortes de

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de