Skip to content

Instantly share code, notes, and snippets.

@maxjf1
Last active September 24, 2018 07:15
Show Gist options
  • Save maxjf1/5fdf72e502a48e3cd5ccb3284a372819 to your computer and use it in GitHub Desktop.
Save maxjf1/5fdf72e502a48e3cd5ccb3284a372819 to your computer and use it in GitHub Desktop.
Trabalho Recuperação de informação
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Trabalho 2: Testando métodos para pesos de termos\n",
"\n",
"Term weighting é o processo de calcular o peso ideal para cada termo nos documentos. Vamos testar alguns desses métodos nesse trabalhos. Vamos fazer os testes com pequenas matrizes de documentos, apenas para ilustrar os métodos aplicados ao Modelo Vetorial.\n",
"\n",
"Abaixo temos nosso vetor de termos documentos."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import math\n",
"import pandas as pd\n",
"\n",
"mydoclist = ['estudei redes de computadores ontem e estudei mal',\n",
" 'gostaria de estudar mais sobre redes',\n",
" 'terminei o trabalho após deixar três computadores ligados em rede',\n",
" 'gosto de usar a rede da casa de Julia',\n",
" 'quando Julia ligar, termino de processar o trabalho',\n",
" 'ela gosta de mim, mas não gosto dela',\n",
" 'gostaria de estudar, mas estudo menos do que gostaria'\n",
" ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Computando frequência dos termos\n",
"\n",
"O que vamos fazer é contabilizar a frequência de cada termo em cada documento. Para isso, a classe Counter é bem útil. Veja um exemplo abaixo."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Counter({'estudei': 2, 'redes': 1, 'de': 1, 'computadores': 1, 'ontem': 1, 'e': 1, 'mal': 1})\n",
"Counter({'gostaria': 1, 'de': 1, 'estudar': 1, 'mais': 1, 'sobre': 1, 'redes': 1})\n",
"Counter({'terminei': 1, 'o': 1, 'trabalho': 1, 'após': 1, 'deixar': 1, 'três': 1, 'computadores': 1, 'ligados': 1, 'em': 1, 'rede': 1})\n",
"Counter({'de': 2, 'gosto': 1, 'usar': 1, 'a': 1, 'rede': 1, 'da': 1, 'casa': 1, 'Julia': 1})\n",
"Counter({'quando': 1, 'Julia': 1, 'ligar,': 1, 'termino': 1, 'de': 1, 'processar': 1, 'o': 1, 'trabalho': 1})\n",
"Counter({'ela': 1, 'gosta': 1, 'de': 1, 'mim,': 1, 'mas': 1, 'não': 1, 'gosto': 1, 'dela': 1})\n",
"Counter({'gostaria': 2, 'de': 1, 'estudar,': 1, 'mas': 1, 'estudo': 1, 'menos': 1, 'do': 1, 'que': 1})\n"
]
}
],
"source": [
"from collections import Counter\n",
"for doc in mydoclist:\n",
" tf = Counter()\n",
" for word in doc.split():\n",
" tf[word] +=1\n",
" print(tf)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Então vamos, lá! Primeiro vamos criar o nosso vocabulário (lexicon). Para isso, implemente o método abaixo. Ele recebe um vetor de textos como o criado acima e deve acrescentar as palavras que te interessam como termos de busca. Aqui, como no trabalho anterior, pode-se usar stemming, remoção de stopwords, o que quiser. Quanto mais reduzir o vocabulário, mais fácil vai ser para entender as matrizes depois..."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'e', 'o', 'd', 'termin', 'comput', 'lig', 'estud', 'jul', 'mim', 'process', 'red', 'a', 'gost', 'deix', 'cas'}\n"
]
}
],
"source": [
"import spacy\n",
"import Stemmer\n",
"\n",
"nlp = spacy.load('pt')\n",
"stemmer = Stemmer.Stemmer('portuguese')\n",
"\n",
"def build_lexicon(corpus):\n",
" lexicon = set()\n",
" for doc in corpus:\n",
" doc = nlp(doc.lower())\n",
" lexicon |= set([token.orth_ for token in doc if not token.is_punct and not token.is_stop])\n",
" #seu código aqui\n",
" return set(stemmer.stemWords(lexicon))\n",
"\n",
"vocabulary = build_lexicon(mydoclist)\n",
"print(vocabulary)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A função tf deve retornar o valor do term-frequency no texto. Nesse primeiro momento, vamos fazer com que o tf seja exatamente igual à frequencia.\n",
"\n",
"`` Exemplo: tf('estud', 'estudei redes de computadores ontem e estudei mal') ==> 2 ``"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"def freq(term, document):\n",
" document = nlp(document.lower())\n",
" term = stemmer.stemWord(term)\n",
" frequency = Counter()\n",
" stemmed = stemmer.stemWords([token.orth_ for token in document if not token.is_punct and not token.is_stop])\n",
" for word in stemmed:\n",
" frequency[word] += 1\n",
" return frequency[term]\n",
"\n",
"def tf(term, document):\n",
" return freq(term, document)\n",
"\n",
"print(tf('estudei', mydoclist[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vamos agora criar nossa matriz de termos por documentos. Você deve calcular a frequencia para cada termo do ``vocabulary`` presente no documento."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nosso vetor do vocabulário é [e, o, d, termin, comput, lig, estud, jul, mim, process, red, a, gost, deix, cas]\n",
"\n",
"O doc é \"estudei redes de computadores ontem e estudei mal\"\n",
"O vetor tf para o doc 1 é [1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0]\n",
"\n",
"O doc é \"gostaria de estudar mais sobre redes\"\n",
"O vetor tf para o doc 2 é [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]\n",
"\n",
"O doc é \"terminei o trabalho após deixar três computadores ligados em rede\"\n",
"O vetor tf para o doc 3 é [0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0]\n",
"\n",
"O doc é \"gosto de usar a rede da casa de Julia\"\n",
"O vetor tf para o doc 4 é [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1]\n",
"\n",
"O doc é \"quando Julia ligar, termino de processar o trabalho\"\n",
"O vetor tf para o doc 5 é [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0]\n",
"\n",
"O doc é \"ela gosta de mim, mas não gosto dela\"\n",
"O vetor tf para o doc 6 é [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0]\n",
"\n",
"O doc é \"gostaria de estudar, mas estudo menos do que gostaria\"\n",
"O vetor tf para o doc 7 é [0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0]\n",
"\n",
"A matriz final é: \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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" <th>14</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14\n",
"0 1 0 0 0 1 0 2 0 0 0 1 0 0 0 0\n",
"1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0\n",
"2 0 1 0 1 1 1 0 0 0 0 1 0 0 1 0\n",
"3 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1\n",
"4 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0\n",
"5 0 0 1 0 0 0 0 0 1 0 0 0 2 0 0\n",
"6 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def createMatrix(document):\n",
" matrix = []\n",
" print('Nosso vetor do vocabulário é [' + ', '.join(list(vocabulary)) + ']')\n",
" for doc in document:\n",
" #aqui, monte o vetor percorrendo cada palavra no vocabulário e comparando com o tf do termo no doc\n",
" tf_vector = []\n",
" for term in vocabulary: \n",
" tf_vector.append(tf(term, doc))\n",
" matrix.append(tf_vector)\n",
"\n",
" # linhas abaixo somente somente para debug. Não retire.\n",
" print('\\nO doc é \"' + doc + '\"')\n",
" tf_vector_string = ', '.join(format(value, 'd') for value in tf_vector)\n",
" print('O vetor tf para o doc %d é [%s]' % ((document.index(doc)+1), tf_vector_string))\n",
"\n",
" return matrix\n",
"\n",
"\n",
"matrix = createMatrix(mydoclist)\n",
"\n",
"print('\\nA matriz final é: ')\n",
"pd.DataFrame(matrix)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Normalizando\n",
"Frequência dos termos não é uma boa métrica, pois um termo aparecer 2 vezes em um documento com 4 palavras é diferente de aparecer 4 vezes em um documento com 100 palavras. Existem vários métodos para normalizar documentos. Um forma bem comum de normalizar é pela norma do vetor (também chamado de norma $L^2$). Caso tenha dúvidas de como calcular a norma, recomendo acessar http://mathworld.wolfram.com/L2-Norm.html."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A nova matriz normalizada:\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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" <th>14</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.377964</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.377964</td>\n",
" <td>0.000000</td>\n",
" <td>0.755929</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.377964</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.577350</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.577350</td>\n",
" <td>0.000000</td>\n",
" <td>0.577350</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.408248</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.447214</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.816497</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.707107</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.707107</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 \\\n",
"0 0.377964 0.000000 0.000000 0.000000 0.377964 0.000000 0.755929 \n",
"1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.577350 \n",
"2 0.000000 0.408248 0.000000 0.408248 0.408248 0.408248 0.000000 \n",
"3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"4 0.000000 0.447214 0.000000 0.447214 0.000000 0.447214 0.000000 \n",
"5 0.000000 0.000000 0.408248 0.000000 0.000000 0.000000 0.000000 \n",
"6 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.707107 \n",
"\n",
" 7 8 9 10 11 12 13 \\\n",
"0 0.000000 0.000000 0.000000 0.377964 0.000000 0.000000 0.000000 \n",
"1 0.000000 0.000000 0.000000 0.577350 0.000000 0.577350 0.000000 \n",
"2 0.000000 0.000000 0.000000 0.408248 0.000000 0.000000 0.408248 \n",
"3 0.447214 0.000000 0.000000 0.447214 0.447214 0.447214 0.000000 \n",
"4 0.447214 0.000000 0.447214 0.000000 0.000000 0.000000 0.000000 \n",
"5 0.000000 0.408248 0.000000 0.000000 0.000000 0.816497 0.000000 \n",
"6 0.000000 0.000000 0.000000 0.000000 0.000000 0.707107 0.000000 \n",
"\n",
" 14 \n",
"0 0.000000 \n",
"1 0.000000 \n",
"2 0.000000 \n",
"3 0.447214 \n",
"4 0.000000 \n",
"5 0.000000 \n",
"6 0.000000 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#receba um vetor, calcule a norma do vetor e normalize todos os termos de acordo com a norma\n",
"def normalizer(vetor): \n",
" vetorNormalizado = []\n",
" norma = 0\n",
" for peso in vetor:\n",
" norma+= peso ** 2\n",
" norma = math.sqrt(norma)\n",
" for peso in vetor:\n",
" vetorNormalizado.append(peso / norma)\n",
" return vetorNormalizado\n",
"\n",
"# passa por toda a matriz de documentos e normaliza os documentos de acordo com o método anterior\n",
"def matrixNormalizer(matrix):\n",
" matrix2 = []\n",
" for vec in matrix:\n",
" matrix2.append(normalizer(vec))\n",
" return matrix2\n",
"\n",
"print('A nova matriz normalizada:')\n",
"matrix_normalizada = matrixNormalizer(matrix)\n",
"pd.DataFrame(matrix_normalizada) \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Calculando o IDF (inverse document frequency)\n",
"Agora vamos calcular o valor do IDF de cada termo. Lembre-se que o IDF é calculado como o inverso da frequência do documento na base. Assim, um termo que aparece em 3 documentos (independente do número de vezes que aparece em cada documento), poderia ter um IDF de um terço. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.3333333333333333"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Esse método retorna em quantos documentos um dado termo apareceu\n",
"def numDocsContaining(word, doclist):\n",
" doccount = 0\n",
" for doc in doclist:\n",
" if freq(word, doc) > 0:\n",
" doccount +=1\n",
" return doccount \n",
"\n",
"# aqui você deve calcular o IDF de cada termo\n",
"def idf(word, doclist):\n",
" return 1/numDocsContaining(word, doclist)\n",
"\n",
"# Testando...\n",
"idf('estud', mydoclist)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Agora, crie então um vetor que contenha os valores de idf para cada termo do vocabulário."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"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>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>e</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>o</th>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>d</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>termin</th>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>comput</th>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>lig</th>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>estud</th>\n",
" <td>0.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>jul</th>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mim</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>process</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>red</th>\n",
" <td>0.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>a</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>gost</th>\n",
" <td>0.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>deix</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>cas</th>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0\n",
"e 1.000000\n",
"o 0.500000\n",
"d 1.000000\n",
"termin 0.500000\n",
"comput 0.500000\n",
"lig 0.500000\n",
"estud 0.333333\n",
"jul 0.500000\n",
"mim 1.000000\n",
"process 1.000000\n",
"red 0.250000\n",
"a 1.000000\n",
"gost 0.250000\n",
"deix 1.000000\n",
"cas 1.000000"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idf_vetor = []\n",
"for term in vocabulary:\n",
" idf_vetor.append(idf(term, mydoclist))\n",
"\n",
"pd.DataFrame(idf_vetor, vocabulary)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Juntando tudo!\n",
"Agora vamos finalmente fazer uma matrix TF-IDF. Para isso, para cada termo de cada documento da matriz, multiple o seu valor de tf com o seu valor de idf. Nesse momento, faço algumas sugestões:\n",
"* A nossa função tf(term, doc) apenas verifica a frequência do termo. Seria mais interessante passar uma função de log nesse resultado, embora não seja obrigatório. Caso queira fazer isso, sugiro você sobreescrever a função tf(term,doc). Para isso, basta defini-la novamente abaixo e o python irá desconsiderar a função definida anterimente.\n",
"* Você pode também sobreescrever a função createMatrix para ela já ser capaz de entregar o vetor também normalizado. Caso vá criar novamente o tf(), então lembre-se de normalizar os pesos novamente!\n",
"* Caso esteja com preguiça, basta escrever os códigos abaixo mesmo, sem criar funções :-)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nosso vetor do vocabulário é [e, o, d, termin, comput, lig, estud, jul, mim, process, red, a, gost, deix, cas]\n",
"e 1\n",
"o 0\n",
"d 0\n",
"termin 0\n",
"comput 1\n",
"lig 0\n",
"estud 2\n",
"jul 0\n",
"mim 0\n",
"process 0\n",
"red 1\n",
"a 0\n",
"gost 0\n",
"deix 0\n",
"cas 0\n",
"\n",
"O doc é \"estudei redes de computadores ontem e estudei mal\"\n",
"O vetor tf para o doc 1 é [1, 0, 0, 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0]\n",
"e 0\n",
"o 0\n",
"d 0\n",
"termin 0\n",
"comput 0\n",
"lig 0\n",
"estud 1\n",
"jul 0\n",
"mim 0\n",
"process 0\n",
"red 1\n",
"a 0\n",
"gost 1\n",
"deix 0\n",
"cas 0\n",
"\n",
"O doc é \"gostaria de estudar mais sobre redes\"\n",
"O vetor tf para o doc 2 é [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0]\n",
"e 0\n",
"o 1\n",
"d 0\n",
"termin 1\n",
"comput 1\n",
"lig 1\n",
"estud 0\n",
"jul 0\n",
"mim 0\n",
"process 0\n",
"red 1\n",
"a 0\n",
"gost 0\n",
"deix 1\n",
"cas 0\n",
"\n",
"O doc é \"terminei o trabalho após deixar três computadores ligados em rede\"\n",
"O vetor tf para o doc 3 é [0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0]\n",
"e 0\n",
"o 0\n",
"d 0\n",
"termin 0\n",
"comput 0\n",
"lig 0\n",
"estud 0\n",
"jul 1\n",
"mim 0\n",
"process 0\n",
"red 1\n",
"a 1\n",
"gost 1\n",
"deix 0\n",
"cas 1\n",
"\n",
"O doc é \"gosto de usar a rede da casa de Julia\"\n",
"O vetor tf para o doc 4 é [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1]\n",
"e 0\n",
"o 1\n",
"d 0\n",
"termin 1\n",
"comput 0\n",
"lig 1\n",
"estud 0\n",
"jul 1\n",
"mim 0\n",
"process 1\n",
"red 0\n",
"a 0\n",
"gost 0\n",
"deix 0\n",
"cas 0\n",
"\n",
"O doc é \"quando Julia ligar, termino de processar o trabalho\"\n",
"O vetor tf para o doc 5 é [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0]\n",
"e 0\n",
"o 0\n",
"d 1\n",
"termin 0\n",
"comput 0\n",
"lig 0\n",
"estud 0\n",
"jul 0\n",
"mim 1\n",
"process 0\n",
"red 0\n",
"a 0\n",
"gost 2\n",
"deix 0\n",
"cas 0\n",
"\n",
"O doc é \"ela gosta de mim, mas não gosto dela\"\n",
"O vetor tf para o doc 6 é [0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0]\n",
"e 0\n",
"o 0\n",
"d 0\n",
"termin 0\n",
"comput 0\n",
"lig 0\n",
"estud 2\n",
"jul 0\n",
"mim 0\n",
"process 0\n",
"red 0\n",
"a 0\n",
"gost 2\n",
"deix 0\n",
"cas 0\n",
"\n",
"O doc é \"gostaria de estudar, mas estudo menos do que gostaria\"\n",
"O vetor tf para o doc 7 é [0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0]\n",
"{'e', 'o', 'd', 'termin', 'comput', 'lig', 'estud', 'jul', 'mim', 'process', 'red', 'a', 'gost', 'deix', 'cas'}\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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" <th>14</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.377964</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.188982</td>\n",
" <td>0.000000</td>\n",
" <td>0.251976</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.094491</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.192450</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.144338</td>\n",
" <td>0.000000</td>\n",
" <td>0.144338</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.000000</td>\n",
" <td>0.204124</td>\n",
" <td>0.000000</td>\n",
" <td>0.204124</td>\n",
" <td>0.204124</td>\n",
" <td>0.204124</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.102062</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.223607</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.111803</td>\n",
" <td>0.447214</td>\n",
" <td>0.111803</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.000000</td>\n",
" <td>0.223607</td>\n",
" <td>0.000000</td>\n",
" <td>0.223607</td>\n",
" <td>0.000000</td>\n",
" <td>0.223607</td>\n",
" <td>0.000000</td>\n",
" <td>0.223607</td>\n",
" <td>0.000000</td>\n",
" <td>0.447214</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.408248</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.204124</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.235702</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.176777</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 \\\n",
"0 0.377964 0.000000 0.000000 0.000000 0.188982 0.000000 0.251976 \n",
"1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.192450 \n",
"2 0.000000 0.204124 0.000000 0.204124 0.204124 0.204124 0.000000 \n",
"3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"4 0.000000 0.223607 0.000000 0.223607 0.000000 0.223607 0.000000 \n",
"5 0.000000 0.000000 0.408248 0.000000 0.000000 0.000000 0.000000 \n",
"6 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.235702 \n",
"\n",
" 7 8 9 10 11 12 13 \\\n",
"0 0.000000 0.000000 0.000000 0.094491 0.000000 0.000000 0.000000 \n",
"1 0.000000 0.000000 0.000000 0.144338 0.000000 0.144338 0.000000 \n",
"2 0.000000 0.000000 0.000000 0.102062 0.000000 0.000000 0.408248 \n",
"3 0.223607 0.000000 0.000000 0.111803 0.447214 0.111803 0.000000 \n",
"4 0.223607 0.000000 0.447214 0.000000 0.000000 0.000000 0.000000 \n",
"5 0.000000 0.408248 0.000000 0.000000 0.000000 0.204124 0.000000 \n",
"6 0.000000 0.000000 0.000000 0.000000 0.000000 0.176777 0.000000 \n",
"\n",
" 14 \n",
"0 0.000000 \n",
"1 0.000000 \n",
"2 0.000000 \n",
"3 0.447214 \n",
"4 0.000000 \n",
"5 0.000000 \n",
"6 0.000000 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def tf(term, document):\n",
" result = freq(term, document)\n",
" print(term, result)\n",
" return result\n",
"\n",
"def createNormalizedMatrix(document):\n",
" return matrixNormalizer(createMatrix(document))\n",
"\n",
"new_matriz = []\n",
"\n",
"for doc in createNormalizedMatrix(mydoclist):\n",
" items = []\n",
" for term in range(len(doc)):\n",
" items.append(doc[term] * idf_vetor[term])\n",
" new_matriz.append(items)\n",
" \n",
"print(vocabulary)\n",
"pd.DataFrame(new_matriz)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Trabalho: agora vai começar o trabalho de fato :)\n",
"\n",
"Existem vários métodos para term weighting. Neste trabalho, você deve mostrar o passo-a-passo de implementação no seu notebook de dois outros métodos de term weighting:\n",
"* Term Discrimitation Model\n",
"* Signal-to-Noise Ratio\n",
"\n",
"As fórmulas para cálculo desses modelos estão nas notas de aula. Basta implementar as fórmulas. Recomendo tenta reusar ao máximo as funções já implementadas acima.\n",
"\n",
"Para teu trabalho ficar muito legal, seria interessante gerar alguma visualização dessas matrizes de pesos após a aplicação de cada método para mostrar como ela foi mudando. Sugestões para isso, seria (1) mostrar um gráfico de barra para cada documento, onde cada barra representa o peso do termo, ou (2) plotar uma matriz com cores que representam o peso de cada termo no documento (ver em https://about.sofia2.com/2017/09/13/analitica-de-datos-con-python-y-sofia2-24-graficos-de-relacion/)\n",
"\n",
"Bons códigos :)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"-----\n",
"### Helpers\n",
"Primeiramente definimos algumas funções de auxílio como funções matemáticas para vetores."
]
},
{
"cell_type": "code",
"execution_count": 193,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"14\n",
"1.4142135623730951\n",
"0.7071067811865475 0.7071067811865476\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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8 9 10 11 12 13\n",
"0 0 0 0 1 0 2 0 0 0 1 0 0 0 0\n",
"1 0 0 0 0 0 1 0 0 0 1 0 1 0 0\n",
"2 1 0 1 1 1 0 0 0 0 1 0 0 1 0\n",
"3 0 0 0 0 0 0 1 0 0 1 1 1 0 1\n",
"4 1 0 1 0 1 0 1 0 1 0 0 0 0 0\n",
"5 0 1 0 0 0 0 0 1 0 0 0 2 0 0\n",
"6 0 0 0 0 0 2 0 0 0 0 0 2 0 0"
]
},
"execution_count": 193,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"matplotlib.rcParams['figure.figsize'] = (20.0, 5.0)\n",
"sns.set()\n",
"\n",
"def displayMatrix(matrix, vocabulary): \n",
" labels = []\n",
" for i in range(len(matrix)):\n",
" labels.append('Doc '+str(i+1))\n",
" sns.heatmap(matrix,yticklabels=labels, xticklabels=vocabulary, square=True, annot=True)\n",
"\n",
"# Obtém um objeto range dos termos da matriz\n",
"def getTermsRange(matrix):\n",
" return range(len(matrix[0]))\n",
"\n",
"# Produto de vetores\n",
"def vecProduct(v1, v2):\n",
" sum = 0\n",
" for i in range(len(v1)):\n",
" sum+=v1[i]*v2[i]\n",
" return sum\n",
"\n",
"# Módulo de vetor\n",
"def vecModule(vector):\n",
" sum = 0\n",
" for val in vector:\n",
" sum+= val**2\n",
" return math.sqrt(sum)\n",
"\n",
"# Obtem o angulo ou cosseno entre dois vetores\n",
"def vecAngle(v1, v2):\n",
" return vecProduct(v1, v2) / (vecModule(v1)*vecModule(v2))\n",
"\n",
"\n",
"# Documentos de testes do slide\n",
"testDoc1 = [\n",
" [10, 1, 0],\n",
" [9, 2, 10],\n",
" [8, 1, 1],\n",
" [8, 1, 50],\n",
" [19, 2, 15],\n",
" [9, 2, 0]\n",
"]\n",
"\n",
"testDoc2 = [\n",
" [10, 1, 1],\n",
" [9, 2, 10],\n",
" [8, 1, 1],\n",
" [8, 1, 50],\n",
" [19, 2, 15],\n",
" [9, 2, 1]\n",
"]\n",
"\n",
"print(vecProduct([3,4], [-2, 5]))\n",
"print(vecModule([1,1]))\n",
"print(vecAngle([2,2], [0,2]), math.sqrt(2)/2)\n",
"pd.DataFrame(matrix)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Term Discrimination\n",
"Definimos os métodos de obtenção de centróide, similaridade entre termos, média das similaridades.\n",
"\n",
"Em seguida, implementamos o método de obtenção da lista de discriminação dos termos, e aplica-se estes pesos na matriz tf"
]
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {
"scrolled": true
},
"outputs": [
{
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.003007</td>\n",
" <td>-0.000000</td>\n",
" <td>0.002907</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.015417</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.001454</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.015417</td>\n",
" <td>0.000000</td>\n",
" <td>-0.053579</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-0.000639</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000639</td>\n",
" <td>0.003007</td>\n",
" <td>-0.000639</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.015417</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.003887</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.001183</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.015417</td>\n",
" <td>0.006429</td>\n",
" <td>-0.053579</td>\n",
" <td>0.000000</td>\n",
" <td>0.006429</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-0.000639</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000639</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000639</td>\n",
" <td>0.000000</td>\n",
" <td>0.001183</td>\n",
" <td>0.000000</td>\n",
" <td>0.002695</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>-0.000000</td>\n",
" <td>0.004438</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.004438</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.107157</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.002907</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>-0.107157</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 \\\n",
"0 -0.000000 0.000000 -0.000000 0.003007 -0.000000 0.002907 0.000000 \n",
"1 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.001454 0.000000 \n",
"2 -0.000639 0.000000 -0.000639 0.003007 -0.000639 0.000000 0.000000 \n",
"3 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.000000 0.001183 \n",
"4 -0.000639 0.000000 -0.000639 0.000000 -0.000639 0.000000 0.001183 \n",
"5 -0.000000 0.004438 -0.000000 0.000000 -0.000000 0.000000 0.000000 \n",
"6 -0.000000 0.000000 -0.000000 0.000000 -0.000000 0.002907 0.000000 \n",
"\n",
" 7 8 9 10 11 12 13 \n",
"0 0.000000 0.000000 -0.015417 0.000000 -0.000000 0.000000 0.000000 \n",
"1 0.000000 0.000000 -0.015417 0.000000 -0.053579 0.000000 0.000000 \n",
"2 0.000000 0.000000 -0.015417 0.000000 -0.000000 0.003887 0.000000 \n",
"3 0.000000 0.000000 -0.015417 0.006429 -0.053579 0.000000 0.006429 \n",
"4 0.000000 0.002695 -0.000000 0.000000 -0.000000 0.000000 0.000000 \n",
"5 0.004438 0.000000 -0.000000 0.000000 -0.107157 0.000000 0.000000 \n",
"6 0.000000 0.000000 -0.000000 0.000000 -0.107157 0.000000 0.000000 "
]
},
"execution_count": 183,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import seaborn as sns\n",
"\n",
"# Obtém o centróide de uma matriz de documentos\n",
"def getCentroid(matrix):\n",
" centroid = []\n",
" size = getTermsRange(matrix)\n",
" for i in size:\n",
" centroid.append(0)\n",
"\n",
" for doc in matrix:\n",
" for i in size:\n",
" centroid[i]+=doc[i]\n",
"\n",
" for i in size:\n",
" centroid[i] /= len(matrix[0])\n",
" return centroid\n",
"\n",
"# Retorna a similaridade entre a frequencia de 2 documentos\n",
"def similarity(doc1, doc2):\n",
" return vecAngle(doc1, doc2)\n",
"\n",
"# Obtém a média das similaridades\n",
"def avgSim(matrix):\n",
" avg = 0\n",
" centroid = getCentroid(matrix)\n",
" for doc in matrix:\n",
" avg+= similarity(doc, centroid)\n",
" return avg/len(matrix)\n",
"\n",
"# Obtém a lista de discriminação dos termos\n",
"def getDiscList(matrix):\n",
" discList = []\n",
" avg = avgSim(matrix)\n",
" for term in getTermsRange(matrix):\n",
" discMatrix = []\n",
" for doc in matrix:\n",
" newDoc = doc.copy()\n",
" del newDoc[term]\n",
" discMatrix.append(newDoc)\n",
" discList.append(avgSim(discMatrix) - avg)\n",
" return discList\n",
"\n",
"# Obtém uma matriz de pesos aplicando discriminação\n",
"def getDiscMatrix(matrix):\n",
" discList = getDiscList(matrix)\n",
" discMatrix = []\n",
" termsRange = getTermsRange(matrix)\n",
" for doc in matrix:\n",
" discDoc = []\n",
" for i in termsRange:\n",
" discDoc.append(doc[i] * discList[i])\n",
" discMatrix.append(discDoc)\n",
" return discMatrix\n",
"\n",
"pd.DataFrame(getDiscMatrix(matrix))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Relação sinal-ruído\n",
"Nesta são feitos alguns cálculos para se obter a relação sinal-ruído da matriz de tf.\n",
"\n",
"É importante fazer o tratamento no cálculo dos logs, pois o valor pode estar zerado."
]
},
{
"cell_type": "code",
"execution_count": 185,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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KCIiIiJSj6OtEmBxSoDRaIQQAhrNH6dEMBgM0Ov1qocRERERkTqc7ktXISEhWLBgAaZOnQoASExMRGhoqOphRERERKQOtU7NqhaLA9aFCxciMTER27dvhxACgwYNwqRJk2zRRkREREQqcLQvXVkcsGq1WoSHh6Nfv37QaDTw9/eHi4uLLdqIiIiISAWONVytx4A1NTUVkZGRaN++PYQQyMvLQ0xMDIKDg23RR0RERERW5nRzWGNiYrBx40Z07twZAHDmzBlERERg586dqscRERERkfU52pQAi8ta6fV602AVAPz9/blKABERERHZjMUjrEFBQYiKioJOpwMA7NmzB0FBQaqHEREREZE6HOv4aj0GrNHR0UhISEBcXByEEAgODsa0adNs0UZEREREKnC6Oazu7u7Q6XTQ6XTw8fGxRRMRERERqcjR5rCaHbAKIbBmzRrEx8ebrmu1WsyYMQPz5s2zWSAREZHaSrY9ae8Es5pNe9/eCeSEHGu4WseXrrZs2YIjR44gOTkZqampSEtLQ1JSEtLT07F582YbJhIRERGRNRkVXuzF7IA1JSUFsbGx8PPzM93m5+eHlStXIiUlxSZxRERERGR9QuF/9mJ2SkBVVVWtc1Z9fHxQVVWlahQRERERqcdpvnTl5uZm9kF13UdEREREcnOaL11lZWWhb9++NW4XQqCyslLVKCIiIiJSj2MNV+sYsJ44ccKWHURERERkI05zhJWIiIiInJPTzGElIiIiIudkz2/8K8EBKxEREVEDwyOsRERERCQ1HmElIiIiIqnxCCsRERERSc0oHOsIq9lTsxIRERERycBhBqwtWjRHctIGFBWexK8nUzFlyjh7JwGQtwtgm1JsU0bWNlm7ALYpJUNb4sEsTFu7F8FLEvBK8gGz232ecQa6d3chZFkihr6xAy8nH0DpdfucfEeG1602snY5O6HwYi8OMyVg9arlqKzUo12HXujdqzt279qKjIxMZGZms4ttbGObw3WxzbHbWnt5YvbQHjh4Mg/X9VVmt+t9913YPGckWjRpjPIKPV7bdQhrv/oJL465z2atN8jwujlSl7NztBMHaIRQdxKDq3v7O96Hp6cHLl/KRK8+YTh58jQAYPOmVbhwIQ9RL6244/07Wxfb2MY2ubvYJl9bybYnFT1uzb505BeV47XwQRa3La/Q443daSgsv461j4fV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\n",
"text/plain": [
"<Figure size 1368x360 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Obtém a lista da soma das frequências dos termos\n",
"def getTfkList(matrix):\n",
" tfkList = []\n",
" termsRange = getTermsRange(matrix)\n",
" for i in termsRange:\n",
" tfkList.append(0)\n",
" for doc in matrix:\n",
" for i in termsRange:\n",
" tfkList[i]+= doc[i]\n",
" return tfkList\n",
"\n",
"# Obtém a matriz de probabilidade do termo no documento\n",
"def getProbMatrix(matrix):\n",
" probMatrix = []\n",
" tfkList = getTfkList(matrix)\n",
" for doc in matrix:\n",
" probDoc = []\n",
" for i, term in enumerate(doc):\n",
" probDoc.append(term/tfkList[i])\n",
" probMatrix.append(probDoc)\n",
" return probMatrix\n",
"\n",
"# Obtém a matriz de informação\n",
"def getInfo(matrix):\n",
" probMatrix = getProbMatrix(matrix)\n",
" infoMatrix = []\n",
" for doc in probMatrix:\n",
" infoDoc = []\n",
" for i, term in enumerate(doc):\n",
" infoDoc.append(term if term == 0 else -term * math.log(term, 2))\n",
" infoMatrix.append(infoDoc)\n",
" return infoMatrix\n",
"\n",
"# Obtém a média de informação dos termos\n",
"def getAvgInfo(matrix):\n",
" infoMatrix = getInfo(matrix)\n",
" avgInfo = []\n",
" for i in infoMatrix[0]:\n",
" avgInfo.append(0)\n",
" \n",
" for doc in infoMatrix:\n",
" for i, term in enumerate(doc):\n",
" avgInfo[i]+= term\n",
" return avgInfo\n",
"\n",
"# Obtém o ruído dos termos\n",
"def getNoise(matrix):\n",
" noise = getAvgInfo(matrix)\n",
" for i in range(len(noise)):\n",
" noise[i]*=-1\n",
" return noise\n",
"\n",
"# Obtém o sinal dos termos\n",
"def getSignal(matrix):\n",
" noise = getNoise(matrix)\n",
" tfk = getTfkList(matrix)\n",
" signal = []\n",
" for i, docNoise in enumerate(noise):\n",
" signal.append(math.log(tfk[i], 2)+ docNoise)\n",
" return signal\n",
"\n",
"# Obtém a matriz tf com peso em sinal-ruído\n",
"def getSignalNoiseMatrix(matrix):\n",
" signal = getSignal(matrix)\n",
" sigNoiseMatrix = []\n",
" for doc in matrix:\n",
" sigNoiseDoc = []\n",
" for i, term in enumerate(doc):\n",
" sigNoiseDoc.append(term * signal[i])\n",
" sigNoiseMatrix.append(sigNoiseDoc)\n",
" return sigNoiseMatrix\n",
" \n",
"\n",
"displayMatrix(getSignalNoiseMatrix(matrix), vocabulary)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Análise geral"
]
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matriz tf\n"
]
},
{
"data": {
"image/png": "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/P39sWzZMjRv3hx79+7F66+/jlatWtn8e1x9PfPMM7h06RKuXbuGadOm4YknnrDbe7/11lvIzMxEu3btTLV48MEHa/1833//faSmpsLFxQVBQUGYP38+UlNTodVq8dFHH+GVV15B3759bZattp9F586dQ1xcHIqKitCsWTO8+uqr6NixI9asWQMPDw88+eSTeOKJJ/D888/j/vvvR2JiIrRaLZ599lmb5brZrT83hg8fjnXr1qGqqgp33XUXVqxYgXvuuQcHDhzA0qVLAVyf8D45ORktWrRQJBPdRDiAkydPiqefflpUVlYKIYRYtGiR2L59u8qprvvpp5/EqFGjRFlZmSgtLRUjRowQR48eVTuWEOJ/2crLy0VJSYkYNmyY2LBhg03f4/z582LkyJFCCCG+/vpr8fLLLwuj0Siqq6vFzJkzxYEDB8T58+dF586dxeHDh02vCw4OFl999ZUQQohnnnlG/PnPfxaVlZXi2LFjYvTo0UIIIfbv3y9mzpwphBBi9erV4oknnhDXrl0TBQUF4k9/+pPpeLjV8ePHxcMPPywKCgqEEEIUFRWJp59+Wmzbtk0IIURaWpqYNWuWEEKIF154QcydO1cYjUbx+eefi169eomcnBxRXV0txowZI7Kzs015d+zYIYQQYs2aNSIuLk4IIcSUKVNEVlaWEEKIgoICMXjwYCGEEB9++KFpm4bq2bOnEKJmrTds2CBeeeUVIYQQP//8s+jSpYsph63Udt6tWbNGTJ8+3bRNcXGxEKJmHYQQYvDgwab6Z2VliSlTpgghhHj11VfFmjVrhBBCfPnllyI4ONi0na317NmzxjEkhBBxcXHiww8/rDWzEs6fPy+6dOlS45iKiYkxHW+zZs2qcazU9Xis63sHBweL7777TgghRExMjNiwYYMYPHiwWL9+vWm7UaNGCb1eL4QQ4h//+Id47bXXhBBCREZGis8++0wIIcTVq1dFeXm52XN8165d4qWXXjLt88qVK6KoqEg8/PDDwmg0CiH+d6zUt343vncUFBSISZMmibKyMiGEEO+8845Ys2aNuHr1qhg0aJA4c+aMMBqNYs6cOTU+c3srKioSQghRUVEhRo4cKQoLC+3yvllZWWL06NGioqJClJSUiPDwcLFhwwazn2///v3FtWvXhBD/+2xWr15t858RQpj/WTRt2jRx5swZIYQQP/zwg5g6deptOY4fPy4effRR8d///lfodDpTZlur7efG5cuXTcfv1q1bxbJly4QQQjz99NOm86q0tFRUVVUpkolqcoge1n379uHIkSOIjIwEAFy9ehV33323yqmu+/777zFs2DB4eHgAAMLDw/Hdd9+ha9euKicDvvvuOwwbNsw0Pdmtk/fa2jfffINvvvkGjz32GACgvLwcZ8+eRbt27eDr64uePXuatnVzc8OgQYMAAMHBwWjSpAnc3NwQHByMixdrv11cWFgYmjRpAm9vb3h7e6OgoKDGPYtv2L9/Px599FHTjS/uuusuHD58GGvWrAEA6HQ6JCQkmLYfPHiw6Tfqe+65B507dwYABAUF4eLFi+jSpQu0Wq2pl1Sn0yEqKqqh5WqQ77//3tTDHBwcbMpsS7WddwMHDsT58+fx6quvIiwsDAMGDKjXPg8ePIi1a9cCAB566CG0bNnS5rll0759+xrH1AMPPGA63mo71utyPNZVu3bt0KdPHwDA6NGjkZSUBACmY7mkpAQlJSX405/+BAAYM2YMoqOjUVpaivz8fISHhwMAmjZtCsD8Od63b1/Ex8cjISEBgwcPRt++fWEwGNC0aVO89NJLeOihh/DQQw/Vt3QAYPre8eWXX+LkyZOmPxdXVVWhZ8+eOH36NNq3b48OHTqYvs6tW7da9V62kJSUhM8//xwAkJeXh19++QWtWrVS/H2///57DB06FM2aNQNw/TiqqKio9fMFgM6dO+O5557D0KFDMWzYMEWz1faz6Nq1azh8+LApDwBUVlbe9tpOnTpBp9Phb3/7Gz744AM0adJEkYy1/dz4+eef8eyzz+K3335DZWUl2rdvDwDo3bs33njjDURERODhhx9G8+bNFclENTlEg1UIgTFjxmD+/PlqR7mNkHxWsLrcPcJWhBCYOXPmbRe7XLhwwdSgv8HNzc2UTavVmr4JabVaVFdX17r/m79Rubi4mL3jWl0+k5vrcmO/Go2mxntotVqz73Hj9S4uLqb3q+2brVLscdyZO++effZZ/Pe//8W///1vfPLJJ1i2bNltr725LteuXVM8qzkuLi4wGo2mx2pkufWYuvl4q+1Yt+Z4NOfW8//G49rm2K4Lc+c4cP3Cuz179iAxMRH9+/dHVFQU0tPTsW/fPuzcuRPJycl4//336/2eN753CCHQv39/rFy5ssbzx44ds+v3uTvR6/X49ttv8cEHH8Dd3R1Tp05V9fi/k/Xr1+PgwYP44osv8Pbbb2Pnzp2Kvt+tn5HRaISXlxd27Nhh8bXHjx+Hl5cXfv/9d6Xi1fo99bXXXsP06dNNQ9Ru/LI9c+ZMhIWFYc+ePXj88cfx3nvvoWPHjoplo+scYvT6Aw88gE8//RQFBQUAgMuXL5vthbO30NBQ/Oc//0FFRQXKy8vxn//8x6bjfhoiNDQUn3/+Oa5evYrS0lJ8+eWXNn+P5s2bo6ysDAAwYMAAfPjhh6bH+fn5ps/Mnh544AHs2rULRUVFAK4fL7169TJ9Q87MzDT1OtWV0WjEp59+etvr/fz8cOTIEQDArl27TNvfXBcl9OnTB5988gkA4OTJkzh+/LjN38PceSeEwCOPPILo6GhkZ2cDuP3rvbkun332mWl9aGgoMjMzAQB79uxBcXGxzXPfzM/PD6dOnRaE+1oAAARHSURBVEJlZSVKSkqwb98+Rd9PNrm5uTh8+DAAYOfOnbcd956envDy8sJ3330H4PqY5dDQULRo0QI+Pj74z3/+A+D6L2MVFRVmz/H8/Hy4u7tDp9PhL3/5C7Kzs1FWVoaSkhKEhYUhNjYWOTk5DfpaevbsiUOHDuGXX34BAFRUVODMmTMIDAzEhQsXcO7cOdPXqZaSkhK0bNkS7u7uOHXqFH744Qe7vXfv3r3x5Zdf4tq1aygrK8NXX30Fd3f3Wj9fo9GIvLw89OvXDwsWLEBJSQnKy8sV+75V288id3d3tG/f3vR9TAhR6zHy2Wef4fLly0hOTsbSpUtx5coVm+cDav+5UVJSYrqQ9OZZC86dO4fOnTtj5syZCAkJwZkzZxTJRDU5RA9rUFAQ5s6di6eeegpGoxFubm5YuHAh/Pz81I6G++67D2PHjsX48eMBXL/oSobhAMD1bCNGjIBOp4Ofn1+9G2l10apVK/Tu3RujRo3CwIEDMWrUKFPvi4eHBxISEux+VW+nTp3wt7/9DVOnToVWq0XXrl3x8ssvIzY2Fhs3bjRddFUfHh4eOHHiBMaOHYsWLVrgH//4BwDgqaeewty5c/HRRx/h/vvvN21///33Y/369dDpdDa76OpmkyZNQkxMDCIiItC1a1d07twZnp6eNn2P2s67mJgYREVFmXot582bB+D6nxoXLVpkuugqKioKL730Et555x306NHDtM+///3vmD9/PsaMGYPQ0FD4+vraNPOt2rVrh0cffRQRERHo0KGDNOemvXTs2BHbt2/HwoUL0aFDB0ycOBHJyck1tomPjzddlHPjQiYAWL58ORYuXIhVq1bBzc0Nq1atwoABA3Dq1KnbzvFffvkFy5cvh1arhaurKxYvXoyysjI888wzph7GF198sUFfy43zdt68eaa/ZsydOxcBAQFYsmQJZs6ciVatWqFPnz44ceJEg97LWoMGDUJqaioiIiIQEBBQYxiU0rp3744hQ4Zg9OjR8PPzQ0hICDw9PWv9fKurq7FgwQKUlpZCCIHp06fDy8sLgwcPxpw5c7B7926bXnRl7mdRQkICFi9ejHXr1sFgMGDEiBH44x//aHpdYWEhEhMTsWnTJrRr1w6TJ0/G0qVLER8fb5NcN6vt50ZUVBSio6PRtm1b9OjRAxcuXAAAbN68GXq9HlqtFkFBQabhbaQs3umKqA569epl6qmSQXV1tWmM4Llz5zB9+nTs2rVLsfFdjqaoqAhjx45V5K8KjuLmWSWocSgrK0Pz5s1RUVGByZMn49VXX1V91gQiW3GIHlYiqqmiogLTpk2DwWCAEAKLFi1iY/X/y8/Px7Rp0/DUU0+pHYXIrhYuXIiTJ0/i2rVrGDNmDBur5FTYw0pEREREUnOIi66IiIiIqPFig5WIiIiIpMYGKxERERFJjQ1WIiIiIpIaG6xEREREJDU2WImIiIhIav8Pr6Dz6cgIU5EAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1368x360 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Matriz tf\")\n",
"displayMatrix(matrix, vocabulary)"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matriz TF normalizada\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1368x360 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Matriz TF normalizada\")\n",
"\n",
"displayMatrix(matrix_normalizada, vocabulary)"
]
},
{
"cell_type": "code",
"execution_count": 188,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matriz TFxIDF\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1368x360 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Matriz TFxIDF\")\n",
"\n",
"displayMatrix(new_matriz, vocabulary)"
]
},
{
"cell_type": "code",
"execution_count": 189,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matriz Discriminatória\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAEvCAYAAACqvmJ0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XlcVOX+wPEPINuwuiOrCIoZtmimpF4NF7oX19QW0zLtWm65dC1vi14tK39lZWkmueaauOCamprlgmCJSyYQiCwuoCYgDNvA+f0xOjgOiA0MDPJ9v17zes3ynHO+z/ecOfPMM888x0JRFAUhhBBCCCHuM5Y1HYAQQgghhBCmIA1dIYQQQghxX5KGrhBCCCGEuC9JQ1cIIYQQQtyXpKErhBBCCCHuS9LQFUIIIYQQ96V6pt5AwdmfTL0JUY0sVC41HUK5FHVWTYdQLsmbqC4l0btrOoRyWT4eUtMhiDoku9FjVbauxo2dqmxd5qLo6jmjlrNu1KKKIzEt6dEVQgghhBD3JZP36AohhBBCCDNTUlzTEVQLaegKIYQQQtQ1SklNR1AtpKErhBBCCFHXlEhDVwghhBBC3IcU6dEVQgghhBD3JenRFUIIIYQQ9yXp0RVCCCGEEPclmXVBCCGEEELcl6RHVwghhBBC3JdkjK4QQgghhLgf1ZVZF+QSwEIIIYQQdU1JiXG3Cvzyyy+EhITQq1cvwsLCDF4vLCxk0qRJ9OrViyFDhpCWlqZ7bdGiRfTq1YuQkBAOHjxYJdWUhq4QQgghRF2jlBh3u4vi4mJmzZrF4sWL2bFjB9u3bychIUGvTHh4OM7Ozvz444+MGDGCTz/9FICEhAR27NjBjh07WLx4MTNnzqS4uPJ/mKtVQxdWbt3L0k17KCgspGdQO9597XlsrK1rNKasG7nMmP8dR06cpb6zI68PG0Bot8drNKY7mTpvWdk5TP9sEZG/ncbVxYmJI58jNLizQTlFUfh8yVo2/fATAE8/1Z3JrwzFwsICgNjE80yfG0ZS6gV8vTyY9cZoWvs119Zh005WR+wmM/sGKjtbQroF8cboF6hnZVVl9bhTVeetOvK0bP02tv74CxczrlLf2Yln+/bi5Wf66tZ94kw8c775jnMpF/Bwa8y7E0byaItmRtdJr35m+l4w17ig+mNbGZ3A8sh4CjTF9Ahw552nHsGmXtnvoaikDD7afZLL2XkEutdnVt/2uLuoANj9RxqrjyUSn57Fg+71WTKsq96yj3y4GTtrKyxuPn6qjSczQttVWT3MeZ+CeX5WgfnmzVzjuu+ZYNaFU6dO4ePjg5eXFwChoaHs27cPf39/XZn9+/czfvx4AEJCQpg1axaKorBv3z5CQ0OxsbHBy8sLHx8fTp06xaOPPlqpmGpNj+7hmDMs2bibb2dNYlfYbNIuX+HrtdtrOixmh63Ful49Diz/Pz6aPJLZi9aQkHKxpsPSqY68zZ6/FGvrehxY/w0fTxvHB18uIeF8qkG58B37+OnIr2z45mM2LprDz1ExhO/YC0BRkYbXZ8ylT48uHN64mP69/sHrM+ZSVKQBoHun9qz/+kOORixlc9gnxJ9LZvXmXVVaj9uZIm/VkScFhdlvjuXwpsUs/HAaa7fu4YefjgDahvaEGZ8wYkgfjmxawstD+jJ++qdk5+RWql66+pnpe8Fc44Lqje3IuXSWHYln0dAu7BwbQlqmmoUHz5ZZ9rq6gDc2RTG2Wxt+nhJKm2auvLU5Wve6i70NL3Tw4+WgVuVub/2oYCKn9iNyar8qbeSCee9Tc/2sAvPNm7nGdd8zQY9ueno6bm5uusdNmzYlPT3doEyzZtoOlnr16uHk5MT169fvaVlj1JqG7tb9RxnYszP+3u44Ozow+plQtuyPrNGY1PkF7I2MYdzQfqjs7WjXxp/uHR5m+4GoGo3rdqbOmzovnx8PRTP+pWe0OQhsTfeg9mzbd8gwlr2/8OKgUNwaN6Rpowa8NCiULXt+AeDYyT8oLi5m+NP/xMbGmhcGPoWiKESd+B0AL/emODs6ANrGnIWlJakXL1dZPQxireK8VVeeRj7TjzYtfalnZYWvlztPBrUn5o84AE78EU/D+i6E/KMTVlaW9O3ZlQYuTuyNPGF0vXT1M9P3grnGVROxbT2VwoBHfPBv7IyzvQ2jOwew9VRKmWX3xV2kRSNnej/ggW09K8Z0fYD4jCySrt4AoJNvE0LaeNLYyc4ksd6NOe9TMM/PKjDfvJlrXHWCCcboKopi8NytXyMrKnMvyxrDqIbuK6+8UukN/12JqRcJ8PXUPQ7w9eRaZjaZ2TnVHsstyRfTsbK0pLlHU91zrXw9zOqbqKnzlnzhkjYHnqU/fwe08CHxfJpB2cTzaQS08Ckt5+dNQrK2XEJyGi19vfUO6lYtvElMLl3Pjv2H6TRgJF0Hjyb+XDJDQntWSR3KUtV5q8483aIoCsd/j8Xfx1P3+M7ziKJAQsoFo+p0O3N9L5hrXFD9sZ27mk1AE5fSbTV14VpuAZnqAoOyiVdu6JW1t6mHp6sDiVez73l7o1YdpMe8nUzZcJQLmVXzqwGY9z4F8/ysAvPNm7nGVSeYoEfXzc2Ny5dLO6HS09Np0qSJQZlLly4BoNFouHHjBq6urve0rDHKbeieOXOmzNvvv/9ObGxspTf8d6nzCnBU2ese37qfm5df7bHccmdMoI1LXYMx3cnUeVPnFeDooNJ7ztHBnty8PMOy+fk4OtwWi4MKdV4+iqKgzsvH6c71qFTkqkvjDA3uzNGIpWxf9hlDQnvSsL4LplLVeavOPN3y9coNlCgKA3p3B+CRB1tx5dp1dv50mCKNhi17fib1Ujr5BUVG1cmgfmb4XjDXuKD6Y1MXFuNoWzpO9Nb93EKNQdm8Ig2Odvp/4XC0sy6zbFmWDOvKznEhbH61J42d7Hl9fSSaKpqz05z3KZjnZxWYb97MNS5hnLZt23L+/HlSU1MpLCxkx44dBAcH65UJDg5m8+bNAOzevZtOnTphYWFBcHAwO3bsoLCwkNTUVM6fP89DDz1U6ZjK/TPa4MGD6dChQ5ldydnZ9/6t3lg7fo5i1sI1ALRr44/K3pZcdWmj4NZ9B/vq/+nsljtjAshV56OqwZiqO29l5yAPB3t7w7J2dnplc3LzUNnbYWFhgcrejpyy1qMyjNPHoxn+Pp588NVSvpgxpUrqYeq8VXee1mzZzbYfD7L8sxnY2GgbNK7OTsyb+QZzw1Yze/4yOrd/iE6PBtK0oatRdaq4fjX7XgDzjQtMH9uO31P54IcYANp5NUJlY0XObV9qcm/ed7Ax/Biwt65HToF+oza3QFNm2bK0924EgLWVDW/2eojOc7eRdPUGAUbVRJ+57dPa8FkF5pe3W8w1rjrBBBeMqFevHtOnT+eVV16huLiYQYMG0bJlS+bNm0dgYCA9evRg8ODBTJ06lV69euHi4sLnn38OQMuWLfnnP//Jv/71L6ysrJg+fTpWVfCH83LPWn5+fsyaNYvmzZsbvNatW7dKb7giod06Etqto+7xW3OXEHc+jZAujwEQdz6Nhq7OuDo7mjyW8vi4N0VTUkLyxXR83Jvq4vL3dq+xmKo7bz4ezdAUF5N84RI+Htqf5ePOpeDX3NOgrF9zT+LOJdO2tfbfl/HnknU/q/v7eLJi4w4URdH9LB+flMJz/XqVuV1NcTGplyo/SP0WU+etOvO0eddPLPl+K8vnTsetcUO9dXd4qA3r5s8GtDn810uTeLFvd6PqpFc/M3wvmHNcYPrYQgO9CA300j2eFnGM+IwsQtpoj6X4jGwaOtjiqrI1WNavsRPbTpeO380r1JB2PRe/Rs5GxWIBGHaZGMfc9mlt+KwC88ubucdVFyhK1c+6ANo24p3txIkTJ+ru29ra8uWXX5a57JgxYxgzZkyVxlPu0IXx48dTUk5r/7333qvSIO5F3yc7sXnvERJTL5Kdk0tY+A/0Dw6q9jhup7KzpWenR1mwdhvq/AJiziZwIPokfbp3rHjhamLqvKns7ejZ+XEWrAhHnZdPzJk4fjryK317dDEo269nV77buJP0q3+Rce0vVmzcQf/e/wCgw8NtsLK0ZHXELgoLi1izZTcAHR8JBGDjD/u5dj0LgMTkNJZ8v0X3milUdd6qK0/b9x1i3rLv+fbjt/Fq1tRg3WcTkijSaMjJVTM3bBVNGzWg86MPGl0vXf3M9L1grnHVRGx923oTcTKZxCvZZOcV8u3hWPo95F1m2eBW7iReyWZv7AUKNMUsOhRLyybO+DZyAqC4RKFAU0xxiYKiaO8XFWs/LxKuZBObnklxiYK6UMPcfadp4mSPb0OnKqmHOe9TMM/PKjDfvJlrXHWCCcbomiMLpayxCVWo4OxPVbau77bsZemm3RQUFtEz6FHeGzO0xucmzLqRy/SvviPy5FlcnRyYOHyg2c3/V5V5s1AZjovNys7hvbmLOHr8NC7Ojkwa9TyhwZ357XQsY975mOity4Gb88MuXsPGXdpjYtBTT+rND3s2IYkZn33LuZQ0Wnh7MHPKaB7w9wXg3U+/4WB0DHl5BdR3daJ3106MHzEEWxsbXRyKOsuoOpWnqvNWHXl6avjrpF/9C2vr0h9r+vTowvSJ2j+QvvnhlxyM1s6y0LnDw/x37AgaGHboGcVc3wvmGheYJraS6N3lvrYy6k+WRf6pnUe3tTvv3jaP7tNhexn1RICuF/hoUgYf7z7JpWw1ge4NmNWnHR6u2plPtpxKZsb243rr7tvWm/f7tif6/BVm7zpB+o087K2teNizIZODA/Fp4Ijl4yGVqtst5rxPwTw/q8B882aquLIbPVYF0Wk1blw1X9TMSf7xrUYtZ9euXxVHYlq1qqEral5ZDV1zUdUN3aokeRPV5W4N3ZpWVQ1dIe6FNHTvLv+3CKOWs2s/oIojMa1adWU0IYQQQghRBUxwZTRzJA1dIYQQQoi6phaOtzVGhReMWL16td50YllZWaxevdqkQQkhhBBCCBMywZXRzFGFDd3169fj7Fw6pYyLiwvh4eEmDUoIIYQQQphQHZl1ocKhCyUlJXpzdhYXF1NUVPkrKQkhhBBCiBpSC3tnjVFhQ7dLly5MnDiR559/HoB169bRtWtXkwcmhBBCCCFMRBq6WlOnTmXdunWsXbsWRVHo3LkzQ4YMqY7YhBBCCCGECZjqymjmpsKGrqWlJYMHD6Z9+/ZYWFjg6+tbJdceFkIIIYQQNUR6dLWioqKYNm0aHh4eKIrCpUuXmDNnDh06dKiO+IQQQgghRFWrhX8sM0aFDd05c+awZMkSWrRoAUBSUhJvvPEGmzZtMnlwQgghhBDCBKRHV6uoqEjXyAXw9fWVWReEEEIIIWoz6dHVCgwM5O2336Z///4AbNu2jcDAQJMHJoQQQgghRGVU2NCdOXMmq1evZuXKlSiKQocOHRg6dGh1xCaEEEIIIUxBhi5o2djY0L9/f/r370+DBg2qIyYhhBBCCGFKdX3ogqIozJ8/n1WrVukeW1paMmzYMMaPH19tAQrzoqizajqEWkkpzK/pEIQQdxHZ/euaDqFcQQfG1nQI4n5UR3p0Lct7YcWKFRw/fpwNGzYQFRVFdHQ04eHhxMTEsHz58moMUQghhBBCVKmSEuNutUy5Dd2IiAjmzp2Ll5eX7jkvLy8++eQTIiIiqiU4IYQQQghhAkqJcbdaptyhCxqNpswxuQ0aNECj0Zg0KCGEEEIIYUK1sHfWGOU2dK2trctd6G6vCSGEEEIIM1cLe2eNUW5DNzY2lnbt2hk8rygKhYWFJg1KCCGEEEKYUF3v0T179mx1xiGEEEIIIapLXe/RFUIIIYQQ96m63qMrhBBCCCHuU9LQFUIIIYQQ9yVFqekIqoU0dIUQQggh6hrp0RVCCCGEEPclaegKIYQQQoj7ksy6IIQQQggh7kt1pEfXsqYDEEIIIYQQwhRqVY/uyq17WbppDwWFhfQMase7rz2PTQ1fjjjrRi4z5n/HkRNnqe/syOvDBhDa7fEajelOkjfjVHXesm7kMGPeMo7E/E59Zydef2kQod2DDMopisIXy8PZtOcXAAb2+geTXx6ChYUFALHnUpgxbylJaZfw9WzGzIkjad3CG4DoU2dZtHYrZxOTcXZUsWvpp3rrfmrkf7iWmY2lpfY77iMP+LNoxgSj66RfP/Pcp+YaF1R/bCujE1geGU+BppgeAe6889Qj2NSzKrNsVFIGH+0+yeXsPALd6zOrb3vcXVQA7P4jjdXHEolPz+JB9/osGdZVb9lHPtyMnbUVFjcfP9XGkxmhhlfaNFZ15s3z1VC8xw/A0s6GKzuOEv/mtyiFmjLLunYNpNVHr2Dr0YjsmD+JfX0BBWlXAWg9bxxNnu6CUlS67EH/lwx61XzeGIzvm89ycsgsrv9yukrrYq7vBXON674nsy6Yl8MxZ1iycTeL359MkwYuTProG75eu51JLw6s0bhmh63Ful49Diz/P2KT0hj/wXwCfD3x93av0bhukbwZxxR5m71wFdbWVhxYNY/YcymMn/kFAb7e+Pt46JXbsOsA+4/GEP7VLCyw4NX3PsXTrTHP/OtJioo0THz/S4b178WzocGE/3CAie9/yfawj7G2roe9rS0DenXln906snj99jLj+Gr6RDo98mDpE5oCo+ukVz8z3afmGld1x3bkXDrLjsQT9kIXmjjaMXljFAsPnmXik4EGZa+rC3hjUxTT/9WObi3dWPDzH7y1OZqVI7oD4GJvwwsd/Dh/LYfo5Ctlbm/9qGC8GzhWeT2g+vJWv/vDeE8YwIlBMym8fJ3AZVPxffNZzn2w2qCsdQMnApdOJW7KQq7t+Y3mbz3Hg2GTOf6vd3RlUhdsIenjdeVuz86nKY37BlFw+a8qrcct5vpeMNe47nsydMG8bN1/lIE9O+Pv7Y6zowOjnwlly/7IGo1JnV/A3sgYxg3th8rejnZt/One4WG2H4iq0bhuJ3kzTlXnTZ1fwN4jvzJu2NPaOj/Yiu4dH2H7T0cMt73vMC8NDMGtUQOaNqrPiwND2LLvEADHTsdSXFzMsP69sbG25oV+vVBQiDqlvWR324AW9A1+Ak+3xkbHanT9zHCfmmtcNRHb1lMpDHjEB//Gzjjb2zC6cwBbT6WUWXZf3EVaNHKm9wMe2NazYkzXB4jPyCLp6g0AOvk2IaSNJ42d7EwS691UZ97cnu3OpTX7UcelocnK5fznG3B7tnuZZRuFdiQ3LpUr245SUlDE+U/X49CmOSr/e2+stfxoFOfeX1Vuj3FlmOt7wVzjqhNKSoy71TLlNnRzcnKYO3cuU6dOZdu2bXqv/e9//zN1XAYSUy8S4Oupexzg68m1zGwys3OqPZZbki+mY2VpSXOPprrnWvl6kJByscZiupPkzThVnbfkC5dv1tlN91wrXy8Ski8YbjvlIq18vW7btheJN3OTmHKBlr5eumEMAK2ae5FYxnrKM+3TMLoNncCr731K3LmyGzp/l7nuU3ONC6o/tnNXswlo4lK6raYuXMstIFNt2KOfeOWGXll7m3p4ujqQeDX7nrc3atVBeszbyZQNR7mQmVu54G9TnXlzCPAk50yy7nHumWRsmrhSr75hT7VDgJde2RJ1AfnJl1EFlL6X3UeE0Dl2Ge33zKFRaEe95Rv37YRSpOGvfTFVXg8w3/eCucZVJyglxt1qmXIbuv/9739RFIWQkBB27NjBhAkTKCwsBODkyZPVFuAt6rwCHFX2use37ufm5Vd7LLfcGRNo41LXYEx3krwZp6rzVnadVWXWWZ2fj5NKpbdtdV4+iqKgzivAqYzc3WtcH/3nVXYt+YRdSz+lQ9vWvDZ9Ltk5aiNqdEfMZrpPzTUuqP7Y1IXFONqWjjG/dT+3jN7DvCINjnb6I9sc7azLLFuWJcO6snNcCJtf7UljJ3teXx+Jpop6gqozb1YOdhRnl74/NDfv13O0L7vsDf33kiZbrSubtngnUUETOPLgKJLmrKP1l+Nw7hCgXVZlh+/bQ0l4b3mV1+EWc30vmGtcdYFSohh1q23KHaObkpLCV199BUDPnj1ZuHAhL774IgsXLqyWwHb8HMWshWsAaNfGH5W9LbnqPN3rt+472Ff/T2e33BkTQK46H1UNxiR5M46p86aytzVojOaq88qss8rOjpzbt52nzY2FhQUqe1u91wBy1Hn3HNejbVrq7r/yTB+27j/M8T8S6P74Q3+nOoYxm+E+BfONC0wf247fU/ngB23vYDuvRqhsrMgpKCrd1s37DjaGHwP21vXIKdBv1OYWaMosW5b23o0AsLay4c1eD9F57jaSrt4gwKia6DNl3poM6kLAJ68CkHn0LMW5+Vg5lTbCbt3X5OQZLFucm4/VHQ1gKyeVrmzO6STd83/tiyFj40Eah3Yk+1gczd98hvTwX8hPyah0Hcpjru8Fc42rTqiFwxCMUe5Zq7CwkJKSEt2/s8eMGYObmxvDhg1Dra58D1BFQrt1JLRb6U87b81dQtz5NEK6PAZA3Pk0Gro64+psmj873Asf96ZoSkpIvpiOj3tTXVw1OYBe8mYcU+fNx8MNTXExyRcu43Nz+EJcUqrBH9EA/LzdiUtKpW1AC225cyn43cyNn7cHKzbvRlEU3fCFP8+n8VyfHkbFZYEFCpX/hm6O+9Sc4wLTxxYa6EVoYOnP5tMijhGfkUVIG+2QnPiMbBo62OKqsjVY1q+xE9tOlw5rySvUkHY9F79GzkbFYgFVcJRpmTJvGRsPkbHxkO7xAwsn4vhgc65s1Y7Pd3ywOYUZmWiuGw5hyo1Lxe2ZbrrHlipb7H2aoo5LLXNbigLcfA/X79oW22YN8Hg5BADrhs60CZtCyvwIUudvqXS9wHzfC+YaV51QA8MQMjMzmTx5MhcuXMDDw4MvvvgCFxcXg3KbN2/WdayOGTOGgQMHkpeXx8SJE0lJScHKyoonn3yS//znPxVus9yhC08++SRHjx7Ve27gwIG89dZbWNfA1FR9n+zE5r1HSEy9SHZOLmHhP9A/2HBqpuqksrOlZ6dHWbB2G+r8AmLOJnAg+iR9uneseOFqInkzTlXnTWVnS8+g9ixYHaGt8x9/ciAqhj5PPmG47eDOrIzYTfrV62Rcu853Ebvp36MLAB3atsbK0pLVW3+ksKiItdv2AtDxoQcAKCkpoaCwiCJNMYqC9v7N6YwuZVwj5o8/KSrSUFBYxLKNP5CZfYNHW/sZXS+9+pnhPjXXuGoitr5tvYk4mUzilWyy8wr59nAs/R7yLrNscCt3Eq9kszf2AgWaYhYdiqVlE2d8GzkBUFyiUKApprhEQVG094uKtR+aCVeyiU3PpLhEQV2oYe6+0zRxsse3oVOV1KM685a+/meaDQ1G1cqTei4O+EwexOXvD5RZ9urOaBxae9MotCOWttY0nzKY3LPJqBO0Y00b9+mElcoOLCyo3+0hmg7uyrXdxwA4MXgmx7q9wa/BU/k1eCoFl/8ifuoiLi7dXWV1Mdf3grnGVSeUKMbdKiEsLIygoCD27NlDUFAQYWFhBmUyMzOZP38+69evJzw8nPnz55OVlQXAyJEj2bVrF5s3b+b48eP8/PPPFW7TQlFMO5Fawdmfqmxd323Zy9JNuykoLKJn0KO8N2aoWcwHO/2r74g8eRZXJwcmDh9odvP/Sd6MU6V5q2dL1o0cps9bSmTMGVydHZn40mBCuwfx2+/xjP3fZ0Rt+AbQzqP7+bLSeXSf7q0/j+7ZxGT+9+UyzqVexNerGTNfH8kDfj4AHDsVy6i35+ht+rHAAJZ+PI2E5Au89ck3pF7KwNbGmgBfbya/PIQHfaum58Rc96m5xgWmia0kuvzG0cqoP1kW+ad2Ht3W7rx72zy6T4ftZdQTAbpe4KNJGXy8+ySXstUEujdgVp92eLg6ALDlVDIzth/XW3fftt6837c90eevMHvXCdJv5GFvbcXDng2ZHByITwNHLB8PqVTdbjFF3iK7f13m856v9sF7Qn/tPLrbo4h/M0w3K0KHnz8j+ctNul7g+v9oS8sPR2Hr2Zgbx/8kduIC8lO10689smUWjm18wALyUzJI+XIzGRGGs64AdDq2gLg3vtHNoxt0YGyl6naLub4XTBVXdqPHqiA6rcaNq+aLmjlRf2XccaWaUPZ75V6EhISwcuVKmjRpQkZGBsOHD2f3bv1z1vbt24mOjmbWrFkATJ8+nccff5w+ffrolfvggw9o1aoVzzzzzF23WasaukLUWvUMfx42G1U0j64wD3dr6Na0qmromkJ5DV1zUFUN3bpGGrp3p573mlHLqSZ+Y/Q2H3vsMX799Vfd4w4dOnDs2DG9MkuWLKGgoICxY7XH/YIFC7Czs2PUqFG6MtnZ2QwcOJDly5fj5eXF3dSaC0YIIYQQQogqYqJ+zhEjRnD16lWD5ydNmnRPy5fV/3r7lJoajYYpU6YwfPjwChu5IA1dIYQQQoi6x0SzLixfvrzc1xo2bEhGRoZu6EKDBg0Myri5uREdHa17nJ6ezuOPlw5lee+992jevDkjRoy4p3gqvDLa6tWryc4unSQ8KyuL1asNL38ohBBCCCFqiRr4M1pwcDAREREARERE0KOH4YxBXbp04dChQ2RlZZGVlcWhQ4fo0kX7h+zPP/+cnJwc3n777XveZoUN3fXr1+PsXDqljIuLC+Hh4fe8ASGEEEIIYWZq4Mpoo0eP5vDhw/Tu3ZvDhw8zevRoAE6fPs0777wDgKurK2PHjmXw4MEMHjyYcePG4erqyuXLl/nmm29ISEhg4MCB9O/f/57aoxUOXSgpKdGbs7O4uJiioqIKlhJCCCGEEGarBq5yVr9+fVasWGHwfNu2bWnbtq3u8a1G7u3c3NyIi4v729ussKHbpUsXJk6cyPPPPw/AunXr6Nq169/ekBBCCCGEMA9KXb8y2i1Tp05l3bp1rF27FkVR6Ny5M0OGDKmO2IQQQgghhDBahQ1dS0tLBg8eTPv27bGwsMDX1xcrK6vqiE0IIYQQQphCDQxdqAkVNnSjoqKYNm0aHh4eKIrCpUuXmDNnDh06dKiO+IQQQgghRFWr5B/LaosKG7pz5sxhyZIltGjRAoCkpCTeeOMNNm3aZPLghBBCCCGECUiPrlZRUZHkyuQiAAAgAElEQVSukQvg6+srsy4IIYQQQtRm8mc0rcDAQN5++2369+8PwLZt2wgMDDR5YEIIIYQQwkSkR1dr5syZrF69mpUrV6IoCh06dGDo0KHVEZsQQgghhDAFGaOrZWNjQ//+/enfv3+Z1yQWQgghhBC1TF3v0VUUhfnz57Nq1SrdY0tLS4YNG8b48ePvfQvmPAbEssIrINcMM86ZhWP9mg6hXErO9ZoOoXyagpqOQAhxF0EHxtZ0COWycGpU0yGUSblxtaZDEJVQVy4YUW5Lb8WKFRw/fpwNGzYQFRVFdHQ04eHhxMTEsHz58moMUQghhBBCVKkSxbhbLVNuQzciIoK5c+fi5eWle87Ly4tPPvmEiIiIaglOCCGEEEKYQB1p6JY7dEGj0ZQ5JrdBgwZoNBqTBiWEEEIIIUyorv8ZzdrautyF7vaaEEIIIYQwc7Wwd9YY5TZ0Y2NjadeuncHziqJQWFho0qCEEEIIIYTpKHW9oXv27NnqjEMIIYQQQlSXut7QFUIIIYQQ96k6Mr2YNHSFEEIIIeoa6dEVQgghhBD3pTrS0DXTS4MJIYQQQghROdKjK4QQQghRxyhK3ejRlYauEEIIIURdU0eGLkhDVwghhBCirpGGrhBCCCGEuB/V+QtGVIXly5cTtnABBYWF9Oz0KO+++hw25Vw++OipWD789nsuX/mLtq2a8/74F3Fv0hCAwqIiPli0jh8jY7CzteHlAb14sV+Pe1oW4OjJWD77bjPnL6bj4qjiPyMGEdK5vd72t+yP5L0vVzBj3DAG9epyz3XMupHLjPnfceTEWeo7O/L6sAGEdnv876RJz8qte1m6aU/tyNmen3n30294c8xwfj15lsjfTuPq4sTEkc8RGtzZIF5FUfh8yVo2/fATAE8/1Z3JrwzFwsICgNjE80yfG0ZS6gV8vTyY9cZoWvs11+Zl005WR+wmM/sGKjtbQroF8cboF6hnZQXAdxt3svT7LbUjb0Yea1D1x1tVMtfYzDUuqP7YVkYnsDwyngJNMT0C3HnnqUewqWdVZtmopAw+2n2Sy9l5BLrXZ1bf9ri7qADY/Ucaq48lEp+exYPu9VkyrKveso98uBk7ayssbj5+qo0nM0INr7RpLHPep3DHeTyoHe++9ny556N7lZV9g+mfLiTyt5O4Ojsx8ZUXCO3R1aCcoih8/u0qNu3cB8DT/+zB5NHDSs+zCUlM/3QhSSlp+Hp7Mus/Y2jt76uNe+N2Vm/eSWbWDVT2doR0f4I3Xn1Rd549cSaWOQuWcy4lDQ+3Jrzz72do18a/UvUC89+f96060tA12awLBw8eJCwsjG//9zq7vvmAtPSrfL1uR5llr2fnMOX/whj/fF8Ofvcpbfx8mDp3ie71hd/vIPlSBrsXfcCSWRNZFvEjh46fuadlE1Mv8dbnS5nwQj+OrJpL+Gdv08bPW2/72Tm5LNm4Cz9v979dz9lha7GuV48Dy/+PjyaPZPaiNSSkXPzb6wE4HHOGJRt314qcZd3IYfG6rfj7eLJz/xGsretxYP03fDxtHB98uYSE86kGMYfv2MdPR35lwzcfs3HRHH6OiiF8x14Aioo0vD5jLn16dOHwxsX07/UPXp8xl6IiDQDdO7Vn/dcfcjRiKZvDPiH+XDKrN+/S5u3Xkyz5fkutyFtljjWo2uOtqplrbOYaF1RvbEfOpbPsSDyLhnZh59gQ0jLVLDxY9hUwr6sLeGNTFGO7teHnKaG0aebKW5ujda+72NvwQgc/Xg5qVe721o8KJnJqPyKn9qvSRi6Y9z7VncdnTWJX2GzSLl/h67XbK73e2V8u1p5nNyzm47cn8sG8b8s+z27/kZ8OH2PDt3PZ+O1cfj76G+Hb9wBQVFTE6+/NoU/PrhyOWEH/3t14/b05FBUVAdA96DHWf/MJR7etZPPiz4hPTGb1pp2AtqE94d05jHi2H0e2rODlZwcwYfbXZOfkVr5uZrw/72slRt5qGZM1dCMiIhg8eDD+3u44O6oYPeSfbPnpaJll9x09gZ9XM3o/0Q5bG2vGPBtKfPIFktIuA7DtQBSvDvknzo4qWng2Y1DPzmy9ua6Klg3b8ANDenela7sHqWdlhauTI15ujfW2P29lBENDn6S+k8PfqqM6v4C9kTGMG9oPlb0d7dr4073Dw2w/EPV30wXA1v1HGdizc+3I2dJ1vDAgBCcnB/74M4nxLz2jzUFga7oHtWfbvkOG9dv7Cy8OCsWtcUOaNmrAS4NC2bLnFwCOnfyD4uJihj/9T2xsrHlh4FMoikLUid8B8HJvirOjdv8oKFhYWpJ6URvvlh9/4emnnqwdeTPyWIOqP96qkrnGZq5x1URsW0+lMOARH/wbO+Nsb8PozgFsPZVSZtl9cRdp0ciZ3g94YFvPijFdHyA+I4ukqzcA6OTbhJA2njR2sjNJrHdjzvsU7jyPOzD6mVC27I+s1DrVefn8eDCK8SOeQ2VvT7u2D9A96DG2/fiz4fb3HODFIX2159nGDXlpSF+27D4AwLGTZyguLmH4oD7a8+zToShAVMyt86xb6XlWAQtLC9159sSZOBrWdyGk2xNYWVnRt9c/aODiyN7IE5Wrm5nvz/uZUqIYdattym3oXrlyhRkzZjBz5kyuX7/OV199Rd++fZk4cSIZGRkVrvjPP/+kdevWuscBzT25lplN5o0cg7IJqRdp1dxT91hlZ4tn00YkpF4iO0dNxl9ZBNz2eqvmHiSkXqpwWYBT8UkAPD3pA4JHTuO/Xywj60bpN9DT8UmcSUjmmaf+UWGd7pR8MR0rS0uaezQtjc3Xw+hvoompFwnwLa2L2eYsNoEz8ed4pk9PCgoKsbSwoLlns9K4W/iQeD7NsH7n0who4VNazs+bhGRtuYTkNFr6eut+XgNo1cKbxOTS9ezYf5hOA0bSdfBo4s8lMyS0p3a9yXes11zzVoljDar+eKtK5hqbucYF1R/buavZBDRxKd1WUxeu5RaQqS4wKJt45YZeWXubeni6OpB4Nfuetzdq1UF6zNvJlA1HuZBZ+V6/W8x5n0IZ53Hfm+ejbMPz0b1KTruorbNX6S9BAX4+JJbRo5uYnEaAn49euVs9vwnnU2nZ4o7zrK+33np27DtIp77D6fr0y8QnJjOkTy9A2/C9czYqRVFISLlgdL3A/Pfnfa1EMe5Wy5Tb0J02bRr+/v40a9aMF198EVtbWxYtWsRjjz3GjBkzKlyxWq3G0dFR99hRZQ9Abp7hSTUvvwCnm6/f4qSyR52Xjzo/X2/521+raFmA9GuZbP85is/e/DfbF/yP/MIiPlq8HoDi4hJmL1rLf//9HJaWf79zW51XoBfXrThvbbuy6zPXnH3w1VL+O24ElpaWFJeUYGtro58DB3ty8/IM65efj6PDbfVzUKHOy0dRFNR5+Tg5qPTXo1KRqy7NZWhwZ45GLGX7ss8YEtqThvVdbubtjvWaad4qc6xp61m1x1tVMtfYzDUuqP7Y1IXFONqWjhO9dT+3UGNQNq9Ig6Od/l84HO2syyxbliXDurJzXAibX+1JYyd7Xl8fiaakan7zNOd9Cnc7jxsfn/Ycd8f50UFV9nk2Lx9HB4fbyjnc/TzrqL+e0B5dObptJdtXfMWQvr1059lHHgzgyrW/2Ln/EEUaDVt2HyD18lXyC4qMrpc2XvPen/e1OjJ0odw/o127do3hw4cDsGbNGkaPHg3A8OHD2bBhg0H5rVu36hrA7du3R6VSkZOTAw1tAXRvJAd7W4Nl7e1syVHrv2Fz8vJR2duhstP+NJajzsfWxlrvtYqWBbCzsaZ/cBDN3bXfFv896Cn+/b95AHz/w8+0au7Jw61blJeGu1LZ25J7x7Zz1aXbrsiOn6OYtXANAO3a+Buszxxztm7bHlq18OaRNtqxeVaWlhQUFt6Rgzwc7PVPXAAqOzu9+uXk5qGyt8PCwgKVvZ1BTLnqPBxUhrk8HZvI8vDtLFm3hU7t2hosa455q+yxBpU/3kzJXGMz17jA9LHt+D2VD36IAaCdVyNUNlbk3NYoyb1538HG8GPA3roeOQX6jdrcAk2ZZcvS3rsRANZWNrzZ6yE6z91G0tUbBBhVE33mtk8rPI+rb52PjI9PZW9Hrlqt91xubjnn2TvK5qjVdz/PlrMeH89m+Pt48cG8b/li5pu4ujgx7/23mLvoO2Z/uZjOjz1Mp4da07Shq9H10sZrXvuzLqmNwxCMUW7XUslt37779+9f7mu39OvXj5iYGGJiYli8eDEtW7YkLi5O93rc+Qs0dHXG1cnRYFl/L3fiz5f+/KHOLyDt8hX8vZrh7KiicX0X4m/7KTz+fBr+Xs0qXBagpY+H3s80t4s6Fcu+oyd4csSbPDniTU7EnWPusg18GLa2vLTo8XFviqakhOSL6bfVMw3/e/yjUWi3jkStm0fUunksnD4BPy934m6rp1nmLOYM+w7/SvdnX6P7s68Rdy4ZjaaYaR/PL437XAp+t/3Ef4tfc0/iziWXxnQuGX8fbTl/H0/ik1L0rtQSn5SCn4/hevr06ML/Jv8bv+aefPPhNPx8PIk/VzrW0CzzVsljDSp/vJmSucZmrnGB6WMLDfTS/RlswXNP0KKRM/EZWbrX4zOyaehgi6vK8AuhX2MnvbJ5hRrSrufi18jZqFgsgKr6SDW3fVrxeTxNez5yNjwf3SsfT3c0xSUkp10qXe+58/g19zIo6+fjSVzied3j+MTz+N8s59/ci/hzyfrn2XPJZa4HQFNcQuptee7w8IOs+3oOhyOW8+F/X+f8xXQCWzU3ul5gfvuzTqkjPbrlNnR79OhBbq52XNXkyZN1zycnJ+Pr61vhivv378+GDRtIvDn2MSz8B/o/2anMssEdHyYh9SI/RsZQUFjEovU7aenjga+nGwB9u3ckbMMPZOeoSUq7zMYfD9Pv5roqWnZAcBAR+yNJu3yVvIJClm7eQ7fH2gLw/usvsWX+DMI/f4fwz9/hQT8fXnu2DxNeGHAvuUNlZ0vPTo+yYO021PkFxJxN4ED0Sfp073hPy9+p75Od2Lz3iFnn7IOpr7F18adsWPgxGxZ+TGCAHwEtfCgoLEKdl0/MmTh+OvIrfXsYTpvVr2dXvtu4k/Srf5Fx7S9WbNxB/97a8aodHm6DlaUlqyN2UVhYxJotuwHo+EggABt/2M+169oP3sTkNJZ8v0X3Wr+eXdm06yezzltljzWo+uOtKplrbOYaV03E1retNxEnk0m8kk12XiHfHo6l30PeZZYNbuVO4pVs9sZeoEBTzKJDsbRs4oxvIycAiksUCjTFFJcoKIr2flGx9hMw4Uo2semZFJcoqAs1zN13miZO9vg2dKqSepjzPoXbz+MXyc7J1Z6PgoMqtU6VvR09uzzOguXrtOfZ32O159le3QzK9uvdje82bCf9yjUyrv7FivBt9A/pDmgbqlaWlqzetFN7no34AYCOj948z+7YW3qePZ/KkrWb6PhoW926z/55jiKNhpxcNXO/+Y6mDV3p/OiDlaubme/P+1ld+TOahWLCix0vW7bs5jy6RfTs9Ajv3TaX4MCJ7/PK0yG6ufKOnozlw8Xfc+nKX7Rt2Zz3J7yIRxlzm9raWDNyYG/9uU3vsizAgnXbWb9L++/+zo+2YdqoZ3B2VMEdYyVHvjOX0O4d//Y8utO/+o7Ik2dxdXJg4vCBlZr/77ste1m6abfZ5szCsb5evC//ZxbBnR/j2ImzHD1+GhdnRyaNep7Q4M78djqWMe98TPTW5cDN+R0Xr2HjLu08uoOeelJvHt2zCUnM+OxbzqWk0cLbg5lTRvPAzfkd3/30Gw5Gx5CXV0B9Vyd6d+3E+BFDsLXRjg9esWHHzXl0zTNvVXGsQdUfb1XJXGMz17jANLGVRO8u97WVUX+yLPJP7Ty6rd1597Z5dJ8O28uoJwIIDdT27h1NyuDj3Se5lK0m0L0Bs/q0w8NVO/Zzy6lkZmw/rrfuvm29eb9ve6LPX2H2rhOk38jD3tqKhz0bMjk4EJ8Gjlg+HlKput1izvsU7jiPBz3Ke2OGVmoeXQunRmRl3+C9T77m6PFTuDg7MenmPLq/nfqDMf/9kOgdq4Cb59mwVWz8QTuP7qA75tE9++c5Zsz9hnPJN8+z/xnDAy21Q6re/b8FHIw6Tl5+PvVdnOndLYjxLz+nO8+++cHnHIzWDofp3OERpo0YQENX43r5b2eq/Znd6LFKr+OWxo2r5ouaOfmrv+EXpXvRYIvhbB/mzKQNXYCCM/tMufrKMfJPQSZXRX/aMIU7G7rmRMm5XtMhlM9cjzVx37lbQ7emVVVDt66xcGpU0yGUSblxtaZDuCtp6N7dtb7GNXQbbqtdDV25BLAQQgghRF1jvn1qVUoaukIIIYQQdYxSRxq6Ff6eunr1arKzSycJz8rKYvXq1SYNSgghhBBCiMqqsKG7fv16nJ1LB5u7uLgQHh5u0qCEEEIIIYQJ1ZHpxSoculBSUoKiKLp/bBYXF1NUVLkroQghhBBCiJojQxdu6tKlCxMnTiQyMpLIyEimTJlC165dqyM2IYQQQghhAkqJcbfKyMzM5OWXX6Z37968/PLLZGVllVlu8+bN9O7dm969e7N582aD11977TX69OlzT9ussKE7depUOnXqxNq1a1mzZg1BQUFMnTr1nlYuhBBCCCHMT000dMPCwggKCmLPnj0EBQURFhZmUCYzM5P58+ezfv16wsPDmT9/vl6DeM+ePTg4ONzzNits6FpaWjJ48GDGjRvHhAkTGDRoEFZWVve8ASGEEEIIYWYUC+NulbBv3z4GDNBeEXTAgAHs3bvXoMyhQ4fo3Lkzrq6uuLi40LlzZw4ePAhAbm4uy5YtY8yYMfe8zQrH6EZFRTFt2jQ8PDxQFIVLly4xZ84cOnTocM8bEUIIIYQQ5qMmxuheu3aNJk2aANCkSRP++usvgzLp6em4ubnpHjdt2pT09HQA5s2bx8iRI7Gzs7vnbVbY0J0zZw5LliyhRQvtJQKTkpJ444032LRp0z1vRAghhBBCmA+lpHK9s+UZMWIEV68aXjVv0qRJ97R8WRfstbCw4OzZs6SkpPD222+TlpZ2z/FU2NAtKirSNXIBfH19ZdYFIYQQQohazFQ9usuXLy/3tYYNG5KRkUGTJk3IyMigQYMGBmXc3NyIjo7WPU5PT+fxxx8nJiaG33//neDgYDQaDX/99RfDhw9n5cqVd42nwjG6gYGBvP3220RFRREVFcW7775LYGBgRYsJIYQQQggzpSgWRt0qIzg4mIiICAAiIiLo0aOHQZkuXbpw6NAhsrKyyMrK4tChQ3Tp0oWhQ4dy6NAh9u/fz5o1a2jevHmFjVy4hx7dmTNnsnr1alauXImiKHTo0IGhQ4caUT0hhBBCCGEOamKM7ujRo5k0aRIbNmygWbNmzJs3D4DTp0+zbt06Zs+ejaurK2PHjmXw4MEAjBs3DldXV6O3aaGUNRjiDrcGC5fVxVyRgjP7/n5U1cWywg7tmlFivrM4WzjWr+kQyqXkXK/pEMpnrseauO+URO+u6RDKZfl4SE2HUCtZODWq6RDKpNwwHIdpTrIbPVZl62rc2KnK1mUuUjsY9qbeC69jZtyuK0O5PbqKojB//nxWrVqle2xpacmwYcMYP378vW9BPuD/PjPOmaIue3Jns2DGeTNr9WxrOoLyaQpqOgJRhSwb+9R0COU6/OBbNR1CuYIOjK3pEMpkzvsTgAq78eq2irs57w/ltgxWrFjB8ePH2bBhA1FRUURHRxMeHk5MTMxdBxoLIYQQQgjzppRYGHWrbcpt6EZERDB37ly8vLx0z3l5efHJJ5/oBhILIYQQQojap640dMsduqDRaMock9ugQQM0Go1JgxJCCCGEEKZTV4YulNvQtba2Lnehu70mhBBCCCHMW23snTVGuQ3d2NhY2rVrZ/C8oigUFhaaNCghhBBCCCEqq9yG7tmzZ6szDiGEEEIIUU0qe/GH2qLCC0YIIYQQQoj7S01cMKImSENXCCGEEKKOKZEeXSGEEEIIcT+SoQtCCCGEEOK+VOdnXRBCCCGEEPenOj+PrhBCCCGEuD9Jj64QQgghhLgvyZ/RhBBCCCHEfUn+jGaGVm7dy9JNeygoLKRnUDvefe15bGr4csRZN3KZMf87jpw4S31nR14fNoDQbo/XaEx3krwZpy7lLetGDjPmLeNIzO/Ud3bi9ZcGEdo9yKCcoih8sTycTXt+AWBgr38w+eUhWFhoT5ix51KYMW8pSWmX8PVsxsyJI2ndwhuA6FNnWbR2K2cTk3F2VLFr6ae69V7LzGZO2Bp++z2OvPwC/H08+M8rz/GQn2cV1M18j7Xqjm1ldALLI+Mp0BTTI8Cdd556BJt6VmWWjUrK4KPdJ7mcnUege31m9W2Pu4sKgN1/pLH6WCLx6Vk86F6fJcO66i37yIebsbO24tbH6FNtPJkRqr3SZlb2Dd776HMio4/j6uLCpNdGENr7SYPtK4rC5wuXsnHbbgCe7hPClLEjS4+1+ESmf/wF586n0qK5F7OmTaJ1Kz/d8n/EJTBn3iL+iE/A3s6Of7/4LMOfGaC3jWMxp3h5/FuMfuk52peTM89XQ/EePwBLOxuu7DhK/JvfohRqyizr2jWQVh+9gq1HI7Jj/iT29QUUpF0FoPW8cTR5ugtKUemyB/1fghL9yUx93hiM75vPcnLILK7/crqcqIxjiuPNXPfn66NfqlS96oK6MkbXsqYDuFeHY86wZONuvp01iV1hs0m7fIWv126v6bCYHbYW63r1OLD8//ho8khmL1pDQsrFmg5LR/JmnLqWt9kLV2FtbcWBVfP46D+jmf31ShKSLxiU27DrAPuPxhD+1Sw2fPU+vxw7SfgPBwAoKtIw8f0v6fNkEIfWzadfj85MfP9Lim5+sNvb2jKgV1emjHzGYL15+fkEtvRl3RczOLhWu+z4mV+gzsuvfN3M+FirztiOnEtn2ZF4Fg3tws6xIaRlqll4sOwrYF5XF/DGpijGdmvDz1NCadPMlbc2R+ted7G34YUOfrwc1Krc7a0fFUzk1H5ETu2na+QCfDB3Adb1rPl521rmzJjK+5/OJ+FcssHy4Vt+YP8vkWxcsYBN333Nz0eiWB+xE4CioiImTJtFn97BHNm1nn7/7MmEabMoKirSxp+ZxWtT3mVI/39yeOf3/PD9Ep54XP+S9kUaDR9/sYiH2gSUW4f63R/Ge8IATgyeydHHxmLv3RTfN58ts6x1AycCl04lac46Drd+mRsnzvFg2GS9MqkLtnCwxXDd7c5Grp1PUxr3DaLg8l/lxlQZpjjeatP+FPpKFAujbrXN32roXrt2zVRxVGjr/qMM7NkZf293nB0dGP1MKFv2R9ZYPADq/AL2RsYwbmg/VPZ2tGvjT/cOD7P9QFSNxnU7yZtx6lLe1PkF7D3yK+OGPa1d74Ot6N7xEbb/dMSg7NZ9h3lpYAhujRrQtFF9XhwYwpZ9hwA4djqW4uJihvXvjY21NS/064WCQtQpbWOqbUAL+gY/gadbY4P1ero14cWBITRu4IqVlSWDn+pOUZGG8xfSK183Mz3Wqju2radSGPCID/6NnXG2t2F05wC2nkops+y+uIu0aORM7wc8sK1nxZiuDxCfkUXS1RsAdPJtQkgbTxo72f2tGNR5+fx44DAT/j0clcqedg8H0r1LJ7bt3mdQdssPe3np+adxa9KYpo0b8dJzg9iy80cAoo+fori4mOHPDsDGxoZhQ/prj7XfTgKwYt1mnujYnj4hwdjY2ODgoMKvubfe+les3cQTj7fD18er3Hjdnu3OpTX7UcelocnK5fznG3B7tnuZZRuFdiQ3LpUr245SUlDE+U/X49CmOSp/93vOT8uPRnHu/VXl9hhXhimOt9q2P4U+RbEw6lbblNvQzczM1Ltdv36dIUOGkJWVRWZmZnXGCEBi6kUCfEt/xgzw9eRaZjaZ2TnVHsstyRfTsbK0pLlHU91zrXw9zKa3CCRvxqpLeUu+cPnmet1uW69XmT26iSkXaeVb+kES4OtF4s3tJ6ZcoKWvl+6nSIBWzb1ILGM9FYk9l0KRRoNXsyZ/e9nbmfOxVt2xnbuaTUATl9JtNXXhWm4BmeoCg7KJV27olbW3qYenqwOJV7PveXujVh2kx7ydTNlwlAuZuQAkp6Zp6+x923vL35eEJMMewMSkZAL8W9xRLuXmaym08vfVP9b8Stdz6kwsLs5OvPDqFP4R+hzj3pzBpcsZurIXL6ezeccexrw89K51cAjwJOdMaWy5Z5KxaeJKvfqOZZT10itboi4gP/kyqoDS94v7iBA6xy6j/Z45NArtqLd8476dUIo0/LUv5q4xGcsUx1tt259Cn6IYd6ttyh2j26lTJ9zd9b+JpqenM3DgQCwsLNi3z/Abmymp8wpwVNnrHt+6n5uXj6uz4UmnJmICbVxV8XNrVZG8Gacu5a3s9arKXK86Px8nlcpg+4qioM4rwKmM+HL/Znw56jzenhvGa8/3x8nBvuIF7sKcj7Xqjk1dWIyjbekY81v3cws1uKps9crmFWmor7LRj83Omtx77GlcMqwrD3k0IK9Iw4Kfz/L6+ki+fyUYtTofR0cHvbJOjg7kqvMM483TL+vk6IA6L+/msZaHo4NKr7yTg0q3nvQrVzkbn0DYF7Np1cKXuV8vYer/5rDqm7kAfPT5N4x/RdsLeTdWDnYUZ6t1jzU379dztEdzPcegbNE1/S8Cmmw19Ry120hbvJOE/62gOFtN/e4P0yZsMqcyMsk+FoeVyg7ft4dy6tkP7hpPZZjieKtt+1Poq43DEIxRbkN36tSpHDlyhDfffJOAAO2Yl+DgYPbv318tge34OYpZC9cA0K6NPyp7W703z637DvZ/76ezqnRnTAC56nxUNRiT5M04dTlvKntbg8ZorjqvzPWq7OzIuT0vedrtW1hYoLK31XsNtI3Wv5Oz/EpZo50AACAASURBVIJCJsyax0MBfrzyTB/QGPY2/h3meKzdYurYdvyeygc/aHsH23k1QmVjRU5BUem2bt53sDH8GLC3rkdOgX6jNrdAU2bZsrT3bgSAtZUNb/Z6iM5zt5F09QaqADtyc9V6ZXNy1TiU0UBR2euXzclVo7K3v3ms2RuuR126HltbG3r84wnaPqD97Bo78gW6/OtZbuTk8tuJ0+Sq8/hnz24G22wyqAsBn7wKQObRsxTn5mPlVBrbrfuaHMOGXHFuPlaO+vWwclLpyuacTtI9/9e+GDI2HqRxaEeyj8XR/M1nSA//hfyUDEzFFMebSmXe+1PcXW0chmCMcs9ao0aNIjQ0lA8//JBmzZoxYcIEvZ8VTC20W0dCu5X+tPPW3CXEnU8jpMtjAMSdT6Ohq3ON9a4B+Lg3RVNSQvLFdHzcm+ri8ve+9zFZVU3yZpy6nDcfDzc0xcUkX7iMz83hC3FJqfj7eBiU9fN2Jy4plbYB2p8g486l4Hdz+37eHqzYvBtFUXTnij/Pp/Fcnx73FEdhURGTPviSJg1dmT6+av4xbY7H2i2mji000IvQwNKfzadFHCM+I4uQNtqfmeMzsmnoYGvQmwvg19iJbadLx+/mFWpIu56LXyNno2KxABSguZen9lhLvYCPl/b4iktIwt/XxzAGXx/iEs7R9uafi+ISzuHv633zNW9WrNuod6zFJ5zn+af7Atqfvbnt4+pWGUVROPrrCc7ExtOtr/Zn7pycXCytLIlysGHsRsjYeEi33AMLJ+L4YHOubNWOz3d8sDmFGZkGvbkAuXGpuD1T2tiyVNli79MUdVxqmTlRFOBmXPW7tsW2WQM8Xg4BwLqhM23CppAyP4LU+VvKT+zfYIrjzceM9+efied5/+P5RtetLqgrPbp3/TOam5sbX375JR07dmTkyJHk59fcz319n+zE5r1HSEy9SHZOLmHhP9A/2HD6o+qksrOlZ6dHWbB2G+r8AmLOJnAg+iR9uneseOFqInkzTl3Km8rOlp5B7VmwOkK73j/+5EBUDH2efMKgbN/gzqyM2E361etkXLvOdxG76d+jCwAd2rbGytKS1Vt/pLCoiLXb9gLQ8aEHACgpKaGgsIgiTTGKgvb+zRkZijQapny4AFtbG2ZP+TeWllUzIYw5H2vVHVvftt5EnEwm8Uo22XmFfHs4ln4PeZdZNriVO4lXstkbe4ECTTGLDsXSsokzvo2cACguUSjQFFNcoqAo2vtFxdoZBBKuZBObnklxiYK6UMPcfadp4mSPb0MnVPZ29Oz2BPMXr0Sdl8/xU2f46WAkfUMMvwz1e6oHK9ZtJv3KVTKuXGPF2k30/1cvAB5v9xCWllasCt9CYWEhazZsBaBj+4cBGBjai/2/RBIbn0iRRsM3y9bQ7qEHcXZyZMK/X2THusVsXD6f/2/vzsOiqt4Ajn8BQQEFxFwRFVEpc0mNlHBfyF+KuGDmvlRYai6ZZVoumSmZlUuZ5K4EiQsulWtqSoobmuaWiigumKLsO+f3BzqKA6LDDAzyfnh4Hmbm3HPf8957Zw53zj137bL5tG7eDG/PjgxM1J7KLmr1Hir3aYtVnaqUsLWm+pge3Phld445u/XbQayfr8ZznZpiWtKcGh94k3A6gsTzWWNgy3duhplVKTAxoWyrBlT0bsHtrYcAOOY9lUOtxnK47TgOtx1Hyo1ozo1byLUlW5908+bJEPubMW/PLyZ+oHO7xLPFRKknG1qcnJzM5cuXqVMn9+lkcpJyepdOgeVkxYYdLFm3lZTUNNq7NeKz9/oYxbymk+atYP/x09iVsWZU/25GM0fnfZI33RSbvJUoSUxcPJPmLGF/2D/Y2ZRm1EBvOrV248jJcwyb8g2ha34E7s2FufTBPLrdPbLPo3v6QgRT5i7l4pVrODlWZurIIbzgnHV259DfZ3hrgm+2Vb9cz4UlM8dz+MQZhnziS6mSFtm+OfrhsxE0ebF2vppnzPuaIWLLPJh752hl6L8s3f9v1jy6z1fh04fm0e3ut4O3XnXRnAU+EH6TmVuPcz02kXpV7Pm8c2Mc7LLGWG74O4LJm49mq9uzfjWmeTbh4KX/mL7lGFFxSViam9GwajnGtK1HdfvSlOjkkzXv6pffsv/QUWxtbRjz7mA6ebThyLGTvPvhZxzasR7I2te++WEJazdtAaCHZ8ds866ePneeyTPncCH8cta8q5+M5oU6tTTxBK7fjN+yQJJTUmjUoC6fjh1B5YraM35M/GI2FSs8R5M5p3LMWdWhnan2vlfWPLqbQzn3kZ9mVgTXPd8QMXed5ixw2Zb1qf3lW5SsWp64o/9yZtT3JF/5D4CXNnxO6brVwQSSL9/k8tz13AzWntkEoNmh7zk79kfNPLpuu4fluk2fhr73N9Py1Y12e470Gchdpf26rsqXL6O3uozFgSrddVqu2bV1eo7EsJ64o6srfXZ0hRAGUEL7q2ujkc8xusXR4zq6ha1EJ5/CDiFXIS9+XNgh5EpfHV19My2vPUTBmEhH9/H+qtxDp+Vevb5Wz5EYVpG6M5oQQgghhMi/Yn8xmhBCCCGEeDZl5l3kmZDnFR/+/v7Exj6YGzAmJgZ/f3+DBiWEEEIIIQxHYaLTb1GTZ0d39erV2Ng8mFLG1taWoKAggwYlhBBCCCEMJ1Pp9lvU5Dl0ITMzM9vcdhkZGaSlpeWxlBBCCCGEMFaZRfDsrC7y7Og2b96cUaNG0bt3bwACAwNp0aKFwQMTQgghhBCGURSHIegiz47uuHHjCAwMJCAgAKUU7u7u9OzZsyBiE0IIIYQQBlBcLkbLs6NramqKt7c3TZo0wcTEBCcnJ8zMzAoiNiGEEEIIYQByRvee0NBQxo8fj4ODA0oprl+/jq+vL66urgURnxBCCCGE0DM5o3uPr68vixcvpmbNmgCEh4czduxY1q0rWreAE0IIIYQQWaSje09aWpqmkwvg5OQksy4IIYQQQhRhMnThnnr16jFhwgS8vLwA2LRpE/Xq1TN4YEIIIYQQwjAyi0c/N++O7tSpU/H392flypUopXB1daVPnz4FEZsQQgghhDAAmUf3HgsLC7y8vPDy8sLe3r4gYhJCCCGEEAZUBG9yppNcO7pKKebPn8+qVas0j01NTenXrx8jRox48jVkGvFwZ9M874BcOCRnupG8iQJiYlmmsEPIlekrrxV2CLnK/C+isEPIldvuYYUdQpFjzNsTgOfKF3YE4hF3795lzJgxXL16FQcHB7777jtsbW21yq1fv54FCxYA8N5779GtWzcAUlNTmTZtGgcPHsTExIQxY8bw2muPf8/L9dN3+fLlHD16lDVr1hAaGsrBgwcJCgoiLCyMZcuW5aOZQgghhBCiMGXq+Jsffn5+uLm5sW3bNtzc3PDz89Mqc/fuXebPn8/q1asJCgpi/vz5xMTEAPDjjz9ib2/P1q1b+e23355oqttcO7rBwcHMnj0bR0dHzXOOjo7MmjWL4OBgXdonhBBCCCGMQKaJiU6/+bFz5066du0KQNeuXdmxY4dWmX379uHu7o6dnR22tra4u7uzd+9eANauXcvQoUOBrBuaPcmQ2lw7uunp6TlWYG9vT3p6+pO1SAghhBBCGB2l429+3L59mwoVKgBQoUIFoqOjtcpERUVRqVIlzeOKFSsSFRVFbGwsAHPmzKFbt26MHDmSW7du5bnOXMfompub57rQ414TQgghhBDGzVBXtQwaNCjHDujo0aOfaHmltLvTJiYmpKenc+PGDRo3bswnn3zC0qVL8fX1ZdasWY+tL9eO7pkzZ2jcuHGOAaSmpj5RsEIIIYQQwvgYah7dx13HVa5cOW7evEmFChW4efNmjiMHKlWqxMGDBzWPo6KieOWVVyhbtiyWlpZ06NABgI4dO7JmzZo848m1o3v69Ok8FxZCCCGEEEVPYcyj27ZtW4KDg/Hx8SE4OJh27dpplWnevDnffPON5gK0ffv28cEHH2BiYkKbNm0IDQ3Fzc2N/fv34+zsnOc6Zc4jIYQQQohipjDG6Pr4+BASEoKHhwchISH4+PgAcOLECSZOnAiAnZ0dw4YNw9vbG29vb4YPH46dnR0AH374IfPnz8fT05MNGzYwfvz4PNdponIaDKFHKf/sNGT1+WOsc5vKfLC6kbzppkTJwo4gd+kphR1Bjox5Hl2VFFfYIQhhFGKfe1lvdZUvb7zHvK5WOPTTabkBV1fpORLDyvPOaEIIIYQQ4tlixKeG9Eo6ukIIIYQQxUyxvwWwEEIIIYR4Nhlq1gVjIx1dIYQQQohiRoYuCCGEEEKIZ5J0dPVg2bJl+C34npTUVNo3a8SnQ9/EIpe7qh34+wxf/vQLN/6Lpn6dGkwbMYAqFcoBkJqWxhcLA9m+P4xSJS0Y3LUDA7q0e6JlAQ4cP8M3K9Zz6VoUtqWt+HBQD15zb5Jt/Rv+2M9nc5czeXg/enRo/sRtjIlLYPL8Ffx17DRlbUozsl9XOrV65WnSlM3KjTtYsm7bM50zkLwZS94e1BvP5DlL+SvsJGVtyjByYA86tXbTKqeU4rtlQazb9icA3Tq0ZMzgnpjcu//5mYuXmTxnCeGR13GqWpmpo4bwfM1qABz8+zQLAzZy+kIENqWt2LLka029t+/G4uv3M0dOniUpOYVa1R348O03aeBcVQ9tM1DOYuOZ9O1P7D9yAjvb0owa3ItObd21yiml+HZxIOu27Aage8dWjHmr94OcXbjEpG9+IvzKNZwcq/D5B+/wvHMNAJYGbWbj9r1cu3mLsjZl6OXZnsE9OwNw/eYtvN75KNu6kpJTGDuoBwO7dsh3++7Ldmy5NebTd3vnemwVFENtU30xxpyB8ebNWON61qliMnTBYHMe7d27Fz8/P36aMpItP35BZNQtfgj8Nceyd2Lj+eArP0b09mTviq+p61ydcbMXa15f8MuvRFy/ydaFX7D481EsDd7OvqP/PNGyF65c5+Nvl/B+3y78tWo2Qd9MoK5ztWzrj41PYPHaLThXq/LU7ZzuF4B5iRLsXvYVM8YMYfrCnzl/+dpT1wMQEvYPi9dufeZzBpI3Y8hbtnoXrMLc3Izdq+Yw40Mfpv+wkvMRV7XKrdmymz8OhBE073PWzJvGn4eOE/T7bgDS0tIZNW0undu4sS9wPl3auTNq2lzS0tIBsCxZkq4dWvDBkDe06k1KTqZebScCv5vM3oCsZUdM/Y7EpOT8t81QOft+GeYlzNj9yw/M/Hg4X8xbyvlLkVrlgn77g137j7BmwZes/XEGe0LDCPo1a9rFtLR0Rk75hs7tmhOyxg+vDi0YOeUbTc6UUkwf9y4ha/1YMP0jAjZu4/fd+wGoXOE5Dm5Yovldt3AmpqYmtHdrlO+23ac5tj4fzRa/6UTe+I8fAjbrrX5dGWqb6oOx5gyMN2/GGtezLlPH36LGYB3d4OBgvL29qVWtCjalrfDp+T827DqQY9mdB47h7FgZj1cbU9LCnPd6deJcxFXCI28AsGl3KEN7/g+b0lbUrFqZHu3d2XivrryW9VvzOz09WtCi8YuUMDPDrkxpHCuVz7b+OSuD6dOpDWXLWD9VGxOTU9ixP4zhfbpgZVmKxnVr0dq1IZt3hz5tugDY+McBurV3f6ZzBpI3Y8lbtnr/Oszwft2z6n2xDq2bvsTmXX9pld24M4SB3V6j0nP2VHyuLAO6vcaGnfsAOHTiDBkZGfTz8sDC3Jy+XTqgUIT+nXWXxfouNfFs+ypVH8kJQNVKFRjQ7TXK29thZmaKd8fWpKWlc+lqVP7bZpCcJbN930FGDOyZVW89F1q7NWbTvVw8bOP2vQzo8TqVypej4nP2DOzRiQ3bs86IH/r7FBkZmfTv1hELC3P6du2IUhB6LOufqyFveFK3thMlzMxwcqxCG7cmhP1zLseYNu3YS5N6z+NQ8bl8tS1b7NmOLWt83ujEhj/2661+XRhqm+qLMeYMjDdvxhpXcSAd3Xz6999/ef755zWPXWpU5fbdWO7GxWuVPX/lGnVqPPiK0qpUSapWfI7zV64TG5/IzegYXB56vU4NB85fuZ7nsgB/nwsHoPvoL2g7ZDyffLeUmLgETfkT58L553wEb3Rs+dRtjLgWhZmpKTUcKj6IzclB5/9EL1y5hovTg7Y8izkDyZux5E1T79Ub9+qt9FC9jjme0b1w+Rp1nBw1j12cHLlwb/0XLl+ltpOj5it5gDo1HLmQQz15OXPxMmnp6ThWrvDUyz7MYDmLvJezqpU1z7k4VedChPYZ3QsRkbjUfHBm36VmNU1uz0fkkDMnxxzrUUpx9ORZalV3yDGmjTv20aVDC53blBOtY8vp3rEVq31sFRRDbVN9McacgfHmzVjjKg4K485ohSHXju6ff/6p+TsuLo4JEybg6enJ2LFjuXXrVp4VJyYmUrp0ac3j0laWACQkad/pKCk5hTL3Xr+vjJUliUnJJCYnZ1v+4dfyWhYg6vZdNu8J5ZuP3mHz91NITk1jxqLVAGRkZDJ9YQCfvPMmpjrcuSoxKSVbXPfj1PXr1kfrexZzllM778cqeXu6dt6PNb9f7+dcr1WO9SYmJ1PGykpr/UopEpO081PaypKEp4wvPjGJCbP9eLe3F2WsLfNe4DEMl7NkSltbZXuutHXObU1MTqb0wzmztnooZ8mU0arHKsd6fli5lsxMRVePVlqvHTlxhtt3YvBo0VTXJuUo92Mr/0NKdGWobaovxpgzMN68GWtc4tmR68Vo3377LS1bZp15mjlzJuXLl+fHH39k+/btTJo0iR9++CFb+Y0bNzJ58mQAmjRpgpWVFfHx8VAu6/aiCUlJAFhbat9u1LJUSeITk7I9F5+UjJVlKaxKlcp6nJhMSQvzbK/ltSxAKQtzvNq6UaNK1n+L7/ToyDtT5gDwy+97qFOjKg2fr/n4LOXCyrIkCY+sOyHxwbrz8uueUD5f8DMAjevW0qrvWcwZSN50ld+8PbbeRz5UEhKTcqzXqlSpbDlIuNd+ExMTrCxzyE9iEtZPEV9ySirvfz6HBi7OvP1G53zfAthwOSuVQ705t9WqVPay8fdym5WzUlo5y6menzdsY9OOfSyb/RkWFtoXNW3csZcOzV/ByrIUKilN53bleWwl3j+28pe//DDUNtVVUcgZGF/e7jPWuIoDmUf3ISdPnmTDhg0ADBo0iPXr12uV6dKlC126dNE8Hjt2LGfPnqVd9QYAnL10lXJ2NtiVKa21bC3HKppxkJA1Zifyxn/UcqyMTWkrype15dylSNxeegGAc5ciqeVYOc9lAWpXd8j2teDDQv8+w+F//mXvkZMAxMQncCb8CmfDrzDBp3eeealepSLpmZlEXIui+r3OzdlLkdR6wguNOrVqSqdWD87AfDx7MWcvRfLaq43v1fXs5Qwkb1A4ecu1XodKpGdkEHH1BtXvDV84G34lx6/InatV4Wz4Feq7ZHXYz168rLmwzrmaA8vXb0UppcnDv5ciebNzO616cpKalsboL+ZSoZwdk0YMzFeb7jNYzqrmkLOLl3Gurj1LhHP1qpy9GEH9550BOHcxQpPbWtUdWL7212w5Oxd+mTc9H8yasH7rbhav3siyrydRqXw5rfqTU1LZ9mco300ek682wWOOreYvZ7XxUmTWsWWjfWwVFENtU10VhZyB8eXN2OMqDorieFtd5Pod6u3bt1m6dClLliwhPj4epR6MzMjMzDs9Xl5erFmzhgv3xj76Bf2OV5tmOZZt27Qh569cY/v+MFJS01i4+jdqV3fAqWrWB4hn66b4rfmd2PhEwiNvsHZ7CF3u1ZXXsl3buhH8x34ib9wiKSWVJeu30erl+gBMGzmQDfMnE/TtRIK+nciLztV5t1dn3u/b9YmSZ1WqJO2bNeL7gE0kJqcQdvo8uw8ep3Nr3b4+9GzTjPU7/nqmcyZ5M568ZavXrQnf+wdn1XvqX3aHhtG5zataZT3burMyeCtRt+5w8/YdVgRvxatd1hRprvWfx8zUFP+N20lNSyNg0w4AmjbI+qchMzOTlNQ00tIzUIqsv+/NLpCWns4HX35PyZIWTP/gHZ2Hd+TYNoPkrBTt3V35fsUaEpOTCfvnLLv2H8GznfZ0cV3aN2fFut+JuhXNzdt3WL7mN7w6ZH1b5tqgblbOgreSmprGzxu2AdD0pRcB2PxHCHOWruanGZ/kOl55Z8ghypS24pWGdfPVppw8OLauERufkHVstdWedq4gGWqb6osx5gyMN2/GGldxUFwuRjNRD/dgHzJ//vxsj/v06YO9vT3//fcfs2bN4quvvsqz8qVLl96bRzeN9s1e4rOH5hLsNmoab3d/TTNX3oHjZ/hy0S9c/y+a+rVrMO39ATjkMLdpSQtzhnTzyD636WOWBfg+cDOrt2SNOXZvVJfxb72BTWkreOTDdMjE2XRq3fSp59GdNG8F+4+fxq6MNaP6d8vX/H8rNuxgybqtz3TOQPJmLHkDoERJYuLimTRnCfvD/sHOpjSjBnrTqbUbR06eY9iUbwhd8yNwb07YpQ/m0e3ukX0e3dMXIpgydykXr1zDybEyU0cO4QXn6gAc+vsMb03wzbbql+u5sGTmeA6fOMOQT3wpVdIi21nxHz4bQZMXa+ereYbImYllGWJi4/nsGz8OHD2JrU1pRg/Jmkf3yIkzvPfpVxzcsAS4P49uAGvvTcPW43+ts82je/r8JSZ/+xMXL1+lZjUHpo55hxdq1QCg44DRRN2Kxtz8wZdvndu6M2nUW5rHQyfMpJ6LM+8P7Jm1vqS4fLXtUdmOLbdGfPZen0KfE9Ygx4EeGWPOwHjzZqi4Yp97WQ/RZSlfvoze6jIWX1frp9NyH15epedIDCvXjq6+pPyz05DV54+ezhrp3ROcMS80xpozkLzpqoT2WGajkc8xuoZiYmm8H3r67ugKUVRJR/fxvqquW0f3o4ii1dGVWwALIYQQQhQzRnxqSK+koyuEEEIIUcwUxTlxdSEdXSGEEEKIYiazmHR18xw46O/vT2xsrOZxTEwM/v7+Bg1KCCGEEEIYTnGZdSHPju7q1auxsbHRPLa1tSUoKMigQQkhhBBCCMMpLrcAznPoQmZmZrbJzDMyMkhL0/3OO0IIIYQQonAVxbOzusizo9u8eXNGjRpF795Zd28KDAykRYsWBg9MCCGEEEIYhtwC+J5x48YRGBhIQEAASinc3d3p2bNnQcQmhBBCCCEMoLhcjJZnR9fU1BRvb2+aNGmCiYkJTk5OmJmZFURsQgghhBDCAIpHN/cJOrqhoaGMHz8eBwcHlFJcv34dX19fXF1dCyI+IYQQQgihZzJG9x5fX18WL15MzZo1AQgPD2fs2LGsW7fO4MEJIYQQQgj9Ky5DF/KcXiwtLU3TyQVwcnKSWReEEEIIIYTRy/OMbr169ZgwYQJeXl4AbNq0iXr16hk8MCGEEEIIYRjF43zuE3R0p06dir+/PytXrkQphaurK3369CmI2IQQQgghhAHIGN17LCws8PLywsvLC3t7+4KISQghhBBCGFBxGaOba0dXKcX8+fNZtWqV5rGpqSn9+vVjxIgRT74G0zyHARcaE9sKhR1CjlTMzcIOoWgy4n3NqKWnFHYEuZJjVBQU64b9CjuEXCUcX1XYIYhnUPHo5j7mYrTly5dz9OhR1qxZQ2hoKAcPHiQoKIiwsDCWLVtWgCEKIYQQQgh9ytTxt6jJtaMbHBzM7NmzcXR01Dzn6OjIrFmzCA4OLpDghBBCCCGE/ikdf4qaXIcupKen5zgm197envT0dIMGJYQQQgghDKconp3VRa4dXXNz81wXetxrQgghhBDCuBX7i9HOnDlD48aNtZ5XSpGammrQoIQQQgghhOEUj27uYzq6p0+fLsg4hBBCCCFEASn2Z3SFEEIIIcSzqdiP0RVCCCGEEM+mojiDgi5khn0hhBBCiGKmMObRvXv3LoMHD8bDw4PBgwcTExOTY7n169fj4eGBh4cH69ev1zy/efNmPD098fT05K233iI6OjrPdUpHVwghhBCimCmMeXT9/Pxwc3Nj27ZtuLm54efnp1Xm7t27zJ8/n9WrVxMUFMT8+fOJiYkhPT2d6dOns3z5cjZt2oSLiwv+/v55rlM6ukIIIYQQxUxhnNHduXMnXbt2BaBr167s2LFDq8y+fftwd3fHzs4OW1tb3N3d2bt3L0oplFIkJSWhlCI+Pp4KFfK+TbyM0RVCCCGEKGYyVcGP0b19+7amc1qhQoUchx5ERUVRqVIlzeOKFSsSFRWFubk5U6ZMwdPTEysrK6pXr87kyZPzXKd0dIUQQgghhF4MGjSIW7duaT0/evToJ1pe5dABNzExIS0tjYCAAIKDg3F0dGTatGksXLiQYcOGPba+IjV0YeXGHbQZ9BGv9hnNpHkrSE1Ly3edMbFxjPpsJq/8rzceb/rw644/cyynlOKbhSto7jWA5l4D+ObHFdk2xpnz4bzh8yGuHd/kDZ8POXM+XKuOtLQ0PAe8T7ueb+e4jg1bdlG/TXfWbt+X73Y9zBB5y6+YuARGz1jAK71G8to7E/h1z8HCDkmL5O3pGCq2Z/kYNebteZ8cB9mNGvkOkZfDuP3faX7ym42FhUWO5czNzfkl0I/z5w6QnnqVVi3dsr3eutWr7NgWxO3/TnP+3IGCCN1o9zdjjetZp3T8zcuyZcvYvHmz1m/79u0pV64cN2/eBODmzZvY29trLV+pUiVu3LiheRwVFUWFChU093eoVq0aJiYm/O9//yMsLCzPeIpMRzck7B8Wr93KT5+PZovfdCJv/McPAZvzXe/0OT9hXqIEu9ctYebEMXzxnR/nwy9rlQvatI1dIQdZs+gb1i76lj0HDhO0aRuQ9eE48tMZdO7QipCNK/F6rQ0jP51B2iMfCEt/2YB9Wdsc44iJi2fRz+uoVcMx3216mKHyll/T/QKy8r7sK2aMGcL0hT9z/vK1wg5LQ/L29AwV27N8jBrz9gQ5p7NirQAAIABJREFUDh7l0aEVH40bjkfHXjjXbkZNp2pMmTw21/IhIQcZOOh9rl+P0notISGRpcsD+Xj8F4YMORtj3d+MNa5nXSZKp9/8aNu2LcHBwQAEBwfTrl07rTLNmzdn3759xMTEEBMTw759+2jevDkVK1bkwoULmuEOISEhODs757nOItPR3fjHAbq1d6dWtSrYlLbG541ObPhjf77qTExKZvufBxgxpA9WlpY0rv8CrV91ZdP2Pdrr37abAT27UKn8c1QsX46BPbuwYcsfABw69g8ZGZn09+6MhYU5fXt0QikIDTuhWT7yehSbt+/h7T7dc4xlzk+r6Nv9dexsbfLVJq24DZC3/EpMTmHH/jCG9+mClWUpGtetRWvXhmzeHVqocT1M8mYcsT3Lx6gxb8/75DjIrn//nixdFsipU+e4ezeG6V/OYUD/N3Ism5aWxtx5iwj56xAZGdqX8Bw6fAx//7WE5/BPmyEY6/5mrHEVB4Ux64KPjw8hISF4eHgQEhKCj48PACdOnGDixIkA2NnZMWzYMLy9vfH29mb48OHY2dlRsWJFhg8fTt++ffH09OTMmTMMHTo0z3U+VUf3zp07OjRLPy5cuYaLU1XNYxenqty+G8vd2Hid64yIvIaZqSk1HKs8qNe5OhcuXdFe/6UruDjXeFCuVg3O3yt3/tIVatesjomJieb1OjWz1zNj7iJGvd2XUiW1v+Y6cfpf/jl7gTe6vKZzW3JjiLzlV8S1qKy8O1TUPFfHycGo/oOXvD0dQ8X2LB+jxrw975PjILu6dV04/vcpzePjf/9DpUoVsLcva/B155ex7m/GGldxUBizLpQtW5bly5ezbds2li9fjp2dHQD169dn+vTpmnLe3t5s376d7du306NHD83zvXv35vfff2fTpk38+OOPlC2b97GXa0f366+/1pwePnHiBO3ateONN96gTZs2HDxY8ONnEpNSKG1lqXl8/++EpOR81JlMaWurbM+VtrYmITEp57KlrR4qZ0ViUjJKKRKTkiijVY+Vpp6dew+QkZFBuxbNtOrNyMjgi+/8+GTk25ia6v8EuyHyll+PxgRZcSUWYkyPkrw9HUPF9iwfo8a8Pe+T4yC70tZWxMbEah7HxMQBUKaMtcHXnV/Gur8Za1zFQWEMXSgMuc66sGfPHj788EMAvvrqK7799lsaNGhAeHg4Y8eOZd26dQYN7Nc9oXy+4GcAGtethZVlyWwfbvf/trYspfM6rCxLkZCYmO25hMRErB856DRlEx6sPz4hCSvLUpiYmGBlaUn8Ix+8CYlJWN87WL9ZuJIfZk7MMYbADVuoU7M6L73oonM7HlYQecuvR2MCSEhMxqoQY5K85Y+hYnsWj9EH8Rrf9pTjILvevbux4HtfAPbtCyU+IZEyNmU0r9vc+zsuLkHv69Y3Y9zfwHjjKg6Kyy2Ac+3opqWlkZ6eTokSJUhJSaFBgwYAODk5aV3AYQidWjWlU6ummscfz17M2UuRvNb8ZQDOXoqknJ0NdjaldV5H9apVSM/IJCLyGtWrZn01evb8JZxzuNjEuYYjZy9cov4LtQE4d+GS5qKUWjUcWb56A0opzVej5y5e4s2uHbl89TrXbtxk4MhPAUhLTyc+IZHW3Yfg/8NMQo+e4PDxf9gbehTIuuDlzL8XOBt+hQk+vZ+6TQWRt/yqXqUi6ZmZRFyLonqVipq4alWrkseShiN5yx9DxfYsHqOathnh9pTjILuAgPUEBDy4/ejKFfNp2KAua9ZsAqBhg7rcuHGT6OjCG9b3pIxxfzPmuIqD/A5DKCpy/R6ub9+++Pj4sH//flq0aMH06dM5dOgQc+fO5fnnny/IGAHwbNOM9Tv+4sKVa8TGJ+AX9Dtebd3yXvAxrCxL0b5FU75fGkhiUjJhJ06z669DeHZopVW2i0drVgRtJOq/29y8Fc3y1Rvx6tgWANeXXsTMzBT/tb+SmprGz+t/A6Bpo/rUcqrG9tV+rFk0mzWLZjP1w2GUK2vLmkWzqVS+HF+Mf5+Ny+dqXn/RxZl3e3Xm/b5d89W2+wyRt/yyKlWS9s0a8X3AJhKTUwg7fZ7dB4/TuXXTvBcuIJI344jtWT5GjXl73ifHQXarVq1h8KA3eeGF2tjZ2TLhk1GsWLk61/IWFhaULFny3t/mmr8ha17QkiVLYm5e4qG/zQ0Wu7Hub8YaV3Fw/05jT/tb1Jiox0QdGhpKQEAAly5dIiMjg0qVKtG+fXu6d+/+xAdkyuldegt2xYYdLFm3lZTUNNq7NeKz9/pgkY83BhPbCsTExvHZV99z4MhxbG3KMPqdfnRq35Ijf5/ivY+/4ODvWV/jKaX4duFK1v6Wdbu6Hq+3Z8zQ/pqzQ6f/vcjkWT9wMSKSmtUdmDpuOC/Urqm1zkPHTjJ++nfsDFqUY0yDR39Gp+aN6NGhuc7tepS+86YPMXEJTJq3gv3HT2NXxppR/bvRqdUrhRrToyRvT8cQsT3rx6gxb8/7istxYN2w3xOVGz3Kh3EfDsPSshTr1v/GsOHjSU1NBeD4sT+Y6TtPcxb4/LkD1Hjk2wfn2k2JiIikVUs3du5Yk+21PXv+ol2HnlrrTDi+SpcmaTHW/c1QccU+97IeostSvnyZvAsVMV7VOuu03IbLhT/F4NN4bEdXH/TZ0dU3E9u875FcGFTMzcIOQQijIMeoKChP2tEtDPrq6BY30tF9PE8dO7qbilhHV24BLIQQQghRzBT7i9GEEEIIIcSzqShOFaYL6egKIYQQQhQzRfHCMl3kOfu5v78/sbEPT5Adg7+/v0GDEkIIIYQQhlMYd0YrDHl2dFevXo2NzYN7u9va2hIUFGTQoIQQQgghhOEoHX+KmjyHLmRmZmabZD0jI6NAbhghhBBCCCEMQ8bo3tO8eXNGjRpF795ZdwAKDAykRYsWBg9MCCGEEEKI/Mizoztu3DgCAwMJCAhAKYW7uzs9e2pPaC2EEEIIIYqG4nIxWp4dXVNTU7y9vWnSpAkmJiY4OTlhZmZWELEJIYQQQggDkKEL94SGhjJ+/HgcHBxQSnH9+nV8fX1xdXUtiPiEEEIIIYSeFcULy3SRZ0fX19eXxYsXU7Nm1j3hw8PDGTt2LOvWrTN4cEIIIYQQQv8yZehClrS0NE0nF8DJyUlmXRBCCCGEKMKKRzf3CTq69erVY8KECXh5eQGwadMm6tWrZ/DAhBBCCCGEYcgY3XumTp2Kv78/K1euRCmFq6srffr0KYjYhBBCCCGEAUhH9x4LCwu8vLzw8vLC3t6+IGIqMCrmZmGHIIoJEyvbwg4hVyoxprBDyJUco0IIYRjFfnoxpRTz589n1apVmsempqb069ePESNGFFiAQgghhBBCv4rLGV3T3F5Yvnw5R48eZc2aNYSGhnLw4EGCgoIICwtj2bJlBRiiEEIIIYTQJ6XjT1GTa0c3ODiY2bNn4+joqHnO0dGRWbNmERwcXCDBCSGEEEII/VNK6fRb1OQ6dCE9PT3HMbn29vakp6cbNCghhBBCCGE4xWXoQq4dXXNz81wXetxrQgghhBDCuBXFs7O6yLWje+bMGRo3bqz1vFKK1NRUgwYlhBBCCCEMp9if0T19+nRBxiGEEEIIIQpIUbywTBd5zqMrhBBCCCGeLZnFZOhCrrMuCCGEEEIIUZTJGV0hhBBCiGJGhi4IIYQQQohnUnEZuiAdXSGEEEKIYkbO6AohhBBCiGeSnNEVQgghhBDPJDmja4RWbtzBknXbSElNpb1bYz59tzcWhXyXtpi4BCbPX8Ffx05T1qY0I/t1pVOrVwo1pkdJ3nSj77zFxMYz6ZuF7D9yAjvbMowa8iad2rprlVNK8e3iANb9vguA7h1bM+btPpiYmABw5sIlJs32I/zKVZwcHfh8rA/PO9cAYOnqTWzc/ifXbt6irE0Zenl2YPAbnpq6j/1zDt8fV3Dx8lUcKpXn0/eH0KhmZZ3blK19RrpNjTUuMO7Y7pP3j+xGjXyHcR8Ow9KyFOvW/8bwEZ/keBMlc3NzVq38niaNG1CjhiPt2nuz58/9mtdbt3qVTyeOoVGjety5E0OtOs0MHrux7m/GGtezrric0S0y04uFhP3D4rVb+enz0Wzxm07kjf/4IWBzYYfFdL8AzEuUYPeyr5gxZgjTF/7M+cvXCjssDcmbbgyRt+nzl2BuXoLdq39k5vjhfDF3MecvXdEqF/TrTnb9dZg1P85k7UJf9oSGEfTrDgDS0tIZOXk2nds1J2TtIrw6tGTk5NmkpaUDWf+hT/9oGCHrFrHgy/EEbNzG77v+ArI62u9PnsWgnp35a91iBvf0ZMSkr4mNT8hXuzTtM9JtaqxxgXHHBvL+8SiPDq34aNxwPDr2wrl2M2o6VWPK5LG5lg8JOcjAQe9z/XqU1msJCYksXR7Ix+O/MGTI2Rjr/mascT3rlI4/RU2R6ehu/OMA3dq7U6taFWxKW+PzRic2/LE/7wUNKDE5hR37wxjepwtWlqVoXLcWrV0bsnl3aKHG9TDJm270nbfEpGS27zvIiIFvZLW53vO0dmvCpp37tNe9408G9OhEpfLlqPicPQN7dGLDtj8BOHT8FBkZGfTv/j8sLMzp260jSilCj50EYMgbXahb24kSZmY4OVahjVsTwk6dBeDYqXOUK2vLay2bYWZmimf7FtjblmHH/mM6t0vTPiPdpsYal7HHdp+8f2TXv39Pli4L5NSpc9y9G8P0L+cwoP8bOZZNS0tj7rxFhPx1iIyMTK3XDx0+hr//WsLDLxs6bMB49zdjjas4UCpTp9+iJteObrdu3fjhhx+4fLlgDsK8XLhyDRenqprHLk5VuX03lrux8YUWU8S1KMxMTanhUFHzXB0nB6P6T1Typht95y3i6vWsNld9MEzApWZ1LlyK1F73pUhcalZ/UM65Gucjssqdj4iktlM1zTAGgDo1q3EhQrsepRRHT56hVvWqmsePflOlFJy/fFWnNj3MWLepscYFxh3bffL+kV3dui4c//uU5vHxv/+hUqUK2NuXNfi688tY9zdjjas4yETp9FvU5NrRjYmJIS4ujgEDBuDt7c2yZcuIitL++qWgJCalUNrKUvP4/t8JScmFFZJWTJAVV2IhxvQoyZtu9J23xKQUSltbZXuutLUlCUlJ2mWTkylt/dC6ra1ITEpGKUViUjJlHq3HyoqERO24fli5hkyl6OrRGoCXXqzDf7fv8NuuENLS09mwbQ9XrkeRnJKmU5u02meE29RY4wLjju0+ef/IrrS1FbExsZrHMTFxAJQpY23wdeeXse5vxhpXcZB18uPpf/Pj7t27DB48GA8PDwYPHkxMTEyO5d566y1efvllhg4dmu35K1eu0LNnTzw8PBg9enSO4+MflevFaLa2tnz88cd8/PHHHD58mM2bN9O9e3dq1qxJ586d6dWr11M27+n8uieUzxf8DEDjurWwsixJQuKDTsH9v60tSxk0jsd5NCaAhMRkrAoxJsmbbgydt5zbnIS1paV22VKlspWNT0jCyrIUJiYmWFmWIj6neqyyx/Xzhq1s2r6XZd9MxsIi68IhO5syzJk6ltl+/kyfvxT3Jg1o1qgeFcvZ6dSmvNtXuNsUjDcuMM7Y5P0ju969u7Hge18A9u0LJT4hkTI2ZTSv29z7Oy5OP+PcDckY9zcw3riKg8I4O+vn54ebmxs+Pj74+fnh5+fHuHHjtMq9/fbbJCUl8csvv2R7/uuvv2bQoEF06tSJSZMmsWbNGvr06fPYdT7RGN2XX36ZKVOm8Oeff/LOO+9w7Fj+x/TlpVOrpoQGziE0cA4LJr2Ps2MVzj70Ne/ZS5GUs7PBzqa0wWPJTfUqFUnPzCTi2oMz3WcvRVKrWpVCi0nyphtD5626Q2XSMzKIuHr9QZ0XL+Nco6pWWecaVTl7MULz+NzFCM3wg1rVq3Iu/HK2/6rPhV/GufqDetZv2cXiXzby01cTqVS+XLa6XRvUJXD+dELWLuLLj4dzKfI69erU0KlN2dpnhNsUjDcuMM7Y5P0ju4CA9djZ18HOvg6du/Tn1KmzNGxQV/N6wwZ1uXHjJtHRd/S+bn0zxv0NjDeu4qAwzuju3LmTrl27AtC1a1d27NiRYzk3NzesrbN/U6KU4sCBA7z22mtA1hDbnTt35rnOXDu6NWrU0HrOzMyMli1bMmPGjDwr1jfPNs1Yv+MvLly5Rmx8An5Bv+PV1q3A43iYVamStG/WiO8DNpGYnELY6fPsPniczq2bFmpcD5O86UbfebOyLEV791f4fnkQiUnJhP1zll1/HcazXXOtsl3at2DF2t+IuhXNzdvRLF/7K14eLQFwbVgXM1NT/IO3kJqaxs8btgLQ9KV6AGzeuY85S3/hp5kTcKxcUavu0+fDSUtPJz4hkdl+q6j4nD3ujV7UuV2a9hnpNjXWuIw9tvvk/SO7VavWMHjQm7zwQm3s7GyZ8MkoVqxcnWt5CwsLSpYsee9vc83fACYmJpQsWRJz8xIP/W24aduMdX8z1riKg0yldPrNj9u3b1OhQgUAKlSoQHR09BMve+fOHWxsbChRImswQqVKlZ5oSK2Jym/3PA8pp3fpra4VG3awZN1WUlLTaO/WiM/e62MU8zlOmreC/cdPY1fGmlH9uxnd/H+SN93oM28mVrbExMbz2eyFHDh6Alub0ox+qzed2rpz5MQZ3ps4k4MblwH35tFd9DNrt2QdOz06tsk2j+7p8+FM/uYnLl6OpGY1B6Z+4MMLtZwA6Nh/JFG3ojE3fzAqqXO75kwa9TYAH305l70Hs76RcXdtyCfDBmH/4LM3X4x1mxprXGDcsd1XXN4/rBv2e6Jyo0f5ZJtHd9jw8ZpxgseP/cFM33kEBKwH4Py5A9So4ZhteefaTYmIiKRVSzd27liT7bU9e/6iXYeeWutMOL5KlyZpMdb9zVBxxT73sh6iy1K+fJm8CxUxlexe0Gm5G3dPP/b1QYMGcevWLa3nR48ezfjx4zl8+LDmOVdXVw4dOpRjPaGhoSxZsoSFCxcCEB0dTa9evdi+fTsA169fx8fHh02bNj02niLV0RWiqDKxsi3sEHKlEnO+GECI4uRJO7qFQV8d3eJGOrqPV9H2eZ2Wi4o5o/M6X3vtNVauXEmFChW4efMm/fv3Z+vWrTmWfbSjq5SiWbNmhISEUKJECcLCwpg/fz6LFy9+7DqLzDy6QgghhBBCPwpjerG2bdsSHBwMQHBwMO3atXviZU1MTGjatKmmY7x+/Xratm2b53LS0RVCCCGEKGYK42I0Hx8fQkJC8PDwICQkBB8fHwBOnDjBxIkTNeX69OnDqFGj2L9/Py1btmTv3r0AjBs3jqVLl9KhQwfu3r1Lz57aQ30elefQBX9/fzw9PbGxsQGy5tfdvHkzffv2faJGydAFIWToghDGToYuPHtk6MLjPWdTR6flbsWe03MkhpXnGd3Vq1drOrmQNb9uUFCQQYMSQgghhBCGUxizLhSGXG8YcV9mZiZKKc0V3xkZGaSl5f9OSkIIIYQQonAYeC4Co5FnR7d58+aMGjWK3r17AxAYGEiLFi0MHpgQQgghhDCMwrgzWmHIs6M7btw4AgMDCQgIQCmFu7v7Ew3+FUIIIYQQxknO6N5jamqKt7c3TZo0wcTEBCcnJ8zMzAoiNiGEEEIIYQBFcbytLvLs6IaGhjJ+/HgcHBxQSnH9+nV8fX1xdXUtiPiEEEIIIYSeKRm6kMXX15fFixdTs2ZNAMLDwxk7dizr1q0zeHBCCCGEEEL/5IzuPWlpaZpOLoCTk5PMuiCEEEIIUYTJGN176tWrx4QJE/Dy8gJg06ZN1KtXz+CBCSGEEEIIw5ChC/dMnToVf39/Vq5ciVIKV1dX+vTpUxCxCSGEEEIIA5AzuvdYWFjg5eWFl5cX9vb2BRGTEEIIIYQwoGLf0VVKMX/+fFatWqV5bGpqSr9+/RgxYkSBBSiEEEIIIfSreHRzwUTl0qVftmwZe/bs4fPPP8fR0RGAK1euMGXKFFq0aMGgQYMKMk4hhBBCCCGeSq4d3a5du7JkyRKt4QrR0dEMGTKE4ODgAglQCCGEEEIIXZjm9kJ6enqOY3Lt7e1JT083aFBCCCGEEELkV64dXXNz81wXetxrQgghhBBCGINcL0Y7c+YMjRs31npeKUVqaqpBgxJCCCGEECK/ch2jK4QQQgghRFGW69AFIYQQQgghijLp6BYj8+bNY/HixXqtMzY2Fn9/f73Wed+JEyf44osvDFK3oZ0+fZo9e/bopa5GjRoBEBUVxciRI/VSp76tW7eOqKiop16ubdu2REdHGyAiePPNNx/7ev/+/Tlx4oRB1v00du7ciZ+fX2GH8cwIDQ1l6NChhR1GkRQaGsrRo0cNvp68PosCAgJkZiehN3neGU2Ix4mNjSUgIIC+ffs+UXmllObmI3mpX78+9evXz2+IheL06dOcPHmSVq1a6a3OihUrMnfuXL3Vp0/r16+ndu3aVKxYsbBD0QgMDCzsEJ5Iu3btaNeuXaGsOyMjAzMzs0JZ99N6mvcOoZuDBw9iZWWV4/U5Bal3796Fun7xbCkyHd0NGzawcuVK0tLSaNiwIZMnTzaaN+ilS5eydu1aALy9vY3qZhoLFiwgODiYypUrY29vz4svvqjX+mfPns3ly5fx8vLi1VdfpVy5cvz++++kpqbSoUMHRo4cSWRkJO+88w5Nmzbl2LFjfP/993Tu3Jk+ffqwf/9+bGxs+OCDD5g1axbXrl1jwoQJtGvXjtDQUJYsWcLChQuZN28e165dIzIykmvXrjFw4EAGDBiQa1zBwcEsXrwYExMTXFxcGD16NBMmTCA6Ohp7e3tmzJhBlSpVGD9+PCVLluTixYtcu3aNGTNmsH79eo4dO0bDhg2ZOXMmkHVWtVevXoSGhmJjY8O3336Lvb09/fv356OPPqJ+/fpER0fj7e3Nli1bmDt3LsnJyRw5coShQ4fy+uuv5zvXkZGRvPvuu2zevJmkpCTGjx/PxYsXcXZ25urVq0yaNEnv/xjkdNxNnDiRkydPYmJiQo8ePahUqRInT57kww8/pFSpUvzyyy+8/vrrrFmzBnt7e06cOMFXX33FypUruXPnDmPHjiU6OpoGDRoY9BaUjRo14scff9TsQwCff/459erVo3v37gZb78MiIyN5++23adKkCcePH8fFxYUePXowd+5coqOj+frrrzl//jwnT55k0qRJT7w/Ps26GzZsyKlTp3BycsLX15dOnTrRvXt3QkJC6NevHzVr1mTy5MkkJSVRrVo1vvzyS2xtbYmIiGDy5MlER0djZmbGnDlzqFatGosWLdI6xhMTExk9ejQ3btwgMzOTYcOG8frrr/P111/zxx9/YGZmRvPmzfn444+fOn8Pv3cMHDiQwMBAUlNTcXR0ZMaMGVhbW/Pnn3/y5ZdfUrZsWb2/xz2tYcOGcePGDVJSUhgwYAC9evUqsHV///33bNq0icqVK2ty8eqrr+a4fVesWEFgYCBmZmbUqlWLsWPHEhgYiKmpKRs3buSzzz7j5Zdf1ltsOX0WXb58malTp3Lnzh1KlSrFtGnTcHZ2Zt68eVhZWTFw4EB69erFRx99RNOmTZk9ezampqaMGTNGb3E97NHPjf/9738sWLCAtLQ07Ozs+Prrr3nuuec4ePAg06dPB8DExIRVq1ZRunRpg8Qk9EAVAefPn1dDhw5VqampSimlJk+erNavX1/IUWU5ceKE6ty5s0pISFDx8fHq9ddfV//8809hh6WUehBbYmKiiouLU+3bt1eLFi3S6zquXLmiOnXqpJRSau/everTTz9VmZmZKiMjQ/n4+KiDBw+qK1euKBcXFxUWFqZZrk6dOmr37t1KKaWGDRumBg8erFJTU9Xp06dVly5dlFJKHThwQPn4+CillJo7d67q1auXSklJUbdv31avvPKKZn941Llz55SHh4e6ffu2UkqpO3fuqKFDh6p169YppZQKCgpS7733nlJKqY8//liNHj1aZWZmqu3bt6tGjRqpM2fOqIyMDNWtWzd16tQpTbwbNmxQSik1b948NXXqVKWUUv369VN///23Ukqp27dvqzZt2iillFq7dq2mTH699NJLSqnsuV60aJH67LPPlFJKnT17Vr3wwguaOPQlp+Nu3rx5atCgQZoyMTExSqnseVBKqTZt2mjy//fff6t+/foppZSaNm2amjdvnlJKqV27dqk6depoyunbSy+9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\n",
"text/plain": [
"<Figure size 1368x360 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Matriz Discriminatória\")\n",
"displayMatrix(getDiscMatrix(matrix), vocabulary)"
]
},
{
"cell_type": "code",
"execution_count": 194,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Matriz Sinal-Ruído\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x360 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(\"Matriz Sinal-Ruído\")\n",
"\n",
"displayMatrix(getSignalNoiseMatrix(matrix), vocabulary)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Descreva aqui sua análise sobre as técnicas acima. Como a tua matriz mudou, qual método você considera mais interessante (gerou melhor distribuição dos pesos), etc? É uma análise empírica que você fará, apenas com sua impressão mesmo. \n",
"\n",
"Nota: talvez a coleção inicial de documentos não seja a melhor para evidenciar essa diferença das técnicas. Neste caso, você está livre para alterar a coleção e definir as que forem mais interessantes para a sua análise, ok?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Através da execução das técnicas de discriminação e sinal-ruído, é possível notar que apenas o TF pode não ser o suficiente. \n",
"\n",
"A técnica TFxIDF trouxe boas pontuações para os termos nos documentos, possibilitando julgá-los em cima disto.\n",
"\n",
"A técnica de discriminação trouxe resultados interessantes para estes documentos, pois por ela foi possível identificar os termos que são bons discriminantes e os que eram ruíns.\n",
"\n",
"Já a técnica Sinal-Ruído, por conta do tamanho dos documentos aparenta não ter trazido resultados tão bons pois poucos termos tiveram um peso relevante."
]
}
],
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment