├── _config.yml ├── preliminary_proposal.md ├── proposal.md ├── README.md └── Patent_Classification.ipynb /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /preliminary_proposal.md: -------------------------------------------------------------------------------- 1 | # Patent Classification 2 | 3 | ### Purpose 4 | Classify patent applications by the US Patent and Trademark Office (USPTO) art unit classification. Currently this is the first step in the processing of a patent application sent to the USPTO. 135 people read each application and assign it to an art unit. The turnaround time is 28 days, and the contracting firm costs about 95 million over 5 years (this might have increased). The art unit is a unit with a technological background to understand the technology in the patent application. 5 | 6 | ### Problem 7 | It currently takes too long and costs too much for a patent to be classified and assigned to the correct art unit. Additionally, if patent attorneys can write the patent application with the correct wording to direct the application to one art unit over another, they can increase the likelihood of the patent being granted. 8 | 9 | ### How I will present my work 10 | I would like to have a web app to be used by friends in the legal industry. My minimum viable product would be a presentation. 11 | 12 | ### Data sources 13 | 1) USPTO 14 | - [USPTO bulkdata data dictionary](https://bulkdata.uspto.gov/data/patent/office/actions/bigdata/2017/USPTO%20Patent%20Prosecution%20Research%20Data_Unlocking%20Office%20Action%20Traits.pdf) 15 | - [USPTO public pair dataset](https://www.uspto.gov/learning-and-resources/electronic-data-products/patent-examination-research-dataset-public-pair) 16 | 17 | 2) [Google Big Query](https://cloud.google.com/bigquery/) 18 | - patents-public-data dataset 19 | 20 | ### Next Step 21 | My next step is to construct an SQL query to collect the data I will need from Google Big Query. I will also need to collect additional data from the USPTO office action data bases. 22 | 23 | # 24 | # Art Price Prediction 25 | 26 | ### Purpose 27 | Predict the price of art, or predict up and coming artists, specifically for western art. 28 | 29 | ### Problem 30 | Predicting what a painting will go for at auction or what artist would be a good investment is difficult even for a professional. 31 | 32 | ### How I will present my work 33 | I would present a slide show 34 | 35 | ### Data sources 36 | 1) [Artnet price database](https://www.artnet.com/price-database/) 37 | 2) [Stark Museum of Art](http://starkculturalvenues.org/starkmuseum/) (Specializes in western art and buys western art regularly.) 38 | 3) [Invaluable](https://www.invaluable.com/features/artfact1000.cfm?sgID=3&groupName=American%20Painting%3A%2018th%2F19th%20Century) 39 | 4) [Mutualart](https://www.mutualart.com) 40 | 5) [Mearto](https://www.mearto.com/search) 41 | 42 | ### Next Step 43 | My next step is to gather the data and speak with experts to get a better idea on features to target for data acquisition. 44 | 45 | # 46 | # College Football Quarterback Prediction 47 | 48 | ### Purpose 49 | Predict if a high school football quarterback will perform well at the college level. 50 | 51 | ### Problem 52 | UT seems to have great difficulty finding a good quarterback even though the Texas high schools are noted as being a top field for recruiting. If UT could more accurately predict if a high school quarterback will perform well at the college level they could more consistently recruit high quality quarterbacks and win more games. 53 | 54 | ### How I will present my work 55 | I would present a slide show or visualization. 56 | 57 | ### Data sources 58 | 1) [Maxpreps](http://www.maxpreps.com) 59 | 2) [Houston Chronical](https://www.chron.com/sports/highschool/scoreboard/) 60 | 3) [ESPN](http://www.espn.com/college-football/statistics) 61 | 4) [CBS Sports](https://www.cbssports.com/collegefootball/stats/playersort/NCAAF/QB) 62 | 5) [Football Outsiders](https://www.footballoutsiders.com/stats/qb) 63 | 64 | ### Next Step 65 | My next step is to gather the data and speak with experts to get a better idea on features to target for data acquisition. 66 | -------------------------------------------------------------------------------- /proposal.md: -------------------------------------------------------------------------------- 1 | ## Patent Classification Capstone 2 | 3 | ### Purpose 4 | The purpose of this project is to identify which group of people (art unit) at the US patent office (USPTO) will review a new patent application. The art unit is a group of patent examiners with the technological background to understand the technology in the patent application. Currently, this is the first step in the processing of a patent application sent to the USPTO. The USPTO sends the application to a contractor where 135 people read each application and assign it to an art unit. The turnaround time is [28 days](https://www.serco-na.com/news/press-releases/detail/2194/serco-processes-2-millionth-patent-application-for-u-s), and the USPTO pays the contractor 95 million over 5 years ([Citation](https://www.serco-na.com/news/press-releases/detail/12520/serco-awarded-95-million-patent-classification-contract)). 5 | 6 | ### Problem 7 | It currently takes too long and costs too much for a patent to be classified and assigned to the correct art unit. Additionally, if patent attorneys can write the patent application with the correct wording to direct the application to one art unit over another, they can increase the likelihood of the patent being granted. 8 | 9 | **For example**, patent applications that land in art unit 3681, which handles “transportation, construction, electronic commerce, agriculture, national security and license & review,” have about a 29.8% chance of maturing into a patent. And even if you are lucky enough to be one of the 29.8%, it is likely to take over four years to grant. But get your patent applications into art unit 3688, which the USPTO describes as handling the exact same subject matter as 3681, and your chances of allowance jump up to about 81%, with an average time to issuance of around 2 years ([Citation](http://www.ipwatchdog.com/2016/04/14/better-way-file-patent-applications/id=68302/)). 10 | 11 | **[The hardest and easiest art units.](http://www.ipwatchdog.com/2015/05/21/hardest-easiest-art-units/id=57864/):** 12 | 13 | ![image from ipwatchdog.com](http://www.ipwatchdog.com/wp-content/uploads/2015/05/Figure-1.png) 14 | ![image from ipwatchdog.com](http://www.ipwatchdog.com/wp-content/uploads/2015/05/Figure-2.png) 15 | 16 | **Alice case law is a major factor preventing software related patents** 17 | Alice Corporation Pty. Ltd. v. CLS Bank International, 573 U.S. ___ (2014) is a case that essentially said any patent that relates to performing an economic activity on a computer is possibly an abstract idea and not patentable. Avoiding Alice rejections is a big concern for patent attorneys. Once you receive an Alice rejection you are less likely to get the patent granted. 18 | 19 | [**Art units with most Alice rejections**](http://www.ipwatchdog.com/2015/12/14/the-most-likely-art-units-for-alice-rejections/id=63829/) 20 | 21 | ![image from ipwatchdog.com](http://www.ipwatchdog.com/wp-content/uploads/2015/12/Figure-1.jpg) 22 | 23 | ### Prior Solutions To This Problem 24 | - [LexisNexis Pathways](https://www.lexisnexisip.com/products/pathways/) 25 | - [Deep learning and IPC codes](https://www.atlantis-press.com/php/download_paper.php?id=25866373) 26 | - [Title and abstract used for classification](https://patinformatics.com/machine-learning-in-patent-analytics-part-2-binary-classification-for-prioritizing-search-results/) 27 | - [WIPO patent applications and IPC codes](http://users.softlab.ntua.gr/facilities/public/AD/Text%20Categorization/Automated%20Categorization%20in%20the%20International%20Patent%20Classification.pdf) 28 | - [Automated Patent Categorization and Guided Patent Search using IPC as Inspired by MeSH and PubMed](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3632996/) 29 | - [Automated Patent Classification using IPC codes](http://cs229.stanford.edu/proj2011/ChristopherLinSpieckermann-AutomatedPatentClassification.pdf) 30 | - [Measuring patent claim breadth using Google Patents Public Datasets](https://cloud.google.com/blog/products/ai-machine-learning/measuring-patent-claim-breadth-using-google-patents-public-datasets) 31 | 32 | ### My Approach 33 | I will be focusing my classification on art units of the USPTO. The use of classification codes is confusing because they must then be converted into an art unit, which is often used to describe rejection rates. Additionally, the only tools available for lawyers to utilize are behind expensive paywalls. 34 | 35 | I will first utilize a binary classification such as, does the application belong in art unit 2100 or not. I will then utilize multi-class classification which will determine which of the hundreds of art units the application belongs in. I will utilize numerous algorithms for multi-class classification, including Decision trees, SVM, KNN classifiers, and nural networks. 36 | 37 | **Baseline Metric** 38 | To determine if the model is an improvement over the current solutions I will use two sources as a range for accuracy. On the high end of the range is the [97% accuracy](https://www.serco-na.com/news/press-releases/detail/2194/serco-processes-2-millionth-patent-application-for-u-s) stated by the contracting firm that currently classifies the patent applications. On the low end I will use an estimate by a patent attorney who estimates that the contractor correctly classifies patent applications [90%](http://www.ipwatchdog.com/2014/03/11/when-uspto-classifies-an-application-incorrectly/id=48457/) of the time. 39 | 40 | ### Who Cares? 41 | The US is one of the main countries for companies to get patent protection. Because of the expense of patents (ranging from $10,000 - $40,000) it is important for inventors and attorneys to avoid obstacles like a difficult art unit which can increase the cost of the application and lead to an application not getting granted. 42 | 43 | If successful, attorneys could draft and file their applications with more confidence that it will avoid immediate rejections from the patent office. 44 | 45 | Additionally, the US Patent office could reduce costs and turnaround time by utilizing the automated model. 46 | 47 | ### How I will present my work 48 | I plan to have a classification web app to be used by friends in the legal industry. Visualizations may include word clouds showing the important words in different classes to give information as to what to include to ensure the patent application gets to the art unit the patent attorney wants. It would be for demonstration purposes only until I could ensure no data is recorded and no data is able to be read by anyone other than the lawyer. This is due to issues of client confidentiality and issues relating to publication date of inventions. These issues require a lot of text to explain, but the summary is: the lawyer doesn't want to risk losing their license or losing any pantent rights for their client. 49 | 50 | ### Data sources 51 | 1) USPTO 52 | - [USPTO bulkdata data dictionary](https://bulkdata.uspto.gov/data/patent/office/actions/bigdata/2017/USPTO%20Patent%20Prosecution%20Research%20Data_Unlocking%20Office%20Action%20Traits.pdf) 53 | - [USPTO public pair dataset](https://www.uspto.gov/learning-and-resources/electronic-data-products/patent-examination-research-dataset-public-pair) 54 | 55 | 2) [Google Big Query](https://cloud.google.com/bigquery/) 56 | - patents-public-data dataset 57 | - SQL table (28gb and 1.4tb) 58 | 59 | ### Potential Problems 60 | - Incomplete labeling of art units: I am using USPC codes to assign missing art unit values in the data set. There are hundreds of codes and labels to assign. This could take up a large amount of time. 61 | 62 | ### Next Step 63 | - Fill in missing art unit values for 3600 and 2100 art units using [USPC codes](https://www.uspto.gov/patents-application-process/patent-search/understanding-patent-classifications/patent-classification). 64 | - Exploratory Data Analysis (EDA) to look for issues of imbalanced classes. 65 | - Build and train models using Google Cloud Platform since I am acquiring the data using SQL from Google BigQuery. I will spend less time moving data between platforms like AWS so I can spend more time on the modeling. 66 | - Binary Classification: is it 2100 or not? 67 | - Multi-class Classification: is it 2121, 2129, 3689, 3622, 3629, and other art units in the 3600 range. 68 | - Deploy the model as a web app 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Patent Classification Capstone 2 | 3 | ### Final Notebook and model can be found in [Patent_Classification.ipynb](https://github.com/rcmckee/dsi-Capstone/blob/master/Patent_Classification.ipynb) 4 | Also available as a [google colab notebook](https://colab.research.google.com/github/rcmckee/dsi-Capstone/blob/master/Patent_Classification.ipynb) 5 | 6 | A tensorflow version is available in a [google colab notebook](https://colab.research.google.com/drive/1DjOyXyjUF_6kCuTWkow8EMvSiNtD5BIH) 7 | 8 | ### Purpose 9 | The purpose of this project is to identify which group of people (art unit) at the US patent office (USPTO) will review a new patent application. The art unit is a group of patent examiners with the technological background to understand the technology in the patent application. Currently, this is the first step in the processing of a patent application sent to the USPTO. The USPTO sends the application to a contractor where 135 people read each application and assign it to an art unit. The turnaround time is [28 days](https://www.serco-na.com/news/press-releases/detail/2194/serco-processes-2-millionth-patent-application-for-u-s), and the USPTO pays the contractor 95 million over 5 years ([Citation](https://www.serco-na.com/news/press-releases/detail/12520/serco-awarded-95-million-patent-classification-contract)). 10 | 11 | ### Problem 12 | It currently takes too long and costs too much for a patent to be classified and assigned to the correct art unit. Additionally, if patent attorneys can write the patent application with the correct wording to direct the application to one art unit over another, they can increase the likelihood of the patent being granted. 13 | 14 | **For example**, patent applications that land in art unit 3681, which handles “transportation, construction, electronic commerce, agriculture, national security and license & review,” have about a 29.8% chance of maturing into a patent. And even if you are lucky enough to be one of the 29.8%, it is likely to take over four years to grant. But get your patent applications into art unit 3688, which the USPTO describes as handling the exact same subject matter as 3681, and your chances of allowance jump up to about 81%, with an average time to issuance of around 2 years ([Citation](http://www.ipwatchdog.com/2016/04/14/better-way-file-patent-applications/id=68302/)). 15 | 16 | **[The hardest and easiest art units.](http://www.ipwatchdog.com/2015/05/21/hardest-easiest-art-units/id=57864/):** 17 | 18 | ![image from ipwatchdog.com](http://www.ipwatchdog.com/wp-content/uploads/2015/05/Figure-1.png) 19 | ![image from ipwatchdog.com](http://www.ipwatchdog.com/wp-content/uploads/2015/05/Figure-2.png) 20 | 21 | **Alice case law is a major factor preventing software related patents** 22 | Alice Corporation Pty. Ltd. v. CLS Bank International, 573 U.S. ___ (2014) is a case that essentially said any patent that relates to performing an economic activity on a computer is possibly an abstract idea and not patentable. Avoiding Alice rejections is a big concern for patent attorneys. Once you receive an Alice rejection you are less likely to get the patent granted. 23 | 24 | [**Art units with most Alice rejections**](http://www.ipwatchdog.com/2015/12/14/the-most-likely-art-units-for-alice-rejections/id=63829/) 25 | 26 | ![image from ipwatchdog.com](http://www.ipwatchdog.com/wp-content/uploads/2015/12/Figure-1.jpg) 27 | 28 | ### Prior Solutions To This Problem 29 | - [LexisNexis Pathways](https://www.lexisnexisip.com/products/pathways/) 30 | - [Deep learning and IPC codes](https://www.atlantis-press.com/php/download_paper.php?id=25866373) 31 | - [Title and abstract used for classification](https://patinformatics.com/machine-learning-in-patent-analytics-part-2-binary-classification-for-prioritizing-search-results/) 32 | - [WIPO patent applications and IPC codes](http://users.softlab.ntua.gr/facilities/public/AD/Text%20Categorization/Automated%20Categorization%20in%20the%20International%20Patent%20Classification.pdf) 33 | - [Automated Patent Categorization and Guided Patent Search using IPC as Inspired by MeSH and PubMed](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3632996/) 34 | - [Automated Patent Classification using IPC codes](http://cs229.stanford.edu/proj2011/ChristopherLinSpieckermann-AutomatedPatentClassification.pdf) 35 | - [Measuring patent claim breadth using Google Patents Public Datasets](https://cloud.google.com/blog/products/ai-machine-learning/measuring-patent-claim-breadth-using-google-patents-public-datasets) 36 | 37 | ### My Approach 38 | I will be focusing my classification on art units of the USPTO. The use of classification codes is confusing because they must then be converted into an art unit, which is often used to describe rejection rates. Additionally, the only tools available for lawyers to utilize are behind expensive paywalls. 39 | 40 | I will first utilize a binary classification such as, does the application belong in art unit 2100 or not. I will then utilize multi-class classification which will determine which of the hundreds of art units the application belongs in. I will utilize numerous algorithms for multi-class classification, including Decision trees, SVM, KNN classifiers, and nural networks. 41 | 42 | **Baseline Metric** 43 | To determine if the model is an improvement over the current solutions I will use two sources as a range for accuracy. On the high end of the range is the [97% accuracy](https://www.serco-na.com/news/press-releases/detail/2194/serco-processes-2-millionth-patent-application-for-u-s) stated by the contracting firm that currently classifies the patent applications. On the low end I will use an estimate by a patent attorney who estimates that the contractor correctly classifies patent applications [90%](http://www.ipwatchdog.com/2014/03/11/when-uspto-classifies-an-application-incorrectly/id=48457/) of the time. 44 | 45 | ### Who Cares? 46 | The US is one of the main countries for companies to get patent protection. Because of the expense of patents (ranging from $10,000 - $40,000) it is important for inventors and attorneys to avoid obstacles like a difficult art unit which can increase the cost of the application and lead to an application not getting granted. 47 | 48 | If successful, attorneys could draft and file their applications with more confidence that it will avoid immediate rejections from the patent office. 49 | 50 | Additionally, the US Patent office could reduce costs and turnaround time by utilizing the automated model. 51 | 52 | ### How I will present my work 53 | I plan to have a classification web app to be used by friends in the legal industry. Visualizations may include word clouds showing the important words in different classes to give information as to what to include to ensure the patent application gets to the art unit the patent attorney wants. It would be for demonstration purposes only until I could ensure no data is recorded and no data is able to be read by anyone other than the lawyer. This is due to issues of client confidentiality and issues relating to publication date of inventions. These issues require a lot of text to explain, but the summary is: the lawyer doesn't want to risk losing their license or losing any pantent rights for their client. 54 | 55 | ### Data sources 56 | 1) USPTO 57 | - [USPTO bulkdata data dictionary](https://bulkdata.uspto.gov/data/patent/office/actions/bigdata/2017/USPTO%20Patent%20Prosecution%20Research%20Data_Unlocking%20Office%20Action%20Traits.pdf) 58 | - [USPTO public pair dataset](https://www.uspto.gov/learning-and-resources/electronic-data-products/patent-examination-research-dataset-public-pair) 59 | 60 | 2) [Google Big Query](https://cloud.google.com/bigquery/) 61 | - patents-public-data dataset 62 | - SQL table (28gb and 1.4tb) 63 | 64 | ### Potential Problems 65 | - Incomplete labeling of art units: I am using USPC codes to assign missing art unit values in the data set. There are hundreds of codes and labels to assign. This could take up a large amount of time. 66 | 67 | ### Next Step 68 | - Fill in missing art unit values for 3600 and 2100 art units using [USPC codes](https://www.uspto.gov/patents-application-process/patent-search/understanding-patent-classifications/patent-classification). 69 | - Exploratory Data Analysis (EDA) to look for issues of imbalanced classes. 70 | - Build and train models using Google Cloud Platform since I am acquiring the data using SQL from Google BigQuery. I will spend less time moving data between platforms like AWS so I can spend more time on the modeling. 71 | - Binary Classification: is it 2100 or not? 72 | - Multi-class Classification: is it 2121, 2129, 3689, 3622, 3629, and other art units in the 3600 range. 73 | - Deploy the model as a web app 74 | -------------------------------------------------------------------------------- /Patent_Classification.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Patent Classification.ipynb", 7 | "version": "0.3.2", 8 | "provenance": [], 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "metadata": { 29 | "id": "YMXrGSVuFK0i", 30 | "colab_type": "code", 31 | "colab": {} 32 | }, 33 | "cell_type": "code", 34 | "source": [ 35 | "import pandas as pd\n", 36 | "import numpy as np\n", 37 | "import scipy.stats as scs\n", 38 | "import statsmodels.api as sm\n", 39 | "import matplotlib.pyplot as plt\n", 40 | "\n", 41 | "%matplotlib inline\n", 42 | "%config InlineBackend.figure_format='retina'" 43 | ], 44 | "execution_count": 0, 45 | "outputs": [] 46 | }, 47 | { 48 | "metadata": { 49 | "id": "QJ8RnnDnGfVl", 50 | "colab_type": "code", 51 | "colab": { 52 | "base_uri": "https://localhost:8080/", 53 | "height": 51 54 | }, 55 | "outputId": "8bb32283-2c6a-4ee4-c96f-beb047dc11cf" 56 | }, 57 | "cell_type": "code", 58 | "source": [ 59 | "# Code to read csv file into Colaboratory:\n", 60 | "!pip install -U -q PyDrive\n", 61 | "from pydrive.auth import GoogleAuth\n", 62 | "from pydrive.drive import GoogleDrive\n", 63 | "from google.colab import auth\n", 64 | "from oauth2client.client import GoogleCredentials\n" 65 | ], 66 | "execution_count": 3, 67 | "outputs": [ 68 | { 69 | "output_type": "stream", 70 | "text": [ 71 | "\u001b[?25l\r\u001b[K 1% |▎ | 10kB 16.6MB/s eta 0:00:01\r\u001b[K 2% |▋ | 20kB 3.4MB/s eta 0:00:01\r\u001b[K 3% |█ | 30kB 4.8MB/s eta 0:00:01\r\u001b[K 4% |█▎ | 40kB 3.1MB/s eta 0:00:01\r\u001b[K 5% |█▋ | 51kB 3.8MB/s eta 0:00:01\r\u001b[K 6% |██ | 61kB 4.5MB/s eta 0:00:01\r\u001b[K 7% |██▎ | 71kB 5.1MB/s eta 0:00:01\r\u001b[K 8% |██▋ | 81kB 5.7MB/s eta 0:00:01\r\u001b[K 9% |███ | 92kB 6.3MB/s eta 0:00:01\r\u001b[K 10% |███▎ | 102kB 4.9MB/s eta 0:00:01\r\u001b[K 11% |███▋ | 112kB 4.9MB/s eta 0:00:01\r\u001b[K 12% |████ | 122kB 6.5MB/s eta 0:00:01\r\u001b[K 13% |████▎ | 133kB 6.3MB/s eta 0:00:01\r\u001b[K 14% |████▋ | 143kB 10.7MB/s eta 0:00:01\r\u001b[K 15% |█████ | 153kB 10.8MB/s eta 0:00:01\r\u001b[K 16% |█████▎ | 163kB 10.8MB/s eta 0:00:01\r\u001b[K 17% |█████▋ | 174kB 10.5MB/s eta 0:00:01\r\u001b[K 18% |██████ | 184kB 10.7MB/s eta 0:00:01\r\u001b[K 19% |██████▎ | 194kB 10.7MB/s eta 0:00:01\r\u001b[K 20% |██████▋ | 204kB 15.0MB/s eta 0:00:01\r\u001b[K 21% |███████ | 215kB 14.8MB/s eta 0:00:01\r\u001b[K 22% |███████▎ | 225kB 15.2MB/s eta 0:00:01\r\u001b[K 23% |███████▋ | 235kB 16.4MB/s eta 0:00:01\r\u001b[K 24% |████████ | 245kB 15.9MB/s eta 0:00:01\r\u001b[K 25% |████████▎ | 256kB 16.1MB/s eta 0:00:01\r\u001b[K 26% |████████▋ | 266kB 13.9MB/s eta 0:00:01\r\u001b[K 27% |█████████ | 276kB 14.3MB/s eta 0:00:01\r\u001b[K 29% |█████████▎ | 286kB 14.3MB/s eta 0:00:01\r\u001b[K 30% |█████████▋ | 296kB 14.2MB/s eta 0:00:01\r\u001b[K 31% |██████████ | 307kB 28.2MB/s eta 0:00:01\r\u001b[K 32% |██████████▎ | 317kB 30.5MB/s eta 0:00:01\r\u001b[K 33% |██████████▋ | 327kB 30.6MB/s eta 0:00:01\r\u001b[K 34% |███████████ | 337kB 30.7MB/s eta 0:00:01\r\u001b[K 35% |███████████▎ | 348kB 30.6MB/s eta 0:00:01\r\u001b[K 36% |███████████▋ | 358kB 30.8MB/s eta 0:00:01\r\u001b[K 37% |████████████ | 368kB 44.4MB/s eta 0:00:01\r\u001b[K 38% |████████████▎ | 378kB 44.6MB/s eta 0:00:01\r\u001b[K 39% |████████████▋ | 389kB 45.4MB/s eta 0:00:01\r\u001b[K 40% |█████████████ | 399kB 45.8MB/s eta 0:00:01\r\u001b[K 41% |█████████████▎ | 409kB 30.0MB/s eta 0:00:01\r\u001b[K 42% |█████████████▋ | 419kB 29.9MB/s eta 0:00:01\r\u001b[K 43% |██████████████ | 430kB 29.2MB/s eta 0:00:01\r\u001b[K 44% |██████████████▎ | 440kB 29.3MB/s eta 0:00:01\r\u001b[K 45% |██████████████▋ | 450kB 30.3MB/s eta 0:00:01\r\u001b[K 46% |███████████████ | 460kB 29.5MB/s eta 0:00:01\r\u001b[K 47% |███████████████▎ | 471kB 29.3MB/s eta 0:00:01\r\u001b[K 48% |███████████████▋ | 481kB 29.2MB/s eta 0:00:01\r\u001b[K 49% |████████████████ | 491kB 24.2MB/s eta 0:00:01\r\u001b[K 50% |████████████████▎ | 501kB 23.8MB/s eta 0:00:01\r\u001b[K 51% |████████████████▋ | 512kB 30.1MB/s eta 0:00:01\r\u001b[K 52% |█████████████████ | 522kB 30.3MB/s eta 0:00:01\r\u001b[K 53% |█████████████████▎ | 532kB 31.2MB/s eta 0:00:01\r\u001b[K 54% |█████████████████▋ | 542kB 31.1MB/s eta 0:00:01\r\u001b[K 55% |██████████████████ | 552kB 32.2MB/s eta 0:00:01\r\u001b[K 57% |██████████████████▎ | 563kB 32.8MB/s eta 0:00:01\r\u001b[K 58% |██████████████████▋ | 573kB 32.7MB/s eta 0:00:01\r\u001b[K 59% |███████████████████ | 583kB 33.1MB/s eta 0:00:01\r\u001b[K 60% |███████████████████▎ | 593kB 43.3MB/s eta 0:00:01\r\u001b[K 61% |███████████████████▋ | 604kB 45.4MB/s eta 0:00:01\r\u001b[K 62% |████████████████████ | 614kB 50.9MB/s eta 0:00:01\r\u001b[K 63% |████████████████████▎ | 624kB 50.3MB/s eta 0:00:01\r\u001b[K 64% |████████████████████▋ | 634kB 50.7MB/s eta 0:00:01\r\u001b[K 65% |█████████████████████ | 645kB 51.0MB/s eta 0:00:01\r\u001b[K 66% |█████████████████████▎ | 655kB 50.2MB/s eta 0:00:01\r\u001b[K 67% |█████████████████████▋ | 665kB 41.5MB/s eta 0:00:01\r\u001b[K 68% |██████████████████████ | 675kB 41.0MB/s eta 0:00:01\r\u001b[K 69% |██████████████████████▎ | 686kB 41.1MB/s eta 0:00:01\r\u001b[K 70% |██████████████████████▋ | 696kB 40.9MB/s eta 0:00:01\r\u001b[K 71% |███████████████████████ | 706kB 39.5MB/s eta 0:00:01\r\u001b[K 72% |███████████████████████▎ | 716kB 40.2MB/s eta 0:00:01\r\u001b[K 73% |███████████████████████▋ | 727kB 40.1MB/s eta 0:00:01\r\u001b[K 74% |████████████████████████ | 737kB 38.3MB/s eta 0:00:01\r\u001b[K 75% |████████████████████████▎ | 747kB 38.5MB/s eta 0:00:01\r\u001b[K 76% |████████████████████████▋ | 757kB 39.0MB/s eta 0:00:01\r\u001b[K 77% |████████████████████████▉ | 768kB 47.8MB/s eta 0:00:01\r\u001b[K 78% |█████████████████████████▏ | 778kB 48.9MB/s eta 0:00:01\r\u001b[K 79% |█████████████████████████▌ | 788kB 47.9MB/s eta 0:00:01\r\u001b[K 80% |█████████████████████████▉ | 798kB 48.1MB/s eta 0:00:01\r\u001b[K 81% |██████████████████████████▏ | 808kB 49.9MB/s eta 0:00:01\r\u001b[K 82% |██████████████████████████▌ | 819kB 47.3MB/s eta 0:00:01\r\u001b[K 83% |██████████████████████████▉ | 829kB 47.4MB/s eta 0:00:01\r\u001b[K 85% |███████████████████████████▏ | 839kB 49.3MB/s eta 0:00:01\r\u001b[K 86% |███████████████████████████▌ | 849kB 49.3MB/s eta 0:00:01\r\u001b[K 87% |███████████████████████████▉ | 860kB 43.1MB/s eta 0:00:01\r\u001b[K 88% |████████████████████████████▏ | 870kB 42.5MB/s eta 0:00:01\r\u001b[K 89% |████████████████████████████▌ | 880kB 42.8MB/s eta 0:00:01\r\u001b[K 90% |████████████████████████████▉ | 890kB 43.5MB/s eta 0:00:01\r\u001b[K 91% |█████████████████████████████▏ | 901kB 43.1MB/s eta 0:00:01\r\u001b[K 92% |█████████████████████████████▌ | 911kB 42.8MB/s eta 0:00:01\r\u001b[K 93% |█████████████████████████████▉ | 921kB 44.1MB/s eta 0:00:01\r\u001b[K 94% |██████████████████████████████▏ | 931kB 44.8MB/s eta 0:00:01\r\u001b[K 95% |██████████████████████████████▌ | 942kB 45.5MB/s eta 0:00:01\r\u001b[K 96% |██████████████████████████████▉ | 952kB 44.6MB/s eta 0:00:01\r\u001b[K 97% |███████████████████████████████▏| 962kB 51.8MB/s eta 0:00:01\r\u001b[K 98% |███████████████████████████████▌| 972kB 52.4MB/s eta 0:00:01\r\u001b[K 99% |███████████████████████████████▉| 983kB 52.5MB/s eta 0:00:01\r\u001b[K 100% |████████████████████████████████| 993kB 14.2MB/s \n", 72 | "\u001b[?25h Building wheel for PyDrive (setup.py) ... \u001b[?25ldone\n", 73 | "\u001b[?25h" 74 | ], 75 | "name": "stdout" 76 | } 77 | ] 78 | }, 79 | { 80 | "metadata": { 81 | "id": "QcA3OHBhGsVC", 82 | "colab_type": "code", 83 | "colab": {} 84 | }, 85 | "cell_type": "code", 86 | "source": [ 87 | "# Authenticate and create the PyDrive client.\n", 88 | "auth.authenticate_user()\n", 89 | "gauth = GoogleAuth()\n", 90 | "gauth.credentials = GoogleCredentials.get_application_default()\n", 91 | "drive = GoogleDrive(gauth)" 92 | ], 93 | "execution_count": 0, 94 | "outputs": [] 95 | }, 96 | { 97 | "metadata": { 98 | "id": "NLQS3r_uGswm", 99 | "colab_type": "code", 100 | "colab": {} 101 | }, 102 | "cell_type": "code", 103 | "source": [ 104 | "downloaded = drive.CreateFile({'id':'1UcoQDxQe5MGruMUoD4013HrTz346OH8i'}) \n", 105 | "downloaded.GetContentFile('small_700_through_710_descr_clm_code.csv') \n", 106 | "df = pd.read_csv('small_700_through_710_descr_clm_code.csv')\n", 107 | "# Dataset is now stored in a Pandas Dataframe\n" 108 | ], 109 | "execution_count": 0, 110 | "outputs": [] 111 | }, 112 | { 113 | "metadata": { 114 | "id": "ESVoFcmdH6Uo", 115 | "colab_type": "code", 116 | "colab": { 117 | "base_uri": "https://localhost:8080/", 118 | "height": 204 119 | }, 120 | "outputId": "24bd29af-01f2-4f8d-e514-5d558fbb1502" 121 | }, 122 | "cell_type": "code", 123 | "source": [ 124 | "df.head()" 125 | ], 126 | "execution_count": 14, 127 | "outputs": [ 128 | { 129 | "output_type": "execute_result", 130 | "data": { 131 | "text/html": [ 132 | "
\n", 133 | "\n", 146 | "\n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | "
Unnamed: 0descrclmcode
00This application claims priority under 35 U.S....What is claimed is: \\n \\n 1 . A pr...700
11BACKGROUND \\n 1. Field of Invention \\n ...What is claimed is: \\n \\n 1 . A st...700
22CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...What is claimed is: \\n \\n 1 . A me...700
33FIELD OF THE INVENTION \\n The present inve...1 . A method for state-transition-controlled p...700
44RELATED APPLICATION \\n This application cl...What is claimed is: \\n \\n 1 . A me...700
\n", 194 | "
" 195 | ], 196 | "text/plain": [ 197 | " Unnamed: 0 descr \\\n", 198 | "0 0 This application claims priority under 35 U.S.... \n", 199 | "1 1 BACKGROUND \\n 1. Field of Invention \\n ... \n", 200 | "2 2 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ... \n", 201 | "3 3 FIELD OF THE INVENTION \\n The present inve... \n", 202 | "4 4 RELATED APPLICATION \\n This application cl... \n", 203 | "\n", 204 | " clm code \n", 205 | "0 What is claimed is: \\n \\n 1 . A pr... 700 \n", 206 | "1 What is claimed is: \\n \\n 1 . A st... 700 \n", 207 | "2 What is claimed is: \\n \\n 1 . A me... 700 \n", 208 | "3 1 . A method for state-transition-controlled p... 700 \n", 209 | "4 What is claimed is: \\n \\n 1 . A me... 700 " 210 | ] 211 | }, 212 | "metadata": { 213 | "tags": [] 214 | }, 215 | "execution_count": 14 216 | } 217 | ] 218 | }, 219 | { 220 | "metadata": { 221 | "id": "MDJWwaFtFdxz", 222 | "colab_type": "code", 223 | "colab": { 224 | "base_uri": "https://localhost:8080/", 225 | "height": 204 226 | }, 227 | "outputId": "f226c74a-7d23-492c-8080-f3db770a0a33" 228 | }, 229 | "cell_type": "code", 230 | "source": [ 231 | "df.drop('Unnamed: 0',axis=1, inplace=True)\n", 232 | "df = df[(df['code']==705)|(df['code']==706)|(df['code']==700)]\n", 233 | "df['descr_clm'] = df.descr + df.clm\n", 234 | "df.drop(['descr','clm'],axis=1, inplace=True)\n", 235 | "df['code'] = df['code'].astype('category')\n", 236 | "df.head()" 237 | ], 238 | "execution_count": 15, 239 | "outputs": [ 240 | { 241 | "output_type": "execute_result", 242 | "data": { 243 | "text/html": [ 244 | "
\n", 245 | "\n", 258 | "\n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | "
codedescr_clm
0700This application claims priority under 35 U.S....
1700BACKGROUND \\n 1. Field of Invention \\n ...
2700CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3700FIELD OF THE INVENTION \\n The present inve...
4700RELATED APPLICATION \\n This application cl...
\n", 294 | "
" 295 | ], 296 | "text/plain": [ 297 | " code descr_clm\n", 298 | "0 700 This application claims priority under 35 U.S....\n", 299 | "1 700 BACKGROUND \\n 1. Field of Invention \\n ...\n", 300 | "2 700 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 301 | "3 700 FIELD OF THE INVENTION \\n The present inve...\n", 302 | "4 700 RELATED APPLICATION \\n This application cl..." 303 | ] 304 | }, 305 | "metadata": { 306 | "tags": [] 307 | }, 308 | "execution_count": 15 309 | } 310 | ] 311 | }, 312 | { 313 | "metadata": { 314 | "id": "5etELzCVJEGg", 315 | "colab_type": "text" 316 | }, 317 | "cell_type": "markdown", 318 | "source": [ 319 | "# Data exploration" 320 | ] 321 | }, 322 | { 323 | "metadata": { 324 | "id": "6KDJrO7fIs8m", 325 | "colab_type": "code", 326 | "colab": { 327 | "base_uri": "https://localhost:8080/", 328 | "height": 85 329 | }, 330 | "outputId": "13bc5313-1a35-4334-9930-797816a22529" 331 | }, 332 | "cell_type": "code", 333 | "source": [ 334 | "df['code'].value_counts()" 335 | ], 336 | "execution_count": 16, 337 | "outputs": [ 338 | { 339 | "output_type": "execute_result", 340 | "data": { 341 | "text/plain": [ 342 | "706 1000\n", 343 | "705 1000\n", 344 | "700 1000\n", 345 | "Name: code, dtype: int64" 346 | ] 347 | }, 348 | "metadata": { 349 | "tags": [] 350 | }, 351 | "execution_count": 16 352 | } 353 | ] 354 | }, 355 | { 356 | "metadata": { 357 | "id": "JD8bXdGTIsrW", 358 | "colab_type": "code", 359 | "colab": {} 360 | }, 361 | "cell_type": "code", 362 | "source": [ 363 | "df['category_id'] = df['code'].factorize()[0]" 364 | ], 365 | "execution_count": 0, 366 | "outputs": [] 367 | }, 368 | { 369 | "metadata": { 370 | "id": "EcJP6L6jIyEk", 371 | "colab_type": "code", 372 | "colab": { 373 | "base_uri": "https://localhost:8080/", 374 | "height": 85 375 | }, 376 | "outputId": "c4692e5a-f1f3-424a-cc0a-c02bf0d107d4" 377 | }, 378 | "cell_type": "code", 379 | "source": [ 380 | "df['category_id'].value_counts()" 381 | ], 382 | "execution_count": 18, 383 | "outputs": [ 384 | { 385 | "output_type": "execute_result", 386 | "data": { 387 | "text/plain": [ 388 | "1 1000\n", 389 | "2 1000\n", 390 | "0 1000\n", 391 | "Name: category_id, dtype: int64" 392 | ] 393 | }, 394 | "metadata": { 395 | "tags": [] 396 | }, 397 | "execution_count": 18 398 | } 399 | ] 400 | }, 401 | { 402 | "metadata": { 403 | "id": "MZp3DjrlI1Ak", 404 | "colab_type": "code", 405 | "colab": {} 406 | }, 407 | "cell_type": "code", 408 | "source": [ 409 | "category_id_df = df[['code', 'category_id']].drop_duplicates().sort_values('category_id')\n", 410 | "category_to_id = dict(category_id_df.values)\n", 411 | "id_to_category = dict(category_id_df[['category_id', 'code']].values)" 412 | ], 413 | "execution_count": 0, 414 | "outputs": [] 415 | }, 416 | { 417 | "metadata": { 418 | "id": "GIw0FGdxI3sm", 419 | "colab_type": "code", 420 | "colab": { 421 | "base_uri": "https://localhost:8080/", 422 | "height": 34 423 | }, 424 | "outputId": "a7dcf91a-9b69-428b-b071-f4b450351120" 425 | }, 426 | "cell_type": "code", 427 | "source": [ 428 | "id_to_category" 429 | ], 430 | "execution_count": 20, 431 | "outputs": [ 432 | { 433 | "output_type": "execute_result", 434 | "data": { 435 | "text/plain": [ 436 | "{0: 700, 1: 705, 2: 706}" 437 | ] 438 | }, 439 | "metadata": { 440 | "tags": [] 441 | }, 442 | "execution_count": 20 443 | } 444 | ] 445 | }, 446 | { 447 | "metadata": { 448 | "id": "1aH1wZ_yI6tV", 449 | "colab_type": "code", 450 | "colab": { 451 | "base_uri": "https://localhost:8080/", 452 | "height": 204 453 | }, 454 | "outputId": "400ef8fe-be54-41cf-8f28-4823c2af6f34" 455 | }, 456 | "cell_type": "code", 457 | "source": [ 458 | "df.sample(5, random_state=0)" 459 | ], 460 | "execution_count": 21, 461 | "outputs": [ 462 | { 463 | "output_type": "execute_result", 464 | "data": { 465 | "text/html": [ 466 | "
\n", 467 | "\n", 480 | "\n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | "
codedescr_clmcategory_id
2077700CROSS-REFERENCE TO RELATED APPLICATION(S) \\n ...0
3401706BACKGROUND \\n Many systems are instrumente...2
4393706FIELD \\n The subject matter disclosed here...2
10648705This application is a continuation of U.S. pat...1
10687705BACKGROUND \\n 1. Technical Field \\n Em...1
\n", 522 | "
" 523 | ], 524 | "text/plain": [ 525 | " code descr_clm category_id\n", 526 | "2077 700 CROSS-REFERENCE TO RELATED APPLICATION(S) \\n ... 0\n", 527 | "3401 706 BACKGROUND \\n Many systems are instrumente... 2\n", 528 | "4393 706 FIELD \\n The subject matter disclosed here... 2\n", 529 | "10648 705 This application is a continuation of U.S. pat... 1\n", 530 | "10687 705 BACKGROUND \\n 1. Technical Field \\n Em... 1" 531 | ] 532 | }, 533 | "metadata": { 534 | "tags": [] 535 | }, 536 | "execution_count": 21 537 | } 538 | ] 539 | }, 540 | { 541 | "metadata": { 542 | "id": "xJNaURyuJLcg", 543 | "colab_type": "code", 544 | "colab": { 545 | "base_uri": "https://localhost:8080/", 546 | "height": 287 547 | }, 548 | "outputId": "69ca4d0f-0fd8-4150-ce3d-b5d725a9c9c6" 549 | }, 550 | "cell_type": "code", 551 | "source": [ 552 | "df.groupby('code').descr_clm.count().plot.bar(ylim=0);" 553 | ], 554 | "execution_count": 22, 555 | "outputs": [ 556 | { 557 | "output_type": "display_data", 558 | "data": { 559 | "image/png": "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\nQmCC\n", 560 | "text/plain": [ 561 | "
" 562 | ] 563 | }, 564 | "metadata": { 565 | "tags": [], 566 | "image/png": { 567 | "width": 378, 568 | "height": 270 569 | } 570 | } 571 | } 572 | ] 573 | }, 574 | { 575 | "metadata": { 576 | "id": "o__UXblgJTYT", 577 | "colab_type": "text" 578 | }, 579 | "cell_type": "markdown", 580 | "source": [ 581 | "# Tf-idf Vectorizer" 582 | ] 583 | }, 584 | { 585 | "metadata": { 586 | "id": "TjikdGnQJN04", 587 | "colab_type": "code", 588 | "colab": { 589 | "base_uri": "https://localhost:8080/", 590 | "height": 34 591 | }, 592 | "outputId": "63382c28-dbda-4afd-e866-cc5761bcefae" 593 | }, 594 | "cell_type": "code", 595 | "source": [ 596 | "from sklearn.feature_extraction.text import TfidfVectorizer\n", 597 | "\n", 598 | "tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='latin-1', ngram_range=(1, 2), stop_words='english')\n", 599 | "\n", 600 | "features = tfidf.fit_transform(df['descr_clm']).toarray()\n", 601 | "labels = df['category_id']\n", 602 | "features.shape" 603 | ], 604 | "execution_count": 23, 605 | "outputs": [ 606 | { 607 | "output_type": "execute_result", 608 | "data": { 609 | "text/plain": [ 610 | "(3000, 110325)" 611 | ] 612 | }, 613 | "metadata": { 614 | "tags": [] 615 | }, 616 | "execution_count": 23 617 | } 618 | ] 619 | }, 620 | { 621 | "metadata": { 622 | "id": "-uCj_tMaJiIz", 623 | "colab_type": "text" 624 | }, 625 | "cell_type": "markdown", 626 | "source": [ 627 | "**3000 applications, represented by 110325 features, representing the tf-idf score for different unigrams and bigrams.**" 628 | ] 629 | }, 630 | { 631 | "metadata": { 632 | "id": "hnb2et8SKA8a", 633 | "colab_type": "text" 634 | }, 635 | "cell_type": "markdown", 636 | "source": [ 637 | "# Top 10 Uni-Grams and Bi-Grams for each Patent class" 638 | ] 639 | }, 640 | { 641 | "metadata": { 642 | "id": "xoxJm48wJc5S", 643 | "colab_type": "code", 644 | "colab": {} 645 | }, 646 | "cell_type": "code", 647 | "source": [ 648 | "from sklearn.feature_selection import chi2" 649 | ], 650 | "execution_count": 0, 651 | "outputs": [] 652 | }, 653 | { 654 | "metadata": { 655 | "id": "GwFF_gUtJ-z0", 656 | "colab_type": "code", 657 | "colab": { 658 | "base_uri": "https://localhost:8080/", 659 | "height": 1190 660 | }, 661 | "outputId": "a7d6525f-de58-4005-d8a7-7ca2f1d5d448" 662 | }, 663 | "cell_type": "code", 664 | "source": [ 665 | "N = 10\n", 666 | "for code, category_id in sorted(category_to_id.items()):\n", 667 | " features_chi2 = chi2(features, labels == category_id)\n", 668 | " indices = np.argsort(features_chi2[0])\n", 669 | " feature_names = np.array(tfidf.get_feature_names())[indices]\n", 670 | " unigrams = [v for v in feature_names if len(v.split(' ')) == 1]\n", 671 | " bigrams = [v for v in feature_names if len(v.split(' ')) == 2]\n", 672 | " print(\"# '{}':\".format(code))\n", 673 | " print(\" . Most correlated unigrams:\\n . {}\".format('\\n . '.join(unigrams[-N:])))\n", 674 | " print(\" . Most correlated bigrams:\\n . {}\".format('\\n . '.join(bigrams[-N:])))" 675 | ], 676 | "execution_count": 26, 677 | "outputs": [ 678 | { 679 | "output_type": "stream", 680 | "text": [ 681 | "# '700':\n", 682 | " . Most correlated unigrams:\n", 683 | " . temperature\n", 684 | " . direction\n", 685 | " . motor\n", 686 | " . position\n", 687 | " . sensor\n", 688 | " . controlling\n", 689 | " . power\n", 690 | " . robot\n", 691 | " . control\n", 692 | " . controller\n", 693 | " . Most correlated bigrams:\n", 694 | " . electric power\n", 695 | " . control signal\n", 696 | " . robot according\n", 697 | " . power supply\n", 698 | " . control method\n", 699 | " . method controlling\n", 700 | " . controller configured\n", 701 | " . control unit\n", 702 | " . perspective view\n", 703 | " . control device\n", 704 | "# '705':\n", 705 | " . Most correlated unigrams:\n", 706 | " . card\n", 707 | " . price\n", 708 | " . sale\n", 709 | " . financial\n", 710 | " . transactions\n", 711 | " . credit\n", 712 | " . purchase\n", 713 | " . merchant\n", 714 | " . transaction\n", 715 | " . payment\n", 716 | " . Most correlated bigrams:\n", 717 | " . debit card\n", 718 | " . financial transaction\n", 719 | " . account number\n", 720 | " . payment transaction\n", 721 | " . mobile device\n", 722 | " . account associated\n", 723 | " . goods services\n", 724 | " . service provider\n", 725 | " . credit card\n", 726 | " . point sale\n", 727 | "# '706':\n", 728 | " . Most correlated unigrams:\n", 729 | " . model\n", 730 | " . classifier\n", 731 | " . neurons\n", 732 | " . neuron\n", 733 | " . artificial\n", 734 | " . prediction\n", 735 | " . probability\n", 736 | " . neural\n", 737 | " . training\n", 738 | " . learning\n", 739 | " . Most correlated bigrams:\n", 740 | " . learning algorithm\n", 741 | " . model based\n", 742 | " . training set\n", 743 | " . artificial neural\n", 744 | " . knowledge base\n", 745 | " . artificial intelligence\n", 746 | " . neural networks\n", 747 | " . training data\n", 748 | " . machine learning\n", 749 | " . neural network\n" 750 | ], 751 | "name": "stdout" 752 | } 753 | ] 754 | }, 755 | { 756 | "metadata": { 757 | "id": "SiCi9DuFK9Rg", 758 | "colab_type": "text" 759 | }, 760 | "cell_type": "markdown", 761 | "source": [ 762 | "# Model training and evaluation" 763 | ] 764 | }, 765 | { 766 | "metadata": { 767 | "id": "wzY8wzPVK3-w", 768 | "colab_type": "code", 769 | "colab": {} 770 | }, 771 | "cell_type": "code", 772 | "source": [ 773 | "from sklearn.linear_model import LogisticRegression\n", 774 | "from sklearn.ensemble import RandomForestClassifier\n", 775 | "from sklearn.naive_bayes import MultinomialNB\n", 776 | "from sklearn.model_selection import cross_val_score" 777 | ], 778 | "execution_count": 0, 779 | "outputs": [] 780 | }, 781 | { 782 | "metadata": { 783 | "id": "iMSeFmdLLCov", 784 | "colab_type": "code", 785 | "colab": { 786 | "base_uri": "https://localhost:8080/", 787 | "height": 377 788 | }, 789 | "outputId": "c8e476e3-9580-4241-a2b9-a2463564194f" 790 | }, 791 | "cell_type": "code", 792 | "source": [ 793 | "models = [\n", 794 | " RandomForestClassifier(n_estimators=400, max_depth=50, random_state=0),\n", 795 | " MultinomialNB(alpha=0.01),\n", 796 | " LogisticRegression(random_state=0, C=0.9),\n", 797 | "]\n", 798 | "CV = 5\n", 799 | "cv_df = pd.DataFrame(index=range(CV * len(models)))\n", 800 | "entries = []\n", 801 | "for model in models:\n", 802 | " model_name = model.__class__.__name__\n", 803 | " accuracies = cross_val_score(model, features, labels, scoring='accuracy', cv=CV)\n", 804 | " for fold_idx, accuracy in enumerate(accuracies):\n", 805 | " entries.append((model_name, fold_idx, accuracy))\n", 806 | "cv_df = pd.DataFrame(entries, columns=['model_name', 'fold_idx', 'accuracy'])" 807 | ], 808 | "execution_count": 70, 809 | "outputs": [ 810 | { 811 | "output_type": "stream", 812 | "text": [ 813 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 814 | " FutureWarning)\n", 815 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", 816 | " \"this warning.\", FutureWarning)\n", 817 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 818 | " FutureWarning)\n", 819 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", 820 | " \"this warning.\", FutureWarning)\n", 821 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 822 | " FutureWarning)\n", 823 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", 824 | " \"this warning.\", FutureWarning)\n", 825 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 826 | " FutureWarning)\n", 827 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", 828 | " \"this warning.\", FutureWarning)\n", 829 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 830 | " FutureWarning)\n", 831 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", 832 | " \"this warning.\", FutureWarning)\n" 833 | ], 834 | "name": "stderr" 835 | } 836 | ] 837 | }, 838 | { 839 | "metadata": { 840 | "id": "Zpd2tHqDLKD_", 841 | "colab_type": "code", 842 | "colab": {} 843 | }, 844 | "cell_type": "code", 845 | "source": [ 846 | "import seaborn as sns" 847 | ], 848 | "execution_count": 0, 849 | "outputs": [] 850 | }, 851 | { 852 | "metadata": { 853 | "id": "_2E8rXiDLPA-", 854 | "colab_type": "code", 855 | "colab": { 856 | "base_uri": "https://localhost:8080/", 857 | "height": 333 858 | }, 859 | "outputId": "1d82f2fe-f7ea-44e0-856b-903ff68a61d6" 860 | }, 861 | "cell_type": "code", 862 | "source": [ 863 | "sns.boxplot(x='model_name', y='accuracy', data=cv_df)\n", 864 | "sns.stripplot(x='model_name', y='accuracy', data=cv_df, \n", 865 | " size=8, jitter=True, edgecolor=\"gray\", linewidth=2);" 866 | ], 867 | "execution_count": 71, 868 | "outputs": [ 869 | { 870 | "output_type": "stream", 871 | "text": [ 872 | "/usr/local/lib/python3.6/dist-packages/seaborn/categorical.py:454: FutureWarning: remove_na is deprecated and is a private function. Do not use.\n", 873 | " box_data = remove_na(group_data)\n" 874 | ], 875 | "name": "stderr" 876 | }, 877 | { 878 | "output_type": "display_data", 879 | "data": { 880 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwwAAAINCAYAAACTVPhqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAWJQAAFiUBSVIk8AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XmYXFWB9/Hvra2res3WIftKOEFW\nIUiAABIFBnFUwKAgojiO4iAzgjOojAgqKPIyo4L6+r7jwugggkLgFUHZCRgEIyQEgUMg+0LSnaXT\na3Ut9/3jVndXVVd1VydVXV3dv8/z9FOpc8+99xSh0vWrszmu6yIiIiIiIpKLr9wNEBERERGRkUuB\nQURERERE8lJgEBERERGRvBQYREREREQkLwUGERERERHJS4FBRERERETyUmAQEREREZG8FBhERERE\nRCQvBQYREREREclLgUFERERERPJSYBARERERkbwUGEREREREJC8FBhERERERyStQ7gaMdU1NrW65\n2yAiIiIio19jY51zIOeph0FERERERPJSYBARERERkbwUGEREREREJC8FBhERERERyUuBQURERERE\n8lJgEBERERGRvBQYREREREQkLwUGERERERHJS4FBRERERETyUmAQEREREZG8FBhERERERCQvBQYR\nEREREclLgUFERERERPJSYBARERERkbwUGEREREREJC8FBhERERERyStQ7gaIiIgciM7OTtauXc3u\n3c10dXURDoeZOLGRo48+lnA4XO7miVScrVu38MYbr9PW1orrutTU1DJv3nzmzp2P4zjlbp6UkQKD\niIhUlG3btvLEE4+ycuUzRKNd/Y6HwxFOOeVU3v3u9zJ9+owytFCkcsTjcVateoEnn3yUdetszjqz\nZs3mjDPOZPHik6mqUhgfixzXdcvdhjGtqalVfwEiIgVIJpPce+/dPPzw7wqq7zgO5577QT70oQ/j\n82kErki2Xbt2ctttt7J9+7aC6k+YMJErr7ya2bPnlrhlUiqNjXUH1FWkwFBmCgwiIoNLJpP89Kc/\n5rnnnh3yuaecchqXXfYZhQaRNNu2beWWW26ktXX/kM6rqqriqqu+xGGHLSxRy6SUDjQw6F9PEREZ\n8e699+7cYSHsw7+ghsBRdfgPrYFw/19rf/rTCu6//7fD0EqRytDS0sL3vndLzrAwE4fF+DgZH3Pp\n/9kyGo1y22238vbbO4ajqTJCaA6DiIgMu2QyyauvvsKaNS/S0rKPWCxGJFLNtGnTOemkJUycOKm3\n7rZtW/nDHx7MvEDYR/D4cfhnR3B8fR9q3MQ4Eps6iP21BaLJ3vLf//4BTj75VKZMmVry1yYy0j3w\nwG/Zvbs5o2wBDqc7ASZlTW7e57qsdBO8TN/7qaOjg7vv/h/+5V/+bVjaK+WnwCAiIsMmGu3iqace\n58knH2PXrp056yxf/huOPfY4zjzzHBYufAdPPfUYGcNnwz6qzp6Mr67/rzDH7xCYV4OvsYroH3b1\nhgbXdXnqqcf46Ec/XpLXJVIpOjo6WLkys7fuWHyc7fhzroQ0znF4nxOg3k3wrJvoLX/55dU0Ne2i\nsXFyydss5achSSIiMix27drJ17/+79x99515wwJ4H+5feumv3HLLjdx553/z7LMrMo4Hjx+XMyyk\n89UFCB7XkFH27LNPE41GD/wFiIwCK1c+Q3d33/ugFjgzT1hIdwo+JqcNUfJC+OOlaqaMMJr0XGaa\n9Cwi5dTaup/ly3/Djh3bS3qf7u5uNm/eSCKRGLzyQMI+wudNxfEPPm/PTbh03bcjY2jStGnTqaur\nP7g2HKCpU6dx/vkXUltbV5b7y8gyXO+9bJs2baSrq7P3+amOn1Mcf0HnrnETPJzWyxAIBJg/f0HR\n21hseu/1OdBJzxqSJCIyhi1f/pvyfUvoA/+sCL5pYZygj2RrnMT6Dtx9sbyn+GdECgoL4A1P8k8P\nk1jf0VvmLR9Z2BKSxWbtawBceuk/lOX+MrKU9b2XxgxhsMlCfDxMX2CIx+O9/1+PZHrvHTwFBhER\nGXa+WRFCJ4zDifR9s+kHAofXktwRpXvlHuhK9jvPybEK0kDSry8i/dUMoW6V4+B34SD7CaUCKTCI\niIxh5523DMdxCt64aahc12XDhreIxfp6DXyzIoROnZBzzLTjOPinhak6s9GbtBzLHLXpdg7to0p2\n/cmTD2H8+AlDukaxTJs2nfPOW1aWe8vIU+r3Xj5vvbWOeDze+7wNl0iO5VNz6XLdfmHhsMMWDjr/\nodz03jt4msNQZprDICKj2SuvvMx//ufNfQU+vDkIBXzzH1u7n/iarHXiQw7hC6YVNoch7tJ133bo\n7vtn9sorr+ad71xUcPtFRptvf/vrrFtne5+fgo9TfYV9f7zaTfCHtDkMkyY1csst3y96G6V0NIdB\nRKTMfvWrX7Bly6ZyN2NE2bnz7Yzn/lmRgocJBQ6tIf7yfkj/WqXbJbGxg8D8wQdSJDa0Z4QFn8/P\nH/7wex555OGC7i8wc+ZsLr740nI3Q4po8eKTMwLDapIsdl2Cg/QSuK7LKjdzmODixaeUpI0y8igw\niIgUyZYtmypiAmA5+aaFC67rRPw4E4K4uzMnQcdebME3KYSvIZj33OS+GLGXWjLLkomMD0oiY9Hi\nxUu45567iEa7AGgH/uAmOBc/vjyhwXVdnnYTNKeld8dxOP30pQXfN5lM0tXVSTwep7q6hkBAH0Er\nif62RERk2DiBIU5aDvroN24zmiT6xyaC76zHP7cGJ5C2Nnw8SWJ9B7HVLRm9CyLiiUQiLFlyGo8/\n/khv2d9I0uG6nI6fKU7me3S36/Ksm+A1MnsXjj32+Iwd2XNJJpO88soannjiMV59dW3G3ImpU6dz\n2mnv5pRTTqe2trYIr0xKSYFBRKQEnKAPf0Oo3M0ou0RrN27aPgjJtjiFrlvkui5uazz3we4ksef3\nEXupBf/0CE7Yh9uVJLGtM2dQ8FUH8FXrV14hEi3duLH+K1TJ6PHBD17A2rVrMjZQ3IDLBjfOFNdh\nOg4O8DYuW/tHdnw+Hx/96CUD3uP551dy771309zclPP4jh3buPvuO7nvvntYsuTdLFt2EeFw4T2Q\nMrz0r6eISAn4G0I0nDat3M0ou067l46/7e19nljfQeDw2oJWVUnu6sZtH2RVpG6XxIaOAatUza2n\n5tiJI34ll5GiZcV24s1d5W6GlFBtbR1XXXUNN9/8TVpa9mUcexuXt3OEhHTJZJIXXvgz5577gX7H\nXNdl+fLf8OCD9xfUllgsxpNPPsr69ev4whe+RENDw+AnybAbWt+wiIjIEIRmZu6s6u6LkdwRHfQ8\n13WJv9qaURacVk3k8PGF39yByDvGKyyI5HDIIVO5+uovEQjknws0kHvv/TWPPtp/AYHf//6BvGEh\nAOTrQ9i0aSPf/e536OzszFNDykmBQURESsZfHSA0rTqjrHvlHpIt+Xdzdl2X+CutJLdlfssdmddA\n9eHjGXfWTMILGnBCuX+FOSEf4cMaGHfWTKoXjldYEMnjd7+7n3g8/3uxRyMwPcdeDb/+9f+wYcNb\nvc+tfY377rsno44DHImPS50AX3SCfMEX4konyOmOn+yZC5s3b+RXv/rvA3glUmoakiQiIiUVnt9A\n9/a0YUNdSaJ/2EXg8DoCC2p6l1l1XZfkrm7ir/YPC/76EIFG77tJf22QmqMmUv2O8cR2dZLsiOPG\nXZyAg686QHByBMev78NEBrJr105WrXo+o2w2sBA/3alsEAam4dCYmgi9yU1yrxunO1XfdV3++Mff\nc/nl/wzAww//LuN6VcCFToDpWROpaxyHk/BzHD6Wu3E2pg2Beu65Zzn//I8wfvwQehOl5BQYRESk\npIKNEcILGuhal7bMacwl/vJ+4mv344wP4oR8uK3xnHMWnIBD7QmN/XoKHL+P0NTB92MQkf6eeuqx\njOcTgWVOkMAAPXKzHR/n4OeBtM3b/vrXv9DSso9oNMratWsy6n8gR1hIV+U4nE+An7oxev51SCaT\nPPPMk3zgA+cP+TVJ6egrGBERKbnqIydQNaeu/wEX3D0xkm9H84aFupOmEGioGoZWiowNiUSCZ555\nOqPsRMc/YFjosRAfE7Ku9eyzK3j22adx3b6egik4zMsxjClbyHF4l5O5dtrTTz+RcS0pP/UwiIhI\nyTmOQ807J+GvDdLx2l5IDP5hwN8QonbRZAJanlYGcccdP2HNmhfp7u4evLKQTCZ7N24DCAKHF/gd\nsuM4HIOfJ9N6GZYv/w1krax0jOMreP7QEfh4nETvTg979+7hiis+PabnH4VCIY455jg++clPl7sp\nQAUHBmPMBOB64EPAVKAZeAi4zlq7o4DzLwEuB44BQsBm4EHgRmvt7qy65wL/ApwA1AA7gEdSdTcV\n6zVJZdm5823eeON12tpacV2X6uoa5s9fwMyZs8rdNJERyXEcIoeNo2pOHdHNbXSt30+yLWvCpQOh\nqTWE59UTaAyP6Q8MUrg1a17stzyoFG4iDsEhvNcmZ/UcJJP9ewez6wwk7DiMc2FPWllX19heLamz\ns4M1a14sdzN6VWRgMMZEgKeAhcAPgFXAAuBfgaXGmOOttXsHOP9bwFeAF4BrgTbgZOBK4P2p8/en\n6n4G+D+ABW4EmoBjgc8BHzLGLFJoGDsSiQRr1rzIk08+xt/+tjZnnXnzDuWMM97Lu961mGBQ34yK\nZPOF/EQObSA8v55ke5xkVxw34Xqb3dUG8YUK3dpNRIphkN1O+ilkW7+hXnOo9WV4VWRgAL4AHAVc\nYa39UU+hMWYNsBy4Drg614mpnol/AzYCp1lrexYE/7kxphn4MnAZ8H1jjA+4CWgFllhrm1N1f2GM\nscCPU225qrgvT0ai3bubuf32/2Tz5o0D1lu//k3Wr3+TBx64l89//mpmzZo9PA0UqTCO4+CvDeKv\nPbB14EV6TJrU2NvD4OANsZH8XCC9b283Lh2uS3WBvQxb3MzI4EtdM31Q0lZcCu1v3++6tGSVBWEI\nfRSjR4y+/46NjY3lbEqGSg0MlwLtwE+zyh8AtgKXGGO+aK3NNUh2Ft7rfiEtLPRYgRcY5qSe1wOT\nUnWbc9Qlra6MYjt37uA737mRffvydlz109zcxM03f4OrrrqGBQtMCVsnIjK2BQJ9H2emBgJ8sG5c\nGVsz8rmuy53799Ka9D74J4G1JDmRwXv3Eq7Ly1l9DKdW1xJzXVZ2tveWrXETLMaHr4AQssbN7F+Y\n4PfzkfqxuazqA6372B6PA+D3j5yP6RW3SpIxph5vKNKL2R/4UwHhBbw9RubmucQGIIo3hCnbnNTj\nK6nr7QPeBmYbY7LHlmTUldGrra2V7373ltxhoaoRxh0J44+CyNR+h7u6Ornttv9g5863h6GlIiIi\ng3MchyOqMvdcft5N0FbAykTPkyRtVxVCOCwIVWFCVRlxowV4sYDBSy2uy6qsetltk/IbOdGlcD3j\nO7bmOb459TgPWJ990FrbYoz5JnCjMeZ24Ht4Q47eBfw7sBq4M+2Ua4A7gP8xxlyPN7n6CODW1L1u\nP5gX09iYY5lBGVGWL7+LXbt2ZhZWz4BJiyA8KbO8uwV2vwStb/YWtbe3cd99d/G1r31tGFor5RQM\nauy9jC7BoL8ifk/pvTd0C0Nh/tLZ0Tt3oAP4tRvnAgKMz9Er4LoufyHJiqzeAFNVRdDxJk0fGqrC\ndvd9l/u4m8AHvJPcKyY1uy73ujHSv/0N4nBYSMsow8h6/1ViYOj5L9eR53h7Vr1+rLU3GWN24n3Y\n/3zaoQeBS621XWl1f2mM2Qv8EliWVvc54Bxr7a4htl8qSGdnJ489lrm5DXWHwpTTINdmNKEGmPpu\nCNbBnpd6i1etWsXbb7/NlClTSttgERGRAkR8Po6qirA62rcaUTMu/+XGMK6PIx0fE3HoxmUjLi+5\nCbL72YM4HF0V6X3+znCEt7qjxFPPXeARN8GLJDkWH7NxCOLQjMvLboJ1uGT3aRwbjhAaYLM3KY9K\nDAwHzRjzOeA2vKVR78Jb+ehEvN6Eh4wx56SGI2GM+RDwP8Ba4L/wejaOwFtd6RFjzFnW2s3971KY\npqbWg3kpUmJPPfU4nZ1pS7v5w3DIktxhId3E46B9E0S9ReJc1+W++/4fy5ZdVMLWSrnFYlrnQ0aX\nWCxREb+n9N47MCdGqtmTiLM53jcFOgm8RpLX3IGHE/mAs2vrqPf39e6M9wd4b00df2xvzQgCzbg8\n5g7+dzQvGOL4cGTQemNFKd5/B9pjUYmBYX/qsSbP8dqsehmMMQYvLDxurT037dAfU6ss3Y8XBq5J\nrah0B96KSqdaa3tC8yPGmCeBl/CGJl14YC9FRrrnn1+ZWdCwEHwFvG0cB8YdATufybiWAoOIiIwU\nPsfh7Np6HmtvZUOs8E3vAsBZtfXMzLF0+NxQFWcCj7e3Dmmp1AWhKs6ortXeKyNUJQaGDXi9XDPy\nHO+Z47Auz/GleK/7vhzHHk5d+4zU8xOBBuBHaWEBAGvtamPM9rS6coBaW/ezfPlv2LFje7mb0s/6\n9W9mFtTlm0ufQ928jMCwZ89ubr75G2X/x3Dq1Gmcf/6F1NaOjHGRIiJSPgHH4ayaOl7r7uLlri72\n5diErYcPrxdgUaSa8QOs4DM/VMU4n59VXR1siHX3G3aUboLPzzHhCCZUVfbfj5JfxQUGa227MeZl\n4DhjTDh9voExxo+3AduWAYYJ9fRM5JqCX4W37G+4gLo95dqZ6yAtX/4bnnrq8XI3ozD+IXSV+oLg\nBMDty5pvvPF6CRo1NNa+BsCll/5DmVsiIiIjgc9xOKIqwjtCYbbFY7zeHWV3Ik530sXvQMTxMSsY\n4vCqMNW+wuYXTAwEOLu2nrZkgteiUbbEuulykySAKsdhoj/A4aEwUwMBBYUKUHGBIeWneMOKPgt8\nP638EmAycH1PgTFmIRC11m5IFfWMMfmIMeb2rL0almXVeR5vON+HjDHXZoWTpcAEvHkQMlYkOiFQ\nXVjdZCwjLIiIiIxkjuMwIxhiRo6hRgeq1ufnhEg1J0QK/N0pI1KlBoYfAx8DbjXGzAZW4U1Evhpv\ncvKtaXVfAyze3g1Ya1caY36DFw6eNcbcgzfp+QTgCmAn3u7OWGu3GGP+A29n6FXGmDuAbcDheLs7\ntwNfKekrHQPOO28ZjuOwffu2cjeln82bN9HZmbYgV+tGqJpY2MmtGzKeBgIB5s/Ptf3H8Jo2bTrn\nnbds8IoiIiIiVGhgsNbGjDFnATcAF+AtjboL+AlwvbU235KrPS7C26n5k3jhIARsB34GfNNa2/vJ\n1Vp7TWoy9OXAdUB16l4PADdaa8s/xqTC1dXV8/GPf6rczcjpyScf5Ze//HlfQcvrMOGYwSc+uy7s\n+1tG0XvfezYXXvixErRSREREpHQqMjAAWGv34/UoXD1IvX4D46y1CeAHqZ9C7nUnmZu5ySgQi3UT\nj8cJhyN5x08uXryEe+65i2g0NRot0Qm7VsIhp3orIeWzZzVEd2cUvfvd7y1W00VERESGTcUGBpGh\ncl2X119/lSeffJRXXllLV5e3v4LP52PGjFmceuq7OfnkJUTSxllGIhFOOeVUnnji0b4L7X/DCw6T\nToCqCZk3ibV6Oz3vfyOj+KijjmHy5ENK9tpERERESkWBQcaEv/71L9x33905l25NJpNs3ryRO++8\ng9/+9i5OO20p559/IVVV3tb0H/zgBbz88mqam5v6Tmrf4v2EJ0PkEMAH0Wbo6D8Po7q6mo9+9OOl\neWEiIiIiJaa9t2VUc12XBx+8nx/+8LsF7fMQjUZ59NGHueWWG9m/39v7r66unquuuob6+ob+J3Tt\ngr1rYe+anGGhqqqKK6/8IlOnTjvo1yIiIiJSDgoMMqo98shD3HffPfkrOLk72TZseIvvfvc7vXMX\npk6dzle/+g1mzJhZ8L0nTJjIl7/8NYw5fEhtFhERERlJNCRJRq0333yDe+75Vf8DtXNh3OEQmepN\nXI61e6sftbwGid6tNti0aQO/+tUvuOyyzwAwaVIjX/vaTbz00iruuOMnmcutppk1aw5Ll57JiSee\n3DusSURERKRSKTDIqPXww7/DddP25fMFYdpZUD01s2KwBiYdD+OPgu2PQWff0KWVK5/hvPOWMW7c\neMDbS+GEExbzxBOP9u6YPGlSI0uWnE5NTS3z5h3KnDlztWuliIiIjBoakiSj0u7dzaxe/WJm4SGn\n9w8L6fwhmP5eCNT2FiUSCVaseHLAe02cOIkPfOB83vOes5g7d57CgoiIiIwqCgwyKj3zzFOZvQuh\nCVA7e/ATfSEYf2RG0dNPP5F5LREREZExREOSRqFf/eoXbNmyqdzNKKutWzdnFjSYgTdaS1e/AJqe\nB7yQsHfvHr71resJBIK9VTZv3pTx5+9855sH22QZwMyZs7n44kvL3QwREZExSYFhFNqyZVPv+HpJ\nCU8svK6/CoL1EGvpLXrrrTfzVu/s7NB/bxERERm1NCRJxoYhDynSECQRERERUA/D6OcL4g+PK3cr\nhl0i2gKJ7r6Crp0DT3hOF++A2P6MIl9kIo7jw00mSHbvh2S8sGs5fnxV9Tg+vdWGKtG1D5KxcjdD\nRERkzNOnmFHOHx5H9ez3lLsZw6579+tEd63uK2ixMP5ocAroVGuxGU99oXpq5pxJsruNjk1PFB4W\nANwEye42qme9G39kCMOihI5Nj5PoaCp3M0RERMY8DUmSUSnYMDczHMRavc3ZBhNvh72vZF5r/KG4\niW46tjyNG8+xWVtoAjQcDuPeAeHJ/Y8nY3RuWUGyu22Ir0JERESk/NTDIKOSE6giUD+LeMvGvsJd\nz4Hjh/rDcq+Y1L0ftj8CyWjahfwEG+YQbXoFt7s1s35kGkxaBOHGzOtF98LuF6FtQ2+Rm4gS3bWa\nyIwlxXmBIiIiIsNEgUFGrdDEw4nv3wxuMlXiws5nYN+rXo9A9TTw+SG6D/a/Aa3ryZ7sHJrgLcca\na9mQefG6+TDl9NxDnKrGw9Sl0PwC7F3bWxxv3UYy1o4vWFPcFyoiIiJSQgoMMmr5qxoITzuJrm1/\nyjwQ3Q27nh38/NpphBqPJLZvfebkW38YDjl14PkQjgOT3gXtW6B7X6rQJbb3LaomHz30FyMiIiJS\nJprDIKNasH4m4eknFzbZOU2gbiaR6SfjOD7i+7M2wWswUMiqR44D447IKIplX0tERERkhFMPwygU\nj/et4pPo2kfHpsfL2JqRwVdVTzLWkbnUai6OHycQIRnvpHPL0wAkOndn1qmbV/iN6+bDrr4eDjfW\nTvvGx3AK3XV6DEt07ev7c2IIK1OJiIhIUSkwjELNzWlLUSZjWppyKNwEbqwNNzbAikb+6sKv5w95\nE63dRG9RsrP5IBo4NjU16f9hERGRctGQJJGhSnQVXjcZywgLIiIiIpVGPQyj0KRJjbS0pIZzjNGd\nnosp0bU3c7O2to3eSkiFaM1aXcnxaQO3AqXv9NzY2Fjm1oiIiIxdCgyjUCDQ99c6Vnd6LqbuPW8Q\n3fliX0HLazDhaG+o0UBc11vCNU1w/ALCh7yzBK0cfdJ3evb79U+ViIhIuWhIksgggg1zMsNBvAN2\n/dkLBAPZ+zJEM+crhMYfWvwGisig3KSLmxzkPSsiIjnpazuRQTj+EMGGOcT2vdVX2PKaN5dh0iII\nNWSeEGuHPS9By+sZxf6aqfhCdcPQYhFxE0m6t7XTtbGV+N4oJLyw4AR9BBsjhOfVE2gMa8UyEZEC\nKDCIFCDUeCTxtu248c6+wrYN3k9kGkQmA47Xo9C+lewdo/EFqTrk2OFsssiY5CZdOt/YR9ebLbjd\nyf7HY0m6t7fTvb0dX22Q6neMp2pGbRlaKiJSORQYRArgC0SIzDydzs1P4Gbv5dC53fvJx/ETmbEE\nf1VD/joictDceJLW53cS29k5eGUg2Raj7YVdJFq6ibxjvHobRETy0BwGkQJ5E8jfizOEYUVOIEz1\n7KUEag4pYctExE26tP55gLAwQBbotPvofH1f/goiImOcehhEhsBXVU/N3L8j3rqZ7r1vkszeBbq3\nXgPBcYcSbJiD4w8OcytFxp7O1/YS25UVFgIO/kNrCBxag9MQABeSu6Ik1rWT2NTZ7/zA+CpCU4aw\nMaOIyBihwCAyRI7PT7BhLsGGuSS69pLoaMJNRMF1cfwhfJGJ+COTNLxBZJi48SRdb7VklDnjg1Sd\nMQmnOm2FMwf8U8L4p4RJLowSfXI3pM1z6HxjnwKDiEgOCgwiB8EfHo8/XOAmbiJSEtEtbbjxtIUG\nQg5VSyfhRPLvleJrrCJ02gS6H+tb+jje3EV8fzeB+lApmysiUnE0h0FERCpa14b9Gc8Dh9UOGBZ6\n+KeE8U3ODAfRrGuJiIh6GEREiiYej/f9eV+UlhUDrJ4lReG6Lol9mSuX+RfUFHy+/9Aakrv6zu/a\n1Eq8pXuAM0a/+L5o758TifgANUVkrFBgEBEpkubmpr4ncZd4c1f5GjNWVfnw1RT+q803MWv4kf7e\nMjQ1NQ1eSURGPQ1JEhGR0cMdvMpB1RcRGYPUwyAiUiSTJjXS0pJazz/gEBhXVd4GjQGu65LY3TeE\nhu4kyf0xfPWFLWecbMoafqS/N29IUmoSeWNjY5lbIyIjgQKDiEiRBAJ9/6QGxlXRcNq0MrZm7Gh5\nahvxPWnj7te14zt+XEHnxt9sy3genltPzVETi9q+StOyYnvvsCy/Xx8TRERDkkREpMKF59ZnPI+v\nayfZNvhk3cTmTtzdsQGvJSIiCgwiIlLhQjNqcEJpv87iLt2PNZFsieU9J7G1k+6VezLKgodE8Ndq\nZ3YRkWzqaxQRkYrm+H1EDhtHxyt9AcBtSxB9cCf+2RH882vwjQ9CEhK7oiTWtZPcGe13nYgpbBiT\niMhYo8AgIiIVL7yggfi+KN1b2/sKXUhs7CSxsXPQ86uPmUhwUqSELRQRqVwakiQiIhXPcRxqF00m\nNLN2yOdWHz2RyPyGErRKRGR0UA+DiIiMCo7PoXZRI9FJYTrXtZBsyz+HASAwKUz1wvEEJ6tnQURk\nIBUbGIwxE4DrgQ8BU4Fm4CHgOmvtjgLOvwS4HDgGCAGbgQeBG621u7Pq+oDPA58BDgVagMeBr1pr\n1xfrNYmIyMFxHIfw3Hqq5tQHLPlnAAAgAElEQVQR29VJdGMr8b1R3FgSHPBV+Qk0RgjPrSfQEBr8\ngiIiUpmBwRgTAZ4CFgI/AFYBC4B/BZYaY4631u4d4PxvAV8BXgCuBdqAk4Ergfenzt+fdsrPgUtT\nj98BDgOuBs4wxhxlrW0u7isUEZGD4TgOoUOqCR1SXe6miIhUvIoMDMAXgKOAK6y1P+opNMasAZYD\n1+F9oO8n1TPxb8BG4DRrbc9SGT83xjQDXwYuA76fqv9+vLBwvbX2G2nXscDNwFLgnmK+OBERERGR\nkaJSJz1fCrQDP80qfwDYClxijHHynDsLLyi9kBYWeqxIPc5JK7sC2A/8r/SK1tr/sdbOsNYqLIiI\niIjIqFVxPQzGmHq8oUjPZH/gt9a6xpgXgPOBuUCu+QUbgCjeEKZsc1KPr6Tu5QfOAB6z1namykJA\nwlqbOPhXA42NdcW4TIZg0F/0a4qUUzDoL8l7pdj03pPRRu89kfIZSe+/SuxhmJ163Jrn+ObU47xc\nB621LcA3gXcaY243xsw3xkxODT36d2A1cGeq+lygClhnjLnYGPMaXtiIGmMeN8YcX4TXIyIiIiIy\nYlVcDwPQE7U68hxvz6rXj7X2JmPMTuB2vNWPejwIXGqt7Uo9n5B6XAp8GG9Y0nrgXcA1wApjzGJr\n7dohv4qUpqbWAz01r1isKJ0fIiNGLJYoyXul2PTek9FG7z2R8inF++9AeywqMTAcNGPM54DbgEeA\nu4Am4ES8EPCQMeYca+0+vOVWwVtK9Rhr7Zup5w8aY17H64m4Hi9MiIiIiIiMOpUYGHqWO63Jc7w2\nq14GY4zBCwuPW2vPTTv0x9QqS/fjLbV6Dd5yqwDPpoWFHncBPwHePaTWi4iIiIhUkEqcw7ABcIEZ\neY73zHFYl+f4UrygdF+OYw+nrn1G6vnG1GO/2VTWWhevZ6J+0BaLiIiIiFSoigsM1tp24GXgOGNM\nOP1YalWjk4Et1trNuc6nr2cinONYFeD0HEsNS3odOMIYk9EbY4wJ4u0wnW/ytYiIiIhIxau4wJDy\nU6Aa+GxW+SXAZLyhQgAYYxYaY+am1VmZevxIjr0almXVAW935ynA57LqfhYIAr8bcutFRERERCpE\nJc5hAPgx8DHgVmPMbGAVcATe7s5rgVvT6r4GWLy9G7DWrjTG/AYvHDxrjLkHb2jRCXibtO0Ebko7\n/zbgAuB7qeCxOlX3c8CWrLoiIiIiIqNKRfYwWGtjwFl4y6JeANwBfILUJGRrbb4lV3tcBFyJNwTp\nptT55wE/A45PH86UWmL1PXgh5LzUPT6cOudEa+2uIr0sEREREZERp1J7GLDW7sfrUbh6kHrZw45I\n7dL8g9RPIfdqA76U+hERERERGTMqsodBRERERESGhwKDiIiIiIjkpcAgIiIiIiJ5KTCIiIiIiEhe\nCgwiIiIiIpKXAoOIiIiIiOSlwCAiIiIiInkpMIiIiIiISF4KDCIiIiIiklfF7vQsIiIiIpVpdyLO\n69Eu9iYSdLsufseh2nGYHQoxP1iF33HK3URJo8AgIiIiIiXnui4bYt28HO1kRzyes86bsW7+5LRz\neFWYY6sihH0aDDMSKDCIiIiISEklXJcVHW283h0dtG6X6/JSVydvRKOcW1fPRL8+rpabYpuIiIiI\nlEzSdXmsvbWgsJCu3U1yf2sLexK5eyNk+CiyiYiIiEjJ/KWrg/Wx7n7ls3A40vExHoduYL2b5BWS\npMeKbtfl9237ubBuHFUanlQ2CgwiIiIiUhKdySSruzozyhqADzkBpjqZAWC+4+N01+UJN8Fqkr3l\nbckkr0S7OD5SPRxNlhwU1URERESkJF7v7kr76A8R4GIn2C8s9Ag5Dmc7fo7O+oj6arSLpOuWrqEy\nIAUGERERESk613X5W7Qro2yx46dhkCVTHcfhDMefMQymzU2yKcewJhkeGpIkIiIio0ZzIsEDrfvK\n3YxBJVyX1mSS+Cj+1twFYmnP/dCv5yCfiONwuOtjbVr/xCPtrQTaW4fcjoDjUO/z4auAvR2aE4ly\nNyEnBQYREREZNbpdl+151viX8joEh8gQPrTPcRzWpuWpJHAgfQzdrkvHCP0gXik0JElERERESm6o\n31IHGfk9AmOFehhERESkos2cObvcTRiyeDzO7t1NRKOjd1x+MpkgGu1bJHUPLq7r4hTYy9BM5nAt\nv99PKFQ15HZUVYWYNKkRf4VtADeS/r+urP9yIiIiIlkuvvjScjdBcujs7OBf/uVy4qkhYm3ABlzm\nFdBz4Loua93MYUQXXPAR/u7v3l+KpsogNCRJRERERIouEqlm0aITM8r+7CZwC5jo/QYue9Oe+/1+\nTjppSZFbKIVSYBABXDdBvKOJ2P4txFo2Em/dRrJ76CsxiIiISJ+lS8/MeL4Zl8cHCQ073CQPuZkT\n148//l00NIwrSRtlcBqSJGNaMtZObO9bxPa9hZuI9jvujzQSHH8ogfoZOI6/DC0UERGpXPPnL2D+\n/EN56603e8tWkWSH63ICfhbg4E/NadjturyY2uU5e02js846ZxhbLdkUGGRMct0k0V0vE9tjgfzf\nciQ6m0h0NuHsqiY8/SQC1Y3D10gREZEK5zgO//iPV3DTTdfT2rq/t3wbLtvcOFVAvevQjUtLnmtc\ncMFHmDfv0GFpr+SmIUky5rhukq5tK4nteZ2BwkLGOfEOOjc/Sbx1W2kbJyIiMspMnnwIV1/9Jerr\n6/sdiwJNA4SFc875e973vg+UtH0yOAUGGVNc1yW64y/EW7f2P+gLQs1MqJsHVZNynJykc9tKEh3N\npW+oiIjIKDJ79lyuvfbrLFz4joLq19bWcdlln2HZsosKXoZVSkdDkmRMSbTvINayIbPQH4GJx0H9\noV5o6BHdC3vXwv43+srcBJ3b/0zN/PfhOMrbIkPlui7x3V3Ed0dJxrxRyr6gn8DEMIGJVfpgIDKK\nTZ58CNdc81U2b97EU089xnPPPZuxTwN4cx6WLj2TRYtOJBgM5rmSDDcFBhlTuvesyywI1sGM90Ow\npn/lqvEw5TQIN8KuP/UWu7E2Eu1vE6idVuLWiowebixJdHMrXev3k2iN5azjrwsSnldP1aw6nKAC\nuchoNWvWbC699B+4+OJPsGfPbjo7OwgEgjQ0NFBbW1fu5kkOCgwyZiS7W0m078gsnHJ67rCQbtzh\n0LkDWtf3FnXvfVOBQaRA8b1RWp97m2RX9ronmRKtMdrX7KbzjX3UnTSFwLih7+gqIpUjEAgwefIh\n5W6GFEBf4ciYEWvZmFkQboTIlMJOHndkxtNE23aS8a7iNExkFIvt7qJlxfZBw0K6ZGeClqe3E9ut\n95iIyEigHoZRLtG1j45Nj5e7GQNy3SRurB03WfgHigOSzNwEhrr5hZ8bboRgPcT6loRrf/N3UIHz\nGByfHydYM+LnYCS69pW7CXKQEm0xWp97GxJZq5E54JsexjcpBECyuZvktq7MRcsSLq3PvU3DGdPx\n12gcs4hIOSkwjHbJGImOpnK3YmQK1hZe13G8+mmBATfh/VQYNxnDVe+IDIOOv+3B7U5mlPkPrSF4\ndD1OdeZGiG5HgtjL+0m82d5X1p2k45U91J2oIQsiIuU0sr9iFCmlRPcQ6/ffCVpEckt0xune3p5R\nFjiqjtDi8f3CAoBT7Se0eDyBIzMnPHZvbyfZGe9XX0REho96GEahmTNnl7sJQxKPx9m9u4lodIgf\n4Ieou7ubRCLtg0f7Jmg4rLCTY20Q3ZNRVFUVxuervMxdVRVi0qRG/P7KeftX2v/TAtEN+zOGGDkN\nAQJH99+0KVvgmHoSmztx96feqy50bWyl+vDxJWqpiIgMpnI+MUjBLr740nI3YUR6443Xufnmb/QV\ntG32gkAhQ5P2vUb6p5+ZM2dzww3f0prxkleipZuWFdvL3YxBuUmXZEccN54cvPJQxDPnLQQOqy3o\n/eI4DgFTS+wvfXNYOl/bS+e6yp/T4gR8+KoDOL6R/e9GoqW0X96ISOVRYJAxY8ECw/TpM9m2bUuq\nxIWdz8D0sweevNzVBPteySg644z3KizIgNxYkniz5or08M+MDKluemAA+gWQSuTGEySGsFqUiMhI\nUXnjKUQOkOM4LF16ZmZhxzbY+gfozvHtpZuE/etg60MZk5sjkQiLF59S4taKjDJVQ/h1M5S6IiJS\ncuphkDFlyZLTWbHiSTZt2tBX2LkdNv4WqqdB9QzwhSDWAq1vQbyj3zUuvPBjhMPhYWy1VIpKnGtR\nqjlEnZ2Z7x23M4FTW9ivHLez/7fwkUh1UdpVTpo/JCKVynHdyu/mrWRNTa36CxhmLS37+Pa3v86u\nXTuHfO773vcBPvzhj5agVSKjyw03XMvmzRt7nweOrSd45OCTngFir+wnvrpvCeNZs+Zwww3fKnYT\nRUTGnMbGugMaT61+XxlzGhrG8ZWv3MDcuYVv3OY4DsuWXcQFF3ykhC0TGT1OOilz2F7ijXbc7A3c\ncnATLok3MpdjPfnkJUVtm4iIDE3F9jAYYyYA1wMfAqYCzcBDwHXW2h0FnH8JcDlwDBACNgMPAjda\na3cPcJ4DPAmcDlxmrb3jYF6HehjKJ5FI8MILz/HEE4/y1lvrctapqqpi8eJTeM97zmbGjJnD3EKR\nytXW1sYXv3gFsVist8w/v5rg4vF5FwxwXZfYn/eSeKtvOFMoFOI//uMH1NQMYaNFERHJ6UB7GCpn\nIGUaY0wEeApYCPwAWAUsAP4VWGqMOd5au3eA878FfAV4AbgWaANOBq4E3p86f3+e0z+NFxakwvn9\nfk46aQknnbSETZs2smbNi7S0tBCLxaiujjBt2gwWLTqR6urKHzstMtxqa2s56aQlrFjxZG9Z4q0O\n3I6Et9PzpFBvcHBdF7e5m9jL+0nuyNwgcfHiUxQWRETKrCIDA/AF4CjgCmvtj3oKjTFrgOXAdcDV\nuU5M9Uz8G7AROM1a2/Pb6efGmGbgy8BlwPdznDsFuAV4CXhnsV6MlN/s2XOYPXtOuZshMqqcf/6F\nvPrqKzQ3N/WWJXdEie5owhkXxDcx6JXtjuHui/U7f9KkRs4//8Jha6+IiORWqXMYLgXagZ9mlT8A\nbAUuSQ0dymUWXlB6IS0s9FiRepyT59zbgSSg2XciIoOor2/gqquuoaFhXL9j7r4Yibc6vF6HHGGh\noWEcV131JerrG4ajqSIiMoCKCwzGmHq8oUgvZn/gt9a6eMOMGoG5eS6xAYjiDWHKNif1+Er2AWPM\nB4APA9fgzZcQEZFBTJ06na9+9RtD6sGbPXsuX/3qN5g6dVrpGiYiIgWrxCFJPYtCb81zfHPqcR6w\nPvugtbbFGPNN4EZjzO3A94BW4F3AvwOrgTvTzzHG1AE/xOuB+BlFnMPQ2FhXrEuJiIxIjY113Hbb\n93nxxRd56KGHWLVqFdkLbjiOwwknnMA555zDcccdh89Xcd9niYiMWpUYGHo+YfffUcvTnlWvH2vt\nTcaYnXhDjD6fduhB4FJrbVfWKd8GJgNnWmtdY8zQWy0iMob5fD4WLVrEokWLaGpqwlpLa2srAHV1\ndRhjaGxsLHMrRUQkl0oMDAfNGPM54DbgEeAuoAk4EW+40UPGmHOstftSdU8CPoe33OrrxW5LU1Nr\nsS8pIjLChTHmmH6l+vdQRKS0DnRkSyUGhp7lTmvyHK/NqpfBeN0DtwGPW2vPTTv0x9QqS/fjLbV6\njTEmBPwEeBNNdBYRERGRMagSA8MGwAVm5DneM8ch905csBTvdd+X49jDqWufkXr+JeBw4CKgMW0o\nUk+/+XhjzAxgj7U23xApEREREZGKVXGzyqy17cDLwHHGmHD6MWOMH28Dti3W2s25zqevZyKc41gV\n4KQde0/q+a+BLWk/96SO/2fquRYKFxEREZFRqeICQ8pPgWrgs1nll+BNTv5JT4ExZqExJn2J1ZWp\nx4/k2KthWVadrwB/n+Pn2tTx76WeP3bAr0REREREZASrxCFJAD8GPgbcaoyZDawCjsDb3XktcGta\n3dcAi7d3A9balcaY3+CFg2eNMffgTXo+AbgC2AnclKr7XK6bG2PaUn9cY619sLgvTURERERk5KjI\nHgZrbQw4C29Z1AuAO4BP4PUsvLuA+QQXAVfiDUG6KXX+eXh7LBw/wHAmEREREZExxcnePEeGV1NT\nq/4CRERERKTkGhvrsofjF6QiexhERERERGR4KDCIiIiIiEheCgwiIiIiIpKXAoOIiIiIiOSlwCAi\nIiIiInkVbR8GY8xfgP8G7rLW7i7WdUVEREREpHyKtqyqMSYJuEAceBj4JfA7a213UW4wSmlZVRER\nEREZDiNhWdXFwPfxdkr+AHAPsMMY87+NMScX8T4iIiIiIjJMSrJxmzHmFOAjeLswT8XredgA/AL4\npbV2Q9FvWqHUwyAiIiIiw+FAexhKutOzMcYBTgcuBj4MNKQO/Qn4Od58h66SNaACKDCIiIiIyHAY\nkYGhRyo4nIs3ZGluqtgF9gE/BL5tre0seUNGIAUGERERERkOIzIwGGOOBz4JLAMaAQdoAe4G/gb8\nE2BSf36PtXZXyRozQikwiIiIiMhwONDAULRlVXsYYyYDHwc+ARyBFxKSwGN4w5CWW2ujqeq3G2Ou\nBW7E6324qNjtERERERGRA1fMfRjOx+tNODt1XQdYB9wB/MJauy3Xedbabxlj3oU3ZElEREREREaQ\nYvYw/Db1uB9vSdU7rLUrCzz3OeD9RWyLiIiIiIgUQTEDw+N4vQn3HcAE5ruAZ4rYFhERERERKYKi\nT3o2xlQB4621b2eVHwW8OVZXQ8pHk55FREREZDiMhJ2eMcZcCLwN/EOOw9/A2/l5WTHvKSIiIiIi\npVO0wJDa3fnXQBWwN0eV51OPdxljlhbrviIiIiIiUjrF7GG4AWgGjrTW/ij7oLX2ZuBoYDfw5SLe\nV0RERERESqSYgeFE4JfW2vX5KlhrNwN3puqKiIiIiMgIV8zA4MPrPRjMXsBfxPuKiIiIiEiJFDMw\nrAMGnJtgjPHh7beQtxdCRERERERGjmIGhl8CS40xPzPGvCP9gDEmaIw5C3gIWAT8qoj3FRERERGR\nEinaPgzGGD/wIHA24AIxoAVv1aS6nvsBTwFnW2tjRblxhdM+DCIiIiIyHMq+D4O1NgG8D/hnYC3e\nLtKNQD2QAFYDXwDOUlgQEREREakMRd/puYcxJgRMApLAboWE3NTDICIiIiLD4UB7GEoWGPIxxlwD\nfNRae9yw3niEUmAQERERkeFwoIEhUOyGGGPqgMOBcI7D44GLAFPs+4qIiIiISPEVNTAYY27Gm6cQ\nHKCaAzxfzPuKiIiIiEhpFG3SszHms8A1eGFhE7AGLxysAyzeyklvA/8JXFis+4qIiIiISOkUcx+G\nT+Pt4vxOa+084PxU+TXW2ncAhwFvAQlr7ZYi3ldEREREREqkmIHhcOAX1tqXU88zJvNaa9cDFwCf\nMMZ8qoj3FRERERGREilmYAgCO9Oe9yyjGukpsNY2AXcD/1TE+4qIiIiISIkUMzDsInP1o+bU4/wc\n9Q4r4n1FRERERKREihkYngEuMsZcZYwZZ63tBrYClxljxqfVew/QXsT7ioiIiIhIiRQzMNwIxIFb\ngVNSZb/C62F4xRhzrzHmb8DpwLNFvK+IiIiIiJRI0QKDtfZVvKDwS2BDqvgG4ElgKnAe3sRoC3yx\nWPcVEREREZHScVzXHbzWQTLGvAuYC2wD/mytjZf8phWiqam19H8BIiIiIjLmNTbWOQdyXtECgzHm\nIuA1a+3qolxwjFBgEBEREZHhcKCBoZhzGP4LOLuI1xMRERERkTIrZmBYCZxUxOuJiIiIiEiZFXNI\n0lTgfwMJ4OfAS8Ce1PN+UsuujnkakiQiIiIiw+FAhyQFitiGv6YexwMfGqSue7D3NsZMAK5P3Wsq\n3kZxDwHXWWt3FHD+JcDlwDFACNgMPAjcaK3dnVX3KOAbeEvC1gI7gIeBr1lrdx3M6xARERERGcmK\nOSRpSuqnCnAG+Tmo+xpjIsBTwOeAe4FPAv8H+Ajwp6yN4nKd/y285V+DwLV4weEp4Ergz8aY+rS6\npwMvAicAtwD/CDwOfAZYaYypPZjXIiIiIiIykhWth8FaW8zwMZgvAEcBV1hrf9RTaIxZAywHrgOu\nznViqmfi34CNwGnW2mjq0M+NMc3Al4HLgO+nyv8v0AWcYq3dlCr7b2NMS6odlwK9bRARERERGU2G\n80N+MV0KtAM/zSp/ANgKXGKMyTdGaxZeUHohLSz0WJF6nANgjKnD25X6f6WFhR4PpR6PHnLrRURE\nREQqRNF6GIwxoaHUP9BJz6nhQguBZ7I/8FtrXWPMC8D5eBvFrc9xiQ1AFFiQ49ic1OMrqeu1Av+Q\npykNqcf9Q2m/iIiIiEglKeak584h1D2YSc+zU49b8xzfnHqcR47AYK1tMcZ8E7jRGHM78D2gFXgX\n8O/AauDOAtpxOd7ruKvwpvfX2Fh3MKeLiIiIiJRUMYckDTbR2QGSeB/otxzEfXo+YXfkOd6eVa8f\na+1NeJOXPw28CewEfoe3FOxSa23XQA0wxtwIvAf4gbX2pcKbLiIiIiJSWYZl0rMxZjJwPPA1vOE+\nnynWfQ+EMeZzwG3AI3g9BE3AicA1wEPGmHOstftynOcDbgf+CW++RM6J1UPR1NR6sJcQERERERnU\ngY5sKeaQpLxSexU8bIxZgfct/peAmw/wcj1zBmryHK/NqpfBGGPwwsLj1tpz0w79MbXK0v14S61e\nk3VeDV64+Hu8jek+Y62NH9ArEBERERGpEMO6SpK1th3vA/mnDuIyG/DmDszIc7xnjsO6PMeX4gWl\n+3Icezh17TPSC1Nh4RG8sHCdtfZTCgsiIiIiMhaUY1nVKDDzQE9OhY6XgeOMMeH0Y8YYP3AysMVa\nuznX+fT1TIRzHOvZdK73mDEmgLc53EnAp621Nx5o20VEREREKs2wBobUDs0fpG9i8oH6KVANfDar\n/BJgMvCTtHsuNMbMTauzMvX4kRx7NSzLqgPeyklnA1+01mbv+yAiIiIiMqoVcx+Gnw1SZRxwGjAe\n7xv7g/Fj4GPArcaY2cAq4Ai8SchrgVvT6r4GWLy9G7DWrjTG/AYvHDxrjLkHb9LzCcAVeCsm3ZR6\nTYfgzbfYBWw1xnw4R1varbUPH+TrEREREREZkYo56fmTBdZbC1x1MDey1saMMWcBNwAXAJ/H+1D/\nE+B6a22+JVd7XIS3q/Mn8cJBCNgO/Az4prV2W6re4UAk9XNPnmttom/DNxERERGRUcVxXbcoFzLG\nfGKAwy7QBay31q4qyg1Hiaam1uL8BYiIiIiIDKCxsS57OH5BihYY5MAoMIiIiIjIcDjQwFD0Sc/G\nmMXGmBNylF9kjFlS7PuJiIiIiEjpFC0wGGMcY8yPgD8B5+aociHwtDHmB8W6p4iIiIiIlFYxexg+\nDlwOvAr8Ocfxn+CtZvQ5Y0z2cqgiIiIiIjICFTMwXA38DTjOWvuH7IPW2t8Dp6TqKDCIiIiIiFSA\nYgYGAyy31sbyVbDWxoH7Se2JICIiIiIiI1sxA0NXgfWCQLSI9xURERERkRIpZmB4EVhmjKnKV8EY\nMwlvh+a1RbyviIiIiIiUSDF3er4NWA781RjzQ2ANsBeoAhqBM4BPAFOAfy3ifUVEREREpESKunGb\nMeZa4Ovk7rlw8HZ8/ra19qtFu2mF08ZtIiIiIjIcRsxOz8aYo4FPAYuAyUAS2Im3pOovrLVrinrD\nCqfAICIiIiLDYcQEBhkaBQYRERERGQ4HGhiKOekZAGPMYmPMCTnKLzLGLCn2/UREREREpHSKFhiM\nMY4x5kfAn4Bzc1S5EHjaGPODYt1TRERERERKq5g9DB8HLgdeBf6c4/hP8OYxfM4Yo52eRUREREQq\nQDEDw9XA34DjrLV/yD5orf09cEqqjgKDiIiIiEgFKGZgMMBya20sXwVrbRy4H1hYxPuKiIiIiEiJ\nFDMwdBVYLwhEi3hfEREREREpkWIGhheBZcaYqnwVjDGTgI8Ba4t4XxERERERKZFAEa91G7Ac+Ksx\n5ofAGmAvUAU0AmcAnwCmAP9axPuKiIiIiEiJFHXjNmPMtcDXyd1z4QAu8C1r7XVFu2mF08ZtIiIi\nIjIcRsxOz8aYo4FPAYuAyUAS2Im3pOovgGagzlr7elFvXKEUGERERERkOIyYwDAYY8x1wGestTOH\n9cYjlAKDiIiIiAyHAw0MxZzDAIAx5u+Ao4FwjsPj8TZ4yzsxWkRERERERo6iBQZjTC3wR2DxIFUd\n4NfFuq+IiIiIiJROMXsYrgNOArYCj+Hty3A5cB+wC3gPUAP8M97mbSIiIiIiMsIVcx+GDwGvA4dZ\naz8FfCdV/gtr7T8BR+AFhauAUBHvKyIiIiIiJVLMwDCb/9/efYfbUZWLH/+ek0B6qAFDEAIibxRB\nBJQqJiDqRQUFAQsiAldAQBG4ioUigg2UauECgqIXBZUq/AQhRYogSheWIIReEkggBUjbvz/WbLLP\nzp7Tcs7J2cn38zx5JnvNmpm158yemXdWGbg8pVT/xucWgJTSAuDLwKrAt3pwu5IkSZJ6SU8GDIuA\nV2s+V/8/vJqQUloIXAns3YPblSRJktRLejJgeALYoebzdPKL2raoy7cAGNOD25UkSZLUS3oyYLgG\n2CUiroiIjVNKi4AHgAMjYluAiBgNfBp4rge3K0mSJKmX9GTAcArwMPBRcn8GgLOAkcDNEfEi8CTw\nFvLISZIkSZL6uR4LGFJKM8jNjw4E/lWknQ+cCMwmv7RtAXAhcHxPbVeSJElS72mpVCq9vpGIGACs\nCUwrmiqpMG3arN7/A0iSJGmFN2rUiJbuLNcnAYPKGTBIkiSpL3Q3YOjJPgySJEmSljMGDJIkSZJK\nGTBIkiRJKmXAIEmSJKmUAYMkSZKkUgYMkiRJkkoZMEiSJEkqZcAgSZIkqdTAZV2A7oqI1YETgI8B\no4HpwLXAcSmlZzux/I6sb0UAACAASURBVL7AIcA7gZWBJ4BrgJNTSi/W5X07cBLwPmAk8Djwa+D7\nKaV5PfWdJEmSpP6mKWsYImIIMAk4FPgDsD9wLrAPcEtErNbB8t8FLgZWAr5BDhwmAUcAf4uIkTV5\nNwFuA3YATgMOACYDJwKX9tiXkiRJkvqhZq1hOBLYFDgspfTTamJE3ANcDhwHHNVowaJm4n+AqcCO\nKaXXi1kXRsR04Fjg88CZRfqPgeHADiml+4q030TEHODLEbFbSumqnvxykiRJUn/RlDUMwH7AHOCC\nuvQrgaeAfSOipWTZ9ciB0h01wULVlGI6FiAiRgO7ADfVBAtV5xTTz3a59JIkSVKTaLoahqK50Djg\nr/U3/CmlSkTcAewBbAA82mAVjwGvA29tMG9sMb2/mG4FtJCbJLWRUnokIl4Ctu7G13jDqFEjlmZx\nSZIkqVc1Yw3D+sX0qZL5TxTTDRvNTCm9DHwHeFdEnB0Rb4mItSLiI8A3gbuB3xTZx3ZiW2+OiKYL\nvCRJkqTOaMYb3eoj+bkl8+fU5VtCSumUiHgeOBs4vGbWNcB+KaXXurGtGe0Vusy0abO6s5gkSZLU\nJd1t2dKMNQxLLSIOBX4G3ETug/Ah8hCtE4BrI2LVZVg8SZIkqd9oxhqGV4rpsJL5w+vytRERAZwF\n3JhS+nDNrD8XoyxdQR5q9atd2JbVBJIkSVouNWMNw2NABVi3ZH61j8PDJfN3IgdKf2ww77pi3ROK\nz9VO0+1t67GU0oL2CixJkiQ1q6YLGFJKc4B7gS0iYnDtvIgYAGwHPJlSeqLR8iyuLRjcYN4g8qhI\n1Xl3AAuA7eszRsQ7gFWBm7v6HSRJkqRm0XQBQ+ECYChwcF36vsBawPnVhIgYFxEb1OS5tZju0+Bd\nDXvV5kkpTQeuAsZHxLvq8h5dTM9HkiRJWk61VCqVZV2GLouIlYC/AluSRzq6E9iE/Hbnh4FtUkpz\ni7wVIKWUxtUsfyk5OLgVuBSYBrwbOAx4CXhPtYYiIjYEbic3VToNeIbcSfozwAUppYOW5rtMmzar\n+f4AkiRJajqjRo0oe7Fxu5qyhiGlNB/4ADlY2BO4CPgc+Wn/+Gqw0I5PAUeQmyCdUiz/ceAXwJa1\nzZlSSo+SmzlNIneEvgDYAjiGJWs4JEmSpOVKU9YwLE+sYZAkSVJfWKFqGCRJkiT1DQMGSZIkSaUM\nGCRJkiSVMmCQJEmSVMqAQZIkSVIpAwZJkiRJpQwYJEmSJJUyYJAkSZJUyoBBkiRJUikDBkmSJEml\nDBgkSZIklTJgkCRJklTKgEGSJElSKQMGSZIkSaUMGCRJkiSVMmCQJEmSVMqAQZIkSVIpAwZJkiRJ\npQYu6wJIzWj27NnMmTOblpYWhg8fwdChQ5d1kSRJknqFAYPUSbNnz+bmmyczefKNPP/8c23mrbvu\nekyYsDPbbLMDQ4YMWUYllCRJ6nktlUplWZdhhTZt2iz/AP3c/PnzueyyS5g8+Ubmz5/fbt5Bgwbz\ngQ/8F7vvvietrbb4kyRJ/ceoUSNaurOcAcMyZsDQv82dO5ezzjqNf//7oS4tt/nmW3LooUew0kor\n91LJJEmSuqa7AYOPQKUS8+fP55xzflweLAwcDgOHNZx1993/4LzzfsqiRYt6sYSSJEm9zz4MUomr\nr76chx76V9vEAUNgtXfAyI1hYNFXYf4cePkhmPkALJr3RtY777yDiRNvYOedP9iHpZYkSepZ1jBI\nDbz++utMnHhD28TBo2DsnrD6OxcHCwArDYM1t4T194SVV22zyJ//fK21DJIkqakZMEgN3HHHbcyZ\nM2dxQuvKMOaDMGBw+UIrDYN1PgAti39W06dP4/777+3FkkqSJPUuAwapgb/+dVLbhFWi/WChauWR\nMOItbZKmTJnYcwWTJEnqYwYMUgNPPDG1bcIq4zq/8MiN21+XJElSEzFgkOosWLCAefPm1aS0wEoj\nO7+CQau1+Th37pySjJIkSf2fAYNUZ8kXrlWKf520aGGbjwMGOBiZJElqXgYMUp3W1laGDx/eNnHu\ns51fwavPtPk4fPiIHiiVJEnSsmHAIDXw9rdv2jbh5Qc7v/DMtnk32eQdPVAiSZKkZcOAQWpgwoT3\nt02YPbVztQyzHoPXXmh/XZIkSU3EgEFqYOONxzFmzLptE5+5HmY/DpUG/RkqFXjlYXhuUpvkt71t\nE0aPHtN7BZUkSeplBgxSAy0tLeyxx95tExfNh2dugCeuzM2OXpsGr74AM+6Hx/8Az02GyuIOz62t\nrey++559XHJJkqSe1VJp9LRUfWbatFn+Afqxq6++gssvv7Rby+6//3+z444TerhEkiRJ3TNq1IiW\n7ixnDYPUjo98ZHf23vvTXVpmwIABfP7zXzBYkCRJywVrGJYxaxiaQ0oPct11V3PfffdQ9ptpbW1l\niy22Ytddd2Ps2A37uISSJEnt624NgwHDMmbA0FymTXuBKVMm8uijjzBnzmygheHDh7PxxuN473sn\nsNpqq3W4DkmSVjRz5szmllv+yp133s5LL73I66+/zuDBgxk1ai222WZ7tt56OwYNGrSsi7ncM2Bo\nUgYMkiRpeTVz5gyuuOL3/O1vtzBv3rzSfEOGDOW97x3Pbrt9nKFDh/VhCVcsBgxNyoBBkiQtj554\nYipnnHEqM2fO6PQyo0evw1e+8jXWXHNUL5ZsxWWnZ0mSJPWae++9m3vvvbtTeZ999mlOPfWULgUL\nebln+MEPvsPLL8/sThHVSwYu6wJ0V0SsDpwAfAwYDUwHrgWOSymVvpI3IvYHLuxg9ZNTSuNrlvkw\n8GXg3cAw4FngeuDklNLj3f8WkiRJ/d/ChQv53e9+DbSwySabMmDAgNK88+bN48wzT2POnDlt0kcA\n72oZwMa0MgSYTYUHK4u4h0W8WpPvxRen85OfnMGxxx5Pa6vPtvuDpgwYImIIMAkYB5wD3Am8FTgG\n2CkitkwplYW0E4G9SuatC5wOPFCzrS8A5wIJOBmYBmwOHAp8LCK2MmiQJEnLs5tuuoFnn30GgIkT\n/8L73//B0ry3334rL7zwfJu0LWhl55YBDGhZ3CJmGC2s3dLKdpUK11YW8hCL3pj3yCP/5sEHH2CT\nTTbt4W+i7mjKgAE4EtgUOCyl9NNqYkTcA1wOHAcc1WjB4ua+4Q1+RFwBvAgcX3xuBU4BZgE7pJSm\nF1l/FREJ+HlRlq/0wHeSJEnqd2bPns1VV/3xjc9XXvkHttlme4YPH75E3kqlwk03Xd8m7W20skvL\nAFpaGjefX7mlhd0YwJxKhSdZ3LVz4sS/GDD0E81az7MfMAe4oC79SuApYN+I6FKnjoj4OLA78LWU\n0otF8khgTeDBmmChakoxHduV7UiSJDWTK6/8fTGUeDZnzmyuvPIPDfNOnfoojz8+tU3a+9oJFqpa\nW1rYsaVtM6e77rqTGTNe6l6h1aOaLmCIiJHkpkj/TCm9XjsvpVQB7gBGARt0YZ2DgDOLZX9Rs76Z\nwHPA+hGxct1iY4vp/V38CpIkSU3hmWeeZtKkG5dInzTpLzz77NNLpKf0UJvPG9DCqh0EC1Xr0sIa\nNZ8rlQqPPPLvLpVXvaMZmyStX0yfKpn/RDHdEHi0k+v8b+DNwGeLoKPWV4GLgF9HxAnkztWbAKcV\n2zq7k9toaNSoEUuzuCRJUq8555xLWLhw4RLpCxcu5I9//C0nnnhim/RFi9o8y2VMS+efTbe0tDCm\n0sqLNX0ZYL73Sv1A09UwkDvZA8wtmT+nLl+7itqFY4EpKaXJ9fNTSheTmyrtAvwLeIHccfpl4L0p\npRc6X3RJkqTlV/37vbp6o1mf3/eF9Q/NWMPQ0/YHxgBHNJoZER8Dfg3cB5xHrtnYBPgGcH1EfCCl\n9ESjZTtj2rRZ3V1UkiSpV+2xx6e45557lqhlGDBgAHvs8ckl7mNaW9u24H6usghayodgrfccbQOE\nRYsGeq/Ug7pbW9OMAcMrxbTsveHD6/J15CDyyEjX1M8o3vVwETCVXJuwoJh1fURMBO4iN03au5Pb\nkiRJahrrrDOG8eN35sYb2458NH78+xk9eswS+TfY4C1tPj9ChdmVCsM70Y/h+cqiJQKGDTd8S0lu\n9aVmbJL0GFAhvzOhkWofh4c7WlFEjAW2Av6UUprfIMvWwCrAVTXBAgAppbuBZ4AJnSu2JElS89l9\n908wbNjiIVSHDRvO7rvv2TDvxhuPY+21R7/xeRFwW2XJPhD1KpUKN9fle/vb38Faa63dvUKrRzVd\nwJBSmgPcC2wREYNr50XEAGA74MlONhOqvnXkppL51VqMwSXzB7czT5IkqekNHz6c3Xbb443Pu+++\nZ8N3MAC0trYyYcL726T9g0XcXllY2h+hUqlwU2UhD9fVLkyYsMtSllw9pekChsIFwFDg4Lr0fYG1\ngPOrCRExLiLKhljdspiWDY16Ozk4/liD4GQnYHXg1q4VXZIkqbnstNMujB69DqNHj1kiIKi3ww7v\nY+TIkW3SJlYW8qvKAu6vLGR+ETi8VqlwV2Uh51fm8/c2IyPB6NFj2HzzLXr2S6jbmrEPA+Q3LH8G\nOC0i1gfuJHdEPorcOfm0mrwPAon87oZ6GxfTqY02klJ6MiJ+BPwPcGdEXAQ8DbyN/HbnOcDXl/K7\nSJIk9WsDBgxgn332feP/7Rk6dCiHH34Up556CvPnL27x/SwVrqks5BoWMrACC0qWHzZsOEcccVSH\n21HfacoahqK/wQfI70DYk9wx+XPkmoXxKaWyIVfrrVZMS7vfp5S+Sq65mAEcB/wKOJD8VumtUkr/\n7MZXkCRJaiqbbbY5m222eafybrTRxnzpS8cwePCQhvPLgoVVVlmVY475Om960+iSHFoWWhzfdtma\nNm2WfwBJkrRcevrpp/jtby/mgQfuazdfS0sLW2zxbj75yX1ZY401+6h0K55Ro0Z07rXbdQwYljED\nBkmStLx77rlnmTTpL/z977czc+YMKpUKLS0trLHGmmy77Q687307sfrqayzrYi73DBialAGDJEla\nkSxatIh58+ax8sor09ralK3jm1Z3A4Zm7fQsSZKkJtTa2srgwY5K30wM6yRJkiSVMmCQJEmSVMqA\nQZIkSVIpAwZJkiRJpQwYJEmSJJUyYJAkSZJUyoBBkiRJUikDBkmSJEmlDBgkSZIklTJgkCRJklTK\ngEGSJElSKQMGSZIkSaUMGCRJkiSVMmCQJEmSVMqAQZIkSVIpAwZJkiRJpQwYJEmSJJUyYJAkSZJU\nyoBBkiRJUikDBkmSJEmlDBgkSZIklTJgkCRJklTKgEGSJElSKQMGSZIkSaUMGCRJkiSVMmCQJEmS\nVMqAQZIkSVIpAwZJkiRJpQwYJEmSJJUyYJAkSZJUyoBBkiRJUikDBkmSJEmlDBgkSZIklTJgkCRJ\nklTKgEGSJElSKQMGSZIkSaUMGCRJkiSVMmCQJEmSVMqAQZIkSVIpAwZJkiRJpQYu6wJ0V0SsDpwA\nfAwYDUwHrgWOSyk9285y+wMXdrD6ySml8TXLtAKHA18ANgJeBm4EvpVSerT730KSJEnq35oyYIiI\nIcAkYBxwDnAn8FbgGGCniNgypTSjZPGJwF4l89YFTgceqEu/ENivmP4A2Bg4CpgQEZumlKZ3/9tI\nkiRJ/VdTBgzAkcCmwGEppZ9WEyPiHuBy4DjyDf0SUkqPA483mhcRVwAvAsfXpH2EHCyckFI6qSY9\nAd8HdgIuXcrvI0mSJPVLLZVKZVmXocsi4kHgzcAaKaXXa9JbgCeAQcDaKaVOf7mI+DjwR+CglNIF\nNenXAdsBb0opvdpDX+EN06bNar4/gCRJkprOqFEjWrqzXNN1eo6IkeSmSP+sDRYAigDhDmAUsEEX\n1jkIOLNY9hc16QOACcBfq8FCRKxcpEuSJEnLvWZskrR+MX2qZP4TxXRDoLMdkv+bXGPx2bpaiQ3I\ntRUPR8SnyU2dxgELI2Iy8NWU0j+6Uvh6o0aNWJrFJUmSpF7VdDUMQPUOe27J/Dl1+dpV1C4cC0xJ\nKU2um716Md2J3Nn5Z8BHge8C2wNTImLTTpZbkiRJajrNWMPQ0/YHxgBHNJi3cjHdCHhnSumR4vM1\nEfEQ8Bvy0K6f6O7Gp02b1d1FJUmSpE7rbsuWZqxheKWYDiuZP7wuX0cOIo+MdE2DebOL6c01wULV\nJcCrwPhObkeSJElqOs0YMDwGVMjvTGik2sfh4Y5WFBFjga2AP6WU5jfIMrWYLtHJuejrMA0Y2dF2\nJEmSpGbVdE2SUkpzIuJeYIuIGJxSeq06rxi9aDvgyZTSE6UrWeyDxfSmkm3NLJoebRIRA1NKC2q2\ntRL5DdNlna8lSV302muv8be/3cLdd/+Dl1+eybx58xkyZAijR6/D9tvvSMTbaGnp1qiAkqRuarqA\noXABcBZwMHk41Kp9gbXI/QoAiIhxwOsppccarGfLYnp/O9uqvt35UODsmvSDgZWAq7taeElSWy+/\nPJNrrrmSW2+dwquvLvnKm0cffYRbbpnC6NFj2GWXD7HjjhNobW3GSnJJaj7NGjD8HPgMcFpErA/c\nCWxCfrvzfcBpNXkfBBJ5ONR6GxfTqe1s6yxgT+CMiNgAuBt4NzmAeBI4pdvfQpLE448/xhlnnMrL\nL8/sMO+zzz7Nr351Affc808OOeQIBg0a3AcllKQVW1M+nin6G3yA/MR/T+Ai4HPA+cD4lFLZkKv1\nViumpUMVFU2ediYHIR8vtvGJYptbp5Re6Po3kCQBPPHE4/zwhyd3Kliodc89d3Hmmacxf36j7meS\npJ7UUqlUOs6lXjNt2iz/AJJWSHPnzuG4477GjBkvtZ0xuJWBGw2jdZ3BtKzUSmX2AhY+NpeFT76a\nh7yoMX78zuy334F9V2hJamKjRo3oViewZm2SJElqcpMm3bhEsDAghrPSFqvQMqDmmrbaSgx48xAW\nzVrAvCkvUpmxuFZh8uSb2HXX3VhzzVF9VWxJWuE0ZZMkSVJzW7RoEZMm3dgmbcBGw1hpq7pgoUbr\niIEMev+atAxdPNJ1pVJh8uQbG+aXJPUMAwZJUp+7//57mD592uKEAbDSu0Z2OGRqy6ABDNy07etv\npkyZxIIFC0qWkCQtLQMGSVKfe+CBtqNZD1h/KC2DlnhHZkMDNhgCKy0OLGbNeoUnn+zMq3ckSd1h\nwCBJ6nOzZr3S5nPrWoM6vWzLwFZa11i53fVJknqOAYMkqc8tWrSwbUJJv4VSrW3zL1y4sCSjJGlp\nGTBIkvrc0KHD2nyuzOz8+xQqlQqVl9vmHzZsWEluSdLSMmCQJPW59dYb2+bzgkfnUFnUudfSLHru\ndSpzFtcoDBgwgDFj1u3J4kmSahgwSJL63NZbb8ugQTX9Fl5dxML/zOlwuUqlwoL7Z7VJ22qrrRk2\nbHhPF1GSVDBgkCT1uSFDhrLttju0SZt/50wWPvta6TKVRRXm/30mi55/vU36hAnv75UySpIyAwZJ\n0jKxyy4fYsCAmqFUF8K8G6cz7+YXWTjtdSqV3ESpsqDCgv/M4fXrXmDhv9vWQmy44Ua89a3Rl8WW\npBVOS/WErGVj2rRZ/gEkrbCmTJnIRRed13jmyi20rNRK5dWFsGjJ2SNHrsI3v/ltRo1aq3cLKUnL\niVGjRnRxSLrMGgZJ0jKz444T+OQnP9v4Dc/zKrlzc4NgYdVVV+Poo79usCBJfcAahmXMGgZJgrvv\n/geXXHIx06a90GHezTZ7F/vtdwCrr75GH5RMkpYf3a1hMGBYxgwYJClbtGgRDzxwHxMn3sB9993T\n5mVsw4ePYPvtd2T8+J1Ze+03LcNSSlLzMmBoUgYMkrSkBQsWMHv2LObNm8fQoUMZOnQYra22opWk\npdHdgGFgTxdEkqSlNXDgQFZddbVlXQxJEnZ6liRJktQOAwZJkiRJpQwYJEmSJJUyYJAkSZJUyoBB\nkiRJUikDBkmSJEmlDBgkSZIklTJgkCRJklTKgEGSJElSKQMGSZIkSaUMGCRJkiSVMmCQJEmSVMqA\nQZIkSVIpAwZJkiRJpQwYJEmSJJUyYJAkSZJUqqVSqSzrMkiSJEnqp6xhkCRJklTKgEGSJElSKQMG\nSZIkSaUMGCRJkiSVMmCQJEmSVMqAQZIkSVIpAwZJkiRJpQwYJEmSJJUyYJAkSZJUyoBBkiRJUikD\nBkmSJEmlDBgkSZIklTJgkCRJklRq4LIugJpfRFSAySml8cu6LGorIk4ETgAmpJQmLdvSNC5PRAwF\nzgM+XmTbGDioPp+WrYiYCpBSGtsT+fqDiNgfuBD4fErpom4sfxHwOWCDlNLUniybli8RMRZ4DPhl\nSmn/Hlqn195e1t+uocuSAUM/VXMha2Qe8BTwZ+B7KaUn+6pc/VEH+6pWt24K+lpE7As81ejkFBHD\ngEOAjwFvA0YA04B/A78FLk4pvdp3pe2yS4H7gQdq0vYHPg1cBVwGzCzJpzp1x/4uKaW/tJP3dOBI\ngJRSSw9tv9GxemhPrLuPTAT2Av7eUyssAqb1gfNSSl8oybM/+e9WGzifSL4xqVUBXgES8EfgzJTS\naz1V1hVJzT7/ekrp+8ugCC+Qj7Wp3Vk4Ig4Hbk4p3V2TvBf5/N/VdY0nH/uNLACeBSYBP0gprejn\nYK9FBQOG/u83wBV1aWsA2wNfAPaOiG1TSg/3ecn6n0b7qlaP3RT0slPIF7ZJtYkRsRlwNbAecA1w\nIvnmen3gE8C5wKERsXtK6Yk+LG+npZT+BfyrLnmzYvqNmotTo3wqt4AceDUMGCJiIDkoWwgM6MHt\nLnGsppSu68H196qU0uPA4720+oMi4oKU0u1dXO4M4Jbi/wOAtYE9ge8DH4yInVNKlR4sp/pASmku\n8PvuLBsRg4Afk6/5bwQMKaVura/GDcD/1qWtAmwJfB7Yqzjebl3K7TStkmvWCsmAof+7v+SkcG5E\n3AhcBJwM7NOnpeqfyvZV04iItcgBQX36msB1wKrAB1NK19dlOSUijgNOAn4TETs20U3F4GI6Z5mW\norndAnw8IkamlF5pMP9DwFpFvu17YoNlx6oAuA8YDfwsIt6dUlrYhWVvrz+PRcQ5wBRgArA18Lce\nK6mawTuBlXphvY+WXDMviIjLgBuB08nHnFZwBgzN7dfAz4Hx1YTiScSRwGeBtwDzgf+Q24ifW3vh\nKqrOF5CfJpwGfBRYvcj/nZTS/9VuLCI+CXyD3MZ8Jvlp/lcbFSwiVgO+RW46sy7wGnAXcHpK6cqa\nfPuTn1B+ltwJ/1vkm5CpwHEppcsi4jPFdjcEngDOSin9pNN7qefKtyW5vfIFKaX/KeavCRwP7Aas\nQ24+cAvw3donixHRQn4CfDCwETAUeIZcY3BSSmlGXZOEEyLiBBY3ozq2WP+XGgQLAKSUvlO0k30K\nGAbMLvnuLeQnVQcBby+SpwL/B/y4tklTRIwAjgL2Jv9dFgGPAr8iN49YVORbCTgc2A/YgHxueYLc\nxOi7KaXXi3zV7zih2OZjNUV7LCIolt+fBu1GI+K9wNeBbYEhxXe9vNjGjJp8U8nH9j7ABcA4YK2S\nm+nlwTXA+8jf97wG8z8HPAg8QhEwtNemOiKOBb5HSTO+9o7V+j4Mdb+hV8i/l7cDrwPXA4ellKbX\nrLuVfCx9Hogi+WHgYuCMlNKCuvJfUHzn04HNyeem88g1cFsCPyqmM4r99OWU0ry6srX5nhGxd1GG\nzYGVybUQVwMnp5RmLrl7l/AScCZwfrGeMzuxTKmU0qKIuI38t1tradaljnX2+lDk3Yh8jI0HWoDJ\nwJeBbwP7UvRvafR768x5s6afDMCFEfFGU7ZGfRiKc/bxwB5F2aeR7xW+l1J6ubP7IKU0MSIeAd4T\nEUOLGpLqNjp1Hi7yHgl8kXz9eAo4C/gT+VxUuy+q33Mz4IfAjsDeKaU/FfM3A44r9vMqwHPkh2gn\npZServv+vXLNqrsWfQj4H/K5ZQhtr+e157OpdOE+qz9zlKQmVtz8zyf/IKouIldd302+KfwK+Yf1\nE+DUBqtpJf94VyXflH+T3OTp4ojYopopInYHLgGGk09GxwGrkdvVtlF0Yp1CDlz+Qm7TfGKR/4qI\n+O8G5diN/OM7oyjDWsAlEXFM8flnxfyhwDkR8Z52dk27ulm+fYB3A1+iqFYuLiq3kU84vwMOJJ8Q\nNgemRMRONct/FfgF+WbmWPLf5iryifQvxU38pUU5IJ+09mJxO9Pqzdb57X23lNKBKaUTUkoNg4XC\nd8mB5gvkE+Zh5OPlZHKzrlqXkk+Wk4p8R5JPdD8uvmvVWUXaQ+Rj7lDgVvJxcklJOapteicVn79Y\nfH6hUeaI+Bh5f4wuynQI+e/3ZWByRAypW6SFfDN5KTk4Wp7bft9JvijuXz8jIlYlX6R6svatvWO1\nzIfIx90fyX/rG8kX9foA5zzyDfZz5N/8V8jB5ank81u9dcm/v6vJv88Xyeeob5EfatxQpE8lHzNf\nbq+QEXFwsb4BwDHAf5OPs68ANxQBTWf8gnx+OCkiRndymfZsQj7X39cD61KJrlwfImIV8vlrV+CX\nxTLV9v9v7sTmOnPePId8/aaY7kVJe/qIWLnY9hfJD4AOJP9WjwauK+Z3xevkfjRv1FZ35TwcEUeT\nA/k5wNeK8h9Krgkv813yzfdB1e8ZEdVatc3J54EDyb/RzwC3R8SbapbvzWtW9Xt9Dri22AenkB8E\nXlOs4+air2GtTt1n9XfWMDSx4oZ0BMWFuqhdGEru+LpfTb5fkm8mDomIY6tP1wobANellA6ryf8c\nORr/GPDPIvkEcvvnD6WU/l2knRcRFzQo2hHAO8ht0r9Xs94LyJ33fhgRF9d13tuF/CRmZpG3lfyU\n4QRgbErpxSL9efIJ4SPAHZ3bUz1Svm2At9Q9oT6OXOuxXV1twsXkE93p5KpkyO3HXwE+XFPL8+uI\nuJfcPvnNKaV/RcTkYt6/qlXFEbEBOYC6oYc6NK9D7jD/0erTFuCiiNiQ3Kxl3ZTSUxGxOvkm70+1\nxwf5KdfpwOoRWdW2LQAAFjdJREFU0VI0ffo08EBK6VM1+S6ueUI1LKXUpslRtU1vRHykSLquOtJM\nUdPwhuLY/hlwD7B9zd/mooi4HzibfOE6vWaxDci1VN/t4v5pVr8CToyIjWt+o5CD3UHkJ/Tf7IkN\nlR2rHdgDeFvRb6B6Xvo38JGIWDmlNK+4MTiAfHzuWtOs7tyIuAb4TEScXdcv4IPA+JTS5GK995DP\nDSdR03wvIq4FniYHT40enlS9BbiZ/Fut/t4vLn4PnwS2K+a3K6VUiYhDgX+Qb0w+1cEiVUOLIA9y\n0Ls2+Ybkv8g1HI+VLqme0JXrw4HAGPJT5WqN2y8i4pvkBzAd6cx5886IeEcx784OfmuHAFvQtsbs\n1xHxGrlGYE86uBmuinwSHgfcV73udOU8HLnf1DeAl4GdqjUPEfEr2u9AvHJK6cC6tJ8B04FtqvcC\nxbomkx8UfB34cm9fs4ptDiFfZ6aRr/3VGseLIuIJ8n3L4cAPahbr7H1Wv2bA0P8Nrrl4VK0BvJd8\nQL4KfAegqELbvZqpeJowtPj4H/ITj7XI1YK1flz3udo5eHSxntWBdwF31N2IQH5ieEBd2sfJTyTO\nrU1MKb0SEb8n/5i2Jz9hrLqirqr/nmJ6Te0Joia90RO7Rvuq1qziZr075buhQXOWfcjNPFLddueQ\nn1B9NCJWK06UC8i1M++k5uRQnNQvaqfMkG8YIN/sLLWUUrV6m4gYUJSrhXzztg0wlnyMLCQ/0RwX\nEWvU/h1SSl+pW+0CYExEjE01w0umnhuNZEfgTeQL0uCIGFwz7yryE+nxtA0YWshPv1cUvyQH2PuT\nL9RVnwNuTSk9XB+I9bE/VIMFeOOG+h/kJnqjyMd3dWjdc9OSfXAuBD5MflhQGzBMrQYLheo54tna\n5nsppeeKBw7tPu1PKb3RzLJ4cDGCfCw9UiSPpRMBQ7GueyL3P/hy5A7QpaNY1big+FdrPvlvuyxG\n91nRdOX6MKGYXd+s5ExyDddg2tfT581Pko+V39al/4j8BPw/dekrN7hmjiTXpv+A/GT8uJp5XTkP\nv5Pc9Oa3tc2UUkovRsR55P3TyB9qP0TEW8n3H+cCC+vKezO5+d/44nNfXLPeR65tOqtB88QLyQHD\nR2gbMEAH91nNwCZJ/d8J5La3tf8eIR+YTwE7p5TurGaOiI0i4v+K6PW1mmXGF1nqg8SFLDnMW/Wp\nQbWT1QbFtNFITA82SBtHvli/1GBeKqYb16XXl2FeB+mNOoA12le1/zZdivK1eapXVEWvQ24m0Ghb\nHy2yVjuFnky+CN0REX+OiKMjYlM6p1oL0CO/14hYOyLOjYgnyftzZlHmaq3UQICiveuZ5CeujxXH\n1YERMabBar9Nrm59KCIuj4jDIrft7SnVvhansOS+fpy8bxp1wJ3ag2Xo14qL3mTgs9VmM8XfYFvy\nk6xlrf5mBZY814wrpvc3yNupc0dNDWqj0Y/m0UHn0YgYERGnRcSj5CYZ1d9H9Qanqw/ajic3U/lJ\nJ5uEfId8I1r99wlyU4ovAXf18O9KS+rK9WFsMW1zbBdNQhsdw/V6+rz5DnLZ2zS/TCm9mFK6NaX0\nfF3+z9P4fPp78r3Bx1JKV9Xk78p5eGwxfYQltddpv74GrbrNgxtscwY5KFmv+J59cc0qPUcVfRde\nZMlzVGfus/o9axj6v/No+/RiMLnt3gxgx9oqs6Id323kGohzyW13Z5BvVH9IfmpQb0HqeASPai3F\n3AbzGjWRGU5JO/Sa/PVt/F4vyV+W3kj9vqpXPXF1p3yz6j6PKKb3UIxtX2IqQErp8ojYjtyW9L+A\nDwBExH3AEXVPSOs9U0zXbydPpxTVqVPIJ7Tfktt4TyMHJUexONCpOpp8TFX7F3wKqETEdcAhqXgH\nSErprIh4kNyO9UPkalYi4hbg0JTS0ra7ru7vHwD/ryRP/bH4el3zuxXBheSahl3IzXr2I/+Gfrcs\nC1XoTB+S4cW00YhZvXnuAN4YEOBP5BrcP5MfQjxLfhr5aXJ/hi4pnkwfTT43fZWOm6r8Ky35DpY/\nRMQl5L4qvyA/6VXv6Mr1YSgwLxUd8et02MG4F86bQ4D6oKA9V9P2yXcL+RyyGrmZ37N1+btyHm7v\nvqG9fVN2rf0l5bXxtbWRvX3Nau8cBfn7r1aX1pn7rH7PgKH/e7T+4lG0jzyb3DmotgPf54A1yT3v\nj69bZmkO1uoJoFH16vAGabNL0mHxibb+pNATlthXJXqifNX5K3dym6SU7gD2iTw6w7bkk9nBwJ8j\nYpOUUqMnsBT9CZ4kt6tctUE16BsijxAxr2ie1shu5GDh1ymlz9Yte3CDbVfIzXoui4iRwM7kp1If\nBa6PiE2rF8uU0g3kTqFDyNW2nyaPEnJTRLy1vXJ3QnV/v9TZ/b2C+gO5Y+H+EXE9ubP8ld3Y9/Ud\nyPtKtbN+o99nb547qt5DDhYmk/tQvDGgRER8sLsrTSldEhEHAt+IiPqBBTq7jvsi4g5gh7L21eoR\nXbk+vA6sFBGttcdKYWRnNtbD580XyE/NO+uZBvcXh5MDiZ9R3ETX6Mp5uHoNanTf0Kl9U7fNuZ05\n9/fBNau9cxTkY6Q3z1HLjE2SmtNPyZ36Di+eWldVmw7Vtr2vjubT2eYvjVSr9jdsMO8dDdL+BYyO\nPORovWr1YqOmTH1lqctXVH0+Dbw18nj0bZSsu7rs/JTSlJTSEeRRWAaR2zy25yLyTdzRHeQ7B3g4\nIt5SMr96jLRpS110UNu2vRWnlF5JKV2eUtqNPITeOHKTrPp8r6aU/l/KHe/PIAex7+ug3B2pdpJr\n+A6B9vb3iqS4ibyM3NZ/PLlZQFlzpPnFdFCDefVV6n2l+oKkRuervjh3VH8fExvcAC7tU/3DyCMv\nnb0U61iJ/BS4o7bx6r6uXB+eJv892jSHjDxKTqNrY6keOm9OBdaItqMGERGrR8T+kQcV6Kgc15Af\nPOweeSj1Wl05D1f73DWqGd+mo3J0YZujyhbspWtW6Tmq2O+rsWzvb3qNAUMTKi5kB5ObkVxQ0/Go\nWhU5tpq3aMv8Ixa3/e/yk8OU0jTyD+A9EVHfTvwLDRapdjRt88Q6ItYgt8d9ljx82bLSU+W7lFxL\n96W69awG3F1UgRIRYyLivoj4ToN1VDtSV5/GVGuC6m8IfkQO3I6NPKRbGxHREhHHk5ugPFRWW0GD\nY6TwLRY/9RlSrPPDETE1Ij7QXrkjYsuI+Hc0Ho62/vt11xTy07NdI2Jc7YzIY+Y/FxGfXsptLC8u\nJFfjf5v89/5zSb7pFOODF01xACh+47uXLFOr7FhdGtURYA6uK1MLi5sDLTGUcw9q+PuI/L6GtxUf\nu1X7klJK5N/xh1ncubvTIg+/uCXwYN1AEOpZXbk+VKd7163jK3RwnHTxvNnZ39qV5ACmfiCSA8nn\nhc6OevClogxn192Qd+U8fBe5dcKuETG8Jt+adKFpX0rpEfKw35tFxPvrtrl1sc1ji899cc2aTG7G\nu09xra9VPWb+wHLIJklNKqV0d0ScSX7ifCJ5bP/fk2/8vl80TXmVPE7xXPJoRl8n33Cen1L6axc3\n+V3ysIw3RMT/kn9U7yd3OKr/Yf2UXK337YhYh1wbMop80loV2KukzWdf6anynUy+sfpGRKxNPpGs\nTR5Wbm3yONKklJ6OPNzaNyNiffL40K+RT95fIo83X71Rmkpuj/mZiJgO3JtSuj6l9HJE7EIe+/mi\niDiA3P/gBfITnH3IL7y5jjxSRplryVWqR0ceau85cjOlDcidM88Gjog8ms6t5HPE7yPiZ+ROXq3k\nmoj9gL+klB4qaideJXfqfCe5nfUC8igZR5CfEHU0Rn+7Uh5y81BykDYpIn5MvnBvRT5JJ/IoICu8\nlNJfI+I/5KY1Py47llN+KdR15Kr6SyIPOzqa/De7go6HAZ1Kg2N1Kcv+z4j4Kbn98dURcRX5GNwd\n2Kn4Pp3pTNpdtwFPkr/TU+Tjajz5XPdF8pCU+0fE9JRSd0bgOpm8X3drJ8/WEVH7NxtOfip6APnB\nz6Hd2K4We0dEfKJk3t107frwv+Q+bCcVAcWD5PPjjuSb6/Zqpe6h8+fNakfgwyO/J+KW1HZo4apz\nasq+JnlI383J15m/0X4fvzeklJ6JxU2fz6a4pnTlPJxSmlv8lo8m3zdcTH4J4iFFnoM6U5ZC9b0t\nfyy2+Qg5gD+MHORXm/n1+jWrOG8eQT4X/DUizif3ydim+E5/o/HLM5ueNQzN7QTyU+djImLLopPO\n3uQnhz8kBw+3k8dePpf8wp99WPJpSIdSSr8m/xgWkoOHk8nt9D5BXXu9ov38BPJoBbuSfzzfJN9g\n7JRSuryr2+9JPVW+YhSNbchtxnchd0b8Fvlk9v6UUm2nsD3If693kas8f0nuc3IZ8J5idAWKDlmn\nkJ/2n0BNtWdK6eHic7XfyjfJTZW+Qr7J+Shtx45vVObnyc2fHiQPl3cKOejYmRwQ3kK+MTsk5aHw\ntiafjPcmXxx/DuxADlJ3K9a5gHxhPIPcmfsc8rCQuxf7Zsd2+lR0Wkrpj0XZ7iIHv78gt7E9j9xB\nb3l9i3N3XFRMOxod6YAi73vJf9u9yRfhazvaQHvH6lI6nHzRfjP5N3oquZr/oJRSR03ylkoxusyH\nyb+DL5NrBIaQ989l5Lbdm9HN91mk/O6Rdl8cR74Bvazm3znk3+wVwBYdDJCgjn2Gtvu39t9HunJ9\nSPkNw7uQh8j8Evm6O5x8Pq128m/Yf7Ar582U0s3kGoINyOftsSXrnEtuSvNT8rX5QnK7/DOBXbr4\noK7a9HmfyC9urW6jK+fhr5M7SK9H/i0dQL5/+EUxv1N9K1NKt5GvtdeTz08XkvslXEl+F0K1I3Of\nXLNSSr8jv//lBfL7Xn5OPma+R772L5eDbbRUKvVDXUuSJKm7Ir9j5F3ACDuotxURHyW/t+GHKaWv\nLevyqHNskiRJktRFRXOWk4CbUkpn1qRvSm4KdNeKHCwU/fa2BfYsBgqpqo7Q16kXIKp/MGCQJEnq\nuofJIyftGhFjyW3hx5CbiULuF7Yie5LcTHdy0fdxLrmZ117k/kIdNn1U/2GTJEmSpG4ohtI8nnwj\nPJrcmfZO4Psppb+0t+yKoBg96UjykKbDyEHE5cBJKaXl8n0FyysDBkmSJEmlHCVJkiRJUikDBkmS\nJEmlDBgkSZIklTJgkCRJklTKgEGSJElSKQMGSZIkSaUMGCRJkiSVMmCQJEmSVMqAQZLUoyJiUkRU\nImL8UqzjoqVdhySpZxgwSJIkSSplwCBJkiSplAGDJEmSpFIDl3UBJEndFxEnAicAhwL3Ad8H3gW8\nClwDHAHMBY4FDgDeDDwL/Bz4QUqpUrOunYCjgK2BVYAZwN+AU1NKN9dttwX4EnAIsGGR91rga+2U\ndfWiHLsDY4syPgD8L/Cr2rL0hLp981fgFGB7YCTwMHBGSun8umUGAl8EPguMAwYDLwATgRNTSo/U\n5a8AzwPrFev/FLAGkIDjUkpXR8Q7ge8B2wIrAzcDR6aUHqxb1xDgGGAv4K3AAuDfwMXAOSmlBUu9\nUySpG6xhkKTlwzjgauAu4HTgRWB/4GzgJ8B+wGXAz8g3tN8D9q0uHBEHA38BdizWczLwJ2AnYHJE\nfLJueycAZxTrOgs4H9gAmEy+yW4jItYC/g78D/AEObD5JflG+yLgp0vz5TuwEfkmfW5R5t8CbwPO\ni4iP1+W9EDgTGFZMTwYeAj4D/C0i3lyyjZ8D7yumvwM2Bf4YEf8FTCIHVGcCdwIfAK6KiDeuwUWw\nMBk4qSjnj4BzgaHkv+eVtfklqS9ZwyBJy4fDgA+nlK4HiIgfA8+Qg4IHgC1TSnOKeTcCVwF7AxdH\nxDrkG+nXgG1SSv+qrjQifg7cCvw8Iq5JKc2OiDXJNQWvA9vVPnWPiNOBIxuU7wxyTcS3Ukqn1OT/\nFnAHcEhEXJpSmtgzu6ONI4EDUkq/qtnuA8APgM8BlxdpG5D313PAe1JKs2vy/wHYg1xj89W69a9J\nDpZ2SCnNK/I/X+S7EjgwpXRxkf5tcuC0Jbkm6B/FOo4D3g2cBxxcrW2JiG8A/w/YtSjrhUu/OySp\na3xaIUnLh39UgwWAlNIM4EHyg6EfV4OFwuRiulEx3ZtcK3BJbbBQrOcOcs3DKuSbVoAPAYOAa+qb\n6ADfARbWJkTEKsU2nifXLNSufxa5KQ/kWpDecF9tsFCo7quNa9JeIteo7FUbLBSuKqabNVj/AHLz\nrnk1abcU0yeBX1cTi0BgSvFxI3ijeddBwHzga7VNs4p1Hl987K39I0ntsoZBkpYP9zZIm1VM7y9J\nrzYd2qqY3lqy7juADwLvBC4FNinS76nPmFJ6KSIeAaImeSvyTfV/gDdHRP1izxTTLUq2v7T+0SDt\n5WI6pJqQUnqZ3FehehO/GjACaKlZbonmVoX6/V/dxw806JtRv/83BEaRm2qtUgRYtaYDi+i9/SNJ\n7TJgkKTlw0sN0iqN5qWUKsVNe/VGeFQxfaFk3dOK6ZrFdI1iOqMk/4t1n9cqptsBj5UsA7B2O/OW\nxvQGadV9UxsMEBE7kvtn7EDuoNxZ9fu/4b4v2XZ1/6xH+/tnZEQMTim91oVySdJSM2CQJDW8ea5R\nbb66qC5f2ahG9c1dq/n+Dny3nXLMa2der4uICcAN5NqQS4CbyEHRQnJ/g+PLl14q1f3zOI37f9Ry\npCRJfc6AQZJUrVlYq2R+tQaiWtMws5iuWpK/fj3PFdNKSumKrhevz3yVHCwcl1I6uXZGRAzqxe1W\n98+Qfr5/JK2g7PQsSfp7Md2+ZP62dfkeKqbvqM8YEW8ijxhU6y5yh953FiMs1S8zJCLGdKnEvaNa\n7qsbzPtQb200pTSVHLStFRGb1s+PiJaI2LC3ti9JHTFgkCRdQh77f5+IGFc7o2jTP4HcMfnPRfKf\nyc10douI9erWdTx1TZuKzsS/J4+sdGKD7X8feCoiDli6r7HUni6mm9QmRsRngF2Kj6v10rYvKKYn\nR8SAunlfAf5TDMkqSX3OJkmStIJLKU2PiC+Sx/i/LSIuJd88vxXYk/y+hf2rw4amlJ6KiJ+Q3/R8\nW0RcTG5bvwOwDrkfwC51mzkK2AY4rHjz8Q3kAGIX8vsHbiO/UG1Zuog8rOrPImIrcv+FHYDNgQ+T\n33q9afGuictSSmWjSnXHyeR9sRvwz4i4kty3YXtgZ/KbqX/Sg9uTpE6zhkGSRErpl+Sb5VuBT5Bf\nJLYzcAX5JWY31C1yFPANcs3EUcAXgKfIbzueWZeXlNJz5MDgVHIfh28Uyw0hj0q0S0ppbo9/sS4o\nXq52KPl7HFL8e4H8Mrs7ga+Tg4jPA2/p4W3PBcaT93sLcAz55Xjrkd/6vF1KqWwUK0nqVS2VStkg\nF5IkSZJWdNYwSJIkSSplHwZJUr8WEWsBI7u42NMppVd7ozyStKIxYJAk9Xc/BD7XxWUmAJN6viiS\ntOIxYJAk9XdnkTtfd8X9vVEQSVoR2elZkiRJUik7PUuSJEkqZcAgSZIkqZQBgyRJkqRSBgySJEmS\nShkwSJIkSSplwCBJkiSplAGDJEmSpFIGDJIkSZJKGTBIkiRJKmXAIEmSJKmUAYMkSZKkUgYMkiRJ\nkkr9f/eE0O3JN+MAAAAAAElFTkSuQmCC\n", 881 | "text/plain": [ 882 | "
" 883 | ] 884 | }, 885 | "metadata": { 886 | "tags": [], 887 | "image/png": { 888 | "width": 390, 889 | "height": 262 890 | } 891 | } 892 | } 893 | ] 894 | }, 895 | { 896 | "metadata": { 897 | "id": "MVxml5fBLShS", 898 | "colab_type": "code", 899 | "colab": { 900 | "base_uri": "https://localhost:8080/", 901 | "height": 102 902 | }, 903 | "outputId": "9542c5f6-7167-4dd5-ce44-cab57c04ad4f" 904 | }, 905 | "cell_type": "code", 906 | "source": [ 907 | "cv_df.groupby('model_name').accuracy.mean()" 908 | ], 909 | "execution_count": 72, 910 | "outputs": [ 911 | { 912 | "output_type": "execute_result", 913 | "data": { 914 | "text/plain": [ 915 | "model_name\n", 916 | "LogisticRegression 0.856000\n", 917 | "MultinomialNB 0.847000\n", 918 | "RandomForestClassifier 0.850667\n", 919 | "Name: accuracy, dtype: float64" 920 | ] 921 | }, 922 | "metadata": { 923 | "tags": [] 924 | }, 925 | "execution_count": 72 926 | } 927 | ] 928 | }, 929 | { 930 | "metadata": { 931 | "id": "jCpJmGQhLXs-", 932 | "colab_type": "text" 933 | }, 934 | "cell_type": "markdown", 935 | "source": [ 936 | "# LogisticRegression Model Interpretation " 937 | ] 938 | }, 939 | { 940 | "metadata": { 941 | "id": "o7iDRuz8LWwE", 942 | "colab_type": "code", 943 | "colab": {} 944 | }, 945 | "cell_type": "code", 946 | "source": [ 947 | "from sklearn.model_selection import train_test_split" 948 | ], 949 | "execution_count": 0, 950 | "outputs": [] 951 | }, 952 | { 953 | "metadata": { 954 | "id": "fMATkCVQLdCq", 955 | "colab_type": "code", 956 | "colab": { 957 | "base_uri": "https://localhost:8080/", 958 | "height": 105 959 | }, 960 | "outputId": "4c9917af-9db5-4a8b-c1c0-2e9feb5fccf3" 961 | }, 962 | "cell_type": "code", 963 | "source": [ 964 | "model = LogisticRegression(random_state=0, C=0.9)\n", 965 | "\n", 966 | "X_train, X_test, y_train, y_test, indices_train, indices_test = train_test_split(features, labels, df.index, test_size=0.33, random_state=0, stratify=df['code'])\n", 967 | "\n", 968 | "model.fit(X_train, y_train)\n", 969 | "y_pred_proba = model.predict_proba(X_test)\n", 970 | "y_pred = model.predict(X_test)" 971 | ], 972 | "execution_count": 81, 973 | "outputs": [ 974 | { 975 | "output_type": "stream", 976 | "text": [ 977 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:433: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.\n", 978 | " FutureWarning)\n", 979 | "/usr/local/lib/python3.6/dist-packages/sklearn/linear_model/logistic.py:460: FutureWarning: Default multi_class will be changed to 'auto' in 0.22. Specify the multi_class option to silence this warning.\n", 980 | " \"this warning.\", FutureWarning)\n" 981 | ], 982 | "name": "stderr" 983 | } 984 | ] 985 | }, 986 | { 987 | "metadata": { 988 | "id": "KEY-nE8aLtYi", 989 | "colab_type": "code", 990 | "colab": { 991 | "base_uri": "https://localhost:8080/", 992 | "height": 85 993 | }, 994 | "outputId": "d8407e64-1e58-40f8-8bea-9c7c0f5a2c2f" 995 | }, 996 | "cell_type": "code", 997 | "source": [ 998 | "y_train.value_counts()" 999 | ], 1000 | "execution_count": 82, 1001 | "outputs": [ 1002 | { 1003 | "output_type": "execute_result", 1004 | "data": { 1005 | "text/plain": [ 1006 | "2 670\n", 1007 | "1 670\n", 1008 | "0 670\n", 1009 | "Name: category_id, dtype: int64" 1010 | ] 1011 | }, 1012 | "metadata": { 1013 | "tags": [] 1014 | }, 1015 | "execution_count": 82 1016 | } 1017 | ] 1018 | }, 1019 | { 1020 | "metadata": { 1021 | "id": "Z_xwuIj-kh-v", 1022 | "colab_type": "code", 1023 | "colab": { 1024 | "base_uri": "https://localhost:8080/", 1025 | "height": 85 1026 | }, 1027 | "outputId": "951e83bd-0501-4a38-9559-7f1214703697" 1028 | }, 1029 | "cell_type": "code", 1030 | "source": [ 1031 | "y_test.value_counts()" 1032 | ], 1033 | "execution_count": 83, 1034 | "outputs": [ 1035 | { 1036 | "output_type": "execute_result", 1037 | "data": { 1038 | "text/plain": [ 1039 | "2 330\n", 1040 | "1 330\n", 1041 | "0 330\n", 1042 | "Name: category_id, dtype: int64" 1043 | ] 1044 | }, 1045 | "metadata": { 1046 | "tags": [] 1047 | }, 1048 | "execution_count": 83 1049 | } 1050 | ] 1051 | }, 1052 | { 1053 | "metadata": { 1054 | "id": "FivCi71Xkmkx", 1055 | "colab_type": "code", 1056 | "colab": {} 1057 | }, 1058 | "cell_type": "code", 1059 | "source": [ 1060 | "\n", 1061 | "from sklearn.metrics import confusion_matrix" 1062 | ], 1063 | "execution_count": 0, 1064 | "outputs": [] 1065 | }, 1066 | { 1067 | "metadata": { 1068 | "id": "GPUXs0XPkpR7", 1069 | "colab_type": "code", 1070 | "colab": { 1071 | "base_uri": "https://localhost:8080/", 1072 | "height": 282 1073 | }, 1074 | "outputId": "318e66ef-3db5-4dd0-f692-a48326434d1a" 1075 | }, 1076 | "cell_type": "code", 1077 | "source": [ 1078 | "conf_mat = confusion_matrix(y_test, y_pred)\n", 1079 | "sns.heatmap(conf_mat, annot=True, fmt='d',\n", 1080 | " xticklabels=category_id_df.code.values, yticklabels=category_id_df.code.values)\n", 1081 | "plt.ylabel('Actual')\n", 1082 | "plt.xlabel('Predicted');" 1083 | ], 1084 | "execution_count": 84, 1085 | "outputs": [ 1086 | { 1087 | "output_type": "display_data", 1088 | "data": { 1089 | "image/png": "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\n", 1090 | "text/plain": [ 1091 | "
" 1092 | ] 1093 | }, 1094 | "metadata": { 1095 | "tags": [], 1096 | "image/png": { 1097 | "width": 364, 1098 | "height": 265 1099 | } 1100 | } 1101 | } 1102 | ] 1103 | }, 1104 | { 1105 | "metadata": { 1106 | "id": "4fqoNRKAk3mr", 1107 | "colab_type": "text" 1108 | }, 1109 | "cell_type": "markdown", 1110 | "source": [ 1111 | "## Analyze incorrectly labeled data" 1112 | ] 1113 | }, 1114 | { 1115 | "metadata": { 1116 | "id": "dYyNiHeYkr_J", 1117 | "colab_type": "code", 1118 | "colab": { 1119 | "base_uri": "https://localhost:8080/", 1120 | "height": 4071 1121 | }, 1122 | "outputId": "5524d5f5-cc33-4a33-b682-87ec02622e45" 1123 | }, 1124 | "cell_type": "code", 1125 | "source": [ 1126 | "from IPython.display import display\n", 1127 | "\n", 1128 | "for predicted in category_id_df.category_id:\n", 1129 | " for actual in category_id_df.category_id:\n", 1130 | " if predicted != actual and conf_mat[actual, predicted] >= 2:\n", 1131 | " print(\"'{}' predicted as '{}' : {} examples.\".format(id_to_category[actual], id_to_category[predicted], conf_mat[actual, predicted]))\n", 1132 | " display(df.loc[indices_test[(y_test == actual) & (y_pred == predicted)]][['descr_clm']])\n", 1133 | " print('')" 1134 | ], 1135 | "execution_count": 85, 1136 | "outputs": [ 1137 | { 1138 | "output_type": "stream", 1139 | "text": [ 1140 | "'705' predicted as '700' : 14 examples.\n" 1141 | ], 1142 | "name": "stdout" 1143 | }, 1144 | { 1145 | "output_type": "display_data", 1146 | "data": { 1147 | "text/html": [ 1148 | "
\n", 1149 | "\n", 1162 | "\n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | "
descr_clm
1902CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
10656TECHNICAL FIELD \\n The present invention r...
558CROSS-REFERENCES TO RELATED APPLICATIONS \\n ...
532CROSS-REFERENCE TO RELATED PATENT APPLICATION ...
1896CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
2345FIELD OF THE INVENTION \\n Embodiments gene...
2378BACKGROUND OF THE INVENTION \\n 1. Field of...
7992CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
4298CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
1872This application claims priority to U.S. Provi...
8021RELATED PATENT APPLICATIONS \\n This applic...
4229RELATED APPLICATIONS \\n The present invent...
8083BACKGROUND \\n Entities such as data center...
8106CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
\n", 1228 | "
" 1229 | ], 1230 | "text/plain": [ 1231 | " descr_clm\n", 1232 | "1902 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1233 | "10656 TECHNICAL FIELD \\n The present invention r...\n", 1234 | "558 CROSS-REFERENCES TO RELATED APPLICATIONS \\n ...\n", 1235 | "532 CROSS-REFERENCE TO RELATED PATENT APPLICATION ...\n", 1236 | "1896 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1237 | "2345 FIELD OF THE INVENTION \\n Embodiments gene...\n", 1238 | "2378 BACKGROUND OF THE INVENTION \\n 1. Field of...\n", 1239 | "7992 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1240 | "4298 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1241 | "1872 This application claims priority to U.S. Provi...\n", 1242 | "8021 RELATED PATENT APPLICATIONS \\n This applic...\n", 1243 | "4229 RELATED APPLICATIONS \\n The present invent...\n", 1244 | "8083 BACKGROUND \\n Entities such as data center...\n", 1245 | "8106 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ..." 1246 | ] 1247 | }, 1248 | "metadata": { 1249 | "tags": [] 1250 | } 1251 | }, 1252 | { 1253 | "output_type": "stream", 1254 | "text": [ 1255 | "\n", 1256 | "'706' predicted as '700' : 12 examples.\n" 1257 | ], 1258 | "name": "stdout" 1259 | }, 1260 | { 1261 | "output_type": "display_data", 1262 | "data": { 1263 | "text/html": [ 1264 | "
\n", 1265 | "\n", 1278 | "\n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | "
descr_clm
4704CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
2572CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3105BACKGROUND \\n Earth formations may be used...
4630CROSS-REFERENCES TO RELATED APPLICATIONS \\n ...
3356RELATED APPLICATION INFORMATION \\n This ap...
3360BACKGROUND OF INVENTION \\n 1. Field of the...
4373RELATED APPLICATION INFORMATION \\n The pre...
3345CLAIM FOR PRIORITY \\n This application cla...
4481RELATED APPLICATIONS \\n This application c...
4607CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
3303FIELD AND BACKGROUND OF THE INVENTION \\n T...
3351TECHNICAL FIELD \\n The present invention r...
\n", 1336 | "
" 1337 | ], 1338 | "text/plain": [ 1339 | " descr_clm\n", 1340 | "4704 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1341 | "2572 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1342 | "3105 BACKGROUND \\n Earth formations may be used...\n", 1343 | "4630 CROSS-REFERENCES TO RELATED APPLICATIONS \\n ...\n", 1344 | "3356 RELATED APPLICATION INFORMATION \\n This ap...\n", 1345 | "3360 BACKGROUND OF INVENTION \\n 1. Field of the...\n", 1346 | "4373 RELATED APPLICATION INFORMATION \\n The pre...\n", 1347 | "3345 CLAIM FOR PRIORITY \\n This application cla...\n", 1348 | "4481 RELATED APPLICATIONS \\n This application c...\n", 1349 | "4607 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1350 | "3303 FIELD AND BACKGROUND OF THE INVENTION \\n T...\n", 1351 | "3351 TECHNICAL FIELD \\n The present invention r..." 1352 | ] 1353 | }, 1354 | "metadata": { 1355 | "tags": [] 1356 | } 1357 | }, 1358 | { 1359 | "output_type": "stream", 1360 | "text": [ 1361 | "\n", 1362 | "'700' predicted as '705' : 22 examples.\n" 1363 | ], 1364 | "name": "stdout" 1365 | }, 1366 | { 1367 | "output_type": "display_data", 1368 | "data": { 1369 | "text/html": [ 1370 | "
\n", 1371 | "\n", 1384 | "\n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | "
descr_clm
3972This application claims the benefit of U.S. pr...
743CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
3707CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
3850This application claims the benefit of U.S. Pr...
757CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3706BACKGROUND \\n Shipments of items are often...
3694CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
6112CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3748CLAIM OF BENEFIT TO PRIOR APPLICATION \\n T...
3761CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
3700BACKGROUND \\n Retailers, wholesalers, and ...
3971TECHNICAL FIELD \\n This disclosure relates...
760CROSS-REFERENCE TO RELATED APPLICATION \\n ...
5149PRIORITY CLAIM \\n This application is a co...
788BACKGROUND \\n Three-dimensional (3D) print...
5186CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
5129BACKGROUND \\n Shipments of items are often...
2074This utility patent application is a continuat...
2084PRIORITY APPLICATION \\n This application i...
5191The current application claims a priority to t...
3746CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3710CROSS REFERENCE TO RELATED APPLICATION \\n ...
\n", 1482 | "
" 1483 | ], 1484 | "text/plain": [ 1485 | " descr_clm\n", 1486 | "3972 This application claims the benefit of U.S. pr...\n", 1487 | "743 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1488 | "3707 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1489 | "3850 This application claims the benefit of U.S. Pr...\n", 1490 | "757 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1491 | "3706 BACKGROUND \\n Shipments of items are often...\n", 1492 | "3694 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1493 | "6112 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1494 | "3748 CLAIM OF BENEFIT TO PRIOR APPLICATION \\n T...\n", 1495 | "3761 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1496 | "3700 BACKGROUND \\n Retailers, wholesalers, and ...\n", 1497 | "3971 TECHNICAL FIELD \\n This disclosure relates...\n", 1498 | "760 CROSS-REFERENCE TO RELATED APPLICATION \\n ...\n", 1499 | "5149 PRIORITY CLAIM \\n This application is a co...\n", 1500 | "788 BACKGROUND \\n Three-dimensional (3D) print...\n", 1501 | "5186 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1502 | "5129 BACKGROUND \\n Shipments of items are often...\n", 1503 | "2074 This utility patent application is a continuat...\n", 1504 | "2084 PRIORITY APPLICATION \\n This application i...\n", 1505 | "5191 The current application claims a priority to t...\n", 1506 | "3746 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1507 | "3710 CROSS REFERENCE TO RELATED APPLICATION \\n ..." 1508 | ] 1509 | }, 1510 | "metadata": { 1511 | "tags": [] 1512 | } 1513 | }, 1514 | { 1515 | "output_type": "stream", 1516 | "text": [ 1517 | "\n", 1518 | "'706' predicted as '705' : 16 examples.\n" 1519 | ], 1520 | "name": "stdout" 1521 | }, 1522 | { 1523 | "output_type": "display_data", 1524 | "data": { 1525 | "text/html": [ 1526 | "
\n", 1527 | "\n", 1540 | "\n", 1541 | " \n", 1542 | " \n", 1543 | " \n", 1544 | " \n", 1545 | " \n", 1546 | " \n", 1547 | " \n", 1548 | " \n", 1549 | " \n", 1550 | " \n", 1551 | " \n", 1552 | " \n", 1553 | " \n", 1554 | " \n", 1555 | " \n", 1556 | " \n", 1557 | " \n", 1558 | " \n", 1559 | " \n", 1560 | " \n", 1561 | " \n", 1562 | " \n", 1563 | " \n", 1564 | " \n", 1565 | " \n", 1566 | " \n", 1567 | " \n", 1568 | " \n", 1569 | " \n", 1570 | " \n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | " \n", 1593 | " \n", 1594 | " \n", 1595 | " \n", 1596 | " \n", 1597 | " \n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | " \n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | " \n", 1609 | " \n", 1610 | " \n", 1611 | " \n", 1612 | " \n", 1613 | "
descr_clm
3181RELATED APPLICATIONS \\n This application i...
3404CLAIM OF PRIORITY \\n This application clai...
3354CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3176BACKGROUND \\n 1. Field \\n The system a...
4693CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3099CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
4430FIELD OF THE DISCLOSURE \\n The present dis...
3298CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3304CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3287CONTINUATION-IN-PART \\n This application i...
3174CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
4656TECHNICAL FIELD \\n The present disclosure ...
2554RELATED APPLICATIONS \\n This application i...
594CROSS REFERENCE TO OTHER APPLICATIONS \\n T...
4396CROSS REFERENCE TO RELATED APPLICATION \\n ...
4491CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
\n", 1614 | "
" 1615 | ], 1616 | "text/plain": [ 1617 | " descr_clm\n", 1618 | "3181 RELATED APPLICATIONS \\n This application i...\n", 1619 | "3404 CLAIM OF PRIORITY \\n This application clai...\n", 1620 | "3354 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1621 | "3176 BACKGROUND \\n 1. Field \\n The system a...\n", 1622 | "4693 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1623 | "3099 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1624 | "4430 FIELD OF THE DISCLOSURE \\n The present dis...\n", 1625 | "3298 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1626 | "3304 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1627 | "3287 CONTINUATION-IN-PART \\n This application i...\n", 1628 | "3174 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1629 | "4656 TECHNICAL FIELD \\n The present disclosure ...\n", 1630 | "2554 RELATED APPLICATIONS \\n This application i...\n", 1631 | "594 CROSS REFERENCE TO OTHER APPLICATIONS \\n T...\n", 1632 | "4396 CROSS REFERENCE TO RELATED APPLICATION \\n ...\n", 1633 | "4491 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ..." 1634 | ] 1635 | }, 1636 | "metadata": { 1637 | "tags": [] 1638 | } 1639 | }, 1640 | { 1641 | "output_type": "stream", 1642 | "text": [ 1643 | "\n", 1644 | "'700' predicted as '706' : 21 examples.\n" 1645 | ], 1646 | "name": "stdout" 1647 | }, 1648 | { 1649 | "output_type": "display_data", 1650 | "data": { 1651 | "text/html": [ 1652 | "
\n", 1653 | "\n", 1666 | "\n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | " \n", 1706 | " \n", 1707 | " \n", 1708 | " \n", 1709 | " \n", 1710 | " \n", 1711 | " \n", 1712 | " \n", 1713 | " \n", 1714 | " \n", 1715 | " \n", 1716 | " \n", 1717 | " \n", 1718 | " \n", 1719 | " \n", 1720 | " \n", 1721 | " \n", 1722 | " \n", 1723 | " \n", 1724 | " \n", 1725 | " \n", 1726 | " \n", 1727 | " \n", 1728 | " \n", 1729 | " \n", 1730 | " \n", 1731 | " \n", 1732 | " \n", 1733 | " \n", 1734 | " \n", 1735 | " \n", 1736 | " \n", 1737 | " \n", 1738 | " \n", 1739 | " \n", 1740 | " \n", 1741 | " \n", 1742 | " \n", 1743 | " \n", 1744 | " \n", 1745 | " \n", 1746 | " \n", 1747 | " \n", 1748 | " \n", 1749 | " \n", 1750 | " \n", 1751 | " \n", 1752 | " \n", 1753 | " \n", 1754 | " \n", 1755 | " \n", 1756 | " \n", 1757 | " \n", 1758 | " \n", 1759 | "
descr_clm
5227RELATED APPLICATIONS \\n This application c...
784TECHNICAL FIELD \\n The present disclosure ...
2076CLAIM OF PRIORITY \\n This application is a...
2092CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
2117CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
2090CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
2107CROSS REFERENCE TO RELATED APPLICATION \\n ...
5312FIELD OF THE INVENTION \\n This description...
5318RELATED APPLICATIONS \\n This application c...
2036FIELD \\n Embodiments taught herein relate ...
3641FIELD OF THE INVENTION \\n The present inve...
5061FIELD OF THE INVENTION \\n The present inve...
5082CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
5072CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
2085TECHNICAL FIELD \\n This disclosure relates...
5300REFERENCE TO RELATED APPLICATION \\n This a...
785CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
3961TECHNICAL FIELD \\n The present disclosure ...
774RELATED APPLICATIONS \\n This application c...
5341CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
5083TECHNICAL FIELD \\n Embodiments of the subj...
\n", 1760 | "
" 1761 | ], 1762 | "text/plain": [ 1763 | " descr_clm\n", 1764 | "5227 RELATED APPLICATIONS \\n This application c...\n", 1765 | "784 TECHNICAL FIELD \\n The present disclosure ...\n", 1766 | "2076 CLAIM OF PRIORITY \\n This application is a...\n", 1767 | "2092 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1768 | "2117 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1769 | "2090 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1770 | "2107 CROSS REFERENCE TO RELATED APPLICATION \\n ...\n", 1771 | "5312 FIELD OF THE INVENTION \\n This description...\n", 1772 | "5318 RELATED APPLICATIONS \\n This application c...\n", 1773 | "2036 FIELD \\n Embodiments taught herein relate ...\n", 1774 | "3641 FIELD OF THE INVENTION \\n The present inve...\n", 1775 | "5061 FIELD OF THE INVENTION \\n The present inve...\n", 1776 | "5082 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1777 | "5072 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1778 | "2085 TECHNICAL FIELD \\n This disclosure relates...\n", 1779 | "5300 REFERENCE TO RELATED APPLICATION \\n This a...\n", 1780 | "785 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1781 | "3961 TECHNICAL FIELD \\n The present disclosure ...\n", 1782 | "774 RELATED APPLICATIONS \\n This application c...\n", 1783 | "5341 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1784 | "5083 TECHNICAL FIELD \\n Embodiments of the subj..." 1785 | ] 1786 | }, 1787 | "metadata": { 1788 | "tags": [] 1789 | } 1790 | }, 1791 | { 1792 | "output_type": "stream", 1793 | "text": [ 1794 | "\n", 1795 | "'705' predicted as '706' : 33 examples.\n" 1796 | ], 1797 | "name": "stdout" 1798 | }, 1799 | { 1800 | "output_type": "display_data", 1801 | "data": { 1802 | "text/html": [ 1803 | "
\n", 1804 | "\n", 1817 | "\n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \n", 1848 | " \n", 1849 | " \n", 1850 | " \n", 1851 | " \n", 1852 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | " \n", 1939 | " \n", 1940 | " \n", 1941 | " \n", 1942 | " \n", 1943 | " \n", 1944 | " \n", 1945 | " \n", 1946 | " \n", 1947 | " \n", 1948 | " \n", 1949 | " \n", 1950 | " \n", 1951 | " \n", 1952 | " \n", 1953 | " \n", 1954 | " \n", 1955 | " \n", 1956 | " \n", 1957 | " \n", 1958 | "
descr_clm
7101CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
10682BACKGROUND \\n Advertisers increasingly see...
7030This application is a continuation of U.S. Ser...
7113BACKGROUND \\n Product lifecycle management...
7095FIELD OF THE INVENTION \\n The present inve...
8074RELATED APPLICATIONS \\n This application i...
8069TECHNICAL FIELD \\n The present disclosure ...
10624FIELD OF THE INVENTION \\n The invention re...
7029TECHNICAL FIELD \\n Embodiments of the pres...
7039CLAIM OF PRIORITY \\n This application is a...
530This application claims the benefit of U.S. Pr...
8042REFERENCE TO RELATED APPLICATIONS \\n This ...
9311RELATED APPLICATIONS \\n This patent applic...
542CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
1903TECHNICAL FIELD OF THE INVENTION \\n The in...
572CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
7034RELATED APPLICATIONS \\n This application c...
10632TECHNICAL FIELD \\n The present technology ...
10643PRIORITY \\n This application claims priori...
9356TECHNICAL FIELD \\n The present disclosure ...
9327CROSS REFERENCE TO OTHER APPLICATIONS \\n T...
8046PRIORITY DATA \\n This application claims p...
9344CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
7105BACKGROUND \\n This disclosure relates gene...
7112BACKGROUND \\n Online social networks allow...
562BACKGROUND \\n Unless otherwise indicated h...
7119CROSS REFERENCE TO RELATED APPLICATIONS \\n ...
4255This application is a Continuation of U.S. app...
7972FIELD OF THE INVENTION \\n The present inve...
9335This application relates to U.S. provisional p...
566TECHNICAL FIELD \\n The present invention r...
9349CROSS REFERENCE TO RELATED APPLICATION \\n ...
8044CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...
\n", 1959 | "
" 1960 | ], 1961 | "text/plain": [ 1962 | " descr_clm\n", 1963 | "7101 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1964 | "10682 BACKGROUND \\n Advertisers increasingly see...\n", 1965 | "7030 This application is a continuation of U.S. Ser...\n", 1966 | "7113 BACKGROUND \\n Product lifecycle management...\n", 1967 | "7095 FIELD OF THE INVENTION \\n The present inve...\n", 1968 | "8074 RELATED APPLICATIONS \\n This application i...\n", 1969 | "8069 TECHNICAL FIELD \\n The present disclosure ...\n", 1970 | "10624 FIELD OF THE INVENTION \\n The invention re...\n", 1971 | "7029 TECHNICAL FIELD \\n Embodiments of the pres...\n", 1972 | "7039 CLAIM OF PRIORITY \\n This application is a...\n", 1973 | "530 This application claims the benefit of U.S. Pr...\n", 1974 | "8042 REFERENCE TO RELATED APPLICATIONS \\n This ...\n", 1975 | "9311 RELATED APPLICATIONS \\n This patent applic...\n", 1976 | "542 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1977 | "1903 TECHNICAL FIELD OF THE INVENTION \\n The in...\n", 1978 | "572 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1979 | "7034 RELATED APPLICATIONS \\n This application c...\n", 1980 | "10632 TECHNICAL FIELD \\n The present technology ...\n", 1981 | "10643 PRIORITY \\n This application claims priori...\n", 1982 | "9356 TECHNICAL FIELD \\n The present disclosure ...\n", 1983 | "9327 CROSS REFERENCE TO OTHER APPLICATIONS \\n T...\n", 1984 | "8046 PRIORITY DATA \\n This application claims p...\n", 1985 | "9344 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1986 | "7105 BACKGROUND \\n This disclosure relates gene...\n", 1987 | "7112 BACKGROUND \\n Online social networks allow...\n", 1988 | "562 BACKGROUND \\n Unless otherwise indicated h...\n", 1989 | "7119 CROSS REFERENCE TO RELATED APPLICATIONS \\n ...\n", 1990 | "4255 This application is a Continuation of U.S. app...\n", 1991 | "7972 FIELD OF THE INVENTION \\n The present inve...\n", 1992 | "9335 This application relates to U.S. provisional p...\n", 1993 | "566 TECHNICAL FIELD \\n The present invention r...\n", 1994 | "9349 CROSS REFERENCE TO RELATED APPLICATION \\n ...\n", 1995 | "8044 CROSS-REFERENCE TO RELATED APPLICATIONS \\n ..." 1996 | ] 1997 | }, 1998 | "metadata": { 1999 | "tags": [] 2000 | } 2001 | }, 2002 | { 2003 | "output_type": "stream", 2004 | "text": [ 2005 | "\n" 2006 | ], 2007 | "name": "stdout" 2008 | } 2009 | ] 2010 | }, 2011 | { 2012 | "metadata": { 2013 | "id": "x2ewl40Vkwq5", 2014 | "colab_type": "code", 2015 | "colab": { 2016 | "base_uri": "https://localhost:8080/", 2017 | "height": 1190 2018 | }, 2019 | "outputId": "92b93def-183a-488a-8abb-b8dc32bec787" 2020 | }, 2021 | "cell_type": "code", 2022 | "source": [ 2023 | "# model.fit(features, labels)\n", 2024 | "from sklearn.feature_selection import chi2\n", 2025 | "\n", 2026 | "N = 10\n", 2027 | "for category, category_id in sorted(category_to_id.items()):\n", 2028 | " indices = np.argsort(model.coef_[category_id])\n", 2029 | " feature_names = np.array(tfidf.get_feature_names())[indices]\n", 2030 | " unigrams = [v for v in reversed(feature_names) if len(v.split(' ')) == 1][:N]\n", 2031 | " bigrams = [v for v in reversed(feature_names) if len(v.split(' ')) == 2][:N]\n", 2032 | " print(\"# '{}':\".format(category))\n", 2033 | " print(\" . Top unigrams:\\n . {}\".format('\\n . '.join(unigrams)))\n", 2034 | " print(\" . Top bigrams:\\n . {}\".format('\\n . '.join(bigrams)))" 2035 | ], 2036 | "execution_count": 86, 2037 | "outputs": [ 2038 | { 2039 | "output_type": "stream", 2040 | "text": [ 2041 | "# '700':\n", 2042 | " . Top unigrams:\n", 2043 | " . control\n", 2044 | " . controller\n", 2045 | " . power\n", 2046 | " . controlling\n", 2047 | " . sensor\n", 2048 | " . robot\n", 2049 | " . temperature\n", 2050 | " . position\n", 2051 | " . energy\n", 2052 | " . controlled\n", 2053 | " . Top bigrams:\n", 2054 | " . control device\n", 2055 | " . control unit\n", 2056 | " . controller configured\n", 2057 | " . perspective view\n", 2058 | " . method controlling\n", 2059 | " . control signal\n", 2060 | " . control method\n", 2061 | " . power supply\n", 2062 | " . configured control\n", 2063 | " . according claim\n", 2064 | "# '705':\n", 2065 | " . Top unigrams:\n", 2066 | " . payment\n", 2067 | " . transaction\n", 2068 | " . price\n", 2069 | " . financial\n", 2070 | " . customer\n", 2071 | " . provider\n", 2072 | " . purchase\n", 2073 | " . transactions\n", 2074 | " . account\n", 2075 | " . sale\n", 2076 | " . Top bigrams:\n", 2077 | " . service provider\n", 2078 | " . mobile device\n", 2079 | " . point sale\n", 2080 | " . credit card\n", 2081 | " . method claim\n", 2082 | " . implemented method\n", 2083 | " . goods services\n", 2084 | " . readable medium\n", 2085 | " . account associated\n", 2086 | " . computer executable\n", 2087 | "# '706':\n", 2088 | " . Top unigrams:\n", 2089 | " . learning\n", 2090 | " . probability\n", 2091 | " . model\n", 2092 | " . training\n", 2093 | " . rule\n", 2094 | " . neural\n", 2095 | " . prediction\n", 2096 | " . knowledge\n", 2097 | " . predicting\n", 2098 | " . artificial\n", 2099 | " . Top bigrams:\n", 2100 | " . machine learning\n", 2101 | " . neural network\n", 2102 | " . training data\n", 2103 | " . knowledge base\n", 2104 | " . artificial intelligence\n", 2105 | " . artificial neural\n", 2106 | " . neural networks\n", 2107 | " . data set\n", 2108 | " . input data\n", 2109 | " . readable storage\n" 2110 | ], 2111 | "name": "stdout" 2112 | } 2113 | ] 2114 | }, 2115 | { 2116 | "metadata": { 2117 | "id": "3vnSfRNAmp1s", 2118 | "colab_type": "text" 2119 | }, 2120 | "cell_type": "markdown", 2121 | "source": [ 2122 | "### Do phrases appear in 706 and 705?" 2123 | ] 2124 | }, 2125 | { 2126 | "metadata": { 2127 | "id": "skrSqDfXlL03", 2128 | "colab_type": "code", 2129 | "colab": { 2130 | "base_uri": "https://localhost:8080/", 2131 | "height": 85 2132 | }, 2133 | "outputId": "384cc934-1a4d-438f-ce78-ac3705f144c1" 2134 | }, 2135 | "cell_type": "code", 2136 | "source": [ 2137 | "df[df.descr_clm.str.lower().str.contains('machine learning')].code.value_counts()" 2138 | ], 2139 | "execution_count": 87, 2140 | "outputs": [ 2141 | { 2142 | "output_type": "execute_result", 2143 | "data": { 2144 | "text/plain": [ 2145 | "706 178\n", 2146 | "705 17\n", 2147 | "700 8\n", 2148 | "Name: code, dtype: int64" 2149 | ] 2150 | }, 2151 | "metadata": { 2152 | "tags": [] 2153 | }, 2154 | "execution_count": 87 2155 | } 2156 | ] 2157 | }, 2158 | { 2159 | "metadata": { 2160 | "id": "gijkozQumnCY", 2161 | "colab_type": "code", 2162 | "colab": { 2163 | "base_uri": "https://localhost:8080/", 2164 | "height": 85 2165 | }, 2166 | "outputId": "9289e3b9-6ae8-48b7-b968-4c22480bfd44" 2167 | }, 2168 | "cell_type": "code", 2169 | "source": [ 2170 | "df[df.descr_clm.str.lower().str.contains('linear regression')].code.value_counts()" 2171 | ], 2172 | "execution_count": 88, 2173 | "outputs": [ 2174 | { 2175 | "output_type": "execute_result", 2176 | "data": { 2177 | "text/plain": [ 2178 | "706 32\n", 2179 | "700 7\n", 2180 | "705 6\n", 2181 | "Name: code, dtype: int64" 2182 | ] 2183 | }, 2184 | "metadata": { 2185 | "tags": [] 2186 | }, 2187 | "execution_count": 88 2188 | } 2189 | ] 2190 | }, 2191 | { 2192 | "metadata": { 2193 | "id": "iwEMrTwvm43b", 2194 | "colab_type": "code", 2195 | "colab": { 2196 | "base_uri": "https://localhost:8080/", 2197 | "height": 85 2198 | }, 2199 | "outputId": "4c5d6264-9e88-4c5e-fb06-34e9ac8048cf" 2200 | }, 2201 | "cell_type": "code", 2202 | "source": [ 2203 | "df[df.descr_clm.str.lower().str.contains('statistical analysis')].code.value_counts()" 2204 | ], 2205 | "execution_count": 89, 2206 | "outputs": [ 2207 | { 2208 | "output_type": "execute_result", 2209 | "data": { 2210 | "text/plain": [ 2211 | "706 32\n", 2212 | "700 11\n", 2213 | "705 7\n", 2214 | "Name: code, dtype: int64" 2215 | ] 2216 | }, 2217 | "metadata": { 2218 | "tags": [] 2219 | }, 2220 | "execution_count": 89 2221 | } 2222 | ] 2223 | }, 2224 | { 2225 | "metadata": { 2226 | "id": "eBnm0SJvm9AJ", 2227 | "colab_type": "code", 2228 | "colab": { 2229 | "base_uri": "https://localhost:8080/", 2230 | "height": 85 2231 | }, 2232 | "outputId": "dcf3d278-7190-4b68-be56-e38a28e217c3" 2233 | }, 2234 | "cell_type": "code", 2235 | "source": [ 2236 | "df[df.descr_clm.str.lower().str.contains('statistics')].code.value_counts()" 2237 | ], 2238 | "execution_count": 90, 2239 | "outputs": [ 2240 | { 2241 | "output_type": "execute_result", 2242 | "data": { 2243 | "text/plain": [ 2244 | "706 86\n", 2245 | "705 50\n", 2246 | "700 11\n", 2247 | "Name: code, dtype: int64" 2248 | ] 2249 | }, 2250 | "metadata": { 2251 | "tags": [] 2252 | }, 2253 | "execution_count": 90 2254 | } 2255 | ] 2256 | }, 2257 | { 2258 | "metadata": { 2259 | "id": "WK9MNL-3nALj", 2260 | "colab_type": "code", 2261 | "colab": { 2262 | "base_uri": "https://localhost:8080/", 2263 | "height": 85 2264 | }, 2265 | "outputId": "11aebc86-5908-4e5b-dd35-d701a1ebedee" 2266 | }, 2267 | "cell_type": "code", 2268 | "source": [ 2269 | "df[df.descr_clm.str.lower().str.contains('probability')].code.value_counts()" 2270 | ], 2271 | "execution_count": 91, 2272 | "outputs": [ 2273 | { 2274 | "output_type": "execute_result", 2275 | "data": { 2276 | "text/plain": [ 2277 | "706 270\n", 2278 | "705 58\n", 2279 | "700 44\n", 2280 | "Name: code, dtype: int64" 2281 | ] 2282 | }, 2283 | "metadata": { 2284 | "tags": [] 2285 | }, 2286 | "execution_count": 91 2287 | } 2288 | ] 2289 | }, 2290 | { 2291 | "metadata": { 2292 | "id": "ccSVD9POnKvZ", 2293 | "colab_type": "text" 2294 | }, 2295 | "cell_type": "markdown", 2296 | "source": [ 2297 | "**Statistics and probability appear in both 706 and 705, meaning, there is possible opportunity to describe those processes in a different way so that it is read as a machine learning patent application instead of a business method patent (high risk of Alice rejection).**" 2298 | ] 2299 | }, 2300 | { 2301 | "metadata": { 2302 | "id": "w-eNQBPznuec", 2303 | "colab_type": "text" 2304 | }, 2305 | "cell_type": "markdown", 2306 | "source": [ 2307 | "# Test model on new patent application" 2308 | ] 2309 | }, 2310 | { 2311 | "metadata": { 2312 | "id": "6ssQAsHtnHNU", 2313 | "colab_type": "code", 2314 | "colab": { 2315 | "base_uri": "https://localhost:8080/", 2316 | "height": 88 2317 | }, 2318 | "cellView": "both", 2319 | "outputId": "d4fb8403-d15f-4e2c-bf72-2102105f6796" 2320 | }, 2321 | "cell_type": "code", 2322 | "source": [ 2323 | "#@title Default title text\n", 2324 | "texts = \"1. A system comprising:a memory that stores computer executable components a processor that executes computer executable components stored in the memory wherein the computer executable components comprise:a snapshot component that generates a first sequence of multi-dimensional time series data and a second sequence of multi-dimensional time series data from multi-dimensional time series data associated with at least two different data types generated by a data system over a consecutive period of time and a machine learning component that analyzes the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data using a convolutional neuralnetwork system to predict an event associated with the multi-dimensional time series data. 2. The system of claim 1 wherein the snapshot component generates a data matrix associated with the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data and wherein the machine learning component analyzes the data matrix using the convolutional neural network system. 3. The system of claim 1 wherein the machine learning component analyzes the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data using a parallel network of processing units associated with the convolutional neural network system and wherein performance of the processor to predict the event associated with the multi-dimensional time series data is improved by employing the convolutional neural network system. 4. The system of claim 1 wherein the snapshot component determines a size of the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data based on data associated with the convolutional neural network system. 5. The system of claim 1 wherein the snapshot component determines a set of parameters for the convolutional neuralnetwork system based on a classification of data associated with the convolutional neural network system. 6. The system of claim 1 wherein a portion of data from the first sequence of multi-dimensional time series data corresponds to the second sequence of multi-dimensional time series data and wherein the machine learning component analyzes the portion of the data. 7. The system of claim 1 wherein at least the first sequence of multi-dimensional time series data comprises dynamic data that is related to other data included in the first sequence of multi-dimensional time series data or the second sequence of multi-dimensional time series data and wherein the machine learning component analyzes the dynamic data. 8. The system of claim 1 wherein the snapshot component generates the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data based on feedback data indicative of information for tuning the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data. 9. The system of claim 1 wherein the machine learning component adjusts the convolutional neural network system based on feedback data indicative of information for tuning the convolutional neural network system. 10. The system of claim 1 wherein the convolutional neuralnetwork system is associated with nonlinear processing of features associated with the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data. 11. The system of claim 1 further comprising:a display component that generates a user interface to display output data associated with the event in a human interpretable format. 12-19. (canceled) 20. A computer program product for machine learning the computer program product comprising a computer readable storage medium having program instructions embodied therewith the program instructions executable by processor to cause the processor to:generate by the processor a data matrix based on first time series data associated with a first data source and second time series data associated with a second data source analyze by the processor the data matrix associated with the first time series data and the second time series data using a convolutional neural network system and generate by the processor prediction data that comprises a predicted event associated with the first time series data and the second time series data based on data generated by the convolutional neural network system. 21. The computer program product of claim 20 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor the data matrix based on the data generated by the convolutional neural network system. 22. The computer program product of claim 20 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor a convolutional neural networkassociated with the convolutional neural network system based on the data generated by the convolutional neuralnetwork system. 23. A computer program product for machine learning the computer program product comprising a computer readable storage medium having program instructions embodied therewith the program instructions executable by processor to cause the processor to:generate by the processor a data matrix based on multi-dimensional time series data associated with at least two different data types perform by the processor a convolutional neural network process based on the data matrix associated with the multi-dimensional time series data and generate by the processor prediction data that comprises a predicted event associated with the multi-dimensional time series data based on the convolutional neural network process. 24. The computer program product of claim 23 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor the data matrix based on the prediction data. 25. The computer program product of claim 23 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor a convolutional neural networkassociated with the convolutional neural network process based on the prediction data.\\\"\" #@param {type:\"string\"}\n", 2325 | "texts = [texts]\n", 2326 | "# text from patent https://patentimages.storage.googleapis.com/e2/3f/75/2f32412145e159/US20180260697A1.pdf\n", 2327 | "\n", 2328 | "text_features = tfidf.transform(texts)\n", 2329 | "predictions = model.predict(text_features)\n", 2330 | "for text, predicted in zip(texts, predictions):\n", 2331 | " print(\" - Predicted as: '{}'\".format(id_to_category[predicted]))\n", 2332 | " print(\"\")\n", 2333 | " print('\"{}\"'.format(text))" 2334 | ], 2335 | "execution_count": 94, 2336 | "outputs": [ 2337 | { 2338 | "output_type": "stream", 2339 | "text": [ 2340 | " - Predicted as: '706'\n", 2341 | "\n", 2342 | "\"1. A system comprising:a memory that stores computer executable components a processor that executes computer executable components stored in the memory wherein the computer executable components comprise:a snapshot component that generates a first sequence of multi-dimensional time series data and a second sequence of multi-dimensional time series data from multi-dimensional time series data associated with at least two different data types generated by a data system over a consecutive period of time and a machine learning component that analyzes the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data using a convolutional neuralnetwork system to predict an event associated with the multi-dimensional time series data. 2. The system of claim 1 wherein the snapshot component generates a data matrix associated with the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data and wherein the machine learning component analyzes the data matrix using the convolutional neural network system. 3. The system of claim 1 wherein the machine learning component analyzes the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data using a parallel network of processing units associated with the convolutional neural network system and wherein performance of the processor to predict the event associated with the multi-dimensional time series data is improved by employing the convolutional neural network system. 4. The system of claim 1 wherein the snapshot component determines a size of the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data based on data associated with the convolutional neural network system. 5. The system of claim 1 wherein the snapshot component determines a set of parameters for the convolutional neuralnetwork system based on a classification of data associated with the convolutional neural network system. 6. The system of claim 1 wherein a portion of data from the first sequence of multi-dimensional time series data corresponds to the second sequence of multi-dimensional time series data and wherein the machine learning component analyzes the portion of the data. 7. The system of claim 1 wherein at least the first sequence of multi-dimensional time series data comprises dynamic data that is related to other data included in the first sequence of multi-dimensional time series data or the second sequence of multi-dimensional time series data and wherein the machine learning component analyzes the dynamic data. 8. The system of claim 1 wherein the snapshot component generates the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data based on feedback data indicative of information for tuning the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data. 9. The system of claim 1 wherein the machine learning component adjusts the convolutional neural network system based on feedback data indicative of information for tuning the convolutional neural network system. 10. The system of claim 1 wherein the convolutional neuralnetwork system is associated with nonlinear processing of features associated with the first sequence of multi-dimensional time series data and the second sequence of multi-dimensional time series data. 11. The system of claim 1 further comprising:a display component that generates a user interface to display output data associated with the event in a human interpretable format. 12-19. (canceled) 20. A computer program product for machine learning the computer program product comprising a computer readable storage medium having program instructions embodied therewith the program instructions executable by processor to cause the processor to:generate by the processor a data matrix based on first time series data associated with a first data source and second time series data associated with a second data source analyze by the processor the data matrix associated with the first time series data and the second time series data using a convolutional neural network system and generate by the processor prediction data that comprises a predicted event associated with the first time series data and the second time series data based on data generated by the convolutional neural network system. 21. The computer program product of claim 20 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor the data matrix based on the data generated by the convolutional neural network system. 22. The computer program product of claim 20 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor a convolutional neural networkassociated with the convolutional neural network system based on the data generated by the convolutional neuralnetwork system. 23. A computer program product for machine learning the computer program product comprising a computer readable storage medium having program instructions embodied therewith the program instructions executable by processor to cause the processor to:generate by the processor a data matrix based on multi-dimensional time series data associated with at least two different data types perform by the processor a convolutional neural network process based on the data matrix associated with the multi-dimensional time series data and generate by the processor prediction data that comprises a predicted event associated with the multi-dimensional time series data based on the convolutional neural network process. 24. The computer program product of claim 23 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor the data matrix based on the prediction data. 25. The computer program product of claim 23 wherein the program instructions are further executable by the processor to cause the processor to:modify by the processor a convolutional neural networkassociated with the convolutional neural network process based on the prediction data.\"\"\n" 2343 | ], 2344 | "name": "stdout" 2345 | } 2346 | ] 2347 | } 2348 | ] 2349 | } --------------------------------------------------------------------------------