<jupyter_start><jupyter_text>Negative Knowledge Domain KeywordsThis notebook is to manually build a keyword dictionary. This particular dictionary contains what we call negative keywords. Negative keywords are those keywords that are used to remove policies from the scraping process. For instance, some document have been scraped because it contains a word related with "environment" but then it turns out that it is a nomination for an institutional post or somthing related with telecomunications. With the negative keywords "Designa director" or "Telefonía" we can remove these documents from the final list of scraped documents.  Dependencies<jupyter_code>import json<jupyter_output><empty_output><jupyter_text>DictionaryThis is a "user frienly" to manually enter data in a dictionary which can later be transformed into a json file.<jupyter_code>keywords = {
		'Aceptan renuncia' : 0,
		'Acepta renuncia' : 0,
		'Acuicultura': 0,
		'Aprueban expedición' : 0,
		'Archivo general de la nación' : 0,
		'Arqueológica' : 0,
		'Arqueológicas' : 0,
		'Arqueológico' : 0,
		'Arqueológicos' : 0,
		'Artefactos navales' : 0,
		'Asociación religiosa' : 0,
		'Atmosférica' : 0,
		'Atmosférico' : 0,
		'Autorizan viaje' : 0,
		'Aviación' : 0,
		'Calidad del aire' : 0,
		'Certificados de estudios' : 0,
		'Condiciones empresas instaladoras' : 0,
		'Congregación' : 0,
		'Consejo de la judicatura' : 0,
		'Consejo de seguridad' : 0,
		'Contaminación sonora' : 0,
		'Contraloría general' : 0,
		'Contrato Ley de la Industria' : 0,
		'Convivencia ciudadana' : 0,
		'Datos personales' : 0,
		'Declara desierto concurso' : 0,
		'Declara desierto el concurso' : 0,
		'Declaran desierto concurso' : 0,
		'Declaran desierto el concurso' : 0,
		'Declara desierto proceso' : 0,
		'Declaran vacancia' : 0,
		'Declara vacante' : 0,
		'Delimitación' : 0,
		'Desechos' : 0,
		'Designa director' : 0,
		'Designa directora' : 0,
		'Designa ministro' : 0,
		'Designa vicepresidente' : 0,
		'Designan asesor' : 0,
		'Designan asesora' : 0,
		'Designan asesores' : 0,
		'Designan coordinador' : 0,
		'Designan coordinadora' : 0,
		'Designan coordinadores': 0,
		'Designan director' : 0,
		'Designan directora' : 0,
		'Designan directivos' : 0,
		'Designan ejecutor' : 0,
		'Designan ejecutora' : 0,
		'Designan funcionario' : 0,
		'Designan funcionaria' : 0,
		'Designan funcionarios' : 0,
		'Designan funcionarias' : 0,
		'Designan gerente' : 0,
		'Designan gerentes' : 0,
		'Designan jefe' : 0,
		'Designan jefa' : 0,
		'Designan miembro' : 0,
		'Designan miembros' : 0,
		'Designan presidente' : 0,
		'Designan presidenta' : 0,
		'Designan representante' : 0,
		'Designan representantes' : 0,
		'Designan responsable' : 0,
		'Designan responsables' : 0,
		'Designan secretario' : 0,
		'Designan secretaria' : 0,
		'Designan subdirector' : 0,
		'Designan subdirectora' : 0,
		'Designan sub director' : 0,
		'Designan sub directora' : 0,
		'Educación de los adultos' : 0,
		'Educación pública' : 0,
		'Educación superior' : 0,
		'Energía eléctrica' : 0,
		'Espectáculos públicos' : 0,
		'Establecimientos educacionales' : 0,
		'Estatuto orgánico' : 0,
		'Familia' : 0,
		'Familiar' : 0,
		'Farmacovigilancia' : 0,
		'Funcionario' : 0,
		'Funcionarios' : 0,
		'Indústria de la construcción' : 0,
		'Inmueble' : 0,
		'Juegos florales' : 0,
		'Matrimonio civil' : 0,
		'Migraciones' : 0,
		'Nacionalización del inmueble' : 0,
		'Nombra' : 0,
		'Nombramiento' : 0,
		'Organización política' : 0,
		'Otorgan duplicado' : 0,
		'Otorgan duplicados' : 0,
		'Pasan a la situación de retiro' : 0,
		'Penitenciario' : 0,
		'Personas desplazadas internas' : 0,
		'Persona natural' : 0,
		'Personas naturales' : 0,
		'Pesca de investigación' : 0,
		'Pesquería' : 0,
		'Planta de personal' : 0,
		'Plantas del personal' : 0,
		'Planta envasadora' : 0,
		'Plantas envasadoras' : 0,
		'Planta nacional' : 0,
		'Portuaria' : 0,
		'Portuario' : 0,
		'Publicitario' : 0,
		'Pobreza' : 0,
		'Radiaciones' : 0,
		'Radiodifusión' : 0,
		'Redes eléctricas' : 0,
		'Resíduos' : 0,
		'Reglamento orgánico' : 0,
		'Salario mínimo' : 0,
		'Salmónidos' : 0,
		'Salud ambiental' : 0,
		'Tasas municipales' : 0,
		'Tasas por servicios municipales' : 0,
		'Tasas, que el municipio' : 0,
		'Telecomunicaciones' : 0,
		'Telefonía' : 0,
		'Televisión' : 0,
		'Universidad' : 0,
		'Vacante cargo' : 0,
		'Vivienda' : 0
}
len(keywords)<jupyter_output><empty_output><jupyter_text>Saving JSON in google colaboration<jupyter_code>from google.colab import drive
drive.mount('/content/drive/')
with open('/content/drive/My Drive/Official Folder of WRI Latin America Project/Omdena Challenge/task4_web_scraping/Google_Search_Scraping/negative_keywords_knowledge_domain.json', 'w') as dict:
    json.dump(keywords, dict)
from google.colab import files
files.download('/content/drive/My Drive/Official Folder of WRI Latin America Project/Omdena Challenge/task4_web_scraping/Google_Search_Scraping/negative_keywords_knowledge_domain.json')<jupyter_output><empty_output><jupyter_text>Saving JSON in the local folder of the scrapy project<jupyter_code># path = "../output/"
filename = "negative_keywords_knowledge_domain.json"
# file = path + filename

with open(filename, 'w') as fp:
    json.dump(keywords, fp)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1206831119544592, 'fraction_numerical': 0.024667931688804556, 'mean_word_length': 4.286860581745236, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '309863', 'license': 'RSA-MD', 'n_tokens_mistral': 2284, 'n_tokens_neox': 1999, 'n_words': 559, 'path': 'tasks/Scrapy/scrapy_official_newspapers/keywords_and_dictionaries/Old_files/Negative_Keywords_Knowledge_Domain.ipynb', 'repo_name': 'thefirebanks/policy-data-analyzer', 'size': '5270'}