Está en la página 1de 10

Universidad nacional de Asunción - Facultad

Politécnica
Reporte final - Trabajo práctico: Estructura de los lenguajes
Christian Felix Chilavert Acosta

Resumen:
El propósito del sistema es permitir procesar una lista de artículos científicos, los
cuales se encuentran en el formato PDF y almacenados en un directorio, de modo que
por cada archivo leído, sea posible obtener: Autor del artículo, título del artículo y
jornal en el cual fue publicado. De cada archivo procesado, además, se debe obtener
todas las referencias citadas por el artículo, de modo que estas referencias también
sean clasificadas por Autor, título y jornal. A partir de estas referencias, debe ser
posible vincular a cada artículo procesado por el programa, a los artículos al cual este
hace referencia, formando una red de artículos científicos.
Para llevar a cabo este sistema, se emplean tres lenguajes de programación, los cuales
son: R, python y java. Mediante la utilización de estos distintos lenguajes se realiza
una comparación entre ellas, describiendo el enfoque utilizado en cada lenguaje para
el desarrollo, las librerías del lenguaje utilizadas, las ventajas y desventajas en la
utilización del lenguaje, facilidades y dificultades que se presentaron en la utilización
del lenguaje, y que tanto fue posible llevar a cabo el desarrollo del sistema con cada
lenguaje empleado.
La idea del algoritmo central utilizado en los tres lenguajes, consiste en procesar cada
artículo científico, los cuales presentan un texto en formato bibtex del presente
artículo como nombre de archivo, a partir él se extraen el nombre del autor, el titulo
del articulo y la revista/libro/conferencia en donde fue publicado dicho artículo.
Seguidamente procesa y lee el archivo PDF, leyendo cada línea, buscando la pagina
en donde se encuentran la lista de referencias, hasta encontrarlo. A partir de ahí, cada
texto dentro de la lista es procesado, de modo que teniendo en cuenta el formato de
documento utilizado para las referencias, sea posible identificar al autor, título y
publicación de cada artículo referenciado.
1. Descripción del proyecto:
1.1-Desarrollo del trabajo en Python.
1.1.1-Flujograma y descripción.

​ ​Figura 1​ - Flujograma del funcionamiento del algoritmo utilizado en python


El sistema desarrollado en python, funciona como sigue: El programa accede a un
directorio el cual especificado dentro del código fuente, en cual están contenidos el
conjunto de archivos PDFs a ser procesados. Cuando un archivo es ubicado por el
sistema, este es capaz de obtener al Autor, título y jornal del archivo, estos datos son
extraídos del nombre del documento, el cual se encuentra especificado en formato
bibtex. Esta información principal, es almacenada en una lista de datos, cuyo
propósito es mantener un registro de estos tres datos sobre cada archivo procesado.
Una vez obtenida esa primera información, el sistema accede al texto dentro PDF. El
proceso de lectura consiste en leer linea a linea el documento, de modo que por cada
línea que es leída, se busca la ubicación del bloque de referencias dentro del
documento. Cuando esta sección es encontrada, se itera sobre cada referencia listada
en el artículo, por cada referencia leída, se almacena la cadena completa en una
variable auxiliar, de modo que esta variable pueda ser procesada, hasta identificar al
autor, título y jornal contenidos en ella. Cuando estos valores son obtenidos, se
procede a almacenarlos en una lista asociada al documento actual procesado, en
donde están contenidas todas las referencias correspondientes a tal archivo.
Por cada referencia que es encontrada, se realiza una iteración sobre el directorio de
los documentos, comparando si existe un archivo con el mismo autor y título como la
referencia actual obtenida, de ser así, dentro de la lista correspondiente a los datos
principales de cada documento, existe un campo contador, el cual es incrementado
cada vez que un artículo es nombrado en una referencia.

1.1.2. Librerías utilizadas.


PDFMiner: El cual es una libreria de python muy útil para el procesamiento de
archivos en formato PDF. Esta librería permite leer y analizar el texto contenido en
un archivo, además ​permite obtener la ubicación exacta del texto en una página, así
como otra información como fuentes o líneas.
Dentro del sistema desarrollado, esta librería es utilizada para leer una línea tras otra
del documento, de modo que por cada línea procesada, se compara si pertenece a la
sección de referencias científicas. También es utilizado para obtener el número de
página actual en el cual está situado el analizador de texto.

1.1.3. Resultados obtenidos.


Como salida del programa, por cada pdf dentro del directorio, se lista al Autor, titulo,
jornal, cantidad de veces citado, y la lista de referencias dentro de cada artículo.

Figura 2​ - Ejemplo, salida impresa del sistema en python


​1.2-Desarrollo del trabajo en JAVA
1.2.1-Flujograma y descripción

Figura 3​ - Flujograma del funcionamiento del algoritmo utilizado en java


El funcionamiento del sistema desarrollado en java es similar al realizado en python. Dentro
del código fuente es especificado la ruta de un directorio con los archivos pdfs para ser
procesados. A partir del nombre de cada archivo son obtenidos los datos del autor, título del
artículo y revista/libro/conferencia de la publicación. Estos datos son almacenados en una lista
enlazada, donde cada posición de la lista corresponde al número de orden en el que fue
procesado el documento.
Para poder leer el texto contenido dentro del archivo, el programa copia toda la información
dentro del pdf, almacenando en un nuevo documento en formato txt. Este archivo .txt es creado
de modo a que sea más simple el procesamiento y manejo de texto en java. Se procede a leer el
contenido del archivo nuevo creado, hasta ubicar la sección de referencias a otros artículos
científicos. Cada referencia es procesada por el sistema y son identificados y extraídos los datos
del autor, título y jornal del mismo. Estos datos son almacenados dentro de una lista enlazada,
tal lista está asociada al documento científico que se encuentra actualmente siendo procesado.
Por cada referencia que es procesada y obtenida sus datos, el sistema itera sobre la lista de
artículos dentro del directorio. Si se localiza a un archivo cuyo título y autor es similar a los
mismos datos de la referencia actual leída, entonces un contador correspondiente a la cantidad
de referencias asociado a ese documento es incrementado.
1.2.2.Librerías utilizadas.
PDFBox: ​Esta es una librería de ​Java de código abierto para trabajar con documentos PDF.
Esta herramienta permite la creación de nuevos documentos PDF, la manipulación de
documentos existentes y la capacidad de extraer contenido de los documentos.
PDFBox utiliza un objeto llamado PDFParser para almacenar al objeto pdf con el cual desea
trabajar. Tambien utiliza una clase llamada PDFTextStripper, el cual es una clase que toma un
documento en formato pdf y elimina todo el texto e ignorará el formato y demás. Depende de
los clientes de esta clase verificar que un usuario específico tenga los permisos correctos para
extraer el texto del documento PDF.
Esta herramienta es utilizada dentro del sistema desarrollado para crear una copia en formato
.txt de cada PDF el cual es procesado, de modo de facilitar el procesamiento del texto.

Figura 4​ - Código en java para Crear una copia .txt de un PDF utilizando PDFBox

1.2.3. Resultados obtenidos.


Como salida del programa, por cada pdf dentro del directorio, se lista al Autor, titulo,
jornal, cantidad de veces citado, y la lista de referencias dentro de cada artículo.
Figura 5​ - Ejemplo, salida impresa del sistema en java

​1.3-Desarrollo del trabajo en R


1.3.1-Flujograma y descripción

Figura 5​ - Flujograma del funcionamiento del algoritmo utilizado en R


En primer lugar, no ha sido posible desarrollar completamente el sistema en el
lenguaje R. Se tuvo problemas para poder procesar el texto contenido dentro de cada
archivo pdf, de modo que no ha sido posible leer las referencias citadas dentro de
cada archivo en el directorio y vincularlas con otros artículos. El sistema desarrollado
en R, solo tiene un funcionamiento óptimo para extraer el Autor, título y jornal de
cada archivo pdf dentro de un directorio, ya que para obtener estos datos, solo es
necesario procesar el nombre de cada documento.
Para obtener la información principal sobre cada artículo dentro de un directorio, R
almacena todos los archivos de un formato específico contenidos en un directorio,
cuya ruta es proporcionada, utilizando una línea de código: list.files(). Una vez que
estos archivos son almacenados en una lista, se procede a iterar, de modo que por
cada cadena de texto dentro de esta lista fuese posible identificar al Autor, título y
jornal al que hace referencia.
Una vez que estos datos son obtenidos, se procede a almacenarlos en una lista,
correspondiente al registro de la información principal sobre cada uno de los artículos
en pdf que es procesado.

1.3.2. Dificultades del desarrollo del trabajo utilizando R


La principal complejidad para desarrollar el sistema en R, fue la falta de familiaridad
con el lenguaje, no se presentaron conocimientos precisos ni ideas claras sobre que
enfoque y que herramientas utilizar para resolver el problema planteado mediante el
uso de este lenguaje.
No fue posible utilizar los mismos algoritmos que se efectuaron en python y en java,
ya que no hubo forma de presentar las mismas herramientas, como las sintaxis o
librerias en este lenguaje. Ya que uno de los mayores problemas que se tuvo fue el
hecho de no poder procesar los documentos pdfs, este problema ocurrió debido al
hecho de desconocer el funcionamiento de las herramientas y librerías que ofrece R
para la manipulación de documentos en pdf y manejo de textos. Además, tampoco fue
posible utilizar una herramienta que cree una copia en formato .txt, para utilizar el
enfoque presentado en java.
Por último, la sintaxis y estructura que proporciona R, hacen que para un
programador no familiarizado con el mismo, sean un mundo nuevo, de forma que
existen sentencias y declaraciones, que posiblemente sean totalmente desconocidas, y
los errores generados en este lenguaje sean difíciles de interpretar y comprender.

1..3.3. Resultados obtenidos.


Como salida del programa, por cada pdf dentro del directorio, se lista al Autor, titulo
y jornal del mismo.
Figura 5​ - Ejemplo, salida impresa del sistema en R

2. Comparación entre los lenguajes utilizados.


2.1. Python -Ventajas y desventajas
Ventajas:
● La principal ventaja de utilizar python para el desarrollo del sistema, es la cantidad de
librerías que dispone para leer y procesar archivos en formato PDF. La mayoría de
estas librerías son bastantes completas y útiles.
● Python presentó el procesamiento de texto más óptimo en comparación a los otros
dos lenguajes.
● La sintaxis es mucho más simple en comparación a los otros lenguajes utilizados.
● Las funciones en python son muy sencillas, presentando más facilidades en
comparación a las funciones de java.
● Python cuenta con una gran cantidad de manuales y referencias en línea, para
cualquier tipo de información o consulta que uno requiera.

​ esventajas:
D
● La mayor desventaja fue la cantidad de tiempo incurrido para procesar cada archivo
Pdf, siendo mucho más lento en comparación a los otros dos lenguajes.
● Otro de los problemas al trabajar con python, fue la dificultad de tratar con las listas
insertadas dentro de otras listas, ya que es mucho más complejo en comparación a
java, hacer referencia a cada elemento individual.
2.2. JAVA -Ventajas y desventajas
Ventajas:
● El procesamiento de cada documento fue mucho más rápido en comparación a los
otros lenguajes.
● El manejo de excepciones en java, hace que sea bastante sencillo identificar errores, a
la hora de procesar textos, o en otras operaciones.
● El simple manejo de java para las estructuras dinámicas como listas y arrays.

​Desventajas:
● El procesamiento de un archivo pdf en java es mucho más complejo, ya que es
bastante dificil leer un archivo linea tras linea, ademas, en la utilización de algunas
librerías, el texto dentro del pdf es extraída de forma concatenada.

2.2. R-Ventajas y desventajas


Ventajas:
● La simplicidad para listar los archivos en un directorio. Solo requiere una línea de
código.
● La velocidad para leer y manejar objetos de tipo string.

​ esventajas:
D
● Presenta una sintaxis muy diferente y compleja en comparación a los otros lenguajes
● Presenta errores de compilación, los cuales son muy difíciles de manejar para
programadores no familiarizados con el lenguaje.
● La complejidad de trabajar y comprender el funcionamiento de sus librerías y
herramientas para el manejo de archivos de textos como pdfs, .txt, etc.
● La poca información en internet sobre sus librerías para manejo de archivos pdfs

3. Conclusiones.
Trabajar con tres lenguajes de programación distintos, es una práctica bastante útil para un
programador. En primer lugar, durante el desarrollo del programa utilizando cada lenguaje,
uno va distinguiendo las características propias de cada lenguaje, las herramientas que
pueden emplearse en un lenguaje, pero en otros no, enfoques que uno podría utilizar en un
lenguaje, pero en otros no son aplicables, como no es posible utilizar la misma función en
distintos lenguajes. Dentro de este trabajo se pueden observar diferencias muy grandes con
respecto a un lenguaje a otro, tales como: tiempo de ejecución del sistema en los distintos
lenguajes, cantidad de líneas de código para realizar el sistema en un lenguaje y otro, la
complejidad de utilizar las estructuras dinámicas de un lenguaje, pero que en otro presentan
mayor simplicidad, así como las librerías propias y eficientes de cada lenguaje.
La principal comprensión de este trabajo, es darse cuenta del hecho de conocer y saber
programar en una cierta cantidad de lenguajes de programación, no quiere decir que se tenga
un dominio total de todos los demás lenguajes, ya que, al variar de uno a otro, puede existir
diferencias sintácticas y estructurales muy grandes, que serán totalmente desconocidas y
difíciles de manejar para cualquier programador, como por ejemplo es en el caso de este
trabajo: realizar el sistema en java y python, puede ser algo similar, pero totalmente distinto
y engorroso a la hora de llevarlo a cabo en un lenguaje como R.

También podría gustarte