Showing
1 changed file
with
113 additions
and
0 deletions
CoreNLP/bin/filtering.py
0 → 100644
1 | +# Importacion de librerias | ||
2 | +import pandas as pd | ||
3 | +import re | ||
4 | +import argparse | ||
5 | +import os | ||
6 | + | ||
7 | +__author__ = 'kevinml' | ||
8 | + | ||
9 | +# Objective | ||
10 | +# Take two column files and make 3 different files: | ||
11 | +# 1.- <FileName>_1Word_NoGreek.txt - Archivo donde la primer columna es unipalabra y SOLO contiene numeros alfanumericos. | ||
12 | +# 2.- <FileName>_Words_NoGreek.tx - Archivo donde la primer columna es multipalabra y SOLO contiene numeros alfanumericos. | ||
13 | +# 3.- <FileName>_1Word_Greek.txt - Archivo donde la primer columna es unipalabra y contiene caracteres NO alfanumericos. | ||
14 | +# | ||
15 | +# Input parameters | ||
16 | +# --inputPath=PATH Path of inputfiles. | ||
17 | +# --outputPath=PATH Path of outputfiles. | ||
18 | +# --iFile Archivo a partir del cual se obtendran los 3 archivos. | ||
19 | +# | ||
20 | +# Output | ||
21 | +# | ||
22 | +# | ||
23 | +# Examples | ||
24 | +# python filtering.py --inputPath /home/kevinml/Dropbox/LCG/Labs/PGC/automatic-extraction-GEO --outputPath /home/kevinml/Dropbox/LCG/Labs/PGC/automatic-extraction-GEO --iFile NER_words.txt | ||
25 | + | ||
26 | +#################################################################################### | ||
27 | +# FUNCTIONS # | ||
28 | +#################################################################################### | ||
29 | + | ||
30 | +def alphanum_and_NOGreek(word): | ||
31 | + ''' Esta funcion regresa True si en la palabra que recibe como parametro NO SE ENCUENTRAN CARACTERES ALFANUMERICOS | ||
32 | + y regresa False si en la palabra se encuentra algún caracter NO ALFANUMERICO | ||
33 | + ''' | ||
34 | + if re.search("\W", word): | ||
35 | + return False | ||
36 | + else: | ||
37 | + return True | ||
38 | + | ||
39 | +#################################################################################### | ||
40 | +# MAIN PROGRAM # | ||
41 | +#################################################################################### | ||
42 | + | ||
43 | +if __name__ == '__main__': | ||
44 | + | ||
45 | + # Definicion de Parametros | ||
46 | + parser = argparse.ArgumentParser() | ||
47 | + parser.add_argument('--inputPath', help="Ruta donde se encuentra el archivo a procesar. Ej: --inputPath /home/kevinml/transporter-substrate-interactions/", required=True) | ||
48 | + parser.add_argument('--outputPath', help="Ruta donde se depositaran los archivos resultantes. Ej: --outputPath /home/kevinml/transporter-substrate-interactions/", required=True) | ||
49 | + parser.add_argument('--iFile', help="Archivo a procesar. Ej: --iFile NER_words.txt", required=True) | ||
50 | + args = parser.parse_args() | ||
51 | + | ||
52 | + # Se imprimen los parametros ingresados | ||
53 | + print('\n-------------------------------- PARAMETERS --------------------------------\n') | ||
54 | + print('Input Path: ' + str(args.inputPath)) | ||
55 | + print('File: ' + str(args.iFile)) | ||
56 | + print('Output Path: ' + str(args.outputPath)) | ||
57 | + print('\n-------------------------------- PROCESSING --------------------------------\n') | ||
58 | + | ||
59 | + # Se abre el archivo a procesar | ||
60 | + file = pd.read_csv(os.path.join(args.inputPath, args.iFile), sep = "\t") | ||
61 | + | ||
62 | + print("######################\n# PRIMER ARCHIVO #\n######################") | ||
63 | + conditions = [] | ||
64 | + lines = [] | ||
65 | + # Se abre el primer archivo | ||
66 | + with open (os.path.join(args.outputPath,str(args.iFile[:-4]) + "_1Word_NoGreek.txt"), "w+") as oFile: | ||
67 | + for index, row in file.iterrows(): | ||
68 | + if len(row[0].split(" ")) == 1 and alphanum_and_NOGreek(str(row[0].split(" ")[0])) == True: # Se verifica que en la primer columna solo haya un palabra y que esta solo tenga caracteres alfanumericos. | ||
69 | + conditions.append(row[0]) | ||
70 | + lines.append(row[1]) | ||
71 | + # Se escriben en el primer archivo aquellos valores que cumplen las condiciones. | ||
72 | + for i in range(len(lines)): | ||
73 | + oFile.write(conditions[i] + "\t" + lines[i] + '\n') | ||
74 | + | ||
75 | + print("\nArchivo de contenidos de una sola palabra ha sido generado. NOTA: Se han excluido letras griegas.\nNombre del archivo:" + str(args.iFile[:-4]) + "_1Word_NoGreek.txt\n") | ||
76 | + | ||
77 | + print("#######################\n# SEGUNDO ARCHIVO #\n#######################") | ||
78 | + conditions_2 = [] | ||
79 | + lines_2 = [] | ||
80 | + # Se abre el segundo archivo | ||
81 | + with open (os.path.join(args.outputPath,str(args.iFile[:-4]) + "_Words_NoGreek.txt"), "w+") as oFile: | ||
82 | + for index, row in file.iterrows(): | ||
83 | + # La bandera en 1 indica que ninguna palabra de la primer columna tiene caracteres NO alfanumericos | ||
84 | + # La bandera en 0 indica que al menos una palabra tienes caracteres NO alfanumericos. | ||
85 | + bandera = 1 | ||
86 | + # Con el for se va a verificando la presencia de caracteres alfanumericos en cada palabra de la primera columna | ||
87 | + for i in range(0, len(row[0].split(" "))): | ||
88 | + if alphanum_and_NOGreek(str(row[0].split(" ")[i])) == False: | ||
89 | + bandera = 0 | ||
90 | + if bandera == 1: | ||
91 | + conditions_2.append(row[0]) | ||
92 | + lines_2.append(row[1]) | ||
93 | + # Se escriben en el primer archivo aquellos valores que cumplen las condiciones. | ||
94 | + for i in range(len(lines_2)): | ||
95 | + oFile.write(conditions_2[i] + "\t" + lines_2[i] + '\n') | ||
96 | + | ||
97 | + print("\nArchivo de contenidos de varias palabras ha sido generado. NOTA: Se han excluido letras griegas.\nNombre del archivo:" + str(args.iFile[:-4]) + "SeveralWords_NoGreek_Filter\n") | ||
98 | + | ||
99 | + print("######################\n# TERCER ARCHIVO #\n######################") | ||
100 | + conditions_3 = [] | ||
101 | + lines_3 = [] | ||
102 | + # Se abre el tercer archivo | ||
103 | + with open (os.path.join(args.outputPath,str(args.iFile[:-4]) + "_1Word_Greek.txt"), "w+") as oFile: | ||
104 | + for index, row in file.iterrows(): | ||
105 | + # Se verifica que la primer columna sea unipalabra. | ||
106 | + if len(row[0].split(" ")) == 1: | ||
107 | + conditions_3.append(row[0]) | ||
108 | + lines_3.append(row[1]) | ||
109 | + # Se escriben en el primer archivo aquellos valores que cumplen las condiciones. | ||
110 | + for i in range(len(lines_3)): | ||
111 | + oFile.write(conditions_3[i] + "\t" + lines_3[i] + '\n') | ||
112 | + | ||
113 | + print("\nArchivo de contenidos de una palabra ha sido generado:.nNombre del archivo:" + str(args.iFile[:-4]) + "SeveralWords_Greek_Filter\n") | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment