Tarea del periodico Interactivo

parent 50e07385
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'arte'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"from io import StringIO\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"from nltk.corpus import stopwords\n",
"from sklearn.feature_selection import chi2\n",
"import numpy as np\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.feature_extraction.text import CountVectorizer\n",
"from sklearn.feature_extraction.text import TfidfTransformer\n",
"from sklearn.naive_bayes import MultinomialNB\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.svm import LinearSVC\n",
"from sklearn.model_selection import cross_val_score\n",
"from IPython.display import display\n",
"from sklearn import metrics\n",
"import seaborn as sns\n",
"from sklearn.metrics import confusion_matrix\n",
"\n",
"class ia:\n",
" '''\n",
" Clase que se encarga de crear la inteligencia artificial para el periodico interactivo\n",
" '''\n",
" \n",
" def __init__(self,text):\n",
" '''\n",
" Contructor que toma el archivo .csv y entrena a la inteligencia artificial con este\n",
" \n",
" Args: pd.read_csv()\n",
" '''\n",
" #self.df = pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" df=text\n",
" col = ['tipo', 'text']\n",
" df = df[col]\n",
" df = df[pd.notnull(df['text'])]\n",
" df.columns = ['tipo', 'text']\n",
" df['category_id'] = df['tipo'].factorize()[0]\n",
" category_id_df = df[['tipo', 'category_id']].drop_duplicates().sort_values('category_id')\n",
" category_to_id = dict(category_id_df.values)\n",
" id_to_category = dict(category_id_df[['category_id', 'tipo']].values)\n",
" X_train, X_test, y_train, y_test = train_test_split(df['text'], df['tipo'], random_state = 0)\n",
" count_vect = CountVectorizer()\n",
" X_train_counts = count_vect.fit_transform(X_train)\n",
" tfidf_transformer = TfidfTransformer()\n",
" X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)\n",
" clf = MultinomialNB().fit(X_train_tfidf, y_train)\n",
" tfidf = TfidfVectorizer (sublinear_tf = True, min_df = 5, norm = 'l2', encoding = 'latin-1', ngram_range = (1, 2), stop_words = stopwords.words('spanish'))\n",
" features = tfidf.fit_transform(df.text).toarray() \n",
" labels = df.category_id\n",
" models = [\n",
" RandomForestClassifier(\n",
" n_estimators=200, \n",
" max_depth=3, \n",
" random_state=0\n",
" ),\n",
" LinearSVC(),\n",
" MultinomialNB(),\n",
" LogisticRegression(random_state=0),\n",
" ]\n",
" CV = 5\n",
" entries = []\n",
" cv_df = pd.DataFrame(\n",
" entries, \n",
" columns=['model_name', 'fold_idx', 'accuracy'])\n",
" \n",
" self.df=df\n",
" self.category_id_df=category_id_df\n",
" self.category_to_id=category_to_id\n",
" self.id_to_category=id_to_category\n",
" self.X_train=X_train\n",
" self.X_test=X_test\n",
" self.y_train=y_train\n",
" self.y_test=y_test\n",
" self.count_vect=count_vect\n",
" self.X_train_counts=X_train_counts\n",
" self.tfidf_transformer=tfidf_transformer\n",
" self.X_train_tfidf=X_train_tfidf\n",
" self.clf=clf\n",
" self.tfidf=tfidf\n",
" self.features=features\n",
" self.labels=labels\n",
" self.models=models\n",
" self.CV=CV\n",
" self.entries=entries\n",
" self.cv_df=cv_df\n",
" \n",
" def predict(self,texto):\n",
" '''\n",
" Predice el genero de la noticia en cinco diferentes (Turismo, Deportes, Arte, Seguridad y Política)\n",
" \n",
" Args: texto (string)\n",
" \n",
" Ejemplo:\n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.predict('Maravillas del septimo arte')\n",
" 'arte '\n",
" '''\n",
" count_vect=self.count_vect\n",
" clf=self.clf\n",
" p=clf.predict(count_vect.transform([texto]))\n",
" return p[0]\n",
"\n",
" def totaldata(self):\n",
" '''\n",
" Muestra el total de datos que se han cargado en una tabla de barras\n",
" \n",
" Args: NA\n",
" \n",
" Ejemplo:\n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.totaldata()\n",
" \n",
" *Tabla de tipo matplotlib de barras*\n",
" \n",
" '''\n",
" df=self.df\n",
" fig = plt.figure(figsize=(8,6))\n",
" df.groupby('tipo').text.count().plot.bar(ylim=0)\n",
" plt.show()\n",
"\n",
" def numtotaldata(self):\n",
" '''\n",
" Muestra el total de datos que se han cargado en un número\n",
" \n",
" Args: NA\n",
" \n",
" Ejemplo:\n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.numtotaldata()\n",
" 75\n",
" '''\n",
" #df=self.df\n",
" return self.features.shape[0]\n",
"\n",
" def ngramas(self):\n",
" '''\n",
" Muestra el total de ngramas que se puede tener despues de cargar el archivo que sirve como entrenador (hasta dos palabras)\n",
" \n",
" Args: NA\n",
" \n",
" Ejemplo:\n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.ngramas()\n",
" # 'arte':\n",
" . Most correlated unigrams:\n",
" . artes\n",
" . arte\n",
" . Most correlated bigrams:\n",
" . secretaría cultura\n",
" . bellas artes\n",
" # 'deporte':\n",
" . Most correlated unigrams:\n",
" . futbol\n",
" . deporte\n",
" . Most correlated bigrams:\n",
" . 30 años\n",
" . comisión nacional\n",
" # 'politica':\n",
" . Most correlated unigrams:\n",
" . político\n",
" . política\n",
" . Most correlated bigrams:\n",
" . cada vez\n",
" . banco méxico\n",
" # 'seguridad':\n",
" . Most correlated unigrams:\n",
" . seguridad\n",
" . víctimas\n",
" . Most correlated bigrams:\n",
" . subsecretario derechos\n",
" . derechos humanos\n",
" # 'turismo':\n",
" . Most correlated unigrams:\n",
" . roo\n",
" . turismo\n",
" . Most correlated bigrams:\n",
" . secretaría turismo\n",
" . quintana roo\n",
" '''\n",
" df=self.df\n",
" features=self.features\n",
" labels=self.labels\n",
" tfidf=self.tfidf\n",
" \n",
" category_to_id=self.category_to_id\n",
" N = 2\n",
" for tipo, category_id in sorted(category_to_id.items()):\n",
" features_chi2 = chi2(features, labels == category_id)\n",
" indices = np.argsort(features_chi2[0])\n",
" feature_names = np.array(tfidf.get_feature_names())[indices]\n",
" unigrams = [v for v in feature_names if len(v.split(' ')) == 1]\n",
" bigrams = [v for v in feature_names if len(v.split(' ')) == 2]\n",
" print(\"# '{}':\".format(tipo))\n",
" print(\" . Most correlated unigrams:\\n. {}\".format('\\n. '.join(unigrams[-N:])))\n",
" print(\" . Most correlated bigrams:\\n. {}\".format('\\n. '.join(bigrams[-N:])))\n",
"\n",
" def diamodelos(self):\n",
" '''\n",
" (0)Muestra el diagrama de accuracy para diferentes tipos de IA (LinearSVC,MultinomialNB, Regresión logística y Bosque de clasificación aleatoria) y muestra los datos escritos\n",
" \n",
" Args: NA\n",
" \n",
" Ejemplo:\n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.numtotaldata(0)\n",
" \n",
" *Tabla matplotlib*\n",
" \n",
" model_name\n",
" LinearSVC 0.853333\n",
" LogisticRegression 0.880000\n",
" MultinomialNB 0.853333\n",
" RandomForestClassifier 0.933333\n",
" Name: accuracy, dtype: float64\n",
" '''\n",
" features=self.features\n",
" labels=self.labels\n",
" cv_df=self.cv_df\n",
" models=self.models\n",
" CV=self.CV\n",
" entries=self.entries\n",
" \n",
" for model in models:\n",
" model_name = model.__class__.__name__\n",
" accuracies = cross_val_score(model, features, labels, scoring='accuracy', cv=CV)\n",
" for fold_idx, accuracy in enumerate(accuracies):\n",
" entries.append((model_name, fold_idx, accuracy))\n",
" \n",
" \n",
" #self.cv_df=cv_df\n",
" cv_df = pd.DataFrame(entries, columns=['model_name', 'fold_idx', 'accuracy'])\n",
" \n",
" \n",
" sns.boxplot(x='model_name', y='accuracy', data=cv_df)\n",
" sns.stripplot(\n",
" x='model_name', \n",
" y='accuracy', \n",
" data=cv_df, \n",
" size=8, \n",
" jitter=True, \n",
" edgecolor=\"gray\", \n",
" linewidth=2\n",
" )\n",
" plt.show()\n",
" #cv_df = pd.DataFrame(entries, columns=['model_name', 'fold_idx', 'accuracy'])\n",
" return cv_df.groupby('model_name').accuracy.mean()\n",
"\n",
" def matrizconf(self,num=0):\n",
" '''\n",
" (0)Muestra un diagrama de la matriz de confusión despues de agregar el csv\n",
" (1)Muestra un listado con los errores que se han encontrado en la matriz de confusión\n",
" (2)Muestra un listado con las categorias y su precision, recall, f1-score entre otros datos\n",
" \n",
" Args: 0,1,2\n",
" \n",
" Ejemplo:\n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.matrizconf(0)\n",
" *Tabla de matriz de confusión en matplotlib*\n",
" \n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.matrizconf(1)\n",
" 'turismo' predicted as 'arte' : 1 examples.\n",
" tipo\ttext\n",
" 60\tturismo\tEl Museo de la Luz es un proyecto impulsado de...\n",
"\n",
" 'arte' predicted as 'politica' : 1 examples.\n",
" tipo\ttext\n",
" 6\tarte\tEl diputado local de Morena por Tabasco, Charl...\n",
"\n",
" 'politica' predicted as 'seguridad' : 1 examples.\n",
" tipo\ttext\n",
" 41\tpolitica\tRepresentantes de la sociedad civil en el cons...\n",
"\n",
" 'seguridad' predicted as 'turismo' : 1 examples.\n",
" tipo\ttext\n",
" 56\tseguridad\tMérida es una ciudad en crecimiento, con más d...\n",
" \n",
" >>>text=pd.read_csv('../data/filtrados15/todojunto.csv',encoding=\"latin\")\n",
" >>>c=ia(text)\n",
" >>>c.matrizconf(2)\n",
" precision recall f1-score support\n",
"\n",
" arte 0.67 0.67 0.67 3\n",
" deporte 1.00 1.00 1.00 4\n",
" politica 0.80 0.80 0.80 5\n",
" seguridad 0.86 0.86 0.86 7\n",
" turismo 0.83 0.83 0.83 6\n",
"\n",
" micro avg 0.84 0.84 0.84 25\n",
" macro avg 0.83 0.83 0.83 25\n",
" weighted avg 0.84 0.84 0.84 25\n",
" '''\n",
" df=self.df\n",
" X_train=self.X_train \n",
" X_test=self.X_test\n",
" y_train=self.y_train\n",
" y_test=self.y_test\n",
" features=self.features\n",
" labels=self.labels\n",
" category_id_df=self.category_id_df\n",
" id_to_category=self.id_to_category\n",
" \n",
" model = LinearSVC()\n",
" X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split(features, labels, df.index, test_size=0.33, random_state=0)\n",
" model.fit(X_train, y_train)\n",
" y_pred = model.predict(X_test)\n",
" conf_mat = confusion_matrix(y_test, y_pred)\n",
" \n",
" if(num==0):\n",
" fig, ax = plt.subplots(figsize=(10,10))\n",
" sns.heatmap(conf_mat, annot=True, fmt='d',\n",
" xticklabels=category_id_df.tipo.values, \n",
" yticklabels=category_id_df.tipo.values)\n",
" plt.ylabel('Actual')\n",
" plt.xlabel('Predicted')\n",
" plt.show()\n",
" elif(num==1):\n",
" for predicted in category_id_df.category_id:\n",
" for actual in category_id_df.category_id:\n",
" if predicted != actual and conf_mat[actual, predicted] >= 1:\n",
" print(\"'{}' predicted as '{}' : {} examples.\".format(id_to_category[actual], id_to_category[predicted], conf_mat[actual, predicted]))\n",
" display(df.loc[indices_test[(y_test == actual) & (y_pred == predicted)]][['tipo', 'text']])\n",
" print('')\n",
" elif(num==2):\n",
" print(metrics.classification_report(y_test, y_pred, target_names=df['tipo'].unique()))\n",
" \n",
"text=pd.read_csv('data/todojunto.csv',encoding=\"latin\")\n",
"c=ia(text)\n",
"c.predict('Textiles, pintura popular, alfarería, cerámica, vidrio y otras artesanías se reúnen en la exhibición "Orgullo de mi país", con materiales de toda la República Mexicana y que está montada en el Museo de Arte Popular de Yucatán, ubicado en el centro de Mérida."Por fin tengo una blusa en una exposición, me da mucha alegría exponer mi trabajo. La blusa me tardó un mes, porque es la primera vez que realizo corazones, mayormente solo he bordado flores", comentó María Rita Con Uc, artesana originaria del municipio Subincancab, Yucatán, quien aprendió a "costurar" desde pequeña, con solo observar a su abuela.Su bordado es una de las integrantes de la muestra, compuesta por 59 piezas de diferentes estados de la República."En esta exhibición como (Mérida) es ciudad anfitriona, hay varias artesanías, representando Muna, Yaxuná, y Dzitya. La idea es que se incorporen a la exhibición y van a seguir itinerando, representando a Yucatán", comentó Judith Figueroa, encargada de la propuesta museográfica.Asimismo, esta convocatoria lanzada por Ricardo Salinas Pliego, presidente de Grupo Salinas, tiene el propósito de mostrar la pasión que se tiene por México, por eso el eje de las piezas es el corazón y cómo representarlo a través del arte."Está muy bien plasmado, esta creatividad, esta originalidad de todos los artesanos de cómo tal vez no es un elemento que usan normalmente en su artesanía, pero la manera en que lo trabajan y lo llevan aquí terminan siendo trabajos muy bellos", comentó Ana Méndez Patterson, directora general de museos y patrimonio de la Secretaría de la Cultura y las Artes de Yucatán. "Orgullo de mi país", que permanecerá del 26 de marzo al 26 de mayo, es la primera de un nuevo ciclo de exhibiciones del Museo de Arte Popular de Yucatán, con lo que se busca promocionarlo para atraer nuevos visitantes y turistas, añadió Méndez Patterson.La planta baja del recinto se dedicará a las exposiciones temporales, mientras que en la parte alta presentará una muestra permanente de arte popular de todo el país, conformada por colecciones del Fomento Cultural Banamex y del Instituto Nacional de los Pueblos Indígenas, anteriormente Comisión Nacional para el Desarrollo de los Pueblos Indígenas (CDI), comentó Ana Mendez Patterson.') #Adjuntar texto de publicación\n",
"#c.totaldata()\n",
"#c.numtotaldata()\n",
"#c.ngramas()\n",
"#c.diamodelos(1)\n",
"#c.matrizconf(2)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAGfCAYAAACOS6H7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAGU5JREFUeJzt3XuUrXV93/H3Bw4GURANExUBD1BECVK1B9FgNEUlGKmXRhNpNGg0J9612iomzVIa15JokzTLGOFEEaKoMUYjRVGoF0goYg4XuQio8XoU66BVqNYo+u0f+xnPOBzOZfYz8/zm2e/XWrNm9rP3zP6ufc6a9zzPfi6pKiRJ0rB2G3oASZJkkCVJaoJBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJasC61Xyy/fbbr9avX7+aTylJ0mAuv/zym6tqbmceu6pBXr9+PZs3b17Np5QkaTBJvryzj3WTtSRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDVjVqz2tlPWnfHDoEXbZl057/NAj7LrX3G3oCXbNa7479AS77IFnP3DoEXbJNSdfM/QIu+z6+z9g6BF22QNuuH7oEXbJm577saFH2GUvOP24oUdwDVmSpBYYZEmSGmCQJUlqgEGWJKkBBlmSpAYYZEmSGmCQJUlqgEGWJKkBBlmSpAYYZEmSGmCQJUlqgEGWJKkBBlmSpAYYZEmSGmCQJUlqgEGWJKkBOwxykjOTfDPJtdu47z8lqST7rcx4kiTNhp1ZQz4LOGHpwiQHAo8FvtLzTJIkzZwdBrmqLga+vY27/gx4BVB9DyVJ0qxZ1nvISZ4AfK2qPt3zPJIkzaR1u/oNSfYC/gA4ficfvxHYCHDQQQft6tNJkjQTlrOGfChwMPDpJF8CDgCuSHKvbT24qjZV1Yaq2jA3N7f8SSVJGrFdXkOuqmuAX1i43UV5Q1Xd3ONckiTNlJ057OldwKXA4Um2JHn2yo8lSdJs2eEaclWdtIP71/c2jSRJM8ozdUmS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDVgh0FOcmaSbya5dtGyNyS5IcnVSd6fZN+VHVOSpHHbmTXks4ATliy7EDiyqo4CPgu8que5JEmaKTsMclVdDHx7ybILquq27uYngQNWYDZJkmZGH+8h/w5wfg8/R5KkmTVVkJP8AXAbcM52HrMxyeYkm+fn56d5OkmSRmvZQU5yMnAi8FtVVXf0uKraVFUbqmrD3Nzccp9OkqRRW7ecb0pyAvBK4FFV9f1+R5IkafbszGFP7wIuBQ5PsiXJs4G/APYGLkxyVZLTV3hOSZJGbYdryFV10jYWv3UFZpEkaWZ5pi5JkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhqwwyAnOTPJN5Ncu2jZPZJcmORz3ee7r+yYkiSN286sIZ8FnLBk2SnAR6vqMOCj3W1JkrRMOwxyVV0MfHvJ4icCZ3dfnw08qee5JEmaKct9D/meVXUTQPf5F/obSZKk2bPiO3Ul2Zhkc5LN8/PzK/10kiStScsN8v9Ocm+A7vM37+iBVbWpqjZU1Ya5ubllPp0kSeO23CCfC5zcfX0y8IF+xpEkaTbtzGFP7wIuBQ5PsiXJs4HTgMcm+Rzw2O62JElapnU7ekBVnXQHdz2651kkSZpZnqlLkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAVMFOcl/THJdkmuTvCvJnn0NJknSLFl2kJPcB3gxsKGqjgR2B57W12CSJM2SaTdZrwPunGQdsBfw9elHkiRp9iw7yFX1NeC/AV8BbgK+W1UX9DWYJEmzZJpN1ncHnggcDOwP3CXJ07fxuI1JNifZPD8/v/xJJUkasWk2WT8G+GJVzVfVj4D3Ab+09EFVtamqNlTVhrm5uSmeTpKk8ZomyF8BHpZkryQBHg1c389YkiTNlmneQ74MeC9wBXBN97M29TSXJEkzZd0031xVrwZe3dMskiTNLM/UJUlSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSAwyyJEkNMMiSJDXAIEuS1ACDLElSA6YKcpJ9k7w3yQ1Jrk/y8L4GkyRplqyb8vv/HPhwVT0lyZ2AvXqYSZKkmbPsICfZB3gk8EyAqvoh8MN+xpIkabZMs8n6EGAeeFuSK5O8JcldeppLkqSZMk2Q1wEPAd5cVQ8GvgecsvRBSTYm2Zxk8/z8/BRPJ0nSeE0T5C3Alqq6rLv9XiaB/hlVtamqNlTVhrm5uSmeTpKk8Vp2kKvqG8BXkxzeLXo08JleppIkacZMu5f1i4Bzuj2svwA8a/qRJEmaPVMFuaquAjb0NIskSTPLM3VJktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1wCBLktQAgyxJUgMMsiRJDTDIkiQ1YOogJ9k9yZVJzutjIEmSZlEfa8gvAa7v4edIkjSzpgpykgOAxwNv6WccSZJm07RryP8deAXwkx5mkSRpZi07yElOBL5ZVZfv4HEbk2xOsnl+fn65TydJ0qhNs4Z8LPCEJF8C3g0cl+QdSx9UVZuqakNVbZibm5vi6SRJGq9lB7mqXlVVB1TVeuBpwMeq6um9TSZJ0gzxOGRJkhqwro8fUlWfAD7Rx8+SJGkWuYYsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUAIMsSVIDDLIkSQ0wyJIkNcAgS5LUgGUHOcmBST6e5Pok1yV5SZ+DSZI0S9ZN8b23AS+vqiuS7A1cnuTCqvpMT7NJkjQzlr2GXFU3VdUV3de3AtcD9+lrMEmSZkkv7yEnWQ88GLisj58nSdKsmTrISe4K/B3w0qq6ZRv3b0yyOcnm+fn5aZ9OkqRRmirISfZgEuNzqup923pMVW2qqg1VtWFubm6ap5MkabSm2cs6wFuB66vqT/sbSZKk2TPNGvKxwDOA45Jc1X38Wk9zSZI0U5Z92FNV/SOQHmeRJGlmeaYuSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaYJAlSWqAQZYkqQEGWZKkBhhkSZIaMFWQk5yQ5MYkn09ySl9DSZI0a5Yd5CS7A28CHgccAZyU5Ii+BpMkaZZMs4b8UODzVfWFqvoh8G7gif2MJUnSbJkmyPcBvrro9pZumSRJ2kXrpvjebGNZ3e5ByUZgY3fz/ya5cYrnHMJ+wM19/9D8cd8/cU1bkdeYU7f1X3Rmrcz/42f6Gi+yMv+PAeLrvMiKvM4vPKPvn/hT993ZB04T5C3AgYtuHwB8femDqmoTsGmK5xlUks1VtWHoOcbM13jl+RqvPF/j1THm13maTdb/BByW5OAkdwKeBpzbz1iSJM2WZa8hV9VtSV4IfATYHTizqq7rbTJJkmbINJusqaoPAR/qaZZWrdnN7WuIr/HK8zVeeb7Gq2O0r3OqbrcfliRJWmWeOlOSpAYYZEmSGmCQJUlqwFQ7dY1Rkr2AlwMHVdXvJjkMOLyqzht4tFFJcl/gsKr6n0nuDKyrqluHnmtskjwe+EVgz4VlVfVfh5toHJLcY3v3V9W3V2uWWZDkCcAju5sXVdX/GHKeleIa8u29DfgX4OHd7S3Aa4cbZ3yS/C7wXmDh3DgHAH8/3ETjlOR04DeBFzE5s95T2YWzBmm7Lgc2d5/ngc8Cn+u+vnzAuUYnyeuAlwCf6T5e3C0bHfeyXmLhLDBJrqyqB3fLPl1V/3ro2cYiyVVMLk5y2aLX+JqqeuCwk41Lkqur6qhFn+8KvK+qjh96trHo/ug5tzsElCSPAx5TVS8fdrLxSHI18KCq+kl3e3fgyqo6atjJ+uca8u39sNuEWgBJDmWyxqz+/Et3hTAAkqxjG+dB19T+X/f5+0n2B34EHDzgPGN09EKMAarqfOBRA84zVvsu+vpug02xwnwP+fZeA3wYODDJOcCxwLMGnWh8Lkry+8CdkzwWeD4wyveEBnZekn2BNwBXMPmj5y3DjjQ6Nyf5L8A7mLy+Twe+NexIo/M64MokH2fy1ssjgVcNO9LKcJP1NiT5eeBhTP7xP1lVK3MFlxmVZDfg2cDxTF7jj1TVXw071bgl+Tlgz6r67tCzjEm3c9er2brD0cXAqe7U1a8k9waOZvL74rKq+sbAI60Ig7xEko9W1aN3tEzLl+QlVfXnO1qm6SR5AXBOVX2nu3134KSq+sthJ5N2TZKjgPUs2qpbVe8bbKAVYpA7SfYE9gI+DvwKW6/3vA9wflU9YKDRRifJFVX1kCXLfroTnfqR5KqqetCSZb7OPUoyB7yC2x9adtxgQ41MkjOBo4DrgJ90i6uqfme4qVaG7yFv9XvAS4H9mRy2sBDkW4A3DTXUmCQ5CfgPwCFJFl+qc298320l7JYk1f3V3e2deqeBZxqbc4C/AU4EnguczOTQJ/XnYVV1xNBDrAbXkBfpfmH9flX90dCzjFF3MpCDmeykccqiu24Frq6q2wYZbKSSvIHJZr7Tmexw9Fzgqx6S058kl1fVv1k4tKxbdlFVuad1T5K8FfiTqvrM0LOsNNeQF6mqHyf5NcAgr4Cq+nKSLcD3quqioeeZAa9ksuXneUy2+FyAe1n37Ufd55u6s6J9ncmJbtSfs4FLk3yDySGoYbLJenTHIbuGvESSU4GrmZxAwRdnBXSbq5/hHr9a65KcCPwDcCDwRib7nJxaVedu9xu105J8HngZcA1b30Omqr482FArxCAvkeRW4C7AbcAP2PrX2D6DDjYiSd7D5LCyC4HvLSyvqhcPNtSIJHlPVf1GkmvYxglXxrhmofFK8rFZ2UnOTdZLVNXe3bGFh7For0n16oPdh1bGS7rPJw46xYgleSPbObucf1z26oYk72Ry8qCfnjVxjIc9GeQlkjyHyS+0A4CrmKzJ/S/A45B7UlVnJ7kTcL9u0Y1V9aPtfY92XlXd1H35/Kp65eL7kvwxk/eWNZ3N3edjgSOY7GkNkwt4eHGJft2ZSYgXn4O9gNEF2U3WS3Sb+Y5mcoauByW5P5P3hH5z4NFGI8mvMNlR40tM3hI4EDi5qi4ecKzRuYPjva92k3V/utM5Hr/wB2WSPYALqurfDjuZ1iIvLnF7P6iqH8DkdINVdQNw+MAzjc2fMPkl9qiqeiTwq8CfDTzTaCR5XveH5eFJrl708UUmOyyqP/szOY5+wV27ZepJktcn2SfJHkk+muTmJE8feq6V4Cbr29vSnZD/74ELk/wfJocyqD97VNWNCzeq6rPdmoX68U7gfLZxvLfnWO7daWy98AFMrvT0muHGGaXjq+oVSZ7M5Pr0T2VyRsV3DDtW/9xkvR1JHsXkUl8fXny5QE2nOxVeAW/vFv0WsK6qvKpWD5LsU1W3dDsn3o5R7leSewHHdDdHe+GDoSS5rqp+MclfAX9XVR8e6zXqDbJWXXfloRcAj2DyHvLFwF9Wlded7kGS86rqxG4TdbH1NLAwOYTvkIFGG40k96+qG5I8ZFv3V9UVqz3TWCU5DXgSk+t7P5TJtZHPq6pjtvuNa5BB1iC6vawfwORA/xvdAqG1JMmmqtq4aFP1YjUrx82ulu5KZbd0Z1PcC9hnjFsiDLJWXXeKwdOBf2ay9nYw8HtVdf6gg43EHa21LXDtrR/ddb0fXlWXDD3LGCU5rqo+luTfb+v+MR6HbJC16pLcAJxYVZ/vbh8KfLCq7j/sZONwB2ttC1x761GSS6vq4UPPMUZJTq2qVyd52zbuHuXlFw2yVl2Si7vDnRZuB7ho8TJpLfDc9yur2wrxlKp6z9CzrAaDrFWX5M3AfYH3MNnp6KnAjcAlMM5NUUPoDiV7HrDwh84ngDM8K1p/PPf9ylv6B/yYGWStujvYBLVglJuihpDkLcAeTM6KBvAM4MdV9ZzhppJ2TZI/ZLKH9d/wsxejGd3hewZZGqltHas51uM3h5Jkm2tunga2P93he0uN8vA9z9SlVZfkfsCbgXtW1ZFJjgKeUFWvHXi0sflxkkOr6p8BkhwC/HjgmcbmPy/6ek8mx8leDrjjXE+q6uChZ1gtriFr1SW5iMkvsjOq6sHdsmur6shhJxuXJI8G3gZ8oVu0HnhWVW1vL2xNIcmBwOur6qShZxmLJL+9reVV9derPctKcw1ZQ9irqj412bn6p24bapgRuwQ4g62XDj0DuHS4cWbCFsA/LPt19KKv92Ty//kKwCBLPbi5O/a4AJI8Bbhp+9+iZfhr4Bbgj7rbJzE5f/hTB5toZJK8ke7/MZOr5z0I+PRwE41PVb1o8e0kd2PrefBHxSBrCC8ANgH3T/I14ItMLjChfh2+ZAeujycxFv3avOjr24B3eeauFfd94H5DD7ESDLJWTZKXLbr5ISaXUNuNyaEMvw786RBzjdiVSR5WVZ8ESHIM3bHe6kdVnb3jR2kaSc5ddHM34Agm5zAYHYOs1bRwIffDmbwv9AEmJ1J4BpMrPqlfxwC/neQr3e2DgOuTXMPksJGjhhttHBZeyyWLv8tkzfm1VfWt1Z9qdO7F1r3ZbwO+ArxwuHFWjntZa9UluQD49aq6tbu9N/C3VXXCsJONS5L7bu/+qvryas0yVklez+RQsnd2i57Wfb4FeERV/btBBhuRJFdU1UOWLLt6jH9QuoasIRwELL7c4g+ZHJKjHhncVXFsVR276PY1SS6pqmOTPH2wqUYgyfOA5wOHJLl60V17M9K3XgyyhvB24FNJ3s9kc9+T2Xp6R2ktuWuSY6rqMoAkDwXu2t3noXzTeSdwPvA64JRFy28d42kzwU3WGkh3zd5f7m5eXFVXDjmPtBxJjgbOZGuEbwWeA1wHPH5WrlKkfhhkSZpSd2xsquo7Q8+itWu3oQeQpLUqyT2TvBV4d1V9J8kRSZ499FxamwyyJC3fWcBHgP27258FXjrYNFrTDLIkLd9+3fvEPwGoqtvwilpaJoMsScv3vSQ/z9bzsj+MyYlBpF3mYU+StHwvA84FDk1yCTAHPGXYkbRWuYYsSct3KPA44JeYvJf8OVzR0TIZZElavj+sqluAuwOPYXIVszcPO5LWKoMsScu3sAPX44HTq+oDwJ0GnEdrmEGWpOX7WpIzgN8APpTk5/D3qpbJM3VJ0jIl2Qs4Abimqj6X5N7AA6vqgoFH0xpkkCVJaoCbViRJaoBBliSpAQZZWuOS7Jvk+d3X+yd579AzSdp1vocsrXFJ1gPnVdWRA48iaQquIUtr32lMTt14VZK/TXItQJJnJvlAkg8nuTHJqxe+IcnLklzbfXh1IqkBnuJNWvtOAY6sqgctrC0vuu+hwJHA94F/SvJBJhdCeBZwDBDgsiQXVdWVqzq1pJ9hkKVxu7CqvgWQ5H3AI5gE+f1V9b1Fy38ZMMjSgNxkLY3b0p1EislasaTGGGRp7bsV2PsO7ntsknskuTPwJOAS4GLgSUn2SnIX4MnAP6zOqJLuiJuspTWuqr6V5JJuZ67rl9z9j8DbgX8FvLOqNgMkOQv4VPeYt/j+sTQ8D3uSRirJM4ENVfXCoWeRtGNuspYkqQGuIUuS1ADXkCVJaoBBliSpAQZZkqQGGGRJkhpgkCVJaoBBliSpAf8fpRk2YrcyQUcAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"c.totaldata()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"75"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c.numtotaldata()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# 'arte':\n",
" . Most correlated unigrams:\n",
". artes\n",
". arte\n",
" . Most correlated bigrams:\n",
". secretaría cultura\n",
". bellas artes\n",
"# 'deporte':\n",
" . Most correlated unigrams:\n",
". futbol\n",
". deporte\n",
" . Most correlated bigrams:\n",
". 30 años\n",
". comisión nacional\n",
"# 'politica':\n",
" . Most correlated unigrams:\n",
". político\n",
". política\n",
" . Most correlated bigrams:\n",
". cada vez\n",
". banco méxico\n",
"# 'seguridad':\n",
" . Most correlated unigrams:\n",
". seguridad\n",
". víctimas\n",
" . Most correlated bigrams:\n",
". subsecretario derechos\n",
". derechos humanos\n",
"# 'turismo':\n",
" . Most correlated unigrams:\n",
". roo\n",
". turismo\n",
" . Most correlated bigrams:\n",
". secretaría turismo\n",
". quintana roo\n"
]
}
],
"source": [
"c.ngramas()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAELCAYAAAAlTtoUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8FfW9//HX52QPCZugIhGCAuJalxS1aFG0Fu21itpbl1pX7IKldrFXq22pXfRWe3ulWupStPZnbbVaay2yqAVvESkBEUVFWURAhCAQCdnP+fz+mElyEg5hIDmcAO/n45FH5sx8Z87nfM/MfOY7M+c75u6IiIhEEct0ACIisudQ0hARkciUNEREJDIlDRERiUxJQ0REIlPSEBGRyJQ0REQkMiUNERGJTElDREQiy850AJ2lT58+XlpamukwRET2KPPnz9/g7n2jlt9rkkZpaSnl5eWZDkNEZI9iZit3prxOT4mISGRKGiIiEpmShoiIRKakISIikSlpiIhIZEoaIiISmZKGiIhEttf8TkNEpCuoqanh+eefZ86cOdTV1TFo0CDOPfdcBg4cmOnQOoWShohIJ1m2bBnfu/FGKjZsaB43b948Hn/8ca655hquuOKKDEbXOdJ2esrMJpvZejN7YzvTzcwmmtlSM1tkZscnTbvCzN4N//b8WhaRvd7WrVu5MUwYJQ2NXP7xFsZtruSUmhrMnd/97ndMmzYt02F2WDqvaTwMjG5n+tnAkPDvOmASgJn1Bn4EnAgMB35kZr3SGKeISIdNnTqVDRs2MKChgZs2beKU2lqOqa/n8i1VXFJVBcCjjz6Ku2c40o5JW9Jw95eAje0UOQ94xAOvAD3NrB/wWWCGu290903ADNpPPiIiGTd79mwAPlNdQ06baafU1NItkeC9995j9erVuz+4TpTJu6f6A6uSXq8Ox21v/DbM7DozKzez8oqKirQFKiKyIzU1NQD0TCS2mZYF9AjH19bW7s6wOl0mk4alGOftjN92pPv97l7m7mV9+0bu2VdEpNMNGDAAgDdyc7eZVhGLsTYri5ycHA488MDdHVqnymTSWA0cnPS6BPignfEiIl3WueeeC8ALhQUsyMttPtLdGIvxUPfuuBmjRo2iuLg4c0F2gkzecvsMcL2Z/Yngonelu681s2nAz5Mufp8F3JypIEVEojjqqKM4//zzefrpp7mvRw/6xOMUJRK8n51Nwoy+ffsyduzYTIfZYWlLGmb2GHAa0MfMVhPcEZUD4O6/BaYA5wBLgWrgqnDaRjP7CTAvXNRt7t7eBXURkS7hhhtuoH///jz22GNs2LiRDVlZZGVlcfqnP83Xv/519t9//0yH2GG2p9/+1aSsrMz15D4R6QoaGxtZunQpdXV1DBgwgF69uu6vBsxsvruXRS2vX4SLiHSy7Oxshg0blukw0kIdFoqISGRKGiIiEpmShoiIRKakISIikSlpiIhIZEoaIiISmZKGiIhEpqQhIiKRKWmIiEhkShoiIhKZkoaIiESmpCEiIpEpaYiISGRKGiIiEpmShoiIRKakISIikSlpiIhIZEoaIiISmZKGiIhEpqQhIiKRKWmIiEhkShoiIhKZkoaIiESmpCEiIpEpaYiISGRKGiIiEpmShoiIRKakISIikSlpiIhIZEoaIiISmZKGiIhEpqQhIiKRKWmIiEhkShoiIhKZkoaIiESmpCEiIpEpaYiISGRpTRpmNtrMlpjZUjO7KcX0gWb2gpktMrOZZlaSNC1uZgvDv2fSGaeIiESTna4Fm1kWcC/wGWA1MM/MnnH3N5OK3QU84u6/N7NRwO3A5eG0Gnc/Nl3xiYjIzktnS2M4sNTdl7t7PfAn4Lw2ZY4AXgiH/5liuoiIdCHpTBr9gVVJr1eH45K9BlwYDo8Bis1sv/B1vpmVm9krZnZ+GuMUEZGI0pk0LMU4b/P6u8BIM3sVGAmsARrDaQPcvQy4FPhfMzt0mzcwuy5MLOUVFRWdGLqIiKSSzqSxGjg46XUJ8EFyAXf/wN0vcPfjgFvCcZVN08L/y4GZwHFt38Dd73f3Mncv69u3b1o+hIiItEhn0pgHDDGzQWaWC1wMtLoLysz6mFlTDDcDk8Pxvcwsr6kMMAJIvoAuIiIZkLak4e6NwPXANOAt4HF3X2xmt5nZ58NipwFLzOwd4ADgZ+H4w4FyM3uN4AL5HW3uuhIRkQww97aXGfZMZWVlXl5enukwRET2KGY2P7x+HIl+ES4iIpEpaYiISGRKGiIiEpmShoiIRKakISIikaWtw8J90bp163jllVeoqalh4MCBDB8+nLq6OmbMmMH8+fPJysrixBNPZOTIkbz++uusWLGCeDxOIpEgOzubgw46iJNPPpmcnJxMf5Q91qZNm5g9ezZVVVWqz07Q2NjIvHnzWLlyJQUFBZx00kkccMABmQ5LMki33HaC2tpafvnLXzJjxgwSiUTz+KKiImpqaojH483jHIiZ0VTvTuv+Vnr37s348eMZNWrU7gl+L9HY2Mi9997L3/72NxobG5vHqz533b///W9+8YtfsH79+uZxsViMs846i29/+9vk5+dnMDrpLDt7y61aGh2USCT4wQ9+wNy5c3GLUdN7KPHcYgo3LKaqqgqAuuL+1BX1I3frOvI/XoW7k7AYMQ8STE3PQ2go6EV+5Uo2btzAhAkTyMnJ4dRTT83kR9uj3HXXXUyZMgXDOWm/LZQU1DF/UxErNm5Ufe6ChQsXctNNN9HY2Ei8e5yGkgZiW2PkrMph6tSpVFZWcscdd2CWqos52ZspaXRQeXk5c+fOJZGdz4dHXUZjYR8sXke3itcB+Gjw59i6/1HN5Qs+WkLfJU8T8wQJy2b9kV+kvnv47Cl3eqyaTY/Vs5k0aRIjRowgFtNlpx1ZtmwZU6ZMITeW4FfHLePoHtUAuMNDKw7g4fcOVH3upPvuu4/GxkZqD6+l5uSa5uZwbGOM7v/ozpw5c1iwYAEnnHBCZgOV3U5bUAdNmzYNgI/7fZLGwj4AFHz0LrF4PbXFJa0SBkDNfofRkNcDgK0HHN2SMADMqDz4UzTmFrN69WoWL168ez7EHq7pOzin38bmhAFgBl8uXUffvHrV505oqivPcWo+WdPq/Gmid4LaI2sBmDp1aoYilEzaZ1oaEydO5LnnnuvQMqqrq9neNaC64oOah7Pqg9NS9UnjknksuDBbV5RiusWoL+pH9sYtjBs3LuX8ZkZhYeHOhL6Ns88+m/Hjx3doGR0xceJEli5d2qFlrF69GqD5mtER3au3KZMdg2Hdq6moyOXOO++kZ8+e25QZPHhwRuuiM3RmfTbVUbx3HFLcQ9C4f3DNaPbs2dvU295Ql9I+tTQ6Se7Wdc3DiZzCbcYls0TD9qe7b3c+aa2mpoaamhqys4Njn3erCrYpk3BYuiUY31ROUmtbn7FNsZan2yTJ/iiYrrvS9k26e6qDZs+ezc0330w8pxsfHn058fweWGMt/cvvJZZopGLYBdT0HtJcPm/ze+z/5p8xIBHLYd3Rl9PQreVZIMUfzKPXey9y4IEH8thjj5GVlbXbP9OeoumIdty4cYwdO5aCrDi/OWEphxbVNpd5YlUffv1uf9VnBE31effddzN27Fjeeecdaj5RQ+0JtS3XNLbEKH6mmFhtjF/84hecdNJJGYxYOoPuntrNTjrpJI455hgWLVpEv4W/o7rP4cRzi0hk5RFLNNL37aeo6XVo891TBRvfxQC3GLFEAwcu+j3VfYbRkN+T/MqV5H8cnCK49tprtYOL6LDDDmPkyJHMmjWL6+YN4fT9N9O/sJ75G4tYVFkEqD53hpkxduxYvve971HwWgE5a3JoODi4eyp3eS7WaBx77LEMHz4806FKBihpdFBWVha33347P/vZz3j55ZcpWr+oeVpubi4NDQ0UbFpGwaZlQMvzbi283dY8TreKlgu0BQUFjBs3jrPOOmu3fYa9wa233kp+fj7Tp09n+rrezeNVn7vmxBNPZMKECdx1111s2bCF7A0tu4oRI0Zwyy236E60fZSSRicoLi7mjjvuYPny5cyePZva2loGDhzIyJEjqamp4amnnmLRokXEYjE++clPMnr0aBYsWMDy5cupq6sjkUhQUFBAv379GDVqVIcvcu+L8vLyuOWWW7jyyiuZNWsWW7duVX120Omnn86nPvUpZs2a1fyL8BEjRjBo0KBMhyYZpKTRiQ455BAOOeSQVuPy8vK4+uqrtyl7xhlncMYZZ+yu0PYZ/fv359JLL810GHuNvLw8tdKkFbUvRUQkMiUNERGJTElDREQiU9IQEZHIlDRERCSySEnDzJ40s8+ZmZKMiMg+LGoSmARcCrxrZneY2bA0xiQiIl1UpKTh7s+7+2XA8cB7wAwze9nMrjIz9VomIrKPiHy6ycz2A64ErgVeBe4mSCIz0hKZiIh0OZF+EW5mTwHDgD8A57r72nDSn80sMw/mFhGR3S5qNyL3uPuLqSbsTJe6IiKyZ4t6eupwM2t+5JmZ9TKzr6cpJhER6aKiJo2x7r656YW7bwLGpickERHpqqImjZiZNT9e3syygNz0hCQiIl1V1Gsa04DHzey3BM8R+iowNW1RiYhIlxQ1afwX8BXgawRPC54OPJiuoEREpGuKlDTcPUHwq/BJ6Q1HRES6sqi/0xgC3A4cAeQ3jXf3Q7Y7k4iI7HWiXgh/iKCV0QicDjxC8EM/ERHZh0RNGgXu/gJg7r7S3ScAo9IXloiIdEVRL4TXht2iv2tm1wNrgP3TF5aIiHRFUVsaNwCFwHjgBOBLwBU7msnMRpvZEjNbamY3pZg+0MxeMLNFZjbTzEqSpl1hZu+Gfzt8LxERSb8dtjTCH/L9p7vfCFQBV0VZcDjfvcBngNXAPDN7xt3fTCp2F/CIu//ezEYRXGy/3Mx6Az8Cygh+FzI/nHfTTnw2ERHpZDtsabh7HDgh+RfhEQ0Hlrr7cnevB/4EnNemzBHAC+HwP5OmfxaY4e4bw0QxAxi9k+8vIiKdLOo1jVeBv5nZE8DWppHu/lQ78/QHViW9Xg2c2KbMa8CFBM/mGAMUh8/tSDVv/4ixiohImkRNGr2Bj2h9x5QD7SWNVC0Tb/P6u8A9ZnYl8BLBBfbGiPNiZtcB1wEMGDCgnVBERKQzRP1FeKTrGG2sBg5Oel0CfNBmuR8AFwCYWRFwobtXmtlq4LQ2885MEdf9wP0AZWVl2yQVERHpXFF/Ef4QKY703f3qdmabBwwxs0EELYiLgUvbLLcPsDHspuRmYHI4aRrwczPrFb4+K5wuIiIZFPX01LNJw/kE1x8+2E5ZANy9MfxNxzQgC5js7ovN7Dag3N2fIWhN3G5mTnB6alw470Yz+wlB4gG4zd03RoxVRETSJOrpqSeTX5vZY8DzEeabAkxpM+6HScN/Af6ynXkn09LyEBGRLiDqj/vaGgLoyrOIyD4m6jWNLbS+pvEhwTM2RERkHxL19FRxugMREZGuL9LpKTMbY2Y9kl73NLPz0xeWiIh0RVGvafzI3SubXrj7ZoK+oUREZB8SNWmkKhf1dl0REdlLRE0a5Wb2P2Z2qJkdYma/AuanMzAREel6oiaNbwD1wJ+Bx4Eawh/iiYjIviPq3VNbgW0eoiQiIvuWqHdPzTCznkmve5nZtPSFJSIiXVHU01N9wjumAAgfjKRnhIuI7GOiJo2EmTV3G2JmpaTo9VZERPZuUW+bvQX4l5nNCl9/mvDhRyIisu+IeiF8qpmVESSKhcDfCO6gEhGRfUjUDguvBb5J8AS9hcBJwBxaP/5VRET2clGvaXwT+CSw0t1PB44DKtIWlYiIdElRk0atu9cCmFmeu78NHJa+sEREpCuKeiF8dfg7jaeBGWa2iR087lVERPY+US+EjwkHJ5jZP4EewNS0RSUiIl3STvdU6+6zdlxKRET2Rrv6jHAREdkH6ZkY0qVt2LCByspK9ttvP3r27NlqmrtTX1/PihUr6NevH/n5+RmKcu8Qj8epq6tj0aJFFBcXc+CBB1JQUJDpsLq8yspKNmzYQI8ePejTp88207ds2cK6deuoqqqiZ8+e9OvXj7y8vAxE2jmUNKRLWrRoEZMnT2bBggUAmBknn3wy1157LYceeijPPPMMb7/9NnV1dVxxxRUUFhYyevRorrnmGoqL9Uj7nfHhhx9y//338/rrrwNw/fXXA5Cbm8vo0aO59tprt0nYAitWrODBBx9k9uzZJBIJAD7xiU9w1VVXcfzxx7NmzRruv/9+Zs2a1TwdID8vj8+fdx5XXXUV3bp1y1T4u8zc944upMrKyry8vDzTYUgnePnll7nllluIx+PkxRIcmF/Pmpo8Gt0oyM/n5E99ihdffBGAnjkNdMtOsKYmOHIbNGgQ99xzjxJHRGvWrGHcuHFs3LixeVwiL4HnOVkfZwFw8MEHc++99ypxJFmyZAnf/OY3qa6uJubOAfE4H2VlUW9GLBZj3LhxPPLII1RWVmLh9M2xGLWxlisChx12GHfffTeFhYUZ/CRgZvPdvSxyeSUN6Urq6uq46KKLqKysZEz/DYw9dC1F2Qk21Wcz8Z2DeGF9LwByzLlx2CrOPGAT2TFYuiWfHy8eyMrqfC688EK++c1vZviT7BluvPFG5s6dC4CbUz2imvoh9RCD2KYY3WZ2I3tjNueeey433nhjhqPtGtyda665hqVLl3JcbR2XVG2hR8KpNePZboXMKCwkKxYjnkhweH09X/54C70TCeqB6YWF/L2oG7iDGZdffjljx47N6OfZ2aShC+HSpbz00ktUVlYypKiGG4auoSg7aNb3ym3k+0esIi8WB+A/B6xndL8gYQAMLq7l1iPfB2Dq1KnU1dVlJP49ydq1a5k7dy5uwYFj3RF11B9W37xXSPRKsPW0rQDMmDGD6urqTIXapbz55pssXbqU4kSCaz7+mB6JoP7y3bmwaiv9GxqIJxLkuXNd5cf0Dk9N5QL/UV3NUXV1YAbAs88+S2NjY6Y+yi7RNQ3ZJVdffTVr167t9OXW19cDcErfyqbtqllOzMmLOXUJOLVv5TbzHlZcwwF59azbCp///OeJxXbPMVG/fv2YPHnyLs+frrrckaadlWc71mA0DGzYpkyiV4J4jzi1lbWcf/75ZGVlpT2ujtbnxIkTee655zoUQ3V1NTs6C3NkXT05bcYZUNLYyJqcHIbW11OYYhnH1dXzRl4eWe5s2rSJUaO234WfmXX49NXZZ5/N+PHjO7SMZEoasks2b95MzdYq8rI69/SmJwBiVDakXjWb3q2yftvpDQljazzYqSXqtgZbcJrVxY3NmzfvuGA7Nm/eTFV11e7fGhNgWHOlWm2KCkuA1QXjaxprIJ7mmBrpcH3uLlWx1CtYfXi0U7Wdg5am+RIpp3Z9ShqyS0pKSujTuJZby6o6dbnLKrP40bzuTP+wJ18uXUfv3Jam+6rqXLY2BhviE6v6cuJ+W0jebqes7UVVYxYl3eLcftLH27RU0uGn5UXkl5R0aBklJSVUWAWJ03bzbqQRYs/GiDUEdZq3OC9obSTt63KX5RKrjeFFTmJ0Iu2JODYzRkn/jtXn+PHjO/XIuq0NGzbwhS98gTdzc/kgK4uD4i2ZtMqMd3NzwZ0VOTksy87m0KTTT7Vm/F94G7ObceSRRzJp0qS0xZoOShrSpRzaI86wng28vTmHr5UP5rKB6xlcVMsbHxfyx5X7kyBGljnlm4r5zsJDuLBkA91z4sxc34On1gT3yH9uYO1uSRh7vGzwwY69ZThOzrocip4rou7IOhIFCXJX5pK3OLgrzYf6bmm57Qn69OnDZz/7WaZMmcIve/Vk9NZqBjc0sCY7m2mFBVTFYvTu3ZuNGzcysWcPPltdw7D6etZnZTGtWyEbsrKaL4RffPHFmf44O01JQ7qcbxy9lV+8WsTKqjzuWnJwq2nDejbwH6W1/OaNbszfVMz8Ta1vrT2vtIZT+tXvznD3aH6Ek6hKEFsVCxLHhznkfNj6TH1iaAI/ZO+4y7Kz3HDDDaxfv57y8nL+UlzUalppaSl33HEHkyZNYtasWfytqBt/o83vMcwYO3YsI0eO3I1Rdw4lDelyeuQ5E4ZvYe66XF7+MJct9UbPvASfPqie4/s0kBWDOz/1MTPX5PHaR9k0JoyDi+KcWVLHoO7pPum+l4mBn+jEB8WxpQabgEYgB7yP44Md9st0kF1Pfn4+d955J3PmzOG5555j/fr1dO/enTPPPJNRo0aRl5fHbbfdxrx583jqqadYsmQJtbW1FBUVUVZWxkUXXcShhx6a6Y+xS5Q0pEvKicEp/eq322rokeucN6iW8wbt5sD2RgYcAH6A46hFEVVWVhannHIKp5xySsrpZsbw4cMZPnz4bo4svfQ7DRERiUxJQ0REIlPSEBGRyJQ0REQkMiUNERGJTElDREQiS2vSMLPRZrbEzJaa2U0ppg8ws3+a2atmtsjMzgnHl5pZjZktDP9+m844RUQkmrT9TsPMsoB7gc8Aq4F5ZvaMu7+ZVOxW4HF3n2RmRwBTgNJw2jJ3PzZd8YmIyM5LZ0tjOLDU3Ze7ez3wJ+C8NmUc6B4O9wA+SGM8IiLSQelMGv2BVUmvV4fjkk0AvmRmqwlaGd9ImjYoPG01y8xOTWOcIiISUTqTRqo+Mdv2UXAJ8LC7lwDnAH8wsxiwFhjg7scB3wb+aGbd28yLmV1nZuVmVl5RUdHJ4YuISFvpTBqrgeQuSkvY9vTTNcDjAO4+B8gH+rh7nbt/FI6fDywDhrZ9A3e/393L3L2sb9++afgIIiKSLJ1JYx4wxMwGmVkucDHwTJsy7wNnAJjZ4QRJo8LM+oYX0jGzQ4AhwPI0xioiIhGk7e4pd280s+uBaUAWMNndF5vZbUC5uz8DfAd4wMy+RXDq6kp3dzP7NHCbmTUSPGDyq+6+MV2xiohINGntGt3dpxBc4E4e98Ok4TeBESnmexJ4Mp2xiYjIztMvwkVEJDIlDRERiUxJQ0REIlPSEBGRyJQ0REQkMiUNERGJTElDREQiU9IQEZHIlDRERCQyJQ0REYlMSUNERCJT0hARkciUNEREJDIlDRERiUxJQ0REIlPSEBGRyJQ0REQkMiUNERGJTElDREQiU9IQEZHIlDRERCQyJQ0REYlMSUNERCJT0hARkciUNEREJDIlDRERiUxJQ0REIlPSEBGRyJQ0REQkMiUNERGJTElDREQiU9IQEZHIlDRERCQyJQ0REYlMSUNERCJT0hARkciUNEREJLLsTAcg0hHvb8li+qo8Fm/Mpi5uZMecxoSRE4OhPRv5zMG1DO0Zz3SYXVcF2FLDPjIw8O4ODrbFAPA+jg922C/Dce5B3n33XZ588kkWLFhAPB7n8MMP54ILLuD444/PdGidIq1Jw8xGA3cDWcCD7n5Hm+kDgN8DPcMyN7n7lHDazcA1QBwY7+7T0hmr7Hn+74NcHnirkIRbyulz1uUyZ10uXxxczbmldbs5uq7PFhuxN1ufbLDq1nVp7xu8D4ljEvhhvjvD2yM9++yz3HXXXSQSieZxFRUVvPTSS1x22WV85StfyWB0nSNtScPMsoB7gc8Aq4F5ZvaMu7+ZVOxW4HF3n2RmRwBTgNJw+GLgSOAg4HkzG+ruOmQUAFZVxZoTxkm9K3llYw8M5wsHV/C5fhsxg+fW9ubP7/flz0sLKS2Oc/R+jZkOu+tYA7E3Y7g5tcfUEi+OU/SvIhyn7ug66oYESTbvnTzy3sgjtihGvFcc9s9w3F3YkiVLmhPGyOoaPl1TQw4wNz+PqYWFPProowwdOpTTTz8906F2SDqvaQwHlrr7cnevB/4EnNemjAPdw+EewAfh8HnAn9y9zt1XAEvD5YkAMH1VPgk3PtfvI7LDtfhLA9dz/ZC1DCqqo7RbHV8bvJYrBq0DYOr7+RmMtuuJvRtUWk1ZDbVlteSuzAWg9rhaaobXkOiVINErQc2JNdQeWxvM844ugbbnySefbE4Yl1ZVURKPc0A8zue3VnNh1VYAHn/88QxH2XHpPD3VH1iV9Ho1cGKbMhOA6Wb2DaAbcGbSvK+0mbd/esKUXfV+VRY/LS/apXnXVceojac+rRRF07zn9/+I8a8eGgyXbNim3Pn9P+KhFQfy2kfZXPtiDyzFW+ZnOQcUJradEMH7VVkM3aU529gMsZkd2ClXAVEbUg7WaEGrYlgdOOR8kANA3eHbnsarG1ZHwcICWAuxp3cQYzawa6tEYDN77JY+f/58AEbW1Gwz7ZSaGv5S1I3FixdTV1dHXl7e7g6v06QzaaTaI7Q9KXoJ8LC7/9LMTgb+YGZHRZwXM7sOuA5gwIABHQxXdsbgwYM7NH/W6tXEUmxckVVXgzt5WQni4TWN/Ni259zzYk3JwIjld8NSZI2sggLyS0p2KYyhdLwuOjo/wOrVq6mJWJ/uTnVjdbCVZYUjw2ryrBTXLcK9hGF0y+3W7rILCgoo6b9rdQlA/86pj0yIx4Oz57m+bR1mE5zWSSSV21OlM2msBg5Oel1Cy+mnJtcAowHcfY6Z5QN9Is6Lu98P3A9QVlamq3S70fjx4zP6/j/84Q+ZOXMmL6zrybDiahZVFjFjXU8uKPmoVbnn1/UE4Mgjj2TSpEmZCHWHMlGXV155JcuXLyd3RS71g+uJ942TvT6b3OW51A+rb1U2d1lw6uqYY47hnnvu2e2x7imGDRvGyy+/zLz8fM6prm417dW8PBrNGDBgAAUFBRmKsHOk8yTlPGCImQ0ys1yCC9vPtCnzPnAGgJkdDuQDFWG5i80sz8wGAUOAf6cxVtnDjBkzBoD/t/IA+hcEO7n7lvXjubW9aEgYDQlj2tpe3Ls0ONdx/vnnZyzWrqip/grnFJKzPCc4TQUUzi0k993c4J7FOOS+m0vBvGAnpzps3wUXXADAP7oVMqsgn3qCapyfl8sfi4NzdmPGjEnZ2t2TmKdoSnXaws3OAf6XoBE82d1/Zma3AeXu/kx4l9QDBGdBHfieu08P570FuJrgTO0N7v5ce+9VVlbm5eXlafss0vXcd999PProowAEZ+iDjTEnlsCA+kRwTHTWWWfx/e9/n1hMF3KbxONxJkyYwKxZswDwWPj7jPBUX9NpKguvHZ199tncdNNNe/zM0Dh/AAAPdklEQVQOL53cnXvuuYcnnngCgGwP1siGsM5GjBjBT37yE7Kzu9bP48xsvruXRS6fzqSxOylp7HvcnRdffJHHH3+ct956C4Ds7GwaG4MrwoMGDeKCCy7g3HPPVcJIIR6P8/TTT/PXv/6V999/H4D9998fd6eiogKAQw45hIsuuohzzjlHdRiBuzNjxgwee+wxli1bBkBJSQljxoxhzJgxXS5hgJJGpsOQDKmuriYej1NUVMTWrcHtjUVFHbmNZ9/h7lRVVRGLxejWLbjQXVVVBagOOyJ5nezKLbSdTRpdL+2J7ILCwsLmYe3odo6ZUVxc3Gqc6rDjktfJvYnamyIiEpmShoiIRKakISIikSlpiIhIZEoaIiISmZKGiIhEpqQhIiKR7TU/7jOzCmBlpuOIoA+wbR/esqtUn51L9dl59pS6HOjufaMW3muSxp7CzMp35teX0j7VZ+dSfXaevbUudXpKREQiU9IQEZHIlDR2v/szHcBeRvXZuVSfnWevrEtd0xARkcjU0hARkci6TNIws7iZLTSzN8zs72bWs5OWW2pmb3TSsh42sxVhnAvNLG0Pdzaz08zsU23GfTmsn8Vm9qaZfTcpros66X0PMrO/JL1+zMwWmdm3zOw2MztzJ5ZVlWLcV83sy50R6w7e+2ozez2M/Q0zO8/MrjSzx9qU62NmFeGjhXPM7A4zezec599mdnaa43Qz+0PS6+wwnmcjzFsV/i81s0uTxpeZ2cT0RNz8Hp83s5t2UOZKM7snHJ5gZtVmtn/S9Kqk4abt/zUzW5Bi3d9mXdqFmFut2ymm9zSzr0ctH5aZaWZLwrjnmdmxHY2zM+3sNhuJu3eJP6Aqafj3wC2dtNxS4I1OWtbDwEW7OG/WTpafAHw36fXZwALgoPB1PjC2o3HtIIYDgZWd8Z3uxvXIgAHAMqBHOK4IGAR0J7hvvjCp/FeB34XDd4TrXl74+gDgP9McbxXwKlCQ9D0vBJ6NWr/AaVHKZ+C7uBK4JxyeALwP/Heq9aPN8GeBWbt7XdqVfQUwEygLh68CZnRSLNmZ/v6299dlWhptzAH6A5hZkZm9EB59vG5m54XjS83sLTN7IDzynm5mBeG0E8LMPwcY17RQM8s3s4fC5bxqZqeH4680s6fDFs4KM7vezL4dlnnFzHq3F6yZXRIu8w0z+++k8VVhpp8LnBzGNcvM5pvZNDPrF5YbH7YcFpnZn8yslGBn9q3w6OtU4GaCJPIBgLvXuvsDKWL5YXjE84aZ3W8WPDKs7XuE40ZaS6vpVTMrttYts+nA/k0xWFKLpp3PMtPMfm5ms4CcFPFNsJYW0kwz++/wiP6d8HNiZllmdmf4ORaZ2Vcirgu/IUisg4AtBDtk3L3K3Ve4+8fAS8C5SSFdDDxmZoXAWOAb7l4XzrfO3R9v77vvJM8BnwuHLwGaW0PJ9RW+fiNcP5LdAZwafk/fsqCV+mzS/JPDul5uSa3jcB1/I/y7IRxXamZvm9mD4fhHzexMM5ttQQtseFguuRVxrpnNDdeh583sgO18zsnAF3e0PREk9007KIOZDQzXh0Xh/wHh+EPD7XZeuP0lt8jeCIePDNe7heH8Q8J6PDQcd2eb8llmdpe1tF6/kSKk5v1WOM9ZZjYnXF+fMLOicPw5YR3/y8wmtvmu7jez6cAj7WwH/czsJWs5M3NqWPbh8PXrZvatsGzyNntG+B29Hq4TeeH498zsx0nb1bB2Kz7TWSspszYdNWUBTwCjmzIu0D0c7gMsJTiaLAUagWPDaY8DXwqHFwEjw+E7CY8egO8AD4XDwwiOfPIJjoiWAsVAX6AS+GpY7lfADeHww8AKgiPBhcDRwEHhcvqGsb4InB+Wd8IjVYId6MtA3/D1F4HJ4fAHtBzd9gz/T6B1S2Mj4ZFzirp7mLClAfROGv8H4Nx23uPvwIhwuCiMvzSpvpqHk99nB59lJvCb5O+0TazNnyss+8tw+Bzg+XD4OuDWcDgPKCdIBO2tCwngpKR1aFr4vTzUVAfhtC8Afw2HDwrrJQs4Bng1E+t9+N5/IVgXF5LUckixHrwBlLbZZprLt30dzv9yWI99gI/C7+8E4HWgW/jdLwaOo2W7Oprg9PV8gp29AecBT4fLvZKWVkQvWm6quTbpO00uMwH4LvBD4Mdt1w8gHn72twm2vxNS7R/ajPs7cEU4fHVSbM8Cl4TDX02qp1Ja1u1fA5eFw7lAAduu78nlvwY8SdgCINzOaN3SuAH4edL6+RLQLXz9X+FnzwdWAYPC8Y+1+a7m09Lq3N528B3CMzEE625x+H3OSIq9aRt/mGCbbXrfoeH4R2jZr71HcLAE8HXgwfbW2a7U0igws4UEK3VvYEY43oCfm9ki4HmCTN50JLPC3ReGw/OBUjPrQVBhs8LxzeeLgVOaXrv72wTdjgwNp/3T3be4ewXBSvv3cPzrBCtPkxvd/djw73Xgk8BMd69w90bgUeDTYdk4wYoGcBhwFDAj/Jy3AiXhtEXAo2b2JYINtiNOD4/6XgdGAUe28x6zgf8Jjz57hvFH0d5nAfjzTsT7VPh/Pi31fBbw5XDZc4H9gCG0vy6sdPdXANw9Dowm2FjeAX5lZhPCcs8Cp5hZd+A/gb+E5TPG3RcRfPZLgClpeIt/uHudu28A1hPU2SkEyXOru1cRfA+nhuVXuPvr7p4gSCYveLBHabstNCkBpoXr3I20rHOpTASuCOs/WU24TQ0j+O4eMdvhg7VPBv4YDv8h/ExN458Ih//YdqbQHOD7ZvZfBN1o1Ozgvc4Eftu0jbj7xqRpj5rZaoLE8Otw3EnAEcDscD2+AhhIcLC63N1XhOVaXWMDnkmKZXvbwTzgqnCdPtrdtwDLgUPM7NdmNhr4uM1yDyP4Xt8JX/+elv0UpN4OU+pKSaPG3Y8lqNhcWk4rXUZwFH9COH0dQdYEqEuaP05wJGoER/iptLcSJi8rkfQ6QfvPUm9vmbVJOyQDFiclnKPd/axw2ueAewmOFuabWar3WxxO334gZvnAbwhaHUcDD9BSV9u8h7vfQXBkWAC8ssNmadJbtfNZALZGXA601HPT99e0/G8kLX+Qu0+n/XWh1Xt64N/ufjvBKagLw/E1wFRgTDi+aaNdCgwws9YPy959ngHuYtudSCOtt9N8dt72tpMo5aNsC78maFEcDXylvRjdfTPBjvzr7ZSZQ3CkHrk/pKZZIxd0/yPweaCGIOGN2sEs7e1XLiNoAfyRYBtrKj8jaR0+wt2vof16h9brccrtwN1fItjhrwH+YGZfdvdNwCcIWj7jgAdTxN+eVNthSl0paQDg7pXAeOC7ZpYD9ADWu3uDBdcgBu5g/s1ApZk1HXVcljT5pabXZjaU4ILpkg6GPBcYacFdOFkER4uzUpRbAvQ1s5PD988Jz6vGgIPd/Z/A94CeBKcLthA0O5vcDvzCzA4M58+zbe/eatpYN4TnT5vOZaZ8DzM7NDyi/G+Cpm/UpJHys0ScN4ppwNfC7x8zG2pm3Yi4Llhw18vxSaOOpXVnlo8B3yY44m5qnVQDvwMmmlluuJx+Yctsd5gM3Ba2XpO9BxwfxnM8wc6prbbrShQvAeebWWFYt2OA/9vJZTTpQbADg+CIekf+hyC5pNw5hQcvWQRnHdrzMkHih2C7/lc4/ArhQULS9LbvcQjBEf9EgoR9DO3X43Tgq00HdNbmuoy7NxC0uE8ys8PDGEaY2eCwfGG4z3mboEVQGs76xXY+X8rtwMwGEmwHDxCss8ebWR8g5u5PAj8gXGeSvE1wJmZw+PpyUu+ndqjdjJIp7v6qmb1G8IU/CvzdzMppOee5I1cBk82smqDim/wG+G3YjG4ErnT3uh23gtuNda2Z3Qz8kyCbT3H3v6UoVx9ekJoYnkLLBv6X4PTJ/wvHGfArd99sZn8H/mLBxd5vuPsUCy4wPh82251gR5P8HpvN7AGC0wjvETRjIdgAU73HT8Kdbxx4k+CCbL8In3l7n2Vxm6KFYbO9yf/saNmhBwmayAvCz1oBnE/0dSEHuMvMDgJqw/m/mjR9OkHz/HfhaZcmtwI/Bd40s1qCo74fRoy5Q9x9NXB3iklP0nKKYh7B+tLWIqAx3GYeJrgba0fvt8DMHgb+HY56MNzuSnc6+OBc/BNmtoZgZ5kqsSW/9wYz+yvwraTRTaenIVhHr2hz2jDVujSeYDu/keA7viqcdgPB+v4d4B8Ep5vb+iLwJTNrAD4kSNgbLbjg/wbBtnBvUvkHCU5lLwrneQC4p83nqjGzXxJcg7rGzK4kuMkiLyxyq7u/Y8FtvVPNbAMt9Z/K9raD04AbwziqgC8TnKp9KDxAhODGmeTYas3sKoLvKZtgXfptO++9XfpFuIjsVSy4E67G3d3MLia4KH5epuNqYmZF7l4VJoJ7gXfd/VeZjiuqLtnSEBHpgBOAe8Kd8maCO6u6krFmdgXBtdtXgfsyHM9OUUtDREQi63IXwkVEpOtS0hARkciUNEREJDIlDRERiUxJQ2QXWNDJW5+OlhHZ0yhpiIhIZEoass+wCN1+m1lvC7rJX2RB99rHhPPuZ0H3+6+a2X0k9eVjZl+ylm627wu7k4kSy/a69h9rQXfYr5nZk+GP1Zq6uZ5kZv+0oJvzkRZ0cf1W+OvupmWn7JJbpDMoaci+ZjBBdx3HEPS1dSlB76jfBb4P/Jigi/RjwtePhPP9CPiXux9H0FdR07MbDifokmJE2IlinNb9nbVnCHCvux9J8CO0pv6SnnL3T7r7J4C3gGuS5ulF0Hvxtwh6Yv4VQa+yR5vZseHpsFuBM939eII+xb4dMR6RHdIvwmVfs6KpU0Aza+72O+yPrJSgE8SmHnFfDFsYPQh6Fb0gHP8PM2t6SNAZBL9Anhf2YVZA0P141Fhade0fDh9lZj+lpfPK5P7T/p4U77o2n6WUoJvypi65IfjV8ZyI8YjskJKG7Gt21O13qmeKeJv/yQz4vbvfnGLazsQSJ0g4EHQ6eL67vxZ2endainmSY296nR0uZ4a7X7IL8YjskE5PibSW3H3+acAGb3lMbNP4swlOEwG8AFxkZvuH03pb0HV1RxQDay3oEjvqqa4m2+uSW6RTqKUh0toEgi6mFwHVtDwf4scE3VwvIHgOwfsA7v6mmd0KTA+7pW4geAjOyrYL3gk/IHhOy0qCbu4jPyvD3StSdclN6i7VRXaaOiwUEZHIdHpKREQi0+kpkTQys/0Irnu0dYa77+hxpiJdjk5PiYhIZDo9JSIikSlpiIhIZEoaIiISmZKGiIhEpqQhIiKR/X/SNHqIlEWGCAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"model_name\n",
"LinearSVC 0.853333\n",
"LogisticRegression 0.880000\n",
"MultinomialNB 0.853333\n",
"RandomForestClassifier 0.933333\n",
"Name: accuracy, dtype: float64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c.diamodelos()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n",
" FutureWarning)\n",
"C:\\Users\\victo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n",
" \"this warning.\", FutureWarning)\n"
]
},
{
"data": {
"text/plain": [
"model_name\n",
"LinearSVC 0.853333\n",
"LogisticRegression 0.880000\n",
"MultinomialNB 0.853333\n",
"RandomForestClassifier 0.933333\n",
"Name: accuracy, dtype: float64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"c.matrizconf(0)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"'turismo' predicted as 'arte' : 1 examples.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tipo</th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>turismo</td>\n",
" <td>El Museo de la Luz es un proyecto impulsado de...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tipo text\n",
"60 turismo El Museo de la Luz es un proyecto impulsado de..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"'arte' predicted as 'politica' : 1 examples.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tipo</th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>arte</td>\n",
" <td>El diputado local de Morena por Tabasco, Charl...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tipo text\n",
"6 arte El diputado local de Morena por Tabasco, Charl..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"'politica' predicted as 'seguridad' : 1 examples.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tipo</th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>politica</td>\n",
" <td>Representantes de la sociedad civil en el cons...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tipo text\n",
"41 politica Representantes de la sociedad civil en el cons..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"'seguridad' predicted as 'turismo' : 1 examples.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tipo</th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>seguridad</td>\n",
" <td>Mérida es una ciudad en crecimiento, con más d...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tipo text\n",
"56 seguridad Mérida es una ciudad en crecimiento, con más d..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"c.matrizconf(1)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" arte 0.67 0.67 0.67 3\n",
" deporte 1.00 1.00 1.00 4\n",
" politica 0.80 0.80 0.80 5\n",
" seguridad 0.86 0.86 0.86 7\n",
" turismo 0.83 0.83 0.83 6\n",
"\n",
" micro avg 0.84 0.84 0.84 25\n",
" macro avg 0.83 0.83 0.83 25\n",
"weighted avg 0.84 0.84 0.84 25\n",
"\n"
]
}
],
"source": [
"c.matrizconf(2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment