From 8efe6e33f6df6c7ea613acc36fa1d75c42782dae Mon Sep 17 00:00:00 2001 From: C-K-Loan Date: Fri, 19 Mar 2021 09:50:38 +0100 Subject: [PATCH 1/2] Integrated return_spark_df --- nlu/pipeline.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nlu/pipeline.py b/nlu/pipeline.py index 27e68ddd..7a34fa90 100644 --- a/nlu/pipeline.py +++ b/nlu/pipeline.py @@ -1194,7 +1194,7 @@ def save(self, path, component='entire_pipeline', overwrite=False): print(f'Stored model in {path}') # else : print('Please fit untrained pipeline first or predict on a String to save it') def predict(self, data, output_level='', positions=False, keep_stranger_features=True, metadata=False, - multithread=True, drop_irrelevant_cols=True, verbose=False): + multithread=True, drop_irrelevant_cols=True, verbose=False,return_spark_df=False): ''' Annotates a Pandas Dataframe/Pandas Series/Numpy Array/Spark DataFrame/Python List strings /Python String @@ -1372,8 +1372,8 @@ def predict(self, data, output_level='', positions=False, keep_stranger_features except: print( "If you use Modin, make sure you have installed 'pip install modin[ray]' or 'pip install modin[dask]' backend for Modin ") - - return self.pythonify_spark_dataframe(sdf, self.output_different_levels, + if return_spark_df : return sdf + else : return self.pythonify_spark_dataframe(sdf, self.output_different_levels, keep_stranger_features=keep_stranger_features, stranger_features=stranger_features, output_metadata=metadata, index_provided=index_provided, From 04a5f00480cf4485040bd9df5482f556420114da Mon Sep 17 00:00:00 2001 From: C-K-Loan Date: Fri, 19 Mar 2021 11:11:09 +0100 Subject: [PATCH 2/2] Examples Added and old notebooks updated --- ...ion_classifier_demo_biological_texts.ipynb | 1 + ...casam_classifier_demo_news_headlines.ipynb | 1 + ...ining_sentiment_classifier_demo_IMDB.ipynb | 2 +- ...timent_classifier_demo_apple_twitter.ipynb | 2 +- ...g_sentiment_classifier_demo_covid_19.ipynb | 1 + ...iment_classifier_demo_finanical_news.ipynb | 2 +- ...nt_classifier_demo_natural_disasters.ipynb | 1 + ...ntiment_classifier_demo_stock_market.ipynb | 1 + ...ing_multi_class_text_classifier_demo.ipynb | 2 +- ...ti_class_text_classifier_demo_amazon.ipynb | 2 +- ...timent_classifier_demo_apple_twitter.ipynb | 1 + ...g_sentiment_classifier_demo_covid_19.ipynb | 1 + ...ing_sentiment_classifier_demo_reddit.ipynb | 1 + ...ntiment_classifier_demo_stock_market.ipynb | 1 + ...ng_sentiment_classifier_demo_twitter.ipynb | 1 + ...ual_multi_class_text_classifier_demo.ipynb | 1 + ...ti_class_text_classifier_demo_amazon.ipynb | 1 + ...s_text_classifier_demo_hotel_reviews.ipynb | 1 + .../NER_aspect_airline_ATIS.ipynb | 577 +----------------- .../NLU_ner_CONLL_2003_5class_example.ipynb | 2 +- .../NLU_ner_ONTO_18class_example.ipynb | 2 +- ...pect_based_ner_sentiment_restaurants.ipynb | 358 +---------- 22 files changed, 22 insertions(+), 940 deletions(-) create mode 100644 examples/colab/Training/binary_text_classification/NLU_training_negation_classifier_demo_biological_texts.ipynb create mode 100644 examples/colab/Training/binary_text_classification/NLU_training_sarcasam_classifier_demo_news_headlines.ipynb create mode 100644 examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_covid_19.ipynb create mode 100644 examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_natural_disasters.ipynb create mode 100644 examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_stock_market.ipynb create mode 100644 examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_apple_twitter.ipynb create mode 100644 examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_covid_19.ipynb create mode 100644 examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_reddit.ipynb create mode 100644 examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_stock_market.ipynb create mode 100644 examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_twitter.ipynb create mode 100644 examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo.ipynb create mode 100644 examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_amazon.ipynb create mode 100644 examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_hotel_reviews.ipynb diff --git a/examples/colab/Training/binary_text_classification/NLU_training_negation_classifier_demo_biological_texts.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_negation_classifier_demo_biological_texts.ipynb new file mode 100644 index 00000000..a0556aee --- /dev/null +++ b/examples/colab/Training/binary_text_classification/NLU_training_negation_classifier_demo_biological_texts.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_negation_classifier_demo_biological_texts.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_negation_classifier_demo_biological_texts.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class Biological Negation Classifer Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","You can achieve these results or even better on this dataset with test data : \n","\n","
\n","\n","\n","![Screenshot 2021-02-25 140123.png](data:image/png;base64,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)\n","\n","\n","\n","\n","\n","\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614241644372,"user_tz":-300,"elapsed":92837,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b7007a05-dfcb-4e96-f2ba-35c699f6c253"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 68kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 20.1MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=c6493b191ba1bbe111dcc8ea7139d8d6e0fdc11c923bc238c3391f08bfa6fb92\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Negation Bilogical Texts dataset \n","https://www.kaggle.com/ma7555/bioscope-corpus-negation-annotated\n","#Context\n","The BioScope corpus consists of medical and biological texts annotated for negation and their linguistic scope. This was done to allow a comparison between the development of systems for negation/hedge detection and scope resolution.\n","The corpus is publicly available for research purposes.\n","\n","You can use this corpus to fine-tune a BERT-like model for negation detection.\n","\n","This dataset was created in this format during the COVID-19 crisis as a training set for detecting negations regarding treatment of specific drugs in the released research papers.\n","\n","Creators of the original dataset: MTA-SZTE Research Group on Artificial Intelligence - RGAI\n","https://rgai.inf.u-szeged.hu/node/105\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614241645363,"user_tz":-300,"elapsed":93810,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8173c54a-d215-44e8-a272-f81b7dd204af"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/bioscope_abstract.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 08:26:14-- http://ckl-it.de/wp-content/uploads/2021/02/bioscope_abstract.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 802898 (784K) [text/csv]\n","Saving to: ‘bioscope_abstract.csv’\n","\n","bioscope_abstract.c 100%[===================>] 784.08K 1.20MB/s in 0.6s \n","\n","2021-02-25 08:26:15 (1.20 MB/s) - ‘bioscope_abstract.csv’ saved [802898/802898]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614241645794,"user_tz":-300,"elapsed":94227,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e2d29243-d84e-46a9-f292-738e64ad7de9"},"source":["import pandas as pd\n","train_path = '/content/bioscope_abstract.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df.dropna()\n","train_df = train_df.sample(frac=1).reset_index(drop=True)\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
1529Recent biochemical and genetic studies indicat...negative
1230Insulin dose-dependently increased the PI-3,4,...positive
813It is crucial that these results mirror recent...negative
473In the absence of TCR-mediated activation, Vpr...positive
1545We have shown previously that trifluoromethylk...negative
.........
1027However, the C26 element alone, even when repe...positive
329Whereas the CRE site was essential in mediatin...positive
935In this study, we demonstrate that constitutiv...positive
1266In contrast, the binding activities of NF1 and...positive
121We show that in the human T lymphoblastic tumo...negative
\n","

1600 rows × 2 columns

\n","
"],"text/plain":[" text y\n","1529 Recent biochemical and genetic studies indicat... negative\n","1230 Insulin dose-dependently increased the PI-3,4,... positive\n","813 It is crucial that these results mirror recent... negative\n","473 In the absence of TCR-mediated activation, Vpr... positive\n","1545 We have shown previously that trifluoromethylk... negative\n","... ... ...\n","1027 However, the C26 element alone, even when repe... positive\n","329 Whereas the CRE site was essential in mediatin... positive\n","935 In this study, we demonstrate that constitutiv... positive\n","1266 In contrast, the binding activities of NF1 and... positive\n","121 We show that in the human T lymphoblastic tumo... negative\n","\n","[1600 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1613511904292,"user_tz":-300,"elapsed":13160,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dbced97f-919d-4777-e3e7-cc10d31abff3"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 19\n"," positive 0.62 1.00 0.77 31\n","\n"," accuracy 0.62 50\n"," macro avg 0.31 0.50 0.38 50\n","weighted avg 0.38 0.62 0.47 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextsentimentsentiment_confidencedocumentdefault_name_embeddings
origin_index
0positiveInterestingly, phase 1 adhesion was inversely ...positive0.975958Interestingly, phase 1 adhesion was inversely ...[0.020294584333896637, -0.003580901538953185, ...
1positivePBL constitutively express c-jun transcripts, ...positive0.981556PBL constitutively express c-jun transcripts, ...[0.03842758387327194, 0.004267632961273193, 0....
2negativeErbstatin and genistein inhibited the sIg-cros...positive0.973579Erbstatin and genistein inhibited the sIg-cros...[0.04114547371864319, -0.011271283961832523, 0...
3negativeRecombinant I kappa B-alpha(MAD-3) inhibited t...positive0.963648Recombinant I kappa B-alpha(MAD-3) inhibited t...[-0.008668724447488785, 0.004286200739443302, ...
4positiveUsing electrophoretic mobility shift analysis ...positive0.981299Using electrophoretic mobility shift analysis ...[0.03153171390295029, 0.0300369281321764, 0.01...
5positiveEach binding site contributes to the overall a...positive0.975567Each binding site contributes to the overall a...[0.026832187548279762, 0.06317257136106491, -0...
6positiveIn this investigation an enhanced and prolonge...positive0.978890In this investigation an enhanced and prolonge...[0.03458377718925476, 0.0585494302213192, 0.03...
7positiveThe average values from healthy volunteers did...positive0.923696The average values from healthy volunteers did...[-0.01714322902262211, 0.021471993997693062, -...
8positiveThese studies have been extended to show that ...positive0.970053These studies have been extended to show that ...[0.022129273042082787, -0.05606718361377716, 0...
9positiveIn a variety of other cell types, which displa...positive0.979132In a variety of other cell types, which displa...[0.047291748225688934, -0.007037220057100058, ...
10negativeDose-response experiments suggested that stero...positive0.942210Dose-response experiments suggested that stero...[0.07178540527820587, 0.015175681561231613, -0...
11positiveCompounds that interfere selectively with the ...positive0.965995Compounds that interfere selectively with the ...[0.053061071783304214, 0.02100301906466484, -0...
12positiveTo assess whether this inhibition was mediated...positive0.972738To assess whether this inhibition was mediated...[0.02914738841354847, 0.04804287105798721, 0.0...
13negativeFreshly isolated T cells from lupus patients, ...positive0.938295Freshly isolated T cells from lupus patients, ...[0.05932210013270378, 0.06283659487962723, 0.0...
14positiveIn EMSAs, NF(P) binding was inhibited by the u...positive0.982893In EMSAs, NF(P) binding was inhibited by the u...[0.019155262038111687, 0.024585263803601265, 0...
15positivec-myc did not correlate with c-fos and c-jun p...positive0.972702c-myc did not correlate with c-fos and c-jun p...[0.06592310220003128, -0.04704660177230835, -0...
16positiveInterleukin-2 (IL-2) promoter activity stimula...positive0.973839Interleukin-2 (IL-2) promoter activity stimula...[0.03582179546356201, 0.02672964334487915, 0.0...
17negativeIn this study, we examined seven EBV-positive ...positive0.940680In this study, we examined seven EBV-positive ...[0.05369773879647255, 0.0632983073592186, 0.00...
18positivePhosphorylated Bcl-2 cannot bind calcineurin, ...positive0.978725Phosphorylated Bcl-2 cannot bind calcineurin, ...[0.0348842516541481, 0.03341799974441528, -0.0...
19negativeThere is a single methionine codon-initiated o...positive0.961217There is a single methionine codon-initiated o...[0.05550860986113548, -0.05578289553523064, -0...
20negativeNasal NK- and T-cell lymphomas share the same ...positive0.904758Nasal NK- and T-cell lymphomas share the same ...[0.030753592029213905, 0.030849099159240723, -...
21positiveThus, the requirement for CD28 in IL-2 promote...positive0.971671Thus, the requirement for CD28 in IL-2 promote...[0.0430801659822464, -0.06272805482149124, -0....
22positiveNeither of the two toxins affected kappaB bind...positive0.978535Neither of the two toxins affected kappaB bind...[0.028597429394721985, 0.06279577314853668, -0...
23positiveWe conclude that downregulation of WT1 during ...positive0.976209We conclude that downregulation of WT1 during ...[0.00441081915050745, 0.021023083478212357, -0...
24negativeThe former can become latently infected and ar...positive0.944969The former can become latently infected and ar...[0.037766434252262115, -0.01205922570079565, -...
25positiveDeletion of the 5'-most Ets site had no effect...positive0.980429Deletion of the 5'-most Ets site had no effect...[0.01163046807050705, 0.04765436425805092, 0.0...
26negativeA number of recent studies have described inte...positive0.948274A number of recent studies have described inte...[0.0460846908390522, 0.054417867213487625, 0.0...
27negativeWe suggest that extinction of Ig genes is part...positive0.933735We suggest that extinction of Ig genes is part...[0.013370374217629433, -0.028526239097118378, ...
28positiveIn some patients, no activation of RelA/NFkapp...positive0.973488In some patients, no activation of RelA/NFkapp...[0.001402425579726696, 0.058718983083963394, -...
29negativeThese may partly account for the differential ...positive0.936957These may partly account for the differential ...[-0.007175407372415066, 0.011748190969228745, ...
30positiveSimilarly, in transfection experiments in whic...positive0.980887Similarly, in transfection experiments in whic...[0.011392833665013313, -0.023685814812779427, ...
31positiveHowever, the molecular basis for the commitmen...positive0.965524However, the molecular basis for the commitmen...[0.04663031920790672, -0.011451571248471737, -...
32positiveIn vitro translated MAD-3 protein was found to...positive0.974413In vitro translated MAD-3 protein was found to...[0.020160771906375885, 0.011534353718161583, 0...
33positiveWe also tested for the ability of defensins NP...positive0.971970We also tested for the ability of defensins NP...[0.0475110188126564, -0.01823158748447895, 0.0...
34positiveIn the absence of TCR-mediated activation, Vpr...positive0.978770In the absence of TCR-mediated activation, Vpr...[0.039186377078294754, 0.030655119568109512, -...
35negativeConversely, IL-4 and IL-13 markedly and signif...positive0.943897Conversely, IL-4 and IL-13 markedly and signif...[0.039589762687683105, 0.03933874890208244, -0...
36negativeThese results suggest that secretion of PGE2 b...positive0.958460These results suggest that secretion of PGE2 b...[0.021247662603855133, 0.015753811225295067, 0...
37negativeLike other enhancers, the Ig heavy chain enhan...positive0.961463Like other enhancers, the Ig heavy chain enhan...[0.05650434270501137, 0.005788780748844147, -0...
38negativeA principal objective of the present study was...positive0.964000A principal objective of the present study was...[0.017783455550670624, -0.026092059910297394, ...
39negativeTo investigate whether the molar ratio of HSF2...positive0.976527To investigate whether the molar ratio of HSF2...[0.033542290329933167, 0.006205122452229261, 0...
40negativeThe expression of the gene encoding the granul...positive0.959701The expression of the gene encoding the granul...[0.04365483671426773, 0.023773200809955597, -0...
41positiveTransactivation of PTHrP by Tax was seen in T ...positive0.979695Transactivation of PTHrP by Tax was seen in T ...[0.019169364124536514, -0.03477424755692482, 0...
42positiveHere we report that human leukaemia cells carr...positive0.962115Here we report that human leukaemia cells carr...[0.00010157756332773715, 0.006516697350889444,...
43negativeFurthermore, the hemin-induced accumulation of...positive0.972569Furthermore, the hemin-induced accumulation of...[0.063593789935112, 0.043789442628622055, 0.00...
44positiveNAC had no effect on the half-life of E-select...positive0.977131NAC had no effect on the half-life of E-select...[0.0225575752556324, 0.04326668754220009, -0.0...
45positiveGranulocyte/macrophage colony-stimulating fact...positive0.970762Granulocyte/macrophage colony-stimulating fact...[0.04828358814120293, -0.006254654377698898, -...
46positiveWe have shown that 1-(5-chloronaphthalene-1-su...positive0.974028We have shown that 1-(5-chloronaphthalene-1-su...[0.02836417406797409, 0.0573764331638813, 0.01...
47negativeDuring the course of serious bacterial infecti...positive0.908578During the course of serious bacterial infecti...[0.04267750680446625, 0.03990871459245682, -0....
48positiveWe here report that (i) like PML-RAR alpha exp...positive0.979658We here report that (i) like PML-RAR alpha exp...[0.018129097297787666, -0.04197037220001221, 0...
49positiveAnalysis of Tax mutants showed that two mutant...positive0.961423Analysis of Tax mutants showed that two mutant...[0.06011602282524109, -0.02545783296227455, -0...
\n","
"],"text/plain":[" y ... default_name_embeddings\n","origin_index ... \n","0 positive ... [0.020294584333896637, -0.003580901538953185, ...\n","1 positive ... [0.03842758387327194, 0.004267632961273193, 0....\n","2 negative ... [0.04114547371864319, -0.011271283961832523, 0...\n","3 negative ... [-0.008668724447488785, 0.004286200739443302, ...\n","4 positive ... [0.03153171390295029, 0.0300369281321764, 0.01...\n","5 positive ... [0.026832187548279762, 0.06317257136106491, -0...\n","6 positive ... [0.03458377718925476, 0.0585494302213192, 0.03...\n","7 positive ... [-0.01714322902262211, 0.021471993997693062, -...\n","8 positive ... [0.022129273042082787, -0.05606718361377716, 0...\n","9 positive ... [0.047291748225688934, -0.007037220057100058, ...\n","10 negative ... [0.07178540527820587, 0.015175681561231613, -0...\n","11 positive ... [0.053061071783304214, 0.02100301906466484, -0...\n","12 positive ... [0.02914738841354847, 0.04804287105798721, 0.0...\n","13 negative ... [0.05932210013270378, 0.06283659487962723, 0.0...\n","14 positive ... [0.019155262038111687, 0.024585263803601265, 0...\n","15 positive ... [0.06592310220003128, -0.04704660177230835, -0...\n","16 positive ... [0.03582179546356201, 0.02672964334487915, 0.0...\n","17 negative ... [0.05369773879647255, 0.0632983073592186, 0.00...\n","18 positive ... [0.0348842516541481, 0.03341799974441528, -0.0...\n","19 negative ... [0.05550860986113548, -0.05578289553523064, -0...\n","20 negative ... [0.030753592029213905, 0.030849099159240723, -...\n","21 positive ... [0.0430801659822464, -0.06272805482149124, -0....\n","22 positive ... [0.028597429394721985, 0.06279577314853668, -0...\n","23 positive ... [0.00441081915050745, 0.021023083478212357, -0...\n","24 negative ... [0.037766434252262115, -0.01205922570079565, -...\n","25 positive ... [0.01163046807050705, 0.04765436425805092, 0.0...\n","26 negative ... [0.0460846908390522, 0.054417867213487625, 0.0...\n","27 negative ... [0.013370374217629433, -0.028526239097118378, ...\n","28 positive ... [0.001402425579726696, 0.058718983083963394, -...\n","29 negative ... [-0.007175407372415066, 0.011748190969228745, ...\n","30 positive ... [0.011392833665013313, -0.023685814812779427, ...\n","31 positive ... [0.04663031920790672, -0.011451571248471737, -...\n","32 positive ... [0.020160771906375885, 0.011534353718161583, 0...\n","33 positive ... [0.0475110188126564, -0.01823158748447895, 0.0...\n","34 positive ... [0.039186377078294754, 0.030655119568109512, -...\n","35 negative ... [0.039589762687683105, 0.03933874890208244, -0...\n","36 negative ... [0.021247662603855133, 0.015753811225295067, 0...\n","37 negative ... [0.05650434270501137, 0.005788780748844147, -0...\n","38 negative ... [0.017783455550670624, -0.026092059910297394, ...\n","39 negative ... [0.033542290329933167, 0.006205122452229261, 0...\n","40 negative ... [0.04365483671426773, 0.023773200809955597, -0...\n","41 positive ... [0.019169364124536514, -0.03477424755692482, 0...\n","42 positive ... [0.00010157756332773715, 0.006516697350889444,...\n","43 negative ... [0.063593789935112, 0.043789442628622055, 0.00...\n","44 positive ... [0.0225575752556324, 0.04326668754220009, -0.0...\n","45 positive ... [0.04828358814120293, -0.006254654377698898, -...\n","46 positive ... [0.02836417406797409, 0.0573764331638813, 0.01...\n","47 negative ... [0.04267750680446625, 0.03990871459245682, -0....\n","48 positive ... [0.018129097297787666, -0.04197037220001221, 0...\n","49 positive ... [0.06011602282524109, -0.02545783296227455, -0...\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1613511988627,"user_tz":-300,"elapsed":3430,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ea26e4fd-de90-4d43-b39b-16b313b91ff9"},"source":["fitted_pipe.predict(\"The virus had a direct impact on the nervous system\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentsentiment_confidencedocumentdefault_name_embeddings
origin_index
0positive0.936225The virus had a direct impact on the nervous s...[0.005800435785204172, 0.025611303746700287, -...
\n","
"],"text/plain":[" sentiment ... default_name_embeddings\n","origin_index ... \n","0 positive ... [0.005800435785204172, 0.025611303746700287, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1613511989123,"user_tz":-300,"elapsed":609,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3b24ad6b-5e8a-4abb-946b-9c18dce55dcf"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1613512001863,"user_tz":-300,"elapsed":6700,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"33ca4330-d026-4b6e-ac70-64a0edadc2e6"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 19\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.72 1.00 0.84 31\n","\n"," accuracy 0.62 50\n"," macro avg 0.24 0.33 0.28 50\n","weighted avg 0.45 0.62 0.52 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextsentimentsentiment_confidencedocumentdefault_name_embeddings
origin_index
0positiveInterestingly, phase 1 adhesion was inversely ...positive0.858951Interestingly, phase 1 adhesion was inversely ...[0.020294584333896637, -0.003580901538953185, ...
1positivePBL constitutively express c-jun transcripts, ...positive0.900715PBL constitutively express c-jun transcripts, ...[0.03842758387327194, 0.004267632961273193, 0....
2negativeErbstatin and genistein inhibited the sIg-cros...positive0.787789Erbstatin and genistein inhibited the sIg-cros...[0.04114547371864319, -0.011271283961832523, 0...
3negativeRecombinant I kappa B-alpha(MAD-3) inhibited t...positive0.740510Recombinant I kappa B-alpha(MAD-3) inhibited t...[-0.008668724447488785, 0.004286200739443302, ...
4positiveUsing electrophoretic mobility shift analysis ...positive0.865358Using electrophoretic mobility shift analysis ...[0.03153171390295029, 0.0300369281321764, 0.01...
5positiveEach binding site contributes to the overall a...positive0.885173Each binding site contributes to the overall a...[0.026832187548279762, 0.06317257136106491, -0...
6positiveIn this investigation an enhanced and prolonge...positive0.839118In this investigation an enhanced and prolonge...[0.03458377718925476, 0.0585494302213192, 0.03...
7positiveThe average values from healthy volunteers did...positive0.775531The average values from healthy volunteers did...[-0.01714322902262211, 0.021471993997693062, -...
8positiveThese studies have been extended to show that ...positive0.766982These studies have been extended to show that ...[0.022129273042082787, -0.05606718361377716, 0...
9positiveIn a variety of other cell types, which displa...positive0.895120In a variety of other cell types, which displa...[0.047291748225688934, -0.007037220057100058, ...
10negativeDose-response experiments suggested that stero...positive0.613039Dose-response experiments suggested that stero...[0.07178540527820587, 0.015175681561231613, -0...
11positiveCompounds that interfere selectively with the ...positive0.823946Compounds that interfere selectively with the ...[0.053061071783304214, 0.02100301906466484, -0...
12positiveTo assess whether this inhibition was mediated...positive0.834207To assess whether this inhibition was mediated...[0.02914738841354847, 0.04804287105798721, 0.0...
13negativeFreshly isolated T cells from lupus patients, ...neutral0.585066Freshly isolated T cells from lupus patients, ...[0.05932210013270378, 0.06283659487962723, 0.0...
14positiveIn EMSAs, NF(P) binding was inhibited by the u...positive0.921363In EMSAs, NF(P) binding was inhibited by the u...[0.019155262038111687, 0.024585263803601265, 0...
15positivec-myc did not correlate with c-fos and c-jun p...positive0.831225c-myc did not correlate with c-fos and c-jun p...[0.06592310220003128, -0.04704660177230835, -0...
16positiveInterleukin-2 (IL-2) promoter activity stimula...positive0.833683Interleukin-2 (IL-2) promoter activity stimula...[0.03582179546356201, 0.02672964334487915, 0.0...
17negativeIn this study, we examined seven EBV-positive ...neutral0.544334In this study, we examined seven EBV-positive ...[0.05369773879647255, 0.0632983073592186, 0.00...
18positivePhosphorylated Bcl-2 cannot bind calcineurin, ...positive0.862028Phosphorylated Bcl-2 cannot bind calcineurin, ...[0.0348842516541481, 0.03341799974441528, -0.0...
19negativeThere is a single methionine codon-initiated o...positive0.738093There is a single methionine codon-initiated o...[0.05550860986113548, -0.05578289553523064, -0...
20negativeNasal NK- and T-cell lymphomas share the same ...neutral0.525487Nasal NK- and T-cell lymphomas share the same ...[0.030753592029213905, 0.030849099159240723, -...
21positiveThus, the requirement for CD28 in IL-2 promote...positive0.925509Thus, the requirement for CD28 in IL-2 promote...[0.0430801659822464, -0.06272805482149124, -0....
22positiveNeither of the two toxins affected kappaB bind...positive0.884952Neither of the two toxins affected kappaB bind...[0.028597429394721985, 0.06279577314853668, -0...
23positiveWe conclude that downregulation of WT1 during ...positive0.796671We conclude that downregulation of WT1 during ...[0.00441081915050745, 0.021023083478212357, -0...
24negativeThe former can become latently infected and ar...neutral0.579465The former can become latently infected and ar...[0.037766434252262115, -0.01205922570079565, -...
25positiveDeletion of the 5'-most Ets site had no effect...positive0.941455Deletion of the 5'-most Ets site had no effect...[0.01163046807050705, 0.04765436425805092, 0.0...
26negativeA number of recent studies have described inte...positive0.606441A number of recent studies have described inte...[0.0460846908390522, 0.054417867213487625, 0.0...
27negativeWe suggest that extinction of Ig genes is part...neutral0.585354We suggest that extinction of Ig genes is part...[0.013370374217629433, -0.028526239097118378, ...
28positiveIn some patients, no activation of RelA/NFkapp...positive0.912251In some patients, no activation of RelA/NFkapp...[0.001402425579726696, 0.058718983083963394, -...
29negativeThese may partly account for the differential ...positive0.695873These may partly account for the differential ...[-0.007175407372415066, 0.011748190969228745, ...
30positiveSimilarly, in transfection experiments in whic...positive0.870236Similarly, in transfection experiments in whic...[0.011392833665013313, -0.023685814812779427, ...
31positiveHowever, the molecular basis for the commitmen...positive0.826238However, the molecular basis for the commitmen...[0.04663031920790672, -0.011451571248471737, -...
32positiveIn vitro translated MAD-3 protein was found to...positive0.814683In vitro translated MAD-3 protein was found to...[0.020160771906375885, 0.011534353718161583, 0...
33positiveWe also tested for the ability of defensins NP...positive0.843203We also tested for the ability of defensins NP...[0.0475110188126564, -0.01823158748447895, 0.0...
34positiveIn the absence of TCR-mediated activation, Vpr...positive0.888412In the absence of TCR-mediated activation, Vpr...[0.039186377078294754, 0.030655119568109512, -...
35negativeConversely, IL-4 and IL-13 markedly and signif...positive0.608741Conversely, IL-4 and IL-13 markedly and signif...[0.039589762687683105, 0.03933874890208244, -0...
36negativeThese results suggest that secretion of PGE2 b...neutral0.597105These results suggest that secretion of PGE2 b...[0.021247662603855133, 0.015753811225295067, 0...
37negativeLike other enhancers, the Ig heavy chain enhan...positive0.766628Like other enhancers, the Ig heavy chain enhan...[0.05650434270501137, 0.005788780748844147, -0...
38negativeA principal objective of the present study was...positive0.733849A principal objective of the present study was...[0.017783455550670624, -0.026092059910297394, ...
39negativeTo investigate whether the molar ratio of HSF2...positive0.797511To investigate whether the molar ratio of HSF2...[0.033542290329933167, 0.006205122452229261, 0...
40negativeThe expression of the gene encoding the granul...positive0.601104The expression of the gene encoding the granul...[0.04365483671426773, 0.023773200809955597, -0...
41positiveTransactivation of PTHrP by Tax was seen in T ...positive0.909007Transactivation of PTHrP by Tax was seen in T ...[0.019169364124536514, -0.03477424755692482, 0...
42positiveHere we report that human leukaemia cells carr...positive0.704064Here we report that human leukaemia cells carr...[0.00010157756332773715, 0.006516697350889444,...
43negativeFurthermore, the hemin-induced accumulation of...positive0.768831Furthermore, the hemin-induced accumulation of...[0.063593789935112, 0.043789442628622055, 0.00...
44positiveNAC had no effect on the half-life of E-select...positive0.834020NAC had no effect on the half-life of E-select...[0.0225575752556324, 0.04326668754220009, -0.0...
45positiveGranulocyte/macrophage colony-stimulating fact...positive0.836410Granulocyte/macrophage colony-stimulating fact...[0.04828358814120293, -0.006254654377698898, -...
46positiveWe have shown that 1-(5-chloronaphthalene-1-su...positive0.762240We have shown that 1-(5-chloronaphthalene-1-su...[0.02836417406797409, 0.0573764331638813, 0.01...
47negativeDuring the course of serious bacterial infecti...neutral0.525606During the course of serious bacterial infecti...[0.04267750680446625, 0.03990871459245682, -0....
48positiveWe here report that (i) like PML-RAR alpha exp...positive0.849820We here report that (i) like PML-RAR alpha exp...[0.018129097297787666, -0.04197037220001221, 0...
49positiveAnalysis of Tax mutants showed that two mutant...positive0.872556Analysis of Tax mutants showed that two mutant...[0.06011602282524109, -0.02545783296227455, -0...
\n","
"],"text/plain":[" y ... default_name_embeddings\n","origin_index ... \n","0 positive ... [0.020294584333896637, -0.003580901538953185, ...\n","1 positive ... [0.03842758387327194, 0.004267632961273193, 0....\n","2 negative ... [0.04114547371864319, -0.011271283961832523, 0...\n","3 negative ... [-0.008668724447488785, 0.004286200739443302, ...\n","4 positive ... [0.03153171390295029, 0.0300369281321764, 0.01...\n","5 positive ... [0.026832187548279762, 0.06317257136106491, -0...\n","6 positive ... [0.03458377718925476, 0.0585494302213192, 0.03...\n","7 positive ... [-0.01714322902262211, 0.021471993997693062, -...\n","8 positive ... [0.022129273042082787, -0.05606718361377716, 0...\n","9 positive ... [0.047291748225688934, -0.007037220057100058, ...\n","10 negative ... [0.07178540527820587, 0.015175681561231613, -0...\n","11 positive ... [0.053061071783304214, 0.02100301906466484, -0...\n","12 positive ... [0.02914738841354847, 0.04804287105798721, 0.0...\n","13 negative ... [0.05932210013270378, 0.06283659487962723, 0.0...\n","14 positive ... [0.019155262038111687, 0.024585263803601265, 0...\n","15 positive ... [0.06592310220003128, -0.04704660177230835, -0...\n","16 positive ... [0.03582179546356201, 0.02672964334487915, 0.0...\n","17 negative ... [0.05369773879647255, 0.0632983073592186, 0.00...\n","18 positive ... [0.0348842516541481, 0.03341799974441528, -0.0...\n","19 negative ... [0.05550860986113548, -0.05578289553523064, -0...\n","20 negative ... [0.030753592029213905, 0.030849099159240723, -...\n","21 positive ... [0.0430801659822464, -0.06272805482149124, -0....\n","22 positive ... [0.028597429394721985, 0.06279577314853668, -0...\n","23 positive ... [0.00441081915050745, 0.021023083478212357, -0...\n","24 negative ... [0.037766434252262115, -0.01205922570079565, -...\n","25 positive ... [0.01163046807050705, 0.04765436425805092, 0.0...\n","26 negative ... [0.0460846908390522, 0.054417867213487625, 0.0...\n","27 negative ... [0.013370374217629433, -0.028526239097118378, ...\n","28 positive ... [0.001402425579726696, 0.058718983083963394, -...\n","29 negative ... [-0.007175407372415066, 0.011748190969228745, ...\n","30 positive ... [0.011392833665013313, -0.023685814812779427, ...\n","31 positive ... [0.04663031920790672, -0.011451571248471737, -...\n","32 positive ... [0.020160771906375885, 0.011534353718161583, 0...\n","33 positive ... [0.0475110188126564, -0.01823158748447895, 0.0...\n","34 positive ... [0.039186377078294754, 0.030655119568109512, -...\n","35 negative ... [0.039589762687683105, 0.03933874890208244, -0...\n","36 negative ... [0.021247662603855133, 0.015753811225295067, 0...\n","37 negative ... [0.05650434270501137, 0.005788780748844147, -0...\n","38 negative ... [0.017783455550670624, -0.026092059910297394, ...\n","39 negative ... [0.033542290329933167, 0.006205122452229261, 0...\n","40 negative ... [0.04365483671426773, 0.023773200809955597, -0...\n","41 positive ... [0.019169364124536514, -0.03477424755692482, 0...\n","42 positive ... [0.00010157756332773715, 0.006516697350889444,...\n","43 negative ... [0.063593789935112, 0.043789442628622055, 0.00...\n","44 positive ... [0.0225575752556324, 0.04326668754220009, -0.0...\n","45 positive ... [0.04828358814120293, -0.006254654377698898, -...\n","46 positive ... [0.02836417406797409, 0.0573764331638813, 0.01...\n","47 negative ... [0.04267750680446625, 0.03990871459245682, -0....\n","48 positive ... [0.018129097297787666, -0.04197037220001221, 0...\n","49 positive ... [0.06011602282524109, -0.02545783296227455, -0...\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# 7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nxWFzQOhjWC8","executionInfo":{"status":"ok","timestamp":1613512013319,"user_tz":-300,"elapsed":983,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b6e7dea3-3f5e-4f3d-a66b-b0f05fa799d9"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1614243224688,"user_tz":-300,"elapsed":1555054,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1b70666f-d178-403d-e43a-e7897625a03a"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.95 0.86 0.90 793\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.91 0.92 0.92 807\n","\n"," accuracy 0.89 1600\n"," macro avg 0.62 0.59 0.61 1600\n","weighted avg 0.93 0.89 0.91 1600\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Fxx4yNkNVGFl","executionInfo":{"status":"ok","timestamp":1614243593910,"user_tz":-300,"elapsed":367888,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e73da2f7-91f6-4107-e896-34afc9397a8b"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.93 0.86 0.89 207\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.91 0.87 0.89 193\n","\n"," accuracy 0.87 400\n"," macro avg 0.61 0.58 0.59 400\n","weighted avg 0.92 0.87 0.89 400\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613515743123,"user_tz":-300,"elapsed":205815,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"70eca3dc-2a52-42ec-e19d-dfd67c141f97"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613515758156,"user_tz":-300,"elapsed":220493,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ce0620e9-6cae-4e55-e873-d0079cfa028e"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('The virus had a direct impact on the nervous system')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddingssentimentdocument
origin_index
00.999432[0.19975340366363525, 0.40417471528053284, 0.3...negativeThe virus had a direct impact on the nervous s...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999432 ... The virus had a direct impact on the nervous s...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"status":"ok","timestamp":1613515758158,"user_tz":-300,"elapsed":220271,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c04fd8ca-9a81-4356-db41-121becaf6cd4"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sarcasam_classifier_demo_news_headlines.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sarcasam_classifier_demo_news_headlines.ipynb new file mode 100644 index 00000000..8a84b8fe --- /dev/null +++ b/examples/colab/Training/binary_text_classification/NLU_training_sarcasam_classifier_demo_news_headlines.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sarcasam_classifier_demo_news_headlines.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sarcasam_classifier_demo_news_headlines.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class News Headlines Sarcasam Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","
\n","\n","![img.png](data:image/png;base64,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)\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","![Screenshot 2021-02-25 150812.png](data:image/png;base64,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)\n","\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","\n","! pip install nlu pyspark==2.4.7 > /dev/null \n","\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download News Headlines Sarcsam dataset \n","https://www.kaggle.com/rmisra/news-headlines-dataset-for-sarcasm-detection\n","#Context\n","Past studies in Sarcasm Detection mostly make use of Twitter datasets collected using hashtag based supervision but such datasets are noisy in terms of labels and language. Furthermore, many tweets are replies to other tweets and detecting sarcasm in these requires the availability of contextual tweets.\n","\n","To overcome the limitations related to noise in Twitter datasets, this News Headlines dataset for Sarcasm Detection is collected from two news website. TheOnion aims at producing sarcastic versions of current events and we collected all the headlines from News in Brief and News in Photos categories (which are sarcastic). We collect real (and non-sarcastic) news headlines from HuffPost.\n","\n","This new dataset has following advantages over the existing Twitter datasets:\n","\n","Since news headlines are written by professionals in a formal manner, there are no spelling mistakes and informal usage. This reduces the sparsity and also increases the chance of finding pre-trained embeddings.\n","\n","Furthermore, since the sole purpose of TheOnion is to publish sarcastic news, we get high-quality labels with much less noise as compared to Twitter datasets.\n","\n","Unlike tweets which are replies to other tweets, the news headlines we obtained are self-contained. This would help us in teasing apart the real sarcastic elements.\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614242478532,"user_tz":-300,"elapsed":78739,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"42b94da2-ea42-4895-899a-09d98141d256"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/Sarcasm_Headlines_Dataset_v2.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 08:40:07-- http://ckl-it.de/wp-content/uploads/2021/02/Sarcasm_Headlines_Dataset_v2.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 2381880 (2.3M) [text/csv]\n","Saving to: ‘Sarcasm_Headlines_Dataset_v2.csv’\n","\n","Sarcasm_Headlines_D 100%[===================>] 2.27M 2.68MB/s in 0.8s \n","\n","2021-02-25 08:40:09 (2.68 MB/s) - ‘Sarcasm_Headlines_Dataset_v2.csv’ saved [2381880/2381880]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614242478540,"user_tz":-300,"elapsed":78735,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"69286e1f-6b94-4cac-b2d2-ed85a2900dd4"},"source":["import pandas as pd\n","test_path = '/content/Sarcasm_Headlines_Dataset_v2.csv'\n","train_df = pd.read_csv(test_path,sep=\",\")\n","cols = [\"y\",\"text\"]\n","train_df = train_df[cols]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
699negativedonald trump's 'do not congratulate' putin blu...
9614negativethe best clothes for the man-child in your life
3202positivereport: good thing world has unlimited quantit...
8497negativehow a family's lack of access to medical marij...
3328negativesean bean's most memorable death wasn't 'lord ...
.........
5893positiveolympic speed skater thinking about maybe taki...
3905positivedick durbin wakes up chained to radiator with ...
8607negativetaraji p. henson reacts to first family's thou...
4404negativeparenting in the time of viral
1690positivekavanaugh surprised senate not questioning fac...
\n","

8000 rows × 2 columns

\n","
"],"text/plain":[" y text\n","699 negative donald trump's 'do not congratulate' putin blu...\n","9614 negative the best clothes for the man-child in your life\n","3202 positive report: good thing world has unlimited quantit...\n","8497 negative how a family's lack of access to medical marij...\n","3328 negative sean bean's most memorable death wasn't 'lord ...\n","... ... ...\n","5893 positive olympic speed skater thinking about maybe taki...\n","3905 positive dick durbin wakes up chained to radiator with ...\n","8607 negative taraji p. henson reacts to first family's thou...\n","4404 negative parenting in the time of viral\n","1690 positive kavanaugh surprised senate not questioning fac...\n","\n","[8000 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1613513699785,"user_tz":-300,"elapsed":107605,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f7071472-6bfe-493a-9c9a-0c67c4a28b83"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 1.00 0.54 0.70 26\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.96 0.96 24\n","\n"," accuracy 0.74 50\n"," macro avg 0.65 0.50 0.55 50\n","weighted avg 0.98 0.74 0.82 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingsdocumentsentiment_confidencetextysentiment
origin_index
0[0.03101399727165699, -0.06800110638141632, -0...briefcase full of porn0.681521briefcase full of pornpositivepositive
1[-0.04206841439008713, 0.014935214072465897, 0...here's carrie fisher in 'one of the most enter...0.784738here's carrie fisher in 'one of the most enter...negativenegative
2[0.05720885097980499, -0.004087412729859352, -...transplanted new yorker disappointed with loca...0.749485transplanted new yorker disappointed with loca...positivepositive
3[-0.06800246238708496, -0.01590467058122158, -...this 'catfight' clip pauses anne heche and san...0.719429this 'catfight' clip pauses anne heche and san...negativenegative
4[-0.010691618546843529, -0.011138608679175377,...congress establishes bill suggestion hotline0.794444congress establishes bill suggestion hotlinepositivepositive
5[0.06491611897945404, -0.022880295291543007, -...ben carson suggests obama's iran deal is 'anti...0.655964ben carson suggests obama's iran deal is 'anti...negativenegative
6[-0.06249837204813957, 0.026482177898287773, 0...eden baylee is a stranger at sunset0.708668eden baylee is a stranger at sunsetnegativenegative
7[-0.03163134679198265, 0.034580837935209274, 0...lois gibbs: 'the government wouldn't help me, ...0.684051lois gibbs: 'the government wouldn't help me, ...negativenegative
8[0.05561395362019539, -0.04143591225147247, -0...time-warner ceo announces plans to merge with ...0.807884time-warner ceo announces plans to merge with ...positivepositive
9[-0.0431799553334713, -0.046702779829502106, -...typhoon meranti slams into china causing mayhem0.653778typhoon meranti slams into china causing mayhemnegativepositive
10[0.01190741267055273, -0.038865745067596436, -...raid on nacho-supremacist compound uncovers gu...0.686112raid on nacho-supremacist compound uncovers gu...positivepositive
11[0.0011607632040977478, 0.03130388632416725, -...goose suddenly realizes it doesn't have to hon...0.662792goose suddenly realizes it doesn't have to hon...positivepositive
12[0.038939230144023895, -0.028029074892401695, ...frantic, last-second study finds old-fashioned...0.746304frantic, last-second study finds old-fashioned...positivepositive
13[-0.023152370005846024, -0.041393812745809555,...couple discovers shop that sells cakes0.640520couple discovers shop that sells cakespositivepositive
14[0.010137411765754223, -0.06706183403730392, -...frito-lay targets blacks with new menthol doritos0.731602frito-lay targets blacks with new menthol doritospositivepositive
15[0.037099793553352356, 0.02509041130542755, -0...all u.s. males renamed dudley0.655183all u.s. males renamed dudleypositivepositive
16[-0.05982975661754608, -0.04541410878300667, -...xabraxian astronomers discover new planet0.774594xabraxian astronomers discover new planetpositivepositive
17[0.01637415960431099, 0.03079209476709366, -0....obama blasts afghans for expelling reporter --...0.556610obama blasts afghans for expelling reporter --...negativeneutral
18[0.053151000291109085, -0.04056103900074959, 0...riz ahmed, mindy kaling, aziz ansari and other...0.672518riz ahmed, mindy kaling, aziz ansari and other...negativenegative
19[-0.005488495342433453, 0.009531817398965359, ...human slave from future remembers when cyber m...0.659418human slave from future remembers when cyber m...positivepositive
20[-0.0410454235970974, -0.04932034760713577, -0...toward a fairer admissions process0.599870toward a fairer admissions processnegativeneutral
21[0.015400867909193039, 0.010604296810925007, 0...cupid cop gave out roses, cards on valentine's...0.562837cupid cop gave out roses, cards on valentine's...negativeneutral
22[-0.011158468201756477, 0.047883182764053345, ...new york to host 1998 ill-will games0.753071new york to host 1998 ill-will gamespositivepositive
23[0.01367797702550888, -0.040253281593322754, -...kendall jenner is 'wonder'-fully blonde in vogue0.737244kendall jenner is 'wonder'-fully blonde in voguenegativenegative
24[-0.07428913563489914, -0.052280243486166, -0....family hoping mother knows birthday nature wal...0.606846family hoping mother knows birthday nature wal...positivepositive
25[-0.0625331699848175, 0.02265137806534767, -0....senate votes 64-36, not sure on what0.750950senate votes 64-36, not sure on whatpositivepositive
26[0.018849631771445274, -0.05681510269641876, -...'the interview' is having a very good weekend ...0.703691'the interview' is having a very good weekend ...negativenegative
27[-0.006397973746061325, -0.01870238408446312, ...mom uses face-painting skills to turn kids int...0.657493mom uses face-painting skills to turn kids int...negativenegative
28[-0.03488464280962944, -0.08252372592687607, -...does policing summons warrants really prevent ...0.535460does policing summons warrants really prevent ...negativeneutral
29[0.019256893545389175, -0.04089582711458206, -...urban polling centers recommend voters start l...0.723588urban polling centers recommend voters start l...positivepositive
30[-0.06287706643342972, -0.019301993772387505, ...deadlocked supreme court: 'someone's voting tw...0.675472deadlocked supreme court: 'someone's voting tw...positivepositive
31[-0.01678450219333172, 0.01658053882420063, -0...the gop has a split personality when it comes ...0.513112the gop has a split personality when it comes ...negativeneutral
32[0.026957523077726364, 0.04000873491168022, -0...world leaders pour into washington to pay last...0.762945world leaders pour into washington to pay last...positivepositive
33[0.07982629537582397, -0.0787980854511261, -0....jyothi rao: on threads of authenticity0.658911jyothi rao: on threads of authenticitynegativenegative
34[0.023493440821766853, -0.0007498250342905521,...bruce jenner okay following deadly car crash0.691150bruce jenner okay following deadly car crashnegativenegative
35[0.033786237239837646, -0.04347962886095047, 0...a guide to sex at 50 and beyond0.559358a guide to sex at 50 and beyondnegativeneutral
36[-0.064402736723423, 0.025162827223539352, 0.0...you may have missed the 6th woman on time's pe...0.689836you may have missed the 6th woman on time's pe...negativenegative
37[-0.002320488216355443, 0.008552802726626396, ...texas moves to block medicaid funding for plan...0.578904texas moves to block medicaid funding for plan...negativeneutral
38[-0.0027419731486588717, -0.06013084575533867,...federal government to be run by cheaper mexica...0.778061federal government to be run by cheaper mexica...positivepositive
39[0.01821870170533657, -0.014606344513595104, -...dog doesn't consider itself part of family0.667528dog doesn't consider itself part of familypositivepositive
40[-0.04760941118001938, -0.01184796541929245, 0...report: doing your part to stop climate change...0.804057report: doing your part to stop climate change...positivepositive
41[0.038119763135910034, -0.0385950542986393, -0...breitbart traffic down as readers now getting ...0.710686breitbart traffic down as readers now getting ...positivepositive
42[-0.020920872688293457, -0.041152868419885635,...obama: i am where i am today because of voting...0.529584obama: i am where i am today because of voting...negativeneutral
43[0.08012807369232178, 0.05087059363722801, -0....kentucky's gop bromance deepens, even without ...0.578254kentucky's gop bromance deepens, even without ...negativeneutral
44[-0.021665776148438454, -0.02926868386566639, ...stop calling young adults \"college kids\"0.535330stop calling young adults \"college kids\"negativeneutral
45[0.03609812259674072, 0.007918721996247768, -0...the real reason trump can't break the gop0.664778the real reason trump can't break the gopnegativenegative
46[-0.05974249914288521, -0.009394897148013115, ...testing: enhanced interrogation in the classroom0.691502testing: enhanced interrogation in the classroomnegativenegative
47[0.028496630489826202, 0.004139357712119818, -...disembodied voice in elevator wants to know wa...0.715279disembodied voice in elevator wants to know wa...positivepositive
48[0.017045874148607254, -0.045841291546821594, ...a classic jason somehow gets mixed into area m...0.585903a classic jason somehow gets mixed into area m...positiveneutral
49[-0.039329949766397476, -0.03347548097372055, ...wisconsin students trumped the rest with their...0.539730wisconsin students trumped the rest with their...negativeneutral
\n","
"],"text/plain":[" default_name_embeddings ... sentiment\n","origin_index ... \n","0 [0.03101399727165699, -0.06800110638141632, -0... ... positive\n","1 [-0.04206841439008713, 0.014935214072465897, 0... ... negative\n","2 [0.05720885097980499, -0.004087412729859352, -... ... positive\n","3 [-0.06800246238708496, -0.01590467058122158, -... ... negative\n","4 [-0.010691618546843529, -0.011138608679175377,... ... positive\n","5 [0.06491611897945404, -0.022880295291543007, -... ... negative\n","6 [-0.06249837204813957, 0.026482177898287773, 0... ... negative\n","7 [-0.03163134679198265, 0.034580837935209274, 0... ... negative\n","8 [0.05561395362019539, -0.04143591225147247, -0... ... positive\n","9 [-0.0431799553334713, -0.046702779829502106, -... ... positive\n","10 [0.01190741267055273, -0.038865745067596436, -... ... positive\n","11 [0.0011607632040977478, 0.03130388632416725, -... ... positive\n","12 [0.038939230144023895, -0.028029074892401695, ... ... positive\n","13 [-0.023152370005846024, -0.041393812745809555,... ... positive\n","14 [0.010137411765754223, -0.06706183403730392, -... ... positive\n","15 [0.037099793553352356, 0.02509041130542755, -0... ... positive\n","16 [-0.05982975661754608, -0.04541410878300667, -... ... positive\n","17 [0.01637415960431099, 0.03079209476709366, -0.... ... neutral\n","18 [0.053151000291109085, -0.04056103900074959, 0... ... negative\n","19 [-0.005488495342433453, 0.009531817398965359, ... ... positive\n","20 [-0.0410454235970974, -0.04932034760713577, -0... ... neutral\n","21 [0.015400867909193039, 0.010604296810925007, 0... ... neutral\n","22 [-0.011158468201756477, 0.047883182764053345, ... ... positive\n","23 [0.01367797702550888, -0.040253281593322754, -... ... negative\n","24 [-0.07428913563489914, -0.052280243486166, -0.... ... positive\n","25 [-0.0625331699848175, 0.02265137806534767, -0.... ... positive\n","26 [0.018849631771445274, -0.05681510269641876, -... ... negative\n","27 [-0.006397973746061325, -0.01870238408446312, ... ... negative\n","28 [-0.03488464280962944, -0.08252372592687607, -... ... neutral\n","29 [0.019256893545389175, -0.04089582711458206, -... ... positive\n","30 [-0.06287706643342972, -0.019301993772387505, ... ... positive\n","31 [-0.01678450219333172, 0.01658053882420063, -0... ... neutral\n","32 [0.026957523077726364, 0.04000873491168022, -0... ... positive\n","33 [0.07982629537582397, -0.0787980854511261, -0.... ... negative\n","34 [0.023493440821766853, -0.0007498250342905521,... ... negative\n","35 [0.033786237239837646, -0.04347962886095047, 0... ... neutral\n","36 [-0.064402736723423, 0.025162827223539352, 0.0... ... negative\n","37 [-0.002320488216355443, 0.008552802726626396, ... ... neutral\n","38 [-0.0027419731486588717, -0.06013084575533867,... ... positive\n","39 [0.01821870170533657, -0.014606344513595104, -... ... positive\n","40 [-0.04760941118001938, -0.01184796541929245, 0... ... positive\n","41 [0.038119763135910034, -0.0385950542986393, -0... ... positive\n","42 [-0.020920872688293457, -0.041152868419885635,... ... neutral\n","43 [0.08012807369232178, 0.05087059363722801, -0.... ... neutral\n","44 [-0.021665776148438454, -0.02926868386566639, ... ... neutral\n","45 [0.03609812259674072, 0.007918721996247768, -0... ... negative\n","46 [-0.05974249914288521, -0.009394897148013115, ... ... negative\n","47 [0.028496630489826202, 0.004139357712119818, -... ... positive\n","48 [0.017045874148607254, -0.045841291546821594, ... ... neutral\n","49 [-0.039329949766397476, -0.03347548097372055, ... ... neutral\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1613513707167,"user_tz":-300,"elapsed":3892,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a5a0e00d-fb28-4378-b9cb-5c8cfff5dc78"},"source":["fitted_pipe.predict('Aliens are immortal!')\r\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingsdocumentsentiment_confidencesentiment
origin_index
0[-0.0700131505727768, -0.06706050038337708, -0...Aliens are immortal!0.664938positive
\n","
"],"text/plain":[" default_name_embeddings ... sentiment\n","origin_index ... \n","0 [-0.0700131505727768, -0.06706050038337708, -0... ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1613513707169,"user_tz":-300,"elapsed":3879,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7e345cbe-e153-4da1-9655-119ba6e0acaf"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1613513714606,"user_tz":-300,"elapsed":11302,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"baa0d5ed-0008-420c-d50b-3df30a673603"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 1.00 0.96 0.98 26\n"," positive 0.96 1.00 0.98 24\n","\n"," accuracy 0.98 50\n"," macro avg 0.98 0.98 0.98 50\n","weighted avg 0.98 0.98 0.98 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingsdocumentsentiment_confidencetextysentiment
origin_index
0[0.03101399727165699, -0.06800110638141632, -0...briefcase full of porn0.915265briefcase full of pornpositivepositive
1[-0.04206841439008713, 0.014935214072465897, 0...here's carrie fisher in 'one of the most enter...0.987602here's carrie fisher in 'one of the most enter...negativenegative
2[0.05720885097980499, -0.004087412729859352, -...transplanted new yorker disappointed with loca...0.957332transplanted new yorker disappointed with loca...positivepositive
3[-0.06800246238708496, -0.01590467058122158, -...this 'catfight' clip pauses anne heche and san...0.968843this 'catfight' clip pauses anne heche and san...negativenegative
4[-0.010691618546843529, -0.011138608679175377,...congress establishes bill suggestion hotline0.964053congress establishes bill suggestion hotlinepositivepositive
5[0.06491611897945404, -0.022880295291543007, -...ben carson suggests obama's iran deal is 'anti...0.974479ben carson suggests obama's iran deal is 'anti...negativenegative
6[-0.06249837204813957, 0.026482177898287773, 0...eden baylee is a stranger at sunset0.961377eden baylee is a stranger at sunsetnegativenegative
7[-0.03163134679198265, 0.034580837935209274, 0...lois gibbs: 'the government wouldn't help me, ...0.971898lois gibbs: 'the government wouldn't help me, ...negativenegative
8[0.05561395362019539, -0.04143591225147247, -0...time-warner ceo announces plans to merge with ...0.977598time-warner ceo announces plans to merge with ...positivepositive
9[-0.0431799553334713, -0.046702779829502106, -...typhoon meranti slams into china causing mayhem0.638766typhoon meranti slams into china causing mayhemnegativepositive
10[0.01190741267055273, -0.038865745067596436, -...raid on nacho-supremacist compound uncovers gu...0.898022raid on nacho-supremacist compound uncovers gu...positivepositive
11[0.0011607632040977478, 0.03130388632416725, -...goose suddenly realizes it doesn't have to hon...0.870899goose suddenly realizes it doesn't have to hon...positivepositive
12[0.038939230144023895, -0.028029074892401695, ...frantic, last-second study finds old-fashioned...0.946996frantic, last-second study finds old-fashioned...positivepositive
13[-0.023152370005846024, -0.041393812745809555,...couple discovers shop that sells cakes0.854924couple discovers shop that sells cakespositivepositive
14[0.010137411765754223, -0.06706183403730392, -...frito-lay targets blacks with new menthol doritos0.926026frito-lay targets blacks with new menthol doritospositivepositive
15[0.037099793553352356, 0.02509041130542755, -0...all u.s. males renamed dudley0.880769all u.s. males renamed dudleypositivepositive
16[-0.05982975661754608, -0.04541410878300667, -...xabraxian astronomers discover new planet0.971677xabraxian astronomers discover new planetpositivepositive
17[0.01637415960431099, 0.03079209476709366, -0....obama blasts afghans for expelling reporter --...0.946057obama blasts afghans for expelling reporter --...negativenegative
18[0.053151000291109085, -0.04056103900074959, 0...riz ahmed, mindy kaling, aziz ansari and other...0.965899riz ahmed, mindy kaling, aziz ansari and other...negativenegative
19[-0.005488495342433453, 0.009531817398965359, ...human slave from future remembers when cyber m...0.872274human slave from future remembers when cyber m...positivepositive
20[-0.0410454235970974, -0.04932034760713577, -0...toward a fairer admissions process0.947733toward a fairer admissions processnegativenegative
21[0.015400867909193039, 0.010604296810925007, 0...cupid cop gave out roses, cards on valentine's...0.903808cupid cop gave out roses, cards on valentine's...negativenegative
22[-0.011158468201756477, 0.047883182764053345, ...new york to host 1998 ill-will games0.961589new york to host 1998 ill-will gamespositivepositive
23[0.01367797702550888, -0.040253281593322754, -...kendall jenner is 'wonder'-fully blonde in vogue0.979704kendall jenner is 'wonder'-fully blonde in voguenegativenegative
24[-0.07428913563489914, -0.052280243486166, -0....family hoping mother knows birthday nature wal...0.819510family hoping mother knows birthday nature wal...positivepositive
25[-0.0625331699848175, 0.02265137806534767, -0....senate votes 64-36, not sure on what0.940529senate votes 64-36, not sure on whatpositivepositive
26[0.018849631771445274, -0.05681510269641876, -...'the interview' is having a very good weekend ...0.964672'the interview' is having a very good weekend ...negativenegative
27[-0.006397973746061325, -0.01870238408446312, ...mom uses face-painting skills to turn kids int...0.948459mom uses face-painting skills to turn kids int...negativenegative
28[-0.03488464280962944, -0.08252372592687607, -...does policing summons warrants really prevent ...0.805765does policing summons warrants really prevent ...negativenegative
29[0.019256893545389175, -0.04089582711458206, -...urban polling centers recommend voters start l...0.886659urban polling centers recommend voters start l...positivepositive
30[-0.06287706643342972, -0.019301993772387505, ...deadlocked supreme court: 'someone's voting tw...0.841328deadlocked supreme court: 'someone's voting tw...positivepositive
31[-0.01678450219333172, 0.01658053882420063, -0...the gop has a split personality when it comes ...0.896577the gop has a split personality when it comes ...negativenegative
32[0.026957523077726364, 0.04000873491168022, -0...world leaders pour into washington to pay last...0.954260world leaders pour into washington to pay last...positivepositive
33[0.07982629537582397, -0.0787980854511261, -0....jyothi rao: on threads of authenticity0.947035jyothi rao: on threads of authenticitynegativenegative
34[0.023493440821766853, -0.0007498250342905521,...bruce jenner okay following deadly car crash0.969706bruce jenner okay following deadly car crashnegativenegative
35[0.033786237239837646, -0.04347962886095047, 0...a guide to sex at 50 and beyond0.873368a guide to sex at 50 and beyondnegativenegative
36[-0.064402736723423, 0.025162827223539352, 0.0...you may have missed the 6th woman on time's pe...0.969335you may have missed the 6th woman on time's pe...negativenegative
37[-0.002320488216355443, 0.008552802726626396, ...texas moves to block medicaid funding for plan...0.853918texas moves to block medicaid funding for plan...negativenegative
38[-0.0027419731486588717, -0.06013084575533867,...federal government to be run by cheaper mexica...0.950003federal government to be run by cheaper mexica...positivepositive
39[0.01821870170533657, -0.014606344513595104, -...dog doesn't consider itself part of family0.890232dog doesn't consider itself part of familypositivepositive
40[-0.04760941118001938, -0.01184796541929245, 0...report: doing your part to stop climate change...0.978735report: doing your part to stop climate change...positivepositive
41[0.038119763135910034, -0.0385950542986393, -0...breitbart traffic down as readers now getting ...0.885908breitbart traffic down as readers now getting ...positivepositive
42[-0.020920872688293457, -0.041152868419885635,...obama: i am where i am today because of voting...0.913123obama: i am where i am today because of voting...negativenegative
43[0.08012807369232178, 0.05087059363722801, -0....kentucky's gop bromance deepens, even without ...0.947572kentucky's gop bromance deepens, even without ...negativenegative
44[-0.021665776148438454, -0.02926868386566639, ...stop calling young adults \"college kids\"0.829551stop calling young adults \"college kids\"negativenegative
45[0.03609812259674072, 0.007918721996247768, -0...the real reason trump can't break the gop0.977416the real reason trump can't break the gopnegativenegative
46[-0.05974249914288521, -0.009394897148013115, ...testing: enhanced interrogation in the classroom0.969963testing: enhanced interrogation in the classroomnegativenegative
47[0.028496630489826202, 0.004139357712119818, -...disembodied voice in elevator wants to know wa...0.932753disembodied voice in elevator wants to know wa...positivepositive
48[0.017045874148607254, -0.045841291546821594, ...a classic jason somehow gets mixed into area m...0.770142a classic jason somehow gets mixed into area m...positivepositive
49[-0.039329949766397476, -0.03347548097372055, ...wisconsin students trumped the rest with their...0.785354wisconsin students trumped the rest with their...negativenegative
\n","
"],"text/plain":[" default_name_embeddings ... sentiment\n","origin_index ... \n","0 [0.03101399727165699, -0.06800110638141632, -0... ... positive\n","1 [-0.04206841439008713, 0.014935214072465897, 0... ... negative\n","2 [0.05720885097980499, -0.004087412729859352, -... ... positive\n","3 [-0.06800246238708496, -0.01590467058122158, -... ... negative\n","4 [-0.010691618546843529, -0.011138608679175377,... ... positive\n","5 [0.06491611897945404, -0.022880295291543007, -... ... negative\n","6 [-0.06249837204813957, 0.026482177898287773, 0... ... negative\n","7 [-0.03163134679198265, 0.034580837935209274, 0... ... negative\n","8 [0.05561395362019539, -0.04143591225147247, -0... ... positive\n","9 [-0.0431799553334713, -0.046702779829502106, -... ... positive\n","10 [0.01190741267055273, -0.038865745067596436, -... ... positive\n","11 [0.0011607632040977478, 0.03130388632416725, -... ... positive\n","12 [0.038939230144023895, -0.028029074892401695, ... ... positive\n","13 [-0.023152370005846024, -0.041393812745809555,... ... positive\n","14 [0.010137411765754223, -0.06706183403730392, -... ... positive\n","15 [0.037099793553352356, 0.02509041130542755, -0... ... positive\n","16 [-0.05982975661754608, -0.04541410878300667, -... ... positive\n","17 [0.01637415960431099, 0.03079209476709366, -0.... ... negative\n","18 [0.053151000291109085, -0.04056103900074959, 0... ... negative\n","19 [-0.005488495342433453, 0.009531817398965359, ... ... positive\n","20 [-0.0410454235970974, -0.04932034760713577, -0... ... negative\n","21 [0.015400867909193039, 0.010604296810925007, 0... ... negative\n","22 [-0.011158468201756477, 0.047883182764053345, ... ... positive\n","23 [0.01367797702550888, -0.040253281593322754, -... ... negative\n","24 [-0.07428913563489914, -0.052280243486166, -0.... ... positive\n","25 [-0.0625331699848175, 0.02265137806534767, -0.... ... positive\n","26 [0.018849631771445274, -0.05681510269641876, -... ... negative\n","27 [-0.006397973746061325, -0.01870238408446312, ... ... negative\n","28 [-0.03488464280962944, -0.08252372592687607, -... ... negative\n","29 [0.019256893545389175, -0.04089582711458206, -... ... positive\n","30 [-0.06287706643342972, -0.019301993772387505, ... ... positive\n","31 [-0.01678450219333172, 0.01658053882420063, -0... ... negative\n","32 [0.026957523077726364, 0.04000873491168022, -0... ... positive\n","33 [0.07982629537582397, -0.0787980854511261, -0.... ... negative\n","34 [0.023493440821766853, -0.0007498250342905521,... ... negative\n","35 [0.033786237239837646, -0.04347962886095047, 0... ... negative\n","36 [-0.064402736723423, 0.025162827223539352, 0.0... ... negative\n","37 [-0.002320488216355443, 0.008552802726626396, ... ... negative\n","38 [-0.0027419731486588717, -0.06013084575533867,... ... positive\n","39 [0.01821870170533657, -0.014606344513595104, -... ... positive\n","40 [-0.04760941118001938, -0.01184796541929245, 0... ... positive\n","41 [0.038119763135910034, -0.0385950542986393, -0... ... positive\n","42 [-0.020920872688293457, -0.041152868419885635,... ... negative\n","43 [0.08012807369232178, 0.05087059363722801, -0.... ... negative\n","44 [-0.021665776148438454, -0.02926868386566639, ... ... negative\n","45 [0.03609812259674072, 0.007918721996247768, -0... ... negative\n","46 [-0.05974249914288521, -0.009394897148013115, ... ... negative\n","47 [0.028496630489826202, 0.004139357712119818, -... ... positive\n","48 [0.017045874148607254, -0.045841291546821594, ... ... positive\n","49 [-0.039329949766397476, -0.03347548097372055, ... ... negative\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# 7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613513714610,"user_tz":-300,"elapsed":11294,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0eb70967-5ba7-429e-e85b-2365de893647"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"IKK_Ii_gjJfF","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614246277444,"user_tz":-300,"elapsed":3877627,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"851afe21-2adb-41bd-b377-fb61511a08c0"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.91 0.87 0.89 3952\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.90 0.89 0.89 4048\n","\n"," accuracy 0.88 8000\n"," macro avg 0.60 0.59 0.59 8000\n","weighted avg 0.90 0.88 0.89 8000\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614246981422,"user_tz":-300,"elapsed":703959,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6e79124f-a8c9-4129-da93-ca3a3c3abf3f"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.87 0.82 0.84 1048\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.83 0.84 0.83 952\n","\n"," accuracy 0.83 2000\n"," macro avg 0.57 0.55 0.56 2000\n","weighted avg 0.85 0.83 0.84 2000\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613521881494,"user_tz":-300,"elapsed":177870,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8f796a6b-0b73-4840-98de-15766cd8878a"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":106},"executionInfo":{"status":"ok","timestamp":1613521896813,"user_tz":-300,"elapsed":191661,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"57cbefda-d9ac-4c2e-a33d-8f0cb1d3f80a"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('Aliens are immortal!')\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddingssentiment
origin_index
0Aliens are immortal!0.999956[0.3093055188655853, 0.12947319447994232, 0.06...negative
\n","
"],"text/plain":[" document ... sentiment\n","origin_index ... \n","0 Aliens are immortal! ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":14}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613521896815,"user_tz":-300,"elapsed":191024,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b19bd54b-3b00-44a5-afed-cc941b956215"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_IMDB.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_IMDB.ipynb index 490dc371..1c25fc90 100644 --- a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_IMDB.ipynb +++ b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_IMDB.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_IMDB.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_IMDB.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 class IMDB Movie sentiment classifier training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null \n","\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download IMDB dataset\n","https://www.kaggle.com/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews\n","\n","IMDB dataset having 50K movie reviews for natural language processing or Text analytics.\n","This is a dataset for binary sentiment classification containing substantially more data than previous benchmark datasets. We provide a set of 25,000 highly polar movie reviews for training and 25,000 for testing. So, predict the number of positive and negative reviews using either classification or deep learning algorithms.\n","For more dataset information, please go through the following link,\n","http://ai.stanford.edu/~amaas/data/sentiment/"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1610788112062,"user_tz":-300,"elapsed":2594,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a99c604d-fad2-4ace-c9b3-13dcb5893e03"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/IMDB-Dataset.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-01-16 09:07:54-- http://ckl-it.de/wp-content/uploads/2021/01/IMDB-Dataset.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 3288450 (3.1M) [text/csv]\n","Saving to: ‘IMDB-Dataset.csv’\n","\n","IMDB-Dataset.csv 100%[===================>] 3.14M 2.29MB/s in 1.4s \n","\n","2021-01-16 09:07:56 (2.29 MB/s) - ‘IMDB-Dataset.csv’ saved [3288450/3288450]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1610788130009,"user_tz":-300,"elapsed":1019,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"fa40642c-aeea-4506-b40e-3542a49a2ee9"},"source":["import pandas as pd\n","train_path = '/content/IMDB-Dataset.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
0One of the other reviewers has mentioned that ...positive
1A wonderful little production. <br /><br />The...positive
2I thought this was a wonderful way to spend ti...positive
3Basically there's a family where a little boy ...negative
4Petter Mattei's \"Love in the Time of Money\" is...positive
.........
2495Another great movie by Costa-Gavras. It's a gr...negative
2496Though structured totally different from the b...positive
2497Handsome and dashing British airline pilot Geo...positive
2498This film breeches the fine line between satir...negative
2499Mardi Gras: Made in China provides a wonderful...positive
\n","

2500 rows × 2 columns

\n","
"],"text/plain":[" text y\n","0 One of the other reviewers has mentioned that ... positive\n","1 A wonderful little production.

The... positive\n","2 I thought this was a wonderful way to spend ti... positive\n","3 Basically there's a family where a little boy ... negative\n","4 Petter Mattei's \"Love in the Time of Money\" is... positive\n","... ... ...\n","2495 Another great movie by Costa-Gavras. It's a gr... negative\n","2496 Though structured totally different from the b... positive\n","2497 Handsome and dashing British airline pilot Geo... positive\n","2498 This film breeches the fine line between satir... negative\n","2499 Mardi Gras: Made in China provides a wonderful... positive\n","\n","[2500 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1609464660630,"user_tz":-300,"elapsed":19440,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3be85e48-38c8-4a7c-bbd7-226e204fa739"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.70 0.70 0.70 27\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.79 0.65 0.71 23\n","\n"," accuracy 0.68 50\n"," macro avg 0.50 0.45 0.47 50\n","weighted avg 0.74 0.68 0.71 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textdefault_name_embeddingssentimentsentiment_confidenceydocument
origin_index
0One of the other reviewers has mentioned that ...[-0.04935329407453537, -0.01034686528146267, -...positive0.968638positiveOne of the other reviewers has mentioned that ...
1A wonderful little production. <br /><br />The...[0.040489643812179565, -0.054199717938899994, ...negative0.990273positiveA wonderful little production. <br /><br />The...
2I thought this was a wonderful way to spend ti...[0.026364900171756744, 0.07112795859575272, 0....negative0.957352positiveI thought this was a wonderful way to spend ti...
3Basically there's a family where a little boy ...[-0.05151151493191719, 0.008207003585994244, -...negative0.958503negativeBasically there's a family where a little boy ...
4Petter Mattei's \"Love in the Time of Money\" is...[0.06880538165569305, 0.019250543788075447, -0...positive0.999108positivePetter Mattei's \"Love in the Time of Money\" is...
5Probably my all-time favorite movie, a story o...[0.004764211364090443, 0.027671916410326958, -...positive0.993937positiveProbably my all-time favorite movie, a story o...
6I sure would like to see a resurrection of a u...[-0.03813941031694412, -0.03322296217083931, 0...positive0.974884positiveI sure would like to see a resurrection of a u...
7This show was an amazing, fresh & innovative i...[0.010670202784240246, -0.04322813078761101, -...negative0.721451negativeThis show was an amazing, fresh & innovative i...
8Encouraged by the positive comments about this...[0.010801736265420914, -0.07724311947822571, -...positive0.884824negativeEncouraged by the positive comments about this...
9If you like original gut wrenching laughter yo...[-0.0245585348457098, 0.0005475765210576355, -...negative0.850509positiveIf you like original gut wrenching laughter yo...
10Phil the Alien is one of those quirky films wh...[0.023403573781251907, 0.017464609816670418, -...negative0.836944negativePhil the Alien is one of those quirky films wh...
11I saw this movie when I was about 12 when it c...[-0.046517230570316315, -0.025949953123927116,...negative0.999218negativeI saw this movie when I was about 12 when it c...
12So im not a big fan of Boll's work but then ag...[0.0032458826899528503, -0.013339877128601074,...negative0.999841negativeSo im not a big fan of Boll's work but then ag...
13The cast played Shakespeare.<br /><br />Shakes...[0.044309284538030624, 0.061706289649009705, -...neutral0.504574negativeThe cast played Shakespeare.<br /><br />Shakes...
14This a fantastic movie of three prisoners who ...[0.005487383343279362, -0.005359508562833071, ...positive0.956110positiveThis a fantastic movie of three prisoners who ...
15Kind of drawn in by the erotic scenes, only to...[0.04357790946960449, -0.034652918577194214, -...negative0.990112negativeKind of drawn in by the erotic scenes, only to...
16Some films just simply should not be remade. T...[0.006823724135756493, -0.0692802369594574, -0...negative0.996081positiveSome films just simply should not be remade. T...
17This movie made it into one of my top 10 most ...[-0.013747279532253742, -0.0038213622756302357...negative0.999338negativeThis movie made it into one of my top 10 most ...
18I remember this film,it was the first film i h...[-0.005101265385746956, 0.022435873746871948, ...positive0.986708positiveI remember this film,it was the first film i h...
19An awful film! It must have been up against so...[0.011224010959267616, -0.007102800067514181, ...negative0.998881negativeAn awful film! It must have been up against so...
20After the success of Die Hard and it's sequels...[0.022048521786928177, -0.020497862249612808, ...negative0.650546positiveAfter the success of Die Hard and it's sequels...
21I had the terrible misfortune of having to vie...[-0.010102338157594204, -0.05102328583598137, ...negative0.999930negativeI had the terrible misfortune of having to vie...
22What an absolutely stunning movie, if you have...[-0.016428396105766296, 0.007074637804180384, ...positive0.981123positiveWhat an absolutely stunning movie, if you have...
23First of all, let's get a few things straight ...[-0.06437410414218903, -0.029181038960814476, ...negative0.957470negativeFirst of all, let's get a few things straight ...
24This was the worst movie I saw at WorldFest an...[0.03901044651865959, 0.06355303525924683, -0....negative0.999471negativeThis was the worst movie I saw at WorldFest an...
25The Karen Carpenter Story shows a little more ...[-0.021897025406360626, 0.04400184750556946, 0...positive0.997247positiveThe Karen Carpenter Story shows a little more ...
26\"The Cell\" is an exotic masterpiece, a dizzyin...[0.0439823754131794, -0.007468021009117365, -0...positive0.996351positive\"The Cell\" is an exotic masterpiece, a dizzyin...
27This film tried to be too many things all at o...[-0.004155139438807964, -0.03771881386637688, ...neutral0.570219negativeThis film tried to be too many things all at o...
28This movie was so frustrating. Everything seem...[0.015594013035297394, -0.007509331218898296, ...negative0.999906negativeThis movie was so frustrating. Everything seem...
29'War movie' is a Hollywood genre that has been...[-0.036022596061229706, -0.006816706154495478,...negative0.733068positive'War movie' is a Hollywood genre that has been...
30Taut and organically gripping, Edward Dmytryk'...[0.0312348585575819, -0.04670163244009018, -0....positive0.995882positiveTaut and organically gripping, Edward Dmytryk'...
31\"Ardh Satya\" is one of the finest film ever ma...[0.060114260762929916, -0.0590929239988327, -0...positive0.999671positive\"Ardh Satya\" is one of the finest film ever ma...
32My first exposure to the Templarios & not a go...[0.013515714555978775, -0.004898980725556612, ...negative0.999994negativeMy first exposure to the Templarios & not a go...
33One of the most significant quotes from the en...[0.022280631586909294, -0.00839739479124546, -...positive0.997032positiveOne of the most significant quotes from the en...
34I watched this film not really expecting much,...[0.009434111416339874, -0.046402934938669205, ...negative0.992625negativeI watched this film not really expecting much,...
35I bought this film at Blockbuster for $3.00, b...[0.011683089658617973, -0.047437384724617004, ...negative0.999485negativeI bought this film at Blockbuster for $3.00, b...
36The plot is about the death of little children...[-0.0348515659570694, 0.01680166646838188, -0....neutral0.537487negativeThe plot is about the death of little children...
37Ever watched a movie that lost the plot? Well,...[-0.02899913117289543, 0.0164097361266613, -0....negative0.998984negativeEver watched a movie that lost the plot? Well,...
38Okay, so this series kind of takes the route o...[0.002110496163368225, 0.02887572906911373, -0...positive0.965860positiveOkay, so this series kind of takes the route o...
39After sitting through this pile of dung, my hu...[0.013781447894871235, -0.010363072156906128, ...positive0.697232negativeAfter sitting through this pile of dung, my hu...
40It had all the clichés of movies of this type ...[0.03799372911453247, -0.038665950298309326, -...negative0.998307negativeIt had all the clichés of movies of this type ...
41This movie is based on the book, \"A Many Splen...[-0.00033091730438172817, -0.05126418545842171...positive0.998454positiveThis movie is based on the book, \"A Many Splen...
42Of all the films I have seen, this one, The Ra...[0.014630819670855999, -0.04907294735312462, -...negative0.999938negativeOf all the films I have seen, this one, The Ra...
43I had heard good things about \"States of Grace...[0.027017194777727127, 0.002088379580527544, 0...positive0.884466negativeI had heard good things about \"States of Grace...
44This movie struck home for me. Being 29, I rem...[-0.0009387845057062805, -0.048219360411167145...negative0.969341positiveThis movie struck home for me. Being 29, I rem...
45As a disclaimer, I've seen the movie 5-6 times...[0.0065035647712647915, 0.00230638706125319, 0...negative0.967124positiveAs a disclaimer, I've seen the movie 5-6 times...
46Protocol is an implausible movie whose only sa...[0.05113476142287254, 0.04671141505241394, -0....neutral0.593109negativeProtocol is an implausible movie whose only sa...
47How this film could be classified as Drama, I ...[0.011419376358389854, -0.0828876867890358, -0...negative0.991421negativeHow this film could be classified as Drama, I ...
48Preston Sturgis' THE POWER AND THE GLORY was u...[0.024031344801187515, 0.03399205952882767, 0....positive0.994996positivePreston Sturgis' THE POWER AND THE GLORY was u...
49Average (and surprisingly tame) Fulci giallo w...[0.015038557350635529, -0.0037642912939190865,...positive0.996770negativeAverage (and surprisingly tame) Fulci giallo w...
\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","0 One of the other reviewers has mentioned that ... ... One of the other reviewers has mentioned that ...\n","1 A wonderful little production.

The... ... A wonderful little production.

The...\n","2 I thought this was a wonderful way to spend ti... ... I thought this was a wonderful way to spend ti...\n","3 Basically there's a family where a little boy ... ... Basically there's a family where a little boy ...\n","4 Petter Mattei's \"Love in the Time of Money\" is... ... Petter Mattei's \"Love in the Time of Money\" is...\n","5 Probably my all-time favorite movie, a story o... ... Probably my all-time favorite movie, a story o...\n","6 I sure would like to see a resurrection of a u... ... I sure would like to see a resurrection of a u...\n","7 This show was an amazing, fresh & innovative i... ... This show was an amazing, fresh & innovative i...\n","8 Encouraged by the positive comments about this... ... Encouraged by the positive comments about this...\n","9 If you like original gut wrenching laughter yo... ... If you like original gut wrenching laughter yo...\n","10 Phil the Alien is one of those quirky films wh... ... Phil the Alien is one of those quirky films wh...\n","11 I saw this movie when I was about 12 when it c... ... I saw this movie when I was about 12 when it c...\n","12 So im not a big fan of Boll's work but then ag... ... So im not a big fan of Boll's work but then ag...\n","13 The cast played Shakespeare.

Shakes... ... The cast played Shakespeare.

Shakes...\n","14 This a fantastic movie of three prisoners who ... ... This a fantastic movie of three prisoners who ...\n","15 Kind of drawn in by the erotic scenes, only to... ... Kind of drawn in by the erotic scenes, only to...\n","16 Some films just simply should not be remade. T... ... Some films just simply should not be remade. T...\n","17 This movie made it into one of my top 10 most ... ... This movie made it into one of my top 10 most ...\n","18 I remember this film,it was the first film i h... ... I remember this film,it was the first film i h...\n","19 An awful film! It must have been up against so... ... An awful film! It must have been up against so...\n","20 After the success of Die Hard and it's sequels... ... After the success of Die Hard and it's sequels...\n","21 I had the terrible misfortune of having to vie... ... I had the terrible misfortune of having to vie...\n","22 What an absolutely stunning movie, if you have... ... What an absolutely stunning movie, if you have...\n","23 First of all, let's get a few things straight ... ... First of all, let's get a few things straight ...\n","24 This was the worst movie I saw at WorldFest an... ... This was the worst movie I saw at WorldFest an...\n","25 The Karen Carpenter Story shows a little more ... ... The Karen Carpenter Story shows a little more ...\n","26 \"The Cell\" is an exotic masterpiece, a dizzyin... ... \"The Cell\" is an exotic masterpiece, a dizzyin...\n","27 This film tried to be too many things all at o... ... This film tried to be too many things all at o...\n","28 This movie was so frustrating. Everything seem... ... This movie was so frustrating. Everything seem...\n","29 'War movie' is a Hollywood genre that has been... ... 'War movie' is a Hollywood genre that has been...\n","30 Taut and organically gripping, Edward Dmytryk'... ... Taut and organically gripping, Edward Dmytryk'...\n","31 \"Ardh Satya\" is one of the finest film ever ma... ... \"Ardh Satya\" is one of the finest film ever ma...\n","32 My first exposure to the Templarios & not a go... ... My first exposure to the Templarios & not a go...\n","33 One of the most significant quotes from the en... ... One of the most significant quotes from the en...\n","34 I watched this film not really expecting much,... ... I watched this film not really expecting much,...\n","35 I bought this film at Blockbuster for $3.00, b... ... I bought this film at Blockbuster for $3.00, b...\n","36 The plot is about the death of little children... ... The plot is about the death of little children...\n","37 Ever watched a movie that lost the plot? Well,... ... Ever watched a movie that lost the plot? Well,...\n","38 Okay, so this series kind of takes the route o... ... Okay, so this series kind of takes the route o...\n","39 After sitting through this pile of dung, my hu... ... After sitting through this pile of dung, my hu...\n","40 It had all the clichés of movies of this type ... ... It had all the clichés of movies of this type ...\n","41 This movie is based on the book, \"A Many Splen... ... This movie is based on the book, \"A Many Splen...\n","42 Of all the films I have seen, this one, The Ra... ... Of all the films I have seen, this one, The Ra...\n","43 I had heard good things about \"States of Grace... ... I had heard good things about \"States of Grace...\n","44 This movie struck home for me. Being 29, I rem... ... This movie struck home for me. Being 29, I rem...\n","45 As a disclaimer, I've seen the movie 5-6 times... ... As a disclaimer, I've seen the movie 5-6 times...\n","46 Protocol is an implausible movie whose only sa... ... Protocol is an implausible movie whose only sa...\n","47 How this film could be classified as Drama, I ... ... How this film could be classified as Drama, I ...\n","48 Preston Sturgis' THE POWER AND THE GLORY was u... ... Preston Sturgis' THE POWER AND THE GLORY was u...\n","49 Average (and surprisingly tame) Fulci giallo w... ... Average (and surprisingly tame) Fulci giallo w...\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1609464663328,"user_tz":-300,"elapsed":2733,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ae604bdd-49fb-4b5e-978e-5190dd03b227"},"source":["fitted_pipe.predict('It was one of the best films i have ever watched in my entire life !!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingssentimentsentiment_confidencedocument
origin_index
0[0.06468033790588379, -0.040837567299604416, -...positive0.982375Bitcoin is going to the moon!
\n","
"],"text/plain":[" default_name_embeddings ... document\n","origin_index ... \n","0 [0.06468033790588379, -0.040837567299604416, -... ... Bitcoin is going to the moon!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1609464663334,"user_tz":-300,"elapsed":31,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a9059197-9e1c-4afe-ca3b-97c6d310f60c"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1609464673090,"user_tz":-300,"elapsed":9777,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"164e4f03-f48a-4347-95e8-fd3509bf146e"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.81 0.96 0.88 27\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.94 0.70 0.80 23\n","\n"," accuracy 0.84 50\n"," macro avg 0.58 0.55 0.56 50\n","weighted avg 0.87 0.84 0.84 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textdefault_name_embeddingssentimentsentiment_confidenceydocument
origin_index
0One of the other reviewers has mentioned that ...[-0.04935329407453537, -0.01034686528146267, -...positive0.966858positiveOne of the other reviewers has mentioned that ...
1A wonderful little production. <br /><br />The...[0.040489643812179565, -0.054199717938899994, ...negative0.985679positiveA wonderful little production. <br /><br />The...
2I thought this was a wonderful way to spend ti...[0.026364900171756744, 0.07112795859575272, 0....negative0.988745positiveI thought this was a wonderful way to spend ti...
3Basically there's a family where a little boy ...[-0.05151151493191719, 0.008207003585994244, -...negative0.999291negativeBasically there's a family where a little boy ...
4Petter Mattei's \"Love in the Time of Money\" is...[0.06880538165569305, 0.019250543788075447, -0...positive0.999684positivePetter Mattei's \"Love in the Time of Money\" is...
5Probably my all-time favorite movie, a story o...[0.004764211364090443, 0.027671916410326958, -...positive0.996598positiveProbably my all-time favorite movie, a story o...
6I sure would like to see a resurrection of a u...[-0.03813941031694412, -0.03322296217083931, 0...positive0.960203positiveI sure would like to see a resurrection of a u...
7This show was an amazing, fresh & innovative i...[0.010670202784240246, -0.04322813078761101, -...negative0.753273negativeThis show was an amazing, fresh & innovative i...
8Encouraged by the positive comments about this...[0.010801736265420914, -0.07724311947822571, -...negative0.958928negativeEncouraged by the positive comments about this...
9If you like original gut wrenching laughter yo...[-0.0245585348457098, 0.0005475765210576355, -...neutral0.536441positiveIf you like original gut wrenching laughter yo...
10Phil the Alien is one of those quirky films wh...[0.023403573781251907, 0.017464609816670418, -...negative0.959978negativePhil the Alien is one of those quirky films wh...
11I saw this movie when I was about 12 when it c...[-0.046517230570316315, -0.025949953123927116,...negative0.999949negativeI saw this movie when I was about 12 when it c...
12So im not a big fan of Boll's work but then ag...[0.0032458826899528503, -0.013339877128601074,...negative0.999997negativeSo im not a big fan of Boll's work but then ag...
13The cast played Shakespeare.<br /><br />Shakes...[0.044309284538030624, 0.061706289649009705, -...negative0.984033negativeThe cast played Shakespeare.<br /><br />Shakes...
14This a fantastic movie of three prisoners who ...[0.005487383343279362, -0.005359508562833071, ...positive0.775998positiveThis a fantastic movie of three prisoners who ...
15Kind of drawn in by the erotic scenes, only to...[0.04357790946960449, -0.034652918577194214, -...negative0.999683negativeKind of drawn in by the erotic scenes, only to...
16Some films just simply should not be remade. T...[0.006823724135756493, -0.0692802369594574, -0...negative0.999245positiveSome films just simply should not be remade. T...
17This movie made it into one of my top 10 most ...[-0.013747279532253742, -0.0038213622756302357...negative0.999970negativeThis movie made it into one of my top 10 most ...
18I remember this film,it was the first film i h...[-0.005101265385746956, 0.022435873746871948, ...positive0.975574positiveI remember this film,it was the first film i h...
19An awful film! It must have been up against so...[0.011224010959267616, -0.007102800067514181, ...negative0.999990negativeAn awful film! It must have been up against so...
20After the success of Die Hard and it's sequels...[0.022048521786928177, -0.020497862249612808, ...positive0.951596positiveAfter the success of Die Hard and it's sequels...
21I had the terrible misfortune of having to vie...[-0.010102338157594204, -0.05102328583598137, ...negative0.999999negativeI had the terrible misfortune of having to vie...
22What an absolutely stunning movie, if you have...[-0.016428396105766296, 0.007074637804180384, ...positive0.931946positiveWhat an absolutely stunning movie, if you have...
23First of all, let's get a few things straight ...[-0.06437410414218903, -0.029181038960814476, ...negative0.990350negativeFirst of all, let's get a few things straight ...
24This was the worst movie I saw at WorldFest an...[0.03901044651865959, 0.06355303525924683, -0....negative0.999986negativeThis was the worst movie I saw at WorldFest an...
25The Karen Carpenter Story shows a little more ...[-0.021897025406360626, 0.04400184750556946, 0...positive0.999463positiveThe Karen Carpenter Story shows a little more ...
26\"The Cell\" is an exotic masterpiece, a dizzyin...[0.0439823754131794, -0.007468021009117365, -0...positive0.998291positive\"The Cell\" is an exotic masterpiece, a dizzyin...
27This film tried to be too many things all at o...[-0.004155139438807964, -0.03771881386637688, ...negative0.865707negativeThis film tried to be too many things all at o...
28This movie was so frustrating. Everything seem...[0.015594013035297394, -0.007509331218898296, ...negative0.999998negativeThis movie was so frustrating. Everything seem...
29'War movie' is a Hollywood genre that has been...[-0.036022596061229706, -0.006816706154495478,...negative0.993793positive'War movie' is a Hollywood genre that has been...
30Taut and organically gripping, Edward Dmytryk'...[0.0312348585575819, -0.04670163244009018, -0....positive0.997460positiveTaut and organically gripping, Edward Dmytryk'...
31\"Ardh Satya\" is one of the finest film ever ma...[0.060114260762929916, -0.0590929239988327, -0...positive0.999880positive\"Ardh Satya\" is one of the finest film ever ma...
32My first exposure to the Templarios & not a go...[0.013515714555978775, -0.004898980725556612, ...negative1.000000negativeMy first exposure to the Templarios & not a go...
33One of the most significant quotes from the en...[0.022280631586909294, -0.00839739479124546, -...positive0.999292positiveOne of the most significant quotes from the en...
34I watched this film not really expecting much,...[0.009434111416339874, -0.046402934938669205, ...negative0.999848negativeI watched this film not really expecting much,...
35I bought this film at Blockbuster for $3.00, b...[0.011683089658617973, -0.047437384724617004, ...negative0.999993negativeI bought this film at Blockbuster for $3.00, b...
36The plot is about the death of little children...[-0.0348515659570694, 0.01680166646838188, -0....negative0.997690negativeThe plot is about the death of little children...
37Ever watched a movie that lost the plot? Well,...[-0.02899913117289543, 0.0164097361266613, -0....negative0.999995negativeEver watched a movie that lost the plot? Well,...
38Okay, so this series kind of takes the route o...[0.002110496163368225, 0.02887572906911373, -0...positive0.993408positiveOkay, so this series kind of takes the route o...
39After sitting through this pile of dung, my hu...[0.013781447894871235, -0.010363072156906128, ...negative0.905860negativeAfter sitting through this pile of dung, my hu...
40It had all the clichés of movies of this type ...[0.03799372911453247, -0.038665950298309326, -...negative0.999892negativeIt had all the clichés of movies of this type ...
41This movie is based on the book, \"A Many Splen...[-0.00033091730438172817, -0.05126418545842171...positive0.999837positiveThis movie is based on the book, \"A Many Splen...
42Of all the films I have seen, this one, The Ra...[0.014630819670855999, -0.04907294735312462, -...negative1.000000negativeOf all the films I have seen, this one, The Ra...
43I had heard good things about \"States of Grace...[0.027017194777727127, 0.002088379580527544, 0...negative0.978662negativeI had heard good things about \"States of Grace...
44This movie struck home for me. Being 29, I rem...[-0.0009387845057062805, -0.048219360411167145...negative0.993965positiveThis movie struck home for me. Being 29, I rem...
45As a disclaimer, I've seen the movie 5-6 times...[0.0065035647712647915, 0.00230638706125319, 0...negative0.999341positiveAs a disclaimer, I've seen the movie 5-6 times...
46Protocol is an implausible movie whose only sa...[0.05113476142287254, 0.04671141505241394, -0....negative0.913287negativeProtocol is an implausible movie whose only sa...
47How this film could be classified as Drama, I ...[0.011419376358389854, -0.0828876867890358, -0...negative0.999841negativeHow this film could be classified as Drama, I ...
48Preston Sturgis' THE POWER AND THE GLORY was u...[0.024031344801187515, 0.03399205952882767, 0....positive0.998516positivePreston Sturgis' THE POWER AND THE GLORY was u...
49Average (and surprisingly tame) Fulci giallo w...[0.015038557350635529, -0.0037642912939190865,...positive0.995483negativeAverage (and surprisingly tame) Fulci giallo w...
\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","0 One of the other reviewers has mentioned that ... ... One of the other reviewers has mentioned that ...\n","1 A wonderful little production.

The... ... A wonderful little production.

The...\n","2 I thought this was a wonderful way to spend ti... ... I thought this was a wonderful way to spend ti...\n","3 Basically there's a family where a little boy ... ... Basically there's a family where a little boy ...\n","4 Petter Mattei's \"Love in the Time of Money\" is... ... Petter Mattei's \"Love in the Time of Money\" is...\n","5 Probably my all-time favorite movie, a story o... ... Probably my all-time favorite movie, a story o...\n","6 I sure would like to see a resurrection of a u... ... I sure would like to see a resurrection of a u...\n","7 This show was an amazing, fresh & innovative i... ... This show was an amazing, fresh & innovative i...\n","8 Encouraged by the positive comments about this... ... Encouraged by the positive comments about this...\n","9 If you like original gut wrenching laughter yo... ... If you like original gut wrenching laughter yo...\n","10 Phil the Alien is one of those quirky films wh... ... Phil the Alien is one of those quirky films wh...\n","11 I saw this movie when I was about 12 when it c... ... I saw this movie when I was about 12 when it c...\n","12 So im not a big fan of Boll's work but then ag... ... So im not a big fan of Boll's work but then ag...\n","13 The cast played Shakespeare.

Shakes... ... The cast played Shakespeare.

Shakes...\n","14 This a fantastic movie of three prisoners who ... ... This a fantastic movie of three prisoners who ...\n","15 Kind of drawn in by the erotic scenes, only to... ... Kind of drawn in by the erotic scenes, only to...\n","16 Some films just simply should not be remade. T... ... Some films just simply should not be remade. T...\n","17 This movie made it into one of my top 10 most ... ... This movie made it into one of my top 10 most ...\n","18 I remember this film,it was the first film i h... ... I remember this film,it was the first film i h...\n","19 An awful film! It must have been up against so... ... An awful film! It must have been up against so...\n","20 After the success of Die Hard and it's sequels... ... After the success of Die Hard and it's sequels...\n","21 I had the terrible misfortune of having to vie... ... I had the terrible misfortune of having to vie...\n","22 What an absolutely stunning movie, if you have... ... What an absolutely stunning movie, if you have...\n","23 First of all, let's get a few things straight ... ... First of all, let's get a few things straight ...\n","24 This was the worst movie I saw at WorldFest an... ... This was the worst movie I saw at WorldFest an...\n","25 The Karen Carpenter Story shows a little more ... ... The Karen Carpenter Story shows a little more ...\n","26 \"The Cell\" is an exotic masterpiece, a dizzyin... ... \"The Cell\" is an exotic masterpiece, a dizzyin...\n","27 This film tried to be too many things all at o... ... This film tried to be too many things all at o...\n","28 This movie was so frustrating. Everything seem... ... This movie was so frustrating. Everything seem...\n","29 'War movie' is a Hollywood genre that has been... ... 'War movie' is a Hollywood genre that has been...\n","30 Taut and organically gripping, Edward Dmytryk'... ... Taut and organically gripping, Edward Dmytryk'...\n","31 \"Ardh Satya\" is one of the finest film ever ma... ... \"Ardh Satya\" is one of the finest film ever ma...\n","32 My first exposure to the Templarios & not a go... ... My first exposure to the Templarios & not a go...\n","33 One of the most significant quotes from the en... ... One of the most significant quotes from the en...\n","34 I watched this film not really expecting much,... ... I watched this film not really expecting much,...\n","35 I bought this film at Blockbuster for $3.00, b... ... I bought this film at Blockbuster for $3.00, b...\n","36 The plot is about the death of little children... ... The plot is about the death of little children...\n","37 Ever watched a movie that lost the plot? Well,... ... Ever watched a movie that lost the plot? Well,...\n","38 Okay, so this series kind of takes the route o... ... Okay, so this series kind of takes the route o...\n","39 After sitting through this pile of dung, my hu... ... After sitting through this pile of dung, my hu...\n","40 It had all the clichés of movies of this type ... ... It had all the clichés of movies of this type ...\n","41 This movie is based on the book, \"A Many Splen... ... This movie is based on the book, \"A Many Splen...\n","42 Of all the films I have seen, this one, The Ra... ... Of all the films I have seen, this one, The Ra...\n","43 I had heard good things about \"States of Grace... ... I had heard good things about \"States of Grace...\n","44 This movie struck home for me. Being 29, I rem... ... This movie struck home for me. Being 29, I rem...\n","45 As a disclaimer, I've seen the movie 5-6 times... ... As a disclaimer, I've seen the movie 5-6 times...\n","46 Protocol is an implausible movie whose only sa... ... Protocol is an implausible movie whose only sa...\n","47 How this film could be classified as Drama, I ... ... How this film could be classified as Drama, I ...\n","48 Preston Sturgis' THE POWER AND THE GLORY was u... ... Preston Sturgis' THE POWER AND THE GLORY was u...\n","49 Average (and surprisingly tame) Fulci giallo w... ... Average (and surprisingly tame) Fulci giallo w...\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1609469926255,"user_tz":-300,"elapsed":140492,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"64f54fdd-699a-4559-f6e4-74b7b5f3e92e"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.85 0.81 0.83 1234\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.87 0.79 0.83 1266\n","\n"," accuracy 0.80 2500\n"," macro avg 0.57 0.54 0.55 2500\n","weighted avg 0.86 0.80 0.83 2500\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1609470097011,"user_tz":-300,"elapsed":170766,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"59899be4-e33a-4b5e-ff37-df6a9a3994b2"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":127},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1609470112616,"user_tz":-300,"elapsed":15622,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cbe7fc37-7794-4c28-d1de-5ba88d3db58b"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('It was one of the best films i have ever watched in my entire life !!')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimenten_embed_sentence_small_bert_L12_768_embeddingssentiment_confidencedocument
origin_index
0positive[0.09222018718719482, 0.11720675230026245, 0.1...0.999543It was one of the best films i have ever watch...
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 positive ... It was one of the best films i have ever watch...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"status":"ok","timestamp":1609470112618,"user_tz":-300,"elapsed":17,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c7467f93-d619-470f-fd40-c2be1805b83f"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_IMDB.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_IMDB.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 class IMDB Movie sentiment classifier training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,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)\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null \n","\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download IMDB dataset\n","https://www.kaggle.com/lakshmi25npathi/imdb-dataset-of-50k-movie-reviews\n","\n","IMDB dataset having 50K movie reviews for natural language processing or Text analytics.\n","This is a dataset for binary sentiment classification containing substantially more data than previous benchmark datasets. We provide a set of 25,000 highly polar movie reviews for training and 25,000 for testing. So, predict the number of positive and negative reviews using either classification or deep learning algorithms.\n","For more dataset information, please go through the following link,\n","http://ai.stanford.edu/~amaas/data/sentiment/"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614562823085,"user_tz":-300,"elapsed":60044,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d0eb4cc4-8270-41eb-e81d-b013c9567256"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/IMDB-Dataset.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-03-01 01:39:07-- http://ckl-it.de/wp-content/uploads/2021/01/IMDB-Dataset.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 3288450 (3.1M) [text/csv]\n","Saving to: ‘IMDB-Dataset.csv’\n","\n","IMDB-Dataset.csv 100%[===================>] 3.14M 2.26MB/s in 1.4s \n","\n","2021-03-01 01:39:09 (2.26 MB/s) - ‘IMDB-Dataset.csv’ saved [3288450/3288450]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614562823089,"user_tz":-300,"elapsed":60038,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"924e9c0f-514e-45de-9e20-34c099c369f0"},"source":["import pandas as pd\n","train_path = '/content/IMDB-Dataset.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
538Sixth escapade for Freddy Krueger in which he ...negative
725As a long-time fan of all the Star Trek series...negative
219Ed Wood rides again. The fact that this movie ...negative
2302There aren't many good things to say at all ab...negative
2156A humorous voyage into the normally somber fun...positive
.........
339I find the critique of many IMDb users a littl...negative
1838All the kids aged from 14-16 want to see this ...negative
2113Once a wise man from India once said, \"First t...positive
676I have to say this is my favorite movie of all...positive
1887A young couple -- father Ben (solid Charles Ba...positive
\n","

2000 rows × 2 columns

\n","
"],"text/plain":[" text y\n","538 Sixth escapade for Freddy Krueger in which he ... negative\n","725 As a long-time fan of all the Star Trek series... negative\n","219 Ed Wood rides again. The fact that this movie ... negative\n","2302 There aren't many good things to say at all ab... negative\n","2156 A humorous voyage into the normally somber fun... positive\n","... ... ...\n","339 I find the critique of many IMDb users a littl... negative\n","1838 All the kids aged from 14-16 want to see this ... negative\n","2113 Once a wise man from India once said, \"First t... positive\n","676 I have to say this is my favorite movie of all... positive\n","1887 A young couple -- father Ben (solid Charles Ba... positive\n","\n","[2000 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614562949762,"user_tz":-300,"elapsed":186700,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"02d62d97-0d74-4901-aa59-044a24325cbc"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 1.00 0.75 0.86 24\n"," positive 0.81 1.00 0.90 26\n","\n"," accuracy 0.88 50\n"," macro avg 0.91 0.88 0.88 50\n","weighted avg 0.90 0.88 0.88 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentdefault_name_embeddingstextdocumentysentiment_confidence
origin_index
538positive[0.061155349016189575, -0.04764186963438988, -...Sixth escapade for Freddy Krueger in which he ...Sixth escapade for Freddy Krueger in which he ...negative0.661084
725positive[-0.04899926111102104, 0.04536202922463417, -0...As a long-time fan of all the Star Trek series...As a long-time fan of all the Star Trek series...negative0.819501
219negative[0.06203395500779152, -0.015943678095936775, -...Ed Wood rides again. The fact that this movie ...Ed Wood rides again. The fact that this movie ...negative0.990434
2302negative[0.05896253511309624, 0.012287295423448086, -0...There aren't many good things to say at all ab...There aren't many good things to say at all ab...negative0.834288
2156positive[-0.05029047280550003, -0.002712259767577052, ...A humorous voyage into the normally somber fun...A humorous voyage into the normally somber fun...positive0.995070
950positive[0.04065236821770668, 0.006623167544603348, 0....What a good movie! At last a picture revealing...What a good movie! At last a picture revealing...positive0.992898
2454negative[0.053874578326940536, -0.050784021615982056, ...Deep Shock plays out like a TV movie: a whole ...Deep Shock plays out like a TV movie: a whole ...negative0.994428
585positive[0.005484528839588165, -0.003261507721617818, ...A drifter looking for a job is mistaken for a ...A drifter looking for a job is mistaken for a ...positive0.933213
1658positive[0.0026102750562131405, -0.028329210355877876,...Yes, I know that this movie is meant as a come...Yes, I know that this movie is meant as a come...positive0.862425
699positive[0.0034183745738118887, 0.028293922543525696, ...I decided to watch this movie because I'd not ...I decided to watch this movie because I'd not ...negative0.965151
2250positive[-0.026181913912296295, -0.04428006708621979, ...I had heard good things about this film and wa...I had heard good things about this film and wa...positive0.980683
1128negative[0.007198462262749672, 0.002508964156731963, -...This is the worst movie I have ever seen. The ...This is the worst movie I have ever seen. The ...negative0.983800
1092negative[0.0014401263324543834, 0.042675577104091644, ...When I first saw it 9 years ago, when I was 9....When I first saw it 9 years ago, when I was 9....negative0.972695
1786positive[-0.04156527668237686, -0.02018941566348076, -...Excellent endearing film with Peter Falk and P...Excellent endearing film with Peter Falk and P...positive0.997251
354negative[-0.038548123091459274, -0.05298566818237305, ...Like the previous poster, I am from northern V...Like the previous poster, I am from northern V...negative0.977224
97negative[0.05253484845161438, 0.003816538257524371, -0...Well, I like to watch bad horror B-Movies, cau...Well, I like to watch bad horror B-Movies, cau...negative0.995163
1339positive[0.00035910092992708087, -0.03019331395626068,...At a risk of sounding slightly sacrilegious, o...At a risk of sounding slightly sacrilegious, o...positive0.997966
1648positive[0.046263981610536575, 0.05645913630723953, -0...My nose is bent slightly out of shape as I wri...My nose is bent slightly out of shape as I wri...negative0.898811
443negative[0.06970927119255066, -0.03712767735123634, -0...I had been amazed by director Antal's Kontroll...I had been amazed by director Antal's Kontroll...negative0.985158
1968positive[0.02333565428853035, -0.024841919541358948, -...The first time I saw this movie, it didn't see...The first time I saw this movie, it didn't see...positive0.955286
157positive[0.006765617057681084, 0.017314564436674118, -...I've always enjoyed films that depict life as ...I've always enjoyed films that depict life as ...positive0.991408
909positive[0.046574220061302185, -0.06137171760201454, -...I had never seen a film by John Cassavetes up ...I had never seen a film by John Cassavetes up ...positive0.971099
2003positive[0.0015181098133325577, -0.06557010114192963, ...This Showtime cable film features a talented c...This Showtime cable film features a talented c...positive0.898893
2186positive[0.03471103683114052, 0.06530531495809555, 0.0...My cable TV has what's called the Arts channel...My cable TV has what's called the Arts channel...positive0.999113
1109positive[-0.012417787685990334, 0.0360068641602993, -0...I have not read the book that this was based u...I have not read the book that this was based u...positive0.999633
1520positive[-0.010225639678537846, 0.017600659281015396, ...A Murder investigation goes on back stage whil...A Murder investigation goes on back stage whil...positive0.998053
1405positive[-0.038452234119176865, 0.0006458977586589754,...Absolutely stunning, warmth for the head and t...Absolutely stunning, warmth for the head and t...positive0.969840
1936positive[-0.03630257025361061, -0.04945565387606621, -...This story had a good plot to it about four el...This story had a good plot to it about four el...negative0.715630
1009positive[-0.0012479485012590885, -0.018733300268650055...I am a huge fan of Harald Zwart, and I just kn...I am a huge fan of Harald Zwart, and I just kn...positive0.979062
2284positive[0.05055391415953636, 0.01362769864499569, -0....Okay, there are a ton of reviews here, what ca...Okay, there are a ton of reviews here, what ca...positive0.998871
2241positive[-0.06763697415590286, 0.031879279762506485, 0...At the time that this movie was made most hous...At the time that this movie was made most hous...positive0.997658
2259negative[0.057414233684539795, -0.02066304162144661, 0...Okul\"The School\" is a result of a new trend in...Okul\"The School\" is a result of a new trend in...negative0.919953
1488negative[0.048472076654434204, -0.02173914574086666, -...Really, truly, abysmally, garishly, awful. But...Really, truly, abysmally, garishly, awful. But...negative0.997300
258positive[0.02095893770456314, 0.0484045185148716, -0.0...Black comedy isn't always an easy sell. Every ...Black comedy isn't always an easy sell. Every ...positive0.994659
130positive[0.009698283858597279, -0.025106241926550865, ...Two hours ago I was watching this brilliant mo...Two hours ago I was watching this brilliant mo...positive0.968123
1404negative[0.04247045889496803, -0.06722509115934372, -0...I buy or at least watch every Seagall movie. H...I buy or at least watch every Seagall movie. H...negative0.998181
2495negative[0.05309217423200607, -0.0037488690577447414, ...Another great movie by Costa-Gavras. It's a gr...Another great movie by Costa-Gavras. It's a gr...negative0.986873
1651negative[-0.00877030473202467, -0.03184518218040466, -...Okay,I had watched this movie when I was very ...Okay,I had watched this movie when I was very ...negative0.865547
1402positive[0.05373821780085564, -0.015125636011362076, -...ROAD TO PERDITION can be summed up by Thomas N...ROAD TO PERDITION can be summed up by Thomas N...positive0.984621
1039positive[0.020128324627876282, -0.047135304659605026, ...At the height of the 'Celebrity Big Brother' r...At the height of the 'Celebrity Big Brother' r...positive0.999136
1469positive[0.007572077214717865, 0.01606682315468788, 0....Sex,Drugs,Rock & Roll is without a doubt the w...Sex,Drugs,Rock & Roll is without a doubt the w...negative0.971885
398negative[-0.05642805993556976, -0.03362744674086571, -...After a snowstorm, the roads are blocked and t...After a snowstorm, the roads are blocked and t...negative0.908734
2114negative[-0.02119983173906803, 0.04433616250753403, -0...I was very surprised to see that this movie ha...I was very surprised to see that this movie ha...negative0.990297
1317positive[0.03002399578690529, 0.017277313396334648, -0...This is an incredible film. I can't remember t...This is an incredible film. I can't remember t...positive0.978412
943positive[0.038790568709373474, -0.04091215878725052, -...A film for mature, educated audiences...<br />...A film for mature, educated audiences...<br />...positive0.965369
799positive[0.04426809027791023, 0.0171112772077322, -0.0...Thank God this wasn't based on a true story, b...Thank God this wasn't based on a true story, b...positive0.985029
882negative[0.0758691355586052, 0.029356516897678375, -0....How can so many blundering decisions can be ma...How can so many blundering decisions can be ma...negative0.995624
2151negative[0.01764845661818981, -0.03746427595615387, -0...This movie had the potential to be really good...This movie had the potential to be really good...negative0.965565
1498positive[0.05424240231513977, -0.05653670057654381, -0...According to John Ford's lyrically shot, ficti...According to John Ford's lyrically shot, ficti...positive0.993533
674negative[0.032531678676605225, -0.00041807559318840504...worst. movie. ever made. EVER. I have no words...worst. movie. ever made. EVER. I have no words...negative0.997371
\n","
"],"text/plain":[" sentiment ... sentiment_confidence\n","origin_index ... \n","538 positive ... 0.661084\n","725 positive ... 0.819501\n","219 negative ... 0.990434\n","2302 negative ... 0.834288\n","2156 positive ... 0.995070\n","950 positive ... 0.992898\n","2454 negative ... 0.994428\n","585 positive ... 0.933213\n","1658 positive ... 0.862425\n","699 positive ... 0.965151\n","2250 positive ... 0.980683\n","1128 negative ... 0.983800\n","1092 negative ... 0.972695\n","1786 positive ... 0.997251\n","354 negative ... 0.977224\n","97 negative ... 0.995163\n","1339 positive ... 0.997966\n","1648 positive ... 0.898811\n","443 negative ... 0.985158\n","1968 positive ... 0.955286\n","157 positive ... 0.991408\n","909 positive ... 0.971099\n","2003 positive ... 0.898893\n","2186 positive ... 0.999113\n","1109 positive ... 0.999633\n","1520 positive ... 0.998053\n","1405 positive ... 0.969840\n","1936 positive ... 0.715630\n","1009 positive ... 0.979062\n","2284 positive ... 0.998871\n","2241 positive ... 0.997658\n","2259 negative ... 0.919953\n","1488 negative ... 0.997300\n","258 positive ... 0.994659\n","130 positive ... 0.968123\n","1404 negative ... 0.998181\n","2495 negative ... 0.986873\n","1651 negative ... 0.865547\n","1402 positive ... 0.984621\n","1039 positive ... 0.999136\n","1469 positive ... 0.971885\n","398 negative ... 0.908734\n","2114 negative ... 0.990297\n","1317 positive ... 0.978412\n","943 positive ... 0.965369\n","799 positive ... 0.985029\n","882 negative ... 0.995624\n","2151 negative ... 0.965565\n","1498 positive ... 0.993533\n","674 negative ... 0.997371\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1614562952398,"user_tz":-300,"elapsed":189319,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8f45e84e-6cf3-4d59-ff3f-d2a2ed1ff515"},"source":["fitted_pipe.predict('It was one of the best films i have ever watched in my entire life !!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentdefault_name_embeddingsdocumentsentiment_confidence
origin_index
0negative[-0.022810865193605423, 0.015739120543003082, ...It was one of the best films i have ever watch...0.629151
\n","
"],"text/plain":[" sentiment ... sentiment_confidence\n","origin_index ... \n","0 negative ... 0.629151\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1614562952406,"user_tz":-300,"elapsed":189316,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"57c6cd93-f560-492f-dbd2-21ebabecb283"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1614562959643,"user_tz":-300,"elapsed":196544,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cb915df3-b2e1-47ef-c690-262f6d9074ff"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.96 0.96 0.96 24\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.88 0.92 26\n","\n"," accuracy 0.92 50\n"," macro avg 0.64 0.61 0.63 50\n","weighted avg 0.96 0.92 0.94 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentdefault_name_embeddingstextdocumentysentiment_confidence
origin_index
538negative[0.061155349016189575, -0.04764186963438988, -...Sixth escapade for Freddy Krueger in which he ...Sixth escapade for Freddy Krueger in which he ...negative0.736202
725negative[-0.04899926111102104, 0.04536202922463417, -0...As a long-time fan of all the Star Trek series...As a long-time fan of all the Star Trek series...negative0.829032
219negative[0.06203395500779152, -0.015943678095936775, -...Ed Wood rides again. The fact that this movie ...Ed Wood rides again. The fact that this movie ...negative0.937502
2302negative[0.05896253511309624, 0.012287295423448086, -0...There aren't many good things to say at all ab...There aren't many good things to say at all ab...negative0.897272
2156positive[-0.05029047280550003, -0.002712259767577052, ...A humorous voyage into the normally somber fun...A humorous voyage into the normally somber fun...positive0.948001
950positive[0.04065236821770668, 0.006623167544603348, 0....What a good movie! At last a picture revealing...What a good movie! At last a picture revealing...positive0.874555
2454negative[0.053874578326940536, -0.050784021615982056, ...Deep Shock plays out like a TV movie: a whole ...Deep Shock plays out like a TV movie: a whole ...negative0.971650
585positive[0.005484528839588165, -0.003261507721617818, ...A drifter looking for a job is mistaken for a ...A drifter looking for a job is mistaken for a ...positive0.753176
1658negative[0.0026102750562131405, -0.028329210355877876,...Yes, I know that this movie is meant as a come...Yes, I know that this movie is meant as a come...positive0.767478
699positive[0.0034183745738118887, 0.028293922543525696, ...I decided to watch this movie because I'd not ...I decided to watch this movie because I'd not ...negative0.840567
2250positive[-0.026181913912296295, -0.04428006708621979, ...I had heard good things about this film and wa...I had heard good things about this film and wa...positive0.658274
1128negative[0.007198462262749672, 0.002508964156731963, -...This is the worst movie I have ever seen. The ...This is the worst movie I have ever seen. The ...negative0.946714
1092negative[0.0014401263324543834, 0.042675577104091644, ...When I first saw it 9 years ago, when I was 9....When I first saw it 9 years ago, when I was 9....negative0.946290
1786positive[-0.04156527668237686, -0.02018941566348076, -...Excellent endearing film with Peter Falk and P...Excellent endearing film with Peter Falk and P...positive0.959468
354negative[-0.038548123091459274, -0.05298566818237305, ...Like the previous poster, I am from northern V...Like the previous poster, I am from northern V...negative0.848761
97negative[0.05253484845161438, 0.003816538257524371, -0...Well, I like to watch bad horror B-Movies, cau...Well, I like to watch bad horror B-Movies, cau...negative0.970629
1339positive[0.00035910092992708087, -0.03019331395626068,...At a risk of sounding slightly sacrilegious, o...At a risk of sounding slightly sacrilegious, o...positive0.906463
1648negative[0.046263981610536575, 0.05645913630723953, -0...My nose is bent slightly out of shape as I wri...My nose is bent slightly out of shape as I wri...negative0.749613
443negative[0.06970927119255066, -0.03712767735123634, -0...I had been amazed by director Antal's Kontroll...I had been amazed by director Antal's Kontroll...negative0.954385
1968neutral[0.02333565428853035, -0.024841919541358948, -...The first time I saw this movie, it didn't see...The first time I saw this movie, it didn't see...positive0.574081
157positive[0.006765617057681084, 0.017314564436674118, -...I've always enjoyed films that depict life as ...I've always enjoyed films that depict life as ...positive0.938987
909positive[0.046574220061302185, -0.06137171760201454, -...I had never seen a film by John Cassavetes up ...I had never seen a film by John Cassavetes up ...positive0.672924
2003positive[0.0015181098133325577, -0.06557010114192963, ...This Showtime cable film features a talented c...This Showtime cable film features a talented c...positive0.662296
2186positive[0.03471103683114052, 0.06530531495809555, 0.0...My cable TV has what's called the Arts channel...My cable TV has what's called the Arts channel...positive0.956926
1109positive[-0.012417787685990334, 0.0360068641602993, -0...I have not read the book that this was based u...I have not read the book that this was based u...positive0.968361
1520positive[-0.010225639678537846, 0.017600659281015396, ...A Murder investigation goes on back stage whil...A Murder investigation goes on back stage whil...positive0.966288
1405positive[-0.038452234119176865, 0.0006458977586589754,...Absolutely stunning, warmth for the head and t...Absolutely stunning, warmth for the head and t...positive0.755360
1936negative[-0.03630257025361061, -0.04945565387606621, -...This story had a good plot to it about four el...This story had a good plot to it about four el...negative0.854486
1009positive[-0.0012479485012590885, -0.018733300268650055...I am a huge fan of Harald Zwart, and I just kn...I am a huge fan of Harald Zwart, and I just kn...positive0.859311
2284positive[0.05055391415953636, 0.01362769864499569, -0....Okay, there are a ton of reviews here, what ca...Okay, there are a ton of reviews here, what ca...positive0.947632
2241positive[-0.06763697415590286, 0.031879279762506485, 0...At the time that this movie was made most hous...At the time that this movie was made most hous...positive0.964139
2259negative[0.057414233684539795, -0.02066304162144661, 0...Okul\"The School\" is a result of a new trend in...Okul\"The School\" is a result of a new trend in...negative0.925747
1488negative[0.048472076654434204, -0.02173914574086666, -...Really, truly, abysmally, garishly, awful. But...Really, truly, abysmally, garishly, awful. But...negative0.951509
258positive[0.02095893770456314, 0.0484045185148716, -0.0...Black comedy isn't always an easy sell. Every ...Black comedy isn't always an easy sell. Every ...positive0.905956
130neutral[0.009698283858597279, -0.025106241926550865, ...Two hours ago I was watching this brilliant mo...Two hours ago I was watching this brilliant mo...positive0.582632
1404negative[0.04247045889496803, -0.06722509115934372, -0...I buy or at least watch every Seagall movie. H...I buy or at least watch every Seagall movie. H...negative0.965406
2495negative[0.05309217423200607, -0.0037488690577447414, ...Another great movie by Costa-Gavras. It's a gr...Another great movie by Costa-Gavras. It's a gr...negative0.861529
1651negative[-0.00877030473202467, -0.03184518218040466, -...Okay,I had watched this movie when I was very ...Okay,I had watched this movie when I was very ...negative0.875443
1402positive[0.05373821780085564, -0.015125636011362076, -...ROAD TO PERDITION can be summed up by Thomas N...ROAD TO PERDITION can be summed up by Thomas N...positive0.862109
1039positive[0.020128324627876282, -0.047135304659605026, ...At the height of the 'Celebrity Big Brother' r...At the height of the 'Celebrity Big Brother' r...positive0.957513
1469negative[0.007572077214717865, 0.01606682315468788, 0....Sex,Drugs,Rock & Roll is without a doubt the w...Sex,Drugs,Rock & Roll is without a doubt the w...negative0.700001
398negative[-0.05642805993556976, -0.03362744674086571, -...After a snowstorm, the roads are blocked and t...After a snowstorm, the roads are blocked and t...negative0.758657
2114negative[-0.02119983173906803, 0.04433616250753403, -0...I was very surprised to see that this movie ha...I was very surprised to see that this movie ha...negative0.942450
1317positive[0.03002399578690529, 0.017277313396334648, -0...This is an incredible film. I can't remember t...This is an incredible film. I can't remember t...positive0.871614
943positive[0.038790568709373474, -0.04091215878725052, -...A film for mature, educated audiences...<br />...A film for mature, educated audiences...<br />...positive0.858415
799positive[0.04426809027791023, 0.0171112772077322, -0.0...Thank God this wasn't based on a true story, b...Thank God this wasn't based on a true story, b...positive0.885541
882negative[0.0758691355586052, 0.029356516897678375, -0....How can so many blundering decisions can be ma...How can so many blundering decisions can be ma...negative0.954071
2151negative[0.01764845661818981, -0.03746427595615387, -0...This movie had the potential to be really good...This movie had the potential to be really good...negative0.919427
1498positive[0.05424240231513977, -0.05653670057654381, -0...According to John Ford's lyrically shot, ficti...According to John Ford's lyrically shot, ficti...positive0.880525
674negative[0.032531678676605225, -0.00041807559318840504...worst. movie. ever made. EVER. I have no words...worst. movie. ever made. EVER. I have no words...negative0.971043
\n","
"],"text/plain":[" sentiment ... sentiment_confidence\n","origin_index ... \n","538 negative ... 0.736202\n","725 negative ... 0.829032\n","219 negative ... 0.937502\n","2302 negative ... 0.897272\n","2156 positive ... 0.948001\n","950 positive ... 0.874555\n","2454 negative ... 0.971650\n","585 positive ... 0.753176\n","1658 negative ... 0.767478\n","699 positive ... 0.840567\n","2250 positive ... 0.658274\n","1128 negative ... 0.946714\n","1092 negative ... 0.946290\n","1786 positive ... 0.959468\n","354 negative ... 0.848761\n","97 negative ... 0.970629\n","1339 positive ... 0.906463\n","1648 negative ... 0.749613\n","443 negative ... 0.954385\n","1968 neutral ... 0.574081\n","157 positive ... 0.938987\n","909 positive ... 0.672924\n","2003 positive ... 0.662296\n","2186 positive ... 0.956926\n","1109 positive ... 0.968361\n","1520 positive ... 0.966288\n","1405 positive ... 0.755360\n","1936 negative ... 0.854486\n","1009 positive ... 0.859311\n","2284 positive ... 0.947632\n","2241 positive ... 0.964139\n","2259 negative ... 0.925747\n","1488 negative ... 0.951509\n","258 positive ... 0.905956\n","130 neutral ... 0.582632\n","1404 negative ... 0.965406\n","2495 negative ... 0.861529\n","1651 negative ... 0.875443\n","1402 positive ... 0.862109\n","1039 positive ... 0.957513\n","1469 negative ... 0.700001\n","398 negative ... 0.758657\n","2114 negative ... 0.942450\n","1317 positive ... 0.871614\n","943 positive ... 0.858415\n","799 positive ... 0.885541\n","882 negative ... 0.954071\n","2151 negative ... 0.919427\n","1498 positive ... 0.880525\n","674 negative ... 0.971043\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# 7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614562959651,"user_tz":-300,"elapsed":196546,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"54d0d93e-06dd-4b51-8d12-9200e2214431"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1614567415018,"user_tz":-300,"elapsed":4651904,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"34393e34-8b4a-4db0-f7d5-30a1dddb5963"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.86 0.80 0.82 977\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.88 0.81 0.84 1023\n","\n"," accuracy 0.80 2000\n"," macro avg 0.58 0.53 0.55 2000\n","weighted avg 0.87 0.80 0.83 2000\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614568329258,"user_tz":-300,"elapsed":5566142,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6ae16887-deab-4ec5-ae9a-2ef0285aef07"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.80 0.74 0.77 257\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.81 0.72 0.76 243\n","\n"," accuracy 0.73 500\n"," macro avg 0.54 0.49 0.51 500\n","weighted avg 0.80 0.73 0.77 500\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1609470097011,"user_tz":-300,"elapsed":170766,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"59899be4-e33a-4b5e-ff37-df6a9a3994b2"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":127},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1609470112616,"user_tz":-300,"elapsed":15622,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cbe7fc37-7794-4c28-d1de-5ba88d3db58b"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('It was one of the best films i have ever watched in my entire life !!')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimenten_embed_sentence_small_bert_L12_768_embeddingssentiment_confidencedocument
origin_index
0positive[0.09222018718719482, 0.11720675230026245, 0.1...0.999543It was one of the best films i have ever watch...
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 positive ... It was one of the best films i have ever watch...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"status":"ok","timestamp":1609470112618,"user_tz":-300,"elapsed":17,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c7467f93-d619-470f-fd40-c2be1805b83f"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_apple_twitter.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_apple_twitter.ipynb index 3808340d..49f597ef 100644 --- a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_apple_twitter.ipynb +++ b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_apple_twitter.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_apple_twitter.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"RIV-9vEqxTBB"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\r\n","\r\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_apple_twitter.ipynb)\r\n","\r\n","\r\n","\r\n","# Training a Sentiment Analysis Classifier with NLU \r\n","## 2 class Apple Tweets sentiment classifier training\r\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \r\n","\r\n","This notebook showcases the following features : \r\n","\r\n","- How to train the deep learning classifier\r\n","- How to store a pipeline to disk\r\n","- How to load the pipeline from disk (Enables NLU offline mode)\r\n","\r\n"]},{"cell_type":"code","metadata":{"id":"05-mAOF6ol-0"},"source":["import os\r\n","from sklearn.metrics import classification_report\r\n","! apt-get update -qq > /dev/null \r\n","# Install java\r\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\r\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\r\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\r\n","! pip install nlu pyspark==2.4.7 > /dev/null \r\n","\r\n","\r\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download appple twitter Sentiment dataset \n","https://www.kaggle.com/seriousran/appletwittersentimenttexts\n","\n","this dataset contains tweets made towards apple and today we are going to train our model to predict whether the tweet contains sentiment!\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1609468082890,"user_tz":-300,"elapsed":77740,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a791d4cf-bfa3-4cc6-a60d-c885afe2e917"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/apple-twitter-sentiment-texts.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-01-01 02:27:38-- https://raw.githubusercontent.com/ahmedlone127/nlu-master/main/apple-twitter-sentiment-texts.csv\n","Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...\n","Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 31678 (31K) [text/plain]\n","Saving to: ‘apple-twitter-sentiment-texts.csv’\n","\n","apple-twitter-senti 100%[===================>] 30.94K --.-KB/s in 0.002s \n","\n","2021-01-01 02:27:39 (12.9 MB/s) - ‘apple-twitter-sentiment-texts.csv’ saved [31678/31678]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1609468083287,"user_tz":-300,"elapsed":78124,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1a23969f-abf0-4bc3-e2ec-0879b2b77cad"},"source":["import pandas as pd\n","train_path = '/content/apple-twitter-sentiment-texts.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df[~train_df[\"y\"].isin([\"neuteral\"])]\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
0@Apple you need to sort your phones out.negative
1Wow. Yall needa step it up @Apple RT @heynyla:...negative
2I'm surprised there isn't more talk about what...negative
3Realised the reason @apple make huge phones is...negative
4Apple Inc. CEO Donates $291K To Pennsylvania S...positive
.........
281@apple so thanks for being greedy assholes who...negative
282@apple iCal AGAIN!!! it reset all my recurring...negative
283Just did my first transaction with @Apple Pay ...positive
284RT @JPDesloges: Kantar Worldpanel: iPhone sale...positive
285Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...positive
\n","

286 rows × 2 columns

\n","
"],"text/plain":[" text y\n","0 @Apple you need to sort your phones out. negative\n","1 Wow. Yall needa step it up @Apple RT @heynyla:... negative\n","2 I'm surprised there isn't more talk about what... negative\n","3 Realised the reason @apple make huge phones is... negative\n","4 Apple Inc. CEO Donates $291K To Pennsylvania S... positive\n",".. ... ...\n","281 @apple so thanks for being greedy assholes who... negative\n","282 @apple iCal AGAIN!!! it reset all my recurring... negative\n","283 Just did my first transaction with @Apple Pay ... positive\n","284 RT @JPDesloges: Kantar Worldpanel: iPhone sale... positive\n","285 Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc... positive\n","\n","[286 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":845},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1609468191792,"user_tz":-300,"elapsed":186618,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"41d18f44-64e1-4766-a8cf-4545813930d7"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.91 0.80 0.85 143\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.82 0.91 0.86 143\n","\n"," accuracy 0.86 286\n"," macro avg 0.58 0.57 0.57 286\n","weighted avg 0.86 0.86 0.86 286\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidenceydefault_name_embeddingstextdocumentsentiment
origin_index
00.998447negative[-0.01731022447347641, 0.010604134760797024, -...@Apple you need to sort your phones out.@Apple you need to sort your phones out.negative
10.990570negative[0.019931159913539886, -0.04991159215569496, -...Wow. Yall needa step it up @Apple RT @heynyla:...Wow. Yall needa step it up @Apple RT @heynyla:...positive
20.969844negative[0.01646081730723381, -0.02681073546409607, -0...I'm surprised there isn't more talk about what...I'm surprised there isn't more talk about what...negative
30.996128negative[0.04638500511646271, -0.037105873227119446, -...Realised the reason @apple make huge phones is...Realised the reason @apple make huge phones is...negative
40.959235positive[-0.028623634949326515, 0.03947276994585991, -...Apple Inc. CEO Donates $291K To Pennsylvania S...Apple Inc. CEO Donates $291K To Pennsylvania S...positive
.....................
2810.978435negative[0.03778046742081642, 0.03407461196184158, 0.0...@apple so thanks for being greedy assholes who...@apple so thanks for being greedy assholes who...negative
2820.623791negative[-0.013547728769481182, -0.001025827950797975,...@apple iCal AGAIN!!! it reset all my recurring...@apple iCal AGAIN!!! it reset all my recurring...positive
2830.999104positive[-0.0015363194979727268, -0.01644994132220745,...Just did my first transaction with @Apple Pay ...Just did my first transaction with @Apple Pay ...positive
2840.999854positive[0.0656985342502594, 0.028557728976011276, -0....RT @JPDesloges: Kantar Worldpanel: iPhone sale...RT @JPDesloges: Kantar Worldpanel: iPhone sale...positive
2850.983244positive[0.02311933971941471, 0.05785432830452919, -0....Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...positive
\n","

286 rows × 6 columns

\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.998447 ... negative\n","1 0.990570 ... positive\n","2 0.969844 ... negative\n","3 0.996128 ... negative\n","4 0.959235 ... positive\n","... ... ... ...\n","281 0.978435 ... negative\n","282 0.623791 ... positive\n","283 0.999104 ... positive\n","284 0.999854 ... positive\n","285 0.983244 ... positive\n","\n","[286 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"id":"qdCUg2MR0PD2","colab":{"base_uri":"https://localhost:8080/","height":110},"executionInfo":{"status":"ok","timestamp":1609468194339,"user_tz":-300,"elapsed":189158,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"00d8c7b6-22e1-4979-8c51-58471540a3dd"},"source":["fitted_pipe.predict('I hate the newest update')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedefault_name_embeddingsdocumentsentiment
origin_index
00.996097[0.06468033790588379, -0.040837567299604416, -...Bitcoin is going to the moon!positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.996097 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## Configure pipe training parameters"]},{"cell_type":"code","metadata":{"id":"UtsAUGTmOTms","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468194341,"user_tz":-300,"elapsed":189154,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3ab00ec5-5894-400f-c6c9-e32099fed1f5"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## Retrain with new parameters"]},{"cell_type":"code","metadata":{"id":"mptfvHx-MMMX","colab":{"base_uri":"https://localhost:8080/","height":793},"executionInfo":{"status":"ok","timestamp":1609468205048,"user_tz":-300,"elapsed":199854,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9c9a1628-3034-4be0-94bc-7c109d2c3263"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:100])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.96 0.85 0.90 143\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.87 0.95 0.91 143\n","\n"," accuracy 0.90 286\n"," macro avg 0.61 0.60 0.60 286\n","weighted avg 0.92 0.90 0.91 286\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidenceydefault_name_embeddingstextdocumentsentiment
origin_index
00.999738negative[-0.01731022447347641, 0.010604134760797024, -...@Apple you need to sort your phones out.@Apple you need to sort your phones out.negative
10.937319negative[0.019931159913539886, -0.04991159215569496, -...Wow. Yall needa step it up @Apple RT @heynyla:...Wow. Yall needa step it up @Apple RT @heynyla:...positive
20.974594negative[0.01646081730723381, -0.02681073546409607, -0...I'm surprised there isn't more talk about what...I'm surprised there isn't more talk about what...negative
30.997196negative[0.04638500511646271, -0.037105873227119446, -...Realised the reason @apple make huge phones is...Realised the reason @apple make huge phones is...negative
40.709098positive[-0.028623634949326515, 0.03947276994585991, -...Apple Inc. CEO Donates $291K To Pennsylvania S...Apple Inc. CEO Donates $291K To Pennsylvania S...positive
.....................
2810.984257negative[0.03778046742081642, 0.03407461196184158, 0.0...@apple so thanks for being greedy assholes who...@apple so thanks for being greedy assholes who...negative
2820.904880negative[-0.013547728769481182, -0.001025827950797975,...@apple iCal AGAIN!!! it reset all my recurring...@apple iCal AGAIN!!! it reset all my recurring...negative
2830.995687positive[-0.0015363194979727268, -0.01644994132220745,...Just did my first transaction with @Apple Pay ...Just did my first transaction with @Apple Pay ...positive
2840.998746positive[0.0656985342502594, 0.028557728976011276, -0....RT @JPDesloges: Kantar Worldpanel: iPhone sale...RT @JPDesloges: Kantar Worldpanel: iPhone sale...positive
2850.710708positive[0.02311933971941471, 0.05785432830452919, -0....Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...positive
\n","

286 rows × 6 columns

\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999738 ... negative\n","1 0.937319 ... positive\n","2 0.974594 ... negative\n","3 0.997196 ... negative\n","4 0.709098 ... positive\n","... ... ... ...\n","281 0.984257 ... negative\n","282 0.904880 ... negative\n","283 0.995687 ... positive\n","284 0.998746 ... positive\n","285 0.710708 ... positive\n","\n","[286 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468205058,"user_tz":-300,"elapsed":199858,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"11560398-8fb9-4110-aed3-f7d9c1f71268"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468415116,"user_tz":-300,"elapsed":409908,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b8e4f245-595a-40f3-9e1d-76f71e76b74e"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(110) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.96 0.85 0.90 143\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.92 0.92 0.92 143\n","\n"," accuracy 0.88 286\n"," macro avg 0.63 0.59 0.61 286\n","weighted avg 0.94 0.88 0.91 286\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"bZZpObLOtqo8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468632998,"user_tz":-300,"elapsed":627783,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e6a87d34-ce84-4968-c3a0-9aade476874b"},"source":["stored_model_path = './models/classifier_dl_trained' \r\n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":127},"executionInfo":{"status":"ok","timestamp":1609468646911,"user_tz":-300,"elapsed":641690,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"454b2c7d-7c32-4cc2-cf25-a52b5a879abd"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('I hate the newest update')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddingsdocumentsentiment
origin_index
00.974083[-0.058236218988895416, -0.3061041235923767, 0...I hate itnegative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.974083 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468646914,"user_tz":-300,"elapsed":641685,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"80ce5918-3803-45f4-e10f-300144342295"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_apple_twitter.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"RIV-9vEqxTBB"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\r\n","\r\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_apple_twitter.ipynb)\r\n","\r\n","\r\n","\r\n","# Training a Sentiment Analysis Classifier with NLU \r\n","## 2 class Apple Tweets sentiment classifier training\r\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \r\n","\r\n","This notebook showcases the following features : \r\n","\r\n","- How to train the deep learning classifier\r\n","- How to store a pipeline to disk\r\n","- How to load the pipeline from disk (Enables NLU offline mode)\r\n","\r\n","You can achieve these results or even better on this dataset with training data:\r\n","\r\n","
\r\n","\r\n","![image.png](data:image/png;base64,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)\r\n","\r\n","You can achieve these results or even better on this dataset with test data:\r\n","\r\n","\r\n","\r\n","
\r\n","\r\n","\r\n","![image.png](data:image/png;base64,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)\r\n","\r\n"]},{"cell_type":"code","metadata":{"id":"05-mAOF6ol-0"},"source":["import os\r\n","from sklearn.metrics import classification_report\r\n","! apt-get update -qq > /dev/null \r\n","# Install java\r\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\r\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\r\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\r\n","! pip install nlu pyspark==2.4.7 > /dev/null \r\n","\r\n","\r\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download appple twitter Sentiment dataset \n","https://www.kaggle.com/seriousran/appletwittersentimenttexts\n","\n","this dataset contains tweets made towards apple and today we are going to train our model to predict whether the tweet contains sentiment!\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614562965668,"user_tz":-300,"elapsed":58726,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1e8381bf-8581-48d3-f6e0-28f3db6e5144"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/apple-twitter-sentiment-texts.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-03-01 01:41:31-- http://ckl-it.de/wp-content/uploads/2021/01/apple-twitter-sentiment-texts.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 31678 (31K) [text/csv]\n","Saving to: ‘apple-twitter-sentiment-texts.csv’\n","\n","apple-twitter-senti 100%[===================>] 30.94K 149KB/s in 0.2s \n","\n","2021-03-01 01:41:31 (149 KB/s) - ‘apple-twitter-sentiment-texts.csv’ saved [31678/31678]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614562965670,"user_tz":-300,"elapsed":58717,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a6eb98f9-621a-4703-b8b0-2a2ca8396578"},"source":["import pandas as pd\n","train_path = '/content/apple-twitter-sentiment-texts.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df[~train_df[\"y\"].isin([\"neuteral\"])]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
194@fullcircleone ThanX! Big @Apple ThanX goes 2 ...positive
279Can't believe @Apple said melted keys on Mac P...negative
259@apple had a dream last night where I downgrad...negative
148RT @paisley_smithh: Real tired of my charger b...negative
158@OneRepublic @Apple THIS IS SO BEAUTIFULpositive
.........
797 awesome paid #iPhone and #iPad apps that are...positive
166@apple is laughing its pants off with the scho...negative
276@jimmymujaj @Apple it works again fucker, not ...negative
131@apple Why is your NYC Grand Central store so ...negative
178RT @saigeist: the most offensive thing is the ...negative
\n","

228 rows × 2 columns

\n","
"],"text/plain":[" text y\n","194 @fullcircleone ThanX! Big @Apple ThanX goes 2 ... positive\n","279 Can't believe @Apple said melted keys on Mac P... negative\n","259 @apple had a dream last night where I downgrad... negative\n","148 RT @paisley_smithh: Real tired of my charger b... negative\n","158 @OneRepublic @Apple THIS IS SO BEAUTIFUL positive\n",".. ... ...\n","79 7 awesome paid #iPhone and #iPad apps that are... positive\n","166 @apple is laughing its pants off with the scho... negative\n","276 @jimmymujaj @Apple it works again fucker, not ... negative\n","131 @apple Why is your NYC Grand Central store so ... negative\n","178 RT @saigeist: the most offensive thing is the ... negative\n","\n","[228 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614563092881,"user_tz":-300,"elapsed":185911,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"29427741-2ffa-4036-8ddb-9e877afbb44d"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.94 0.59 0.73 27\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.95 0.87 0.91 23\n","\n"," accuracy 0.72 50\n"," macro avg 0.63 0.49 0.55 50\n","weighted avg 0.95 0.72 0.81 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingssentimenttextsentiment_confidenceydocument
origin_index
194[0.0020813194569200277, -0.025028454139828682,...positive@fullcircleone ThanX! Big @Apple ThanX goes 2 ...0.843989positive@fullcircleone ThanX! Big @Apple ThanX goes 2 ...
279[0.05548453330993652, 0.06619943678379059, -0....negativeCan't believe @Apple said melted keys on Mac P...0.682702negativeCan't believe @Apple said melted keys on Mac P...
259[0.06910835206508636, -0.052032221108675, -0.0...negative@apple had a dream last night where I downgrad...0.657026negative@apple had a dream last night where I downgrad...
148[0.059678513556718826, 0.06913778185844421, -0...neutralRT @paisley_smithh: Real tired of my charger b...0.590428negativeRT @paisley_smithh: Real tired of my charger b...
158[0.011856582947075367, 0.016805896535515785, -...positive@OneRepublic @Apple THIS IS SO BEAUTIFUL0.708730positive@OneRepublic @Apple THIS IS SO BEAUTIFUL
224[0.023869305849075317, -0.033373694866895676, ...positive@stevewoz @Outback Personally I am excited abo...0.614970positive@stevewoz @Outback Personally I am excited abo...
142[0.008206114172935486, 0.0042152707464993, -0....neutralThese Damn @Apple Commercials Are Getting Wors...0.563933negativeThese Damn @Apple Commercials Are Getting Wors...
23[0.044899821281433105, 0.033001091331243515, 0...positiveThanks @Apple store @RobinaTC for helping me o...0.815056positiveThanks @Apple store @RobinaTC for helping me o...
24[0.06401650607585907, 0.02939487248659134, -0....positive#iPhone5s is the best mobile that I have had. ...0.772757positive#iPhone5s is the best mobile that I have had. ...
97[0.036246202886104584, 0.014746210537850857, -...negativefuck type of shit is this @Apple @autocorrect ...0.633962negativefuck type of shit is this @Apple @autocorrect ...
267[-0.025635968893766403, 0.026251723989844322, ...negativehey @apple my 5s keeps glitching :/0.719015negativehey @apple my 5s keeps glitching :/
68[-0.017101608216762543, 0.0018259129719808698,...negativeFucking goddamn stupid @apple @iTunes , ur too...0.729995negativeFucking goddamn stupid @apple @iTunes , ur too...
55[0.008575155399739742, 0.015347552485764027, 0...neutral@apple please get yourself together! I need my...0.542997negative@apple please get yourself together! I need my...
239[0.038337450474500656, 0.042477983981370926, -...negativewaiting a week for a DUNS number is preventing...0.643586negativewaiting a week for a DUNS number is preventing...
274[0.031279537826776505, 0.039565060287714005, 0...negativeDear @apple replace my phone my battery sucks0.709939negativeDear @apple replace my phone my battery sucks
99[0.005306210368871689, 0.00793572049587965, 0....positive@OneRepublic @Apple You all are ready to go. #...0.805694positive@OneRepublic @Apple You all are ready to go. #...
181[0.05127181485295296, 0.03388502821326256, -0....negative@CharlesJMeyer @Apple @Appy_Geek Hasn't Apple ...0.605825negative@CharlesJMeyer @Apple @Appy_Geek Hasn't Apple ...
172[0.02794131077826023, 0.008706841617822647, 0....negative@Apple This was NORMAL use-- NO ABUSE! Wrapped...0.738088negative@Apple This was NORMAL use-- NO ABUSE! Wrapped...
58[0.03853776305913925, -0.003850174369290471, -...neutralYO YOU AINT SHIT @apple0.567957negativeYO YOU AINT SHIT @apple
229[0.054637834429740906, 0.023656053468585014, -...positive@Apple's share of UK smartphone sales soared t...0.818830positive@Apple's share of UK smartphone sales soared t...
168[0.0441458635032177, 0.03536572307348251, -0.0...neutral@brwnskin_beauti cause fuck @apple0.561626negative@brwnskin_beauti cause fuck @apple
84[-0.02587798982858658, 0.03256731107831001, -0...negativeiTunes is pissing me tf off @apple0.758408negativeiTunes is pissing me tf off @apple
171[0.007304496597498655, -0.00493069039657712, -...positiveThank you @apple0.736227positiveThank you @apple
250[0.07199912518262863, 0.0021514107938855886, -...positiveThe king of the phablets! Apple's iPhone 6 plu...0.779995positiveThe king of the phablets! Apple's iPhone 6 plu...
7[0.01400269940495491, 0.04662228375673294, 0.0...neutralThank you @Apple for fixing the #Swift sourcek...0.555058positiveThank you @Apple for fixing the #Swift sourcek...
30[0.04305626079440117, 0.0728026032447815, -0.0...positiveThank you @apple #AppleSantaMonica for fixing ...0.687004positiveThank you @apple #AppleSantaMonica for fixing ...
33[0.0709962323307991, -0.018187634646892548, -0...positiveSteve Jobs Predicted Future Of E-Commerce Back...0.829057positiveSteve Jobs Predicted Future Of E-Commerce Back...
61[0.02938288450241089, 0.02077152580022812, -0....positiveIt makes you smarter. Elevate is @apple app o...0.842974positiveIt makes you smarter. Elevate is @apple app of...
249[0.03343122825026512, 0.06543298065662384, -0....negative@apple #apple tech support is so nice. Free st...0.601036positive@apple #apple tech support is so nice. Free st...
155[0.04070044681429863, 0.02998330444097519, 0.0...negativeI hate my MacBook now. Fuck this update and fu...0.698858negativeI hate my MacBook now. Fuck this update and fu...
162[-0.025308595970273018, -0.00607736362144351, ...neutralthanks @apple for making life complicated0.569041negativethanks @apple for making life complicated
4[0.036090489476919174, 0.033749453723430634, -...positiveApple Inc. CEO Donates $291K To Pennsylvania S...0.724116positiveApple Inc. CEO Donates $291K To Pennsylvania S...
34[-0.008514916524291039, -0.02772395685315132, ...negativeFinally updated to iOS 8...this happened ha we...0.663779negativeFinally updated to iOS 8...this happened ha we...
154[-0.021790482103824615, 0.026734383776783943, ...positiveThank you to the nice lady at @Apple in #Regen...0.846050positiveThank you to the nice lady at @Apple in #Regen...
200[-0.006971406284719706, 0.024408211931586266, ...positive@OneRepublic @Apple this is awesome! Can I join?0.804950positive@OneRepublic @Apple this is awesome! Can I join?
180[0.07439534366130829, 0.02210349403321743, -0....positiveCurrently on hold with @Apple in Cupertino to ...0.633425negativeCurrently on hold with @Apple in Cupertino to ...
187[0.008138233795762062, -0.026052597910165787, ...negativemy dad called now my musics arent playing jesu...0.702004negativemy dad called now my musics arent playing jesu...
93[0.06705766916275024, 0.05627201497554779, -0....positive#apple earns more #profit in on quarter than #...0.783651positive#apple earns more #profit in on quarter than #...
189[0.040938232094049454, 0.060883838683366776, -...neutralThe customer service from @apple is the BEST....0.535951positiveThe customer service from @apple is the BEST. ...
37[0.012832739390432835, 0.051798250526189804, 0...positiveAt the Genius Bar@apple store. Very helpful #...0.815347positiveAt the Genius Bar@apple store. Very helpful #A...
177[0.023287296295166016, 0.03480781987309456, 0....positiveEnjoying the introductions at the @apple #conn...0.883996positiveEnjoying the introductions at the @apple #conn...
47[0.02025674283504486, 0.019427286460995674, -0...negative@iTunes @apple my music library wont sync new ...0.741416negative@iTunes @apple my music library wont sync new ...
49[0.007304496597498655, -0.00493069039657712, -...positiveThank you @Apple0.736227positiveThank you @Apple
9[0.019063668325543404, 0.012368913739919662, -...neutral@sometimesboring also wtf @apple i dont even l...0.556204negative@sometimesboring also wtf @apple i dont even l...
188[0.04265458136796951, 0.03990786150097847, -0....neutralProtesters in the @Apple store pretty much sum...0.529252negativeProtesters in the @Apple store pretty much sum...
128[0.02501610852777958, 0.04794774204492569, -0....neutral@apple I have been on hold for 30 minutes than...0.557699negative@apple I have been on hold for 30 minutes than...
117[0.07592077553272247, 0.04938220977783203, -0....negativeApple makes bad chargers. The @apple genius sa...0.700672negativeApple makes bad chargers. The @apple genius sa...
39[0.0005533038638532162, -0.014303376898169518,...negativeOh @apple, why do I have to delete my unwanted...0.762471negativeOh @apple, why do I have to delete my unwanted...
206[0.05893688648939133, 0.0094262370839715, -0.0...positive#Apple dominates mobile online shopping at 78 ...0.844476positive#Apple dominates mobile online shopping at 78 ...
63[0.016833314672112465, 0.025263063609600067, -...neutral@apple fuck you0.519171negative@apple fuck you
\n","
"],"text/plain":[" default_name_embeddings ... document\n","origin_index ... \n","194 [0.0020813194569200277, -0.025028454139828682,... ... @fullcircleone ThanX! Big @Apple ThanX goes 2 ...\n","279 [0.05548453330993652, 0.06619943678379059, -0.... ... Can't believe @Apple said melted keys on Mac P...\n","259 [0.06910835206508636, -0.052032221108675, -0.0... ... @apple had a dream last night where I downgrad...\n","148 [0.059678513556718826, 0.06913778185844421, -0... ... RT @paisley_smithh: Real tired of my charger b...\n","158 [0.011856582947075367, 0.016805896535515785, -... ... @OneRepublic @Apple THIS IS SO BEAUTIFUL\n","224 [0.023869305849075317, -0.033373694866895676, ... ... @stevewoz @Outback Personally I am excited abo...\n","142 [0.008206114172935486, 0.0042152707464993, -0.... ... These Damn @Apple Commercials Are Getting Wors...\n","23 [0.044899821281433105, 0.033001091331243515, 0... ... Thanks @Apple store @RobinaTC for helping me o...\n","24 [0.06401650607585907, 0.02939487248659134, -0.... ... #iPhone5s is the best mobile that I have had. ...\n","97 [0.036246202886104584, 0.014746210537850857, -... ... fuck type of shit is this @Apple @autocorrect ...\n","267 [-0.025635968893766403, 0.026251723989844322, ... ... hey @apple my 5s keeps glitching :/\n","68 [-0.017101608216762543, 0.0018259129719808698,... ... Fucking goddamn stupid @apple @iTunes , ur too...\n","55 [0.008575155399739742, 0.015347552485764027, 0... ... @apple please get yourself together! I need my...\n","239 [0.038337450474500656, 0.042477983981370926, -... ... waiting a week for a DUNS number is preventing...\n","274 [0.031279537826776505, 0.039565060287714005, 0... ... Dear @apple replace my phone my battery sucks\n","99 [0.005306210368871689, 0.00793572049587965, 0.... ... @OneRepublic @Apple You all are ready to go. #...\n","181 [0.05127181485295296, 0.03388502821326256, -0.... ... @CharlesJMeyer @Apple @Appy_Geek Hasn't Apple ...\n","172 [0.02794131077826023, 0.008706841617822647, 0.... ... @Apple This was NORMAL use-- NO ABUSE! Wrapped...\n","58 [0.03853776305913925, -0.003850174369290471, -... ... YO YOU AINT SHIT @apple\n","229 [0.054637834429740906, 0.023656053468585014, -... ... @Apple's share of UK smartphone sales soared t...\n","168 [0.0441458635032177, 0.03536572307348251, -0.0... ... @brwnskin_beauti cause fuck @apple\n","84 [-0.02587798982858658, 0.03256731107831001, -0... ... iTunes is pissing me tf off @apple\n","171 [0.007304496597498655, -0.00493069039657712, -... ... Thank you @apple\n","250 [0.07199912518262863, 0.0021514107938855886, -... ... The king of the phablets! Apple's iPhone 6 plu...\n","7 [0.01400269940495491, 0.04662228375673294, 0.0... ... Thank you @Apple for fixing the #Swift sourcek...\n","30 [0.04305626079440117, 0.0728026032447815, -0.0... ... Thank you @apple #AppleSantaMonica for fixing ...\n","33 [0.0709962323307991, -0.018187634646892548, -0... ... Steve Jobs Predicted Future Of E-Commerce Back...\n","61 [0.02938288450241089, 0.02077152580022812, -0.... ... It makes you smarter. Elevate is @apple app of...\n","249 [0.03343122825026512, 0.06543298065662384, -0.... ... @apple #apple tech support is so nice. Free st...\n","155 [0.04070044681429863, 0.02998330444097519, 0.0... ... I hate my MacBook now. Fuck this update and fu...\n","162 [-0.025308595970273018, -0.00607736362144351, ... ... thanks @apple for making life complicated\n","4 [0.036090489476919174, 0.033749453723430634, -... ... Apple Inc. CEO Donates $291K To Pennsylvania S...\n","34 [-0.008514916524291039, -0.02772395685315132, ... ... Finally updated to iOS 8...this happened ha we...\n","154 [-0.021790482103824615, 0.026734383776783943, ... ... Thank you to the nice lady at @Apple in #Regen...\n","200 [-0.006971406284719706, 0.024408211931586266, ... ... @OneRepublic @Apple this is awesome! Can I join?\n","180 [0.07439534366130829, 0.02210349403321743, -0.... ... Currently on hold with @Apple in Cupertino to ...\n","187 [0.008138233795762062, -0.026052597910165787, ... ... my dad called now my musics arent playing jesu...\n","93 [0.06705766916275024, 0.05627201497554779, -0.... ... #apple earns more #profit in on quarter than #...\n","189 [0.040938232094049454, 0.060883838683366776, -... ... The customer service from @apple is the BEST. ...\n","37 [0.012832739390432835, 0.051798250526189804, 0... ... At the Genius Bar@apple store. Very helpful #A...\n","177 [0.023287296295166016, 0.03480781987309456, 0.... ... Enjoying the introductions at the @apple #conn...\n","47 [0.02025674283504486, 0.019427286460995674, -0... ... @iTunes @apple my music library wont sync new ...\n","49 [0.007304496597498655, -0.00493069039657712, -... ... Thank you @Apple\n","9 [0.019063668325543404, 0.012368913739919662, -... ... @sometimesboring also wtf @apple i dont even l...\n","188 [0.04265458136796951, 0.03990786150097847, -0.... ... Protesters in the @Apple store pretty much sum...\n","128 [0.02501610852777958, 0.04794774204492569, -0.... ... @apple I have been on hold for 30 minutes than...\n","117 [0.07592077553272247, 0.04938220977783203, -0.... ... Apple makes bad chargers. The @apple genius sa...\n","39 [0.0005533038638532162, -0.014303376898169518,... ... Oh @apple, why do I have to delete my unwanted...\n","206 [0.05893688648939133, 0.0094262370839715, -0.0... ... #Apple dominates mobile online shopping at 78 ...\n","63 [0.016833314672112465, 0.025263063609600067, -... ... @apple fuck you\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["#4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"id":"qdCUg2MR0PD2","colab":{"base_uri":"https://localhost:8080/","height":110},"executionInfo":{"status":"ok","timestamp":1614563092888,"user_tz":-300,"elapsed":185905,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"27017458-057c-4f33-f16d-ce1498ccd444"},"source":["fitted_pipe.predict('I hate the newest update')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingssentimentsentiment_confidencedocument
origin_index
0[-0.023322951048612595, -0.04157407209277153, ...negative0.604448I hate the newest update
\n","
"],"text/plain":[" default_name_embeddings ... document\n","origin_index ... \n","0 [-0.023322951048612595, -0.04157407209277153, ... ... I hate the newest update\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["##5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"id":"UtsAUGTmOTms","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614563092892,"user_tz":-300,"elapsed":185898,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"24d0313f-f7f2-4baa-8fac-3a59651240e2"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["##6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"id":"mptfvHx-MMMX","colab":{"base_uri":"https://localhost:8080/","height":793},"executionInfo":{"status":"ok","timestamp":1614563101782,"user_tz":-300,"elapsed":194776,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d1bec93e-f1b0-4e04-95dd-1227885944a4"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:100])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.92 0.92 0.92 49\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.88 0.92 51\n","\n"," accuracy 0.90 100\n"," macro avg 0.63 0.60 0.61 100\n","weighted avg 0.94 0.90 0.92 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingssentimenttextsentiment_confidenceydocument
origin_index
194[0.0020813194569200277, -0.025028454139828682,...positive@fullcircleone ThanX! Big @Apple ThanX goes 2 ...0.997639positive@fullcircleone ThanX! Big @Apple ThanX goes 2 ...
279[0.05548453330993652, 0.06619943678379059, -0....negativeCan't believe @Apple said melted keys on Mac P...0.951257negativeCan't believe @Apple said melted keys on Mac P...
259[0.06910835206508636, -0.052032221108675, -0.0...negative@apple had a dream last night where I downgrad...0.957475negative@apple had a dream last night where I downgrad...
148[0.059678513556718826, 0.06913778185844421, -0...negativeRT @paisley_smithh: Real tired of my charger b...0.748118negativeRT @paisley_smithh: Real tired of my charger b...
158[0.011856582947075367, 0.016805896535515785, -...positive@OneRepublic @Apple THIS IS SO BEAUTIFUL0.992686positive@OneRepublic @Apple THIS IS SO BEAUTIFUL
.....................
12[0.06702571362257004, -0.04291766509413719, -0...positive#AAPL providing another great entry point &lt;...0.998947positive#AAPL providing another great entry point &lt;...
277[0.01444460079073906, -0.020860610529780388, -...negative@apple fucking let everyone name the group cha...0.953368negative@apple fucking let everyone name the group cha...
121[0.013054611161351204, 0.04479760676622391, -0...positiveGreat service at @Apple #BethesdaRow thanks Je...0.993416positiveGreat service at @Apple #BethesdaRow thanks Je...
212[0.018735762685537338, 0.07813401520252228, -0...positiveRT @_iamGambino: Thank you @Apple0.977753positiveRT @_iamGambino: Thank you @Apple
167[0.033374980092048645, 0.05603685975074768, -0...negative@HlPSTALUKE @Apple one of you stepped on my ph...0.979619negative@HlPSTALUKE @Apple one of you stepped on my ph...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" default_name_embeddings ... document\n","origin_index ... \n","194 [0.0020813194569200277, -0.025028454139828682,... ... @fullcircleone ThanX! Big @Apple ThanX goes 2 ...\n","279 [0.05548453330993652, 0.06619943678379059, -0.... ... Can't believe @Apple said melted keys on Mac P...\n","259 [0.06910835206508636, -0.052032221108675, -0.0... ... @apple had a dream last night where I downgrad...\n","148 [0.059678513556718826, 0.06913778185844421, -0... ... RT @paisley_smithh: Real tired of my charger b...\n","158 [0.011856582947075367, 0.016805896535515785, -... ... @OneRepublic @Apple THIS IS SO BEAUTIFUL\n","... ... ... ...\n","12 [0.06702571362257004, -0.04291766509413719, -0... ... #AAPL providing another great entry point <...\n","277 [0.01444460079073906, -0.020860610529780388, -... ... @apple fucking let everyone name the group cha...\n","121 [0.013054611161351204, 0.04479760676622391, -0... ... Great service at @Apple #BethesdaRow thanks Je...\n","212 [0.018735762685537338, 0.07813401520252228, -0... ... RT @_iamGambino: Thank you @Apple\n","167 [0.033374980092048645, 0.05603685975074768, -0... ... @HlPSTALUKE @Apple one of you stepped on my ph...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["#7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614563101814,"user_tz":-300,"elapsed":194798,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d0ace687-f3a1-41cd-84f0-8fd4f4e138f2"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614563324463,"user_tz":-300,"elapsed":417439,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"436f5788-b69e-489e-d4e8-815a9830fcb3"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(110) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.95 0.87 0.91 117\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.90 0.89 0.90 111\n","\n"," accuracy 0.88 228\n"," macro avg 0.62 0.59 0.60 228\n","weighted avg 0.93 0.88 0.90 228\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614563367220,"user_tz":-300,"elapsed":460194,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"523a49ac-acc9-4aac-bc6f-f5da43f69889"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.88 0.85 0.86 26\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.93 0.84 0.89 32\n","\n"," accuracy 0.84 58\n"," macro avg 0.60 0.56 0.58 58\n","weighted avg 0.91 0.84 0.88 58\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"id":"bZZpObLOtqo8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468632998,"user_tz":-300,"elapsed":627783,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e6a87d34-ce84-4968-c3a0-9aade476874b"},"source":["stored_model_path = './models/classifier_dl_trained' \r\n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":127},"executionInfo":{"status":"ok","timestamp":1609468646911,"user_tz":-300,"elapsed":641690,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"454b2c7d-7c32-4cc2-cf25-a52b5a879abd"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('I hate the newest update')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddingsdocumentsentiment
origin_index
00.974083[-0.058236218988895416, -0.3061041235923767, 0...I hate itnegative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.974083 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609468646914,"user_tz":-300,"elapsed":641685,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"80ce5918-3803-45f4-e10f-300144342295"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_covid_19.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_covid_19.ipynb new file mode 100644 index 00000000..4c926f49 --- /dev/null +++ b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_covid_19.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_covid_19.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_covid_19.ipynb)\n","\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class COVID-19 Sentiment Classifer Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","
\n","\n","![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfkAAAC7CAYAAABmUec3AAAgAElEQVR4Ae2dPZIUydJFv62wDxYBO3isgA2wARaAjI6OjIo8KmZPAxERtT+7bXZ4t308M6Oqs7ry56ZZT2RGeHi4H/cIz2qY4v8ecoVACIRACIRACBySwP8d0qs4FQIhEAIhEAIh8JAinyQIgRAIgRAIgYMSSJE/aGDjVgiEQAiEQAikyCcHQiAEQiAEQuCgBFLkDxrYvbn15cuXh1evXj2ovfb68ePHw+vXrx/ev3//8OfPn2vVZN4FBMRZvBU7/XTsf//+/fD27du/Mh8/frxghetEv3///nc92fUSa15naWaFwG0JpMjflm+0DxJIkR8EtWExxbAr8m6yiu2tCy4veyr0U5dsUPGfk5mam/5zEOAF9jkfPLZAKkV+C1GIDSFwAAJbKfJzdvAJ//Pnz4+/9UmRP0Di3ciFFPkbgY3aEAiBfRKYK6549BKf5Kfs0B8b6DcNakc+7WNz2nMSSJE/Z9wP4TWH4Ldv3/7+uaX+LFsHHxcyP3/+/PvnqVVGsvzakz+T7T4ZVRk9c/HJam5+t47/Wnj0z3zn7ECHmEg39rit2LyFdiQ++IQv+nNx9dVrjotktRY61E4xwSYdjlOX5k7Nn5oz0l99dXu7vH1ukWe+r1Nzv8pUO0bG37x587gvPUbi7JePyZ5qh8ve8r6LAbZSMD329CHD/Lk9KN+Ux2rFE/7V58rE1xUDPevHY8D+wA50e4vMLTmurTu/rl+b6A70aVMpcT1hlfBeOJHxg6nK1Gc2DBuOTezrTOFhYzHX5WSL2+Zj9V426ade1VbWQ5ZnccGG6k/Vec/npfjgj+S4dO+xGImPWLgOmHif61+K01R80LFGK9uW7MAPYn3JurCdm6sx5VLHSWt160vW9xsyrkd6XabmNXPmbLvE11FZcmnKX8bZb9JLH3Pg6v5Wf+DqDDTf87oyQa+vrXutwzxscRn6sG+UxdbkUuS3FpEXsKduCi2pzcSnBj1LxjeS+rTB2BRVHrO1Sdgo9UBCpmvZiN3h1NnS6VCfr49MPSjod39Y3zc0fZ1N6LhX2zFxfzReC131R/I1xkv+zB183ZpVXxefKvPc5xE7pnJCa2u+CoD/eA7AkTyv9sJoalzyGqvxYZ7W14WNPKuPtWXPyB58VPQC/8H26hNLM+5M6MM/fOOZuZrDvC5nmQcT5bTHS3r0zNmlZ+nzZ/VpXbe/2oc9e2tT5PcWsRXsVTLXBOdAYXN0Mr408n4Qcu8bsq7jOvzeN6r3cy970D9XmPxAYO7UYShf0cX6WoeLPpjQv4V2KT7OC260+KN2KT4wYC6tc4KH+vyQpN/bLj4+vsb9iB3kLywuXbdyIeelZ6Q4dByYh64lGxknJt6i41K/niOP/djhucCY20UfuQRTnrFFc9CleLFnGfd5I3td81wnempb7avje3lOkd9LpFa0U5uoHu51c3QybkKV9zHuR4oIsmzUkUNXttWNjh5tXj9I1D9lq9vH+n7A0DdiE+u/VLsUH41zME7Z5P53MhxyzpM+58TckTW7+DB/rXbEDuWEcmiN2JIncJpjhI8dhzpvycapvGaNe7b4Qg7yDCPZRh+5BEeesd9ZKV517zNPY1NMaq5LJ7axTm2rfXV8L88p8nuJ1Ip2ahN5kSeZfQNWmbo8c+Y2CptvTga9yI4culMbWbr8QEB3ZyvrcaDUZ82lb8Qm1nqpdik+FAj86+zCv6n4wK3mhT6pdXrVN6WL9bv4MLZWO2IHfNaKbfVLNojTlH7113HN8X25ZCPxWWK+FtdL9dQ4iBG2YrvnEvmoeVzi5EW9Pkuu08s6Gu/0+hzW6tpRuW7uVvpS5LcSiRe0gwNIG4wf31gyRc9+4HTm+UZFj1o/2DoZbRwu3ftc7pdkfA3dM89bt7+zw33uDgL6fC3svnc7Eh+KxBQT+dBxcfaVrcb0A7tuDa1XD2a3gXuPz5o8ZZsf8ujufMUW9xn5qbbzuVuvsnMm0l3HKw/Wmcu/KZ/m5kz59Zx+9go81VZ/qozi5LlUxzsdlZlkauw6JuQrPmpOFzPGaatN1SfkttymyG85OjeyTQm/x2S9EY6oDYEQ2AABCmotyG6ainx9WfLx3P+bQIr8v5kcvidF/vAhjoMhsDsCKfK3CVmK/G24blprivymwxPjQuCUBFLkbxP2FPnbcI3WEAiBEAiBELg7gRT5u4cgBoRACIRACITAbQikyN+Ga7SGQAiEQAiEwN0JpMjfPQQxIARCIARCIARuQyBF/jZcozUEQiAEQiAE7k4gRf7uIYgBIRACIRACIXAbAinyt+EarSEQAiEQAiFwdwIp8ncPQQwIgRAIgRAIgdsQSJG/DddoDYEQCIEQCIG7E0iRv3sIYkAIhEAIhEAI3IZAivxtuEZrCIRACIRACNydQIr83UMQA0IgBEIgBELgNgRS5G/DNVpDIARCIARC4O4EUuTvHoIYEAIhEAIhEAK3IZAifxuu0RoCIRACIRACdyeQIn/3EMSAEAiBEAiBELgNgRT523CN1hAIgRAIgRC4O4EU+buHIAaEQAiEQAiEwG0IpMjfhmu0hkAIhEAIhMDdCaTI3z0EMSAEQiAEQiAEbkMgRf42XKM1BEIgBEIgBO5OIEX+7iGIASEQAiEQAiFwGwIp8rfhGq0hEAIhEAIhcHcCKfJ3D0EMCIEQCIEQCIHbEEiRX5nrly9fHl69evWgNlcIhEAIhEAI3JNAivwg/T9//jy8f/9+sXinyA8CvVDs48ePjy9PeoF6/fr1w48fPy7U8PDgOqRH8VRcuYixxvTz9u3bh9+/fzN8yFYcxROfxejSq+qQru/fvz9Ro2fWUHttDJ8o3fiD59u1/i5xO1vOaj9qX3oudTm7xL5yk76qp+Z1Hd94+v01L0X+L4r5G5Iin9DnOd1iVJvLC65icOmhKR1e1Dks2LjEl2f5oXV83Vv4dk+dHGLkdGUyYhs6vKjX+GisxqvGdGStPclU/yqTEV+WuJ0xZys3cpYc1rjY+16vHDtu5DF6eCavuznVlq0+p8gPRoYgkwSD0yL2TAJ1s0kdsfCCPLfMlLzmo0ObuRZ05rHR59bY41g9DOVDPRCX/OrkFbM3b978/W2L9kxl2/FeWmsv42vkrHxd4tYxPHrOdjng+7jmHvKS4ezuXgzghozrRId0v3v3bne/3dtskScQ3759e3wr49czgu8XcozXw0SymsM4bffJgjG1BLvqdxlfSxvOx/Tsl/TVNbHN3zrrer6G6zvLfXeQiaVYO7clHsSHuNZ4dOsQH+YsrbGn8XqoyXbPvZq/U76hhzxFh+9T+ogXRfCIXMWpyyX5emnOLnHr1tH6Yn9UtjUPySXydarIi4fnJPFgnsbIYRi6vPoUDxV5rbGna/NFXhuDQNSAsgk8oXXvwarP0lWLrWRYQ8HTva+rPg4zX6sLNDa5PsnR7/PpQ5Znl9G9+9OteeQ++U9xIAZ6/vz588Vc4Nsdtow5e/KgbvYj8MZfcg9fv379+sjVOYz4K3lxrfvG54qjxuv+c5kj3K+Zs+IxxY0YeqyI4xFzltzAb/LN/eeMcP+pG5wj6KFfelxe4+JY85Q4sGfQs/V280XeA0hwgeybCdBVRoHxANZx5nnbyZA8bo/P4b6by1i1V354Aa/jmjenD71HbmGi3+h4AVG/s1tiINaar3nEsm5i3/SS/fDhw+MLhufP0jp7GSev+E0ZByD94jRywZJYwNmZoZM1pJtYjKyxNxn5J1+fm7Mj3M6Us10ekH/klmTgphzTj8bYy5LXRQ4qX5Enh1kHGfTog4XODM3Z07X7Ik8AaksgFCgPnvqXDnd0oUMBJZmkb+4iYXwu8mxIjXX6alJhh9pOH3qP3Mpv+e+bWP6KVe2b4tCxpm9OBzJHZI9vNbfm8rfjKza+vyRDzODWxUp9dR92+vfYh/81tzoOc/518kvciCvs5/QfZUznqv8dkM4vvXSKna4ux+nzl9OqR+vkz+QrlWc8A53AdMHpNkFdUjJeLOvBMrKOdLJ53J66VmdjlVES6adLzBF/qr6jP/uLEb6OxgJ5YlwPviXekq8FDJ1HaJWHtRBd6nPHsPIm551Zl/8+vuf7NXJW/l/D7dL47Zkzti/5XHOtPqOn482Y2qVxl93S/a4/ybOZpgpvPWw68Mi4DgWzfsIhyPVQrDrRp8TrLtmst8FPnz49+WMEyS750+k7Q5/i4cVWsfJnGKi/+9TPS4HHjjhJd3cpfl0OdLJ77av5BhPfC/INfuJRxzpOkvGX6fosnTWme2U4ZXf1Twy6nIVfN3YpN3SpPctFzk7t45rj4tLN6eScYY2nj239ftdFXnAJjg4gfnzDkPiM0WoDcemefrX6sxcVhLpZSA5kfR0lAf3e1uTjwPRDEDtG/HHZM907X+fuDIijF3PG4e6x8RyQ3Mga6DtKW/dPZSI/nV03XvdYFx9iA/8uRkdhih8j+QS7jpn0LHEbWQN7jtDWfFU+1XPamU2ds/Usr3rquDjv9dpskV8DKAlRk0DPU8FfY93oCIEQCIEQCIEtEDhlkddb2dSb8xaCEhtCIARCIARCYA0Chy7yAuS/ujnTrwrXSI7oCIEQCIEQ2DeBwxf5fYcn1odACIRACITA9QRS5K9nl5khEAIhEAIhsGkCKfKbDk+MC4EQCIEQCIHrCaTIX88uM0MgBEIgBEJg0wRS5DcdnhgXAiEQAiEQAtcTSJG/nt3qM/1LR/R/ApzhC0NWhxiFIRACIRACfwmkyP9FMX9DAdb/kvcSl9ZJkf8faf9mr2u/yKj+75T1S5K02hrr/M/q7d/xhVH876XXfLNX/XawLm/XWGf7NJ9auEYujXBbY52nludJBEbyeg+kUuQHo5QiPwjqBmI6xPzLi1SsLy30dY4KfP0qyzXWuYH7N1NJAREbXRxq4jB61TnsEy/0a6wzas9W5NbIpRFua6yzFWZbsmMkr7dk75wtKfJzdGyMw4sD0YZucqt1/KC8ySI7UMpB55+6icVoMWLD1thpPozXWGcHOJ+Y6P4zcOlXPoupv4BJT2W5xjrYt4e2+i+bL81ZzVnittY6e2D60jaO5PVL23Ttersu8jqQdMBwMPErRy8IAqOAMabWD/uuANAnPdz7fO79cJNOFYyfP38+2iSZ7tOmNi7z1botHkT06XA480WMFQcusRE7CjT9U60Ow/rvTUuvdBDDNdaZWn+L/RQdzz/PdfEYuZTP+uFCL7nN83PXQf8e2jVyaYTbGuvsgec9bFzK63vYdO2auy/yflALgg4TDu7umYOMQ6c+aw59ftB1m86hS59s8cKuRPFCJBnXqXvN8T50Stbn0n+21jkQA3HRvxTocZ7jIr4uq7jo+evXr3/jtcY6czZsbazmOLkoJmIjHksX8UCWT5b8K47ivMY6S3ZsbXyNXBrhtsY6W2O3BXtG8noLdo7asPsi70VVTvuBXjcKUHxzIMNBJRn6vPjWwKOLVvPnbEHO224dxt1G+s7YwuHbt29PXojU74V7jg05oVYx0lxdPKs4rbHOnA1bGyP3xFUvTbxQ0g+jObt9T/DipPn0e5F/zjpzNmxxbI1cIg5z3NZYZ4v87m0T+Su+U3l9bxsvWf8URV6fluvP3KHGBru0yC8VHT7pVFt8HYLHBlbCnfkSG/EiXrC4hA/ca3ykm7411sG2PbQcZGLr+dfl/pw/OgSlQ/HgQrf6uH/uOujeQ7tGLo1wW2OdPfC8h41LeX0Pm65d8xRF3g+xCopDzQ8p+nwem87lXJf6KRjezz06fT59vg7ykquFjbEztRRoZ7QUi8oHzs5eMtrI+tG1xjp13a0/y/eaY+I8l8fVpy7vxdL/DsQa69R1t/y8Vi4tcVtrnS2zvJdtI3l9L9suXffQRV4wtFHmDi0KhuR0URDqJw901UPxcVLzdwHop0WvFxqt2a2jOZKbWgudZ2lrDLsNCDPx7Lhpjv9xioqZP2v+6DpH4U6RICe7HJWv7BGxRRYGzGH/IMuz5EbXQecR2tFcUh6Ka3dGjXAbXecITF/Sh5G8fkl7nrPW4Yu84GgjaCP5jx9WbCbG+XMw//QoPQQeOd+Y0ufPXVAkw1y1/AUl1ql2IFuLUaf76H0ewynO8O2KvPgwLq5TTEfWORLrmnNiVC8Kt7h143VfiGG9Rtapc/b+PJJLc0Ve/o9wG1ln7yzvYf9IXt/DrkvX3HWRv9TZyIdACIRACITAmQikyJ8p2vE1BEIgBELgVARS5E8V7jgbAiEQAiFwJgIp8meKdnwNgRAIgRA4FYEU+VOFO86GQAiEQAiciUCK/JmiHV9DIARCIARORSBF/lThjrMhEAIhEAJnIpAif6Zox9cQCIEQCIFTEUiRt3DzpRJ8OY0NDd/yhSvdl4YMK4lgCIRACIRACKxAIEXeIM4Veb71a6l4p8gb0BVvic3ct9UtLTeqA7nnvOwt2bKV8fqNavL90qvqUIw6dlVuaS9dasfW5Mmj5+Qs34gnHZ0eziXG1V4Tw62xG7GHb6Trvr2ScxguXT5qDWI0Nc4aU9+yOWLnvWVS5AcjwGY6+sE0iONFxbQRfZMpBt3GnjNKOvzrbrWpqw4OVH3dsMamNv7cOnsao+iS0xxolxQJdDirLj5d355YXWrrGjnb5ajr5UzyeBEPYnqp3XuSl9/6h5D8H0OS/TXX2Neeo/TN7XVYf/r06cn5sydGsjVFfjBibKgzbJ5BJC8ixqHlG5RY+OE2Z4x01INA8ppPPFXg9BKgtltzTv9ex+S/v/jID3GuLz9z/nXylXd9ntN3hLEufy7NWXFQbvrLrfrEmz5eyshhjbOO9x2BafUBDmp9b3dMNNdzfWSvSy/nSxeHas+Wnzdb5AkW/1gMv3YBPFDZUIx3B5SCxLhaNgk6fLzOxw6fz73rUVLQr1bPfmmNqlvjnnx6ruv5Gq7vLPfiWBkQr1qgpphMFRnpqfkkHeRUjeGU/j32d8XAc2/Ud/QQI3Q4V3EejdUeWVab18hZ6YQl7MhL8eRiLxAvcScWyBythYt8r3u7Pst3sdGZ3HGBKfw6Vlqnm9vJbrFv80VewSGpa0DqswBL1otpt+GmAtElCLIcZthCf21JwJo09Pt8+pDl2WV0v+cEq3wufZb/HHLEQM/6NdsoF+Z54SF30O12MUZcfOwo9+QaPqrVXvv69esjV8/BEZ8lr/n6QSfzxJ0fZHyPIneUdo2cdRZiJ25TzMhXyXiOu44j3TvfemYr9/xcEA89K687frCrOeu8tJ7r9LE93G++yAuwXxwW6tN9PaQ50JnH4TUXRPTXhKFfbdXrY35fD08f8+RUf03IOi6ZOX2u+6j3MNFvdLyAqP+SjQdHiozy5sOHD//KH3Ec2fh75w0PflPGPqJffEcu9gWxYL95sdG9x056L43fiC1bkVk7Z4mN9Iqjx4Y+cSd2xGIrPNa0o57R9ZkzVa2KOqx4lrxfI3tdOvbMdJdFnqT3gk/gOHT8kFGAOdzrYcM8tTVhfAy9JI2P+T0bTWvWyxOq08eGdVu57/RV/Ud8JnbEHB/FqvYxNtoqR7p4epxGde1Njvyr+2EufzsfFZ96ABIzcrbbp5eu06291T78r/l5ac528urjE2nHkD4//7bK6VK7yFnfs/XMZu92OVn7tD7y5Gpnk9br5nayW+zbZZEngbvDo0sEB88G7IJaE8bnLelFlk3W6ZcMNndrdZsavWdtu004Gos5Zh1/5Ls1GTtSq1yshUh5e8mB1uVs3QOdzJEZd75dk7OcFZ5znrd+7zLdPB/f6z1c+eBTW+Xtf//738f8Vc75NcUEnVPntXRI1yV7wtfdwv2uirwCwVus4Om5fhJZCkg9gDwIU5sGme5QZIx2Tr9ktMa7d+8e9L9lSJ9fJFxNUJc54704+SabirH6lQ+1cFVmS5wZn9v4Vecen/GTfCN3ecYnCpTY1rGpPej7FL3Oc2Qvsf4e29GchZ/nN/6KtXNUv+uFq/q4akzpP2orf/1v18vPyk2MK0d4wMtzkzFa6eviw/jW280XeX9b60CzSZCrMgoQY7Tq4/IDjHFal5M8m4pxX0sbjX5vfQNKB+stJZ3r8HWw+2yt853iQay7Is+YuHbsiYtz577G8EjsOeTwtea856xkuvGlPSgddZ0uRkfiKl9GchZ2SzlNfCq3eiZJbq5gHY1xV+Tl49x+H9nrNV/hv0e+my/y3aFytESNPyEQAiEQAiFwCwIp8regGp0hEAIhEAIhsAECKfIbCEJMCIEQCIEQCIFbENhskb+Fs9EZAiEQAiEQAmcikCJ/pmjH1xAIgRAIgVMRSJE/VbjjbAiEQAiEwJkIpMifKdrxNQRCIARC4FQEUuRPFe44GwIhEAIhcCYCKfJninZ8DYEQCIEQOBWBFPlThTvOhkAIhEAInIlAivyZoh1fQyAEQiAETkUgRf5U4Y6zIRACIRACZyKQIn+maMfXEAiBEAiBUxFIkT9VuONsCIRACITAmQikyJ8p2vE1BEIgBELgVARS5E8V7jgbAiEQAiFwJgIp8meKdnwNgRAIgRA4FYEU+VOFO86GQAiEQAiciUCK/JmiHV9DIARCIARORSBF/lThjrMhEAIhEAJnIpAif6Zox9cQCIEQCIFTEUiRP1W442wIhEAIhMCZCKTInyna8TUEQiAEQuBUBFLkTxXuOBsCIRACIXAmAinyZ4p2fA2BEAiBEDgVgRT5U4U7zoZACIRACJyJQIr8maIdX0MgBEIgBE5FIEX+VOGOsyEQAiEQAmcikCJ/pmjH1xAIgRcj8PHjx4dXr149/rx+/frhx48fF6/9/fv3vzqky/VIn55Zw1utfdSr81uc/Pry5csTLnVcskvx+f3798Pbt2//6nn//v3Dnz9/fJld3KfI7yJMMTIEQmBPBFRAVCBUKHSp6HiBHvFFhanOqXqrHgqT1jviRYH3ol3Z1mfJ6gXI51SOdQ4cJadLxV1Ffo+FPkX+iDshPoVACNyNQFeIKBIUjRHjVHj8RUFzVKhqn+vq5vj43u/lf33xEe83b948/qaE4iwOfok7BXokPh3Hbp6vsdX7zRd5Bcd/DVWDJ7DqcxmCCXQC7zK81THmeumrMnr2teqG9TGtVcdlD4mCLSQsh8CU7Z0u/EsbAiGwHQI6J2oh5myo+3vOas4h5nB2+Fnl85GfGnfZvd5zTsIXnzkfxYiCj4+Kh85b5ozER/rQKT2sKz1747vpIi+YCggXwfI+BYJCiZy3bAwPmI+TJB44+liHZy/c6EVGretg3PskM5ckGq++qI/kdLtzHwIhsE0C2vMUZoqDnj9//nzVXtbZpXOjng3Ve617lrNCvoqJfnRGctXzUuzE5OvXr3/5LcXn169fj/GTnC7OcsVPcZyqJdiwtXbTRb7CotgSVODzXOX1rICw4bpxdBJQydCHXp49uGxen+f66zjPrsPldY+M65S8P9c5eQ6BENgWAe1XnTnfvn17UoTUf0kR5tzh/NL8qQ8JyB79rOCMhKPOaDHhXNWzxtTqpQgePKtmqG8uPl7kpZe1WJu1tpV109ZsushTxHljo1XAdGm8/mqmuqqAzAWl2xz0sQ7PJExdQ8/IYCMtc0gQnjsd6tOaJNWIf1N60h8CIXAfAtrD2v8UZ6yguOgsGLk6efV1n+j93BjRvVeZzk94q6VmcIbip89Dfi4+qhmKoZ/Xo2c4a26l3WyRp2g6ZPoUJF0jRfAlijzB95cJ+rC/Pk8lgPuoua5zak76QyAEtkOAQsM5JctG97970Z1d3ZmH7jOcFToTa3H2M5N7zl14OsuR+Gh+fVHo2KN/y+2uirwCpbcrNg/JXYPhwHlrq0FHBh1sEJLE16FvVId0S7a+CdKH/dhQW8npNxRLv6Wo8/IcAiGwDQI6T/xc0p72Z6zkfOrGNKd+aq96pUc6qhz6j9bCy8/Qyqk+d3wqxxofznzqQq0Te+K62SIviAKvQskPf/HBAyw5BQIZtfVNjzc3l3EddVx/liYdyBBw2TN1Sdb1yyb91DlVrtucrEeCTa2Z/hAIge0S8HOpK+KynPNgaryegfVsO+NZATPO246dc+vOWLFfig9sWWev5/Gmi/x2t+9tLSO5lMy5QiAEQiAEQuBaAiny15K70bw9/1roRkiiNgRCIARC4EoCKfJXglt7Gp/e9auhvf5aaG0m0RcCIRACIfA8Ainyz+OX2SEQAiEQAiGwWQIp8psNTQwLgRAIgRAIgecRSJF/Hr/MDoEQCIEQCIHNEkiR32xoYlgIhEAIhEAIPI9Aivzz+GV2CIRACIRACGyWQIr8ZkMTw0IgBEIgBELgeQRS5J/HL7NfiIB/O9XUN1iNmLL0TVhrrTNiyxZk6rc9Xvq/b/r/+sk3g6m95pset8BjTRuem0s1NvD1L8niezUY6779bU2ftqCr4+JMZKPvc7Gp45JZik/N7fptg1tgMWJDivwIpcjclYA2ox9e2sCXFnoOw7mNusY6dwV14eIclhRkDjVxGL2Y0x2i6NBYjVdljexR2urfNTmr+Mz9+xXktMdL6/heOQpP/CBnPd8q2/os2Vrol+JDXsMW1nPnBzZurU2R31pEYs8TAt2mZsOxAZ9MmHjQxp/boGutM7H8JrvFrzLpCvKc8RyGfuhW+a7wSP6oxWitXJKeuSLfMWRvzMWjxmdPz/KrvjA6J/JROeeX5/pIfLqc7eb5Glu9v0uRV6B0uOgfnNEbVr1XonIpOPwqSm0NnuTU5zJ+cGlMzz9//nw8VCRXk4SN4Tq6dbBpqq12eBHSWF1Xejz59EwiuS26d11T6x+xvzvI4OxxnvOd+M7FdI115mzY2ljHhANS+SYeIxdz5uSRIV7k+Fw8RtbeqsxauSROlxZ5MdFZcVS25C0viOQW52PHTPFQTjNnJD7Sh04xZV3p2RvbuxV5ChcbXgfAP//88ySpBdMPD4LlfQpEVzw5AKRDa7mM5nDgEDwPKKWDenIAAAtfSURBVDZdEkzZ5PJVB8noMvThD8/IdLbh11lasaix0rNeENm0Syzg+vXr178vesoJ9Gr+Guss2bGlcZiQe2rFBEbk4JLN6NFcfpyrz9cek4zvRR8/yv1aucQZAle1fk7B3mNFHF3uKFzdD/kMF3JY47r3c0Ec9Ky8Ju+W4vPr16/HswGuxIF/BXVvbO9W5AEugLyt+r0HlHuSmqACn2fkvFWgWIt+TwTd13HJeSIw75KWAk2idDrdDo13/j/Xjkts3qIs/uuf/9WmJtbq9808Zzt54/LEhw27xjpzNmxtDCb8s8oUZvrF45qL+eiTjton3YrltWtcY9dLzrlVLnHekbPyiT4K3ocPHx4LlMu8pO+3Xot9y17WeSDf8ZczVa3OdXKMZ/Faio8XeellLdZmrVv7upb+TRf5msAksgKmS+O8IEwBUUAJUidDUugg8mtpnsvqnoMMG2lJMsngj9YkYXwcHfQhs7ekqmye8yxWYulFQ/rEqPZNrQNX8gY5j/0a66B3Dy25JbbOZYrVJT5Jn784d7FSn8tcon/rsrfMJXGbO8+Iq8d067wusU9+Vf/hrZYztpOhD/l6fnie6szV3lAfF2y9j7Ett5st8hw2DpQ+BUnXrYt8TYKpQBJ8L8b0uf2aLxn9dLbjHy8Ial3n1PpH7mfTEnP5OsV2isOUvGLDxl9jnan1t9qv3Ko5Ls4wudZu5yod5Lzr6/Lfx/d8f8tc6mLmrNaIn+vb2r1yq+Ys56Z8537q3JU/I/GpOcy8pQ+VW+Mle3ZV5JXg/smDw3vuUOqC5YEgKaSbq0sCxroWO1yH1q1vgpor3e/evXv49OnTvwq45tQE7tY7W5+4eoynYgrzjmE9/Ii75nCNroP83lvyHAYdE/lIfnf5XBlUnRqX/vqpvbKuevb+XP0TA89h/FNeims3hgwtsmq7a2m8m7O3vs7Hml/1WXOW8q/Gh72gOOpiD/C8J26bLfKCKPDaAPzwFx9qkgs8Mmr9kK/B64JDQF1HXaOb530kHzpkk360vl8kS006yTCGDtqRA8DXOOK9x3iKB/ni8XcWjMO1xkayI+u4zr3fU5TnmHheVmZ1fpfXYlTZT8Vo7zzd/pFc4tzocpoxYtPJjKzhNh3hfoSL59tUTi6xq3VB8nu87lLk9wjqJWxWEtXDjwN2rwn2EtyyRgiEQAiEQE8gRb7ncpfersjzSal+grqLgVk0BEIgBEJgVwRS5DcUrvrrIX5Np19P5QqBEAiBEAiBSwmkyF9KLPIhEAIhEAIhsBMCKfI7CVTMDIEQCIEQCIFLCaTIX0os8iEQAiEQAiGwEwIp8jsJVMwMgRAIgRAIgUsJpMhfSizyIRACIRACIbATAjct8vxt8e5LHJb4MPce/+sYa+dvtS9FKeMhEAIhEAJbJrD7Is+Xxaz5MpAiv72U1XcI8L8UTn2D1ZLVIzpGZJbW2dM438MAW/l/6VV1SJe/IDtT1lF7bRwvte9e8u73tb7Wb3erejj/nOs1MbwXo2vWXco36fRvvKv5yJpL8aEOwLZ+URl6tt7etMg/x3kALxVvknxJ7hJbWNsPqkvmR3ZdAtqM/tsgxboedksrSodvUsW26lhjnSU7tjTOYcneIe/FYfRCh++VkfhIxmM6ut5e5NbIpaUc5ezzeBEPYroXXqN24t9cvtX8k2wt9EvxqXsB1n6GjNp8b7kU+SYCBNgTqRFL1wsQ6DY1G84PtzlTpKP716M0n8NwjXXmbNjimPyvh1ZXWOZs7+SneKOH/QV7+o/SrpVL4lNfhMSbvo4je+OobJfyrWOivPJcH4lPx76bt4ecfVLk5YT+hTSBqpec9gNB0Pg1Rn1LItEY93mut+qQPJ+uCBb/KA26NEcX4/R7yyZgLdnu490G6GxRQl1y1XWwVTo0hm+uUzLOh0Rye3Xvunz+0e/9UMNXODs3xrpWTLsiLz1wXWOdbu2t9rFHxYDL99Ro7qOHPYcOuKLbW62JvPcf5X6tXIIlec7Z4DHTvc4H4iXuR2a7lG/dXhcbMYLLSHzE0XOYdaXH+e8hZ58UeSWVirxA1cud1j2JJzmSj0TzuQLisoypH+jq01wvgiS4J3AXQOBPga/roNflqz/IdP5gf20l6zphQh86edZ8+liHZ2TwzZOtrnv0Z7Egf+ChZ738ef7McWCecyQ+6F5jnTkbtjZGrpF7arXXvn79+siVHBy1W/Ka7/u1m8u6l+rvdG21b+1cUt6Kq5+P7ju5LBnPcZc52v1UvimP/VwQDz0rr+G3FJ9fv349njnkKHz5wLk3xv8q8gIiUByMOCrHdC+Hu09FGu+cd6CeaFWezc+hwzPray59yKiv2ulrdPIad5s6f6bmue6l+84uX1fza0J2ttQ5S+sebRz/v3379qSAqN8385LfxJRCpOL+4cOHvy8Qa62zZMdWxuEhrmLByw794jFykefEQjk9V2wujduIDVuTWSuXiAWxkV6x9djQJ+7IE4utcVnDnqV840xVq6IOK551xqpPTKfOFC/yqlPwZO2uzq3h2610PCnyOCEIgvGf//zn8SBU8giKQKlf8Dgsve2cB6h0+6V+4Knfg6BnElZyXPRJlsttpo8WebeRezaOdLkdmss8XwedUy1z0E/r9sNOeju70cEcZDquU3YcrV+sxJJ44Z8Y1T7GRltxhfUt1xm15yXlyC2x9TwnB71vzi7J1f0Dy6qDNWE+p3fPY/hf8/PSnO3k1ccn0i5W9B31zFjKN87YLifpG4mP+GlveK7uNX+fFHltLA4+Oac3HX3aERR+jS+I3Sf5qU3ZJapk1U8hVEvioodkdcj0yR6uOfCdPPNoO39G5jFfLTb4xqLP7ZesZPQzt65zcZ2+5lnu2bSjMR/lUvnfap1Re+4hp9yqhUicOQxHbOr299T+ke66z0fW2JvMWrnEWeH+e976vct083x8z/dL+UbuTZ278n0kPppf98EU763z/FeRl3Mq7EoUAdPG/PTp0+NhoGeKVz0cphxdCsrUvC5Y9PmBr/ndYYVejdVgMaYWnSQFzyq0dR2f5/cw0Vpc0icd6KVfiaIXJjF1eY13rJh35rbGUJy6mMJ8KTfZ5DU2o+scJRaVA7lfuZDfXT5rj9S9ovm1mKOj5vxRWFY/RnMJflP5XDm6XuLlTGtMq117f4aXn8013+qzZOc4ionmeAwq2z3n77+KPBDltC6c9YMTh7W5/QfwJJqP6d5Bs06Vqevy7LawzqOBZiO6PFiS0SZgjNb1ur2y8Z9//nl8qanrsF7XVn+0pn58Hc2DnbNAH2PYSFv9Qf5MrcdwiodYi5nnKowY03jHHrmRdZA9Quu5LzY1X+Wj52U3XnO/i4/mzXE/Asvqw0guwa5jJn2et11ucz5rjJ9Lzq1q8x6eYYa/HTvnNpV3S/GpbCW/x+tfRf4lnOBgqcmo56mAvIRd915DSVQLFAfsXhPs3kyzfgiEQAicmcCmirwKWfdWdpYAdUWeF6LuE9RZuMTPEAiBEAiB6wjcpcjLVP91Cr92qZ9ir3Npv7Pqr4fgUn/jsV8PY3kIhEAIhMBLErhbkX9JJ7NWCIRACIRACJyRQIr8GaMen0MgBEIgBE5BIEX+FGGOkyEQAiEQAmckkCJ/xqjH5xAIgRAIgVMQSJE/RZjjZAiEQAiEwBkJpMifMerxOQRCIARC4BQEUuRPEeY4GQIhEAIhcEYCKfJnjHp8DoEQCIEQOAWBFPlThDlOhkAIhEAInJFAivwZox6fQyAEQiAETkEgRf4UYY6TIRACIRACZySQIn/GqMfnEAiBEAiBUxBIkT9FmONkCIRACITAGQmkyJ8x6vE5BEIgBELgFARS5E8R5jgZAiEQAiFwRgIp8meMenwOgRAIgRA4BYH/B8SAAMWmwyjFAAAAAElFTkSuQmCC)\n","\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","
\n","\n","![Screenshot 2021-02-25 190003.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hFGnBCHavltY","executionInfo":{"elapsed":87702,"status":"ok","timestamp":1614242484855,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"c3071220-e810-4019-f194-1417c3d432ce"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java|\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 73kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 22.0MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=fbb7c2e44539433abea58a5db430b789061641d87940efb6113dd4a2b40403ee\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Coivd19 NLP Text Sentiemnt Classifcation dataset \n","https://www.kaggle.com/datatattle/covid-19-nlp-text-classification\n","#Context\n","\n","This is a Dataset made of tweets about coivid 19 "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"elapsed":3480,"status":"ok","timestamp":1614242369617,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"9b3f1f23-33bf-4a48-ca8a-3f3af4b93cdd"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/Corona_NLP_train.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 08:38:17-- http://ckl-it.de/wp-content/uploads/2021/02/Corona_NLP_train.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 5293639 (5.0M) [text/csv]\n","Saving to: ‘Corona_NLP_train.csv’\n","\n","Corona_NLP_train.cs 100%[===================>] 5.05M 2.68MB/s in 1.9s \n","\n","2021-02-25 08:38:19 (2.68 MB/s) - ‘Corona_NLP_train.csv’ saved [5293639/5293639]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"elapsed":1508,"status":"ok","timestamp":1614242371754,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"58d7462e-6e7a-4c5a-b339-e764a1eb82f6"},"source":["import pandas as pd\n","train_path = '/content/Corona_NLP_train.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
1696A sickening attack on a Salisbury councillor h...negative
4290If you answered yes what kind of bottle does y...positive
9998Currently at the food bank. We appreciate our ...positive
9106*Take note of the following against covid 19* ...positive
1459Please all give a shout out to our amazing sup...positive
.........
5428So online grocery shopping is now almost impos...positive
7097When you fill your fridge with ice for a #musi...negative
6465#ChipChirps™ from #VLSIresearch's app. #weVIS...positive
7188Are We Respecting The Hustle Of People Reselli...positive
7900@Tweeter4Trump1 @deus_rock @AngelaOrme3 @Capon...negative
\n","

8000 rows × 2 columns

\n","
"],"text/plain":[" text y\n","1696 A sickening attack on a Salisbury councillor h... negative\n","4290 If you answered yes what kind of bottle does y... positive\n","9998 Currently at the food bank. We appreciate our ... positive\n","9106 *Take note of the following against covid 19* ... positive\n","1459 Please all give a shout out to our amazing sup... positive\n","... ... ...\n","5428 So online grocery shopping is now almost impos... positive\n","7097 When you fill your fridge with ice for a #musi... negative\n","6465 #ChipChirps™ from #VLSIresearch's app. #weVIS... positive\n","7188 Are We Respecting The Hustle Of People Reselli... positive\n","7900 @Tweeter4Trump1 @deus_rock @AngelaOrme3 @Capon... negative\n","\n","[8000 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"elapsed":199434,"status":"ok","timestamp":1613549294614,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"ec18ede3-6c20-4aba-d557-73b12bdd073e"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 1.00 0.21 0.34 24\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.70 1.00 0.83 26\n","\n"," accuracy 0.62 50\n"," macro avg 0.57 0.40 0.39 50\n","weighted avg 0.85 0.62 0.59 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentsentiment_confidencedefault_name_embeddingstextydocument
origin_index
0positive0.761295[0.004783493932336569, -0.02814795821905136, -...#Cheerios maker @GeneralMills on Wednesday rai...positive#Cheerios maker @GeneralMills on Wednesday rai...
1positive0.924655[0.018235845491290092, 0.05186385661363602, -0...Got to visit this morning where they have swit...positiveGot to visit this morning where they have swit...
2neutral0.552810[-0.010089528746902943, -0.03414658457040787, ...Got a video doctors appointment first thing as...negativeGot a video doctors appointment first thing as...
3negative0.607435[-0.03430407866835594, 0.015884995460510254, -...More likely to die from starvation during a 2 ...negativeMore likely to die from starvation during a 2 ...
4positive0.934333[0.05470110848546028, 0.0018378241220489144, 0...Don't move around unnecessary \\r\\r\\r\\nStay at...positiveDon't move around unnecessary Stay at home. Us...
5positive0.852907[0.0012291448656469584, 0.049797337502241135, ...My dad who is a professor just discover about ...positiveMy dad who is a professor just discover about ...
6neutral0.528781[0.03790939226746559, -0.013407733291387558, -...Riverfront Times: Cody Pfister, the 26-year-ol...negativeRiverfront Times: Cody Pfister, the 26-year-ol...
7positive0.771463[0.04207884147763252, 0.02299105003476143, 0.0...At sale of sanitizers at factory prices is a m...positiveAt sale of sanitizers at factory prices is a m...
8positive0.708429[-0.03874765709042549, -0.006220388226211071, ...Watch this if you are one of those idiots who ...negativeWatch this if you are one of those idiots who ...
9positive0.839835[-0.07232732325792313, 0.014406188391149044, 0...The dedication of our farmers and farm workers...positiveThe dedication of our farmers and farm workers...
10positive0.600599[-0.01565781980752945, 0.010397609323263168, -...My friends husband has died this morning due t...negativeMy friends husband has died this morning due t...
11positive0.633946[-0.05496770888566971, -0.04461418837308884, -...\"While it is always a shame when food is waste...negative\"While it is always a shame when food is waste...
12neutral0.516407[0.0015882003353908658, 0.07789196819067001, 0...@AirCanada is cancelling existing flights and ...negative@AirCanada is cancelling existing flights and ...
13positive0.634921[0.03064206801354885, -0.01829364150762558, -0...Consumer advocacy group CHOICE has slammed pan...negativeConsumer advocacy group CHOICE has slammed pan...
14positive0.910824[0.02500816248357296, 0.04072476178407669, -0....@Lowes is there a reason why you’re not suppl...positive@Lowes is there a reason why you’re not suppl...
15positive0.918036[-0.03191220760345459, 0.04579667001962662, 0....Whilst u queue 4 your beauty treatment get you...positiveWhilst u queue 4 your beauty treatment get you...
16neutral0.519694[0.0034340715501457453, 0.038198184221982956, ...I can’t be the only person (CONSUMER, they on...negativeI can’t be the only person (CONSUMER, they on...
17negative0.622014[0.02401014231145382, 0.056036192923784256, -0...Not sure if this is the common cold, flu, or t...negativeNot sure if this is the common cold, flu, or t...
18positive0.841300[-0.02556675486266613, 0.004143165424466133, -...And it’s a great listen in the car if you hav...positiveAnd it’s a great listen in the car if you hav...
19positive0.914320[-0.02416982874274254, 0.02811759151518345, -0...Please be smart and prepare. Here my take “St...positivePlease be smart and prepare. Here my take “St...
20positive0.929326[-0.01671682484447956, 0.01305483840405941, 0....Lessons from COVID-19\\r\\r\\r\\n\\r\\r\\r\\nStock up ...positiveLessons from COVID-19 Stock up food at home Al...
21positive0.930061[0.07605478912591934, -0.026303431019186974, 0...This is a really great selection of advice fro...positiveThis is a really great selection of advice fro...
22positive0.692401[-0.0005388688296079636, 0.03235577791929245, ...The worst thing about TP hoarders is that when...negativeThe worst thing about TP hoarders is that when...
23positive0.898010[0.008443073369562626, -0.02788439393043518, -...Consumer psychology ? about which would result...positiveConsumer psychology ? about which would result...
24positive0.894567[-0.05909405276179314, -0.0424291230738163, -0...Helpful tips to prevent 19 from entering your ...positiveHelpful tips to prevent 19 from entering your ...
25positive0.766391[-0.01403691153973341, 0.03554365783929825, -0...@jacksenwolf @scp1471wolf #memes #coronamemes ...positive@jacksenwolf @scp1471wolf #memes #coronamemes ...
26positive0.775324[-0.06682447344064713, -0.046077944338321686, ...This grocery store worker says some customers ...negativeThis grocery store worker says some customers ...
27positive0.934482[0.013833973556756973, -0.06955333054065704, 0...Don t panic Stay healthy protect yourself amp ...positiveDon t panic Stay healthy protect yourself amp ...
28neutral0.512394[0.012594238854944706, -0.06423342227935791, -...7 for lettuce is ridiculous Fruit and veg pric...negative7 for lettuce is ridiculous Fruit and veg pric...
29positive0.634858[-0.020443512126803398, 0.008256517350673676, ...Quit harassing grocery store workers. WE KNOW ...negativeQuit harassing grocery store workers. WE KNOW ...
30negative0.605742[0.0064558726735413074, -0.03096119686961174, ...Scary Gun sales gone up in amid Fearing shorta...negativeScary Gun sales gone up in amid Fearing shorta...
31positive0.941815[-0.01913328282535076, 0.02475474402308464, 0....I m temporarily working in a supermarket to he...positiveI m temporarily working in a supermarket to he...
32positive0.904202[-0.026081491261720657, 0.03242545947432518, 0...#horningsea is a caring community. Let’s ALL ...positive#horningsea is a caring community. Let’s ALL ...
33negative0.631536[0.03639446198940277, 0.05759260803461075, -0....@exxonmobil said today it is reducing its 2020...negative@exxonmobil said today it is reducing its 2020...
34positive0.957126[0.0147019037976861, -0.02653518319129944, -0....19 Using and a distance sensor to create a tou...positive19 Using and a distance sensor to create a tou...
35negative0.600725[0.05711821839213371, 0.05161363631486893, -0....#British consumer confidence has fallen by the...negative#British consumer confidence has fallen by the...
36positive0.612837[0.07101022452116013, -0.048838380724191666, -...Isolation Illustration - For fuck sake... we’...negativeIsolation Illustration - For fuck sake... we’...
37positive0.858738[0.04629743844270706, -0.031434960663318634, -...Clever, won't happen here though\\r\\r\\r\\n\\r\\r\\r...positiveClever, won't happen here though Supermarket I...
38positive0.663183[0.010728790424764156, -0.03496933355927467, -...I dunno if this makes me a bad apocalypse comp...negativeI dunno if this makes me a bad apocalypse comp...
39positive0.883665[0.013930771499872208, 0.0005065983277745545, ...Delivery companies and other services are adap...positiveDelivery companies and other services are adap...
40neutral0.582677[0.08638226240873337, 0.0718393325805664, -0.0...Panic-buying is pushing up prices you dumb-ass...negativePanic-buying is pushing up prices you dumb-ass...
41positive0.762912[0.0711701512336731, 0.051328204572200775, -0....With consumer concern over their finances due ...positiveWith consumer concern over their finances due ...
42positive0.855599[0.03079848363995552, -0.045532431453466415, -...How to queue safely for the bill in supermarke...positiveHow to queue safely for the bill in supermarke...
43positive0.681266[0.0025339308194816113, 0.014236150309443474, ...#COVID2019 Makhura: There are two areas where ...negative#COVID2019 Makhura: There are two areas where ...
44positive0.950545[-0.015687722712755203, -0.010347431525588036,...Make sure to take every measure against #coron...positiveMake sure to take every measure against #coron...
45neutral0.554849[0.04179179295897484, -0.02091711200773716, -0...\"As shoppers shut their wallets, a consumer-dr...negative\"As shoppers shut their wallets, a consumer-dr...
46neutral0.548503[-0.03860854730010033, -0.005080435890704393, ...If Corona virus ever comes to Uganda, some of ...negativeIf Corona virus ever comes to Uganda, some of ...
47positive0.930881[-0.0628998801112175, 0.03796340152621269, 0.0...Dear supply chain, supermarket and pharmacies ...positiveDear supply chain, supermarket and pharmacies ...
48positive0.956872[0.04039526358246803, 0.052726808935403824, 0....Travel Portable Mini Hand Sanitizer Anti-Bacte...positiveTravel Portable Mini Hand Sanitizer Anti-Bacte...
49positive0.777220[-0.06671527773141861, 0.023245809599757195, 0...So my sister has just told me at her @asda sto...negativeSo my sister has just told me at her @asda sto...
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 positive ... #Cheerios maker @GeneralMills on Wednesday rai...\n","1 positive ... Got to visit this morning where they have swit...\n","2 neutral ... Got a video doctors appointment first thing as...\n","3 negative ... More likely to die from starvation during a 2 ...\n","4 positive ... Don't move around unnecessary Stay at home. Us...\n","5 positive ... My dad who is a professor just discover about ...\n","6 neutral ... Riverfront Times: Cody Pfister, the 26-year-ol...\n","7 positive ... At sale of sanitizers at factory prices is a m...\n","8 positive ... Watch this if you are one of those idiots who ...\n","9 positive ... The dedication of our farmers and farm workers...\n","10 positive ... My friends husband has died this morning due t...\n","11 positive ... \"While it is always a shame when food is waste...\n","12 neutral ... @AirCanada is cancelling existing flights and ...\n","13 positive ... Consumer advocacy group CHOICE has slammed pan...\n","14 positive ... @Lowes is there a reason why you’re not suppl...\n","15 positive ... Whilst u queue 4 your beauty treatment get you...\n","16 neutral ... I can’t be the only person (CONSUMER, they on...\n","17 negative ... Not sure if this is the common cold, flu, or t...\n","18 positive ... And it’s a great listen in the car if you hav...\n","19 positive ... Please be smart and prepare. Here my take “St...\n","20 positive ... Lessons from COVID-19 Stock up food at home Al...\n","21 positive ... This is a really great selection of advice fro...\n","22 positive ... The worst thing about TP hoarders is that when...\n","23 positive ... Consumer psychology ? about which would result...\n","24 positive ... Helpful tips to prevent 19 from entering your ...\n","25 positive ... @jacksenwolf @scp1471wolf #memes #coronamemes ...\n","26 positive ... This grocery store worker says some customers ...\n","27 positive ... Don t panic Stay healthy protect yourself amp ...\n","28 neutral ... 7 for lettuce is ridiculous Fruit and veg pric...\n","29 positive ... Quit harassing grocery store workers. WE KNOW ...\n","30 negative ... Scary Gun sales gone up in amid Fearing shorta...\n","31 positive ... I m temporarily working in a supermarket to he...\n","32 positive ... #horningsea is a caring community. Let’s ALL ...\n","33 negative ... @exxonmobil said today it is reducing its 2020...\n","34 positive ... 19 Using and a distance sensor to create a tou...\n","35 negative ... #British consumer confidence has fallen by the...\n","36 positive ... Isolation Illustration - For fuck sake... we’...\n","37 positive ... Clever, won't happen here though Supermarket I...\n","38 positive ... I dunno if this makes me a bad apocalypse comp...\n","39 positive ... Delivery companies and other services are adap...\n","40 neutral ... Panic-buying is pushing up prices you dumb-ass...\n","41 positive ... With consumer concern over their finances due ...\n","42 positive ... How to queue safely for the bill in supermarke...\n","43 positive ... #COVID2019 Makhura: There are two areas where ...\n","44 positive ... Make sure to take every measure against #coron...\n","45 neutral ... \"As shoppers shut their wallets, a consumer-dr...\n","46 neutral ... If Corona virus ever comes to Uganda, some of ...\n","47 positive ... Dear supply chain, supermarket and pharmacies ...\n","48 positive ... Travel Portable Mini Hand Sanitizer Anti-Bacte...\n","49 positive ... So my sister has just told me at her @asda sto...\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"qdCUg2MR0PD2","executionInfo":{"elapsed":201736,"status":"ok","timestamp":1613549296935,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"f654210d-a842-42a0-b327-5d49d64d1012"},"source":["fitted_pipe.predict(\"Everything is under control !\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentsentiment_confidencedefault_name_embeddingsdocument
origin_index
0negative0.690746[0.027917474508285522, -0.06684374064207077, -...Everything is under control !
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 negative ... Everything is under control !\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"elapsed":201725,"status":"ok","timestamp":1613549296937,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"df084dab-ae75-4689-f854-b42c5744881e"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["##6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"elapsed":208512,"status":"ok","timestamp":1613549303736,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"8d7f0af3-58d5-41cb-d663-b3d2dc6620f0"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.96 1.00 0.98 24\n"," neutral 0.00 0.00 0.00 0\n"," positive 1.00 0.92 0.96 26\n","\n"," accuracy 0.96 50\n"," macro avg 0.65 0.64 0.65 50\n","weighted avg 0.98 0.96 0.97 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentsentiment_confidencedefault_name_embeddingstextydocument
origin_index
0neutral0.501342[0.004783493932336569, -0.02814795821905136, -...#Cheerios maker @GeneralMills on Wednesday rai...positive#Cheerios maker @GeneralMills on Wednesday rai...
1positive0.988317[0.018235845491290092, 0.05186385661363602, -0...Got to visit this morning where they have swit...positiveGot to visit this morning where they have swit...
2negative0.919849[-0.010089528746902943, -0.03414658457040787, ...Got a video doctors appointment first thing as...negativeGot a video doctors appointment first thing as...
3negative0.969353[-0.03430407866835594, 0.015884995460510254, -...More likely to die from starvation during a 2 ...negativeMore likely to die from starvation during a 2 ...
4positive0.988857[0.05470110848546028, 0.0018378241220489144, 0...Don't move around unnecessary \\r\\r\\r\\nStay at...positiveDon't move around unnecessary Stay at home. Us...
5positive0.943565[0.0012291448656469584, 0.049797337502241135, ...My dad who is a professor just discover about ...positiveMy dad who is a professor just discover about ...
6negative0.905861[0.03790939226746559, -0.013407733291387558, -...Riverfront Times: Cody Pfister, the 26-year-ol...negativeRiverfront Times: Cody Pfister, the 26-year-ol...
7negative0.648055[0.04207884147763252, 0.02299105003476143, 0.0...At sale of sanitizers at factory prices is a m...positiveAt sale of sanitizers at factory prices is a m...
8negative0.938932[-0.03874765709042549, -0.006220388226211071, ...Watch this if you are one of those idiots who ...negativeWatch this if you are one of those idiots who ...
9positive0.896486[-0.07232732325792313, 0.014406188391149044, 0...The dedication of our farmers and farm workers...positiveThe dedication of our farmers and farm workers...
10negative0.839513[-0.01565781980752945, 0.010397609323263168, -...My friends husband has died this morning due t...negativeMy friends husband has died this morning due t...
11negative0.932206[-0.05496770888566971, -0.04461418837308884, -...\"While it is always a shame when food is waste...negative\"While it is always a shame when food is waste...
12negative0.906857[0.0015882003353908658, 0.07789196819067001, 0...@AirCanada is cancelling existing flights and ...negative@AirCanada is cancelling existing flights and ...
13negative0.930158[0.03064206801354885, -0.01829364150762558, -0...Consumer advocacy group CHOICE has slammed pan...negativeConsumer advocacy group CHOICE has slammed pan...
14positive0.925111[0.02500816248357296, 0.04072476178407669, -0....@Lowes is there a reason why you’re not suppl...positive@Lowes is there a reason why you’re not suppl...
15positive0.986977[-0.03191220760345459, 0.04579667001962662, 0....Whilst u queue 4 your beauty treatment get you...positiveWhilst u queue 4 your beauty treatment get you...
16negative0.928900[0.0034340715501457453, 0.038198184221982956, ...I can’t be the only person (CONSUMER, they on...negativeI can’t be the only person (CONSUMER, they on...
17negative0.932876[0.02401014231145382, 0.056036192923784256, -0...Not sure if this is the common cold, flu, or t...negativeNot sure if this is the common cold, flu, or t...
18positive0.917828[-0.02556675486266613, 0.004143165424466133, -...And it’s a great listen in the car if you hav...positiveAnd it’s a great listen in the car if you hav...
19positive0.982969[-0.02416982874274254, 0.02811759151518345, -0...Please be smart and prepare. Here my take “St...positivePlease be smart and prepare. Here my take “St...
20positive0.992138[-0.01671682484447956, 0.01305483840405941, 0....Lessons from COVID-19\\r\\r\\r\\n\\r\\r\\r\\nStock up ...positiveLessons from COVID-19 Stock up food at home Al...
21positive0.990756[0.07605478912591934, -0.026303431019186974, 0...This is a really great selection of advice fro...positiveThis is a really great selection of advice fro...
22negative0.857424[-0.0005388688296079636, 0.03235577791929245, ...The worst thing about TP hoarders is that when...negativeThe worst thing about TP hoarders is that when...
23positive0.988393[0.008443073369562626, -0.02788439393043518, -...Consumer psychology ? about which would result...positiveConsumer psychology ? about which would result...
24positive0.939364[-0.05909405276179314, -0.0424291230738163, -0...Helpful tips to prevent 19 from entering your ...positiveHelpful tips to prevent 19 from entering your ...
25positive0.958614[-0.01403691153973341, 0.03554365783929825, -0...@jacksenwolf @scp1471wolf #memes #coronamemes ...positive@jacksenwolf @scp1471wolf #memes #coronamemes ...
26negative0.880688[-0.06682447344064713, -0.046077944338321686, ...This grocery store worker says some customers ...negativeThis grocery store worker says some customers ...
27positive0.985295[0.013833973556756973, -0.06955333054065704, 0...Don t panic Stay healthy protect yourself amp ...positiveDon t panic Stay healthy protect yourself amp ...
28negative0.943985[0.012594238854944706, -0.06423342227935791, -...7 for lettuce is ridiculous Fruit and veg pric...negative7 for lettuce is ridiculous Fruit and veg pric...
29negative0.904067[-0.020443512126803398, 0.008256517350673676, ...Quit harassing grocery store workers. WE KNOW ...negativeQuit harassing grocery store workers. WE KNOW ...
30negative0.952852[0.0064558726735413074, -0.03096119686961174, ...Scary Gun sales gone up in amid Fearing shorta...negativeScary Gun sales gone up in amid Fearing shorta...
31positive0.994854[-0.01913328282535076, 0.02475474402308464, 0....I m temporarily working in a supermarket to he...positiveI m temporarily working in a supermarket to he...
32positive0.973395[-0.026081491261720657, 0.03242545947432518, 0...#horningsea is a caring community. Let’s ALL ...positive#horningsea is a caring community. Let’s ALL ...
33negative0.960644[0.03639446198940277, 0.05759260803461075, -0....@exxonmobil said today it is reducing its 2020...negative@exxonmobil said today it is reducing its 2020...
34positive0.997540[0.0147019037976861, -0.02653518319129944, -0....19 Using and a distance sensor to create a tou...positive19 Using and a distance sensor to create a tou...
35negative0.918195[0.05711821839213371, 0.05161363631486893, -0....#British consumer confidence has fallen by the...negative#British consumer confidence has fallen by the...
36negative0.765415[0.07101022452116013, -0.048838380724191666, -...Isolation Illustration - For fuck sake... we’...negativeIsolation Illustration - For fuck sake... we’...
37positive0.939485[0.04629743844270706, -0.031434960663318634, -...Clever, won't happen here though\\r\\r\\r\\n\\r\\r\\r...positiveClever, won't happen here though Supermarket I...
38negative0.870772[0.010728790424764156, -0.03496933355927467, -...I dunno if this makes me a bad apocalypse comp...negativeI dunno if this makes me a bad apocalypse comp...
39positive0.964808[0.013930771499872208, 0.0005065983277745545, ...Delivery companies and other services are adap...positiveDelivery companies and other services are adap...
40negative0.929598[0.08638226240873337, 0.0718393325805664, -0.0...Panic-buying is pushing up prices you dumb-ass...negativePanic-buying is pushing up prices you dumb-ass...
41positive0.684870[0.0711701512336731, 0.051328204572200775, -0....With consumer concern over their finances due ...positiveWith consumer concern over their finances due ...
42positive0.958181[0.03079848363995552, -0.045532431453466415, -...How to queue safely for the bill in supermarke...positiveHow to queue safely for the bill in supermarke...
43negative0.923118[0.0025339308194816113, 0.014236150309443474, ...#COVID2019 Makhura: There are two areas where ...negative#COVID2019 Makhura: There are two areas where ...
44positive0.996742[-0.015687722712755203, -0.010347431525588036,...Make sure to take every measure against #coron...positiveMake sure to take every measure against #coron...
45negative0.952125[0.04179179295897484, -0.02091711200773716, -0...\"As shoppers shut their wallets, a consumer-dr...negative\"As shoppers shut their wallets, a consumer-dr...
46negative0.913734[-0.03860854730010033, -0.005080435890704393, ...If Corona virus ever comes to Uganda, some of ...negativeIf Corona virus ever comes to Uganda, some of ...
47positive0.983328[-0.0628998801112175, 0.03796340152621269, 0.0...Dear supply chain, supermarket and pharmacies ...positiveDear supply chain, supermarket and pharmacies ...
48positive0.996729[0.04039526358246803, 0.052726808935403824, 0....Travel Portable Mini Hand Sanitizer Anti-Bacte...positiveTravel Portable Mini Hand Sanitizer Anti-Bacte...
49negative0.775618[-0.06671527773141861, 0.023245809599757195, 0...So my sister has just told me at her @asda sto...negativeSo my sister has just told me at her @asda sto...
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 neutral ... #Cheerios maker @GeneralMills on Wednesday rai...\n","1 positive ... Got to visit this morning where they have swit...\n","2 negative ... Got a video doctors appointment first thing as...\n","3 negative ... More likely to die from starvation during a 2 ...\n","4 positive ... Don't move around unnecessary Stay at home. Us...\n","5 positive ... My dad who is a professor just discover about ...\n","6 negative ... Riverfront Times: Cody Pfister, the 26-year-ol...\n","7 negative ... At sale of sanitizers at factory prices is a m...\n","8 negative ... Watch this if you are one of those idiots who ...\n","9 positive ... The dedication of our farmers and farm workers...\n","10 negative ... My friends husband has died this morning due t...\n","11 negative ... \"While it is always a shame when food is waste...\n","12 negative ... @AirCanada is cancelling existing flights and ...\n","13 negative ... Consumer advocacy group CHOICE has slammed pan...\n","14 positive ... @Lowes is there a reason why you’re not suppl...\n","15 positive ... Whilst u queue 4 your beauty treatment get you...\n","16 negative ... I can’t be the only person (CONSUMER, they on...\n","17 negative ... Not sure if this is the common cold, flu, or t...\n","18 positive ... And it’s a great listen in the car if you hav...\n","19 positive ... Please be smart and prepare. Here my take “St...\n","20 positive ... Lessons from COVID-19 Stock up food at home Al...\n","21 positive ... This is a really great selection of advice fro...\n","22 negative ... The worst thing about TP hoarders is that when...\n","23 positive ... Consumer psychology ? about which would result...\n","24 positive ... Helpful tips to prevent 19 from entering your ...\n","25 positive ... @jacksenwolf @scp1471wolf #memes #coronamemes ...\n","26 negative ... This grocery store worker says some customers ...\n","27 positive ... Don t panic Stay healthy protect yourself amp ...\n","28 negative ... 7 for lettuce is ridiculous Fruit and veg pric...\n","29 negative ... Quit harassing grocery store workers. WE KNOW ...\n","30 negative ... Scary Gun sales gone up in amid Fearing shorta...\n","31 positive ... I m temporarily working in a supermarket to he...\n","32 positive ... #horningsea is a caring community. Let’s ALL ...\n","33 negative ... @exxonmobil said today it is reducing its 2020...\n","34 positive ... 19 Using and a distance sensor to create a tou...\n","35 negative ... #British consumer confidence has fallen by the...\n","36 negative ... Isolation Illustration - For fuck sake... we’...\n","37 positive ... Clever, won't happen here though Supermarket I...\n","38 negative ... I dunno if this makes me a bad apocalypse comp...\n","39 positive ... Delivery companies and other services are adap...\n","40 negative ... Panic-buying is pushing up prices you dumb-ass...\n","41 positive ... With consumer concern over their finances due ...\n","42 positive ... How to queue safely for the bill in supermarke...\n","43 negative ... #COVID2019 Makhura: There are two areas where ...\n","44 positive ... Make sure to take every measure against #coron...\n","45 negative ... \"As shoppers shut their wallets, a consumer-dr...\n","46 negative ... If Corona virus ever comes to Uganda, some of ...\n","47 positive ... Dear supply chain, supermarket and pharmacies ...\n","48 positive ... Travel Portable Mini Hand Sanitizer Anti-Bacte...\n","49 negative ... So my sister has just told me at her @asda sto...\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# 7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nxWFzQOhjWC8","executionInfo":{"elapsed":208506,"status":"ok","timestamp":1613549303741,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"48f86d3a-8bdb-4f45-976f-52a84d5bc439"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IKK_Ii_gjJfF","executionInfo":{"elapsed":6329680,"status":"ok","timestamp":1614248732249,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"f93a4985-227a-4c71-ff67-652bb1f8d0bb"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.89 0.88 0.89 3989\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.91 0.86 0.88 4011\n","\n"," accuracy 0.87 8000\n"," macro avg 0.60 0.58 0.59 8000\n","weighted avg 0.90 0.87 0.88 8000\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"background_save":true},"id":"Fxx4yNkNVGFl","outputId":"a941cd66-a89d-4a5c-dffa-b28c8cea6e3d"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.87 0.86 0.87 1011\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.88 0.84 0.86 989\n","\n"," accuracy 0.85 2000\n"," macro avg 0.58 0.57 0.57 2000\n","weighted avg 0.87 0.85 0.86 2000\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"elapsed":11096565,"status":"ok","timestamp":1613560191812,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"8cd5ccb6-8c20-47f3-e4b6-9ec5d58366c4"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SO4uz45MoRgp","executionInfo":{"elapsed":11112108,"status":"ok","timestamp":1613560207359,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"1a9ceaad-9993-4aa3-f350-188ab3e82b29"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('Everything is under control !')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentsentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddingsdocument
origin_index
0negative0.948881[0.37780338525772095, 0.29955390095710754, 0.1...Everything is under control !
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 negative ... Everything is under control !\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"elapsed":11112105,"status":"ok","timestamp":1613560207361,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"},"user_tz":-300},"outputId":"d31d41a8-8a15-4d83-f9db-52779f1eb993"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_finanical_news.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_finanical_news.ipynb index 81f918c0..d36817e3 100644 --- a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_finanical_news.ipynb +++ b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_finanical_news.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_finanical_news.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_finanical_news.ipynb)\n","\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 class Finance News sentiment classifier training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null \n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Finanical News Sentiment dataset \n","https://www.kaggle.com/ankurzing/sentiment-analysis-for-financial-news\n","\n","This dataset contains the sentiments for financial news headlines from the perspective of a retail investor. Further details about the dataset can be found in: Malo, P., Sinha, A., Takala, P., Korhonen, P. and Wallenius, J. (2014): “Good debt or bad debt: Detecting semantic orientations in economic texts.” Journal of the American Society for Information Science and Technology."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1610788018304,"user_tz":-300,"elapsed":2399,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f494fab0-8f9c-4087-f554-31a21764a207"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/all-data.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-01-16 09:06:20-- http://ckl-it.de/wp-content/uploads/2021/01/all-data.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 704799 (688K) [text/csv]\n","Saving to: ‘all-data.csv’\n","\n","all-data.csv 100%[===================>] 688.28K 1.09MB/s in 0.6s \n","\n","2021-01-16 09:06:21 (1.09 MB/s) - ‘all-data.csv’ saved [704799/704799]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1610788018314,"user_tz":-300,"elapsed":660,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e1e2496a-8df8-4e5d-db53-63d62ef1f050"},"source":["import pandas as pd\n","train_path = '/content/all-data.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df[~train_df[\"y\"].isin([\"neutral\"])]\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
1The international electronic industry company ...negative
2With the new production plant the company woul...positive
3According to the company 's updated strategy f...positive
4FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag...positive
5For the last quarter of 2010 , Componenta 's n...positive
.........
4839HELSINKI Thomson Financial - Shares in Cargote...negative
4840LONDON MarketWatch -- Share prices ended lower...negative
4842Operating profit fell to EUR 35.4 mn from EUR ...negative
4843Net sales of the Paper segment decreased to EU...negative
4844Sales in Finland decreased by 10.5 % in Januar...negative
\n","

1967 rows × 2 columns

\n","
"],"text/plain":[" text y\n","1 The international electronic industry company ... negative\n","2 With the new production plant the company woul... positive\n","3 According to the company 's updated strategy f... positive\n","4 FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag... positive\n","5 For the last quarter of 2010 , Componenta 's n... positive\n","... ... ...\n","4839 HELSINKI Thomson Financial - Shares in Cargote... negative\n","4840 LONDON MarketWatch -- Share prices ended lower... negative\n","4842 Operating profit fell to EUR 35.4 mn from EUR ... negative\n","4843 Net sales of the Paper segment decreased to EU... negative\n","4844 Sales in Finland decreased by 10.5 % in Januar... negative\n","\n","[1967 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1609264914996,"user_tz":-300,"elapsed":191025,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6dc536e4-252e-4324-e070-cd477a79330d"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 1\n"," positive 0.98 1.00 0.99 49\n","\n"," accuracy 0.98 50\n"," macro avg 0.49 0.50 0.49 50\n","weighted avg 0.96 0.98 0.97 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentysentiment_confidencetextdefault_name_embeddings
origin_index
1The international electronic industry company ...positivenegative1.000000The international electronic industry company ...[0.002136496128514409, 0.07194118946790695, -0...
2With the new production plant the company woul...positivepositive1.000000With the new production plant the company woul...[0.05198746547102928, 0.03577739745378494, -0....
3According to the company 's updated strategy f...positivepositive1.000000According to the company 's updated strategy f...[0.03416536748409271, 0.04053246229887009, -0....
4FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag...positivepositive1.000000FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag...[0.07730763405561447, -0.045694783329963684, -...
5For the last quarter of 2010 , Componenta 's n...positivepositive1.000000For the last quarter of 2010 , Componenta 's n...[0.05603468790650368, 0.04817350581288338, -0....
6In the third quarter of 2010 , net sales incre...positivepositive1.000000In the third quarter of 2010 , net sales incre...[0.037710510194301605, 0.037198420614004135, -...
7Operating profit rose to EUR 13.1 mn from EUR ...positivepositive1.000000Operating profit rose to EUR 13.1 mn from EUR ...[0.04557091370224953, 0.0453636609017849, -0.0...
8Operating profit totalled EUR 21.1 mn , up fro...positivepositive1.000000Operating profit totalled EUR 21.1 mn , up fro...[0.05191247910261154, 0.059505216777324677, -0...
9TeliaSonera TLSN said the offer is in line wit...positivepositive1.000000TeliaSonera TLSN said the offer is in line wit...[0.07441692799329758, -0.0487477071583271, -0....
10STORA ENSO , NORSKE SKOG , M-REAL , UPM-KYMMEN...positivepositive1.000000STORA ENSO , NORSKE SKOG , M-REAL , UPM-KYMMEN...[0.03200741112232208, 0.03773287683725357, -0....
11A purchase agreement for 7,200 tons of gasolin...positivepositive1.000000A purchase agreement for 7,200 tons of gasolin...[0.05590442568063736, 0.041032955050468445, -0...
12Finnish Talentum reports its operating profit ...positivepositive1.000000Finnish Talentum reports its operating profit ...[0.06596074998378754, 0.05897102504968643, -0....
13Clothing retail chain Sepp+Æl+Æ 's sales incre...positivepositive1.000000Clothing retail chain Sepp+Æl+Æ 's sales incre...[0.03395465016365051, 0.05171804875135422, 0.0...
14Consolidated net sales increased 16 % to reach...positivepositive1.000000Consolidated net sales increased 16 % to reach...[0.060446273535490036, 0.03799470514059067, -0...
15Foundries division reports its sales increased...positivepositive1.000000Foundries division reports its sales increased...[0.0494563989341259, 0.05158388614654541, -0.0...
16HELSINKI ( AFX ) - Shares closed higher , led ...positivepositive1.000000HELSINKI ( AFX ) - Shares closed higher , led ...[0.0629865899682045, -0.045351240783929825, -0...
17Incap Contract Manufacturing Services Pvt Ltd ...positivepositive1.000000Incap Contract Manufacturing Services Pvt Ltd ...[0.05365738272666931, -0.055247869342565536, -...
18Its board of directors will propose a dividend...positivepositive1.000000Its board of directors will propose a dividend...[0.0692642331123352, 0.02292279154062271, -0.0...
19Lifetree was founded in 2000 , and its revenue...positivepositive1.000000Lifetree was founded in 2000 , and its revenue...[0.0810408890247345, 0.039108917117118835, -0....
20( Filippova ) A trilateral agreement on invest...positivepositive0.999998( Filippova ) A trilateral agreement on invest...[0.05172618478536606, 0.02967883087694645, -0....
21MegaFon 's subscriber base increased 16.1 % in...positivepositive1.000000MegaFon 's subscriber base increased 16.1 % in...[0.03825156390666962, 0.001971189398318529, -0...
22Net income from life insurance doubled to EUR ...positivepositive1.000000Net income from life insurance doubled to EUR ...[0.05222763866186142, 0.05695151165127754, -0....
23Net sales increased to EUR193 .3 m from EUR179...positivepositive1.000000Net sales increased to EUR193 .3 m from EUR179...[0.02272764965891838, 0.016222774982452393, 0....
24Net sales surged by 18.5 % to EUR167 .8 m. Tel...positivepositive1.000000Net sales surged by 18.5 % to EUR167 .8 m. Tel...[0.05020830035209656, 0.03307913616299629, -0....
25Nordea Group 's operating profit increased in ...positivepositive1.000000Nordea Group 's operating profit increased in ...[0.0497022308409214, 0.023793146014213562, -0....
26Operating profit for the nine-month period inc...positivepositive1.000000Operating profit for the nine-month period inc...[0.04339126497507095, 0.024815633893013, -0.02...
27Operating profit for the nine-month period inc...positivepositive1.000000Operating profit for the nine-month period inc...[0.035663120448589325, 0.03037247434258461, -0...
28Operating profit for the three-month period in...positivepositive1.000000Operating profit for the three-month period in...[0.029575243592262268, 0.007764187641441822, -...
29The Brazilian unit of Finnish security solutio...positivepositive1.000000The Brazilian unit of Finnish security solutio...[0.047570426017045975, -0.023694489151239395, ...
30The company 's net profit rose 11.4 % on the y...positivepositive1.000000The company 's net profit rose 11.4 % on the y...[0.06896018236875534, 0.046189870685338974, -0...
31The Lithuanian beer market made up 14.41 milli...positivepositive0.999999The Lithuanian beer market made up 14.41 milli...[0.0020184037275612354, -0.044685497879981995,...
32Viking Line 's cargo revenue increased by 5.4 ...positivepositive1.000000Viking Line 's cargo revenue increased by 5.4 ...[-0.007756179664283991, -0.04868081212043762, ...
33The fair value of the property portfolio doubl...positivepositive1.000000The fair value of the property portfolio doubl...[0.06604734063148499, -0.025070184841752052, 0...
3410 February 2011 - Finnish media company Sanom...positivepositive1.00000010 February 2011 - Finnish media company Sanom...[0.05996786803007126, 0.03255663812160492, -0....
35A Helsinki : ELIiV today reported EPS of EUR1 ...positivepositive0.999999A Helsinki : ELIiV today reported EPS of EUR1 ...[0.051878154277801514, -0.03290269523859024, -...
36Aspo Plc STOCK EXCHANGE RELEASE February 11 , ...positivepositive1.000000Aspo Plc STOCK EXCHANGE RELEASE February 11 , ...[0.03545805439352989, -0.04956813529133797, -0...
37Commission income increased by 22 % to EUR 4.4...positivepositive1.000000Commission income increased by 22 % to EUR 4.4...[0.05664118379354477, 0.004533933009952307, -0...
38In January , traffic , measured in revenue pas...positivepositive1.000000In January , traffic , measured in revenue pas...[-0.026962362229824066, 0.010590712539851665, ...
39In January-September 2010 , Fiskars ' net prof...positivepositive1.000000In January-September 2010 , Fiskars ' net prof...[0.056088510900735855, 0.0369233600795269, -0....
40Net income from life insurance rose to EUR 16....positivepositive1.000000Net income from life insurance rose to EUR 16....[0.05793088302016258, 0.06312950700521469, -0....
41Nyrstar has also agreed to supply to Talvivaar...positivepositive1.000000Nyrstar has also agreed to supply to Talvivaar...[0.004785533994436264, 0.004442625679075718, -...
42Sales for both the Department Store Division a...positivepositive1.000000Sales for both the Department Store Division a...[-0.050088364630937576, 0.04885219410061836, 0...
43Sales have risen in other export markets .positivepositive1.000000Sales have risen in other export markets .[0.058916959911584854, 0.018443405628204346, -...
44Sales increased due to growing market rates an...positivepositive1.000000Sales increased due to growing market rates an...[0.047733016312122345, 0.010620158165693283, 0...
45The agreement strengthens our long-term partne...positivepositive1.000000The agreement strengthens our long-term partne...[0.06433788686990738, 0.027824176475405693, -0...
46The agreement was signed with Biohit Healthcar...positivepositive1.000000The agreement was signed with Biohit Healthcar...[0.03612205758690834, 0.038267459720373154, -0...
47The company also estimates the already carried...positivepositive1.000000The company also estimates the already carried...[0.04304526373744011, 0.023360760882496834, -0...
48The company 's order book stood at 1.5 bln eur...positivepositive1.000000The company 's order book stood at 1.5 bln eur...[0.036210183054208755, -0.010278576985001564, ...
49The company said that paper demand increased i...positivepositive1.000000The company said that paper demand increased i...[0.06558039039373398, 0.04877239838242531, -0....
50The world 's second largest stainless steel ma...positivepositive1.000000The world 's second largest stainless steel ma...[0.04267223924398422, 0.03184577450156212, -0....
\n","
"],"text/plain":[" document ... default_name_embeddings\n","origin_index ... \n","1 The international electronic industry company ... ... [0.002136496128514409, 0.07194118946790695, -0...\n","2 With the new production plant the company woul... ... [0.05198746547102928, 0.03577739745378494, -0....\n","3 According to the company 's updated strategy f... ... [0.03416536748409271, 0.04053246229887009, -0....\n","4 FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag... ... [0.07730763405561447, -0.045694783329963684, -...\n","5 For the last quarter of 2010 , Componenta 's n... ... [0.05603468790650368, 0.04817350581288338, -0....\n","6 In the third quarter of 2010 , net sales incre... ... [0.037710510194301605, 0.037198420614004135, -...\n","7 Operating profit rose to EUR 13.1 mn from EUR ... ... [0.04557091370224953, 0.0453636609017849, -0.0...\n","8 Operating profit totalled EUR 21.1 mn , up fro... ... [0.05191247910261154, 0.059505216777324677, -0...\n","9 TeliaSonera TLSN said the offer is in line wit... ... [0.07441692799329758, -0.0487477071583271, -0....\n","10 STORA ENSO , NORSKE SKOG , M-REAL , UPM-KYMMEN... ... [0.03200741112232208, 0.03773287683725357, -0....\n","11 A purchase agreement for 7,200 tons of gasolin... ... [0.05590442568063736, 0.041032955050468445, -0...\n","12 Finnish Talentum reports its operating profit ... ... [0.06596074998378754, 0.05897102504968643, -0....\n","13 Clothing retail chain Sepp+Æl+Æ 's sales incre... ... [0.03395465016365051, 0.05171804875135422, 0.0...\n","14 Consolidated net sales increased 16 % to reach... ... [0.060446273535490036, 0.03799470514059067, -0...\n","15 Foundries division reports its sales increased... ... [0.0494563989341259, 0.05158388614654541, -0.0...\n","16 HELSINKI ( AFX ) - Shares closed higher , led ... ... [0.0629865899682045, -0.045351240783929825, -0...\n","17 Incap Contract Manufacturing Services Pvt Ltd ... ... [0.05365738272666931, -0.055247869342565536, -...\n","18 Its board of directors will propose a dividend... ... [0.0692642331123352, 0.02292279154062271, -0.0...\n","19 Lifetree was founded in 2000 , and its revenue... ... [0.0810408890247345, 0.039108917117118835, -0....\n","20 ( Filippova ) A trilateral agreement on invest... ... [0.05172618478536606, 0.02967883087694645, -0....\n","21 MegaFon 's subscriber base increased 16.1 % in... ... [0.03825156390666962, 0.001971189398318529, -0...\n","22 Net income from life insurance doubled to EUR ... ... [0.05222763866186142, 0.05695151165127754, -0....\n","23 Net sales increased to EUR193 .3 m from EUR179... ... [0.02272764965891838, 0.016222774982452393, 0....\n","24 Net sales surged by 18.5 % to EUR167 .8 m. Tel... ... [0.05020830035209656, 0.03307913616299629, -0....\n","25 Nordea Group 's operating profit increased in ... ... [0.0497022308409214, 0.023793146014213562, -0....\n","26 Operating profit for the nine-month period inc... ... [0.04339126497507095, 0.024815633893013, -0.02...\n","27 Operating profit for the nine-month period inc... ... [0.035663120448589325, 0.03037247434258461, -0...\n","28 Operating profit for the three-month period in... ... [0.029575243592262268, 0.007764187641441822, -...\n","29 The Brazilian unit of Finnish security solutio... ... [0.047570426017045975, -0.023694489151239395, ...\n","30 The company 's net profit rose 11.4 % on the y... ... [0.06896018236875534, 0.046189870685338974, -0...\n","31 The Lithuanian beer market made up 14.41 milli... ... [0.0020184037275612354, -0.044685497879981995,...\n","32 Viking Line 's cargo revenue increased by 5.4 ... ... [-0.007756179664283991, -0.04868081212043762, ...\n","33 The fair value of the property portfolio doubl... ... [0.06604734063148499, -0.025070184841752052, 0...\n","34 10 February 2011 - Finnish media company Sanom... ... [0.05996786803007126, 0.03255663812160492, -0....\n","35 A Helsinki : ELIiV today reported EPS of EUR1 ... ... [0.051878154277801514, -0.03290269523859024, -...\n","36 Aspo Plc STOCK EXCHANGE RELEASE February 11 , ... ... [0.03545805439352989, -0.04956813529133797, -0...\n","37 Commission income increased by 22 % to EUR 4.4... ... [0.05664118379354477, 0.004533933009952307, -0...\n","38 In January , traffic , measured in revenue pas... ... [-0.026962362229824066, 0.010590712539851665, ...\n","39 In January-September 2010 , Fiskars ' net prof... ... [0.056088510900735855, 0.0369233600795269, -0....\n","40 Net income from life insurance rose to EUR 16.... ... [0.05793088302016258, 0.06312950700521469, -0....\n","41 Nyrstar has also agreed to supply to Talvivaar... ... [0.004785533994436264, 0.004442625679075718, -...\n","42 Sales for both the Department Store Division a... ... [-0.050088364630937576, 0.04885219410061836, 0...\n","43 Sales have risen in other export markets . ... [0.058916959911584854, 0.018443405628204346, -...\n","44 Sales increased due to growing market rates an... ... [0.047733016312122345, 0.010620158165693283, 0...\n","45 The agreement strengthens our long-term partne... ... [0.06433788686990738, 0.027824176475405693, -0...\n","46 The agreement was signed with Biohit Healthcar... ... [0.03612205758690834, 0.038267459720373154, -0...\n","47 The company also estimates the already carried... ... [0.04304526373744011, 0.023360760882496834, -0...\n","48 The company 's order book stood at 1.5 bln eur... ... [0.036210183054208755, -0.010278576985001564, ...\n","49 The company said that paper demand increased i... ... [0.06558039039373398, 0.04877239838242531, -0....\n","50 The world 's second largest stainless steel ma... ... [0.04267223924398422, 0.03184577450156212, -0....\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":107},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1609264917602,"user_tz":-300,"elapsed":193623,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8fe5b9aa-c87a-42d3-e00d-920e63ca6aa4"},"source":["fitted_pipe.predict('According to the most recent update there has been a major decrese in the rate of oil')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentsentiment_confidencedefault_name_embeddings
origin_index
0Bitcoin is going to the moon!positive0.999994[0.06468033790588379, -0.040837567299604416, -...
\n","
"],"text/plain":[" document ... default_name_embeddings\n","origin_index ... \n","0 Bitcoin is going to the moon! ... [0.06468033790588379, -0.040837567299604416, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1609264917604,"user_tz":-300,"elapsed":193620,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ac9c8b1a-7fdd-4a6f-bdfd-1dbb823d9bf4"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":753},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1609264924472,"user_tz":-300,"elapsed":200484,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1dd94bc8-09c8-45db-ab81-bbd64acb8a4b"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:100])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 1\n"," positive 0.99 1.00 0.99 99\n","\n"," accuracy 0.99 100\n"," macro avg 0.49 0.50 0.50 100\n","weighted avg 0.98 0.99 0.99 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentysentiment_confidencetextdefault_name_embeddings
origin_index
1The international electronic industry company ...positivenegative1.000000The international electronic industry company ...[0.002136496128514409, 0.07194118946790695, -0...
2With the new production plant the company woul...positivepositive1.000000With the new production plant the company woul...[0.05198746547102928, 0.03577739745378494, -0....
3According to the company 's updated strategy f...positivepositive1.000000According to the company 's updated strategy f...[0.03416536748409271, 0.04053246229887009, -0....
4FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag...positivepositive1.000000FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag...[0.07730763405561447, -0.045694783329963684, -...
5For the last quarter of 2010 , Componenta 's n...positivepositive1.000000For the last quarter of 2010 , Componenta 's n...[0.05603468790650368, 0.04817350581288338, -0....
.....................
116Operating profit margin increased from 11.2 % ...positivepositive1.000000Operating profit margin increased from 11.2 % ...[0.01058729737997055, -0.008798183873295784, -...
117Operating profit rose to EUR 3.11 mn from EUR ...positivepositive1.000000Operating profit rose to EUR 3.11 mn from EUR ...[0.03610285371541977, 0.04256380349397659, -0....
118Operating profit rose to EUR 5mn from EUR 2.8 ...positivepositive1.000000Operating profit rose to EUR 5mn from EUR 2.8 ...[0.04815328121185303, 0.050376053899526596, -0...
119Operating profit was EUR 24.5 mn , up from EUR...positivepositive1.000000Operating profit was EUR 24.5 mn , up from EUR...[0.048205215483903885, 0.05145161226391792, -0...
120Ramirent 's net sales in the second quarterend...positivepositive1.000000Ramirent 's net sales in the second quarterend...[0.0638015866279602, 0.0272374227643013, -0.04...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" document ... default_name_embeddings\n","origin_index ... \n","1 The international electronic industry company ... ... [0.002136496128514409, 0.07194118946790695, -0...\n","2 With the new production plant the company woul... ... [0.05198746547102928, 0.03577739745378494, -0....\n","3 According to the company 's updated strategy f... ... [0.03416536748409271, 0.04053246229887009, -0....\n","4 FINANCING OF ASPOCOMP 'S GROWTH Aspocomp is ag... ... [0.07730763405561447, -0.045694783329963684, -...\n","5 For the last quarter of 2010 , Componenta 's n... ... [0.05603468790650368, 0.04817350581288338, -0....\n","... ... ... ...\n","116 Operating profit margin increased from 11.2 % ... ... [0.01058729737997055, -0.008798183873295784, -...\n","117 Operating profit rose to EUR 3.11 mn from EUR ... ... [0.03610285371541977, 0.04256380349397659, -0....\n","118 Operating profit rose to EUR 5mn from EUR 2.8 ... ... [0.04815328121185303, 0.050376053899526596, -0...\n","119 Operating profit was EUR 24.5 mn , up from EUR... ... [0.048205215483903885, 0.05145161226391792, -0...\n","120 Ramirent 's net sales in the second quarterend... ... [0.0638015866279602, 0.0272374227643013, -0.04...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609264924477,"user_tz":-300,"elapsed":200483,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e259763c-470b-4d46-b3d1-28cf545f5dcd"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"IKK_Ii_gjJfF","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609266286092,"user_tz":-300,"elapsed":1562094,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4237752f-4fbe-4235-b33d-5d7b8ba29d48"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(70) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.88 0.87 0.88 604\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.92 0.94 1363\n","\n"," accuracy 0.91 1967\n"," macro avg 0.62 0.60 0.61 1967\n","weighted avg 0.94 0.91 0.92 1967\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609266449598,"user_tz":-300,"elapsed":1725594,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b31b5e1e-3f09-4ab3-e97a-fb32ac87b319"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":124},"executionInfo":{"status":"ok","timestamp":1609266465229,"user_tz":-300,"elapsed":1741220,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5d9cc34a-693c-44d7-e50a-6e0ca5d4e024"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('According to the most recent update there has been a major decrese in the rate of oil')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentsentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddings
origin_index
0Tesla plans to invest 10M into the ML sectorpositive0.999980[0.15737222135066986, 0.2598555386066437, 0.85...
\n","
"],"text/plain":[" document ... en_embed_sentence_small_bert_L12_768_embeddings\n","origin_index ... \n","0 Tesla plans to invest 10M into the ML sector ... [0.15737222135066986, 0.2598555386066437, 0.85...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609266465232,"user_tz":-300,"elapsed":1741218,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ec54f7c0-8174-4fd4-9db8-51c1d15be3eb"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_finanical_news.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_finanical_news.ipynb)\n","\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 class Finance News sentiment classifier training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null \n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Finanical News Sentiment dataset \n","https://www.kaggle.com/ankurzing/sentiment-analysis-for-financial-news\n","\n","This dataset contains the sentiments for financial news headlines from the perspective of a retail investor. Further details about the dataset can be found in: Malo, P., Sinha, A., Takala, P., Korhonen, P. and Wallenius, J. (2014): “Good debt or bad debt: Detecting semantic orientations in economic texts.” Journal of the American Society for Information Science and Technology."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614562864048,"user_tz":-300,"elapsed":60916,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a08ebe75-173f-4882-cc2b-c7ba5b85bc15"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/all-data.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-03-01 01:39:50-- http://ckl-it.de/wp-content/uploads/2021/01/all-data.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 704799 (688K) [text/csv]\n","Saving to: ‘all-data.csv’\n","\n","all-data.csv 100%[===================>] 688.28K --.-KB/s in 0.1s \n","\n","2021-03-01 01:39:50 (5.78 MB/s) - ‘all-data.csv’ saved [704799/704799]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614562864051,"user_tz":-300,"elapsed":60812,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"75677d69-1c05-4504-9988-49d5a5d9cdd1"},"source":["import pandas as pd\n","train_path = '/content/all-data.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df[~train_df[\"y\"].isin([\"neutral\"])]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
4719The fair value of the company 's investment pr...negative
373The company 's scheduled traffic , measured in...positive
841Forestries were also higher , driven by yester...positive
2072H+_kan Dahlstr+¦m , head of mobility services ...positive
712Both loans will be used to finance strategic i...positive
.........
4395EMSA Deputy Chairman of the Board Juri Lember ...negative
4810Thanks to the internet , consumers compare pro...negative
34917 March 2011 - Finnish IT company Digia Oyj HE...positive
51Within the framework of the partnership , Noki...positive
2340Asian traffic declined by 3.4 per cent .negative
\n","

1573 rows × 2 columns

\n","
"],"text/plain":[" text y\n","4719 The fair value of the company 's investment pr... negative\n","373 The company 's scheduled traffic , measured in... positive\n","841 Forestries were also higher , driven by yester... positive\n","2072 H+_kan Dahlstr+¦m , head of mobility services ... positive\n","712 Both loans will be used to finance strategic i... positive\n","... ... ...\n","4395 EMSA Deputy Chairman of the Board Juri Lember ... negative\n","4810 Thanks to the internet , consumers compare pro... negative\n","3491 7 March 2011 - Finnish IT company Digia Oyj HE... positive\n","51 Within the framework of the partnership , Noki... positive\n","2340 Asian traffic declined by 3.4 per cent . negative\n","\n","[1573 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614562993168,"user_tz":-300,"elapsed":189902,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"20a3b173-4be4-408a-9523-8bf21f18439b"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 14\n"," positive 0.72 1.00 0.84 36\n","\n"," accuracy 0.72 50\n"," macro avg 0.36 0.50 0.42 50\n","weighted avg 0.52 0.72 0.60 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextdocumentsentimentdefault_name_embeddingssentiment_confidence
origin_index
4719negativeThe fair value of the company 's investment pr...The fair value of the company 's investment pr...positive[0.036923788487911224, 0.06703860312700272, -0...0.985028
373positiveThe company 's scheduled traffic , measured in...The company 's scheduled traffic , measured in...positive[-0.02716548554599285, 0.041895847767591476, -...0.989986
841positiveForestries were also higher , driven by yester...Forestries were also higher , driven by yester...positive[0.07610785216093063, -0.017332645133137703, -...0.990836
2072positiveH+_kan Dahlstr+¦m , head of mobility services ...H+_kan Dahlstr+¦m , head of mobility services ...positive[0.059579234570264816, 0.01714557223021984, -0...0.987673
712positiveBoth loans will be used to finance strategic i...Both loans will be used to finance strategic i...positive[0.06402906030416489, 0.037328142672777176, -0...0.980973
1722positiveHELSINKI (Thomson Financial)- Kemira GrowHow s...HELSINKI (Thomson Financial)- Kemira GrowHow s...positive[0.07542752474546432, 0.03456662967801094, -0....0.988675
793positive` This is a repeat order to follow successfull...` This is a repeat order to follow successfull...positive[0.016312969848513603, 0.03869722783565521, -0...0.980360
1483positive`` We have significant experience in smartphon...`` We have significant experience in smartphon...positive[0.056398119777441025, -0.010660165920853615, ...0.980428
807positiveFinnish Metso Paper has won an order to supply...Finnish Metso Paper has won an order to supply...positive[0.03834717348217964, 0.05267363414168358, 0.0...0.977349
836positiveFinnish handling systems company Cargotec Oyj ...Finnish handling systems company Cargotec Oyj ...positive[0.0402568019926548, 0.02064136043190956, -0.0...0.987665
1077positiveTeliaSonera is the leading telecommunications ...TeliaSonera is the leading telecommunications ...positive[0.05541086569428444, 0.048524245619773865, -0...0.992725
4078positiveOperating profit excluding restructuring costs...Operating profit excluding restructuring costs...positive[0.06243692338466644, 0.054526831954717636, -0...0.991681
4135negativeThe number of bodily injury cases quadrupled i...The number of bodily injury cases quadrupled i...positive[0.009022029116749763, -0.026918234303593636, ...0.754257
834positiveFinnish consulting and engineering group Poyry...Finnish consulting and engineering group Poyry...positive[0.01760948821902275, -0.015370494686067104, -...0.987969
663positiveThe costs of the new ropax vessels are 30 % lo...The costs of the new ropax vessels are 30 % lo...positive[0.016379177570343018, 0.042399514466524124, 0...0.968588
2131positiveIt also turned in earnings per share ( EPS ) o...It also turned in earnings per share ( EPS ) o...positive[0.04963838681578636, 0.016262372955679893, -0...0.991324
24positiveNet sales surged by 18.5 % to EUR167 .8 m. Tel...Net sales surged by 18.5 % to EUR167 .8 m. Tel...positive[0.07095607370138168, 0.01779617927968502, -0....0.987843
696negativeFinnish power supply solutions and systems pro...Finnish power supply solutions and systems pro...positive[0.02955046109855175, 0.013048158958554268, -0...0.988096
2933positiveHELSINKI ( Thomson Financial ) - M-real said i...HELSINKI ( Thomson Financial ) - M-real said i...positive[0.05395246669650078, 0.032728634774684906, -0...0.993642
727positiveBy 14:29 CET on Monday , shares in Bavarian No...By 14:29 CET on Monday , shares in Bavarian No...positive[0.06754495203495026, 0.02371809259057045, -0....0.986807
3637positiveIn the autumn , it plans to expand service to ...In the autumn , it plans to expand service to ...positive[-0.02860916219651699, 0.03146557882428169, -0...0.988312
2285positiveADP News - Feb 25 , 2009 - Finnish printed cir...ADP News - Feb 25 , 2009 - Finnish printed cir...positive[0.07102368772029877, -0.005087006371468306, -...0.991177
4101positiveBy cutting the number of plants , the group wi...By cutting the number of plants , the group wi...positive[-0.005840806290507317, 0.06139799952507019, -...0.968257
4438negative`` We see that the market continues to be tigh...`` We see that the market continues to be tigh...positive[0.05384731665253639, 0.06735912710428238, -0....0.956433
1825positive`` We are delighted to welcome Elisa to our Bo...`` We are delighted to welcome Elisa to our Bo...positive[0.018601788207888603, 0.04971592128276825, -0...0.974901
950positiveFinnish mobile operator DNA will function as a...Finnish mobile operator DNA will function as a...positive[0.052730534225702286, -0.079906165599823, -0....0.986985
4548negativeThe administrators have indicated a need for 9...The administrators have indicated a need for 9...positive[-0.008651155978441238, 0.02552383951842785, -...0.923833
4716negativeThe company said that the fall in turnover had...The company said that the fall in turnover had...positive[-0.007754180580377579, -0.0018574600107967854...0.974364
639positiveIn the second quarter of 2010 , the group 's p...In the second quarter of 2010 , the group 's p...positive[0.049069344997406006, 0.05393636226654053, -0...0.990063
4550negativeThe total need for staff cuts corresponds to a...The total need for staff cuts corresponds to a...positive[-0.016216445714235306, 0.07977687567472458, -...0.908392
1704negativeNet sales of Finnish Sanoma Learning & Literat...Net sales of Finnish Sanoma Learning & Literat...positive[0.06210406869649887, 0.04862183332443237, -0....0.978863
780positiveTalvivaara also maintains its assumption of tu...Talvivaara also maintains its assumption of tu...positive[0.05548756942152977, 0.011896908283233643, -0...0.981222
165positiveBoth operating profit and net sales for the si...Both operating profit and net sales for the si...positive[0.0282859168946743, 0.02847444638609886, -0.0...0.987370
4615negativeThe airline 's share price closed down slightl...The airline 's share price closed down slightl...positive[0.03676854446530342, 0.04419051110744476, -0....0.988250
4191negativeFinnish Vaahto Group that provides paper-makin...Finnish Vaahto Group that provides paper-makin...positive[-0.023766979575157166, 0.02527744509279728, -...0.985640
4836negativeSales in Finland decreased by 2.0 % , and inte...Sales in Finland decreased by 2.0 % , and inte...positive[0.051058329641819, 0.03175395354628563, -0.03...0.980755
121positiveRevenue grew by 2 percent to x20ac 580 millio...Revenue grew by 2 percent to x20ac 580 million...positive[0.054190147668123245, -0.029659369960427284, ...0.982119
115positiveOperating profit increased by 145.1 % to EUR 8...Operating profit increased by 145.1 % to EUR 8...positive[0.04452420398592949, 0.046940360218286514, -0...0.986740
580positiveThe contract was signed in August with Papua N...The contract was signed in August with Papua N...positive[0.05882549658417702, -0.014190285466611385, 0...0.991058
685positiveIn August-October 2010 , the company 's result...In August-October 2010 , the company 's result...positive[0.02870381809771061, 0.04685402661561966, -0....0.983873
385positiveThe value of the firm 's forestry holdings inc...The value of the firm 's forestry holdings inc...positive[0.06179884076118469, 0.009074743837118149, 0....0.981110
188positiveEquity ratio was 60.9 % compared to 54.2 % In ...Equity ratio was 60.9 % compared to 54.2 % In ...positive[0.012241799384355545, 0.04907766357064247, -0...0.982970
3023positiveMartela said plans to expand its recycled furn...Martela said plans to expand its recycled furn...positive[0.06031253933906555, 0.02930644527077675, -0....0.984959
4663negativeComparable operating profit decreased to EUR 1...Comparable operating profit decreased to EUR 1...positive[0.041685257107019424, 0.030715754255652428, -...0.988551
4036negativeOperating loss totalled EUR 3.2 mn , compared ...Operating loss totalled EUR 3.2 mn , compared ...positive[0.056506961584091187, 0.03850569948554039, -0...0.984684
923positive`` Demand for sports equipment was good in 2005 .`` Demand for sports equipment was good in 2005 .positive[0.053851932287216187, 0.05388070270419121, -0...0.956324
268positivePreviously , the company had guided for EBIT a...Previously , the company had guided for EBIT a...positive[0.030418097972869873, -0.010177094489336014, ...0.986280
722positiveOperating profit was EUR 0.6 mn , up from a lo...Operating profit was EUR 0.6 mn , up from a lo...positive[0.052058979868888855, 0.0432511568069458, -0....0.991042
2208positiveThe company feels these leases are prime locat...The company feels these leases are prime locat...positive[0.013362281024456024, 0.03749179467558861, -0...0.982359
4661negativeCash flow after investments amounted to EUR45m...Cash flow after investments amounted to EUR45m...positive[0.055296167731285095, 0.0607072152197361, -0....0.963672
\n","
"],"text/plain":[" y ... sentiment_confidence\n","origin_index ... \n","4719 negative ... 0.985028\n","373 positive ... 0.989986\n","841 positive ... 0.990836\n","2072 positive ... 0.987673\n","712 positive ... 0.980973\n","1722 positive ... 0.988675\n","793 positive ... 0.980360\n","1483 positive ... 0.980428\n","807 positive ... 0.977349\n","836 positive ... 0.987665\n","1077 positive ... 0.992725\n","4078 positive ... 0.991681\n","4135 negative ... 0.754257\n","834 positive ... 0.987969\n","663 positive ... 0.968588\n","2131 positive ... 0.991324\n","24 positive ... 0.987843\n","696 negative ... 0.988096\n","2933 positive ... 0.993642\n","727 positive ... 0.986807\n","3637 positive ... 0.988312\n","2285 positive ... 0.991177\n","4101 positive ... 0.968257\n","4438 negative ... 0.956433\n","1825 positive ... 0.974901\n","950 positive ... 0.986985\n","4548 negative ... 0.923833\n","4716 negative ... 0.974364\n","639 positive ... 0.990063\n","4550 negative ... 0.908392\n","1704 negative ... 0.978863\n","780 positive ... 0.981222\n","165 positive ... 0.987370\n","4615 negative ... 0.988250\n","4191 negative ... 0.985640\n","4836 negative ... 0.980755\n","121 positive ... 0.982119\n","115 positive ... 0.986740\n","580 positive ... 0.991058\n","685 positive ... 0.983873\n","385 positive ... 0.981110\n","188 positive ... 0.982970\n","3023 positive ... 0.984959\n","4663 negative ... 0.988551\n","4036 negative ... 0.984684\n","923 positive ... 0.956324\n","268 positive ... 0.986280\n","722 positive ... 0.991042\n","2208 positive ... 0.982359\n","4661 negative ... 0.963672\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1614562995712,"user_tz":-300,"elapsed":192406,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b8d794ca-756b-44ad-b89c-f2b4d2f3f8bd"},"source":["fitted_pipe.predict('According to the most recent update there has been a major decrese in the rate of oil')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentdefault_name_embeddingssentiment_confidence
origin_index
0According to the most recent update there has ...positive[0.00991145521402359, 0.041628580540418625, -0...0.968396
\n","
"],"text/plain":[" document ... sentiment_confidence\n","origin_index ... \n","0 According to the most recent update there has ... ... 0.968396\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1614562995714,"user_tz":-300,"elapsed":192393,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e82d5e73-c9cc-4e73-be7b-f8fe6bbb767b"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":793},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1614563007186,"user_tz":-300,"elapsed":203845,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d73a2b68-a719-4664-e4dd-6fedd31a70f7"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:100])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 30\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.74 1.00 0.85 70\n","\n"," accuracy 0.70 100\n"," macro avg 0.25 0.33 0.28 100\n","weighted avg 0.52 0.70 0.60 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextdocumentsentimentdefault_name_embeddingssentiment_confidence
origin_index
4719negativeThe fair value of the company 's investment pr...The fair value of the company 's investment pr...positive[0.036923788487911224, 0.06703860312700272, -0...0.790602
373positiveThe company 's scheduled traffic , measured in...The company 's scheduled traffic , measured in...positive[-0.02716548554599285, 0.041895847767591476, -...0.968895
841positiveForestries were also higher , driven by yester...Forestries were also higher , driven by yester...positive[0.07610785216093063, -0.017332645133137703, -...0.954134
2072positiveH+_kan Dahlstr+¦m , head of mobility services ...H+_kan Dahlstr+¦m , head of mobility services ...positive[0.059579234570264816, 0.01714557223021984, -0...0.978695
712positiveBoth loans will be used to finance strategic i...Both loans will be used to finance strategic i...positive[0.06402906030416489, 0.037328142672777176, -0...0.732152
.....................
542negativePharmaceuticals group Orion Corp reported a fa...Pharmaceuticals group Orion Corp reported a fa...positive[0.037232112139463425, 0.0271251630038023, -0....0.782454
2061positive` Very recommendable ' is the Nokian Z G2 acco...` Very recommendable ' is the Nokian Z G2 acco...positive[0.014071580022573471, 0.0036627694498747587, ...0.979991
565positiveThe growth of net sales has continued favourab...The growth of net sales has continued favourab...positive[0.05051519721746445, 0.05987134203314781, -0....0.953826
50positiveThe world 's second largest stainless steel ma...The world 's second largest stainless steel ma...positive[0.04267223924398422, 0.03184577450156212, -0....0.972509
692negativeAlso construction expenses have gone up in Rus...Also construction expenses have gone up in Rus...positive[0.015224196948111057, 0.0498930849134922, -0....0.807450
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" y ... sentiment_confidence\n","origin_index ... \n","4719 negative ... 0.790602\n","373 positive ... 0.968895\n","841 positive ... 0.954134\n","2072 positive ... 0.978695\n","712 positive ... 0.732152\n","... ... ... ...\n","542 negative ... 0.782454\n","2061 positive ... 0.979991\n","565 positive ... 0.953826\n","50 positive ... 0.972509\n","692 negative ... 0.807450\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["#7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614563007189,"user_tz":-300,"elapsed":203788,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d4ac9450-f6df-4139-a1bd-f4459e68115a"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"IKK_Ii_gjJfF","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614564053723,"user_tz":-300,"elapsed":1250308,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9520a8fb-0699-40e1-db20-6787de0b0f4b"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(70) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.87 0.85 0.86 484\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.97 0.92 0.94 1089\n","\n"," accuracy 0.90 1573\n"," macro avg 0.61 0.59 0.60 1573\n","weighted avg 0.94 0.90 0.92 1573\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614564323006,"user_tz":-300,"elapsed":1519585,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"937933cc-9b84-4cf7-9610-8e79e221b648"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.80 0.76 0.78 120\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.88 0.92 274\n","\n"," accuracy 0.85 394\n"," macro avg 0.58 0.55 0.57 394\n","weighted avg 0.91 0.85 0.88 394\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609266449598,"user_tz":-300,"elapsed":1725594,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b31b5e1e-3f09-4ab3-e97a-fb32ac87b319"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":124},"executionInfo":{"status":"ok","timestamp":1609266465229,"user_tz":-300,"elapsed":1741220,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5d9cc34a-693c-44d7-e50a-6e0ca5d4e024"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('According to the most recent update there has been a major decrese in the rate of oil')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentsentiment_confidenceen_embed_sentence_small_bert_L12_768_embeddings
origin_index
0Tesla plans to invest 10M into the ML sectorpositive0.999980[0.15737222135066986, 0.2598555386066437, 0.85...
\n","
"],"text/plain":[" document ... en_embed_sentence_small_bert_L12_768_embeddings\n","origin_index ... \n","0 Tesla plans to invest 10M into the ML sector ... [0.15737222135066986, 0.2598555386066437, 0.85...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609266465232,"user_tz":-300,"elapsed":1741218,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ec54f7c0-8174-4fd4-9db8-51c1d15be3eb"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_natural_disasters.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_natural_disasters.ipynb new file mode 100644 index 00000000..da869354 --- /dev/null +++ b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_natural_disasters.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_natural_disasters.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_natural_disasters.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class Natural Disasters Sentiment Classifer Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","\n","![Screenshot 2021-02-25 142700.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614242445896,"user_tz":-300,"elapsed":94650,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a0a80772-71a7-410e-d8fe-2cd174162e51"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 63kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 19.5MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=3602214fb80c68afcb3d7c4ea233dcff49c3f269b66f32be9e3a461f9628b0e2\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Disaster Sentiment dataset \n","https://www.kaggle.com/vstepanenko/disaster-tweets\n","#Context\n","\n","The file contains over 11,000 tweets associated with disaster keywords like “crash”, “quarantine”, and “bush fires” as well as the location and keyword itself. The data structure was inherited from Disasters on social media\n","\n","The tweets were collected on Jan 14th, 2020.\n","\n","Some of the topics people were tweeting:\n","\n","The eruption of Taal Volcano in Batangas, Philippines\n","Coronavirus\n","Bushfires in Australia\n","Iran downing of the airplane flight PS752\n","Disclaimer: The dataset contains text that may be considered profane, vulgar, or offensive."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614242446852,"user_tz":-300,"elapsed":95588,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d71ebb53-c808-40e0-a331-293a02d5a519"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/tweets.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 08:39:36-- http://ckl-it.de/wp-content/uploads/2021/02/tweets.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 1207952 (1.2M) [text/csv]\n","Saving to: ‘tweets.csv’\n","\n","tweets.csv 100%[===================>] 1.15M 1.56MB/s in 0.7s \n","\n","2021-02-25 08:39:37 (1.56 MB/s) - ‘tweets.csv’ saved [1207952/1207952]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614242447251,"user_tz":-300,"elapsed":95968,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"40cfe5ac-728d-4c83-f189-ac57491f1f6e"},"source":["import pandas as pd\n","train_path = '/content/tweets.csv'\n","\n","train_df = pd.read_csv(train_path,sep=\",\", encoding='latin-1')\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df.dropna()\n","positive = train_df[train_df['y']==(\"positive\")].iloc[:1500]\n","negative = train_df[train_df['y']==(\"negative\")].iloc[:1500]\n","positive = positive.append(negative, ignore_index = True)\n","positive = positive.sample(frac=1).reset_index(drop=True)\n","train_df = positive\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
Unnamed: 0idkeywordlocationtexttargety
2326602.010216.0thunderstormatl•nola•nshThis thunderstorm is amazing rn 🥴1.0positive
220956.04783.0emergencyBharatThis idiot ws CM of UP. He is asking doc on em...0.0negative
321147.03775.0derailmentChiraq,DriLLinoisBe not endowed in the flesh of your ego nor dr...0.0negative
1412785.011154.0woundedIslamabad, PakistanSnow and Avalunch Update (SDMA) 18 people incl...1.0positive
11302726.01056.0blew%20upuk | ˣᵗʳᵃ ᵇᵖʷum good morning this blew up what https://t.co...0.0negative
........................
2630718.04232.0displacedGlobalJanuary 12 marks the anniversary of the 2010 #...1.0positive
18332645.03905.0destroymetz | Sarah♡But the story is this She’ll destroy with...0.0negative
6103400.010250.0thunderstormGreenwood, MississippiOne of the hardest-hit areas of he severe thun...1.0positive
11811552.05080.0evacuatedBtgGood News: Original Post: \"Residents had gone ...0.0negative
20562201.01350.0body%20bagIrelandHuman body parts found in bag outside houses i...1.0positive
\n","

2400 rows × 7 columns

\n","
"],"text/plain":[" Unnamed: 0 id ... target y\n","232 6602.0 10216.0 ... 1.0 positive\n","2209 56.0 4783.0 ... 0.0 negative\n","321 147.0 3775.0 ... 0.0 negative\n","141 2785.0 11154.0 ... 1.0 positive\n","1130 2726.0 1056.0 ... 0.0 negative\n","... ... ... ... ... ...\n","2630 718.0 4232.0 ... 1.0 positive\n","1833 2645.0 3905.0 ... 0.0 negative\n","610 3400.0 10250.0 ... 1.0 positive\n","1181 1552.0 5080.0 ... 0.0 negative\n","2056 2201.0 1350.0 ... 1.0 positive\n","\n","[2400 rows x 7 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1613549340589,"user_tz":-300,"elapsed":223159,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b32c4f24-da34-4f2d-e28b-571ccce3d6bc"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 1.00 0.40 0.57 25\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.94 0.64 0.76 25\n","\n"," accuracy 0.52 50\n"," macro avg 0.65 0.35 0.44 50\n","weighted avg 0.97 0.52 0.67 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
targetUnnamed: 0ysentimentkeywordsentiment_confidenceidtextdefault_name_embeddingslocationdocument
origin_index
00.01649.0negativenegativehail0.6200926069.0Ladies &amp; Gentleman Pls Welcome The Full Me...[0.0718693882226944, -0.018772797659039497, -0...Panama, INLadies &amp; Gentleman Pls Welcome The Full Me...
10.0999.0negativeneutraldrowning0.5211894509.0Emergency meeting for her millionaire grandson...[-0.06196709722280502, 0.03117111697793007, 0....BurntislandEmergency meeting for her millionaire grandson...
21.0475.0positiveneutralrescued0.5571768573.0Update from . Looks like they're getting rescu...[0.0428241565823555, -0.04131714627146721, -0....PhilippinesUpdate from . Looks like they're getting rescu...
30.02779.0negativeneutralevacuate0.5058615026.0Bridal couple were little affected in contrast...[-0.040058307349681854, 0.006242941599339247, ...JPBridal couple were little affected in contrast...
40.01517.0negativeneutralairplane%20accident0.564590163.0How exactly does one accidentally fire a rocke...[-0.016879839822649956, 0.06649093329906464, -...IowaHow exactly does one accidentally fire a rocke...
50.01400.0negativeneutralfamine0.5584665307.0President Edgar Lungu told journalists his buy...[0.05988643690943718, -0.03577134758234024, -0...EarthPresident Edgar Lungu told journalists his buy...
60.0215.0negativenegativeapocalypse0.666880338.0Yea, but let's be honest. Kids value pretty mu...[-0.029979687184095383, -0.016652535647153854,...Sword Fight On The HeightsYea, but let's be honest. Kids value pretty mu...
70.0704.0negativeneutraldanger0.5634723039.0Can anyone believe the cheek of calling a bush...[-0.04716842249035835, -0.03333980590105057, -...CanberraCan anyone believe the cheek of calling a bush...
81.03149.0positiveneutralapocalypse0.568612323.0no amount of sci-fi media could’ve prepar...[-0.03867451846599579, 0.027363918721675873, -...Madridno amount of sci-fi media could’ve prepar...
91.03861.0positivepositivesmoke0.6290869348.0Wildfire smoke to circle planet and return to ...[-0.04033537954092026, -0.006633501499891281, ...SydneyWildfire smoke to circle planet and return to ...
101.06698.0positiveneutralweapon0.59064210883.0\"Somehow or other, we've got to stop the Irani...[0.047660667449235916, -0.0322858951985836, -0...Hungary\"Somehow or other, we've got to stop the Irani...
111.05728.0positivepositivewild%20fires0.60380011016.0An estimated 2 million hectares of land burnt ...[0.006747904233634472, -0.05033961310982704, -...Global Citizen. NYC, L.A. etc,An estimated 2 million hectares of land burnt ...
121.04099.0positivepositiveflooding0.6097655908.0Storm surge from Storm Brendan flooding the ha...[-0.01745571382343769, -0.02025921642780304, 0...BallycastleStorm surge from Storm Brendan flooding the ha...
130.01221.0negativenegativebattle0.666491723.0*\"DMC3 Cerberus Battle\" playing* https://t.co/...[-0.05303790792822838, 0.029018903151154518, -...Украина*\"DMC3 Cerberus Battle\" playing* https://t.co/...
140.02082.0negativenegativehail0.6473616052.0ALL HAIL CHEETOS[0.025289693847298622, -0.006686831824481487, ...cheetosALL HAIL CHEETOS
151.0658.0positivepositivearson0.624684458.0Climate Change Or Arson Jihad? - https://t.co/...[-0.04567283019423485, 0.0007029167609289289, ...USAClimate Change Or Arson Jihad? - https://t.co/...
160.01405.0negativepositiveairplane%20accident0.614355144.0Mass anti-government protests erupt in Iran af...[0.007361058611422777, -1.4808237210672814e-05...NYCMass anti-government protests erupt in Iran af...
171.03461.0positiveneutraloutbreak0.5824958012.0He Greta you might want to raise the issue of ...[0.007896085269749165, -0.018556153401732445, ...Islamabad, PakistanHe Greta you might want to raise the issue of ...
181.05616.0positiveneutralcollision0.5983942546.0Police are seeking witnesses as they investiga...[-0.07210832089185715, -0.0818963497877121, -0...Hamilton OntarioPolice are seeking witnesses as they investiga...
191.06274.0positivepositiveinundated0.6119186926.0Indonesia 🇮🇩 is facing its own c...[0.021613234654068947, -0.006164511665701866, ...AfricaIndonesia 🇮🇩 is facing its own c...
201.01242.0positivepositivewild%20fires0.60645711046.0There's method to the madness with the Califor...[0.047039393335580826, 0.029535269364714622, -...OklahomaThere's method to the madness with the Califor...
210.01865.0negativeneutralcrash0.5395192678.0#NotMyPM on BBC says #ReleaseTheRussiaReport w...[-0.036455944180488586, -0.04565983638167381, ...United Kingdom, Europe#NotMyPM on BBC says #ReleaseTheRussiaReport w...
220.0298.0negativenegativeambulance0.693735203.0Jinu : Are you okay? You hit your head and fai...[-0.07107605040073395, 0.05997276306152344, 0....EverywhereJinu : Are you okay? You hit your head and fai...
230.02881.0negativeneutraldemolish0.5454023421.0We won’t demolish properties without enga...[0.08048725128173828, 0.04733644425868988, -0....Lagos, NigeriaWe won’t demolish properties without enga...
240.0809.0negativeneutralannihilated0.503223272.0A devastating and thorough refutation of and N...[0.03053135797381401, 0.018328236415982246, -0...USAA devastating and thorough refutation of and N...
251.05736.0positivepositivehazardous0.6241056279.0Updated air quality forecast for today and the...[-0.03537615016102791, -0.009700290858745575, ...Melbourne, AustraliaUpdated air quality forecast for today and the...
260.0490.0negativeneutralannihilated0.587514234.0Zero chance of any of those candidates winning...[0.016370240598917007, 0.015815315768122673, -...West Midlands, EnglandZero chance of any of those candidates winning...
271.02133.0positiveneutralderailment0.5276093739.0They tell lies. A train I get was showing as c...[-0.07224728167057037, 0.0546182319521904, 0.0...Welwyn, EastThey tell lies. A train I get was showing as c...
281.01170.0positiveneutralemergency%20services0.5909414865.0Emergency services at scene of multi-vehicle c...[-0.053703196346759796, -0.05499571934342384, ...DonegalEmergency services at scene of multi-vehicle c...
291.04017.0positiveneutralpolice0.5872938226.0In 2017, attack on police lines in Shopian. Da...[0.06364629417657852, -0.07933878153562546, -0...New Delhi, IndiaIn 2017, attack on police lines in Shopian. Da...
301.0284.0positivepositiveburned0.6080991819.0Thousands of churches in France and the UK hav...[0.027487952262163162, 0.052743472158908844, -...Limerick, IrelandThousands of churches in France and the UK hav...
310.0942.0negativenegativedesolation0.6655783823.0Musician or band contact us https://t.co/NKsqk...[-0.06283976882696152, 0.04715868458151817, -0...Rock PlanetMusician or band contact us https://t.co/NKsqk...
321.06823.0positivepositivearmy0.614401418.0Army IDs Two Paratroopers Killed by Roadside B...[-0.0569257028400898, -0.07342782616615295, -0...New York City & a VegetarianArmy IDs Two Paratroopers Killed by Roadside B...
331.01353.0positivepositivedestroyed0.6036053953.0Shot and killed in front of his wife, sister a...[-0.009694310836493969, -0.040014732629060745,...Houston, TXShot and killed in front of his wife, sister a...
341.0887.0positivepositivefamine0.6031175290.0Adolf Hitler took 12 years to murder 6 million...[0.017979739233851433, -0.019764618948101997, ...HyderabadAdolf Hitler took 12 years to murder 6 million...
350.02846.0negativeneutralbridge%20collapse0.5393491678.0Human error and poor engineering caused that b...[-0.02368932031095028, 0.05375693738460541, -0...Beacon Falls, CTHuman error and poor engineering caused that b...
361.06805.0positiveneutralcrashed0.5922702693.0Boeing employees mocked Lion Air staff for see...[0.013637347146868706, 0.040167536586523056, -...Tucson, AZBoeing employees mocked Lion Air staff for see...
371.04998.0positivepositivefatal0.6191925335.0U.S. Attorney General William Barr said a Saud...[0.029709110036492348, -0.06744032353162766, -...https://maps.app.goo.gl/YLrsVhU.S. Attorney General William Barr said a Saud...
380.02476.0negativenegativeattack0.664207553.0me having an anxiety attack trying to look nor...[-0.04544655606150627, -0.07944270968437195, -...Lao P.D.Rme having an anxiety attack trying to look nor...
390.01844.0negativenegativeannihilation0.611182288.0I loved and hated #UncutGems, like several mov...[-0.010108539834618568, 0.013281909748911858, ...Occupied Multnomah Chinook PDXI loved and hated #UncutGems, like several mov...
400.02323.0negativeneutralcollision0.5898312608.0Simple learning of kites. 1) As soon as you go...[-0.0300322026014328, 0.04086627438664436, 0.0...Gujarat, IndiaSimple learning of kites. 1) As soon as you go...
410.02068.0negativeneutralbody%20bags0.5090741459.0-stung and soldiers go home in body bags. IâÂ...[-0.02494075335562229, 0.044942084699869156, -...St.Paul Minnesota-stung and soldiers go home in body bags. IâÂ...
421.01692.0positivepositivedebris0.6202053279.0Hi , A737 south at Linwood cut off just passed...[-0.027976034209132195, -0.01899741217494011, ...DumbartonHi , A737 south at Linwood cut off just passed...
431.03255.0positivepositiveoil%20spill0.6134307940.0Livestock Carrier Spills Fuel Oil at Port of C...[-0.050569694489240646, 0.02741994708776474, -...Fort Lauderdale, FloridaLivestock Carrier Spills Fuel Oil at Port of C...
441.02253.0positivepositivehijacking0.6239016516.0LAW &amp; ORDER: Woman charged with DUI after ...[0.0002868208975996822, -0.07291881740093231, ...Atlanta, GA 770-578-2344LAW &amp; ORDER: Woman charged with DUI after ...
451.04046.0positivepositivecrash0.6238712628.0BREAKING: Iranian Judiciary spokesman says sev...[0.03708343580365181, -0.05643052980303764, -0...Russia. In the dense forests.BREAKING: Iranian Judiciary spokesman says sev...
460.0283.0negativenegativecrashed0.6580092695.0They hear ur having a bad time, no sympathy. h...[0.005220184568315744, 0.07696899026632309, 0....You know where I dey, na NaijaThey hear ur having a bad time, no sympathy. h...
470.02280.0negativenegativedestroyed0.6709743959.0She's spot on though. She's explaining how clo...[-0.016363494098186493, 0.05821079760789871, -...Selma, ALShe's spot on though. She's explaining how clo...
480.0236.0negativeneutralderail0.5451483628.0A subtle design feature of the AR-15 rifle has...[0.04045148566365242, -0.027726944535970688, -...Atlanta/Stone Mountain, GAA subtle design feature of the AR-15 rifle has...
490.02556.0negativeneutralcollapsed0.5992912412.0The wedding party all collapsed in the room So...[-0.010037141852080822, 0.006907069124281406, ...Wonderland🌹The wedding party all collapsed in the room So...
\n","
"],"text/plain":[" target ... document\n","origin_index ... \n","0 0.0 ... Ladies & Gentleman Pls Welcome The Full Me...\n","1 0.0 ... Emergency meeting for her millionaire grandson...\n","2 1.0 ... Update from . Looks like they're getting rescu...\n","3 0.0 ... Bridal couple were little affected in contrast...\n","4 0.0 ... How exactly does one accidentally fire a rocke...\n","5 0.0 ... President Edgar Lungu told journalists his buy...\n","6 0.0 ... Yea, but let's be honest. Kids value pretty mu...\n","7 0.0 ... Can anyone believe the cheek of calling a bush...\n","8 1.0 ... no amount of sci-fi media could’ve prepar...\n","9 1.0 ... Wildfire smoke to circle planet and return to ...\n","10 1.0 ... \"Somehow or other, we've got to stop the Irani...\n","11 1.0 ... An estimated 2 million hectares of land burnt ...\n","12 1.0 ... Storm surge from Storm Brendan flooding the ha...\n","13 0.0 ... *\"DMC3 Cerberus Battle\" playing* https://t.co/...\n","14 0.0 ... ALL HAIL CHEETOS\n","15 1.0 ... Climate Change Or Arson Jihad? - https://t.co/...\n","16 0.0 ... Mass anti-government protests erupt in Iran af...\n","17 1.0 ... He Greta you might want to raise the issue of ...\n","18 1.0 ... Police are seeking witnesses as they investiga...\n","19 1.0 ... Indonesia 🇮🇩 is facing its own c...\n","20 1.0 ... There's method to the madness with the Califor...\n","21 0.0 ... #NotMyPM on BBC says #ReleaseTheRussiaReport w...\n","22 0.0 ... Jinu : Are you okay? You hit your head and fai...\n","23 0.0 ... We won’t demolish properties without enga...\n","24 0.0 ... A devastating and thorough refutation of and N...\n","25 1.0 ... Updated air quality forecast for today and the...\n","26 0.0 ... Zero chance of any of those candidates winning...\n","27 1.0 ... They tell lies. A train I get was showing as c...\n","28 1.0 ... Emergency services at scene of multi-vehicle c...\n","29 1.0 ... In 2017, attack on police lines in Shopian. Da...\n","30 1.0 ... Thousands of churches in France and the UK hav...\n","31 0.0 ... Musician or band contact us https://t.co/NKsqk...\n","32 1.0 ... Army IDs Two Paratroopers Killed by Roadside B...\n","33 1.0 ... Shot and killed in front of his wife, sister a...\n","34 1.0 ... Adolf Hitler took 12 years to murder 6 million...\n","35 0.0 ... Human error and poor engineering caused that b...\n","36 1.0 ... Boeing employees mocked Lion Air staff for see...\n","37 1.0 ... U.S. Attorney General William Barr said a Saud...\n","38 0.0 ... me having an anxiety attack trying to look nor...\n","39 0.0 ... I loved and hated #UncutGems, like several mov...\n","40 0.0 ... Simple learning of kites. 1) As soon as you go...\n","41 0.0 ... -stung and soldiers go home in body bags. IâÂ...\n","42 1.0 ... Hi , A737 south at Linwood cut off just passed...\n","43 1.0 ... Livestock Carrier Spills Fuel Oil at Port of C...\n","44 1.0 ... LAW & ORDER: Woman charged with DUI after ...\n","45 1.0 ... BREAKING: Iranian Judiciary spokesman says sev...\n","46 0.0 ... They hear ur having a bad time, no sympathy. h...\n","47 0.0 ... She's spot on though. She's explaining how clo...\n","48 0.0 ... A subtle design feature of the AR-15 rifle has...\n","49 0.0 ... The wedding party all collapsed in the room So...\n","\n","[50 rows x 11 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1613549343044,"user_tz":-300,"elapsed":225599,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"da6c3c0b-085d-473e-d4f0-28bfcc165f8c"},"source":["fitted_pipe.predict(\"All the buildings in the capital were destroyed\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentsentiment_confidencedefault_name_embeddingsdocument
origin_index
0neutral0.592779[0.01043090783059597, 0.06007970869541168, -0....All the buildings in the capital were destroyed
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 neutral ... All the buildings in the capital were destroyed\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1613549343046,"user_tz":-300,"elapsed":225592,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2389fc73-ff47-43a4-a860-756ecb03509d"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1613549349275,"user_tz":-300,"elapsed":231811,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"bc2745cc-3e35-4100-8d91-48ea87382f17"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.96 0.96 0.96 25\n"," positive 0.96 0.96 0.96 25\n","\n"," accuracy 0.96 50\n"," macro avg 0.96 0.96 0.96 50\n","weighted avg 0.96 0.96 0.96 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
targetUnnamed: 0ysentimentkeywordsentiment_confidenceidtextdefault_name_embeddingslocationdocument
origin_index
00.01649.0negativenegativehail0.9696916069.0Ladies &amp; Gentleman Pls Welcome The Full Me...[0.0718693882226944, -0.018772797659039497, -0...Panama, INLadies &amp; Gentleman Pls Welcome The Full Me...
10.0999.0negativenegativedrowning0.8827124509.0Emergency meeting for her millionaire grandson...[-0.06196709722280502, 0.03117111697793007, 0....BurntislandEmergency meeting for her millionaire grandson...
21.0475.0positivepositiverescued0.7994558573.0Update from . Looks like they're getting rescu...[0.0428241565823555, -0.04131714627146721, -0....PhilippinesUpdate from . Looks like they're getting rescu...
30.02779.0negativenegativeevacuate0.9262485026.0Bridal couple were little affected in contrast...[-0.040058307349681854, 0.006242941599339247, ...JPBridal couple were little affected in contrast...
40.01517.0negativenegativeairplane%20accident0.799277163.0How exactly does one accidentally fire a rocke...[-0.016879839822649956, 0.06649093329906464, -...IowaHow exactly does one accidentally fire a rocke...
50.01400.0negativenegativefamine0.7766905307.0President Edgar Lungu told journalists his buy...[0.05988643690943718, -0.03577134758234024, -0...EarthPresident Edgar Lungu told journalists his buy...
60.0215.0negativenegativeapocalypse0.966522338.0Yea, but let's be honest. Kids value pretty mu...[-0.029979687184095383, -0.016652535647153854,...Sword Fight On The HeightsYea, but let's be honest. Kids value pretty mu...
70.0704.0negativenegativedanger0.8880853039.0Can anyone believe the cheek of calling a bush...[-0.04716842249035835, -0.03333980590105057, -...CanberraCan anyone believe the cheek of calling a bush...
81.03149.0positivepositiveapocalypse0.796345323.0no amount of sci-fi media could’ve prepar...[-0.03867451846599579, 0.027363918721675873, -...Madridno amount of sci-fi media could’ve prepar...
91.03861.0positivepositivesmoke0.9450419348.0Wildfire smoke to circle planet and return to ...[-0.04033537954092026, -0.006633501499891281, ...SydneyWildfire smoke to circle planet and return to ...
101.06698.0positivepositiveweapon0.65260310883.0\"Somehow or other, we've got to stop the Irani...[0.047660667449235916, -0.0322858951985836, -0...Hungary\"Somehow or other, we've got to stop the Irani...
111.05728.0positivepositivewild%20fires0.92294811016.0An estimated 2 million hectares of land burnt ...[0.006747904233634472, -0.05033961310982704, -...Global Citizen. NYC, L.A. etc,An estimated 2 million hectares of land burnt ...
121.04099.0positivepositiveflooding0.9328915908.0Storm surge from Storm Brendan flooding the ha...[-0.01745571382343769, -0.02025921642780304, 0...BallycastleStorm surge from Storm Brendan flooding the ha...
130.01221.0negativenegativebattle0.971089723.0*\"DMC3 Cerberus Battle\" playing* https://t.co/...[-0.05303790792822838, 0.029018903151154518, -...Украина*\"DMC3 Cerberus Battle\" playing* https://t.co/...
140.02082.0negativenegativehail0.9769466052.0ALL HAIL CHEETOS[0.025289693847298622, -0.006686831824481487, ...cheetosALL HAIL CHEETOS
151.0658.0positivepositivearson0.947676458.0Climate Change Or Arson Jihad? - https://t.co/...[-0.04567283019423485, 0.0007029167609289289, ...USAClimate Change Or Arson Jihad? - https://t.co/...
160.01405.0negativepositiveairplane%20accident0.759179144.0Mass anti-government protests erupt in Iran af...[0.007361058611422777, -1.4808237210672814e-05...NYCMass anti-government protests erupt in Iran af...
171.03461.0positivepositiveoutbreak0.8476318012.0He Greta you might want to raise the issue of ...[0.007896085269749165, -0.018556153401732445, ...Islamabad, PakistanHe Greta you might want to raise the issue of ...
181.05616.0positivepositivecollision0.8971202546.0Police are seeking witnesses as they investiga...[-0.07210832089185715, -0.0818963497877121, -0...Hamilton OntarioPolice are seeking witnesses as they investiga...
191.06274.0positivepositiveinundated0.9341496926.0Indonesia 🇮🇩 is facing its own c...[0.021613234654068947, -0.006164511665701866, ...AfricaIndonesia 🇮🇩 is facing its own c...
201.01242.0positivepositivewild%20fires0.87105411046.0There's method to the madness with the Califor...[0.047039393335580826, 0.029535269364714622, -...OklahomaThere's method to the madness with the Califor...
210.01865.0negativenegativecrash0.8882672678.0#NotMyPM on BBC says #ReleaseTheRussiaReport w...[-0.036455944180488586, -0.04565983638167381, ...United Kingdom, Europe#NotMyPM on BBC says #ReleaseTheRussiaReport w...
220.0298.0negativenegativeambulance0.985977203.0Jinu : Are you okay? You hit your head and fai...[-0.07107605040073395, 0.05997276306152344, 0....EverywhereJinu : Are you okay? You hit your head and fai...
230.02881.0negativenegativedemolish0.9635543421.0We won’t demolish properties without enga...[0.08048725128173828, 0.04733644425868988, -0....Lagos, NigeriaWe won’t demolish properties without enga...
240.0809.0negativenegativeannihilated0.922194272.0A devastating and thorough refutation of and N...[0.03053135797381401, 0.018328236415982246, -0...USAA devastating and thorough refutation of and N...
251.05736.0positivepositivehazardous0.9701646279.0Updated air quality forecast for today and the...[-0.03537615016102791, -0.009700290858745575, ...Melbourne, AustraliaUpdated air quality forecast for today and the...
260.0490.0negativenegativeannihilated0.966277234.0Zero chance of any of those candidates winning...[0.016370240598917007, 0.015815315768122673, -...West Midlands, EnglandZero chance of any of those candidates winning...
271.02133.0positivenegativederailment0.6407933739.0They tell lies. A train I get was showing as c...[-0.07224728167057037, 0.0546182319521904, 0.0...Welwyn, EastThey tell lies. A train I get was showing as c...
281.01170.0positivepositiveemergency%20services0.7650484865.0Emergency services at scene of multi-vehicle c...[-0.053703196346759796, -0.05499571934342384, ...DonegalEmergency services at scene of multi-vehicle c...
291.04017.0positivepositivepolice0.8243288226.0In 2017, attack on police lines in Shopian. Da...[0.06364629417657852, -0.07933878153562546, -0...New Delhi, IndiaIn 2017, attack on police lines in Shopian. Da...
301.0284.0positivepositiveburned0.7923801819.0Thousands of churches in France and the UK hav...[0.027487952262163162, 0.052743472158908844, -...Limerick, IrelandThousands of churches in France and the UK hav...
310.0942.0negativenegativedesolation0.9818443823.0Musician or band contact us https://t.co/NKsqk...[-0.06283976882696152, 0.04715868458151817, -0...Rock PlanetMusician or band contact us https://t.co/NKsqk...
321.06823.0positivepositivearmy0.916005418.0Army IDs Two Paratroopers Killed by Roadside B...[-0.0569257028400898, -0.07342782616615295, -0...New York City & a VegetarianArmy IDs Two Paratroopers Killed by Roadside B...
331.01353.0positivepositivedestroyed0.8493633953.0Shot and killed in front of his wife, sister a...[-0.009694310836493969, -0.040014732629060745,...Houston, TXShot and killed in front of his wife, sister a...
341.0887.0positivepositivefamine0.8532405290.0Adolf Hitler took 12 years to murder 6 million...[0.017979739233851433, -0.019764618948101997, ...HyderabadAdolf Hitler took 12 years to murder 6 million...
350.02846.0negativenegativebridge%20collapse0.8960281678.0Human error and poor engineering caused that b...[-0.02368932031095028, 0.05375693738460541, -0...Beacon Falls, CTHuman error and poor engineering caused that b...
361.06805.0positivepositivecrashed0.7281272693.0Boeing employees mocked Lion Air staff for see...[0.013637347146868706, 0.040167536586523056, -...Tucson, AZBoeing employees mocked Lion Air staff for see...
371.04998.0positivepositivefatal0.9271185335.0U.S. Attorney General William Barr said a Saud...[0.029709110036492348, -0.06744032353162766, -...https://maps.app.goo.gl/YLrsVhU.S. Attorney General William Barr said a Saud...
380.02476.0negativenegativeattack0.976725553.0me having an anxiety attack trying to look nor...[-0.04544655606150627, -0.07944270968437195, -...Lao P.D.Rme having an anxiety attack trying to look nor...
390.01844.0negativenegativeannihilation0.958863288.0I loved and hated #UncutGems, like several mov...[-0.010108539834618568, 0.013281909748911858, ...Occupied Multnomah Chinook PDXI loved and hated #UncutGems, like several mov...
400.02323.0negativenegativecollision0.9645932608.0Simple learning of kites. 1) As soon as you go...[-0.0300322026014328, 0.04086627438664436, 0.0...Gujarat, IndiaSimple learning of kites. 1) As soon as you go...
410.02068.0negativenegativebody%20bags0.9293611459.0-stung and soldiers go home in body bags. IâÂ...[-0.02494075335562229, 0.044942084699869156, -...St.Paul Minnesota-stung and soldiers go home in body bags. IâÂ...
421.01692.0positivepositivedebris0.9566623279.0Hi , A737 south at Linwood cut off just passed...[-0.027976034209132195, -0.01899741217494011, ...DumbartonHi , A737 south at Linwood cut off just passed...
431.03255.0positivepositiveoil%20spill0.9369867940.0Livestock Carrier Spills Fuel Oil at Port of C...[-0.050569694489240646, 0.02741994708776474, -...Fort Lauderdale, FloridaLivestock Carrier Spills Fuel Oil at Port of C...
441.02253.0positivepositivehijacking0.9269256516.0LAW &amp; ORDER: Woman charged with DUI after ...[0.0002868208975996822, -0.07291881740093231, ...Atlanta, GA 770-578-2344LAW &amp; ORDER: Woman charged with DUI after ...
451.04046.0positivepositivecrash0.9288402628.0BREAKING: Iranian Judiciary spokesman says sev...[0.03708343580365181, -0.05643052980303764, -0...Russia. In the dense forests.BREAKING: Iranian Judiciary spokesman says sev...
460.0283.0negativenegativecrashed0.9734632695.0They hear ur having a bad time, no sympathy. h...[0.005220184568315744, 0.07696899026632309, 0....You know where I dey, na NaijaThey hear ur having a bad time, no sympathy. h...
470.02280.0negativenegativedestroyed0.9720693959.0She's spot on though. She's explaining how clo...[-0.016363494098186493, 0.05821079760789871, -...Selma, ALShe's spot on though. She's explaining how clo...
480.0236.0negativenegativederail0.9002283628.0A subtle design feature of the AR-15 rifle has...[0.04045148566365242, -0.027726944535970688, -...Atlanta/Stone Mountain, GAA subtle design feature of the AR-15 rifle has...
490.02556.0negativenegativecollapsed0.9719112412.0The wedding party all collapsed in the room So...[-0.010037141852080822, 0.006907069124281406, ...Wonderland🌹The wedding party all collapsed in the room So...
\n","
"],"text/plain":[" target ... document\n","origin_index ... \n","0 0.0 ... Ladies & Gentleman Pls Welcome The Full Me...\n","1 0.0 ... Emergency meeting for her millionaire grandson...\n","2 1.0 ... Update from . Looks like they're getting rescu...\n","3 0.0 ... Bridal couple were little affected in contrast...\n","4 0.0 ... How exactly does one accidentally fire a rocke...\n","5 0.0 ... President Edgar Lungu told journalists his buy...\n","6 0.0 ... Yea, but let's be honest. Kids value pretty mu...\n","7 0.0 ... Can anyone believe the cheek of calling a bush...\n","8 1.0 ... no amount of sci-fi media could’ve prepar...\n","9 1.0 ... Wildfire smoke to circle planet and return to ...\n","10 1.0 ... \"Somehow or other, we've got to stop the Irani...\n","11 1.0 ... An estimated 2 million hectares of land burnt ...\n","12 1.0 ... Storm surge from Storm Brendan flooding the ha...\n","13 0.0 ... *\"DMC3 Cerberus Battle\" playing* https://t.co/...\n","14 0.0 ... ALL HAIL CHEETOS\n","15 1.0 ... Climate Change Or Arson Jihad? - https://t.co/...\n","16 0.0 ... Mass anti-government protests erupt in Iran af...\n","17 1.0 ... He Greta you might want to raise the issue of ...\n","18 1.0 ... Police are seeking witnesses as they investiga...\n","19 1.0 ... Indonesia 🇮🇩 is facing its own c...\n","20 1.0 ... There's method to the madness with the Califor...\n","21 0.0 ... #NotMyPM on BBC says #ReleaseTheRussiaReport w...\n","22 0.0 ... Jinu : Are you okay? You hit your head and fai...\n","23 0.0 ... We won’t demolish properties without enga...\n","24 0.0 ... A devastating and thorough refutation of and N...\n","25 1.0 ... Updated air quality forecast for today and the...\n","26 0.0 ... Zero chance of any of those candidates winning...\n","27 1.0 ... They tell lies. A train I get was showing as c...\n","28 1.0 ... Emergency services at scene of multi-vehicle c...\n","29 1.0 ... In 2017, attack on police lines in Shopian. Da...\n","30 1.0 ... Thousands of churches in France and the UK hav...\n","31 0.0 ... Musician or band contact us https://t.co/NKsqk...\n","32 1.0 ... Army IDs Two Paratroopers Killed by Roadside B...\n","33 1.0 ... Shot and killed in front of his wife, sister a...\n","34 1.0 ... Adolf Hitler took 12 years to murder 6 million...\n","35 0.0 ... Human error and poor engineering caused that b...\n","36 1.0 ... Boeing employees mocked Lion Air staff for see...\n","37 1.0 ... U.S. Attorney General William Barr said a Saud...\n","38 0.0 ... me having an anxiety attack trying to look nor...\n","39 0.0 ... I loved and hated #UncutGems, like several mov...\n","40 0.0 ... Simple learning of kites. 1) As soon as you go...\n","41 0.0 ... -stung and soldiers go home in body bags. IâÂ...\n","42 1.0 ... Hi , A737 south at Linwood cut off just passed...\n","43 1.0 ... Livestock Carrier Spills Fuel Oil at Port of C...\n","44 1.0 ... LAW & ORDER: Woman charged with DUI after ...\n","45 1.0 ... BREAKING: Iranian Judiciary spokesman says sev...\n","46 0.0 ... They hear ur having a bad time, no sympathy. h...\n","47 0.0 ... She's spot on though. She's explaining how clo...\n","48 0.0 ... A subtle design feature of the AR-15 rifle has...\n","49 0.0 ... The wedding party all collapsed in the room So...\n","\n","[50 rows x 11 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# 7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nxWFzQOhjWC8","executionInfo":{"status":"ok","timestamp":1613549349279,"user_tz":-300,"elapsed":231804,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cef428e9-17a3-43c2-c319-8f19f5779154"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1614244649135,"user_tz":-300,"elapsed":2297835,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"afaf09b1-9e5b-4514-87c6-4e2197974700"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.88 0.84 0.86 1186\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.88 0.85 0.87 1214\n","\n"," accuracy 0.85 2400\n"," macro avg 0.59 0.56 0.58 2400\n","weighted avg 0.88 0.85 0.86 2400\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614245118829,"user_tz":-300,"elapsed":502828,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f967e12a-67d2-46ae-b454-99a3d539c3e7"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.86 0.81 0.83 314\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.84 0.83 0.84 286\n","\n"," accuracy 0.82 600\n"," macro avg 0.57 0.55 0.56 600\n","weighted avg 0.85 0.82 0.83 600\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613551695340,"user_tz":-300,"elapsed":2577852,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"01e76247-814c-4ad9-bc52-76e52c94e59b"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613551709867,"user_tz":-300,"elapsed":2592375,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"00046bb7-e3b2-4ba3-f6da-d96dc15202b3"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('All the buildings in the capital were destroyed')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimenten_embed_sentence_small_bert_L12_768_embeddingssentiment_confidencedocument
origin_index
0positive[-0.39346572756767273, 0.33815106749534607, -0...0.994965All the buildings in the capital were destroyed
\n","
"],"text/plain":[" sentiment ... document\n","origin_index ... \n","0 positive ... All the buildings in the capital were destroyed\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"status":"ok","timestamp":1613551709869,"user_tz":-300,"elapsed":2592373,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8daf218d-b381-44be-a807-9e9631e5a34a"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_stock_market.ipynb b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_stock_market.ipynb new file mode 100644 index 00000000..cc4d800c --- /dev/null +++ b/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_stock_market.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_sentiment_classifier_demo_stock_market.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/binary_text_classification/NLU_training_sentiment_classifier_demo_stock_market.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class Demo Stock Market Sentiment Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","![img.png](data:image/png;base64,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)\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614242474079,"user_tz":-300,"elapsed":147747,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0237f7c1-bb21-40d8-faa2-947edc8a1750"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 68kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 20.5MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=7f0edfd295bb5c8ac57fdffbd78fc64f6f9b0a9bcf4d81f4960d6bd0ed20fc26\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Stock Market Sentiment dataset \n","https://www.kaggle.com/yash612/stockmarket-sentiment-dataset\n","#Context\n","\n","Gathered Stock news from Multiple twitter Handles regarding Economic news dividing into two parts : Negative and positive."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614242476002,"user_tz":-300,"elapsed":149669,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b94ee2f4-688e-4d18-af63-70a00ae55f26"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/stock_data.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 08:40:04-- http://ckl-it.de/wp-content/uploads/2021/02/stock_data.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 758217 (740K) [text/csv]\n","Saving to: ‘stock_data.csv’\n","\n","stock_data.csv 100%[===================>] 740.45K 461KB/s in 1.6s \n","\n","2021-02-25 08:40:06 (461 KB/s) - ‘stock_data.csv’ saved [758217/758217]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614242476014,"user_tz":-300,"elapsed":149660,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"87bea20a-581b-4b8c-838b-583a22fe3fed"},"source":["import pandas as pd\n","train_path = '/content/stock_data.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
303DPS breaking out this am. looks good. earnings...positive
2921DDD SSY Stops honored. So be it. Now.... must...negative
2497user arge % owners on Morningstar rival positi...negative
3827FS obama speech tonight moving it on up in cha...positive
3659user: Fascinating email chain between user and...positive
.........
432The key is not to panic here. AAP is in the d...positive
1810ES_F Hedges rotating into Junk stocks like Sol...negative
569WH gap filledpositive
1873BCM I work in this industry. don't just look a...positive
3882MITK moving againpositive
\n","

3200 rows × 2 columns

\n","
"],"text/plain":[" text y\n","303 DPS breaking out this am. looks good. earnings... positive\n","2921 DDD SSY Stops honored. So be it. Now.... must... negative\n","2497 user arge % owners on Morningstar rival positi... negative\n","3827 FS obama speech tonight moving it on up in cha... positive\n","3659 user: Fascinating email chain between user and... positive\n","... ... ...\n","432 The key is not to panic here. AAP is in the d... positive\n","1810 ES_F Hedges rotating into Junk stocks like Sol... negative\n","569 WH gap filled positive\n","1873 BCM I work in this industry. don't just look a... positive\n","3882 MITK moving again positive\n","\n","[3200 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1613549314532,"user_tz":-300,"elapsed":213328,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"177ff1b2-8bda-4a2b-99d5-3e02758286b8"},"source":["import nlu \n","# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# by default the Universal Sentence Encoder (USE) Sentence embeddings are used for generation\n","trainable_pipe = nlu.load('train.sentiment')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.00 0.00 0.00 23\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.69 1.00 0.82 27\n","\n"," accuracy 0.54 50\n"," macro avg 0.23 0.33 0.27 50\n","weighted avg 0.37 0.54 0.44 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextdefault_name_embeddingssentiment_confidencedocumentsentiment
origin_index
0positiveAAP 950 lot bid in the Feb 580 call at 9.50, m...[0.039819009602069855, -0.01317680161446333, -...0.652981AAP 950 lot bid in the Feb 580 call at 9.50, m...positive
1negativeuser: ADBE continues to weaken, not following ...[0.05989246815443039, 0.06275778263807297, -0....0.630831user: ADBE continues to weaken, not following ...positive
2negativepnra missed this one yest on the short side bu...[-0.0019929897971451283, -0.026955554261803627...0.701571pnra missed this one yest on the short side bu...positive
3negativePPO: 2) GM estimates 20% Y/Y unit growth for v...[0.0499078631401062, -0.019602565094828606, -0...0.577670PPO: 2) GM estimates 20% Y/Y unit growth for v...neutral
4positiveBAC avrg positive2.positive27[0.03407237306237221, 0.0034944196231663227, -...0.642415BAC avrg positive2.positive27positive
5negativeCMG While traveling through Kalamazoo, MI on F...[0.017684495076537132, -0.03009415790438652, -...0.567573CMG While traveling through Kalamazoo, MI on F...neutral
6positivei dont have a tech friend in world that owns t...[0.05138593912124634, 0.05815130099654198, -0....0.714708i dont have a tech friend in world that owns t...positive
7positiveSWI was a beaut[0.04824110120534897, -0.05754169449210167, -0...0.722410SWI was a beautpositive
8positiveAgain, this mkt is FAT while AAP is down 2.5% ...[0.050297632813453674, -0.0360858328640461, -0...0.670725Again, this mkt is FAT while AAP is down 2.5% ...positive
9positiveAPO good volume bounce; entry 22.positive9 sto...[-0.013337346725165844, -0.03307655081152916, ...0.733935APO good volume bounce; entry 22.positive9 sto...positive
10negativeike it or Not AAP will fill the gap B4 will s...[0.06327012926340103, 0.003341271774843335, -0...0.535553ike it or Not AAP will fill the gap B4 will se...neutral
11negative2020 was supposed to be the year everything ca...[0.1055862084031105, -0.003243181621655822, -0...0.5959692020 was supposed to be the year everything ca...neutral
12positiveong setup SM[0.045743703842163086, -0.048678476363420486, ...0.730938ong setup SMpositive
13positiveSWHC added more march 9's and positive0's here...[-0.008223574608564377, -0.03544619306921959, ...0.755500SWHC added more march 9's and positive0's here...positive
14positiveTrade Setup AA -[0.04049460217356682, -0.04978525638580322, -0...0.761686Trade Setup AA -positive
15positivedon't tell everyone ... user: That's a nice lo...[0.06689376384019852, -0.029914824292063713, -...0.723632don't tell everyone ... user: That's a nice lo...positive
16positiveSGMO monthly[-0.07218629121780396, -0.01272683497518301, -...0.721094SGMO monthlypositive
17positiveaapl in long per earlier tweet on topside brea...[0.057043224573135376, -0.012128235772252083, ...0.735970aapl in long per earlier tweet on topside brea...positive
18negativeBAC Will go to positive2 imho[0.05091923102736473, -0.04665602371096611, -0...0.601387BAC Will go to positive2 imhopositive
19negativeAAP 465 is resistance and heading to 435 in th...[0.03843201324343681, -0.0733688548207283, -0....0.602865AAP 465 is resistance and heading to 435 in th...positive
20negativeJust finished The Week Ahead Commentary and po...[-0.05284350365400314, 0.024635571986436844, -...0.698348Just finished The Week Ahead Commentary and po...positive
21positiveNew buys today from watch list all did well N...[0.02797831781208515, -0.07139448076486588, -0...0.756334New buys today from watch list all did well NX...positive
22positiveOVI on watch list has volume of positive0% of ...[0.04008709639310837, -0.03572438657283783, -0...0.749699OVI on watch list has volume of positive0% of ...positive
23negativeAAP Fib 50% retracement from 2006 low of 6.36 ...[0.011571422219276428, -0.058767061680555344, ...0.565362AAP Fib 50% retracement from 2006 low of 6.36 ...neutral
24negativeWatch NX under 24.70[0.03347814455628395, -0.015002097003161907, -...0.704729Watch NX under 24.70positive
25negativewill AAP go down?[0.02786560356616974, -0.04974859952926636, -0...0.563953will AAP go down?neutral
26positiveMarket Wrap Video + Additions to Watch ist in...[0.02167339436709881, 0.0070633664727211, -0.0...0.769903Market Wrap Video + Additions to Watch ist inc...positive
27negativeGreen Weekly Triangle on KTOS,....pdating[-0.0672115832567215, -0.007515197619795799, -...0.632066Green Weekly Triangle on KTOS,....pdatingpositive
28negativeNN looking quite bearish at the moment.[0.03382507339119911, -0.029242942109704018, -...0.677875NN looking quite bearish at the moment.positive
29positiveT user INVN ..lots of bullish technical discus...[0.06488332152366638, 0.005766488146036863, -0...0.706750T user INVN ..lots of bullish technical discus...positive
30negativeuser: BT Cortos en Peabody Energy si cae bajo ...[0.06904835999011993, 0.018765972927212715, -0...0.544308user: BT Cortos en Peabody Energy si cae bajo ...neutral
31positiveMarket Wrap Video + Additions to Watch ist in...[0.06079310178756714, -0.052379265427589417, -...0.730841Market Wrap Video + Additions to Watch ist inc...positive
32positiveHS Over 48.20 at first for a small trade to se...[0.03508533164858818, -0.013354266993701458, -...0.773186HS Over 48.20 at first for a small trade to se...positive
33negativeAMZN short 275.positive3[0.023175707086920738, 0.001034723361954093, -...0.626640AMZN short 275.positive3positive
34positiveVNG - positive2 mil shares shorts plus long bu...[0.008707035332918167, 0.03645578399300575, -0...0.695301VNG - positive2 mil shares shorts plus long bu...positive
35positiveMarket Wrap Video + Additions to Watch ist in...[0.03514407202601433, 0.01656987890601158, -0....0.707386Market Wrap Video + Additions to Watch ist inc...positive
36negativeGreen Weekly Triangle on PBY,....Open Sell Sho...[-0.004248426761478186, -0.0024954124819487333...0.678482Green Weekly Triangle on PBY,....Open Sell Sho...positive
37negativeCIE Seems geady to go South[0.03585235774517059, 0.048238031566143036, -0...0.553114CIE Seems geady to go Southneutral
38negativeuser: AAP people think growth slowing is not ...[0.05234825611114502, -0.011760670691728592, -...0.580370user: AAP people think growth slowing is not t...neutral
39positiveDECK this sucker moves both ways this time i l...[0.01123942993581295, -0.057358115911483765, -...0.688387DECK this sucker moves both ways this time i l...positive
40positiveNew Post: Shorts Will Make Dimes, ongs Will Ma...[0.052262794226408005, -0.053826283663511276, ...0.668805New Post: Shorts Will Make Dimes, ongs Will Ma...positive
41positiveMON - added[0.004127390217036009, -0.05779232084751129, -...0.685398MON - addedpositive
42positivewait to you see what they do w/schools in 20po...[0.03918222710490227, -0.004734774120151997, -...0.689349wait to you see what they do w/schools in 20po...positive
43negativeWhiting, one of top drillers in North Dakotaâ...[0.008908223360776901, 0.043478433042764664, -...0.563377Whiting, one of top drillers in North Dakotaâ...neutral
44negativeGold Demand Could Hit 3-Decade Low As COVIDneg...[0.04732766002416611, -0.086189404129982, 0.01...0.604626Gold Demand Could Hit 3-Decade Low As COVIDneg...positive
45negativeThe most bearish thing I have seen in a week, ...[0.0485176146030426, 0.003743809647858143, -0....0.621680The most bearish thing I have seen in a week, ...positive
46positiveNG - traditional and AT point and figure - bul...[0.06986340880393982, -0.010513159446418285, -...0.653522NG - traditional and AT point and figure - bul...positive
47positiveCBMX B/O smart money coming in this afternoon ...[0.08315714448690414, 0.015806563198566437, -0...0.720131CBMX B/O smart money coming in this afternoon ...positive
48positiveP approaching resistance area around positive2...[-0.05507417768239975, 0.026514528319239616, -...0.715011P approaching resistance area around positive2...positive
49negativeWFM - looks like a bear flag, we are short, wi...[-0.04197699576616287, -0.07297921925783157, -...0.514607WFM - looks like a bear flag, we are short, wi...neutral
\n","
"],"text/plain":[" y ... sentiment\n","origin_index ... \n","0 positive ... positive\n","1 negative ... positive\n","2 negative ... positive\n","3 negative ... neutral\n","4 positive ... positive\n","5 negative ... neutral\n","6 positive ... positive\n","7 positive ... positive\n","8 positive ... positive\n","9 positive ... positive\n","10 negative ... neutral\n","11 negative ... neutral\n","12 positive ... positive\n","13 positive ... positive\n","14 positive ... positive\n","15 positive ... positive\n","16 positive ... positive\n","17 positive ... positive\n","18 negative ... positive\n","19 negative ... positive\n","20 negative ... positive\n","21 positive ... positive\n","22 positive ... positive\n","23 negative ... neutral\n","24 negative ... positive\n","25 negative ... neutral\n","26 positive ... positive\n","27 negative ... positive\n","28 negative ... positive\n","29 positive ... positive\n","30 negative ... neutral\n","31 positive ... positive\n","32 positive ... positive\n","33 negative ... positive\n","34 positive ... positive\n","35 positive ... positive\n","36 negative ... positive\n","37 negative ... neutral\n","38 negative ... neutral\n","39 positive ... positive\n","40 positive ... positive\n","41 positive ... positive\n","42 positive ... positive\n","43 negative ... neutral\n","44 negative ... positive\n","45 negative ... positive\n","46 positive ... positive\n","47 positive ... positive\n","48 positive ... positive\n","49 negative ... neutral\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1613549317638,"user_tz":-300,"elapsed":216343,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b77f4b28-b4ff-48f5-dd65-09ca429540c6"},"source":["fitted_pipe.predict(\"Bitcoin dropped by 50 percent!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
default_name_embeddingssentiment_confidencedocumentsentiment
origin_index
0[0.06509938091039658, -0.057081300765275955, -...0.687247Bitcoin dropped by 50 percent!positive
\n","
"],"text/plain":[" default_name_embeddings ... sentiment\n","origin_index ... \n","0 [0.06509938091039658, -0.057081300765275955, -... ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1613549317640,"user_tz":-300,"elapsed":216302,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"636f29b9-abd0-4ecd-a110-1d1afd74a9b0"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setMaxEpochs(2) | Info: Maximum number of epochs to train | Currently set to : 2\n","pipe['sentiment_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['sentiment_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['sentiment_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['sentiment_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1613549325177,"user_tz":-300,"elapsed":223771,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"559b5176-6a41-4379-ebaf-bcdfcf3bd42c"},"source":["# Train longer!\n","trainable_pipe['sentiment_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.93 0.61 0.74 23\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.86 0.89 0.87 27\n","\n"," accuracy 0.76 50\n"," macro avg 0.60 0.50 0.54 50\n","weighted avg 0.89 0.76 0.81 50\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextdefault_name_embeddingssentiment_confidencedocumentsentiment
origin_index
0positiveAAP 950 lot bid in the Feb 580 call at 9.50, m...[0.039819009602069855, -0.01317680161446333, -...0.612311AAP 950 lot bid in the Feb 580 call at 9.50, m...negative
1negativeuser: ADBE continues to weaken, not following ...[0.05989246815443039, 0.06275778263807297, -0....0.581842user: ADBE continues to weaken, not following ...neutral
2negativepnra missed this one yest on the short side bu...[-0.0019929897971451283, -0.026955554261803627...0.563239pnra missed this one yest on the short side bu...neutral
3negativePPO: 2) GM estimates 20% Y/Y unit growth for v...[0.0499078631401062, -0.019602565094828606, -0...0.684193PPO: 2) GM estimates 20% Y/Y unit growth for v...negative
4positiveBAC avrg positive2.positive27[0.03407237306237221, 0.0034944196231663227, -...0.845220BAC avrg positive2.positive27positive
5negativeCMG While traveling through Kalamazoo, MI on F...[0.017684495076537132, -0.03009415790438652, -...0.664491CMG While traveling through Kalamazoo, MI on F...negative
6positivei dont have a tech friend in world that owns t...[0.05138593912124634, 0.05815130099654198, -0....0.857243i dont have a tech friend in world that owns t...positive
7positiveSWI was a beaut[0.04824110120534897, -0.05754169449210167, -0...0.951524SWI was a beautpositive
8positiveAgain, this mkt is FAT while AAP is down 2.5% ...[0.050297632813453674, -0.0360858328640461, -0...0.582303Again, this mkt is FAT while AAP is down 2.5% ...neutral
9positiveAPO good volume bounce; entry 22.positive9 sto...[-0.013337346725165844, -0.03307655081152916, ...0.887402APO good volume bounce; entry 22.positive9 sto...positive
10negativeike it or Not AAP will fill the gap B4 will s...[0.06327012926340103, 0.003341271774843335, -0...0.830195ike it or Not AAP will fill the gap B4 will se...negative
11negative2020 was supposed to be the year everything ca...[0.1055862084031105, -0.003243181621655822, -0...0.6946232020 was supposed to be the year everything ca...negative
12positiveong setup SM[0.045743703842163086, -0.048678476363420486, ...0.957175ong setup SMpositive
13positiveSWHC added more march 9's and positive0's here...[-0.008223574608564377, -0.03544619306921959, ...0.894367SWHC added more march 9's and positive0's here...positive
14positiveTrade Setup AA -[0.04049460217356682, -0.04978525638580322, -0...0.964757Trade Setup AA -positive
15positivedon't tell everyone ... user: That's a nice lo...[0.06689376384019852, -0.029914824292063713, -...0.922478don't tell everyone ... user: That's a nice lo...positive
16positiveSGMO monthly[-0.07218629121780396, -0.01272683497518301, -...0.923514SGMO monthlypositive
17positiveaapl in long per earlier tweet on topside brea...[0.057043224573135376, -0.012128235772252083, ...0.896109aapl in long per earlier tweet on topside brea...positive
18negativeBAC Will go to positive2 imho[0.05091923102736473, -0.04665602371096611, -0...0.737084BAC Will go to positive2 imhonegative
19negativeAAP 465 is resistance and heading to 435 in th...[0.03843201324343681, -0.0733688548207283, -0....0.773113AAP 465 is resistance and heading to 435 in th...negative
20negativeJust finished The Week Ahead Commentary and po...[-0.05284350365400314, 0.024635571986436844, -...0.668573Just finished The Week Ahead Commentary and po...positive
21positiveNew buys today from watch list all did well N...[0.02797831781208515, -0.07139448076486588, -0...0.882660New buys today from watch list all did well NX...positive
22positiveOVI on watch list has volume of positive0% of ...[0.04008709639310837, -0.03572438657283783, -0...0.899480OVI on watch list has volume of positive0% of ...positive
23negativeAAP Fib 50% retracement from 2006 low of 6.36 ...[0.011571422219276428, -0.058767061680555344, ...0.830456AAP Fib 50% retracement from 2006 low of 6.36 ...negative
24negativeWatch NX under 24.70[0.03347814455628395, -0.015002097003161907, -...0.843018Watch NX under 24.70positive
25negativewill AAP go down?[0.02786560356616974, -0.04974859952926636, -0...0.837108will AAP go down?negative
26positiveMarket Wrap Video + Additions to Watch ist in...[0.02167339436709881, 0.0070633664727211, -0.0...0.973447Market Wrap Video + Additions to Watch ist inc...positive
27negativeGreen Weekly Triangle on KTOS,....pdating[-0.0672115832567215, -0.007515197619795799, -...0.527610Green Weekly Triangle on KTOS,....pdatingneutral
28negativeNN looking quite bearish at the moment.[0.03382507339119911, -0.029242942109704018, -...0.743928NN looking quite bearish at the moment.positive
29positiveT user INVN ..lots of bullish technical discus...[0.06488332152366638, 0.005766488146036863, -0...0.881713T user INVN ..lots of bullish technical discus...positive
30negativeuser: BT Cortos en Peabody Energy si cae bajo ...[0.06904835999011993, 0.018765972927212715, -0...0.601138user: BT Cortos en Peabody Energy si cae bajo ...negative
31positiveMarket Wrap Video + Additions to Watch ist in...[0.06079310178756714, -0.052379265427589417, -...0.944614Market Wrap Video + Additions to Watch ist inc...positive
32positiveHS Over 48.20 at first for a small trade to se...[0.03508533164858818, -0.013354266993701458, -...0.961685HS Over 48.20 at first for a small trade to se...positive
33negativeAMZN short 275.positive3[0.023175707086920738, 0.001034723361954093, -...0.629248AMZN short 275.positive3positive
34positiveVNG - positive2 mil shares shorts plus long bu...[0.008707035332918167, 0.03645578399300575, -0...0.849978VNG - positive2 mil shares shorts plus long bu...positive
35positiveMarket Wrap Video + Additions to Watch ist in...[0.03514407202601433, 0.01656987890601158, -0....0.908923Market Wrap Video + Additions to Watch ist inc...positive
36negativeGreen Weekly Triangle on PBY,....Open Sell Sho...[-0.004248426761478186, -0.0024954124819487333...0.551505Green Weekly Triangle on PBY,....Open Sell Sho...neutral
37negativeCIE Seems geady to go South[0.03585235774517059, 0.048238031566143036, -0...0.780726CIE Seems geady to go Southnegative
38negativeuser: AAP people think growth slowing is not ...[0.05234825611114502, -0.011760670691728592, -...0.794824user: AAP people think growth slowing is not t...negative
39positiveDECK this sucker moves both ways this time i l...[0.01123942993581295, -0.057358115911483765, -...0.902623DECK this sucker moves both ways this time i l...positive
40positiveNew Post: Shorts Will Make Dimes, ongs Will Ma...[0.052262794226408005, -0.053826283663511276, ...0.657548New Post: Shorts Will Make Dimes, ongs Will Ma...positive
41positiveMON - added[0.004127390217036009, -0.05779232084751129, -...0.928928MON - addedpositive
42positivewait to you see what they do w/schools in 20po...[0.03918222710490227, -0.004734774120151997, -...0.814769wait to you see what they do w/schools in 20po...positive
43negativeWhiting, one of top drillers in North Dakotaâ...[0.008908223360776901, 0.043478433042764664, -...0.719284Whiting, one of top drillers in North Dakotaâ...negative
44negativeGold Demand Could Hit 3-Decade Low As COVIDneg...[0.04732766002416611, -0.086189404129982, 0.01...0.637345Gold Demand Could Hit 3-Decade Low As COVIDneg...negative
45negativeThe most bearish thing I have seen in a week, ...[0.0485176146030426, 0.003743809647858143, -0....0.576141The most bearish thing I have seen in a week, ...neutral
46positiveNG - traditional and AT point and figure - bul...[0.06986340880393982, -0.010513159446418285, -...0.557736NG - traditional and AT point and figure - bul...neutral
47positiveCBMX B/O smart money coming in this afternoon ...[0.08315714448690414, 0.015806563198566437, -0...0.814244CBMX B/O smart money coming in this afternoon ...positive
48positiveP approaching resistance area around positive2...[-0.05507417768239975, 0.026514528319239616, -...0.871801P approaching resistance area around positive2...positive
49negativeWFM - looks like a bear flag, we are short, wi...[-0.04197699576616287, -0.07297921925783157, -...0.736266WFM - looks like a bear flag, we are short, wi...negative
\n","
"],"text/plain":[" y ... sentiment\n","origin_index ... \n","0 positive ... negative\n","1 negative ... neutral\n","2 negative ... neutral\n","3 negative ... negative\n","4 positive ... positive\n","5 negative ... negative\n","6 positive ... positive\n","7 positive ... positive\n","8 positive ... neutral\n","9 positive ... positive\n","10 negative ... negative\n","11 negative ... negative\n","12 positive ... positive\n","13 positive ... positive\n","14 positive ... positive\n","15 positive ... positive\n","16 positive ... positive\n","17 positive ... positive\n","18 negative ... negative\n","19 negative ... negative\n","20 negative ... positive\n","21 positive ... positive\n","22 positive ... positive\n","23 negative ... negative\n","24 negative ... positive\n","25 negative ... negative\n","26 positive ... positive\n","27 negative ... neutral\n","28 negative ... positive\n","29 positive ... positive\n","30 negative ... negative\n","31 positive ... positive\n","32 positive ... positive\n","33 negative ... positive\n","34 positive ... positive\n","35 positive ... positive\n","36 negative ... neutral\n","37 negative ... negative\n","38 negative ... negative\n","39 positive ... positive\n","40 positive ... positive\n","41 positive ... positive\n","42 positive ... positive\n","43 negative ... negative\n","44 negative ... negative\n","45 negative ... neutral\n","46 positive ... neutral\n","47 positive ... positive\n","48 positive ... positive\n","49 negative ... negative\n","\n","[50 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# 7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nxWFzQOhjWC8","executionInfo":{"status":"ok","timestamp":1613549325181,"user_tz":-300,"elapsed":223750,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a771003c-4295-459f-9b21-43f9bd90c94b"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1614244518434,"user_tz":-300,"elapsed":2188594,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8e62f5bb-0134-40ab-b753-411cb1a2beef"},"source":["trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(120) \n","trainable_pipe['sentiment_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.84 0.71 0.77 1596\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.82 0.76 0.79 1604\n","\n"," accuracy 0.74 3200\n"," macro avg 0.55 0.49 0.52 3200\n","weighted avg 0.83 0.74 0.78 3200\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614244944855,"user_tz":-300,"elapsed":408320,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"83917363-8c79-4d16-d291-f28ddfd81cd7"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.76 0.61 0.68 404\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.73 0.69 0.71 396\n","\n"," accuracy 0.65 800\n"," macro avg 0.50 0.43 0.46 800\n","weighted avg 0.75 0.65 0.69 800\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613552484284,"user_tz":-300,"elapsed":176634,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e13b99a7-e11a-4889-edb8-24516bd3058c"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613552775613,"user_tz":-300,"elapsed":46087,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9c120b5b-8e2d-4450-f4c4-a3e5230818af"},"source":["hdd_pipe = nlu.load(path=\"./models/classifier_dl_trained\")\n","\n","preds = hdd_pipe.predict('Bitcoin dropped by 50 percent!!')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
en_embed_sentence_small_bert_L12_768_embeddingssentimentsentiment_confidencedocument
origin_index
0[0.20597101747989655, 0.16840755939483643, 0.0...negative0.761807Bitcoin dropped by 50 percent!!
\n","
"],"text/plain":[" en_embed_sentence_small_bert_L12_768_embeddings ... document\n","origin_index ... \n","0 [0.20597101747989655, 0.16840755939483643, 0.0... ... Bitcoin dropped by 50 percent!!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"status":"ok","timestamp":1613552782983,"user_tz":-300,"elapsed":1678,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"913230f0-8ff3-4ee1-89f5-7a911e73ab58"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo.ipynb b/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo.ipynb index d259a24b..b784deae 100644 --- a/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo.ipynb +++ b/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_class_text_classifier_demo.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo.ipynb)\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu > /dev/null pyspark==2.4.7\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download news classification dataset"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1607912618662,"user_tz":-60,"elapsed":94251,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"4fe5c4cb-76ff-44a0-9936-dfbddfeb5140"},"source":["! wget https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_train.csv\n","! wget https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_test.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2020-12-14 02:23:36-- https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_train.csv\n","Resolving s3.amazonaws.com (s3.amazonaws.com)... 52.216.154.38\n","Connecting to s3.amazonaws.com (s3.amazonaws.com)|52.216.154.38|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 24032125 (23M) [text/csv]\n","Saving to: ‘news_category_train.csv’\n","\n","news_category_train 100%[===================>] 22.92M 21.7MB/s in 1.1s \n","\n","2020-12-14 02:23:37 (21.7 MB/s) - ‘news_category_train.csv’ saved [24032125/24032125]\n","\n","--2020-12-14 02:23:37-- https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_test.csv\n","Resolving s3.amazonaws.com (s3.amazonaws.com)... 52.217.74.118\n","Connecting to s3.amazonaws.com (s3.amazonaws.com)|52.217.74.118|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 1504408 (1.4M) [text/csv]\n","Saving to: ‘news_category_test.csv’\n","\n","news_category_test. 100%[===================>] 1.43M 2.77MB/s in 0.5s \n","\n","2020-12-14 02:23:38 (2.77 MB/s) - ‘news_category_test.csv’ saved [1504408/1504408]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":419},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1607912619037,"user_tz":-60,"elapsed":94620,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"1cf7867f-21ab-4ba1-9ab3-c95a191b0286"},"source":["import pandas as pd\n","test_path = '/content/news_category_test.csv'\n","train_df = pd.read_csv(test_path)\n","train_df.columns=['y','text']\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
0BusinessUnions representing workers at Turner Newall...
1Sci/TechTORONTO, Canada A second team of rocketeer...
2Sci/TechA company founded by a chemistry researcher a...
3Sci/TechIt's barely dawn when Mike Fitzpatrick starts...
4Sci/TechSouthern California's smog fighting agency we...
.........
7595WorldUkrainian presidential candidate Viktor Yushch...
7596SportsWith the supply of attractive pitching options...
7597SportsLike Roger Clemens did almost exactly eight ye...
7598BusinessSINGAPORE : Doctors in the United States have ...
7599BusinessEBay plans to buy the apartment and home renta...
\n","

7600 rows × 2 columns

\n","
"],"text/plain":[" y text\n","0 Business Unions representing workers at Turner Newall...\n","1 Sci/Tech TORONTO, Canada A second team of rocketeer...\n","2 Sci/Tech A company founded by a chemistry researcher a...\n","3 Sci/Tech It's barely dawn when Mike Fitzpatrick starts...\n","4 Sci/Tech Southern California's smog fighting agency we...\n","... ... ...\n","7595 World Ukrainian presidential candidate Viktor Yushch...\n","7596 Sports With the supply of attractive pitching options...\n","7597 Sports Like Roger Clemens did almost exactly eight ye...\n","7598 Business SINGAPORE : Doctors in the United States have ...\n","7599 Business EBay plans to buy the apartment and home renta...\n","\n","[7600 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","By default, the Universal Sentence Encoder Embeddings (USE) are beeing downloaded to provide embeddings for the classifier. You can use any of the 50+ other sentence Emeddings in NLU tough!\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":501},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1607912857369,"user_tz":-60,"elapsed":332946,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"8bce881e-edb7-4d2b-cf61-b9f26a05ea4b"},"source":["# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# Since there are no\n","fitted_pipe = nlu.load('train.classifier').fit(train_df)\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df)\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ydefault_name_embeddingstextsentencecategory_confidencecategory
origin_index
0Business[0.012997539713978767, 0.019844762980937958, -...Unions representing workers at Turner Newall...Unions representing workers at Turner Newall s...0.999985Business
1Sci/Tech[0.023022323846817017, -0.01595703884959221, -...TORONTO, Canada A second team of rocketeer...TORONTO, Canada A second team of rocketeers co...1.000000Sports
1Sci/Tech[-0.010587693192064762, 0.011531050316989422, ...TORONTO, Canada A second team of rocketeer...10 million Ansari X Prize, a contest for priva...1.000000Sports
2Sci/Tech[0.038641855120658875, 0.02322080172598362, -0...A company founded by a chemistry researcher a...A company founded by a chemistry researcher at...0.744563Business
3Sci/Tech[-0.006857294123619795, 0.01967567577958107, -...It's barely dawn when Mike Fitzpatrick starts...It's barely dawn when Mike Fitzpatrick starts ...0.999360Sci/Tech
.....................
7596Sports[0.005107458680868149, -0.011805553920567036, ...With the supply of attractive pitching options....1.000000Sports
7596Sports[0.005107458680868149, -0.011805553920567036, ...With the supply of attractive pitching options....2.000000Sports
7597Sports[0.044696468859910965, 0.0015660696662962437, ...Like Roger Clemens did almost exactly eight ye...Like Roger Clemens did almost exactly eight ye...1.000000Sports
7598Business[0.05564942583441734, -0.021285761147737503, -...SINGAPORE : Doctors in the United States have ...SINGAPORE : Doctors in the United States have ...0.999433Business
7599Business[0.08172684907913208, -0.013251541182398796, -...EBay plans to buy the apartment and home renta...EBay plans to buy the apartment and home renta...0.820492Business
\n","

14399 rows × 6 columns

\n","
"],"text/plain":[" y ... category\n","origin_index ... \n","0 Business ... Business\n","1 Sci/Tech ... Sports\n","1 Sci/Tech ... Sports\n","2 Sci/Tech ... Business\n","3 Sci/Tech ... Sci/Tech\n","... ... ... ...\n","7596 Sports ... Sports\n","7596 Sports ... Sports\n","7597 Sports ... Sports\n","7598 Business ... Business\n","7599 Business ... Business\n","\n","[14399 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"DL_5aY9b3jSd"},"source":["# 4. Evaluate the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"djtoZVKBw2WU","executionInfo":{"status":"ok","timestamp":1607912858793,"user_tz":-60,"elapsed":334365,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"c41b52d9-2a4b-47ee-92e8-758399ef45cc"},"source":["from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," Business 0.76 0.81 0.78 3671\n"," Sci/Tech 0.80 0.79 0.79 3983\n"," Sports 0.86 0.92 0.89 3687\n"," World 0.89 0.77 0.83 3058\n","\n"," accuracy 0.82 14399\n"," macro avg 0.83 0.82 0.82 14399\n","weighted avg 0.82 0.82 0.82 14399\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"mhFKVN93o1ZO"},"source":["# 5. Lets try different Sentence Emebddings"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"CzJd8omao0gt","executionInfo":{"status":"ok","timestamp":1607912858794,"user_tz":-60,"elapsed":334358,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"8021f8c3-d711-4d06-d184-88df1a29441e"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ABHLgirmG1n9","executionInfo":{"status":"ok","timestamp":1607918642391,"user_tz":-60,"elapsed":6117950,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"fcc6f823-4332-471f-c2dc-201916ef1b97"},"source":["# Load pipe with bert embeds\n","# using large embeddings can take a few hours..\n","# fitted_pipe = nlu.load('en.embed_sentence.bert_large_uncased train.classifier').fit(train_df)\n","fitted_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.classifier').fit(train_df)\n","\n","\n","# predict with the trained pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df)\n","from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," Business 0.00 0.00 0.00 1900\n"," Sci/Tech 0.25 1.00 0.40 1900\n"," Sports 0.00 0.00 0.00 1900\n"," World 0.00 0.00 0.00 1900\n","\n"," accuracy 0.25 7600\n"," macro avg 0.06 0.25 0.10 7600\n","weighted avg 0.06 0.25 0.10 7600\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nbpdZGoZPslz","executionInfo":{"status":"ok","timestamp":1607918778139,"user_tz":-60,"elapsed":6253693,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"1dcc8aa9-fd89-4b7a-d78d-c641c09f67d6"},"source":["# Load pipe with bert embeds\n","fitted_pipe = nlu.load('embed_sentence.bert train.classifier').fit(train_df)\n","\n","# predict with the trained pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df)\n","from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L2_128 download started this may take some time.\n","Approximate size to download 16.1 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," Business 0.81 0.74 0.77 1900\n"," Sci/Tech 0.74 0.87 0.80 1900\n"," Sports 0.92 0.94 0.93 1900\n"," World 0.91 0.81 0.86 1900\n","\n"," accuracy 0.84 7600\n"," macro avg 0.85 0.84 0.84 7600\n","weighted avg 0.85 0.84 0.84 7600\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1607918802363,"user_tz":-60,"elapsed":6277910,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"79c442f9-959e-4b14-ae85-6ef9f654f297"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":128},"executionInfo":{"status":"ok","timestamp":1607918809822,"user_tz":-60,"elapsed":6285365,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"f755aaa0-974c-4c6f-c079-0f3d681dbc82"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('Tesla plans to invest 10M into the ML sector')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
classifier_confidencedocumentclassifierembed_sentence_bert_embeddings
origin_index
00.997592Tesla plans to invest 10M into the ML sectorBusiness[-0.07111635059118271, 0.9532930850982666, -1....
\n","
"],"text/plain":[" classifier_confidence ... embed_sentence_bert_embeddings\n","origin_index ... \n","0 0.997592 ... [-0.07111635059118271, 0.9532930850982666, -1....\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1607918809824,"user_tz":-60,"elapsed":6285363,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"5e8b8c8a-5cd1-4d20-bde2-a4003d5687d0"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(128) | Info: Number of embedding dimensions | Currently set to : 128\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L2_128') | Info: unique reference name for identification | Currently set to : sent_small_bert_L2_128\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['World', 'Sci/Tech', 'Sports', 'Business']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['World', 'Sci/Tech', 'Sports', 'Business']\n","pipe['classifier_dl'].setStorageRef('sent_small_bert_L2_128') | Info: unique reference name for identification | Currently set to : sent_small_bert_L2_128\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"M1LjAwJVJxun"},"source":[""],"execution_count":null,"outputs":[]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_class_text_classifier_demo.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo.ipynb)\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu > /dev/null pyspark==2.4.7\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download news classification dataset"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614563561978,"user_tz":-300,"elapsed":56441,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"e9e6f7f8-2bae-471e-8e52-129be76b148d"},"source":["! wget https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_train.csv\n","! wget https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_test.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-03-01 01:51:28-- https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_train.csv\n","Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.98.139\n","Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.98.139|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 24032125 (23M) [text/csv]\n","Saving to: ‘news_category_train.csv’\n","\n","news_category_train 100%[===================>] 22.92M 50.0MB/s in 0.5s \n","\n","2021-03-01 01:51:28 (50.0 MB/s) - ‘news_category_train.csv’ saved [24032125/24032125]\n","\n","--2021-03-01 01:51:28-- https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/resources/en/classifier-dl/news_Category/news_category_test.csv\n","Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.98.139\n","Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.98.139|:443... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 1504408 (1.4M) [text/csv]\n","Saving to: ‘news_category_test.csv’\n","\n","news_category_test. 100%[===================>] 1.43M 6.82MB/s in 0.2s \n","\n","2021-03-01 01:51:29 (6.82 MB/s) - ‘news_category_test.csv’ saved [1504408/1504408]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614563562784,"user_tz":-300,"elapsed":57231,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"ce49fae7-0be7-47c7-9ee4-ba1a495fbe4e"},"source":["import pandas as pd\n","test_path = '/content/news_category_test.csv'\n","train_df = pd.read_csv(test_path)\n","train_df.columns=['y','text']\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
989Sci/TechBy acquiring KVault, which makes e-mail-archiv...
6701Sci/TechEarly next year, the computer maker will begin...
5384Worldquot;Aeolus was keeper of the winds. He gave ...
1309SportsA late rally gave the San Diego Padres a rar...
4043SportsAs happy as Utah coach Urban Meyer was to hea...
.........
6925BusinessCola has decided not to sell its C2 brand in t...
3688Worldseeded Ivan Ljubicic of Croatia beat Victor Ha...
5132Sci/TechA zoo in the Gulf has bred a bird which is thr...
6058WorldThe 150 brokers and traders on the Iraq Stock ...
2846WorldTammy Hough is a life long Republican, a soci...
\n","

6080 rows × 2 columns

\n","
"],"text/plain":[" y text\n","989 Sci/Tech By acquiring KVault, which makes e-mail-archiv...\n","6701 Sci/Tech Early next year, the computer maker will begin...\n","5384 World quot;Aeolus was keeper of the winds. He gave ...\n","1309 Sports A late rally gave the San Diego Padres a rar...\n","4043 Sports As happy as Utah coach Urban Meyer was to hea...\n","... ... ...\n","6925 Business Cola has decided not to sell its C2 brand in t...\n","3688 World seeded Ivan Ljubicic of Croatia beat Victor Ha...\n","5132 Sci/Tech A zoo in the Gulf has bred a bird which is thr...\n","6058 World The 150 brokers and traders on the Iraq Stock ...\n","2846 World Tammy Hough is a life long Republican, a soci...\n","\n","[6080 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","By default, the Universal Sentence Encoder Embeddings (USE) are beeing downloaded to provide embeddings for the classifier. You can use any of the 50+ other sentence Emeddings in NLU tough!\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":671},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614563790900,"user_tz":-300,"elapsed":285335,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"d0507200-05ac-450e-ecb0-01f5650fedd8"},"source":["# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# Since there are no\n","fitted_pipe = nlu.load('train.classifier').fit(train_df)\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df)\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencesentencedefault_name_embeddingstexty
origin_index
989Sci/Tech1.000000By acquiring KVault, which makes e-mail-archiv...[0.07190942019224167, -0.05929875373840332, -0...By acquiring KVault, which makes e-mail-archiv...Sci/Tech
989Sci/Tech1.000000s lead and rebuild investors #39;[0.053723689168691635, 0.019650151953101158, -...By acquiring KVault, which makes e-mail-archiv...Sci/Tech
989Sci/Tech1.000000confidence.[0.022217048332095146, -0.02411036007106304, -...By acquiring KVault, which makes e-mail-archiv...Sci/Tech
6701Sci/Tech1.000000Early next year, the computer maker will begin...[0.04153631627559662, -0.016046393662691116, -...Early next year, the computer maker will begin...Sci/Tech
5384Business0.611293quot;[0.05674704536795616, 0.05588801950216293, -0....quot;Aeolus was keeper of the winds. He gave ...World
.....................
3688Sports1.000000seeded Ivan Ljubicic of Croatia beat Victor Ha...[0.045119430869817734, -0.06392733752727509, -...seeded Ivan Ljubicic of Croatia beat Victor Ha...World
5132Sci/Tech0.998652A zoo in the Gulf has bred a bird which is thr...[0.06242712214589119, -0.05575601011514664, -0...A zoo in the Gulf has bred a bird which is thr...Sci/Tech
6058Business0.999789The 150 brokers and traders on the Iraq Stock ...[-0.03430037200450897, 0.03404074162244797, -0...The 150 brokers and traders on the Iraq Stock ...World
2846World0.996201Tammy Hough is a life long Republican, a socia...[-0.04292772337794304, 0.02602585218846798, -0...Tammy Hough is a life long Republican, a soci...World
2846World0.996201But she's not so sure.[0.03599904477596283, 0.003016551723703742, -0...Tammy Hough is a life long Republican, a soci...World
\n","

11480 rows × 6 columns

\n","
"],"text/plain":[" category ... y\n","origin_index ... \n","989 Sci/Tech ... Sci/Tech\n","989 Sci/Tech ... Sci/Tech\n","989 Sci/Tech ... Sci/Tech\n","6701 Sci/Tech ... Sci/Tech\n","5384 Business ... World\n","... ... ... ...\n","3688 Sports ... World\n","5132 Sci/Tech ... Sci/Tech\n","6058 Business ... World\n","2846 World ... World\n","2846 World ... World\n","\n","[11480 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"DL_5aY9b3jSd"},"source":["# 4. Evaluate the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"djtoZVKBw2WU","executionInfo":{"status":"ok","timestamp":1614563791442,"user_tz":-300,"elapsed":285867,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"53373fa3-d843-43a9-99fd-b6cbfd6f31cf"},"source":["from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," Business 0.72 0.84 0.77 2941\n"," Sci/Tech 0.81 0.78 0.79 3179\n"," Sports 0.91 0.88 0.89 2848\n"," World 0.88 0.79 0.83 2512\n","\n"," accuracy 0.82 11480\n"," macro avg 0.83 0.82 0.82 11480\n","weighted avg 0.83 0.82 0.82 11480\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"mhFKVN93o1ZO"},"source":["# 5. Lets try different Sentence Emebddings"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"CzJd8omao0gt","executionInfo":{"status":"ok","timestamp":1614563791443,"user_tz":-300,"elapsed":285857,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"ff9edbfd-2882-4989-c869-8c58b3da0120"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ABHLgirmG1n9","executionInfo":{"status":"ok","timestamp":1614568520891,"user_tz":-300,"elapsed":3997133,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"b7d059b2-51b5-460f-ef2c-494ceec1985d"},"source":["# Load pipe with bert embeds\n","# using large embeddings can take a few hours..\n","# fitted_pipe = nlu.load('en.embed_sentence.bert_large_uncased train.classifier').fit(train_df)\n","fitted_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.classifier').fit(train_df)\n","\n","\n","# predict with the trained pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df)\n","from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," Business 0.00 0.00 0.00 1518\n"," Sci/Tech 0.25 1.00 0.40 1515\n"," Sports 0.00 0.00 0.00 1489\n"," World 0.00 0.00 0.00 1558\n","\n"," accuracy 0.25 6080\n"," macro avg 0.06 0.25 0.10 6080\n","weighted avg 0.06 0.25 0.10 6080\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nbpdZGoZPslz","executionInfo":{"status":"ok","timestamp":1614568636958,"user_tz":-300,"elapsed":116078,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"05191e5e-7eea-4e38-f288-23b3adf01234"},"source":["# Load pipe with bert embeds\n","fitted_pipe = nlu.load('embed_sentence.bert train.classifier').fit(train_df)\n","\n","# predict with the trained pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df)\n","from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L2_128 download started this may take some time.\n","Approximate size to download 16.1 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," Business 0.69 0.87 0.77 1518\n"," Sci/Tech 0.84 0.73 0.78 1515\n"," Sports 0.93 0.93 0.93 1489\n"," World 0.91 0.80 0.85 1558\n","\n"," accuracy 0.83 6080\n"," macro avg 0.84 0.83 0.83 6080\n","weighted avg 0.84 0.83 0.83 6080\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 5.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614568659263,"user_tz":-300,"elapsed":22318,"user":{"displayName":"Gammer Otaku","photoUrl":"","userId":"18042713576744284398"}},"outputId":"790414af-e841-48f1-c3fa-613404f5a867"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['category']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," Business 0.68 0.87 0.76 382\n"," Sci/Tech 0.84 0.71 0.77 385\n"," Sports 0.92 0.91 0.91 411\n"," World 0.91 0.78 0.84 342\n","\n"," accuracy 0.82 1520\n"," macro avg 0.83 0.82 0.82 1520\n","weighted avg 0.83 0.82 0.82 1520\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 6. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1607918802363,"user_tz":-60,"elapsed":6277910,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"79c442f9-959e-4b14-ae85-6ef9f654f297"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 7. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":128},"executionInfo":{"status":"ok","timestamp":1607918809822,"user_tz":-60,"elapsed":6285365,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"f755aaa0-974c-4c6f-c079-0f3d681dbc82"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('Tesla plans to invest 10M into the ML sector')\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Fitting on empty Dataframe, could not infer correct training method!\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
classifier_confidencedocumentclassifierembed_sentence_bert_embeddings
origin_index
00.997592Tesla plans to invest 10M into the ML sectorBusiness[-0.07111635059118271, 0.9532930850982666, -1....
\n","
"],"text/plain":[" classifier_confidence ... embed_sentence_bert_embeddings\n","origin_index ... \n","0 0.997592 ... [-0.07111635059118271, 0.9532930850982666, -1....\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1607918809824,"user_tz":-60,"elapsed":6285363,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"5e8b8c8a-5cd1-4d20-bde2-a4003d5687d0"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(128) | Info: Number of embedding dimensions | Currently set to : 128\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L2_128') | Info: unique reference name for identification | Currently set to : sent_small_bert_L2_128\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['World', 'Sci/Tech', 'Sports', 'Business']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['World', 'Sci/Tech', 'Sports', 'Business']\n","pipe['classifier_dl'].setStorageRef('sent_small_bert_L2_128') | Info: unique reference name for identification | Currently set to : sent_small_bert_L2_128\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"M1LjAwJVJxun"},"source":[""],"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo_amazon.ipynb b/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo_amazon.ipynb index 8255e3ed..4d44817d 100644 --- a/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo_amazon.ipynb +++ b/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo_amazon.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_class_text_classifier_demo_amazon.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo_amazon.ipynb)\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","## 3 class Amazon Phone review classifier training]\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Amazon Unlocked mobile phones dataset \n","https://www.kaggle.com/PromptCloudHQ/amazon-reviews-unlocked-mobile-phones\n","\n","dataset with unlocked mobile phone reviews in 5 review classes\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1610787546042,"user_tz":-300,"elapsed":3459,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ca2d6419-7d62-400b-d3d7-9b16fa9bce2c"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/Amazon_Unlocked_Mobile.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-01-16 08:58:27-- http://ckl-it.de/wp-content/uploads/2021/01/Amazon_Unlocked_Mobile.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 452621 (442K) [text/csv]\n","Saving to: ‘Amazon_Unlocked_Mobile.csv’\n","\n","Amazon_Unlocked_Mob 100%[===================>] 442.01K 308KB/s in 1.4s \n","\n","2021-01-16 08:58:29 (308 KB/s) - ‘Amazon_Unlocked_Mobile.csv’ saved [452621/452621]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1610787551525,"user_tz":-300,"elapsed":1188,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dfe55b6f-f33a-4bd2-a2ba-5b1a306e1ab4"},"source":["import pandas as pd\n","test_path = '/content/Amazon_Unlocked_Mobile.csv'\n","train_df = pd.read_csv(test_path,sep=\",\")\n","cols = [\"y\",\"text\"]\n","train_df = train_df[cols]\n","train_df\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
0poorBought it, turned it on, did not work. Opened ...
1averageCurrently it is 2014, the 3gs is discontinued....
2good100% recomendado
3averageIt's a good phone but if you use it to browse ...
4averageIt's nice that this phone has LTE and it funct...
.........
1495poorNot happy with this phone. Not able to get but...
1496goodgreat phablet for all general uses
1497poorHate this phone had it for one day
1498goodGreat cheap phone.
1499goodVery good
\n","

1500 rows × 2 columns

\n","
"],"text/plain":[" y text\n","0 poor Bought it, turned it on, did not work. Opened ...\n","1 average Currently it is 2014, the 3gs is discontinued....\n","2 good 100% recomendado\n","3 average It's a good phone but if you use it to browse ...\n","4 average It's nice that this phone has LTE and it funct...\n","... ... ...\n","1495 poor Not happy with this phone. Not able to get but...\n","1496 good great phablet for all general uses\n","1497 poor Hate this phone had it for one day\n","1498 good Great cheap phone.\n","1499 good Very good\n","\n","[1500 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":501},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1609621542716,"user_tz":-300,"elapsed":207913,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d0eb19cc-8849-43f7-9cdf-a88fd8f11676"},"source":["# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# Since there are no\n","\n","trainable_pipe = nlu.load('train.classifier')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50] )\n","\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50] )\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextcategorydefault_name_embeddingscategory_confidencesentence
origin_index
0poorBought it, turned it on, did not work. Opened ...average[0.020834514871239662, 0.03326118737459183, -0...0.763940Bought it, turned it on, did not work.
0poorBought it, turned it on, did not work. Opened ...average[0.030574046075344086, -0.009678893722593784, ...1.000000Opened up the back, made sure it was in right,...
0poorBought it, turned it on, did not work. Opened ...average[0.023421283811330795, 0.02294657751917839, -0...2.000000It was supposed to be new, but i it was used.
0poorBought it, turned it on, did not work. Opened ...average[0.06009713560342789, 0.046434734016656876, -0...3.000000Found scratches on cover.
1averageCurrently it is 2014, the 3gs is discontinued....average[0.04893391206860542, -0.010221654549241066, -...0.631228Currently it is 2014, the 3gs is discontinued.
.....................
47goodBought for my mom! She loves it!good[0.021471485495567322, -0.027823669835925102, ...0.656713Bought for my mom!
47goodBought for my mom! She loves it!good[0.0001737327256705612, -0.014630521647632122,...1.000000She loves it!
48goodGave the phone as a birthday gift. My friend s...good[0.03572574257850647, 0.013357092626392841, -0...0.701626Gave the phone as a birthday gift.
48goodGave the phone as a birthday gift. My friend s...good[0.08371475338935852, -0.01581401191651821, -0...1.000000My friend seems happy with it so far.
49goodGreat Productgood[0.03334435820579529, -0.05353177338838577, -0...0.593622Great Product
\n","

215 rows × 6 columns

\n","
"],"text/plain":[" y ... sentence\n","origin_index ... \n","0 poor ... Bought it, turned it on, did not work.\n","0 poor ... Opened up the back, made sure it was in right,...\n","0 poor ... It was supposed to be new, but i it was used.\n","0 poor ... Found scratches on cover.\n","1 average ... Currently it is 2014, the 3gs is discontinued.\n","... ... ... ...\n","47 good ... Bought for my mom!\n","47 good ... She loves it!\n","48 good ... Gave the phone as a birthday gift.\n","48 good ... My friend seems happy with it so far.\n","49 good ... Great Product\n","\n","[215 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1609621546162,"user_tz":-300,"elapsed":211344,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5dc268e6-e97f-4378-85d1-8319d3f7893f"},"source":["fitted_pipe.predict(\"It worked perfectly .\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydefault_name_embeddingscategory_confidencesentence
origin_index
0average[0.06468033790588379, -0.040837567299604416, -...0.460187Bitcoin is going to the moon!
\n","
"],"text/plain":[" category ... sentence\n","origin_index ... \n","0 average ... Bitcoin is going to the moon!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1609621546165,"user_tz":-300,"elapsed":211336,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c0633c00-9bfd-412b-ee55-0f6e5b150f39"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setMaxEpochs(3) | Info: Maximum number of epochs to train | Currently set to : 3\n","pipe['classifier_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['classifier_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['classifier_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['classifier_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":620},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1609621557024,"user_tz":-300,"elapsed":222179,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"12b53152-fcdf-4180-91b8-cc150e5bb23a"},"source":["# Train longer!\n","trainable_pipe['classifier_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:100])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.00 0.00 0.00 29\n"," good 0.65 0.94 0.77 32\n"," poor 0.69 0.95 0.80 39\n","\n"," accuracy 0.67 100\n"," macro avg 0.45 0.63 0.52 100\n","weighted avg 0.48 0.67 0.56 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytextdocumentcategorydefault_name_embeddingscategory_confidence
origin_index
0poorBought it, turned it on, did not work. Opened ...Bought it, turned it on, did not work. Opened ...poor[0.059367865324020386, 0.05043933913111687, -0...0.952295
1averageCurrently it is 2014, the 3gs is discontinued....Currently it is 2014, the 3gs is discontinued....good[0.0046275281347334385, 0.012452688068151474, ...0.396265
2good100% recomendado100% recomendadogood[0.008266163989901543, 0.00396152026951313, -0...0.773682
3averageIt's a good phone but if you use it to browse ...It's a good phone but if you use it to browse ...poor[0.05291805788874626, 0.002292224671691656, -0...0.506015
4averageIt's nice that this phone has LTE and it funct...It's nice that this phone has LTE and it funct...good[0.03426238149404526, -0.024366019293665886, -...0.648859
.....................
95poorHola, compramos dos teléfonos y vienieron tot...Hola, compramos dos teléfonos y vienieron tot...poor[0.06324272602796555, -0.06387951225042343, -0...0.790492
96goodExcelenteExcelentegood[0.03246314451098442, -0.01719777286052704, -0...0.813424
97poorthe product is good but the English language s...the product is good but the English language s...poor[0.056343767791986465, -0.016822000965476036, ...0.940151
98poorSupposed to be a brand new unlock phone. The p...Supposed to be a brand new unlock phone. The p...poor[0.03210984170436859, 0.018154876306653023, -0...0.984983
99averageMinor, very annoying glitch when texting. Not ...Minor, very annoying glitch when texting. Not ...poor[-0.026854539290070534, 0.03769969940185547, 0...0.969512
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" y ... category_confidence\n","origin_index ... \n","0 poor ... 0.952295\n","1 average ... 0.396265\n","2 good ... 0.773682\n","3 average ... 0.506015\n","4 average ... 0.648859\n","... ... ... ...\n","95 poor ... 0.790492\n","96 good ... 0.813424\n","97 poor ... 0.940151\n","98 poor ... 0.984983\n","99 average ... 0.969512\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["# Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609621557034,"user_tz":-300,"elapsed":222174,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1a690639-c397-4ced-c222-981776472766"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"IKK_Ii_gjJfF","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609622725629,"user_tz":-300,"elapsed":1390760,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9e8f7464-0bca-4a03-9212-2ab8ccb8f319"},"source":["from sklearn.metrics import classification_report\n","trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.classifier')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['classifier_dl'].setMaxEpochs(90) \n","trainable_pipe['classifier_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","#preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," average 0.72 0.67 0.69 500\n"," good 0.85 0.87 0.86 500\n"," poor 0.78 0.83 0.80 500\n","\n"," accuracy 0.79 1500\n"," macro avg 0.78 0.79 0.79 1500\n","weighted avg 0.78 0.79 0.79 1500\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609622897186,"user_tz":-300,"elapsed":1562308,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a3175762-9ea0-472e-a8bf-0a64fd1176c9"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":111},"executionInfo":{"status":"ok","timestamp":1609622933158,"user_tz":-300,"elapsed":1598267,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a40c74fc-c2f1-4a58-ba4e-5d1e21e39da3"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('It worked perfectly.')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
classifier_confidencedocumenten_embed_sentence_small_bert_L12_768_embeddingsclassifier
origin_index
00.950214It worked perfectly.[0.275971919298172, 0.4924655854701996, 0.2755...good
\n","
"],"text/plain":[" classifier_confidence ... classifier\n","origin_index ... \n","0 0.950214 ... good\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609622963569,"user_tz":-300,"elapsed":903,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"662a1dc1-b3fc-4137-b95a-8d7f38326fd5"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['average', 'poor', 'good']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['average', 'poor', 'good']\n","pipe['classifier_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_class_text_classifier_demo_amazon.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_class_text_classification/NLU_training_multi_class_text_classifier_demo_amazon.ipynb)\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","## 3 class Amazon Phone review classifier training]\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n","\n","\n","You can achieve these results or even better on this dataset with training data:\n","\n","\n","\n","
\n","\n","![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtIAAAD2CAYAAAD7yGCjAAAgAElEQVR4Ae2d+68VxZq/v/+KP5gYww9kYgwxBggRMoRLIBIhnEAUEy6RyxgCCig6ymGAhJsDw1EHhghKkMBRFFRGwMtBDQiEABJAQS7hLhwQBYlY3zzlvItatarXWt1rbdh7r08l0L26q6urn6q36lNvVff+f05BBERABERABERABERABEQgN4H/l/sKXSACIiACIiACIiACIiACIuAkpFUJRKCTEbh06ZJ78sknXZ8+fdyRI0ea+nS//vqre/75593DDz/sduzY0dS0lZgIiIAIiIAIdDQCEtIdrcSUXxGoQeCbb75x9913n//37rvv1oid7/TRo0fdo48+6tOeO3duvosVu0MSCOuT1SuOpQIDrUmTJpXqH/H5zfF7GW7cuOGWL1/u+vbtW5a3rOe4l3nVvUVABDoWAQnpjlVeyq0I1CQgj3RNRIqQg0BHF9K///67++tf/1omoLMGBLdv33bfffedGzdunLv//vtdsweiObArqgi0CYGvvvrKPf74427nzp1tkn4rJioh3YqlrmcWAREQgQIETFTX48k17/S99kjbLMpTTz3lTp065f7444+KJ0dAf/3112748OFlgltCugKVDnRwAtRpBpL12HAHf9S7ln0J6buGWjcSAREQgY5NoCMKacvz5s2bM+GfOHHC9erVy3uhZ86c6V577TUvNiSkM5HpRAclICHd/IKTkG4+U6XYgQlcvnzZDR482C1dutSdPn3aTZs2zXXt2tU98MADbuLEif5Y+Hjm7aJx+uWXX9yyZcv8i3hMCzM9TBpxoNO2dPEMDBgwwG3fvt3hFUuFixcvugULFrju3bv7zp0X/bgP9wuDNZA2bc1aZvKXFVg3um7dOn9/ruE5ecbUC4omRixtttU8Gr/99pvbuHFjKW34jRo1yu3bt6/MI2heS9Zb85yvvvqqzwf8Ro4cmcxL1vO09+M8I3Xrp59+8hx4Pp7zkUcecevXr3csQQhDzJDygQ+cUoH688UXX3hu8DaGMXOupZ6//vrrpTXDxCc/XJ9VD7nO6kG1sre8Wdnea490PXmGNeLZWJktsW1WwK5Cu2e99jvvvOOww1So1+7xsO/fv9+3N5Qjtkna2DbPFQZr36iLnCMOAwiuwRtPOnGwfNDuEI/4qbTj6+71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5nOBcVmmRF0cn3LljwJR38J6iwea2QxbN2plQ7znn3++bI20lU98//B3WPZWZuH5cP9edNaWp7D+x3WnnudMMY/TyfrN5x5ZYmEvd1I2DHyy/gBOvXbP/RDTeIz5VjHijH/M+qTStnYiZW9Zecdm+e50SlBXY5qV3t04znOGf3AIJvCBU+jRtbxgO6xdxxaIS9nwNSOeL26XU0IaG43bZNI23qENcI+s/oRr+CNeIW+4p9pl4uZtU+x5mbWK+6B7YZuWn46+lZDu6CWo/DeVgDV8jXSaTc2QEhMBERABEWg3BBDSsbjOypz6kywyneu4hHTnKk89TYME1PA1CFCXi4AIiEAnJiAh3YkLt+CjSUgXBKfLOicBCenOWa56KhEQARFoBgEJ6WZQ7FxpSEh3rvLU0zRIQEK6QYC6XAREQAQ6MQEJ6U5cuAUfTUK6IDhdJgIiIAIiIAIiIAIi0NoEJKRbu/z19CIgAiIgAiIgAiIgAgUJSEgXBKfLREAEREAEREAEREAEWpuAhHRrl7+eXgREQAREQAREQAREoCABCemC4HSZCIiACIiACIiACIhAaxOQkG7t8tfTi4AIiIAIiIAIiIAIFCQgIV0QnC4TAREQAREQAREQARFobQIS0q1d/np6ERABERABERABERCBggQkpAuC02UiIAIiIAIiIAIiIAKtTUBCurXLX08vAiIgAiIgAiIgAiJQkICEdEFwukwEREAEREAEREAERKC1CUhIt3b56+lFQAREQAREQAREQAQKEpCQLghOl4mACIiACIiACIiACLQ2AQnp1i5/Pb0IiIAIiIAIiIAIiEBBAhLSBcHpMhEQAREQAREQAREQgdYmICHd2uWvpxcBERABERABERABEShIQEK6IDhdJgIiIAIiIAIiIAIi0NoEJKRbu/z19CIgAiIgAiIgAiIgAgUJSEgXBKfLREAEREAEREAEREAEWpuAhHRrl7+eXgREQAREQAREQAREoCABCemC4HSZCIiACIiACIiACIhAaxOQkG7t8tfTi4AIiIAIiIAIiIAIFCQgIV0QnC4TAREQAREQAREQARFobQIS0q1d/np6ERABERABERABERCBggQkpAuC02UiIAIiIAIiIAIiIAKtTUBCurXLX08vAiIgAiIgAiIgAiJQkICEdEFwukwEREAEREAEREAERKC1CUhIt3b56+lF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REAEREAERKAWAQnpWoR0XgREQAREQAREQAREQAQSBCSkE1B0SAREQAREQAREQAREQARqEZCQrkVI50VABERABERABERABEQgQUBCOgFFh0RABERABERABERABESgFgEJ6VqEdF4EREAEREAEREAEREAEEgQkpBNQdEgEREAEREAEREAEREAEahGQkK5FSOdFQAREQAREQAREQAREIEFAQjoBRYdEQAREQAREQAREQAREoBYBCelahHReBERABERABERABERABBIEJKQTUHRIBERABERABERABERABGoRkJCuRUjnRUAEREAEREAEREAERCBBQEI6AUWHREAEREAEREAEREAERKAWAQnpWoR0XgREQAREQAREQAREQAQSBCSkE1B0SAREQAREQAREQAREQARqEZCQrkVI50VABERABERABERABEQgQUBCOgFFh0RABERABERABERABESgFgEJ6VqEdF4EREAEREAEREAEREAEEgQkpBNQdEgEREAEREAEREAEREAEahGQkK5FSOdFQAREQAREQAREQAREIEFAQjoBRYdEQAREQAREQAREQAREoBYBCelahHReBERABERABERABERABBIEJKQTUHRIBERABERABERABERABGoRkJCuRUjnRUAEREAEREAEREAERCBBQEI6AUWHREAEREAEREAEREAERKAWAQnpWoR0XgREQAREQAREQAREQAQSBCSkE1B0SAREQAREQAREQAREQARqEZCQrkVI50VABERABERABERABEQgQUBCOgFFh0RABERABERABERABESgFgEJ6VqEdF4EREAEREAEREAEREAEEgQkpBNQdEgEREAEREAEREAEREAEahGQkK5FSOdFQAREQAREQAREQAREIEFAQjoBRYdEQAREQAREQAREQAREoBYBCelahHReBERABERABERABERABBIEJKQTUHRIBERABERABO4Vgd9++81t3LjRDRgwwN13332ua9eubtq0ae706dOFs/Trr7+6SZMm+fRIM+vfN998U7rHH3/84fbv3+/GjRvnHnjgAXf//fe7xx9/3G3fvt3dvn27FE871QnA6rvvvvMcYfjuu+9mXnDx4kW3YMEC9/DDD/sy6tWrl1u+fLn75ZdfktecOHHC1w3qCGVKnaHu/P777xXxyccXX3zhhg8f7suSMqVsDx48WBFXB+on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WLLWjxecNHBpnLNSEAEREAEREAERaC4BCekET/srbDadEm/xVn/44YeJK3WoCIFaf8SBKWUGNSz/URABERABERABERCB9kJAQjpRErzNyifeWFLAOj8T0qzfZc0xa8wUmkcADzTftZw+fXrZenHY85UP1n6al7p5d1VKIiACIiACIiACItAYAQnpxvjpahEQAREQAREQAREQgRYlICHdogWvxxYBERABERABERABEWiMgIR0Y/x0tQiIgAiIgAiIgAiIQIsSkJBu0YLXY4uACIiACIiACIiACDRGQEK6MX66WgREQAREQAREQAREoEUJSEi3aMHrsUVABERABERABERABBojICHdGD9dLQIiIAIiIAIiIAIi0KIEJKRbtOD12CIgAiIgAiIgAiIgAo0RkJBujJ+uFgEREAEREAEREAERaFECEtItWvB6bBEQAREQAREQAREQgcYISEg3xk9Xi4AIiIAIiIAIiIAItCgBCekWLXg9tgiIgAiIgAiIgAiIQGMEJKQb46erRUAEREAEREAEREAEWpSAhHSLFrweWwREQAREQAREQAREoDECEtKN8dPVIiACIiACIiACIiACLUpAQrpFC16PLQIiIAIiIAIiIAIi0BgBCenG+OlqERABERABERABERCBFiXw/wHGGL2tDp4GOgAAAABJRU5ErkJggg==)\n","\n","\n","\n","\n","You can achieve these results or even better on this dataset with test data:\n","\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvkAAAETCAYAAACsixkBAAAgAElEQVR4Ae2d+88VRZ7/91/xBxNj+IFsjCGGACEDGcIlEIkQJjCKCZcosIaAcpF1EFkgAdSBZWZZWCIoAQIz4oDKKoIuSkAhBBgiKPdwVRkQBQlQ37zK7+dMnTrV5/7wnPP0uxLoPt3V1VWvT1fVuz5V3c+/OAUREAEREAEREAEREAEREIEuReBfulRpVBgREAEREAEREAEREAEREAEnka+HQAREQAREQAREQAREQAS6GAGJ/C5mUBVHBERABERABERABERABCTy9QyIgAiIgAiIgAiIgAiIQBcjIJHfxQyq4oiACIiACIiACIiACIiARL6eAREQAREQAREQAREQARHoYgQk8ruYQVUcERABERABERABERABEZDI1zMgAiIgAiIgAiIgAiIgAl2MgER+FzOoiiMCIiACIiACIiACIiACEvl6BkRABERABERABERABESgixGQyO9iBlVxREAEREAEREAEREAEREAiX8+ACHQSge+++849/fTTrn///u748eNNzcXPP//sXnrpJff444+7PXv2NDVtJSYCIiACIiACItD6BCTyW99GymEXJbB371730EMP+X8bN25sailPnDjhevbs6dNeuHBhU9NWYq1JIHye7LniWCowCJwyZUrh+SM+vznemeHWrVtu1apVbsCAAUV5yypHZ+ZV9xYBERCBVicgkd/qFlL+uiwBefK7rGk7pWDtLvLv3r3rXnvttSJxnzVYuXfvnvv73//uJk6c6B5++GHX7EFypxhQNxWBgMDnn3/unnzySbdv377gqHZFoDYCEvm18VJsERABEWh5Aib4q/GAm1e/sz35Nvv0zDPPuHPnzrn79++XcEbcf/HFF27UqFFFgwGJ/BJUOtDmBHimGeRWU4fbvKjKfgcSkMjvQLhKWgREQAQ6g0A7inzL8/bt2zORnTlzxvXt29d77+fMmePefPNNL4Qk8jOR6USbEpDIb1PDtVi2JfJbzCDKTnUEfvjhBzds2DC3fPlyd/78eTdjxgzXvXt398gjj7jJkyf7Y2FK5iWk4fzpp5/cihUr/EupTPUz5U8acUBQWLp4VAYPHuw++eQThzcxFa5eveqWLFnievXq5YUHL71yH+4XBmu8bSkCa+fJX1ZgnfKmTZv8/bmGclLG1Mu6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RUAEREAEREAERKBlCUjkt6xpOj5jtgwAkY9n4s6dO/6meB2+//57vyYQLwIehSwvY8fnUncQAREQAREQAREQARGolYBEfq3EulB8pv34ozcI+ax/Q4cOdadPn+5CpVZRREAEREAEREAERKDrE5DI7/o2LltC1pSyXp+/jMi6P8Q+7x/wByQBUKwAACAASURBVMDeeuutopf1yiakkyIgAiIgAiIgAiIgAi1DQCK/ZUyhjIiACIiACIiACIiACIhAcwhI5DeHo1IRAREQAREQAREQAREQgZYhIJHfMqZQRkRABERABERABERABESgOQQk8pvDUamIgAiIgAiIgAiIgAiIQMsQkMhvGVMoIyIgAiIgAiIgAiIgAiLQHAIS+c3hqFREQAREQAREQAREQAREoGUISOS3jCmUEREQAREQAREQAREQARFoDgGJ/OZwVCoiIAIiIAIiIAIiIAIi0DIEJPJbxhTtnZGNGzf6P6S1d+/e9i6Ici8CIiACIiACIiACXYCARH4XMGIrFEEiv+Os8Msvv7itW7e6wYMH+4FU9+7d3YwZM9z58+frvunPP//spkyZ4tPjrxxn/QsHbffv33eHDx92EydO9H8d2f4y8ieffOLu3btXd17yduGZM2e8/bAj3LEr9r17925DKMw+zz//vLO02fL76NGjJWnz165XrVrl+vbt6/Px+OOPuyVLlrirV6+WxNWBNIGOqJt2J7PPgAEDCvWTfWx269Yti1bYYjfshx15rrBrVtzCRdp5IARoHz/99FM3atQo/xfl+evyY8eOdYcOHXLU2ziY7VU3YzL6XSsBifxaiSl+koBEfhJLwwcREQsWLCh08qEYpwM4fvx4XfeoR+T/7W9/K4jHMB+I/U2bNiU7q7oy14UvOnLkiOvZs2fSnkuXLm1I6L///vt+8BXaxvYR+wcOHCiQPX36tBs6dGgyHwiR7777rhBXO2kCHVU3udu1a9fcs88+m7QPNp01a5bj/hYY8D/55JPJ+FOnTnWIRoXOIcDgncEW7aTVR9tSL/fs2VOUMdXNIhz60SABifwGAeryXwlI5HfMk7Bz507fOSC8vv32Wy+kb9y44ebPn+87jLizb0YubAAwYsQId+XKFZ/kpUuX3JAhQ1z//v3d/v37vRjFO8UgY/jw4d5riIdaIZsAdhs/frwX4uvWrfPeWBjCkwFbLMSz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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614564189229,"user_tz":-300,"elapsed":67595,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"fcf335a0-c53d-409a-832e-7fdb1e54da39"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 67kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 17.7MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=90dbb9e58f0f2c2d84f268ee8dd9f2f6334927c1a225a2bb63a9208d3133b1ae\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Amazon Unlocked mobile phones dataset \n","https://www.kaggle.com/PromptCloudHQ/amazon-reviews-unlocked-mobile-phones\n","\n","dataset with unlocked mobile phone reviews in 5 review classes\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614564189976,"user_tz":-300,"elapsed":68325,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d3605fca-f1df-43b3-9f52-0e2b96fdcdcb"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/01/Amazon_Unlocked_Mobile.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-03-01 02:01:56-- http://ckl-it.de/wp-content/uploads/2021/01/Amazon_Unlocked_Mobile.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 452621 (442K) [text/csv]\n","Saving to: ‘Amazon_Unlocked_Mobile.csv’\n","\n","Amazon_Unlocked_Mob 100%[===================>] 442.01K 817KB/s in 0.5s \n","\n","2021-03-01 02:01:57 (817 KB/s) - ‘Amazon_Unlocked_Mobile.csv’ saved [452621/452621]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":415},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614564190392,"user_tz":-300,"elapsed":68732,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"793154b5-f762-4ec4-d9d5-5b93b1a71b00"},"source":["import pandas as pd\n","test_path = '/content/Amazon_Unlocked_Mobile.csv'\n","train_df = pd.read_csv(test_path,sep=\",\")\n","cols = [\"y\",\"text\"]\n","train_df = train_df[cols]\n","from sklearn.model_selection import train_test_split\n","\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
1040goodNice phone. Easy to read screen. I am a senior...
157goodJust as promised. This a great SmartPhone. Ver...
331averageIt'sn a powerfull phone.
842good1- the manual don`t have english.just it. I li...
766averagethe iphone is good! but i have an issue the he...
.........
1307goodthis phone met all our expectations, my dad lo...
1396averageBy mistake, I bought a wrong iPhone. It can no...
538averageA nice inexpensive phone (in its day) bought u...
1460goodExcellent phone!
1352averageGood
\n","

1200 rows × 2 columns

\n","
"],"text/plain":[" y text\n","1040 good Nice phone. Easy to read screen. I am a senior...\n","157 good Just as promised. This a great SmartPhone. Ver...\n","331 average It'sn a powerfull phone.\n","842 good 1- the manual don`t have english.just it. I li...\n","766 average the iphone is good! but i have an issue the he...\n","... ... ...\n","1307 good this phone met all our expectations, my dad lo...\n","1396 average By mistake, I bought a wrong iPhone. It can no...\n","538 average A nice inexpensive phone (in its day) bought u...\n","1460 good Excellent phone!\n","1352 average Good\n","\n","[1200 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":671},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614564324507,"user_tz":-300,"elapsed":202824,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"56b20328-bda0-4167-8194-bd137d2e0f89"},"source":["# load a trainable pipeline by specifying the train. prefix and fit it on a datset with label and text columns\n","# Since there are no\n","\n","trainable_pipe = nlu.load('train.classifier')\n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:50] )\n","\n","\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:50] )\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["tfhub_use download started this may take some time.\n","Approximate size to download 923.7 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textcategory_confidenceysentencecategorydefault_name_embeddings
origin_index
1040Nice phone. Easy to read screen. I am a senior...0.898174goodNice phone.good[0.013208696618676186, -0.07603943347930908, -...
1040Nice phone. Easy to read screen. I am a senior...0.898174goodEasy to read screen.good[0.000669187749736011, -0.014507204294204712, ...
1040Nice phone. Easy to read screen. I am a senior...0.898174goodI am a senior and not a tech so the learning c...good[-0.007202684413641691, 0.02755507454276085, -...
1040Nice phone. Easy to read screen. I am a senior...0.898174goodThe support at Jethro, however, made it easy.good[0.05683695524930954, 0.025926098227500916, -0...
1040Nice phone. Easy to read screen. I am a senior...0.898174goodThey were knowledgeable, easy to understand, p...good[-8.556042303098366e-05, 0.017817411571741104,...
.....................
402I bought it for my mom who is in her late 70s ...0.916765goodI wish it had an alarm.When it comes to \"senio...good[0.06437729299068451, -0.06652847677469254, -0...
402I bought it for my mom who is in her late 70s ...0.916765goodThis one is half the price of the old one and ...good[0.0695129781961441, 0.001408637617714703, -0....
402I bought it for my mom who is in her late 70s ...0.916765goodSince most seniors are hard of hearing, they r...good[0.019210360944271088, 0.07541776448488235, -0...
834good quality phone0.851306goodgood quality phonegood[0.044256918132305145, -0.012881082482635975, ...
594Excellent Product.0.989440goodExcellent Product.good[0.04413348436355591, -0.07214203476905823, -0...
\n","

169 rows × 6 columns

\n","
"],"text/plain":[" text ... default_name_embeddings\n","origin_index ... \n","1040 Nice phone. Easy to read screen. I am a senior... ... [0.013208696618676186, -0.07603943347930908, -...\n","1040 Nice phone. Easy to read screen. I am a senior... ... [0.000669187749736011, -0.014507204294204712, ...\n","1040 Nice phone. Easy to read screen. I am a senior... ... [-0.007202684413641691, 0.02755507454276085, -...\n","1040 Nice phone. Easy to read screen. I am a senior... ... [0.05683695524930954, 0.025926098227500916, -0...\n","1040 Nice phone. Easy to read screen. I am a senior... ... [-8.556042303098366e-05, 0.017817411571741104,...\n","... ... ... ...\n","402 I bought it for my mom who is in her late 70s ... ... [0.06437729299068451, -0.06652847677469254, -0...\n","402 I bought it for my mom who is in her late 70s ... ... [0.0695129781961441, 0.001408637617714703, -0....\n","402 I bought it for my mom who is in her late 70s ... ... [0.019210360944271088, 0.07541776448488235, -0...\n","834 good quality phone ... [0.044256918132305145, -0.012881082482635975, ...\n","594 Excellent Product. ... [0.04413348436355591, -0.07214203476905823, -0...\n","\n","[169 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"lVyOE2wV0fw_"},"source":["# 4. Test the fitted pipe on new example"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"qdCUg2MR0PD2","executionInfo":{"status":"ok","timestamp":1614564327393,"user_tz":-300,"elapsed":205697,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9f027cce-4780-4634-a283-2a83553390af"},"source":["fitted_pipe.predict(\"It worked perfectly .\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencesentencecategorydefault_name_embeddings
origin_index
00.939155It worked perfectly .good[0.016563203185796738, 0.002423828700557351, -...
\n","
"],"text/plain":[" category_confidence ... default_name_embeddings\n","origin_index ... \n","0 0.939155 ... [0.016563203185796738, 0.002423828700557351, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"xflpwrVjjBVD"},"source":["## 5. Configure pipe training parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UtsAUGTmOTms","executionInfo":{"status":"ok","timestamp":1614564327397,"user_tz":-300,"elapsed":205690,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ef2083f2-899f-4afb-ba61-5d5db829655e"},"source":["trainable_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setMaxEpochs(3) | Info: Maximum number of epochs to train | Currently set to : 3\n","pipe['classifier_dl'].setLr(0.005) | Info: Learning Rate | Currently set to : 0.005\n","pipe['classifier_dl'].setBatchSize(64) | Info: Batch size | Currently set to : 64\n","pipe['classifier_dl'].setDropout(0.5) | Info: Dropout coefficient | Currently set to : 0.5\n","pipe['classifier_dl'].setEnableOutputLogs(True) | Info: Whether to use stdout in addition to Spark logs. | Currently set to : True\n",">>> pipe['default_tokenizer'] has settable params:\n","pipe['default_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['default_tokenizer'].setContextChars(['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]) | Info: character list used to separate from token boundaries | Currently set to : ['.', ',', ';', ':', '!', '?', '*', '-', '(', ')', '\"', \"'\"]\n","pipe['default_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['default_tokenizer'].setMinLength(0) | Info: Set the minimum allowed legth for each token | Currently set to : 0\n","pipe['default_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed legth for each token | Currently set to : 99999\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n",">>> pipe['default_name'] has settable params:\n","pipe['default_name'].setDimension(512) | Info: Number of embedding dimensions | Currently set to : 512\n","pipe['default_name'].setLoadSP(False) | Info: Whether to load SentencePiece ops file which is required only by multi-lingual models. This is not changeable after it's set with a pretrained model nor it is compatible with Windows. | Currently set to : False\n","pipe['default_name'].setStorageRef('tfhub_use') | Info: unique reference name for identification | Currently set to : tfhub_use\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2GJdDNV9jEIe"},"source":["## 6. Retrain with new parameters"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":793},"id":"mptfvHx-MMMX","executionInfo":{"status":"ok","timestamp":1614564343531,"user_tz":-300,"elapsed":221814,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7636f973-58f5-4463-d642-e3ddea15c0df"},"source":["# Train longer!\n","trainable_pipe['classifier_dl'].setMaxEpochs(5) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:100])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.43 0.90 0.58 29\n"," good 0.80 0.84 0.82 38\n"," poor 0.00 0.00 0.00 33\n","\n"," accuracy 0.58 100\n"," macro avg 0.41 0.58 0.47 100\n","weighted avg 0.43 0.58 0.48 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textcategory_confidenceycategorydefault_name_embeddingsdocument
origin_index
1040Nice phone. Easy to read screen. I am a senior...0.986631goodgood[0.04795455560088158, 0.04623281955718994, 0.0...Nice phone. Easy to read screen. I am a senior...
157Just as promised. This a great SmartPhone. Ver...0.944038goodgood[0.07041990756988525, -0.04600438475608826, -0...Just as promised. This a great SmartPhone. Ver...
331It'sn a powerfull phone.0.941313averagegood[0.06664986908435822, -0.010421414859592915, -...It'sn a powerfull phone.
8421- the manual don`t have english.just it. I li...0.989852goodgood[0.035181764513254166, -0.06844104826450348, 0...1- the manual don`t have english.just it. I li...
766the iphone is good! but i have an issue the he...0.956226averageaverage[0.05243289843201637, -0.0002974773815367371, ...the iphone is good! but i have an issue the he...
.....................
165It's Ok.0.851562goodgood[0.010556062683463097, -0.0037851801607757807,...It's Ok.
1181you can download music, applications, comes un...0.976442goodgood[0.05078510940074921, -0.022081272676587105, -...you can download music, applications, comes un...
531Personally, I would NEVER purchase any Apple h...0.911216averageaverage[0.06057704612612724, 0.0446881465613842, -0.0...Personally, I would NEVER purchase any Apple h...
1298dynamic isn't working0.413555pooraverage[0.041587673127651215, -0.012929275631904602, ...dynamic isn't working
769The volume music cannot to stop when it's turn...0.643960pooraverage[-0.02557053416967392, -0.006043205037713051, ...The volume music cannot to stop when it's turn...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","1040 Nice phone. Easy to read screen. I am a senior... ... Nice phone. Easy to read screen. I am a senior...\n","157 Just as promised. This a great SmartPhone. Ver... ... Just as promised. This a great SmartPhone. Ver...\n","331 It'sn a powerfull phone. ... It'sn a powerfull phone.\n","842 1- the manual don`t have english.just it. I li... ... 1- the manual don`t have english.just it. I li...\n","766 the iphone is good! but i have an issue the he... ... the iphone is good! but i have an issue the he...\n","... ... ... ...\n","165 It's Ok. ... It's Ok.\n","1181 you can download music, applications, comes un... ... you can download music, applications, comes un...\n","531 Personally, I would NEVER purchase any Apple h... ... Personally, I would NEVER purchase any Apple h...\n","1298 dynamic isn't working ... dynamic isn't working\n","769 The volume music cannot to stop when it's turn... ... The volume music cannot to stop when it's turn...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"qFoT-s1MjTSS"},"source":["#7. Try training with different Embeddings"]},{"cell_type":"code","metadata":{"id":"nxWFzQOhjWC8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614564343535,"user_tz":-300,"elapsed":221806,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b97384ba-67f5-425e-d75f-e26804308b0b"},"source":["# We can use nlu.print_components(action='embed_sentence') to see every possibler sentence embedding we could use. Lets use bert!\n","nlu.print_components(action='embed_sentence')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('en.embed_sentence') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.tfhub_use') returns Spark NLP model tfhub_use\n","nlu.load('en.embed_sentence.use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.tfhub_use.lg') returns Spark NLP model tfhub_use_lg\n","nlu.load('en.embed_sentence.albert') returns Spark NLP model albert_base_uncased\n","nlu.load('en.embed_sentence.electra') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_small_uncased') returns Spark NLP model sent_electra_small_uncased\n","nlu.load('en.embed_sentence.electra_base_uncased') returns Spark NLP model sent_electra_base_uncased\n","nlu.load('en.embed_sentence.electra_large_uncased') returns Spark NLP model sent_electra_large_uncased\n","nlu.load('en.embed_sentence.bert') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_uncased') returns Spark NLP model sent_bert_base_uncased\n","nlu.load('en.embed_sentence.bert_base_cased') returns Spark NLP model sent_bert_base_cased\n","nlu.load('en.embed_sentence.bert_large_uncased') returns Spark NLP model sent_bert_large_uncased\n","nlu.load('en.embed_sentence.bert_large_cased') returns Spark NLP model sent_bert_large_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_base_cased') returns Spark NLP model sent_biobert_pubmed_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_large_cased') returns Spark NLP model sent_biobert_pubmed_large_cased\n","nlu.load('en.embed_sentence.biobert.pmc_base_cased') returns Spark NLP model sent_biobert_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.pubmed_pmc_base_cased') returns Spark NLP model sent_biobert_pubmed_pmc_base_cased\n","nlu.load('en.embed_sentence.biobert.clinical_base_cased') returns Spark NLP model sent_biobert_clinical_base_cased\n","nlu.load('en.embed_sentence.biobert.discharge_base_cased') returns Spark NLP model sent_biobert_discharge_base_cased\n","nlu.load('en.embed_sentence.covidbert.large_uncased') returns Spark NLP model sent_covidbert_large_uncased\n","nlu.load('en.embed_sentence.small_bert_L2_128') returns Spark NLP model sent_small_bert_L2_128\n","nlu.load('en.embed_sentence.small_bert_L4_128') returns Spark NLP model sent_small_bert_L4_128\n","nlu.load('en.embed_sentence.small_bert_L6_128') returns Spark NLP model sent_small_bert_L6_128\n","nlu.load('en.embed_sentence.small_bert_L8_128') returns Spark NLP model sent_small_bert_L8_128\n","nlu.load('en.embed_sentence.small_bert_L10_128') returns Spark NLP model sent_small_bert_L10_128\n","nlu.load('en.embed_sentence.small_bert_L12_128') returns Spark NLP model sent_small_bert_L12_128\n","nlu.load('en.embed_sentence.small_bert_L2_256') returns Spark NLP model sent_small_bert_L2_256\n","nlu.load('en.embed_sentence.small_bert_L4_256') returns Spark NLP model sent_small_bert_L4_256\n","nlu.load('en.embed_sentence.small_bert_L6_256') returns Spark NLP model sent_small_bert_L6_256\n","nlu.load('en.embed_sentence.small_bert_L8_256') returns Spark NLP model sent_small_bert_L8_256\n","nlu.load('en.embed_sentence.small_bert_L10_256') returns Spark NLP model sent_small_bert_L10_256\n","nlu.load('en.embed_sentence.small_bert_L12_256') returns Spark NLP model sent_small_bert_L12_256\n","nlu.load('en.embed_sentence.small_bert_L2_512') returns Spark NLP model sent_small_bert_L2_512\n","nlu.load('en.embed_sentence.small_bert_L4_512') returns Spark NLP model sent_small_bert_L4_512\n","nlu.load('en.embed_sentence.small_bert_L6_512') returns Spark NLP model sent_small_bert_L6_512\n","nlu.load('en.embed_sentence.small_bert_L8_512') returns Spark NLP model sent_small_bert_L8_512\n","nlu.load('en.embed_sentence.small_bert_L10_512') returns Spark NLP model sent_small_bert_L10_512\n","nlu.load('en.embed_sentence.small_bert_L12_512') returns Spark NLP model sent_small_bert_L12_512\n","nlu.load('en.embed_sentence.small_bert_L2_768') returns Spark NLP model sent_small_bert_L2_768\n","nlu.load('en.embed_sentence.small_bert_L4_768') returns Spark NLP model sent_small_bert_L4_768\n","nlu.load('en.embed_sentence.small_bert_L6_768') returns Spark NLP model sent_small_bert_L6_768\n","nlu.load('en.embed_sentence.small_bert_L8_768') returns Spark NLP model sent_small_bert_L8_768\n","nlu.load('en.embed_sentence.small_bert_L10_768') returns Spark NLP model sent_small_bert_L10_768\n","nlu.load('en.embed_sentence.small_bert_L12_768') returns Spark NLP model sent_small_bert_L12_768\n","For language NLU provides the following Models : \n","nlu.load('fi.embed_sentence') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.cased') returns Spark NLP model sent_bert_finnish_cased\n","nlu.load('fi.embed_sentence.bert.uncased') returns Spark NLP model sent_bert_finnish_uncased\n","For language NLU provides the following Models : \n","nlu.load('xx.embed_sentence') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.bert.cased') returns Spark NLP model sent_bert_multi_cased\n","nlu.load('xx.embed_sentence.labse') returns Spark NLP model labse\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"IKK_Ii_gjJfF","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614565560400,"user_tz":-300,"elapsed":1438661,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"21cfec6b-08a8-4fa8-cf9b-659edbf33a77"},"source":["from sklearn.metrics import classification_report\n","trainable_pipe = nlu.load('en.embed_sentence.small_bert_L12_768 train.classifier')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['classifier_dl'].setMaxEpochs(90) \n","trainable_pipe['classifier_dl'].setLr(0.0005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","#preds\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["sent_small_bert_L12_768 download started this may take some time.\n","Approximate size to download 392.9 MB\n","[OK!]\n"," precision recall f1-score support\n","\n"," average 0.73 0.66 0.69 392\n"," good 0.84 0.87 0.86 408\n"," poor 0.79 0.83 0.81 400\n","\n"," accuracy 0.79 1200\n"," macro avg 0.79 0.79 0.79 1200\n","weighted avg 0.79 0.79 0.79 1200\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 7.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614565866281,"user_tz":-300,"elapsed":1744539,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f70f8379-66b2-4037-b0ac-209c1fd88b70"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\r\n","\r\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\r\n","preds.dropna(inplace=True)\r\n","print(classification_report(preds['y'], preds['category']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.70 0.66 0.68 108\n"," good 0.79 0.82 0.80 92\n"," poor 0.75 0.77 0.76 100\n","\n"," accuracy 0.74 300\n"," macro avg 0.74 0.75 0.75 300\n","weighted avg 0.74 0.74 0.74 300\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 8. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609622897186,"user_tz":-300,"elapsed":1562308,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a3175762-9ea0-472e-a8bf-0a64fd1176c9"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 9. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":111},"executionInfo":{"status":"ok","timestamp":1609622933158,"user_tz":-300,"elapsed":1598267,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a40c74fc-c2f1-4a58-ba4e-5d1e21e39da3"},"source":["hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('It worked perfectly.')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
classifier_confidencedocumenten_embed_sentence_small_bert_L12_768_embeddingsclassifier
origin_index
00.950214It worked perfectly.[0.275971919298172, 0.4924655854701996, 0.2755...good
\n","
"],"text/plain":[" classifier_confidence ... classifier\n","origin_index ... \n","0 0.950214 ... good\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609622963569,"user_tz":-300,"elapsed":903,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"662a1dc1-b3fc-4137-b95a-8d7f38326fd5"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['average', 'poor', 'good']) | Info: get the tags used to trained this NerDLModel | Currently set to : ['average', 'poor', 'good']\n","pipe['classifier_dl'].setStorageRef('sent_small_bert_L12_768') | Info: unique reference name for identification | Currently set to : sent_small_bert_L12_768\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_apple_twitter.ipynb b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_apple_twitter.ipynb new file mode 100644 index 00000000..c989bc34 --- /dev/null +++ b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_apple_twitter.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_multi_lingual_training_sentiment_classifier_demo_apple_twitter.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"RIV-9vEqxTBB"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/multi_lingual_text_classification/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_apple_twitter.ipynb)\n","\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 class Apple Tweets Sentiment Classifier Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","\n","![Screenshot 2021-02-25 192910.png](data:image/png;base64,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)\n","\n","You can achieve these results or even better on this dataset with test data :\n","\n","
\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"code","metadata":{"id":"05-mAOF6ol-0"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null \n","\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download appple twitter Sentiment dataset \n","https://www.kaggle.com/seriousran/appletwittersentimenttexts\n","\n","this dataset contains tweets made towards apple and today we are going to train our model to predict whether the tweet contains sentiment!\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614262217245,"user_tz":-300,"elapsed":78342,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b467da65-51e5-4412-b9ec-a152dd99bd38"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/apple-twitter-sentiment-texts_multi_lingual.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 14:09:06-- http://ckl-it.de/wp-content/uploads/2021/02/apple-twitter-sentiment-texts_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 48565 (47K) [text/csv]\n","Saving to: ‘apple-twitter-sentiment-texts_multi_lingual.csv’\n","\n","apple-twitter-senti 100%[===================>] 47.43K 159KB/s in 0.3s \n","\n","2021-02-25 14:09:07 (159 KB/s) - ‘apple-twitter-sentiment-texts_multi_lingual.csv’ saved [48565/48565]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":416},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614262238347,"user_tz":-300,"elapsed":1238,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0313826c-0c30-4d88-eb45-f5fefd7fa59d"},"source":["import pandas as pd\n","train_path = '/content/apple-twitter-sentiment-texts_multi_lingual.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","columns=['text','y']\n","train_df = train_df[columns]\n","train_df = train_df[~train_df[\"y\"].isin([\"neuteral\"])]\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
19Companies i admire : @3QDigital @vaynermedia @...positive
239waiting a week for a DUNS number is preventing...negative
64Thanks @Apple for the preview of your smartwat...positive
108@apple ur a disgracenegative
285Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...positive
.........
115@MhDaDon @Apple def gotta have it, I don't eve...positive
185Hey @apple are you even thinking about fixing ...negative
57Free s/o @apple for this nice iPadpositive
199@OneRepublic @Apple #AppleAddict ! The show in...positive
76NO @apple NO! When I make an I phone Album I W...negative
\n","

228 rows × 2 columns

\n","
"],"text/plain":[" text y\n","19 Companies i admire : @3QDigital @vaynermedia @... positive\n","239 waiting a week for a DUNS number is preventing... negative\n","64 Thanks @Apple for the preview of your smartwat... positive\n","108 @apple ur a disgrace negative\n","285 Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc... positive\n",".. ... ...\n","115 @MhDaDon @Apple def gotta have it, I don't eve... positive\n","185 Hey @apple are you even thinking about fixing ... negative\n","57 Free s/o @apple for this nice iPad positive\n","199 @OneRepublic @Apple #AppleAddict ! The show in... positive\n","76 NO @apple NO! When I make an I phone Album I W... negative\n","\n","[228 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":828},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614262641584,"user_tz":-300,"elapsed":403989,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b2152731-4cf9-466a-b5cb-fc10b39507dc"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(60) \n","\n","trainable_pipe['sentiment_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.97 0.97 0.97 118\n"," positive 0.97 0.97 0.97 110\n","\n"," accuracy 0.97 228\n"," macro avg 0.97 0.97 0.97 228\n","weighted avg 0.97 0.97 0.97 228\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencetextdocumentyxx_embed_sentence_labse_embeddingssentiment
origin_index
190.999924Companies i admire : @3QDigital @vaynermedia @...Companies i admire : @3QDigital @vaynermedia @...positive[0.003697995562106371, -0.033728744834661484, ...positive
2390.999974waiting a week for a DUNS number is preventing...waiting a week for a DUNS number is preventing...negative[0.010905967094004154, 0.04764788970351219, 0....negative
640.999988Thanks @Apple for the preview of your smartwat...Thanks @Apple for the preview of your smartwat...positive[0.0010029257973656058, -0.0327875055372715, 0...positive
1080.999997@apple ur a disgrace@apple ur a disgracenegative[-0.03643779084086418, -0.035430122166872025, ...negative
2850.999737Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...Yeeaaayyy....awesome OS X Yosemite 10.10.1 roc...positive[-0.05403903126716614, -0.05731330066919327, -...positive
.....................
1150.999779@MhDaDon @Apple def gotta have it, I don't eve...@MhDaDon @Apple def gotta have it, I don't eve...positive[-0.055206991732120514, 0.02291109785437584, -...negative
1850.999997Hey @apple are you even thinking about fixing ...Hey @apple are you even thinking about fixing ...negative[0.012110532261431217, -0.026404496282339096, ...negative
570.999070Free s/o @apple for this nice iPadFree s/o @apple for this nice iPadpositive[-0.022697972133755684, -0.03592884913086891, ...positive
1990.999985@OneRepublic @Apple #AppleAddict ! The show in...@OneRepublic @Apple #AppleAddict ! The show in...positive[-0.033660534769296646, 0.007074450608342886, ...positive
760.999806NO @apple NO! When I make an I phone Album I W...NO @apple NO! When I make an I phone Album I W...negative[-0.05417351797223091, -0.013795379549264908, ...negative
\n","

228 rows × 6 columns

\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","19 0.999924 ... positive\n","239 0.999974 ... negative\n","64 0.999988 ... positive\n","108 0.999997 ... negative\n","285 0.999737 ... positive\n","... ... ... ...\n","115 0.999779 ... negative\n","185 0.999997 ... negative\n","57 0.999070 ... positive\n","199 0.999985 ... positive\n","76 0.999806 ... negative\n","\n","[228 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Fxx4yNkNVGFl","executionInfo":{"status":"ok","timestamp":1614262683228,"user_tz":-300,"elapsed":445190,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0fec0148-00fe-45ab-97e1-75d050c20a1d"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.79 0.88 0.83 25\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.93 0.79 0.85 33\n","\n"," accuracy 0.83 58\n"," macro avg 0.57 0.56 0.56 58\n","weighted avg 0.87 0.83 0.84 58\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"BD5OKO4Umc5U"},"source":["#4. Test Model on 20 languages!"]},{"cell_type":"code","metadata":{"id":"OQ72hP9unML7","colab":{"base_uri":"https://localhost:8080/","height":793},"executionInfo":{"status":"ok","timestamp":1614262761504,"user_tz":-300,"elapsed":523025,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8fe2964b-fb7c-4e69-9c9d-73de6913fe70"},"source":["import pandas as pd\n","\n","train_df = pd.read_csv('/content/apple-twitter-sentiment-texts_multi_lingual.csv')\n","columns=['test_sentences','y']\n","train_df = train_df[columns]\n","train_df = train_df[~train_df[\"y\"].isin([\"neuteral\"])]\n","train_df\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.94 0.94 0.94 47\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.94 0.95 53\n","\n"," accuracy 0.94 100\n"," macro avg 0.63 0.63 0.63 100\n","weighted avg 0.95 0.94 0.94 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencetextdocumentyxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999736@Apple, du skal sortere dine telefoner.@Apple, du skal sortere dine telefoner.negative[-0.06157918646931648, -0.006414669565856457, ...negative
10.509814వావ్. యాల్ నీడా స్టెప్ అప్ @ యాపిల్ ఆర్టి y హే...వావ్. యాల్ నీడా స్టెప్ అప్ @ యాపిల్ ఆర్టి y హే...negative[-0.06188170239329338, -0.0713067352771759, -0...neutral
20.947591আমি আশ্চর্য হয়েছি যে গতকাল # এএপএল-তে ফ্ল্যাশ...আমি আশ্চর্য হয়েছি যে গতকাল # এএপএল-তে ফ্ল্যাশ...negative[-0.009524056687951088, -0.0228135883808136, -...negative
30.804160Uvědomili jsme si, že @apple vyrábí obrovské t...Uvědomili jsme si, že @apple vyrábí obrovské t...negative[-0.05080720782279968, 0.035508088767528534, 0...negative
40.999854Apple Inc.'s administrerende direktør donerer ...Apple Inc.'s administrerende direktør donerer ...positive[-0.04884449020028114, -0.026541609317064285, ...positive
.....................
950.994841Təşəkkür edirəm @Apple İndi bir yerdə ünsiyyət...Təşəkkür edirəm @Apple İndi bir yerdə ünsiyyət...positive[-0.030292551964521408, -0.047181397676467896,...positive
960.999003. @ tim_cook Die woede wanneer hulle @ Apple G.... @ tim_cook Die woede wanneer hulle @ Apple G...negative[0.013441476970911026, -0.053970836102962494, ...negative
970.871066ছদ্মবেশের ধরণটি হ'ল এই @ অ্যাপল @ অটোকোরেক্ট @...ছদ্মবেশের ধরণটি হ'ল এই @ অ্যাপল @ অটোকোরেক্ট @...negative[-0.02878599800169468, -0.06805533915758133, 0...negative
980.819139Было бы неплохо, если бы я мог набрать более о...Было бы неплохо, если бы я мог набрать более о...negative[0.0006763554411008954, -0.0028165297117084265...positive
990.957305@OneRepublic @Apple Вы все готовы. #ColoradoLo...@OneRepublic @Apple Вы все готовы. #ColoradoLo...positive[-0.006210440769791603, -0.053716398775577545,...positive
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999736 ... negative\n","1 0.509814 ... neutral\n","2 0.947591 ... negative\n","3 0.804160 ... negative\n","4 0.999854 ... positive\n","... ... ... ...\n","95 0.994841 ... positive\n","96 0.999003 ... negative\n","97 0.871066 ... negative\n","98 0.819139 ... positive\n","99 0.957305 ... positive\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614262857568,"user_tz":-300,"elapsed":5089,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6e5fa717-8d0f-45ee-a4cf-e35298e31501"},"source":["\n","fitted_pipe.predict(\"I hate the newest update!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.955099I hate the newest update!![-0.03925565630197525, -0.0203737560659647, -0...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.955099 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614262860801,"user_tz":-300,"elapsed":8289,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c91d24bf-525d-4c61-94dd-619002e2b677"},"source":["fitted_pipe.predict(\"I love the newest update!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999108I love the newest update!![-0.03266981616616249, -0.03438195586204529, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999108 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614262862167,"user_tz":-300,"elapsed":9623,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9b1a9ca1-69d4-4bc1-d12b-055459617197"},"source":["# german for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Ich liebe das neueste Update !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999108Ich liebe das neueste Update !![-0.03806369751691818, -0.03677768632769585, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999108 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"ZaPYBxeL33pH","executionInfo":{"status":"ok","timestamp":1614268187940,"user_tz":-300,"elapsed":5536,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ea16253a-5d73-47b3-dff3-bf1f5b130858"},"source":["# german for: 'Apple is the worst company ever , I hate it !'\n","fitted_pipe.predict(\"Apple ist das schlechteste Unternehmen aller Zeiten, ich hasse es! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999567Apple ist das schlechteste Unternehmen aller Z...[-0.06440500915050507, 0.011019396595656872, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999567 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":78}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614262865405,"user_tz":-300,"elapsed":12837,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b10b07fa-dc6a-4717-bf54-0ad5b3dd5a6b"},"source":["# Chinese for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"我讨厌最新的更新! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.956440我讨厌最新的更新![-0.035996973514556885, -0.038595858961343765,...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.956440 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614262866947,"user_tz":-300,"elapsed":14346,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"66c97cda-e25f-4e98-b532-3f4832e89fb7"},"source":["# Chinese for: 'I love the newest update!!'\n","fitted_pipe.predict(\"我喜欢最新的更新! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999690我喜欢最新的更新![-0.03270617872476578, -0.03804901987314224, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999690 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614262869932,"user_tz":-300,"elapsed":17309,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cc187ddf-8473-4b01-fae7-fea173ea62d3"},"source":["\t\t\n","# Afrikaans for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"Ek haat die nuutste opdatering !! \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.973612Ek haat die nuutste opdatering !![-0.04320189356803894, -0.023186640813946724, ...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.973612 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614262871645,"user_tz":-300,"elapsed":18996,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d54f1fa4-d68c-4a72-89d5-037ec59ef65e"},"source":["# Afrikaans for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Ek is lief vir die nuutste opdatering !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999405Ek is lief vir die nuutste opdatering !![-0.031754832714796066, -0.03518301621079445, ...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999405 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["# The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"M6giDPK-wm2G","executionInfo":{"status":"ok","timestamp":1614262874014,"user_tz":-300,"elapsed":21347,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"805186fb-5086-4e1d-8f77-a9792f5aba92"},"source":["\n","# Vietnamese for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Tôi yêu bản cập nhật mới nhất !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.760163Tôi yêu bản cập nhật mới nhất !![-0.007813846692442894, -0.0691518485546112, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.760163 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"benoJUN_4i3Q","executionInfo":{"status":"ok","timestamp":1614268507970,"user_tz":-300,"elapsed":4272,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"49226903-3a90-4203-edd9-1f9f757589c1"},"source":["\n","# Vietnamese for: 'Apple is the worst company ever , I hate it !'\n","fitted_pipe.predict(\"Apple là công ty tồi tệ nhất từ ​​trước đến nay, tôi ghét nó!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999311Apple là công ty tồi tệ nhất từ ​​trước đến na...[-0.06147119030356407, 0.037075284868478775, 0...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999311 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":83}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614262876373,"user_tz":-300,"elapsed":23684,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"65e29fd1-2465-48f7-8413-b5ace9d0e4a0"},"source":["# Japanese for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"私は最新のアップデートが嫌いです! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.969206私は最新のアップデートが嫌いです![-0.030076518654823303, -0.002390796784311533,...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.969206 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":51}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"h3k7_PFhxOve","executionInfo":{"status":"ok","timestamp":1614262879338,"user_tz":-300,"elapsed":26617,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4ed372ab-e712-4450-b92a-fc8493a6598d"},"source":["\t\t\n","# Japanese for: 'I love the newest update!!'\n","fitted_pipe.predict(\"私は最新のアップデートが大好きです! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999745私は最新のアップデートが大好きです![-0.015637995675206184, -0.022478939965367317,...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999745 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":52}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"DKnrkkXzzpd5","executionInfo":{"status":"ok","timestamp":1614262881655,"user_tz":-300,"elapsed":28907,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dc7e42d0-5881-4341-fac7-81cbea6700d6"},"source":["# Zulu for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Ngiyasithanda isibuyekezo esisha !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.998697Ngiyasithanda isibuyekezo esisha !![-0.018757890909910202, -0.031556978821754456,...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.998697 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":53}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"HInPIW9A4rg2","executionInfo":{"status":"ok","timestamp":1614268528972,"user_tz":-300,"elapsed":4232,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3714fced-23cc-4147-aca1-d0942ea9e6ea"},"source":["# Zulu for: Apple is the worst company ever , I hate it !'\n","fitted_pipe.predict(\"I-Apple iyinkampani embi kunazo zonke ezake, ngiyayizonda!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.997667I-Apple iyinkampani embi kunazo zonke ezake, n...[-0.060404010117053986, 0.02596486359834671, 0...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.997667 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":84}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614262883908,"user_tz":-300,"elapsed":31138,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"531debdc-2cad-4c29-aa11-cd42173463f0"},"source":["# Turkish for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"En yeni güncellemekten nefret ediyorum !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.928913En yeni güncellemekten nefret ediyorum !![-0.006802689284086227, -0.03453183174133301, ...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.928913 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":54}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614262886213,"user_tz":-300,"elapsed":33425,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"512ad665-fd78-4e44-85e3-04f078f05c27"},"source":["# Turkish for: 'I love the newest update!!'\n","fitted_pipe.predict(\"En yeni güncellemeyi seviyorum !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999000En yeni güncellemeyi seviyorum !![-0.013165177777409554, -0.04192955046892166, ...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999000 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":55}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614262888433,"user_tz":-300,"elapsed":35622,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"669b8693-d37b-41fd-9dfb-460ce51183c6"},"source":["# Hebrew for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"אני שונא את העדכון החדש ביותר! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.866008אני שונא את העדכון החדש ביותר![-0.02679138444364071, -0.02492380701005459, 0...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.866008 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":56}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614262890929,"user_tz":-300,"elapsed":38093,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b0bd51ca-1020-4941-cd93-a613dac85116"},"source":["# Hebrew for: 'I love the newest update!!'\n","fitted_pipe.predict(\"אני אוהב את העדכון החדש ביותר !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999521אני אוהב את העדכון החדש ביותר !![-0.025626324117183685, -0.03748653084039688, ...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999521 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":57}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614262893235,"user_tz":-300,"elapsed":40381,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"26cd1766-952d-4dc5-e573-7bccdad52eee"},"source":["# Telugu for: 'I love the newest update!!'\n","fitted_pipe.predict(\"నేను సరికొత్త నవీకరణను ప్రేమిస్తున్నాను !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999573నేను సరికొత్త నవీకరణను ప్రేమిస్తున్నాను !![-0.035736508667469025, -0.04187411814928055, ...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999573 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":58}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"uuR3Reqc5JbT","executionInfo":{"status":"ok","timestamp":1614268552287,"user_tz":-300,"elapsed":3384,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"36bc87f6-5a40-4252-cfdc-e865ad0a382a"},"source":["# Telugu for: 'Apple is the worst company ever , I hate it !'\n","fitted_pipe.predict(\" ఆపిల్ ఎప్పుడూ చెత్త సంస్థ, నేను దానిని ద్వేషిస్తున్నాను! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.996478ఆపిల్ ఎప్పుడూ చెత్త సంస్థ, నేను దానిని ద్వేషిస...[-0.06062706932425499, 0.01440807431936264, -0...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.996478 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":85}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614262896010,"user_tz":-300,"elapsed":43137,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3dcb6bd3-c970-479d-ac01-db99353fceaa"},"source":["# Russian for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"Я ненавижу новейшее обновление !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.965200Я ненавижу новейшее обновление !![-0.05251258239150047, -0.02137315832078457, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.965200 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":59}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614262897937,"user_tz":-300,"elapsed":45043,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"38db6b30-7903-4267-ecb1-64681b306104"},"source":["\n","\n","# Russian for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Я люблю новейшее обновление !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999347Я люблю новейшее обновление !![-0.04557504877448082, -0.0393301397562027, -0...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999347 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":60}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614262900319,"user_tz":-300,"elapsed":47407,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"67f66556-f229-497a-b6d4-1c5082e98ca7"},"source":["# Urdu for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"مجھے تازہ ترین اپ ڈیٹ سے نفرت ہے !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.983793مجھے تازہ ترین اپ ڈیٹ سے نفرت ہے !![-0.04204098507761955, -0.040164727717638016, ...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.983793 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":61}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614262902393,"user_tz":-300,"elapsed":49460,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"383c15c3-2d6c-4f30-e442-fb80eced9e16"},"source":["# Urdu for: 'I love the newest update!!'\n","fitted_pipe.predict(\"مجھے تازہ ترین تازہ کاری پسند ہے !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.997037مجھے تازہ ترین تازہ کاری پسند ہے !![-0.020344946533441544, -0.050028394907712936,...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.997037 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":62}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614262904782,"user_tz":-300,"elapsed":51830,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ee19971a-a5da-4008-e7ba-11975896e8bb"},"source":["# hindi for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"मुझे नवीनतम अपडेट से नफरत है !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.974632मुझे नवीनतम अपडेट से नफरत है !![-0.045306481420993805, -0.03867834806442261, ...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.974632 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":63}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614262906872,"user_tz":-300,"elapsed":53901,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a8d3f11d-d520-4a86-b50c-6687d641c64f"},"source":["# hindi for: 'I love the newest update!!'\n","fitted_pipe.predict(\"मैं नवीनतम अद्यतन प्यार करता हूँ !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.998251मैं नवीनतम अद्यतन प्यार करता हूँ !![-0.03802282363176346, -0.04779476672410965, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.998251 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":64}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614262909319,"user_tz":-300,"elapsed":56327,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5c507694-7ebd-454f-e304-6b58b2acec2b"},"source":["# Tartar for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"Мин яңа яңартуны нәфрәт итәм !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.633860Мин яңа яңартуны нәфрәт итәм !![-0.03812285140156746, -0.03321801871061325, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.633860 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":65}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614262911597,"user_tz":-300,"elapsed":58583,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"881a5e3e-7b15-4556-ec1a-1aed7da87591"},"source":["\n","# Tartar for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Мин иң яңа яңартуны яратам !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999220Мин иң яңа яңартуны яратам !![-0.022450298070907593, -0.04027741029858589, ...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999220 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":66}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614262914092,"user_tz":-300,"elapsed":61055,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"91211d0f-5513-4c88-b4d1-d584d7008de1"},"source":["# French for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"Je déteste la nouvelle mise à jour !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.621008Je déteste la nouvelle mise à jour !![-0.0480484738945961, -0.019815556704998016, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.621008 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":67}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614262916485,"user_tz":-300,"elapsed":63427,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c06b7ae1-602f-4b8a-f516-f26d70401f09"},"source":["# French for: 'I love the newest update!!'\n","fitted_pipe.predict(\"J'adore la dernière mise à jour !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.998835J'adore la dernière mise à jour !![-0.03898211941123009, -0.04296712577342987, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.998835 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":68}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"ICp_qoAhNq6Q","executionInfo":{"status":"ok","timestamp":1614262918943,"user_tz":-300,"elapsed":65867,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4966ef89-e747-458b-cf0b-a71fed8e330d"},"source":["# Thai for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"ฉันเกลียดการอัปเดตใหม่ล่าสุด !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.989458ฉันเกลียดการอัปเดตใหม่ล่าสุด !![-0.05030808597803116, -0.03610168397426605, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.989458 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":69}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614262921583,"user_tz":-300,"elapsed":68485,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5a1701eb-3ec0-4f29-bb77-d96a6f3e2e57"},"source":["# Thai for: 'I love the newest update!!'\n","fitted_pipe.predict(\"โดนใจอัพเดทใหม่ล่าสุด !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.996418โดนใจอัพเดทใหม่ล่าสุด !![-0.046895794570446014, -0.047694914042949677,...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.996418 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":70}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"Fxh1gasROElC","executionInfo":{"status":"ok","timestamp":1614262924873,"user_tz":-300,"elapsed":71754,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"928d3123-3c2f-4170-9df2-8daa0f4d8c8a"},"source":["# Khmer for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"ខ្ញុំស្អប់ការអាប់ដេតថ្មីបំផុត !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.945463ខ្ញុំស្អប់ការអាប់ដេតថ្មីបំផុត !![-0.04094553366303444, -0.04082178324460983, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.945463 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":71}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614262927582,"user_tz":-300,"elapsed":74439,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"485684e6-12ec-4bcb-864e-d659e229701a"},"source":["# Khmer for: 'I love the newest update!!'\n","fitted_pipe.predict(\"ខ្ញុំចូលចិត្តការអាប់ដេតថ្មីបំផុត !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999485ខ្ញុំចូលចិត្តការអាប់ដេតថ្មីបំផុត !![-0.0357854850590229, -0.035129521042108536, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999485 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":72}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614262930370,"user_tz":-300,"elapsed":77204,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f877466c-16d3-408b-dd6e-b74cdbfe6921"},"source":["\n","# Yiddish for: 'I love the newest update!!'\n","fitted_pipe.predict(\"איך ליבע דער נואַסט דערהייַנטיקן !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.999170איך ליבע דער נואַסט דערהייַנטיקן !![-0.030090758576989174, -0.060998495668172836,...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.999170 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":73}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"YcM5k6Ce5Vpo","executionInfo":{"status":"ok","timestamp":1614268459462,"user_tz":-300,"elapsed":4685,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6040c044-a368-40c1-e2c0-7b3c40e167a1"},"source":["\n","# Yiddish for: 'Apple is the worst company ever , I hate it !'\n","fitted_pipe.predict(\"עפּל איז די ערגסט פירמע טאָמיד, איך האַס עס!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.972911עפּל איז די ערגסט פירמע טאָמיד, איך האַס עס![-0.04640829935669899, 0.007680136244744062, 0...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.972911 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":82}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614262932759,"user_tz":-300,"elapsed":79574,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"883df516-eb8a-4ddc-ecec-7d74ce580570"},"source":["\t\t\n","# Kygrgyz for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"Мен жаңы жаңыртууну жек көрөм !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.945150Мен жаңы жаңыртууну жек көрөм !![-0.040810152888298035, -0.03718705102801323, ...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.945150 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":74}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614262935091,"user_tz":-300,"elapsed":81887,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5fab48e2-9d27-4e57-fb81-3d319fca6c3b"},"source":["\t\t\n","# Kygrgyz for: 'I love the newest update!!'\n","fitted_pipe.predict(\"Мен жаңы жаңыртууну жакшы көрөм !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.998985Мен жаңы жаңыртууну жакшы көрөм !![-0.029403185471892357, -0.0417410284280777, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.998985 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":75}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614262937303,"user_tz":-300,"elapsed":84045,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8a30bd66-2143-45da-de42-43d7086182c5"},"source":["\t\t\n","# Tamil for: 'I hate the newest update!!'\n","fitted_pipe.predict(\"நான் புதிய புதுப்பிப்பை வெறுக்கிறேன் !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.678744நான் புதிய புதுப்பிப்பை வெறுக்கிறேன் !![-0.04580854997038841, -0.03527894988656044, -...negative
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.678744 ... negative\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":76}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":110},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614262940088,"user_tz":-300,"elapsed":85956,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dee474ab-3613-4369-9762-298f30a7542a"},"source":["\n","# Tamil for: 'I love the newest update!!'\n","fitted_pipe.predict(\"நான் புதிய புதுப்பிப்பை விரும்புகிறேன் !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencedocumentxx_embed_sentence_labse_embeddingssentiment
origin_index
00.995342நான் புதிய புதுப்பிப்பை விரும்புகிறேன் !![-0.03591679036617279, -0.05217977613210678, -...positive
\n","
"],"text/plain":[" sentiment_confidence ... sentiment\n","origin_index ... \n","0 0.995342 ... positive\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":77}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"bZZpObLOtqo8","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613856549588,"user_tz":-300,"elapsed":774877,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2aa6cc83-35cc-4ee3-aca6-7766cf3f3eac"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":105},"executionInfo":{"status":"ok","timestamp":1613856853936,"user_tz":-300,"elapsed":108557,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"35add93b-9422-4018-f8a3-e8fb0908c252"},"source":["stored_model_path = './models/classifier_dl_trained' \n","hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('I hate the newest update')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
documentsentimentsentiment_confidencexx_embed_sentence_labse_embeddings
origin_index
0I hate the newest updatenegative0.998501[-0.04603004455566406, 0.032716553658246994, 0...
\n","
"],"text/plain":[" document ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 I hate the newest update ... [-0.04603004455566406, 0.032716553658246994, 0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613856853939,"user_tz":-300,"elapsed":108546,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3f881695-6cf7-412c-e8a7-583febe8c9f0"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_covid_19.ipynb b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_covid_19.ipynb new file mode 100644 index 00000000..33f635b7 --- /dev/null +++ b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_covid_19.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_multi_lingual_training_sentiment_classifier_demo_covid_19.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/multi_lingual_text_classification/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_covid_19.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class COVID19 Sentiment Classifier Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","You can achieve these results or even better on this dataset with test data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614262357345,"user_tz":-300,"elapsed":69804,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a7e6eadb-f695-44df-b198-b9d8b80caa50"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java|\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n"," Using cached https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz\n","Collecting py4j==0.10.7\n"," Using cached https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl\n","Building wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=e3a3a2ae95f9fd10debe0af25e59e0dd814994c213a6bb2caeeb5aca138987eb\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Coivd19 NLP Text Sentiemnt Classifcation dataset \n","https://www.kaggle.com/datatattle/covid-19-nlp-text-classification\n","#Context\n","\n","This is a Dataset made of tweets about coivid 19 "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614264195966,"user_tz":-300,"elapsed":67,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3d8a4cec-3478-4c75-e895-ef86c6818a5e"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/Corona_NLP_train_multi_lingual.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 14:42:05-- http://ckl-it.de/wp-content/uploads/2021/02/Corona_NLP_train_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 838005 (818K) [text/csv]\n","Saving to: ‘Corona_NLP_train_multi_lingual.csv.1’\n","\n","Corona_NLP_train_mu 100%[===================>] 818.36K --.-KB/s in 0.1s \n","\n","2021-02-25 14:42:05 (7.33 MB/s) - ‘Corona_NLP_train_multi_lingual.csv.1’ saved [838005/838005]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614262357357,"user_tz":-300,"elapsed":40963,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5afff45a-cff9-4336-d97d-86584b35be44"},"source":["import pandas as pd\n","train_path = '/content/Corona_NLP_train_multi_lingual.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
706Since many of us are not able to continue our ...positive
240Slum Areas of metro cities where people are de...positive
493#nofilter I don't care what you're offering - ...positive
776Great interview with a USMC Lt. General who's ...positive
538US sees panic buying of weapons with huge line...negative
.........
976Things have gone from bad to worse in the UK. ...negative
327My mother-in-law went to the supermarket this ...negative
440Who would have thought that something so basic...positive
822Very impressed with Village supermarket they h...positive
517credit card tapping, new technologies like Dys...positive
\n","

1200 rows × 2 columns

\n","
"],"text/plain":[" text y\n","706 Since many of us are not able to continue our ... positive\n","240 Slum Areas of metro cities where people are de... positive\n","493 #nofilter I don't care what you're offering - ... positive\n","776 Great interview with a USMC Lt. General who's ... positive\n","538 US sees panic buying of weapons with huge line... negative\n",".. ... ...\n","976 Things have gone from bad to worse in the UK. ... negative\n","327 My mother-in-law went to the supermarket this ... negative\n","440 Who would have thought that something so basic... positive\n","822 Very impressed with Village supermarket they h... positive\n","517 credit card tapping, new technologies like Dys... positive\n","\n","[1200 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":811},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614265349806,"user_tz":-300,"elapsed":766927,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5aa296f7-62d9-453f-8ee0-61544cbe5285"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(60) \n","trainable_pipe['sentiment_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.96 0.97 0.96 602\n"," positive 0.97 0.96 0.96 598\n","\n"," accuracy 0.96 1200\n"," macro avg 0.96 0.96 0.96 1200\n","weighted avg 0.96 0.96 0.96 1200\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textxx_embed_sentence_labse_embeddingsysentimentdocumentsentiment_confidence
origin_index
387In the wake of COVID-19, we are working with a...[-0.016477668657898903, -0.01123256329447031, ...positivepositiveIn the wake of COVID-19, we are working with a...0.999895
581My first job was a stock boy at a grocery stor...[0.001647047232836485, 0.02078898437321186, -0...positivepositiveMy first job was a stock boy at a grocery stor...0.999992
559#Shipping outlook cut to ‘negative’ as #coro...[-0.037411317229270935, -0.04748864844441414, ...negativenegative#Shipping outlook cut to ‘negative’ as #coro...0.999918
1063@BBCNews Will never like these as more exposur...[-0.005866150837391615, 0.030684819445014, -0....negativenegative@BBCNews Will never like these as more exposur...0.999972
319Reviewing national reporting, I am now aware o...[-0.061537005007267, -0.023719770833849907, -0...negativenegativeReviewing national reporting, I am now aware o...1.000000
.....................
348Real Heroes in Covid 19 - Supermarket staff, #...[-0.002750938991084695, -0.015061184763908386,...positivepositiveReal Heroes in Covid 19 - Supermarket staff, #...0.999999
169Given the increasingly urgent emphasis on #Soc...[0.023976236581802368, -0.03232092410326004, 0...positivepositiveGiven the increasingly urgent emphasis on #Soc...0.999937
1435This government doesn't need anything research...[0.023141534999012947, -0.006682656239718199, ...positivepositiveThis government doesn't need anything research...0.993930
729@nuaansw has produced this COVID-19 Harm Reduc...[-0.022102229297161102, -0.05045003071427345, ...negativenegative@nuaansw has produced this COVID-19 Harm Reduc...0.999574
252After working for 48 hours tearful NHS nurse u...[-0.020220007747411728, 0.012734449468553066, ...negativenegativeAfter working for 48 hours tearful NHS nurse u...0.999954
\n","

1200 rows × 6 columns

\n","
"],"text/plain":[" text ... sentiment_confidence\n","origin_index ... \n","387 In the wake of COVID-19, we are working with a... ... 0.999895\n","581 My first job was a stock boy at a grocery stor... ... 0.999992\n","559 #Shipping outlook cut to ‘negative’ as #coro... ... 0.999918\n","1063 @BBCNews Will never like these as more exposur... ... 0.999972\n","319 Reviewing national reporting, I am now aware o... ... 1.000000\n","... ... ... ...\n","348 Real Heroes in Covid 19 - Supermarket staff, #... ... 0.999999\n","169 Given the increasingly urgent emphasis on #Soc... ... 0.999937\n","1435 This government doesn't need anything research... ... 0.993930\n","729 @nuaansw has produced this COVID-19 Harm Reduc... ... 0.999574\n","252 After working for 48 hours tearful NHS nurse u... ... 0.999954\n","\n","[1200 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Fxx4yNkNVGFl","executionInfo":{"status":"ok","timestamp":1614265643566,"user_tz":-300,"elapsed":293794,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4757bb5e-02e6-4978-b52c-a8245ae2dd9c"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.85 0.92 0.88 143\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.92 0.84 0.88 157\n","\n"," accuracy 0.88 300\n"," macro avg 0.59 0.59 0.59 300\n","weighted avg 0.89 0.88 0.88 300\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"BD5OKO4Umc5U"},"source":["# 4. Test Model on 20 languages!"]},{"cell_type":"code","metadata":{"id":"OQ72hP9unML7","colab":{"base_uri":"https://localhost:8080/","height":792},"executionInfo":{"status":"ok","timestamp":1614265758435,"user_tz":-300,"elapsed":114880,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f6d3595b-8abf-47a4-8d65-c002056ecfe0"},"source":["train_df = pd.read_csv(\"/content/Corona_NLP_train_multi_lingual.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.89 0.93 0.91 44\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.89 0.93 56\n","\n"," accuracy 0.91 100\n"," macro avg 0.62 0.61 0.61 100\n","weighted avg 0.93 0.91 0.92 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textxx_embed_sentence_labse_embeddingsysentimentdocumentsentiment_confidence
origin_index
0#Cheerios Hersteller @GeneralMills hat am Mitt...[0.009235074743628502, -0.05358916148543358, 0...positivepositive#Cheerios Hersteller @GeneralMills hat am Mitt...0.999981
1ต้องไปเยี่ยมชมเมื่อเช้านี้ซึ่งพวกเขาได้เปลี่ยน...[-0.0758102685213089, 0.023602211847901344, -0...positivepositiveต้องไปเยี่ยมชมเมื่อเช้านี้ซึ่งพวกเขาได้เปลี่ยน...0.999974
2मुझे पहली बार Covid-19 के लक्षण होने के कारण ए...[0.0010586004937067628, 0.014147285372018814, ...negativenegativeमुझे पहली बार Covid-19 के लक्षण होने के कारण ए...0.999977
3公元前2周的封锁期间更有可能死于饥饿,由于恐慌的买家,我们没有食物了。 #新冠病毒[-0.012551132589578629, 0.034000080078840256, ...negativenegative公元前2周的封锁期间更有可能死于饥饿,由于恐慌的买家,我们没有食物了。 #新冠病毒1.000000
4Don't move around unnecessary \\r\\r\\r\\nStay at...[-0.026801805943250656, -0.0068460507318377495...positivepositiveDon't move around unnecessary Stay at home. Us...0.998435
.....................
95Киберкылмышты жөнөкөйлөштүрүү максатында COVID...[-0.016219811514019966, -0.07136885076761246, ...negativenegativeКиберкылмышты жөнөкөйлөштүрүү максатында COVID...1.000000
96Ich bin alles dafür, die Kurve zu glätten und ...[-0.054645996540784836, -0.028411071747541428,...negativenegativeIch bin alles dafür, die Kurve zu glätten und ...1.000000
97איר זוכט צו רעדן צו עמעצער וואָס אַרבעט אין אַ...[-0.053356610238552094, -0.020032551139593124,...positivepositiveאיר זוכט צו רעדן צו עמעצער וואָס אַרבעט אין אַ...0.999996
98Comment les bureaux de poste gèrent le boom de...[-0.01647106371819973, -0.004591759294271469, ...positivepositiveComment les bureaux de poste gèrent le boom de...0.999818
99Acabo de ver un artículo que dice que las pers...[-0.030190108343958855, 0.0009936955757439137,...positivepositiveAcabo de ver un artículo que dice que las pers...0.999787
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" text ... sentiment_confidence\n","origin_index ... \n","0 #Cheerios Hersteller @GeneralMills hat am Mitt... ... 0.999981\n","1 ต้องไปเยี่ยมชมเมื่อเช้านี้ซึ่งพวกเขาได้เปลี่ยน... ... 0.999974\n","2 मुझे पहली बार Covid-19 के लक्षण होने के कारण ए... ... 0.999977\n","3 公元前2周的封锁期间更有可能死于饥饿,由于恐慌的买家,我们没有食物了。 #新冠病毒 ... 1.000000\n","4 Don't move around unnecessary \\r\\r\\r\\nStay at... ... 0.998435\n","... ... ... ...\n","95 Киберкылмышты жөнөкөйлөштүрүү максатында COVID... ... 1.000000\n","96 Ich bin alles dafür, die Kurve zu glätten und ... ... 1.000000\n","97 איר זוכט צו רעדן צו עמעצער וואָס אַרבעט אין אַ... ... 0.999996\n","98 Comment les bureaux de poste gèrent le boom de... ... 0.999818\n","99 Acabo de ver un artículo que dice que las pers... ... 0.999787\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614265760808,"user_tz":-300,"elapsed":2399,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"38a60b34-c232-4952-fc72-9ac86197fa75"},"source":["\n","fitted_pipe.predict(\"5000 people died because of COVID 19 Today!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.025880252942442894, -0.031868163496255875,...negative5000 people died because of COVID 19 Today!!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.025880252942442894, -0.031868163496255875,... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614265763275,"user_tz":-300,"elapsed":2480,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"42392194-8933-4852-de5e-2704e16911e1"},"source":["fitted_pipe.predict(\"We finally found a cure to COVID!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.016816433519124985, -0.048802293837070465,...positiveWe finally found a cure to COVID!!0.999656
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.016816433519124985, -0.048802293837070465,... ... 0.999656\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614265765582,"user_tz":-300,"elapsed":2319,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"13aae876-e205-4190-f4d2-67cf57f8a909"},"source":["# german for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"5000 Menschen starben heute an COVID 19 !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.026059169322252274, -0.023131389170885086,...negative5000 Menschen starben heute an COVID 19 !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.026059169322252274, -0.023131389170885086,... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614265768102,"user_tz":-300,"elapsed":2533,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7e812a0b-c9c5-4ff1-9916-4887821ec8ee"},"source":["# german for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Wir haben endlich ein Heilmittel gegen COVID gefunden !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.019082775339484215, -0.04215678572654724, ...positiveWir haben endlich ein Heilmittel gegen COVID g...0.999515
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.019082775339484215, -0.04215678572654724, ... ... 0.999515\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":51}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614265770629,"user_tz":-300,"elapsed":2541,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2e067e09-358a-4139-f379-45c12392394c"},"source":["# Chinese for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"5000人因今天的Covid 19人死了! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.008618051186203957, -0.01350542064756155, ...negative5000人因今天的Covid 19人死了!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.008618051186203957, -0.01350542064756155, ... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":52}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614265773351,"user_tz":-300,"elapsed":2732,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"fad0fe6b-18f0-49aa-dc36-e7e06219f214"},"source":["# Chinese for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"我们终于找到了治愈COVID的方法! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.01916874758899212, -0.06377226114273071, -...positive我们终于找到了治愈COVID的方法!0.998607
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.01916874758899212, -0.06377226114273071, -... ... 0.998607\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":53}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614265776019,"user_tz":-300,"elapsed":2686,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c8b43f59-8d0b-4afc-9fc9-d526d62e7835"},"source":["# Afrikaans for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"5000 mense is dood weens COVID 19 Vandag !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.02801789715886116, -0.04049520194530487, -...negative5000 mense is dood weens COVID 19 Vandag !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.02801789715886116, -0.04049520194530487, -... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":54}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614265778161,"user_tz":-300,"elapsed":2158,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5acd6b80-3b97-4cd9-d9fe-8102d3f8e30c"},"source":["# Afrikaans for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Ons het uiteindelik 'n geneesmiddel gevind om te covid !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.03133018687367439, -0.03976881504058838, -...positiveOns het uiteindelik 'n geneesmiddel gevind om ...0.999834
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.03133018687367439, -0.03976881504058838, -... ... 0.999834\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":55}]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["# The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"7ksJosuTOYpE","executionInfo":{"status":"ok","timestamp":1614265780694,"user_tz":-300,"elapsed":2546,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cd28f2ac-ee0a-4eec-f1fe-a24df5be7dd6"},"source":["# Vietnamese for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Cuối cùng chúng tôi đã tìm ra cách chữa khỏi COVID !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.011992470361292362, -0.08133696019649506, ...positiveCuối cùng chúng tôi đã tìm ra cách chữa khỏi C...0.921375
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.011992470361292362, -0.08133696019649506, ... ... 0.921375\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":56}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VfG3UaCTEZB_","executionInfo":{"status":"ok","timestamp":1614271551252,"user_tz":-300,"elapsed":5888,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d2986221-dc09-4775-fdda-29df1c00bbf8"},"source":["# Vietnamese for: 'Many people lost their lives to the virus'\n","fitted_pipe.predict(\"Nhiều người đã mất mạng vì virus\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[0.057947225868701935, -0.03248953819274902, -...negativeNhiều người đã mất mạng vì virus0.999957
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [0.057947225868701935, -0.03248953819274902, -... ... 0.999957\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":85}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614265784023,"user_tz":-300,"elapsed":3342,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"abd4a1d7-8192-4ebc-af01-e3503c8d3f61"},"source":["# Japanese for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"今日はCOVID19で5000人が亡くなりました!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.027568351477384567, -0.046357180923223495,...negative今日はCOVID19で5000人が亡くなりました!!0.999995
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.027568351477384567, -0.046357180923223495,... ... 0.999995\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":57}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":123},"id":"-RjXWbFIPvIs","executionInfo":{"status":"ok","timestamp":1614274380023,"user_tz":-300,"elapsed":5620,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a9c7496d-7710-4e96-c497-76fe532221da"},"source":["# Japanese for: 'We are finally free from the virus !! We can now live our lives the way we want !'\n","fitted_pipe.predict(\"ついにウイルスから解放されました!!私たちは今、私たちが望むように私たちの生活を送ることができます!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[0.040638964623212814, -0.03328423202037811, -...positiveついにウイルスから解放されました!!私たちは今、私たちが望むように私たちの生活を送ることがで...0.998569
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [0.040638964623212814, -0.03328423202037811, -... ... 0.998569\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":86}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"ifRhs6e7OcR3","executionInfo":{"status":"ok","timestamp":1614265785622,"user_tz":-300,"elapsed":1618,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"00f924b3-415d-4021-cff9-d810007b5148"},"source":["# Zulu for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Ekugcineni sathola ikhambi le-Covion !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.028748247772455215, -0.05506820231676102, ...positiveEkugcineni sathola ikhambi le-Covion !!0.990476
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.028748247772455215, -0.05506820231676102, ... ... 0.990476\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":58}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"6uelDwq4xdWv","executionInfo":{"status":"ok","timestamp":1614265789157,"user_tz":-300,"elapsed":3546,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"030328e3-d339-4df7-dc69-9487327a12c5"},"source":["# Zulu for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"Kushone abantu abayi-5000 ngenxa ye-COVID 19 Namuhla !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.028865862637758255, -0.025487471371889114,...negativeKushone abantu abayi-5000 ngenxa ye-COVID 19 N...1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.028865862637758255, -0.025487471371889114,... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":59}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614265790122,"user_tz":-300,"elapsed":971,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"11aa06ef-9718-40e0-ecfc-d8ef499c3a09"},"source":["# Turkish for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"Bugün Covid 19 yüzünden 5000 kişi öldü !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.019384166225790977, -0.01711968705058098, ...negativeBugün Covid 19 yüzünden 5000 kişi öldü !!0.999975
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.019384166225790977, -0.01711968705058098, ... ... 0.999975\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":60}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614265793803,"user_tz":-300,"elapsed":3696,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f150e53d-abf7-4e40-9989-9985840e5a4e"},"source":["# Turkish for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Sonunda COVID'e bir tedavi bulduk !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.02832956053316593, -0.05583049729466438, -...positiveSonunda COVID'e bir tedavi bulduk !!0.998565
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.02832956053316593, -0.05583049729466438, -... ... 0.998565\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":61}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614265795700,"user_tz":-300,"elapsed":1904,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f9768126-f481-47f3-ab96-da1e9a319751"},"source":["# Hebrew for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"Bugün Covid 19 yüzünden 5000 kişi öldü !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.019384166225790977, -0.01711968705058098, ...negativeBugün Covid 19 yüzünden 5000 kişi öldü !!0.999975
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.019384166225790977, -0.01711968705058098, ... ... 0.999975\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":62}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614265797387,"user_tz":-300,"elapsed":1693,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"59c6461d-0d5b-4d6c-a61d-e72e2272be2b"},"source":["# Hebrew for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"סוף סוף מצאנו תרופה ל- COVID !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.03819584101438522, -0.056543394923210144, ...positiveסוף סוף מצאנו תרופה ל- COVID !!0.997294
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.03819584101438522, -0.056543394923210144, ... ... 0.997294\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":63}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614265801129,"user_tz":-300,"elapsed":3751,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"70a56069-bd6c-41fb-a113-61e3dbc5c04d"},"source":["# Telugu for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"Bugün Covid 19 yüzünden 5000 kişi öldü !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.019384166225790977, -0.01711968705058098, ...negativeBugün Covid 19 yüzünden 5000 kişi öldü !!0.999975
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.019384166225790977, -0.01711968705058098, ... ... 0.999975\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":64}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614265802640,"user_tz":-300,"elapsed":1517,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"13aae8b0-0c0e-41ed-abbc-bd2af611835c"},"source":["# Telugu for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"చివరకు మేము కోవిడ్ కు నివారణను కనుగొన్నాము !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.0431729294359684, -0.054265137761831284, -...positiveచివరకు మేము కోవిడ్ కు నివారణను కనుగొన్నాము !!0.984499
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.0431729294359684, -0.054265137761831284, -... ... 0.984499\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":65}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614265804129,"user_tz":-300,"elapsed":1504,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"196ecafe-781d-4bef-c12b-f900a7796c8a"},"source":["# Russian for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"Сегодня 5000 человек погибли из-за COVID 19 !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.0318034328520298, -0.03972546011209488, -0...negativeСегодня 5000 человек погибли из-за COVID 19 !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.0318034328520298, -0.03972546011209488, -0... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":66}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614265807135,"user_tz":-300,"elapsed":3022,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"483bd323-7b49-40a8-d34a-98e095ce6606"},"source":["# Russian for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Мы наконец нашли лекарство от COVID !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.03489401191473007, -0.045090336352586746, ...positiveМы наконец нашли лекарство от COVID !!0.999111
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.03489401191473007, -0.045090336352586746, ... ... 0.999111\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":67}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614265810199,"user_tz":-300,"elapsed":3077,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"084fe49e-011f-42f9-be6a-b61632d8b46a"},"source":["# Urdu for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"آج کوویڈ 19 کی وجہ سے 5000 افراد ہلاک ہوگئے !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.0472625195980072, -0.04384293034672737, -0...negativeآج کوویڈ 19 کی وجہ سے 5000 افراد ہلاک ہوگئے !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.0472625195980072, -0.04384293034672737, -0... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":68}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614265811584,"user_tz":-300,"elapsed":1391,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"25cff301-9abc-4158-a501-5008d7fe581d"},"source":["# Urdu for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Мы наконец нашли лекарство от COVID !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.03489401191473007, -0.045090336352586746, ...positiveМы наконец нашли лекарство от COVID !!0.999111
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.03489401191473007, -0.045090336352586746, ... ... 0.999111\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":69}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614265813854,"user_tz":-300,"elapsed":2279,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"35d27ac7-0b7c-4f12-f450-8423f7e836c5"},"source":["# hindi for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"COVID 19 की वजह से 5000 लोग मारे गए !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.013016759417951107, -0.0392494760453701, -...negativeCOVID 19 की वजह से 5000 लोग मारे गए !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.013016759417951107, -0.0392494760453701, -... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":70}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614265816329,"user_tz":-300,"elapsed":2482,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"93240961-5ca4-465c-94f6-f891f9b439f5"},"source":["# hindi for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"हम अंत में कोविद को एक इलाज मिला !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.04375813901424408, -0.05282778665423393, -...positiveहम अंत में कोविद को एक इलाज मिला !!0.999338
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.04375813901424408, -0.05282778665423393, -... ... 0.999338\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":71}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614265820153,"user_tz":-300,"elapsed":3835,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8b29ffec-facc-43ef-f6c2-544ed6ba78e4"},"source":["# Tartar for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"COVID 19 аркасында 5000 кеше үлде Бүген !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.027416089549660683, -0.03223974257707596, ...negativeCOVID 19 аркасында 5000 кеше үлде Бүген !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.027416089549660683, -0.03223974257707596, ... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":72}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614265821662,"user_tz":-300,"elapsed":1565,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"120a4b4a-8252-460d-b0be-6b952d1e6c53"},"source":["\t\n","# Tartar for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Ниһаять, без COVID өчен дәвалау таптык !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.040308788418769836, -0.05435319244861603, ...positiveНиһаять, без COVID өчен дәвалау таптык !!0.999670
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.040308788418769836, -0.05435319244861603, ... ... 0.999670\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":73}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614265823923,"user_tz":-300,"elapsed":2276,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"34a76371-9b08-4269-c469-fbe737b4a5d0"},"source":["\t\n","# French for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"5000 personnes sont mortes à cause du COVID 19 aujourd'hui !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.025422198697924614, -0.04044008627533913, ...negative5000 personnes sont mortes à cause du COVID 19...1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.025422198697924614, -0.04044008627533913, ... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":74}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614265826276,"user_tz":-300,"elapsed":2359,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"65f119bd-1173-42b3-a11d-cd8bf3cf5b93"},"source":["# French for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Nous avons finalement trouvé un remède à Covid !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.03685029596090317, -0.04665077477693558, -...positiveNous avons finalement trouvé un remède à Covid !!0.999732
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.03685029596090317, -0.04665077477693558, -... ... 0.999732\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":75}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614274481993,"user_tz":-300,"elapsed":5260,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a74007d6-5e65-426e-e1ce-a169ccebcd77"},"source":["# Thai for: 'Many people faced depression because of the virus '\n","fitted_pipe.predict(\"หลายคนต้องเผชิญกับภาวะซึมเศร้าเพราะไวรัส\")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.013120845891535282, -0.056096360087394714,...negativeหลายคนต้องเผชิญกับภาวะซึมเศร้าเพราะไวรัส1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.013120845891535282, -0.056096360087394714,... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":89}]},{"cell_type":"code","metadata":{"id":"R6nKI7C3QKa3"},"source":["# Thai for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"หลายคนเสียชีวิตให้กับไวรัส \")\n","\t"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614265831073,"user_tz":-300,"elapsed":2321,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3417d6f8-4f2b-4647-97fe-b798ae79f89e"},"source":["# Khmer for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"ទីបំផុតយើងបានរកឃើញការព្យាបាលដើម្បី covid !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.0293172188103199, -0.05483138933777809, -0...positiveទីបំផុតយើងបានរកឃើញការព្យាបាលដើម្បី covid !!0.999511
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.0293172188103199, -0.05483138933777809, -0... ... 0.999511\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":77}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"beoCtm4xQf2P","executionInfo":{"status":"ok","timestamp":1614274517614,"user_tz":-300,"elapsed":3570,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f7a12437-344b-4bb2-d8be-a1cbc80cf40e"},"source":["# Khmer for: 'Many people faced depression because of the virus '\n","fitted_pipe.predict(\"មនុស្សជាច្រើនប្រឈមនឹងជំងឺធ្លាក់ទឹកចិត្តដោយសារតែវីរុស\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[0.010295511223375797, -0.045677755028009415, ...negativeមនុស្សជាច្រើនប្រឈមនឹងជំងឺធ្លាក់ទឹកចិត្តដោយសារត...1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [0.010295511223375797, -0.045677755028009415, ... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":90}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"sZlmLhajPoBb","executionInfo":{"status":"ok","timestamp":1614265833338,"user_tz":-300,"elapsed":2271,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f6ca485d-6916-4076-d8da-4fb4de76c312"},"source":["# Yiddish for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"5000 מענטשן געשטארבן ווייַל פון COVID 19 הייַנט !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.026097236201167107, -0.03218623995780945, ...negative5000 מענטשן געשטארבן ווייַל פון COVID 19 הייַנ...1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.026097236201167107, -0.03218623995780945, ... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":78}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614265835936,"user_tz":-300,"elapsed":2608,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6dacd83b-2beb-4e81-f615-e47dd2d98f13"},"source":["# Yiddish for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"מיר לעסאָף געפֿונען אַ היילונג צו קאָוויד !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.04493892192840576, -0.054013773798942566, ...positiveמיר לעסאָף געפֿונען אַ היילונג צו קאָוויד !!0.999784
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.04493892192840576, -0.054013773798942566, ... ... 0.999784\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":79}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614265838103,"user_tz":-300,"elapsed":2176,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1575b738-14e9-46c1-b015-58bdaf7917c0"},"source":["\t\n","# Kygrgyz for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"COVID 19дун айынан 5000 адам каза болду !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.019092924892902374, -0.03979476913809776, ...negativeCOVID 19дун айынан 5000 адам каза болду !!1.000000
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.019092924892902374, -0.03979476913809776, ... ... 1.000000\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":80}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614265840677,"user_tz":-300,"elapsed":2585,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e8ffbc0c-6d03-4ca0-f719-2423c0f2b137"},"source":["# Kygrgyz for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"Акыры, ковидди айыктырдык !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.030513573437929153, -0.06864563375711441, ...positiveАкыры, ковидди айыктырдык !!0.998759
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.030513573437929153, -0.06864563375711441, ... ... 0.998759\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":81}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614265842915,"user_tz":-300,"elapsed":2245,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"64ae5163-20df-4679-83af-213d0d36f80b"},"source":["# Tamil for: '5000 people died because of COVID19 Today!!'\n","fitted_pipe.predict(\"5000 பேர் இன்று Covid 19 இன்று இறந்தனர் !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.025186140090227127, -0.02476668730378151, ...negative5000 பேர் இன்று Covid 19 இன்று இறந்தனர் !!0.999998
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.025186140090227127, -0.02476668730378151, ... ... 0.999998\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":82}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614265845255,"user_tz":-300,"elapsed":2348,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5a0a7150-0eb5-400a-9dd3-b38f8f1ab49c"},"source":["# Tamil for: 'We finally found a cure to COVID!!'\n","fitted_pipe.predict(\"COVID க்கு ஒரு தீர்வைக் கண்டுபிடித்தோம் !! \")\n","\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentimentdocumentsentiment_confidence
origin_index
0[-0.025669323280453682, -0.05522870644927025, ...positiveCOVID க்கு ஒரு தீர்வைக் கண்டுபிடித்தோம் !!0.905109
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.025669323280453682, -0.05522870644927025, ... ... 0.905109\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":83}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613911765181,"user_tz":-300,"elapsed":2799490,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ed7a1530-71f6-408c-b580-6c2a765d250b"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":105},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613912046180,"user_tz":-300,"elapsed":140838,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2e961bfa-0cee-4669-d56f-2175a4015b5a"},"source":["stored_model_path = './models/classifier_dl_trained' \n","hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('Everything is under control !')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentimentdocumentxx_embed_sentence_labse_embeddingssentiment_confidence
origin_index
0positiveEverything is under control ![-0.02810787223279476, -0.06088888645172119, -...0.999970
\n","
"],"text/plain":[" sentiment ... sentiment_confidence\n","origin_index ... \n","0 positive ... 0.999970\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UqXHHH-TQTuu","executionInfo":{"status":"ok","timestamp":1613855324504,"user_tz":-300,"elapsed":1038,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b7f1025d-db21-423f-b45e-6bf676d83d85"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_reddit.ipynb b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_reddit.ipynb new file mode 100644 index 00000000..a0e5f492 --- /dev/null +++ b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_reddit.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_multi_lingual_training_sentiment_classifier_demo_reddit.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/multi_lingual_text_classification/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_reddit.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 class Reddit comments sentiment classifier training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614262739805,"user_tz":-300,"elapsed":89714,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7dbb19af-8e37-49da-bd1c-925ad3c1a763"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 77kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 19.7MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=32cc92322f5ad0116734a766394fc081f85f2ea384c673eb154fe7cee8b14f82\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Reddit Sentiment dataset \n","https://www.kaggle.com/cosmos98/twitter-and-reddit-sentimental-analysis-dataset\n","#Context\n","\n","This is was a Dataset Created as a part of the university Project On Sentimental Analysis On Multi-Source Social Media Platforms using PySpark."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614262739814,"user_tz":-300,"elapsed":89672,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ce24e73a-6e5e-4e69-c0cd-11466b2b75ce"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/Reddit_Data_multi_lingual.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 14:17:49-- http://ckl-it.de/wp-content/uploads/2021/02/Reddit_Data_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 193200 (189K) [text/csv]\n","Saving to: ‘Reddit_Data_multi_lingual.csv’\n","\n","Reddit_Data_multi_l 100%[===================>] 188.67K --.-KB/s in 0.07s \n","\n","2021-02-25 14:17:50 (2.51 MB/s) - ‘Reddit_Data_multi_lingual.csv’ saved [193200/193200]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614262739817,"user_tz":-300,"elapsed":89626,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"94a2db5c-8eff-4f6a-9664-0a8265e7502f"},"source":["import pandas as pd\n","train_path = '/content/Reddit_Data_multi_lingual.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
26tea partier expresses support for namo after ...negative
485tried being secular before india after seeing...positive
518your stage you should strong enough take the ...positive
299they were worried about the woman rights they...negative
107please don’ editorialise post titles you ha...negative
.........
32most religions have dogmatic orthodox well eso...positive
126keep fighting gif today twgok girls kusunoki k...positive
531take some notes valve this jpg really nice sla...positive
440great goalpositive
319modi the leader the indian neo nazi party bjp ...positive
\n","

480 rows × 2 columns

\n","
"],"text/plain":[" text y\n","26 tea partier expresses support for namo after ... negative\n","485 tried being secular before india after seeing... positive\n","518 your stage you should strong enough take the ... positive\n","299 they were worried about the woman rights they... negative\n","107 please don’ editorialise post titles you ha... negative\n",".. ... ...\n","32 most religions have dogmatic orthodox well eso... positive\n","126 keep fighting gif today twgok girls kusunoki k... positive\n","531 take some notes valve this jpg really nice sla... positive\n","440 great goal positive\n","319 modi the leader the indian neo nazi party bjp ... positive\n","\n","[480 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":642},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1614263361027,"user_tz":-300,"elapsed":710804,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"59ed578b-4a9e-418b-fddd-d8e82b5b8cfe"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(60) \n","trainable_pipe['sentiment_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.98 0.99 0.98 229\n"," positive 0.99 0.98 0.98 251\n","\n"," accuracy 0.98 480\n"," macro avg 0.98 0.98 0.98 480\n","weighted avg 0.98 0.98 0.98 480\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textsentiment_confidencesentimentyxx_embed_sentence_labse_embeddingsdocument
origin_index
26tea partier expresses support for namo after ...0.999853negativenegative[0.010386765003204346, 0.024560054764151573, 0...tea partier expresses support for namo after e...
485tried being secular before india after seeing...0.999999positivepositive[-0.02900528907775879, 0.04157489538192749, -0...tried being secular before india after seeing ...
518your stage you should strong enough take the ...0.999873positivepositive[0.013262578286230564, 0.04397854581475258, -0...your stage you should strong enough take the b...
299they were worried about the woman rights they...0.999381negativenegative[0.04970186576247215, -0.02286474034190178, -0...they were worried about the woman rights they ...
107please don’ editorialise post titles you ha...0.996976negativenegative[-0.0039879390969872475, -0.013197453692555428...please don’ editorialise post titles you hav...
.....................
32most religions have dogmatic orthodox well eso...0.997794positivepositive[-0.01782401092350483, 0.008441080339252949, -...most religions have dogmatic orthodox well eso...
126keep fighting gif today twgok girls kusunoki k...0.999957positivepositive[0.06429395824670792, 0.006657848134636879, -0...keep fighting gif today twgok girls kusunoki k...
531take some notes valve this jpg really nice sla...0.999426positivepositive[-0.023985132575035095, -0.040043871849775314,...take some notes valve this jpg really nice sla...
440great goal1.000000positivepositive[0.028093935921788216, 0.007526209577918053, -...great goal
319modi the leader the indian neo nazi party bjp ...0.997143positivepositive[0.00526454858481884, 0.04812856763601303, 0.0...modi the leader the indian neo nazi party bjp ...
\n","

480 rows × 6 columns

\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","26 tea partier expresses support for namo after ... ... tea partier expresses support for namo after e...\n","485 tried being secular before india after seeing... ... tried being secular before india after seeing ...\n","518 your stage you should strong enough take the ... ... your stage you should strong enough take the b...\n","299 they were worried about the woman rights they... ... they were worried about the woman rights they ...\n","107 please don’ editorialise post titles you ha... ... please don’ editorialise post titles you hav...\n","... ... ... ...\n","32 most religions have dogmatic orthodox well eso... ... most religions have dogmatic orthodox well eso...\n","126 keep fighting gif today twgok girls kusunoki k... ... keep fighting gif today twgok girls kusunoki k...\n","531 take some notes valve this jpg really nice sla... ... take some notes valve this jpg really nice sla...\n","440 great goal ... great goal\n","319 modi the leader the indian neo nazi party bjp ... ... modi the leader the indian neo nazi party bjp ...\n","\n","[480 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614263457855,"user_tz":-300,"elapsed":807627,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3cbba159-ce6d-47e9-dacb-24ffdf56753d"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.81 0.85 0.83 71\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.75 0.67 0.71 49\n","\n"," accuracy 0.78 120\n"," macro avg 0.52 0.51 0.51 120\n","weighted avg 0.79 0.78 0.78 120\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"BD5OKO4Umc5U"},"source":["#4. Test Model with 20 languages!"]},{"cell_type":"code","metadata":{"id":"OQ72hP9unML7","colab":{"base_uri":"https://localhost:8080/","height":606},"executionInfo":{"status":"ok","timestamp":1614263547292,"user_tz":-300,"elapsed":897033,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"96b46d9f-59a5-49fb-b8bd-5d5517a9d10e"},"source":["train_df = pd.read_csv(\"Reddit_Data_multi_lingual.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.80 0.83 0.82 48\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.84 0.79 0.81 52\n","\n"," accuracy 0.81 100\n"," macro avg 0.55 0.54 0.54 100\n","weighted avg 0.82 0.81 0.81 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textsentiment_confidencesentimentyxx_embed_sentence_labse_embeddingsdocument
origin_index
0je pravda, že přerušili moc, jaký kongres douc...0.901069negativepositive[0.04707138240337372, -0.02307470142841339, -0...je pravda, že přerušili moc, jaký kongres douc...
1今月のようにジルーをより良く仕上げる1.000000positivepositive[-0.016900546848773956, -0.02084471471607685, ...今月のようにジルーをより良く仕上げる
2נראה חרא עכשיו אבל עדיין גאה0.994826positivepositive[-0.02598225139081478, -0.02113635651767254, -...נראה חרא עכשיו אבל עדיין גאה
3פלור הבוער שונא את האל הרע הטוב ביותר0.999867negativenegative[-0.04441581293940544, -0.010804536752402782, ...פלור הבוער שונא את האל הרע הטוב ביותר
4पूछ सकते हैं कि आप इस शक्तिशाली चीज़ के साथ क्...0.853560positivepositive[0.04069403186440468, -0.027412423864006996, 0...पूछ सकते हैं कि आप इस शक्तिशाली चीज़ के साथ क्...
.....................
95这并不奇怪0.916389negativepositive[0.026199793443083763, -0.061731234192848206, ...这并不奇怪
96এই পোস্টটি বিধি লঙ্ঘন করে সর্বশেষে আপনার ছাগল ...0.999999negativenegative[0.03437671437859535, -0.03329189494252205, -0...এই পোস্টটি বিধি লঙ্ঘন করে সর্বশেষে আপনার ছাগল ...
97سنا ہے براہ راست لائن نریندر مودی ہے جو کسی بھ...0.999968positivepositive[-0.0582120418548584, 0.05610270798206329, 0.0...سنا ہے براہ راست لائن نریندر مودی ہے جو کسی بھ...
98allah lanet olsun bu şərhlərə hindistandan çox...0.686604positivenegative[-0.021423539146780968, 0.011710301972925663, ...allah lanet olsun bu şərhlərə hindistandan çox...
99อัห์มดาบาดมีโอกาสที่จะกลายเป็นเมืองรถไฟใต้ดินท...0.999983positivepositive[0.0035696288105100393, 0.017301443964242935, ...อัห์มดาบาดมีโอกาสที่จะกลายเป็นเมืองรถไฟใต้ดินท...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","0 je pravda, že přerušili moc, jaký kongres douc... ... je pravda, že přerušili moc, jaký kongres douc...\n","1 今月のようにジルーをより良く仕上げる ... 今月のようにジルーをより良く仕上げる\n","2 נראה חרא עכשיו אבל עדיין גאה ... נראה חרא עכשיו אבל עדיין גאה\n","3 פלור הבוער שונא את האל הרע הטוב ביותר ... פלור הבוער שונא את האל הרע הטוב ביותר\n","4 पूछ सकते हैं कि आप इस शक्तिशाली चीज़ के साथ क्... ... पूछ सकते हैं कि आप इस शक्तिशाली चीज़ के साथ क्...\n","... ... ... ...\n","95 这并不奇怪 ... 这并不奇怪\n","96 এই পোস্টটি বিধি লঙ্ঘন করে সর্বশেষে আপনার ছাগল ... ... এই পোস্টটি বিধি লঙ্ঘন করে সর্বশেষে আপনার ছাগল ...\n","97 سنا ہے براہ راست لائن نریندر مودی ہے جو کسی بھ... ... سنا ہے براہ راست لائن نریندر مودی ہے جو کسی بھ...\n","98 allah lanet olsun bu şərhlərə hindistandan çox... ... allah lanet olsun bu şərhlərə hindistandan çox...\n","99 อัห์มดาบาดมีโอกาสที่จะกลายเป็นเมืองรถไฟใต้ดินท... ... อัห์มดาบาดมีโอกาสที่จะกลายเป็นเมืองรถไฟใต้ดินท...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614269411545,"user_tz":-300,"elapsed":4682,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cc445a5c-e32e-4c40-92f0-564837ce3032"},"source":["fitted_pipe.predict(\"I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away... \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999973negative[-0.023605991154909134, -0.028282877057790756,...I am depressed because of my recent break up a...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999973 ... I am depressed because of my recent break up a...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614269309123,"user_tz":-300,"elapsed":5162,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"29b6a1ae-cb7a-4ca3-8acc-c0d99167cfc6"},"source":["fitted_pipe.predict(\"The love of my life proposed me , I feel like the happiest person alive!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999999positive[-0.005035023204982281, 0.022905221208930016, ...The love of my life proposed me , I feel like ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999999 ... The love of my life proposed me , I feel like ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614263557729,"user_tz":-300,"elapsed":907370,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c81fa909-983a-4e15-8964-6859ce69ac98"},"source":["# German for:'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"Die Liebe meines Lebens schlug mich vor, ich fühle mich wie die glücklichste Person am Leben!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999998positive[0.006932579912245274, -0.00897424016147852, -...Die Liebe meines Lebens schlug mich vor, ich f...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999998 ... Die Liebe meines Lebens schlug mich vor, ich f...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614269430599,"user_tz":-300,"elapsed":6817,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"58f6bcdf-2d1b-4be7-a2c5-4ddccc7db7dd"},"source":["# German for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Ich bin wegen meiner kürzlichen Trennung depressiv und verbringe meine ganze Zeit damit zu weinen. Ich möchte, dass die Schmerzen verschwinden ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999994negative[-0.04037580266594887, -0.01992807351052761, 0...Ich bin wegen meiner kürzlichen Trennung depre...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999994 ... Ich bin wegen meiner kürzlichen Trennung depre...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614269439782,"user_tz":-300,"elapsed":5547,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"78a3b5ec-9f29-44a6-ae6d-6d19090f97fd"},"source":["\n","# Chinese for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"由于最近的分手,我感到沮丧,我花了所有的时间哭泣,我希望痛苦能够消失... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999958negative[-0.04107382893562317, -0.04438792169094086, 0...由于最近的分手,我感到沮丧,我花了所有的时间哭泣,我希望痛苦能够消失...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999958 ... 由于最近的分手,我感到沮丧,我花了所有的时间哭泣,我希望痛苦能够消失...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614263566192,"user_tz":-300,"elapsed":915722,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b4e7e02f-10fa-4b6c-f54c-753954a5ca3f"},"source":["# Chinese for : \"The love of my life proposed me , I feel like the happiest person alive!\"\n","fitted_pipe.predict(\"我一生的爱向我提出了我,我感觉自己是最幸福的人!\")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
01.000000positive[-0.0253176037222147, -0.04454462602734566, -0...我一生的爱向我提出了我,我感觉自己是最幸福的人!
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 1.000000 ... 我一生的爱向我提出了我,我感觉自己是最幸福的人!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614263569180,"user_tz":-300,"elapsed":918692,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e4b6df23-1e7f-45e1-fd80-0cf97ac868ef"},"source":["# Afrikaans for 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"Die liefde van my lewe het my voorgestel, ek voel soos die gelukkigste persoon wat lewendig is!\")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999999positive[-0.017393898218870163, 0.005962143652141094, ...Die liefde van my lewe het my voorgestel, ek v...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999999 ... Die liefde van my lewe het my voorgestel, ek v...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":13}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614269451031,"user_tz":-300,"elapsed":5672,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a8616e7c-c69b-4af3-fea9-2793be1223b9"},"source":["# Afrikaans for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Ek is depressief as gevolg van my onlangse breuk en ek spandeer al my tyd om te huil, ek wil hê dat die pyn moet verdwyn ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999960negative[-0.042933885008096695, -0.033448245376348495,...Ek is depressief as gevolg van my onlangse bre...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999960 ... Ek is depressief as gevolg van my onlangse bre...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["# The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"wCcTS5gIu511","executionInfo":{"status":"ok","timestamp":1614263574837,"user_tz":-300,"elapsed":924308,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8f17d9c1-fac7-4937-8ccf-f3405100cd57"},"source":["# Vietnamese for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('Tình yêu của đời tôi đề xuất tôi, tôi cảm thấy như người hạnh phúc nhất còn sống!')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999998positive[-0.03576834872364998, -0.0172688327729702, -0...Tình yêu của đời tôi đề xuất tôi, tôi cảm thấy...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999998 ... Tình yêu của đời tôi đề xuất tôi, tôi cảm thấy...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lpQmMRA59REb","executionInfo":{"status":"ok","timestamp":1614269458982,"user_tz":-300,"elapsed":4708,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ae88f6a5-a2fd-4eb3-c4db-797ec74d8445"},"source":["# Vietnamese for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Tôi chán nản vì cuộc chia tay gần đây và tôi dành toàn bộ thời gian để khóc, tôi muốn nỗi đau qua đi ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999738negative[-0.00911672506481409, -0.007585278246551752, ...Tôi chán nản vì cuộc chia tay gần đây và tôi d...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999738 ... Tôi chán nản vì cuộc chia tay gần đây và tôi d...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614263578142,"user_tz":-300,"elapsed":927584,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1122a4a9-1d2c-4458-ddfb-deb349640f83"},"source":["\n","# Japanese for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('私の人生の愛は私を提案しました、私は生きている最も幸せな人のように感じます!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999999positive[-0.011561025865375996, 0.009653945453464985, ...私の人生の愛は私を提案しました、私は生きている最も幸せな人のように感じます!
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999999 ... 私の人生の愛は私を提案しました、私は生きている最も幸せな人のように感じます!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"h3k7_PFhxOve","executionInfo":{"status":"ok","timestamp":1614269471153,"user_tz":-300,"elapsed":4315,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"89d98b4e-c67a-4676-d6cb-d7c73a8afa86"},"source":["# Japanese for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"私は最近の別れのために落ち込んでいて、私はずっと泣いて過ごしています、私は痛みを取り除きたいです... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999992negative[-0.0351201631128788, -0.03604917600750923, 0....私は最近の別れのために落ち込んでいて、私はずっと泣いて過ごしています、私は痛みを取り除きたい...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999992 ... 私は最近の別れのために落ち込んでいて、私はずっと泣いて過ごしています、私は痛みを取り除きたい...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"6uelDwq4xdWv","executionInfo":{"status":"ok","timestamp":1614263582705,"user_tz":-300,"elapsed":932102,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cc72aa25-f496-4988-f912-524d427870b6"},"source":["# Zulu for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('Uthando lwempilo yami lungihlongosile, ngizwa sengathi umuntu ojabule kunabo bonke ephila!')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999999positive[-0.011278754100203514, -0.0050370218232274055...Uthando lwempilo yami lungihlongosile, ngizwa ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999999 ... Uthando lwempilo yami lungihlongosile, ngizwa ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VS5JE0tC9W-h","executionInfo":{"status":"ok","timestamp":1614269483014,"user_tz":-300,"elapsed":4164,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"952dce5c-338a-48da-b84c-460f59c52b0f"},"source":["# Zulu for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Ngicindezelekile ngenxa yokuhlukana kwami kwakamuva futhi ngichitha sonke isikhathi sami ngikhala, ngifuna ubuhlungu buphele ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999986negative[-0.01392589695751667, -0.0321076363325119, 0....Ngicindezelekile ngenxa yokuhlukana kwami kwak...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999986 ... Ngicindezelekile ngenxa yokuhlukana kwami kwak...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614263586051,"user_tz":-300,"elapsed":935430,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"230a6b79-542e-4dcb-f363-084556560f58"},"source":["# Turkish for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('Hayatımın aşkı bana teklif etti, yaşayan en mutlu insan gibi hissediyorum! ')\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999998positive[0.0015444562304764986, 0.01713963784277439, -...Hayatımın aşkı bana teklif etti, yaşayan en mu...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999998 ... Hayatımın aşkı bana teklif etti, yaşayan en mu...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"RFsJ9tZs9aCX","executionInfo":{"status":"ok","timestamp":1614269495682,"user_tz":-300,"elapsed":4986,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3d2facd9-a9f2-44f4-b717-5857d200254a"},"source":["# Turkish for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Son ayrılığımdan dolayı depresyondayım ve tüm zamanımı ağlayarak geçiriyorum, acının gitmesini istiyorum ... \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999989negative[-0.048465922474861145, -0.041023433208465576,...Son ayrılığımdan dolayı depresyondayım ve tüm ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999989 ... Son ayrılığımdan dolayı depresyondayım ve tüm ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":51}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614269506031,"user_tz":-300,"elapsed":5670,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7e58fbe8-ebb5-4440-ba1c-59303e720387"},"source":["# Hebrew for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"אני בדיכאון בגלל הפרידה האחרונה שלי ואני מבלה את כל זמני בבכי, אני רוצה שהכאב ייעלם ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999986negative[-0.04138199985027313, -0.05670205503702164, 0...אני בדיכאון בגלל הפרידה האחרונה שלי ואני מבלה ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999986 ... אני בדיכאון בגלל הפרידה האחרונה שלי ואני מבלה ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":52}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614263590763,"user_tz":-300,"elapsed":940099,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"32af7a1a-66e4-4909-9fcd-ef877a4467a9"},"source":["# Hebrew for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('אהבת חיי הציעה אותי, אני מרגישה כמו האדם המאושר ביותר בחיים!')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
01.000000positive[-0.021271968260407448, -0.021334702149033546,...אהבת חיי הציעה אותי, אני מרגישה כמו האדם המאוש...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 1.000000 ... אהבת חיי הציעה אותי, אני מרגישה כמו האדם המאוש...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614263594054,"user_tz":-300,"elapsed":943367,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2b73ea87-55b3-48d3-82a7-0a468060a1a5"},"source":["# Telugu for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('నా జీవితం యొక్క ప్రేమ నన్ను ప్రతిపాదించింది, సజీవంగా ఉన్న వ్యక్తిగా నేను భావిస్తున్నాను!' )"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999574positive[-0.011076054535806179, -0.022865092381834984,...నా జీవితం యొక్క ప్రేమ నన్ను ప్రతిపాదించింది, స...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999574 ... నా జీవితం యొక్క ప్రేమ నన్ను ప్రతిపాదించింది, స...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":22}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614269518012,"user_tz":-300,"elapsed":4784,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7db0efd3-cc9d-4d60-873c-735bdf2cbe12"},"source":["\n","# Telugu for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"నా ఇటీవలి విడిపోవడం వల్ల నేను నిరాశకు గురయ్యాను మరియు నా సమయాన్ని ఏడుస్తూనే ఉన్నాను, నొప్పి పోవాలని నేను కోరుకుంటున్నాను ... \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999970negative[-0.025107212364673615, -0.03688900172710419, ...నా ఇటీవలి విడిపోవడం వల్ల నేను నిరాశకు గురయ్యాన...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999970 ... నా ఇటీవలి విడిపోవడం వల్ల నేను నిరాశకు గురయ్యాన...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":53}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614269530474,"user_tz":-300,"elapsed":3872,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"670b3ef3-8f01-4303-a28a-42352b9ac3b3"},"source":["# Russian for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Я в депрессии из-за моего недавнего разрыва, и я все время плачу, я хочу, чтобы боль ушла ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999982negative[-0.04230489954352379, -0.02028733491897583, 0...Я в депрессии из-за моего недавнего разрыва, и...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999982 ... Я в депрессии из-за моего недавнего разрыва, и...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":54}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614263601297,"user_tz":-300,"elapsed":950555,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"856c24dd-7ae0-4ffc-d692-2ebb3b072ea3"},"source":["# Russian for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('Этот фильм был отличным!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
01.000000positive[-0.03249521926045418, -0.04056306555867195, -...Этот фильм был отличным!
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 1.000000 ... Этот фильм был отличным!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":25}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614269539385,"user_tz":-300,"elapsed":3977,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"34f52c5b-f57a-4410-8010-015fd8ba1bbe"},"source":["# Urdu for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"میں حالیہ بریک اپ کی وجہ سے افسردہ ہوں اور میں اپنا سارا وقت روتے ہوئے گزارتا ہوں ، میں چاہتا ہوں کہ درد دور ہو ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999937negative[-0.03198534622788429, -0.04250375181436539, 0...میں حالیہ بریک اپ کی وجہ سے افسردہ ہوں اور میں...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999937 ... میں حالیہ بریک اپ کی وجہ سے افسردہ ہوں اور میں...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":55}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614263606277,"user_tz":-300,"elapsed":955487,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0769fa63-688d-41d8-e2bd-1e4d726fd643"},"source":["# Urdu for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('میری زندگی کی محبت نے مجھے پیش کیا، مجھے سب سے خوشگوار شخص زندہ لگتا ہے!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999997positive[-0.014539845287799835, -0.022852811962366104,...میری زندگی کی محبت نے مجھے پیش کیا، مجھے سب سے...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999997 ... میری زندگی کی محبت نے مجھے پیش کیا، مجھے سب سے...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614263608674,"user_tz":-300,"elapsed":957866,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"91e6075f-2d8b-49ff-d18f-3194d9d4b74f"},"source":["# Hindi for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('मेरे जीवन के प्यार ने मुझे प्रस्तावित किया, मुझे लगता है कि सबसे खुश व्यक्ति जीवित है!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999987positive[-0.007552078925073147, 0.003644779557362199, ...मेरे जीवन के प्यार ने मुझे प्रस्तावित किया, मु...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999987 ... मेरे जीवन के प्यार ने मुझे प्रस्तावित किया, मु...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614269548900,"user_tz":-300,"elapsed":3962,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6f43b703-81f5-4e88-f823-c359cffb987b"},"source":["# Hindi for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"मेरे हालिया ब्रेक अप के कारण मैं उदास हूं और मैं अपना सारा समय रोने में बिताता हूं, मैं चाहता हूं कि दर्द दूर हो जाए ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999950negative[-0.03387507051229477, -0.03928767517209053, 0...मेरे हालिया ब्रेक अप के कारण मैं उदास हूं और म...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999950 ... मेरे हालिया ब्रेक अप के कारण मैं उदास हूं और म...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":56}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614269588311,"user_tz":-300,"elapsed":5382,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"77c7ea06-3ffe-47c8-df2e-939a29a9779f"},"source":["# Tartar for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Соңгы аерылышуым аркасында мин депрессияләнәм һәм бөтен вакытымны елыйм, авыртуның китүен телим ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999960negative[-0.04341090843081474, -0.044361814856529236, ...Соңгы аерылышуым аркасында мин депрессияләнәм ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999960 ... Соңгы аерылышуым аркасында мин депрессияләнәм ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":57}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614269589794,"user_tz":-300,"elapsed":6597,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"001ee135-f80f-49af-ab8f-32c3bc7af1e4"},"source":["# Tartar for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict('Тормышымның мәхәббәте миңа тәкъдим итте, мин үземне иң бәхетле кеше кебек хис итәм!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999999positive[-0.002561990637332201, -0.02031663805246353, ...Тормышымның мәхәббәте миңа тәкъдим итте, мин ү...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999999 ... Тормышымның мәхәббәте миңа тәкъдим итте, мин ү...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":58}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614269600749,"user_tz":-300,"elapsed":3832,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8cd69f2b-62cc-4f1d-aca6-3a08d73e6a59"},"source":["# French for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Je suis déprimé à cause de ma récente rupture et je passe tout mon temps à pleurer, je veux que la douleur disparaisse ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999986negative[-0.0261949822306633, -0.031189769506454468, 0...Je suis déprimé à cause de ma récente rupture ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999986 ... Je suis déprimé à cause de ma récente rupture ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":59}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614263621796,"user_tz":-300,"elapsed":970887,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ea4c2c51-a9ee-407b-f4fc-5962fcb0df8e"},"source":["# French for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"L'amour de ma vie m'a proposé, je me sens comme la personne la plus heureuse en vie!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
01.000000positive[-0.01895563304424286, -0.02439437434077263, -...L'amour de ma vie m'a proposé, je me sens comm...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 1.000000 ... L'amour de ma vie m'a proposé, je me sens comm...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614263624599,"user_tz":-300,"elapsed":973662,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0e15f11a-826c-428b-fad6-235f24d8be44"},"source":["# Thai for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"ความรักในชีวิตของฉันเสนอให้ฉันฉันรู้สึกเหมือนคนที่มีความสุขที่สุดที่มีชีวิตอยู่!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999998positive[-0.031056925654411316, -0.04219935089349747, ...ความรักในชีวิตของฉันเสนอให้ฉันฉันรู้สึกเหมือนค...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999998 ... ความรักในชีวิตของฉันเสนอให้ฉันฉันรู้สึกเหมือนค...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":34}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"uvlK8HEZ92qr","executionInfo":{"status":"ok","timestamp":1614269612674,"user_tz":-300,"elapsed":4183,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7430180d-0619-4cda-e578-7a03470527e6"},"source":["# Thai for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"ฉันรู้สึกหดหู่ใจเพราะเพิ่งเลิกกันและฉันใช้เวลาร้องไห้ตลอดเวลาฉันอยากให้ความเจ็บปวดหายไป ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999848negative[-0.014413643628358841, -0.05407709628343582, ...ฉันรู้สึกหดหู่ใจเพราะเพิ่งเลิกกันและฉันใช้เวลา...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999848 ... ฉันรู้สึกหดหู่ใจเพราะเพิ่งเลิกกันและฉันใช้เวลา...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":60}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614263627208,"user_tz":-300,"elapsed":976253,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4b75a42d-dd42-4df1-9832-1bd63440d224"},"source":["# Khmer for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"សេចក្តីស្រឡាញ់នៃជីវិតរបស់ខ្ញុំបានស្នើខ្ញុំខ្ញុំមានអារម្មណ៍ថាដូចជាមនុស្សដែលសប្បាយរីករាយបំផុតនៅរស់! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999999positive[0.0028431271202862263, -0.021134141832590103,...សេចក្តីស្រឡាញ់នៃជីវិតរបស់ខ្ញុំបានស្នើខ្ញុំខ្ញុ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999999 ... សេចក្តីស្រឡាញ់នៃជីវិតរបស់ខ្ញុំបានស្នើខ្ញុំខ្ញុ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"YAKYMOJD95Ep","executionInfo":{"status":"ok","timestamp":1614269622635,"user_tz":-300,"elapsed":4537,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3ef0dfb2-c904-4ca6-ba03-a3b65b1e8ac2"},"source":["# Khmer for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"ខ្ញុំក្រៀមក្រំណាស់ដោយសារតែការបែកបាក់ថ្មីៗនេះហើយខ្ញុំចំណាយពេលវេលាយំអស់មួយជីវិតខ្ញុំចង់អោយការឈឺចាប់បាត់ទៅវិញ ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999994negative[-0.02485613152384758, -0.053151313215494156, ...ខ្ញុំក្រៀមក្រំណាស់ដោយសារតែការបែកបាក់ថ្មីៗនេះហើ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999994 ... ខ្ញុំក្រៀមក្រំណាស់ដោយសារតែការបែកបាក់ថ្មីៗនេះហើ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":61}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614263629835,"user_tz":-300,"elapsed":978860,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"bb8abb6e-e0f4-4293-8361-c26c1a00f10c"},"source":["# Yiddish for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"די ליבע פון מיין לעבן פארגעלייגט מיר, איך פילן ווי די כאַפּיאַסט מענטש לעבעדיק!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999996positive[-0.019913040101528168, 0.015512144193053246, ...די ליבע פון מיין לעבן פארגעלייגט מיר, איך פילן...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999996 ... די ליבע פון מיין לעבן פארגעלייגט מיר, איך פילן...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"yNRa1bWt97rg","executionInfo":{"status":"ok","timestamp":1614269632057,"user_tz":-300,"elapsed":3854,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2fcb6082-6225-4a39-854e-96febe228442"},"source":["# Yiddish for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"איך בין דערשלאָגן ווייַל פון מיין לעצטנס ברעכן זיך און איך פאַרברענגען אַלע מיין צייט וויינען, איך ווילן די ווייטיק וועט גיין אַוועק ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999903negative[-0.02142147719860077, -0.04973935708403587, 0...איך בין דערשלאָגן ווייַל פון מיין לעצטנס ברעכן...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999903 ... איך בין דערשלאָגן ווייַל פון מיין לעצטנס ברעכן...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":62}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614263632263,"user_tz":-300,"elapsed":981263,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"58be7a4e-3fa4-443e-ee23-00b9e6905d44"},"source":["# Kygrgyz for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"Менин жашоомдун сүйүүсү мени сунуш кылды, мен өзүмдү бактылуу адамдай сезип жатам!|\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999970positive[-0.030747272074222565, -0.025966472923755646,...Менин жашоомдун сүйүүсү мени сунуш кылды, мен ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999970 ... Менин жашоомдун сүйүүсү мени сунуш кылды, мен ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2kfUZ33P9-hX","executionInfo":{"status":"ok","timestamp":1614269644369,"user_tz":-300,"elapsed":4200,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"911c7868-7d10-444a-b27c-ede6353ffed2"},"source":["\n","# Kygrgyz for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"Менин акыркы ажырашуумдан улам депрессияга кабылып, бардык убактымды ыйлап өткөрөм, азаптын басылышын каалайм ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999924negative[-0.04204170033335686, -0.02293466404080391, 0...Менин акыркы ажырашуумдан улам депрессияга каб...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999924 ... Менин акыркы ажырашуумдан улам депрессияга каб...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":63}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614269650912,"user_tz":-300,"elapsed":3677,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3613ee44-7855-415c-9a42-995f14a374cc"},"source":["# Tamil for: 'I am depressed because of my recent break up and I spend all my time crying, I want the pain to go away...'\n","fitted_pipe.predict(\"நான் சமீபத்தில் பிரிந்ததால் மனச்சோர்வடைந்து, என் நேரத்தை அழுதபடி செலவிடுகிறேன், வலி நீங்க வேண்டும் என்று நான் விரும்புகிறேன் ... \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999895negative[-0.023217450827360153, -0.035981468856334686,...நான் சமீபத்தில் பிரிந்ததால் மனச்சோர்வடைந்து, எ...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999895 ... நான் சமீபத்தில் பிரிந்ததால் மனச்சோர்வடைந்து, எ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":64}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614263637431,"user_tz":-300,"elapsed":986397,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4d93ddce-d9b5-46e0-b3de-df7ec8370667"},"source":["# Tamil for : 'The love of my life proposed me , I feel like the happiest person alive!'\n","fitted_pipe.predict(\"என் வாழ்க்கையின் அன்பு என்னை முன்மொழிந்தது, உயிருடன் இருக்கும் மகிழ்ச்சியான நபராக நான் உணர்கிறேன்! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentxx_embed_sentence_labse_embeddingsdocument
origin_index
00.999990positive[-0.0001591969921719283, -0.012185919098556042...என் வாழ்க்கையின் அன்பு என்னை முன்மொழிந்தது, உய...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999990 ... என் வாழ்க்கையின் அன்பு என்னை முன்மொழிந்தது, உய...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613854901863,"user_tz":-300,"elapsed":958785,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"76502277-986b-4ccc-b2ca-47ea42eaee08"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":103},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613855310959,"user_tz":-300,"elapsed":104671,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1a9cb18e-30a9-47f5-f04b-7c153b4936de"},"source":["stored_model_path = './models/classifier_dl_trained' \n","hdd_pipe = nlu.load(path=stored_model_path)\n","preds = hdd_pipe.predict('It was one of the best films i have ever watched in my entire life !!')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencexx_embed_sentence_labse_embeddingssentimentdocument
origin_index
00.999920[0.011100736446678638, -0.0029744331259280443,...positiveIt was one of the best films i have ever watch...
\n","
"],"text/plain":[" sentiment_confidence ... document\n","origin_index ... \n","0 0.999920 ... It was one of the best films i have ever watch...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UqXHHH-TQTuu","executionInfo":{"status":"ok","timestamp":1613855324504,"user_tz":-300,"elapsed":1038,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b7f1025d-db21-423f-b45e-6bf676d83d85"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_stock_market.ipynb b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_stock_market.ipynb new file mode 100644 index 00000000..3eba6c20 --- /dev/null +++ b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_stock_market.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_multi_lingual_training_sentiment_classifier_demo_stock_market.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/multi_lingual_text_classification/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_stock_market.ipynb)\n","\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class Stock Market Sentiment Classifier Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","You can achieve these results or even better on this dataset with test data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614262836694,"user_tz":-300,"elapsed":95672,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b194f851-e5fb-4fee-c157-afa76c932d7e"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 60kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 20.5MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=c56d2544e96e924a9a3b4a33eadae4c854f9cb0d05b22a95a93c95196f61a481\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Stock Market Sentiment dataset \n","https://www.kaggle.com/yash612/stockmarket-sentiment-dataset\n","#Context\n","\n","Gathered Stock news from Multiple twitter Handles regarding Economic news dividing into two parts : Negative and positive."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614262837473,"user_tz":-300,"elapsed":96365,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"05e37136-a568-42fc-ffbb-a564cff4859d"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/stock_data_multi_lingual.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 14:19:27-- http://ckl-it.de/wp-content/uploads/2021/02/stock_data_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 564444 (551K) [text/csv]\n","Saving to: ‘stock_data_multi_lingual.csv’\n","\n","stock_data_multi_li 100%[===================>] 551.21K 954KB/s in 0.6s \n","\n","2021-02-25 14:19:27 (954 KB/s) - ‘stock_data_multi_lingual.csv’ saved [564444/564444]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614262838185,"user_tz":-300,"elapsed":97043,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4f3e4460-ea62-45fb-9e58-cc0275e63a17"},"source":["import pandas as pd\n","train_path = '/content/stock_data_multi_lingual.csv'\n","\n","train_df = pd.read_csv(train_path)\n","# the text data to use for classification should be in a column named 'text'\n","columns=['text','y']\n","train_df = train_df[columns]\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
1764Green Weekly Triangle on CB,....Open Sell Shor...negative
5155Prices for debt from companies including Ford ...positive
2042user: EXC = undervalued here. Where is the yi...positive
106VNG - 12 mil shares shorts plus long buying = ...positive
131CEE Over 35.12positive
.........
5461India's 2019-20 Fuel Demand Growth Worst In Ov...negative
5727Weak Listing For SBI Cards; Shares Fall 12% At...negative
5508Sensex Opens Over 350 Points Lower, Nifty Belo...negative
4216EN wants higherpositive
1659Has anyone shorted KEX? What price?negative
\n","

4632 rows × 2 columns

\n","
"],"text/plain":[" text y\n","1764 Green Weekly Triangle on CB,....Open Sell Shor... negative\n","5155 Prices for debt from companies including Ford ... positive\n","2042 user: EXC = undervalued here. Where is the yi... positive\n","106 VNG - 12 mil shares shorts plus long buying = ... positive\n","131 CEE Over 35.12 positive\n","... ... ...\n","5461 India's 2019-20 Fuel Demand Growth Worst In Ov... negative\n","5727 Weak Listing For SBI Cards; Shares Fall 12% At... negative\n","5508 Sensex Opens Over 350 Points Lower, Nifty Belo... negative\n","4216 EN wants higher positive\n","1659 Has anyone shorted KEX? What price? negative\n","\n","[4632 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":811},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614266068001,"user_tz":-300,"elapsed":1486353,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dfb3a4c8-7836-48db-abf9-5f2b6d7bdff1"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(60) \n","trainable_pipe['sentiment_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.92 0.81 0.86 1705\n"," positive 0.90 0.96 0.93 2927\n","\n"," accuracy 0.90 4632\n"," macro avg 0.91 0.88 0.89 4632\n","weighted avg 0.91 0.90 0.90 4632\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ysentiment_confidencesentimentdocumenttextxx_embed_sentence_labse_embeddings
origin_index
1764negative0.999999negativeGreen Weekly Triangle on CB,....Open Sell Shor...Green Weekly Triangle on CB,....Open Sell Shor...[-0.007076278328895569, -0.021284468472003937,...
5155positive1.000000positivePrices for debt from companies including Ford ...Prices for debt from companies including Ford ...[-0.01115849893540144, -0.009219897910952568, ...
2042positive0.997436positiveuser: EXC = undervalued here. Where is the yie...user: EXC = undervalued here. Where is the yi...[-0.036913227289915085, -0.06303010880947113, ...
106positive0.999727positiveVNG - 12 mil shares shorts plus long buying = ...VNG - 12 mil shares shorts plus long buying = ...[-0.06516604125499725, 0.03032655082643032, 0....
131positive1.000000positiveCEE Over 35.12CEE Over 35.12[-0.03404775634407997, -0.014357814565300941, ...
.....................
5461negative0.999992negativeIndia's 2019-20 Fuel Demand Growth Worst In Ov...India's 2019-20 Fuel Demand Growth Worst In Ov...[0.03744948282837868, -0.040541376918554306, -...
5727negative1.000000negativeWeak Listing For SBI Cards; Shares Fall 12% At...Weak Listing For SBI Cards; Shares Fall 12% At...[-0.0797317773103714, 0.0019395140698179603, 0...
5508negative1.000000negativeSensex Opens Over 350 Points Lower, Nifty Belo...Sensex Opens Over 350 Points Lower, Nifty Belo...[-0.07855619490146637, -0.012150928378105164, ...
4216positive1.000000positiveEN wants higherEN wants higher[0.018729722127318382, -0.010736167430877686, ...
1659negative0.999878negativeHas anyone shorted KEX? What price?Has anyone shorted KEX? What price?[-0.00179337989538908, -0.04223024472594261, -...
\n","

4632 rows × 6 columns

\n","
"],"text/plain":[" y ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","1764 negative ... [-0.007076278328895569, -0.021284468472003937,...\n","5155 positive ... [-0.01115849893540144, -0.009219897910952568, ...\n","2042 positive ... [-0.036913227289915085, -0.06303010880947113, ...\n","106 positive ... [-0.06516604125499725, 0.03032655082643032, 0....\n","131 positive ... [-0.03404775634407997, -0.014357814565300941, ...\n","... ... ... ...\n","5461 negative ... [0.03744948282837868, -0.040541376918554306, -...\n","5727 negative ... [-0.0797317773103714, 0.0019395140698179603, 0...\n","5508 negative ... [-0.07855619490146637, -0.012150928378105164, ...\n","4216 positive ... [0.018729722127318382, -0.010736167430877686, ...\n","1659 negative ... [-0.00179337989538908, -0.04223024472594261, -...\n","\n","[4632 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614266690310,"user_tz":-300,"elapsed":622369,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7a4fcc3e-6a14-4322-b7d3-47b754e2ce5e"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.67 0.60 0.63 401\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.80 0.84 0.82 758\n","\n"," accuracy 0.75 1159\n"," macro avg 0.49 0.48 0.48 1159\n","weighted avg 0.75 0.75 0.75 1159\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"BD5OKO4Umc5U"},"source":["# 4. Test Model on 20 languages!"]},{"cell_type":"code","metadata":{"id":"OQ72hP9unML7","colab":{"base_uri":"https://localhost:8080/","height":775},"executionInfo":{"status":"ok","timestamp":1614266766715,"user_tz":-300,"elapsed":76428,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5e1ffd4e-edc7-4955-e282-8c0471f27345"},"source":["train_df = pd.read_csv(\"/content/stock_data_multi_lingual.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.56 0.77 0.65 13\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.96 0.90 0.93 87\n","\n"," accuracy 0.88 100\n"," macro avg 0.51 0.56 0.52 100\n","weighted avg 0.91 0.88 0.89 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ysentiment_confidencesentimentdocumenttextxx_embed_sentence_labse_embeddings
origin_index
0positive1.000000positiveİzləmə siyahımdakı Kickers XIDE TIT SOQ PNK CP...İzləmə siyahımdakı Kickers XIDE TIT SOQ PNK CP...[-0.0005844637053087354, 0.012249339371919632,...
1positive1.000000positiveउपयोगकर्ता: AAP MOVIE। वर्ष के लिए FEA / GEED ...उपयोगकर्ता: AAP MOVIE। वर्ष के लिए FEA / GEED ...[-0.02774488739669323, -0.03464013338088989, -...
2positive0.839511negativeמשתמש אני מפחד לקצר את AMZN - הם נראים כמו מונ...משתמש אני מפחד לקצר את AMZN - הם נראים כמו מונ...[-0.029554717242717743, -0.002601801883429289,...
3positive1.000000positive12.00 से अधिक MNTA12.00 से अधिक MNTA[-0.03708070144057274, 0.05491333454847336, 0....
4positive1.000000positiveOI 21.37ден жогоруOI 21.37ден жогору[-0.043793778866529465, 0.031909242272377014, ...
.....................
95positive0.768944positiveNG nhod - kyk na die weeklikse - teiken vorige...NG nhod - kyk na die weeklikse - teiken vorige...[-0.03982162848114967, -0.07269032299518585, -...
96positive1.000000positiveNG nhod - ¿qué ves? consulte el semanario - ob...NG nhod - ¿qué ves? consulte el semanario - ob...[-0.04516296088695526, -0.04459896311163902, 0...
97negative0.999901negativeএআইজি আমেরিকান ইন্টারন্যাশনাল গ্রুপ অপশন ট্রেড...এআইজি আমেরিকান ইন্টারন্যাশনাল গ্রুপ অপশন ট্রেড...[-0.07162036746740341, -0.009962097741663456, ...
98positive1.000000positiveP out balance +.32P out balance +.32[-0.041263166815042496, -0.0414082333445549, -...
99positive1.000000positiveVNG ซื้อเทียบกับขาย?VNG ซื้อเทียบกับขาย?[-0.038816630840301514, 0.04581353813409805, -...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" y ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 positive ... [-0.0005844637053087354, 0.012249339371919632,...\n","1 positive ... [-0.02774488739669323, -0.03464013338088989, -...\n","2 positive ... [-0.029554717242717743, -0.002601801883429289,...\n","3 positive ... [-0.03708070144057274, 0.05491333454847336, 0....\n","4 positive ... [-0.043793778866529465, 0.031909242272377014, ...\n","... ... ... ...\n","95 positive ... [-0.03982162848114967, -0.07269032299518585, -...\n","96 positive ... [-0.04516296088695526, -0.04459896311163902, 0...\n","97 negative ... [-0.07162036746740341, -0.009962097741663456, ...\n","98 positive ... [-0.041263166815042496, -0.0414082333445549, -...\n","99 positive ... [-0.038816630840301514, 0.04581353813409805, -...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614266770177,"user_tz":-300,"elapsed":3488,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"50708056-cdfb-40b4-b204-777621a010df"},"source":["fitted_pipe.predict(\"Bitcoin dropped by 50 percent !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999990negativeBitcoin dropped by 50 percent !!![-0.05163612216711044, -0.029772669076919556, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999990 ... [-0.05163612216711044, -0.029772669076919556, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614266774637,"user_tz":-300,"elapsed":4476,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"28343112-7210-4c7e-ca0a-4a29a60e7d17"},"source":["fitted_pipe.predict(\"Bitcoin went up by 50 percent !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999999positiveBitcoin went up by 50 percent !!![-0.028688771650195122, -0.026630524545907974,...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999999 ... [-0.028688771650195122, -0.026630524545907974,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614266777152,"user_tz":-300,"elapsed":2529,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4bc1b720-33ea-4051-d2bc-b3446965b0f4"},"source":["# German for:'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin stieg um 50 Prozent auf !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999999positiveBitcoin stieg um 50 Prozent auf !!![-0.03815653175115585, -0.0247296504676342, -0...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999999 ... [-0.03815653175115585, -0.0247296504676342, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614270421116,"user_tz":-300,"elapsed":6055,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2cb51bbf-c4d6-47d6-920c-bf5a3de71246"},"source":["# German for: 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin fiel um 50 Prozent !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999986negativeBitcoin fiel um 50 Prozent !!![-0.05688923969864845, -0.02544567361474037, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999986 ... [-0.05688923969864845, -0.02544567361474037, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614266784362,"user_tz":-300,"elapsed":3794,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ce1e5c7c-a9ba-4c23-8e3c-dda000c89a17"},"source":["# Chinese for: \"Bitcoin dropped by 50 percent !!!\"\n","fitted_pipe.predict(\"比特币下跌了50%!!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999996negative比特币下跌了50%!!![-0.07537585496902466, -0.027679990977048874, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999996 ... [-0.07537585496902466, -0.027679990977048874, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614266786930,"user_tz":-300,"elapsed":2581,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"39bc82ae-e7ac-4903-e405-67164c4a3c73"},"source":["# Chinese for : \"Bitcoin went up by 50 percent !!!\"\n","fitted_pipe.predict(\"比特币上涨了50%!\")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positive比特币上涨了50%![-0.041133344173431396, -0.009412097744643688,...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.041133344173431396, -0.009412097744643688,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614266790118,"user_tz":-300,"elapsed":3196,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"03e742bd-17e9-47d9-8933-f988a5ea3b2a"},"source":["# Afrikaans for 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin het met 50 persent toegeneem !!!\")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999865positiveBitcoin het met 50 persent toegeneem !!![-0.03586146980524063, -0.03901936113834381, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999865 ... [-0.03586146980524063, -0.03901936113834381, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":13}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614266793172,"user_tz":-300,"elapsed":3072,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3612b8a2-eaab-4cb8-f747-f3a952b75a71"},"source":["# Afrikaans for :'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin het met 50 persent gedaal !!! |')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999794negativeBitcoin het met 50 persent gedaal !!! |[-0.05142545327544212, -0.03921075537800789, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999794 ... [-0.05142545327544212, -0.03921075537800789, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":14}]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["# The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"wCcTS5gIu511","executionInfo":{"status":"ok","timestamp":1614266796368,"user_tz":-300,"elapsed":3202,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e45b90be-d284-4d18-8c19-31a5017f62c8"},"source":["# Vietnamese for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin đã tăng 50% !!! ')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999934positiveBitcoin đã tăng 50% !!![-0.03511587902903557, -0.053469520062208176, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999934 ... [-0.03511587902903557, -0.053469520062208176, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"3Y-kLeGp5uc0","executionInfo":{"status":"ok","timestamp":1614266800065,"user_tz":-300,"elapsed":3711,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"331fd1e6-c8e5-4b14-940c-a48d2038cba4"},"source":["# Vietnamese for : 'Bitcoin droppedy by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin giảm 50% !!! ')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999608negativeBitcoin giảm 50% !!![-0.013879713602364063, -0.0543162003159523, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999608 ... [-0.013879713602364063, -0.0543162003159523, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614266803007,"user_tz":-300,"elapsed":2962,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"94b5edc1-cf8b-44cb-dafb-2b7ae92b3b46"},"source":["\n","# Japanese for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('ビットコインは50%上昇しました!!! ')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveビットコインは50%上昇しました!!![-0.044070836156606674, -0.013696333393454552,...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.044070836156606674, -0.013696333393454552,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"h3k7_PFhxOve","executionInfo":{"status":"ok","timestamp":1614266805072,"user_tz":-300,"elapsed":2078,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b3d5f8b1-0e8c-4983-c2c3-758e439d2f94"},"source":["\n","# Japanese for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Bitcoinは50%減少しました!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999990negativeBitcoinは50%減少しました![-0.056898221373558044, -0.04127807542681694, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999990 ... [-0.056898221373558044, -0.04127807542681694, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"6uelDwq4xdWv","executionInfo":{"status":"ok","timestamp":1614266808086,"user_tz":-300,"elapsed":3025,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"72cb4270-948c-4754-cf3a-d58c34fb72f5"},"source":["# Zulu for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('I-Bitcoin inyuke ngamaphesenti ama-50 !!!')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.998867positiveI-Bitcoin inyuke ngamaphesenti ama-50 !!![-0.042268361896276474, -0.029177553951740265,...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.998867 ... [-0.042268361896276474, -0.029177553951740265,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"NY_D-USEBeFe","executionInfo":{"status":"ok","timestamp":1614270582162,"user_tz":-300,"elapsed":5309,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7910970b-3cbd-40fd-e635-c1cf26cfba63"},"source":["# Zulu for : 'The whole crypto system crashed!!! '\n","fitted_pipe.predict('Lonke uhlelo lwe-crypto luphahlazeka !!!')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999740negativeLonke uhlelo lwe-crypto luphahlazeka !!![0.014095775783061981, -0.06292989104986191, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999740 ... [0.014095775783061981, -0.06292989104986191, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614266811332,"user_tz":-300,"elapsed":3259,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dd9f438c-9960-4f87-d02e-68c735775528"},"source":["# Turkish for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin yüzde 50 düştü !!! ')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999880negativeBitcoin yüzde 50 düştü !!![-0.02441185712814331, -0.041124653071165085, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999880 ... [-0.02441185712814331, -0.041124653071165085, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":20}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614266813997,"user_tz":-300,"elapsed":2694,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b0fe734e-375a-44b8-ee44-c7212b965588"},"source":["# Turkish for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin yüzde 50 arttı !!!')\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999990positiveBitcoin yüzde 50 arttı !!![-0.02950633130967617, -0.02281446009874344, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999990 ... [-0.02950633130967617, -0.02281446009874344, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614266817408,"user_tz":-300,"elapsed":3422,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8524838b-c43b-44c6-ca3d-dad32571204e"},"source":["# Hebrew for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin ירד ב -50% !!! ')\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999989negativeBitcoin ירד ב -50% !!![-0.058318842202425, -0.04578538239002228, -0....
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999989 ... [-0.058318842202425, -0.04578538239002228, -0....\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":22}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614266820476,"user_tz":-300,"elapsed":3079,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"77515e2d-011b-4d20-e8bc-2ae851e8cc02"},"source":["# Hebrew for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin עלה ב -50% !!! ')\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999998positiveBitcoin עלה ב -50% !!![-0.038753289729356766, -0.04096424579620361, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999998 ... [-0.038753289729356766, -0.04096424579620361, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614266823316,"user_tz":-300,"elapsed":2852,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"fd41d8da-30f5-4fee-9c92-cdaacdaacb49"},"source":["# Telugu for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('బిట్\\u200cకాయిన్ 50 శాతం పెరిగింది !!!' )"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveబిట్‌కాయిన్ 50 శాతం పెరిగింది !!![-0.046535082161426544, 0.020184200257062912, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.046535082161426544, 0.020184200257062912, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":24}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614266826384,"user_tz":-300,"elapsed":3077,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"89bafb24-6c35-4a22-e025-ff6012eea311"},"source":["# Telgu for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('బిట్\\u200cకాయిన్ 50 శాతం పడిపోయింది !!! ')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999992negativeబిట్‌కాయిన్ 50 శాతం పడిపోయింది !!![-0.07144765555858612, 0.004319730680435896, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999992 ... [-0.07144765555858612, 0.004319730680435896, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":25}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614266829257,"user_tz":-300,"elapsed":2888,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6d9b33c1-82bd-44d3-a117-1b55ffbca20c"},"source":["# Russian for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Биткойн упал на 50 процентов !!! ')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999980negativeБиткойн упал на 50 процентов !!![-0.05514690652489662, -0.025273717939853668, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999980 ... [-0.05514690652489662, -0.025273717939853668, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614266831825,"user_tz":-300,"elapsed":2574,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7d9baaf2-a41c-455f-a2cd-f41354d73122"},"source":["# Russian for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('Биткойн поднялся на 50 процентов !!!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveБиткойн поднялся на 50 процентов !!![-0.0347013995051384, -0.016639329493045807, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.0347013995051384, -0.016639329493045807, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614266834444,"user_tz":-300,"elapsed":2629,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"54e3d81e-1b12-4624-94bf-35b80062a655"},"source":["# Urdu for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin 50 فیصد کی طرف سے گرا دیا !!!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999964negativeBitcoin 50 فیصد کی طرف سے گرا دیا !!![-0.04297984763979912, -0.042187489569187164, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999964 ... [-0.04297984763979912, -0.042187489569187164, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"_EwpYn_hBpzt","executionInfo":{"status":"ok","timestamp":1614270688693,"user_tz":-300,"elapsed":5023,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"57e4be02-181e-4c7b-c847-a245f7443874"},"source":["# Urdu for : 'TDollar rates skyrocketed!!'\n","fitted_pipe.predict('ڈالر کے نرخ آسمان چھائے ہوئے ہیں !!!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999181positiveڈالر کے نرخ آسمان چھائے ہوئے ہیں !!![-0.0676291286945343, -0.02299042046070099, -0...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999181 ... [-0.0676291286945343, -0.02299042046070099, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614266837357,"user_tz":-300,"elapsed":2925,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8852f61a-7d92-4990-b1de-5aaa3d703235"},"source":["# Hindi for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('बिटकॉइन 50 प्रतिशत चढ़ गया !!! ')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999517positiveबिटकॉइन 50 प्रतिशत चढ़ गया !!![-0.03370288014411926, -0.027637386694550514, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999517 ... [-0.03370288014411926, -0.027637386694550514, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614266840344,"user_tz":-300,"elapsed":3025,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e41d63f8-4cbc-4e72-c570-72702aac89bc"},"source":["# Hindi for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('बिटकॉइन में 50 प्रतिशत की गिरावट !!!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999991negativeबिटकॉइन में 50 प्रतिशत की गिरावट !!![-0.05678804963827133, -0.04536443203687668, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999991 ... [-0.05678804963827133, -0.04536443203687668, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":30}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614266844127,"user_tz":-300,"elapsed":3794,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ac92838e-a36c-44b5-bc5f-67995f875c2f"},"source":["# Tartar for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict('Bitcoin 50 процентка төште !!!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999964negativeBitcoin 50 процентка төште !!![-0.04669538140296936, -0.04520617797970772, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999964 ... [-0.04669538140296936, -0.04520617797970772, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":31}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614266845575,"user_tz":-300,"elapsed":1454,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"00d03c3d-6b31-49d8-e539-20d0212e1a11"},"source":["# Tartar for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict('Биткойн 50 процентка артты !!!')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999982positiveБиткойн 50 процентка артты !!![-0.015944577753543854, -0.024691367521882057,...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999982 ... [-0.015944577753543854, -0.024691367521882057,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":32}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614266848529,"user_tz":-300,"elapsed":2973,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"274fb581-6bef-4a67-c03d-e55457ee39cc"},"source":["# French for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin a chuté de 50% !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999962negativeBitcoin a chuté de 50% !!![-0.05751338228583336, -0.05539099499583244, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999962 ... [-0.05751338228583336, -0.05539099499583244, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614266852247,"user_tz":-300,"elapsed":3728,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"03f99a3f-0424-4113-bf2d-888aabb5c983"},"source":["# French for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"Le Bitcoin a augmenté de 50% !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveLe Bitcoin a augmenté de 50% !!![-0.036177001893520355, -0.03910716623067856, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.036177001893520355, -0.03910716623067856, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":34}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614266853764,"user_tz":-300,"elapsed":1530,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f2be617c-245c-48e6-9ebd-04da8abce99c"},"source":["# Thai for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin เพิ่มขึ้น 50 เปอร์เซ็นต์ !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveBitcoin เพิ่มขึ้น 50 เปอร์เซ็นต์ !!![-0.03620089590549469, -0.027675965800881386, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.03620089590549469, -0.027675965800881386, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Fxh1gasROElC","executionInfo":{"status":"ok","timestamp":1614266856703,"user_tz":-300,"elapsed":2986,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"999f6a48-dcc4-4b21-8dcd-fc9c0fee8eb3"},"source":["# Thai for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin ลดลง 50 เปอร์เซ็นต์ !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999993negativeBitcoin ลดลง 50 เปอร์เซ็นต์ !!![-0.05988080054521561, -0.04294700548052788, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999993 ... [-0.05988080054521561, -0.04294700548052788, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Mv0KkUxo7Lh_","executionInfo":{"status":"ok","timestamp":1614266859361,"user_tz":-300,"elapsed":2667,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3d43f248-a01a-47b4-e1ed-b7adc17a89e1"},"source":["# Khmer for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin បានធ្លាក់ចុះ 50 ភាគរយ !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999993negativeBitcoin បានធ្លាក់ចុះ 50 ភាគរយ !!![-0.05702926591038704, -0.04252532869577408, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999993 ... [-0.05702926591038704, -0.04252532869577408, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614266862667,"user_tz":-300,"elapsed":3311,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"718b8f7d-e3f7-4377-dd06-7848162e3b08"},"source":["# Khmer for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin បានកើនឡើង 50 ភាគរយ !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveBitcoin បានកើនឡើង 50 ភាគរយ !!![-0.0398690328001976, -0.03344429284334183, -0...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.0398690328001976, -0.03344429284334183, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"sZlmLhajPoBb","executionInfo":{"status":"ok","timestamp":1614266865000,"user_tz":-300,"elapsed":2360,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7f68992f-36d6-4c27-b7b8-d9f93c72c42d"},"source":["# Yiddish for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"ביטקאָין דראַפּט דורך 50 פּראָצענט !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999909negativeביטקאָין דראַפּט דורך 50 פּראָצענט !!![-0.05685276538133621, -0.04757661744952202, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999909 ... [-0.05685276538133621, -0.04757661744952202, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614266868647,"user_tz":-300,"elapsed":3661,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e8e826c6-350f-4246-e650-dc3e08dc6fc7"},"source":["# Yiddish for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"ביטקאָין איז אַרויף מיט 50 פּראָצענט !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveביטקאָין איז אַרויף מיט 50 פּראָצענט !!![-0.049434419721364975, -0.051430195569992065,...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.049434419721364975, -0.051430195569992065,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":40}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614266870434,"user_tz":-300,"elapsed":1800,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d48bcfa9-ac3b-40d0-accb-aee5720ee0b5"},"source":["# Kygrgyz for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin 50 пайызга төмөндөдү !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999997negativeBitcoin 50 пайызга төмөндөдү !!![-0.0606391541659832, -0.02077414281666279, -0...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999997 ... [-0.0606391541659832, -0.02077414281666279, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":41}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614266873377,"user_tz":-300,"elapsed":2949,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2e237a39-adc0-4d50-9320-95c7d4ac141c"},"source":["# Kygrgyz for : 'Bitcoin went up by 50 percent !!!'\n","fitted_pipe.predict(\"Bitcoin 50 пайызга көтөрүлдү !!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.982491positiveBitcoin 50 пайызга көтөрүлдү !!![-0.03188328444957733, -0.00919796247035265, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.982491 ... [-0.03188328444957733, -0.00919796247035265, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614266875989,"user_tz":-300,"elapsed":2628,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2c1b68d5-f035-4276-d1a9-7822938f6c23"},"source":["# Tamil for : 'Bitcoin dropped by 50 percent !!!'\n","fitted_pipe.predict(\"பிட்காயின் 50 சதவீதம் குறைந்தது !!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
00.999998negativeபிட்காயின் 50 சதவீதம் குறைந்தது !!![-0.06173098459839821, -0.03497230261564255, -...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999998 ... [-0.06173098459839821, -0.03497230261564255, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J8dGo9wLCFSa","executionInfo":{"status":"ok","timestamp":1614270739604,"user_tz":-300,"elapsed":5733,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9749e70e-cd05-4890-c45c-070dc2cc786d"},"source":["# Tamil for : 'Dollar rates skyrocketed!!'\n","fitted_pipe.predict(\"ڈالر کے نرخ آسمان چھائے ہوئے ہیں !!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
sentiment_confidencesentimentdocumentxx_embed_sentence_labse_embeddings
origin_index
01.000000positiveڈالر کے نرخ آسمان چھائے ہوئے ہیں !![-0.06327780336141586, -0.029234571382403374, ...
\n","
"],"text/plain":[" sentiment_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 1.000000 ... [-0.06327780336141586, -0.029234571382403374, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613916852307,"user_tz":-300,"elapsed":813964,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b79573d0-c4a2-45c9-c13e-109a00579273"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":107},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613917010265,"user_tz":-300,"elapsed":100792,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0d80ba87-0cd9-4eab-a6bf-8dbc19780b97"},"source":["stored_model_path = './models/classifier_dl_trained' \n","\n","hdd_pipe = nlu.load(path=\"./models/classifier_dl_trained\")\n","\n","preds = hdd_pipe.predict('Bitcoin dropped by 50 percent!!')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.04765033349394798, -0.03717166185379028, -...0.999998negativeBitcoin dropped by 50 percent!!
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.04765033349394798, -0.03717166185379028, -... ... Bitcoin dropped by 50 percent!!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"e0CVlkk9v6Qi","executionInfo":{"status":"ok","timestamp":1613917010268,"user_tz":-300,"elapsed":100781,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a78d4d8d-7132-4c5f-853a-8634934a288f"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_twitter.ipynb b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_twitter.ipynb new file mode 100644 index 00000000..e0b0f188 --- /dev/null +++ b/examples/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_twitter.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_multi_lingual_training_sentiment_classifier_demo_twitter.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/multi_lingual_text_classification/colab/Training/multi_lingual/binary_text_classification/NLU_multi_lingual_training_sentiment_classifier_demo_twitter.ipynb)\n","\n","# Training a Sentiment Analysis Classifier with NLU \n","## 2 Class Twitter Sentiment Classifier Training\n","With the [SentimentDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#sentimentdl-multi-class-sentiment-analysis-annotator) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n","* List item\n","* List item\n","\n","\n","You can achieve these results or even better on this dataset with training data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)\n","\n","You can achieve these results or even better on this dataset with test data : \n","\n","
\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"hFGnBCHavltY","executionInfo":{"status":"ok","timestamp":1614275046135,"user_tz":-300,"elapsed":92799,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c57a711f-c1bc-4b42-b8ff-2b4a75df669e"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 62kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 18.8MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=7236adf9353cce5912057eb957aa7a21314e0f9753237475e8fd609b90e438e8\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download twitter Sentiment dataset \n","https://www.kaggle.com/cosmos98/twitter-and-reddit-sentimental-analysis-dataset\n","#Context\n","\n","This is was a Dataset Created as a part of the university Project On Sentimental Analysis On Multi-Source Social Media Platforms using PySpark."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614275047576,"user_tz":-300,"elapsed":93891,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6bde9b8e-1d6c-4d44-ab49-761ffd1d185b"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/twitter_data_multi_lang.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-25 17:42:56-- http://ckl-it.de/wp-content/uploads/2021/02/twitter_data_multi_lang.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 125908 (123K) [text/csv]\n","Saving to: ‘twitter_data_multi_lang.csv’\n","\n","twitter_data_multi_ 100%[===================>] 122.96K 232KB/s in 0.5s \n","\n","2021-02-25 17:42:57 (232 KB/s) - ‘twitter_data_multi_lang.csv’ saved [125908/125908]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614275047581,"user_tz":-300,"elapsed":93734,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"24c76468-7102-4e64-f610-59347bd94897"},"source":["import pandas as pd\n","train_path = '/content/twitter_data_multi_lang.csv'\n","\n","train_df = pd.read_csv(train_path)\n","train_df.test_sentences = train_df.test_sentences.astype(str)\n","# the text data to use for classification should be in a column named 'text'\n","# the label column must have name 'y' name be of type str\n","train_df= train_df[[\"text\",\"y\"]]\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
texty
101more than million additional farmers will get ...positive
440bjp struggles find candidates west bengal graf...negative
28know going into dirty details nehru family its...negative
317apke yar modi message our people celebrate pak...positive
477why cant write one single tweet without blamin...negative
.........
330governor kalyan singh aligarh 23rd march all a...positive
142after going thru all the comedy speeches shri ...positive
38tag this fast growing youtuber cared abt this ...negative
205not huge resulting bloodshed there will protes...negative
369this the new india modi trying build with thes...negative
\n","

480 rows × 2 columns

\n","
"],"text/plain":[" text y\n","101 more than million additional farmers will get ... positive\n","440 bjp struggles find candidates west bengal graf... negative\n","28 know going into dirty details nehru family its... negative\n","317 apke yar modi message our people celebrate pak... positive\n","477 why cant write one single tweet without blamin... negative\n",".. ... ...\n","330 governor kalyan singh aligarh 23rd march all a... positive\n","142 after going thru all the comedy speeches shri ... positive\n","38 tag this fast growing youtuber cared abt this ... negative\n","205 not huge resulting bloodshed there will protes... negative\n","369 this the new india modi trying build with thes... negative\n","\n","[480 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.sentiment')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":811},"id":"IKK_Ii_gjJfF","executionInfo":{"status":"ok","timestamp":1614275723265,"user_tz":-300,"elapsed":769150,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"757e83a5-e517-46a4-d73f-303d334c6f43"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.sentiment')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['sentiment_dl'].setMaxEpochs(60) \n","trainable_pipe['sentiment_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," negative 0.97 0.98 0.97 237\n"," positive 0.98 0.97 0.98 243\n","\n"," accuracy 0.97 480\n"," macro avg 0.98 0.98 0.97 480\n","weighted avg 0.98 0.97 0.98 480\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textsentimentxx_embed_sentence_labse_embeddingssentiment_confidenceydocument
origin_index
101more than million additional farmers will get ...positive[0.007220160216093063, 0.02621868997812271, 0....0.999999positivemore than million additional farmers will get ...
440bjp struggles find candidates west bengal graf...negative[-0.0011240983149036765, 0.01309733372181654, ...0.997356negativebjp struggles find candidates west bengal graf...
28know going into dirty details nehru family its...negative[-0.0208485908806324, 0.02829776145517826, 0.0...0.999963negativeknow going into dirty details nehru family its...
317apke yar modi message our people celebrate pak...positive[-0.0184789951890707, 0.011275646276772022, -0...1.000000positiveapke yar modi message our people celebrate pak...
477why cant write one single tweet without blamin...negative[-0.005628153216093779, 0.017803337424993515, ...0.999919negativewhy cant write one single tweet without blamin...
.....................
330governor kalyan singh aligarh 23rd march all a...positive[0.006282471120357513, -0.027118012309074402, ...1.000000positivegovernor kalyan singh aligarh 23rd march all a...
142after going thru all the comedy speeches shri ...positive[-0.051873888820409775, 0.007939846254885197, ...0.999910positiveafter going thru all the comedy speeches shri ...
38tag this fast growing youtuber cared abt this ...negative[0.01988791488111019, -0.011552331037819386, 0...0.999895negativetag this fast growing youtuber cared abt this ...
205not huge resulting bloodshed there will protes...negative[-0.029743511229753494, -0.0021075434051454067...0.994726negativenot huge resulting bloodshed there will protes...
369this the new india modi trying build with thes...negative[-0.02394954301416874, 0.0441671684384346, 0.0...0.999804negativethis the new india modi trying build with thes...
\n","

480 rows × 6 columns

\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","101 more than million additional farmers will get ... ... more than million additional farmers will get ...\n","440 bjp struggles find candidates west bengal graf... ... bjp struggles find candidates west bengal graf...\n","28 know going into dirty details nehru family its... ... know going into dirty details nehru family its...\n","317 apke yar modi message our people celebrate pak... ... apke yar modi message our people celebrate pak...\n","477 why cant write one single tweet without blamin... ... why cant write one single tweet without blamin...\n","... ... ... ...\n","330 governor kalyan singh aligarh 23rd march all a... ... governor kalyan singh aligarh 23rd march all a...\n","142 after going thru all the comedy speeches shri ... ... after going thru all the comedy speeches shri ...\n","38 tag this fast growing youtuber cared abt this ... ... tag this fast growing youtuber cared abt this ...\n","205 not huge resulting bloodshed there will protes... ... not huge resulting bloodshed there will protes...\n","369 this the new india modi trying build with thes... ... this the new india modi trying build with thes...\n","\n","[480 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Fxx4yNkNVGFl","executionInfo":{"status":"ok","timestamp":1614275818852,"user_tz":-300,"elapsed":863091,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"632c6d07-dd25-455c-89fd-6c08836e2840"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.71 0.70 0.70 63\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.69 0.65 0.67 57\n","\n"," accuracy 0.68 120\n"," macro avg 0.46 0.45 0.46 120\n","weighted avg 0.70 0.68 0.69 120\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"BD5OKO4Umc5U"},"source":["# 4. Test Model on 20 languages!"]},{"cell_type":"code","metadata":{"id":"OQ72hP9unML7","colab":{"base_uri":"https://localhost:8080/","height":826},"executionInfo":{"status":"ok","timestamp":1614275917241,"user_tz":-300,"elapsed":98353,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b051fdcd-cbbc-4d11-f070-8679d7e9e040"},"source":["train_df = pd.read_csv(\"/content/twitter_data_multi_lang.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['sentiment']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," negative 0.91 0.80 0.85 49\n"," neutral 0.00 0.00 0.00 0\n"," positive 0.85 0.92 0.89 51\n","\n"," accuracy 0.86 100\n"," macro avg 0.59 0.57 0.58 100\n","weighted avg 0.88 0.86 0.87 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textsentimentxx_embed_sentence_labse_embeddingssentiment_confidenceydocument
origin_index
0how narendra modi has almost killed the indian...negative[-0.055935658514499664, 0.05042083561420441, -...0.999031negativehow narendra modi has almost killed the indian...
1تعتقد أنه كان مودي وراء هذا الحادثnegative[0.00735881645232439, -0.0520767942070961, 0.0...0.950884negativeتعتقد أنه كان مودي وراء هذا الحادث
2カマル・ハサーンがチョウキダール・モディを連れて行くカマル・ハサーン・モディの金持ちが貧しい...negative[-0.012155445292592049, -0.020653903484344482,...0.999994negativeカマル・ハサーンがチョウキダール・モディを連れて行くカマル・ハサーン・モディの金持ちが貧しい...
3связанное имя с фамилией, а не bcz религия, св...negative[-0.006620911415666342, 0.025743944570422173, ...0.999951negativeсвязанное имя с фамилией, а не bcz религия, св...
4kdokoli lepší než modi, když nehruji vypršela,...positive[-0.04917776957154274, 0.01752305217087269, -0...1.000000positivekdokoli lepší než modi, když nehruji vypršela,...
.....................
95lol qui va épouser son hippopotame tous les ho...positive[-0.010019153356552124, -0.03171534836292267, ...0.999032positivelol qui va épouser son hippopotame tous les ho...
96拉贾斯坦邦州长卡莉安·辛格·阿里加3月23日全都是bjp工人,希望bjp胜利,希望莫迪再次成...positive[0.009000579826533794, -0.021888382732868195, ...0.999999positive拉贾斯坦邦州长卡莉安·辛格·阿里加3月23日全都是bjp工人,希望bjp胜利,希望莫迪再次成...
97మోడీ భక్తులు రాహుల్ గురించి అబద్ధాలు చెబుతున్న...positive[-0.05518202483654022, -0.004170998930931091, ...0.891503positiveమోడీ భక్తులు రాహుల్ గురించి అబద్ధాలు చెబుతున్న...
98lol neha, je to jako dát hlavu zabít těm, kteř...positive[-0.019701899960637093, -0.019368575885891914,...0.748650positivelol neha, je to jako dát hlavu zabít těm, kteř...
99por favor venda nuestro bosque por favor haga ...positive[-0.03966624662280083, -0.019480157643556595, ...0.999935positivepor favor venda nuestro bosque por favor haga ...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" text ... document\n","origin_index ... \n","0 how narendra modi has almost killed the indian... ... how narendra modi has almost killed the indian...\n","1 تعتقد أنه كان مودي وراء هذا الحادث ... تعتقد أنه كان مودي وراء هذا الحادث\n","2 カマル・ハサーンがチョウキダール・モディを連れて行くカマル・ハサーン・モディの金持ちが貧しい... ... カマル・ハサーンがチョウキダール・モディを連れて行くカマル・ハサーン・モディの金持ちが貧しい...\n","3 связанное имя с фамилией, а не bcz религия, св... ... связанное имя с фамилией, а не bcz религия, св...\n","4 kdokoli lepší než modi, když nehruji vypršela,... ... kdokoli lepší než modi, když nehruji vypršela,...\n","... ... ... ...\n","95 lol qui va épouser son hippopotame tous les ho... ... lol qui va épouser son hippopotame tous les ho...\n","96 拉贾斯坦邦州长卡莉安·辛格·阿里加3月23日全都是bjp工人,希望bjp胜利,希望莫迪再次成... ... 拉贾斯坦邦州长卡莉安·辛格·阿里加3月23日全都是bjp工人,希望bjp胜利,希望莫迪再次成...\n","97 మోడీ భక్తులు రాహుల్ గురించి అబద్ధాలు చెబుతున్న... ... మోడీ భక్తులు రాహుల్ గురించి అబద్ధాలు చెబుతున్న...\n","98 lol neha, je to jako dát hlavu zabít těm, kteř... ... lol neha, je to jako dát hlavu zabít těm, kteř...\n","99 por favor venda nuestro bosque por favor haga ... ... por favor venda nuestro bosque por favor haga ...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614276122523,"user_tz":-300,"elapsed":5715,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9e51df5c-25b0-4981-c631-133852a6b1fd"},"source":["fitted_pipe.predict(\"Congress's new policies made many people sad \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.004380677826702595, -0.002109142020344734, ...0.993856negativeCongress's new policies made many people sad
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.004380677826702595, -0.002109142020344734, ... ... Congress's new policies made many people sad\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614276130115,"user_tz":-300,"elapsed":4295,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1e733dfe-f096-4c2d-d09e-768b78fda799"},"source":["fitted_pipe.predict(\"Congress's new policies made many people happy \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.02597951516509056, -0.007445341441780329, -...0.999998positiveCongress's new policies made many people happy
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.02597951516509056, -0.007445341441780329, -... ... Congress's new policies made many people happy\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614276631990,"user_tz":-300,"elapsed":5147,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4b873b8b-ada8-47dd-cec8-16ca0da2ee77"},"source":["# German for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Die neue Politik des Kongresses machte viele Menschen arm, traurig und depressiv \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.02746930904686451, 0.015148884616792202, -...0.994498negativeDie neue Politik des Kongresses machte viele M...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.02746930904686451, 0.015148884616792202, -... ... Die neue Politik des Kongresses machte viele M...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614276144053,"user_tz":-300,"elapsed":6494,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5abf1136-27ad-409d-8691-1cf8911a250c"},"source":["# German for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Die neue Politik des Kongresses machte viele Menschen glücklich \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.008141150698065758, -0.009829352609813213, ...0.999969positiveDie neue Politik des Kongresses machte viele M...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.008141150698065758, -0.009829352609813213, ... ... Die neue Politik des Kongresses machte viele M...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614276310814,"user_tz":-300,"elapsed":4049,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e444f669-80aa-4fa0-8a53-09b7bc8f74da"},"source":["# Chinese for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"国会的新政策使许多人感到高兴 \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.009464382193982601, -0.012016323395073414, ...0.999999positive国会的新政策使许多人感到高兴
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.009464382193982601, -0.012016323395073414, ... ... 国会的新政策使许多人感到高兴\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614276660518,"user_tz":-300,"elapsed":4765,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b86574ad-5089-477b-a123-f75fcf83703e"},"source":["# Chinese for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"国会的新政策使许多人变得贫穷,悲伤和沮丧 \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.05506608635187149, -0.0026403777301311493,...0.999973negative国会的新政策使许多人变得贫穷,悲伤和沮丧
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.05506608635187149, -0.0026403777301311493,... ... 国会的新政策使许多人变得贫穷,悲伤和沮丧\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614276670548,"user_tz":-300,"elapsed":5405,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5cb8f03b-9264-482a-a60e-e7a82abe4e51"},"source":["# Afrikaans for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Die Kongres se nuwe beleid het baie mense arm, hartseer en depressief gemaak \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.023684455081820488, 0.0034083002246916294,...0.991269negativeDie Kongres se nuwe beleid het baie mense arm,...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.023684455081820488, 0.0034083002246916294,... ... Die Kongres se nuwe beleid het baie mense arm,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614276678805,"user_tz":-300,"elapsed":4776,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2bb8ff94-704e-4a74-af7d-9b8e2ece9234"},"source":["# Afrikaans for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Die Kongres se nuwe beleid het baie mense gelukkig gemaak \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.005836580414324999, -0.029826413840055466, ...0.999999positiveDie Kongres se nuwe beleid het baie mense gelu...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.005836580414324999, -0.029826413840055466, ... ... Die Kongres se nuwe beleid het baie mense gelu...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614276737307,"user_tz":-300,"elapsed":4592,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"23723a2e-fb2a-4b12-892a-c6d9372c4df6"},"source":["# Japanese for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"議会の新しい政策は多くの人々を貧しく、悲しくそして落ち込んだものにしました \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.04006955772638321, 0.0033476173412054777, ...0.999940negative議会の新しい政策は多くの人々を貧しく、悲しくそして落ち込んだものにしました
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.04006955772638321, 0.0033476173412054777, ... ... 議会の新しい政策は多くの人々を貧しく、悲しくそして落ち込んだものにしました\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":22}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"h3k7_PFhxOve","executionInfo":{"status":"ok","timestamp":1614276745466,"user_tz":-300,"elapsed":4167,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d42f719b-7bb4-42db-c331-05ac48b2b2be"},"source":["\n","\t\t\n","# Japanese for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"議会の新しい政策は多くの人々を幸せにしました \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.017957257106900215, -0.015919474884867668,...0.999990positive議会の新しい政策は多くの人々を幸せにしました
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.017957257106900215, -0.015919474884867668,... ... 議会の新しい政策は多くの人々を幸せにしました\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614276801871,"user_tz":-300,"elapsed":5304,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0dce3103-5b29-466c-bede-daa4c862326c"},"source":["# Turkish for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Kongrenin yeni politikaları birçok insanı fakir, hüzünlü ve depresif hale getirdi \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.02755211666226387, 0.012688509188592434, -...0.999879negativeKongrenin yeni politikaları birçok insanı faki...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.02755211666226387, 0.012688509188592434, -... ... Kongrenin yeni politikaları birçok insanı faki...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614276808413,"user_tz":-300,"elapsed":4536,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d519ed93-88b1-4bac-a359-057ba477707b"},"source":["# Turkish for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Kongrenin yeni politikaları birçok insanı mutlu etti \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.01936783455312252, -0.00632244348526001, -0...0.999999positiveKongrenin yeni politikaları birçok insanı mutl...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.01936783455312252, -0.00632244348526001, -0... ... Kongrenin yeni politikaları birçok insanı mutl...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614276815919,"user_tz":-300,"elapsed":5264,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"53e868b3-8ac3-4168-cd40-1cb8979b4339"},"source":["# Hebrew for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"המדיניות החדשה של הקונגרס גרמה לאנשים רבים להיות עניים, עצובים ומדוכאים \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.03273191303014755, -0.016592293977737427, ...0.999585negativeהמדיניות החדשה של הקונגרס גרמה לאנשים רבים להי...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.03273191303014755, -0.016592293977737427, ... ... המדיניות החדשה של הקונגרס גרמה לאנשים רבים להי...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614276821060,"user_tz":-300,"elapsed":5120,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d3345bd6-7968-4505-e274-00e52920629a"},"source":["# Hebrew for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"המדיניות החדשה של הקונגרס שימחה אנשים רבים \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.0014839960495010018, -0.01997889205813408, ...0.999985positiveהמדיניות החדשה של הקונגרס שימחה אנשים רבים
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.0014839960495010018, -0.01997889205813408, ... ... המדיניות החדשה של הקונגרס שימחה אנשים רבים\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614276827423,"user_tz":-300,"elapsed":4897,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"de685667-717c-4289-e1cb-1b51f05328c9"},"source":["# Telugu for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"కాంగ్రెస్ కొత్త విధానాలు చాలా మందిని పేదలుగా, విచారంగా, నిరాశకు గురి చేశాయి \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.029074613004922867, -0.022254789248108864,...0.999552negativeకాంగ్రెస్ కొత్త విధానాలు చాలా మందిని పేదలుగా, ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.029074613004922867, -0.022254789248108864,... ... కాంగ్రెస్ కొత్త విధానాలు చాలా మందిని పేదలుగా, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":30}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614276833539,"user_tz":-300,"elapsed":5247,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2ae6765e-4194-47ee-d8c0-c1200179ff1a"},"source":["# Telugu for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"కాంగ్రెస్ కొత్త విధానాలు చాలా మందికి సంతోషాన్నిచ్చాయి \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.0038313723634928465, -0.0348954014480114, -...1.000000positiveకాంగ్రెస్ కొత్త విధానాలు చాలా మందికి సంతోషాన్న...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.0038313723634928465, -0.0348954014480114, -... ... కాంగ్రెస్ కొత్త విధానాలు చాలా మందికి సంతోషాన్న...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":31}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614276840964,"user_tz":-300,"elapsed":7048,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8806483f-8b77-409b-c6a0-7f529a87d397"},"source":["# Russian for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Новая политика Конгресса сделала многих людей бедными, грустными и подавленными \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.029941828921437263, 0.016272377222776413, ...0.999666negativeНовая политика Конгресса сделала многих людей ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.029941828921437263, 0.016272377222776413, ... ... Новая политика Конгресса сделала многих людей ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":32}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614276847675,"user_tz":-300,"elapsed":6667,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"38e1e9af-ab6d-4b32-ad68-0e9d4f547b1c"},"source":["\n","\t\t\n","# Russian for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Новая политика Конгресса порадовала многих людей \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.002074663760140538, 0.014204155653715134, ...0.999997positiveНовая политика Конгресса порадовала многих людей
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.002074663760140538, 0.014204155653715134, ... ... Новая политика Конгресса порадовала многих людей\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614276852721,"user_tz":-300,"elapsed":5020,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"673c85b7-ad3b-41c5-ddce-d18d59e5cb24"},"source":["\n","\t\t\n","# Urdu for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"کانگریس کی نئی پالیسیوں نے بہت سارے لوگوں کو غریب ، افسردہ اور افسردہ کردیا \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.03277842700481415, -0.019150162115693092, ...0.999972negativeکانگریس کی نئی پالیسیوں نے بہت سارے لوگوں کو غ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.03277842700481415, -0.019150162115693092, ... ... کانگریس کی نئی پالیسیوں نے بہت سارے لوگوں کو غ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":34}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614276861784,"user_tz":-300,"elapsed":4774,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5810c92e-af41-4d65-9033-016e8d5fa37f"},"source":["# Urdu for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"کانگریس کی نئی پالیسیوں نے بہت سارے لوگوں کو خوش کیا \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.0033543522004038095, -0.03387867286801338, ...0.994481positiveکانگریس کی نئی پالیسیوں نے بہت سارے لوگوں کو خ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.0033543522004038095, -0.03387867286801338, ... ... کانگریس کی نئی پالیسیوں نے بہت سارے لوگوں کو خ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614276868665,"user_tz":-300,"elapsed":5227,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c06bbde5-273c-4d41-ded2-90f77c38b94e"},"source":["# hindi for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"कांग्रेस की नई नीतियों ने कई लोगों को गरीब, दुखी और उदास बना दिया \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.030935170128941536, -0.011918678879737854,...0.999578negativeकांग्रेस की नई नीतियों ने कई लोगों को गरीब, दु...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.030935170128941536, -0.011918678879737854,... ... कांग्रेस की नई नीतियों ने कई लोगों को गरीब, दु...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614276872834,"user_tz":-300,"elapsed":4549,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"74941ce5-b5a6-4bda-aa63-1fc47a10c6ee"},"source":["# hindi for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"कांग्रेस की नई नीतियों ने कई लोगों को खुश किया \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.005392682272940874, -0.024082256481051445, ...0.999996positiveकांग्रेस की नई नीतियों ने कई लोगों को खुश किया
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.005392682272940874, -0.024082256481051445, ... ... कांग्रेस की नई नीतियों ने कई लोगों को खुश किया\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614276882648,"user_tz":-300,"elapsed":5587,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"873e687b-4d01-4350-c9a0-cac340f803cb"},"source":["# Tartar for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Конгрессның яңа политикасы күп кешеләрне ярлы, моңсу һәм депрессиягә китерде \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.003766064764931798, -0.0006652609445154667...0.982602negativeКонгрессның яңа политикасы күп кешеләрне ярлы,...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.003766064764931798, -0.0006652609445154667... ... Конгрессның яңа политикасы күп кешеләрне ярлы,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614276887515,"user_tz":-300,"elapsed":4845,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"beebc172-0b4b-4d99-9b1b-3d35cde9f24d"},"source":["\n","\t\t\n","# Tartar for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Конгрессның яңа политикасы күпләрне сөендерде \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.00829650741070509, -0.007502756081521511, -...0.999998positiveКонгрессның яңа политикасы күпләрне сөендерде
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.00829650741070509, -0.007502756081521511, -... ... Конгрессның яңа политикасы күпләрне сөендерде\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614276895800,"user_tz":-300,"elapsed":4891,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"58e401f4-da4a-4774-9723-2e75655f7527"},"source":["\t\t\n","# French for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Les nouvelles politiques du Congrès ont rendu de nombreuses personnes pauvres, tristes et déprimées \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.017834072932600975, 0.011118757538497448, ...0.999893negativeLes nouvelles politiques du Congrès ont rendu ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.017834072932600975, 0.011118757538497448, ... ... Les nouvelles politiques du Congrès ont rendu ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":40}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614276901842,"user_tz":-300,"elapsed":3925,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8a81e6d2-f19a-4d6c-a321-f7ae83b7a1d4"},"source":["# French for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Les nouvelles politiques du Congrès ont rendu de nombreuses personnes heureuses \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.01951567642390728, -0.010051790624856949, -...1.000000positiveLes nouvelles politiques du Congrès ont rendu ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.01951567642390728, -0.010051790624856949, -... ... Les nouvelles politiques du Congrès ont rendu ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":41}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614276907324,"user_tz":-300,"elapsed":4211,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"210c560f-5dcb-4f62-ce19-885fff57ed25"},"source":["\t\t\n","# Thai for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"นโยบายใหม่ของสภาคองเกรสทำให้หลายคนยากจนเศร้าและหดหู่ \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[3.636999394984741e-07, -0.0028806282207369804...0.983253negativeนโยบายใหม่ของสภาคองเกรสทำให้หลายคนยากจนเศร้าแล...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [3.636999394984741e-07, -0.0028806282207369804... ... นโยบายใหม่ของสภาคองเกรสทำให้หลายคนยากจนเศร้าแล...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"KgatiiyuZumz","executionInfo":{"status":"ok","timestamp":1614276920252,"user_tz":-300,"elapsed":5061,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"11068004-0c0c-432e-dcc0-3938eac4c60a"},"source":["# Thai for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"นโยบายใหม่ของสภาคองเกรสทำให้หลายคนพอใจ \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.012098119594156742, 0.006513879634439945, -...1.000000positiveนโยบายใหม่ของสภาคองเกรสทำให้หลายคนพอใจ
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.012098119594156742, 0.006513879634439945, -... ... นโยบายใหม่ของสภาคองเกรสทำให้หลายคนพอใจ\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Fxh1gasROElC","executionInfo":{"status":"ok","timestamp":1614276930093,"user_tz":-300,"elapsed":4481,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cf434d7b-7a32-499f-d094-24da1dbca7b6"},"source":["# Khmer for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"គោលនយោបាយថ្មីរបស់សភាបានធ្វើឱ្យប្រជាជនជាច្រើនក្រីក្រក្រៀមក្រំនិងធ្លាក់ទឹកចិត្ត \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.04521242156624794, 0.010355296544730663, -...0.999896negativeគោលនយោបាយថ្មីរបស់សភាបានធ្វើឱ្យប្រជាជនជាច្រើនក្...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.04521242156624794, 0.010355296544730663, -... ... គោលនយោបាយថ្មីរបស់សភាបានធ្វើឱ្យប្រជាជនជាច្រើនក្...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614276936826,"user_tz":-300,"elapsed":3746,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"25de67bf-e27c-458f-e904-f27cbca7efb5"},"source":["# Khmer for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"គោលនយោបាយថ្មីរបស់សភាបានធ្វើឱ្យមនុស្សជាច្រើនសប្បាយរីករាយ \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.025576740503311157, -0.020313693210482597,...0.999995positiveគោលនយោបាយថ្មីរបស់សភាបានធ្វើឱ្យមនុស្សជាច្រើនសប្...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.025576740503311157, -0.020313693210482597,... ... គោលនយោបាយថ្មីរបស់សភាបានធ្វើឱ្យមនុស្សជាច្រើនសប្...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"sZlmLhajPoBb","executionInfo":{"status":"ok","timestamp":1614276944538,"user_tz":-300,"elapsed":4110,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2601e901-778b-4703-d8ca-3e3134d0a773"},"source":["\t\t\n","# Yiddish for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"קאָנגרעס ס נייַ פּאַלאַסיז געמאכט פילע מענטשן נעבעך, טרויעריק און דערשלאָגן \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.007056358736008406, -0.0033369245938956738...0.940492negativeקאָנגרעס ס נייַ פּאַלאַסיז געמאכט פילע מענטשן ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.007056358736008406, -0.0033369245938956738... ... קאָנגרעס ס נייַ פּאַלאַסיז געמאכט פילע מענטשן ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614276958250,"user_tz":-300,"elapsed":4657,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"85c44aaf-128a-4abc-ba8c-c2d027734963"},"source":["# Yiddish for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"קאָנגרעס ס נייַ פּאַלאַסיז געמאכט פילע מענטשן צופרידן \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.002619842765852809, -0.018449867144227028, ...0.999999positiveקאָנגרעס ס נייַ פּאַלאַסיז געמאכט פילע מענטשן ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.002619842765852809, -0.018449867144227028, ... ... קאָנגרעס ס נייַ פּאַלאַסיז געמאכט פילע מענטשן ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614276964712,"user_tz":-300,"elapsed":4135,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3b20d7ec-a3c8-46ad-a2b7-da5d2e2b787e"},"source":["# Kygrgyz for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"Конгресстин жаңы саясаты көптөгөн адамдарды жакыр, кайгыга чөгүп, көңүл чөгөттү \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.0002845969283953309, -0.002948887180536985...0.999439negativeКонгресстин жаңы саясаты көптөгөн адамдарды жа...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.0002845969283953309, -0.002948887180536985... ... Конгресстин жаңы саясаты көптөгөн адамдарды жа...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614276969186,"user_tz":-300,"elapsed":3853,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cc925ae4-a8ab-4a71-9e68-fa9c15d649ec"},"source":["# Kygrgyz for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"Конгресстин жаңы саясаты көпчүлүктү кубандырды \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.01854480803012848, -0.0032602460123598576, ...1.000000positiveКонгресстин жаңы саясаты көпчүлүктү кубандырды
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.01854480803012848, -0.0032602460123598576, ... ... Конгресстин жаңы саясаты көпчүлүктү кубандырды\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614276978399,"user_tz":-300,"elapsed":4262,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2b01c26a-1523-4319-f90a-a936a055dcf5"},"source":["# Tamil for: 'Congress's newest polices made many people poor, sad and depressed '\n","fitted_pipe.predict(\"காங்கிரசின் புதிய கொள்கைகள் பலரை ஏழைகளாகவும், சோகமாகவும், மனச்சோர்வடையச் செய்தன \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[-0.0065728831104934216, -0.000398304604459553...0.999544negativeகாங்கிரசின் புதிய கொள்கைகள் பலரை ஏழைகளாகவும், ...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [-0.0065728831104934216, -0.000398304604459553... ... காங்கிரசின் புதிய கொள்கைகள் பலரை ஏழைகளாகவும், ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614276984526,"user_tz":-300,"elapsed":5457,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4e3e4bab-76f8-45ea-927e-625ad97b81bb"},"source":["# Tamil for: 'Congress's newest polices made many people happy '\n","fitted_pipe.predict(\"காங்கிரசின் புதிய கொள்கைகள் பலரை மகிழ்ச்சியடையச் செய்தன \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingssentiment_confidencesentimentdocument
origin_index
0[0.01883488893508911, -0.01959705352783203, -0...1.000000positiveகாங்கிரசின் புதிய கொள்கைகள் பலரை மகிழ்ச்சியடைய...
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.01883488893508911, -0.01959705352783203, -0... ... காங்கிரசின் புதிய கொள்கைகள் பலரை மகிழ்ச்சியடைய...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":51}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eLex095goHwm","executionInfo":{"status":"ok","timestamp":1613854901863,"user_tz":-300,"elapsed":958785,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"76502277-986b-4ccc-b2ca-47ea42eaee08"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":103},"id":"SO4uz45MoRgp","executionInfo":{"status":"ok","timestamp":1613855192012,"user_tz":-300,"elapsed":102760,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"63ed9cc5-2640-4cc4-9600-9a7bf4979e84"},"source":["stored_model_path = './models/classifier_dl_trained' \n","hdd_pipe = nlu.load(path=stored_model_path)\n","preds = hdd_pipe.predict('I am extremly depressed and down cause of school and just feel like ending my life...')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingsdocumentsentimentsentiment_confidence
origin_index
0[-0.02176278457045555, -0.04837987199425697, -...I am extremly depressed and down cause of scho...negative0.999979
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... sentiment_confidence\n","origin_index ... \n","0 [-0.02176278457045555, -0.04837987199425697, -... ... 0.999979\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"btTWUdsDNhfx","executionInfo":{"status":"ok","timestamp":1613855223311,"user_tz":-300,"elapsed":1136,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d5bb5163-e944-48e0-e509-6cbbebaf255d"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['sentiment_dl'] has settable params:\n","pipe['sentiment_dl'].setThreshold(0.6) | Info: The minimum threshold for the final result otheriwse it will be neutral | Currently set to : 0.6\n","pipe['sentiment_dl'].setThresholdLabel('neutral') | Info: In case the score is less than threshold, what should be the label. Default is neutral. | Currently set to : neutral\n","pipe['sentiment_dl'].setClasses(['positive', 'negative']) | Info: get the tags used to trained this SentimentDLModel | Currently set to : ['positive', 'negative']\n","pipe['sentiment_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo.ipynb b/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo.ipynb new file mode 100644 index 00000000..5e68aa88 --- /dev/null +++ b/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_lingual_multi_class_text_classifier_demo.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo.ipynb)\n","\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data :\n","\n","![image.png](data:image/png;base64,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)\n","\n","
\n","\n","\n","You can achieve these results or even better on this dataset with test data :\n","\n","
\n","\n","![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbQAAACwCAYAAABn0pvkAAAgAElEQVR4Ae2dDY7jLAyGv6vM0XqYas5SzVFWPcdKe4l8wmCwjfNX0g4h70qrJgEMfmxsSCfpfxP+gQAIgAAIgMAABP4bQAeoAAIgAAIgAAITEhqcAARAAARAYAgCSGhDmBFKgAAIgAAIIKHBBw4h8O/nNn19fU33P6+Ie073r6/p6/aY/r3SHG0EgcQy8Py6TY+/oigc/n1MNyoL5ffpaYqPOf03PW5Bfvr//Z5ejhkrpIxEAAltJGv+oi5IaL8I3+06JDYnoXFdSmzvSWjkC7OLEyxe2ATDf/65f3yRioQ2vFdBwWsS+L2E9vz+mm4/zl47BLiv+/QIu/nZhHdNaw2pNRLakGb9gFIheN2np7ydJANGXo2n1bFze493WPE2Ub1y1+Xy1qKQObMjmG87TarMuzUldQrjFnVC2xA4QwDl21uv3fI82kTxllsYSxmb2S1RcOdxmzIajuRqb8eaW3rS1lmV0N6Tmypkn8gNDjqIY6sT2nO6p3GSzd0xrwxBMfOS5hKzhbLMQtQx41N++rZbtZ7+xtaq79rGajEReH0/1RyTdlmdPwtzL966DnHCYWbb8a1nNXZP1/Zr2KG1M+xAAjsVJyITVLKDcYCL9XPwp0DBbVOSERM6TuZS7itcTy6ql4OF34qvUh8iWcXrZpxp8vCk5CCjzsW4WfbnP0sQ4rFRYmP9iAnbYpomw38yetrx//u5i+/GjK1z5Rl7cPlGu3D19c9oK15YlE+hZxJCdtttpxV9FplZRsk+yh5hccFjNX5n7PPa+NcJejX8ecE1ayZVQpOLQON3dv5oPzQMLF+StcAsDDFw221n1u21TyS017h11qp2bDURkvPlBDbFnYMMtrIsBtSZyT2reT0Gqur07YlQ400V6JqdEGKSVG2or7XE6/V+9DUTMIN4M25mH3uO9dkGrt4LQ6w4UN0Ze7Cct7GyyYM7LJ979YstY4DV3DbKNAmJWkn9HR+ViSEcs23KWHh+lDG844hYze5sahvLcUufi2Nz/IyTOlUo8lwbCR/mPy6SXFTfQZ6s/w44jkwkNAfK+S4VR+SxK4eUk5cr5M8UfPNtAXMbjNpumbz1GHIXFFCSXJugUiUar5pcaadorslJUrVZ1DOP5gMHOnDYDsPELzuYcszBgcqt3lJICsBKRlV/wR5B1ttYNSQ06SfBH62vKL31wmWRmRdYpf7yWHKm45X5UdU//oL0F53QaxuHurlOpbe2TTV/0i4s+GFdZhLUIrPEoOr/eDZWIhKaJXLK89qxlUMuOt9y8NW7tSU49Ri82jQ5baCa/AlEOpi68prSMXS2qKc3mnddW2aqgo4zhEovVSdwFkFrht2q3d7GSgdNNfR0Im3olW+5RjLEzmWRGSVKnQBpYcTtF1ks23LLWI+rY21fzznlW1VC0brUzIo8z0bq2iKzpHHV/3Ek5iQhoc2ROdX14og0bHI2cZtkxfnIUXlyO3rPJSFd1YxBF+YzNSnyVT+h1bc1Qh9FL5IldyYreoru3nyoA0fVGQXYhV2vtZ8SoBkwI/nHMrH6ij3exuozCU0lpKDwBmZ55zKZMa6wWJsfyjxvPTHjFjuq0G0cp1jsmIRi9bDzR83ziqfnd2aRYHUnGQt+busfcI6EdgDE3xcRnU3eguLbVzS2lQkb6vBkyDLMzoicXdyWzPIpOJfbZrF9ceJKrkqccYLmPll+laSK/BKUnCS4Qc/P2CrqlRl5nVbcTHBIASWzEfbQTNOfwTOzSm5gt2SPUG769sa7+ZoNutxwxtZCL67pflZ6FZ1y/QVm/Ic2mSfzCo03+I1m7twOzYM48sBhJscdupJcvp/0V7V5jsgymlvazqs6GZ5Z7kZmoZruQ/d/JCmWhYTGJE79ubIaP7VuGDwIgMBLBEJCW1gwULKxCfKljvpphITWjy0aRoKE1gAPTUFgTAJIaGPadXytkNDGtzE0BIGdBJDQdgJDdRAAARAAARDohABuOXZiCAwDBEAABECgjQASWhs/tAYBEAABEOiEABJaJ4bAMEAABEAABNoIIKG18UNrEAABEACBTgggoXViCAwDBEAABECgjQASWhs/tAYBEAABEOiEABJaJ4bAMEAABEAABNoIIKG18UNrEAABEACBTgggoXViCAwDBEAABECgjQASWhs/tAYBEAABEOiEABJaJ4bAMEAABEAABNoIIKG18UNrEAABEACBTgggoXViCAwDBEAABECgjQASWhs/tAYBEAABEOiEABJaJ4bAMEAABEAABNoIIKG18UNrEAABEACBTgggoXViCAwDBEAABECgjQASWhs/tAYBEAABEOiEABJaJ4bAMEAABEAABNoIIKG18UNrEAABEACBTghcNKE9p/vX1/R1e0z/OjEEhgECIAACINBGoL+E9vcx3UKyEf9vP0enHSS0NrfZ1/rfz03Y8z499zWfJuUTt+nxNwlQ15PPfO+Wvnc0H6nfwmy57b/pcRPzaxBewSjLes+b7fkteIi4c/+j26h6A3HTWu47Y+aW1TT9jp91mtBs0BLn+3ij9m8T+HOfvr5KEqOgsGdnTO1n7B8S2h5Zv81ia/8tzExbCjiCUTgvC8S4sCvnWwfYYT2j924/kyrRQkn6XArOSGKCUmRy+3nQ3S6b0H7Lz/pPaCnTZ2DBccUEnaYwKaXz2ZXa15Tb2lWcddAg+/upVnp2svOKJO4gS6COljarEhHIY3naGfIqUOkhfGWYQ3Z6scOugsWSsqG9tq2qPWRCa2HmtHXmh2RIgd/OA1nhFMeO3rv8TCtJc1wySXFB17r2WWAU42qMaTLGemQ+5Wf9JzRyTJE41hKare/R5cQmnTbUC7JDsuHrdG76FkmKHF8kpWoimL6DUW2CNFUGO7WLjZLQ1yYAgUi2fMhbloI33YqU50PQa2EWA7tm610roD4VaEqP7zhqYWbHY2VNU5y3cSfCX4VoxlbGlc7jnF7j8Sk/6zSh6XvaCtamhKZ3ZZ57uclnRXYwihqLWf2STJHwbL9k1OECsNVSnnNwiEE1BIPALwYIsWuTTeRxWmCURUCSwwsOSnjSV8TiQ8o51XEbM3eRlbhXGIjvwg64atDrhTZmUqs6LrDvCt8ahpvU/NXjDQntg7w6TWhykkVgOagFOCopsDMLgxDAFOhU3VKndty0Q1P1pWx2bBlAw7EcawzWvIrLY87dahk6OeZKAx1E23Eii4pFBpt0r2zt2ajgWltQlJo9HzUyM1/G336e/m3btBjYZIeecdHYWpmxglGOZuL5q3eNZVzt02MmGHzYz06Q0NJ3Yrwqr4JcAKqTisBJuwGdAGPpqwlNO7vsyR5HQ9dJLdX7sKHt6D5zHie+ZrBsLzUuYiRWxqGwsr9o4dUXxec4bGRWKRl4G4bJ97RdqoYnunAMM4oJakEbEdR3FJDQinPEOOfGxV/wsxMkNAOMdl88QaNj2V1SgZ2SoeOk+xMa/7EJ9y178Y69SSbrGb1k0UDHcddUFhxu0EiOXy88LEN7LkElX+CFjyw62XEbM6ms42O/EGTkiN513M7MYcWDVTGHv2vfGgdYyKifM9x+yc86TWj6tp5dSdJ3UekvBe9/AlATMPmvCOlTOl4Keqrc/BGISn5adnDJOHHE+HJ9R7YKrtHwfDsyfFq9RnV5xSzzEtrOJrRQR3OTzJTcwXgq3fYwo+DL/lnmBdOWc6f4Yl2P65/p82VmwcvCs2ge5wRAybY73jNBOmqsys/Y38rfGPyWn/WX0I4CDjkgAAIgAAKXIoCEdilzQ1kQAAEQGJcAEtq4toVmIAACIHApAkholzI3lAUBEACBcQkgoY1rW2gGAiAAApcigIR2KXNDWRAAARAYlwAS2ri2hWYgAAIgcCkCwya0+BzE+vM1oZ58tul91q+faXtfX5AMAiAAAtcj0GdC4wdt8wPQ64nJmm5TQqN++MFr58Ho1P8xCe+6Ca3poVTjC+4rdvL7C/f7ifWbXs5fZeY/0FoeeA362To+015IbB/Hq8xCD7qtWeQaH6QH0tVLE7aPcZialol6KH0ulr5/fnaY0OKbIT4xyYITu8nKvurmEC+8aEIzLCmYKudfgmt8gSZRPSkoGH3f1RtjlqR2X9bEzGhnmEVW4le9TV+m9XlOjR67/Cy0lT5pmI35M0XHmpZ4LyV5Y59jey/S+ktomxS3KwDeZU0TOV/e2YnrRed0tJBgFsagV3KOfGpbXgVTEmbq789juvH45CSqxjfChWinwoDtUyclT1tibRiFiePLW7CnJ7zba23MrFo2gfn8HD+2gro+b2NmGVU/GhwSnPHDrnH8wuBqhnoQld/p4sPO+kto+d19c5MsJbOl1UDAQ6usORnpFsOcjLmEZq5XAZfK54J13G185ffAxfNP7EQP85bdgmySYQb6FticWG+S6GsykNm+5qT2ft3qsY+Z1s7K4hfrMv+Nc0kL7fDM6rmTGcWKslCi3YZMYEhoKzaPfjQby1Zi8YrwXcUdJrQ4fnKqtJNRoExSmdV2EeKKAWb6CGNSY1E/8CmDqzcqO+l2/NClJ+4U11jnFDj3/sAn2VAsEOh87mXS3NcpwCwMkvV4kZmQrJO/KMiLxhLEZen5jo9gVnjnX6xnEOx3fGclL0q5wkU/KU6mu1FyAWBwfGp3FrrtNqFlJgka32aqdkW5ojlYSmhB5oIB6De3KqcVDp8dOxiTA26YVDbhyTHxpCvXPmno0usnjyKT8CV6WQhEjuV8eTxkb+Z9e0zP/L2n5WnPl+X2W9rOLOoW5VScaT5pn12cC/2CEiNrZJYSVmTF83zl7k4VH8RwrnhIfuUwI7bsb+8H039C47/K4tuDa8mImS0ktNVE4hpnLRCvldcBd3UcrMtpPyMTXoxENWoOe9QLzCjwkI3Kd5Xlp1DEDm6P4G7qHsPMX/jNyZYLjm5A7BjInF7bAmnwKb0r8+SJ4SzEFlHrYof+vK7ZvhfLCRJaXH2VoGjPZwDNOd3cdSnGTWj8p73OKiS1jbuJufLa4OMnNGZWAosbaMkmy79HFRAvT46arzTpmY6jH7Uwi3Ok2p3x4w28OAxQyNdLX2fiJMfawoz8St6xSf5Y8ws9xmSnE6AcyTWP5+f1Z32ru4QWHVOvvEsyY2eJE7asyksS8dqXP8RY+WMQFj+T0EJxJV9OBKe8jL0OuFdIaBUzw4uQzyY0befCkg0lP2u+svRsx8rPdjFb+7FKzbTcMj8boXq8rzNLSYpvbatb5PWcX/bDelxDXrF3SCof/Z3E311Ce6/xxwp672UF6SAAAiBwLgIXS2jnMg5GCwIgAAIgsJ0AEtp2VqgJAiAAAiDQMQEktI6Ng6GBAAiAAAhsJ4CEtp0VaoIACIAACHRMAAmtY+NgaCAAAiAAAtsJIKFtZ4WaIAACIAACHRNAQuvYOBgaCIAACIDAdgJDJjR68l88JPnJp/qv8rD0dhezD6aWh+A3yeCHrtme1QOc/IOVn30jwaaxN1aKfvyCXuqh17q9egB5oHcStuil29YvbVYxxfHBRlOfsvkWJi/78ItEhkto5Ji/6HDBgHiTgPBG89YVcvDN9rEPwtt37MW3Xtx/wm/M1YFbjOJkhw160QKgsIiBWiwimuzRMcYWvUJb6ZMeQ1FOPixfH9YxlrcNLTDLDLy3gjT4cMOgB0toNuBZMqE8TPYIO746S0x259VV6n1u7Phy15CMald4+bVc2ehhLLLf9XcX2tGf79yxhwkWizpRXW0fuWB4fqfAvUfmYod9FLboVQfbFFj+BN0a7dEHHmcUbXrR3K3mKS8KJL/UteOXzqAudcluJFp8uAXcYAmt3N7yd0nR8eX761QAMKu86sWtVB7eM5mCrBNIZcC1hlkqs3XHOA/BgAND0KgkdLVQmFU22YtXx8RfyksNHTvMijxTwW69Iq/Clv2d7xq02qNXeI16EWdmZN+FaWUHBt61Xtl8Zlw2oeVed/twbvnSwXAJjSgkB6VdEgdDKrATPr1tnOrEMpsIVRKqAmotT9U3Jgll6taGKR/vlCd+Cawh2C4x8hiU3a/ereW6H540ud93H+zWq/gj+dpXDNJlB3KMPd6t9n75R+hVfLTcSosjIZZiBxfZOgur/QMfo0WKt2UhJdTa7cOi7QuHYya0DIKdlANhmfC5St6VOWXpJ0tykgt1VYLMUvLBcrDm8cRfE3AdIEsa4SAEGqurz9nXNvEyt3Urbh+eNP5Y33B1t17Fv7LPKh9utccbdDxEZKNeKiAzQ44ZYYBFflgk3/+Ec1l+iBInFRLZSH9Tiuz2YdV698ngCW2aJgXUCaY5ScUybRhzLded57yc0EQ7NYnE9aEODT/SLUyAjavbvNgoUNxbG8rGpe7pj17Qy+4m+HuzuAhotEe3QNv0mmOmY4FQPthlZWErag98mBK92L1Wyr7gw5WMHReGT2jxdhWvpqLjlxW+Xl3ouvzjh9xW3p6cJ+wGXLd67LuMxa10+ouRaUlgLh9yeud2LCW00paDs70lpBctp0dWFFgKBovMxC9Qm0XBJnuUEZzmaJNeM8woockEleq5c3PJJqehdcRANySz0M2HeQ2W0BJkfmaJPkVC4l+bFeV2FRYnBv/AqAym2xJaDrrcR1691GOzfR/hZj3KUExl4ODBzgSaUKzaBqaZp1NGzI3NuI8TfVY6e3otMIt/zMQ+LP0/QlDyPXuciJUc6qpes8ziQjf/ZfLiD3zWPOUYrnKsWHOsE9z88vfPzcES2po72R3aWn2UgwAIgAAInIUAEtpZLIVxggAIgAAILBJAQlvEg0IQAAEQAIGzELhYQjuLWTBOEAABEACBvQSQ0PYSQ30QAAEQAIEuCSChdWkWDAoEQAAEQGAvASS0vcRQHwRAAARAoEsCSGgHmkU9eyGel/K7wCMEPhdcBQEQAIHXCFwqoc29lipcd98K8BrT+DAwElqmpxL93nfg8cOw6eFNz070pgd+uHOVex5W1wctzHTb8hZ5UpjeHMIPXesH1bsGsmFwWu99D0DrtoZZeh9mfvB6oIfRN2D1q5h56b3jVjPdZw+/0/Wrl0to8k0TjAcJjUm84dO8eomSz+aAYF4PRpNIvm0gveFhkCSW6bcwC20l34pZ7sX/fTRZfKbjNzKjwCyYkg+P5nONtq6YtNijYSyXSmjkmJUj6lt/elVhdm4cLOTqpJKXXsnkXLdv7Y5v7m6wXvdNI1v1iq/FAKsVsoEklIaJk+UFe7ictZxznR3ATDEJiwK5CNA0FE9ddKKzdzIzi6pAhXz4MzuOsxhBx9Y2e7TofNmEFiZyvH0V4KcJb1YVr/zAZzCGNi6bxxo5nnu30LjF+T9tMI3BYWsi9zjKazEYP/JP1GyV2zfXNmYx2JakHxipHZtS3valCk90YvXY52fLzKzsgMW7diJchw/VxjLLZ6c9GsZ3qYRGCYpuHSTAtJLlhGYTTqSqVrCU8ORq1xoytpFBN9uGd3f5gt82Fw9xwI4ddeWEo5gu6Wl3c7wzznYL3wWJlXJlnyXhvZY1MiO1Cm9vB0v+OdR3ju9lRosCseul84Vdb6+edfi4aL6l72PFLdmS8IsfhoX75nnfMNBrJrS/j+n+85wetxAMw2QIn36CUUaokpJPHgmNuQS20eHLTtTnzC3spwq+t8f0/LmlW46eHO+aldj7eSOzlPTL3QeT9I36xFcFI1PhFKfvZlbkx0VZOBcLqVMwevMgKbkxk8Lr1Xn/6mivldDCZKegeJ8ef+OtwfLrszEY5u9niKi5hoS2088MP2odnF3ucveJDAsMniRqsSHsxeX7JPdSu41ZYKJ3ZZ48oSslQA5E4vqpDj0dt/vZS8xOvwg42sCSd5s9WkZ2vYT2dZtutDNLv2/2fc+rrbgbEJNbrTq2/h7azHdoFDhKIKdJJH4/qMWIPbeNTIve7o4g7Srmv+uJGlaBx7PPACvnFmbESAbbxHYuyVdMe3amhbF9jJmZxwtDulSRndeb7PEGQhdMaHIFm7bGIgBEQ6T7wnYnsbhDi6uScEtC/Rf33qXssBMMwWQu0LzB1r8mUurtJq3ZhJbsk5jq3XNUR8keIJmxkZRewj+5nP+QoeZZ+6H0MSU3cBX+mWWf9EDp9jZmYsF7Uk6HDJsWkyLWObxX7XHIQLSQayU0rTvOQAAEQAAEBiKAhDaQMaEKCIAACFyZABLala0P3UEABEBgIAJIaAMZE6qAAAiAwJUJIKFd2frQHQRAAAQGIoCENpAxoQoIgAAIXJkAEtqVrQ/dQQAEQGAgAkhoAxkTqoAACIDAlQkgoV3Z+tAdBEAABAYigIQ2kDGhCgiAAAhcmQAS2pWtD91BAARAYCACSGgDGROqgAAIgMCVCSChXdn60B0EQAAEBiKAhDaQMaEKCIAACFyZABLala0P3UEABEBgIAJIaAMZE6qAAAiAwJUJIKFd2frQHQRAAAQGIoCENpAxoQoIgAAIXJkAEtqVrQ/dQQAEQGAgAkhoAxkTqoAACIDAlQkgoV3Z+tAdBEAABAYigIQ2kDGhCgiAAAhcmQAS2pWtD91BAARAYCACSGgDGROqgAAIgMCVCSChXdn60B0EQAAEBiKAhDaQMaEKCFyZwL+f2/T19ZX+36fnDhi67dd0+/lXtX5+s+yv6et7j/RK1Hku/H1Mt8DU0/fPXfC+TY+/Wi3NdJ89tKTtZ0ho21mhJgiAQK8EKLiWoEnJ5/aY6rTkKBDayroUxGWA/jc9bjNB3RE3yiVKSLfH9AiJ3CY0wygmr8J/arFHA8BOE9pzuueVlgNzSg6W6wiQBMO0z84a293/FGJkCDYWGSnIEu1z29hGrzqk0yeZatVSVnrsHHKCedfKyHAEAiCwjUCc12pXZQLukhwVA6himP9iboc5zTFiSdBIZYFf0pkWB0b/+lqMmTG2ttmjBWOXCe35LROUBBVUTcnMAC4QYn3l3LlwS0ILtxXYmU3ffx/TXdyKqBISJTNumzuNB9UEc4xumuAUBEBgC4EwT+W8i/M23H6Ui9dZSTQ3y+LT7u7C+e3noRbZm+TOdniugjp52TiaYvIXM2y0RwOeLhOa1Sc6VNrbmK2srVslGVXBGmKa1OosObZ0VtW3kjVNE9Xn5LueoJQs1dYKxjkIgMB2AhxAS2ANc1jNt1Vhpa3ejfF1nufTFG+nyQS6KvzUFQJHjwkzDguHsIEosfQIe7yGrM+EZm7bMbCg4nLCik6s4Usw0TllwipGsAlKtuNjdm7x5fAXO3pcFUrZ3Cp/Br3SLczQr7+LzLVxAAIgsIlAnHt6R1bP9VlRaiHLc5zntSfHuzYr/fQFcwlNxuWgZFlANNqjgVh/CU05V9SsgEqrI/O9ltRfJShZQMe1I6r6K7smMqzsW9WvZVfd03dzYWUX6l5nhVdzwBUQOJJAnHt6gci7hPV+5gI2y1Pxh8Rtmevr/Z6lRs3H2zhIJm32aOHSaUITwT7t1ti5pvQHG+XcqO8kxFLDgOadIH8fpxJUacVH2rBR1lfeoaXdozjndvKTEujtlr9wlWU4BgEQeI0AzSvxPVqcZ+avHFNs4Lsk3BPN62qhKr5/ozjBOza+5SjOWdCgnzruJSVT7Mx3pAyjTfZ4A6/+ElrauobtLP1PfzaqE1jZ0sZ6xrnYcYWM/NeFsuz2mJ7h2ZWNCS1+Z1ZuN95/wjMauu9oyFJHj5tva4rJ8gajQiQIXJGAmnsyQTEMnvtVGS9Oy7zNgTq1VbLNnGfxY33aGJvYcKwMyvKGgOKsjoOhWDGrmL+HVpcJ7T2qdiKVJlVt/E5Gh2GAAAiAwGkJIKF91HTmludH+0ZnIAACIDA2ASS0j9hX3NKQW/aP9I1OQAAEQOAaBJDQrmFnaAkCIAACwxNAQhvexFAQBEAABK5BAAntGnaGliAAAiAwPAEktOFNDAVBAARA4BoEkNCuYWdoCQIgAALDE0BCG97Ev6+gesBy70Op/DCs95B8Vo3/ilS8YSaXnfOghZluy29ALxzozQ/Mc+sb6Uvzbo+03vue9dRtDTPrg4HdVf5amXX39FUPVtdzTzPdZ49XnQwJ7VVyaLeNgHklTvWaoUUp9n18/nN8NHG+7+YnRBYF913Ywiy0lW9loIBUgk1kJX5t2fTVN5iF0Rk9dvnZCjN6Q5BkujCMkYrIV/ADnysmDc7z/Yi/ABvevfYn/cS3chjz2pVqdcArcn5Vjcj+7Jy8sqhWU0a26ndl7PZ1LuLdcfYXWkmSmWT21Vnua7vWh3CiGk4CMgF2URmqK2yr3uidWmZ5NvktSu64sI1ZlbDyC7GjyiHQq9exOYw7hjMztPcyu2RCC36R4i4tDkwMrq/FuBpfGdZmjxkjb7r8+R0aBfn4LkOCQregdDBq+oHPJD+/NDgHvMDDgo7nm28fLP7ApzRoZK+Di+mbxllWzpusdbpK2q78YumQyO278nzVkn140VExk0xtX77E/q9aPaJfbWZG/l6SFs0x5heUF/OP58Nm/+8W3puZBaaSYbcc3jOwOnnFeVfmcJqnl/yBzzChknMEUHG1aB1SG6bU4wmpV+2q9kzQI/hUZtpSADDXlMCFE9O2TmAiYVFdcZ5+NaA4xUI/py1iuxaHD/oqe27QjbjSdz7GTsKXYrKUfDcI7rLKEcwKbz9ZhT7i3Q21W+uSx5ZBvZkZzV2+GxQ+jR9uGeKJ6ywlNCq79A98iiBUAhs7ZLI6JR7pQJz41n/gk1agc6sp0Xf2L5OU8nX3QASKFBCUc0tZ4ViNIwaRHEBIx9EnRgmcJXFHhuXcBZ0uJt7pdgcnttjW+Iy5tbYkte+yRmYp+EZG7K/Cz8jvOPGnvpSf9k3HH92bmZlOox8KpqZ8tNO5hBbuGuR4pr4OaLRHA8DfueW4tENTEzJqVhJf2qEtTUAvaTEgL4l417i++STDyr5lAqO6JVgHp5fGzrd3ciLcetvNDOJUp5GH5hCcnQPqijKObSiYBBtQmUB35H8AAAcOSURBVF70xO8kz/4XaG3M5oJPtMGc7LP74pxe2/xsmZnjo9W8d+oMdKnmgx/4LOYNgWg1oQlHTIGrBMWY/ct5EU1HQr4pCWsIutVS2noToW7FV7RhY1u1Q0t/NHL7eU6Pm1nBLY6LexjvM65miz1zQpKqpkUM+0UuItuXtnlRYL6gjvV3JMrcQZ8HLczIR6tFFyes5LOSX8W4TyZro3ofM9uzw9BWGexcx72kHPkN+1X9VdAme7yBU387tNYf+FxNHDGpvbSa58CbdlneD3xy0qy/u+AEqHcV2269vcHyHxQZnTvpLYMtj4G5OmWqbeAugzG3p89xElpQR+ntcMl/MVuV1X6mfcz4/9bdsmLd58m7mCm55jZbnySOGJX1kzR/5fxLSS3GUrOA3+LDRwzTyPh8QjMDuMypl2jJIWpHuAwTKAoCIAACBxJAQjsQ5pIoWuWZ1XR1e2hJAMpAAARAAAQWCSChLeI5srC+FVR9Z3Rkd5AFAiAAAhcjgIR2MYNDXRAAARAYlQAS2qiWhV4gAAIgcDECSGgXMzjUBQEQAIFRCSChjWpZ6AUCIAACFyPw1oTGz2/o52DWCH/2eaLwl4blQeu1saEcBEAABECgVwLnTGgHvnoGCe39rskLm7kHMBdHwA9d8yvDvEcfuGzzW/wXe+yisIWZbusv2OiREeYmH5btQvvXBqH13vd8p257HWarpHn+eT6iHqyWb/SJUjXTffZYHddMhbcmtJk+Vy5v2KEhoa0w7KjYPDy+79k76wvx0QfeUdOEkRPN9NURhX1DMXrsYhbayqRPc0UGm/T4iOS2b3R91gazw+1C82uEH/j0dy1xIpTbh/rVKBxkIlVZJicTM5fl/CoorpeCGP/wZ1hF5gnqtQvtuW2Uv7wyqJ8H02PnMfqfWrbo10woam2v8WqHV8b0+ZmVi6/Nu6/qBES9VQF2YQzOwkX6pjwuss/Os41ZleTtrxAEnxwtmVW/czhN8dVgYn4uuNk1mS0ACUVh7iU/oQWV8Zn6WozNMT+0+fDKyBaL3R1abeAgIw7SH7BURvaXktNfec28qTkF+TpRcmByZDuBLvdgkgjpkhOi6Vv95EGWMH+AH/icZ+OWWPtHW4Zbj8XebsN0MfpcXtCQbUWQonOWleqaibckvc+yRmZpPvEijQKP8f/bzyP/Htp2W/RJK44KzN5pnTp5yVwQek5zL7/nstEeDcq4CY1+U0xk5zg5xCDDpBGThFT6uTkrP9EmDzJc4yBUYPAE9H6oMQAt5bz64oSXBdNBqKuDpRiDkwgr2Vrc8pmRpxcCwcgi+FJdcY4f+FxmK0qJ6+xuNvpTCMzKR0T7cx2yv5YgEfx5n5+Wtno3xtfF3LGLhHPBSqMFs3eaLfie50fslzz3Svw7wh6vaeQntJywntP9+z7dKbmFQaaJkFbGQRH1v1ods2JycGlScV030MvA70xmk0iKdJ6wZlx8S9Jp93KgyLqL4CDlh2OV9AMLEXSJoWhblBjoKOocfKQsMqKNyvmSutpXOLHltioYp74U8yXZvZY1MiMfZN48H9jPPPbetV7ZzI0LzObIHHF9LqFxIuM+SixttAcLfOHTT2i0e7hPzz93WvU+v+/TUwboEEg2BY6gmE5OYYwEKCcEEeRJgbpNAZU0lIlDKb0yOZ12lWwlT5/QuKXelbzSfwi+escQy+QCIAdm3c1AZ1FnzaG276zCTtKnpEY2mJPNwXxWaucFc3rV88hThHyUF4tUQcur/T2Wn9sXtY6Ry3Y/uyYzz3v8azWf+qsbvu0Y/ajNHv4otl1dTGiPn/v0+Bt/myns1Mq2MziLTUReh45TVUnAtqvb1JMw9u9NwriK5xWpJ7sEPF7x64Br25RzbdhoNPzAZ+HjHUXGJRiXhCRqk0/IP/5JZWoHFq4l5hSw5fFcfdHHiQ5bmJGPVouu4vP0dQLfaQlMnEXDiVDloYJZRnH4gY57STz5zbxfbbLH4SOdppmEloIFT4wUcHTgj0nF3XEkZWWZ/EtEAiR2aHrruiWh8UTkW4slYAZGESaXmUApx/b9pLparwXKHHjT2PEDnwusRJGyB/uUKJ//sUrHlmr3YX1Q+4Hs4mzHrzPjhVbxf7vwU7JlcjsbJDNepdcuP7suM4NQnNq5lfxJzj8ZSx0/WrWH6O2ow5mEdpR4R463Q6Nr4wQjR+u4EraTjBxibjfpSsFFEAABEACBGQKfT2hOEI+ZfOzATjqahFbdHpoxEi6DAAiAAAisE/h8QnP+KMR+D7U+7DPWqG9rbPvDmjPqijGDAAiAwOcJ/EpC+7ya6BEEQAAEQGB0Akhoo1sY+oEACIDARQggoV3E0FATBEAABEYngIQ2uoWhHwiAAAhchAAS2kUMDTVBAARAYHQCSGijWxj6gQAIgMBFCPwP8O2eo+ye0B8AAAAASUVORK5CYII=)\n"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu > /dev/null pyspark==2.4.7\n","\n","import nlu"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download news classification dataset"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614340737448,"user_tz":-300,"elapsed":76356,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"76004150-a292-4e20-9e81-5010a1180f99"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/news_category_test_multi_lingual.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-26 11:57:45-- http://ckl-it.de/wp-content/uploads/2021/02/news_category_test_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 1592801 (1.5M) [text/csv]\n","Saving to: ‘news_category_test_multi_lingual.csv’\n","\n","news_category_test_ 100%[===================>] 1.52M 1.40MB/s in 1.1s \n","\n","2021-02-26 11:57:47 (1.40 MB/s) - ‘news_category_test_multi_lingual.csv’ saved [1592801/1592801]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":419},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614340738498,"user_tz":-300,"elapsed":77384,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"813c3dc3-554c-4d60-8691-366c67eae387"},"source":["import pandas as pd\n","test_path = '/content/news_category_test_multi_lingual.csv'\n","train_df = pd.read_csv(test_path)\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
Unnamed: 0ytexttest_sentences
10311031Sci/TechAether Systems Inc., a Maryland wireless data...
65666566BusinessRenee McDonald remembers the Christmas trees o...
51225122WorldPersonal freedoms in Canada are being eroded b...
73127312WorldThe DUP was last night reconsidering its boyco...
12311231Sci/TechMaking games for the future consoles is going ...
...............
21892189BusinessThe Ontario Securities Commission is warning ...
15441544WorldA US military intelligence soldier in Iraq has...
25352535BusinessTroubled carrier US Airways has asked a US ban...
73837383SportsManchester City chairman John Wardle has not ...
19201920BusinessConsumer prices barely budged in August, sugg...
\n","

6080 rows × 4 columns

\n","
"],"text/plain":[" Unnamed: 0 ... test_sentences\n","1031 1031 ... \n","6566 6566 ... \n","5122 5122 ... \n","7312 7312 ... \n","1231 1231 ... \n","... ... ... ...\n","2189 2189 ... \n","1544 1544 ... \n","2535 2535 ... \n","7383 7383 ... \n","1920 1920 ... \n","\n","[6080 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","By default, the Universal Sentence Encoder Embeddings (USE) are beeing downloaded to provide embeddings for the classifier. You can use any of the 50+ other sentence Emeddings in NLU tough!\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"id":"3ZIPkRkWftBG","colab":{"base_uri":"https://localhost:8080/","height":875},"executionInfo":{"status":"ok","timestamp":1614342255869,"user_tz":-300,"elapsed":1594738,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4ecfe4e4-bef0-43dc-9a13-5845f4b4add8"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.classifier')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['classifier_dl'].setMaxEpochs(60) \n","trainable_pipe['classifier_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df.iloc[:1500])\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df.iloc[:1500],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","from sklearn.metrics import classification_report\n","print(classification_report(preds['y'], preds['category']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," Business 0.90 0.92 0.91 378\n"," Sci/Tech 0.94 0.92 0.93 391\n"," Sports 0.95 0.99 0.97 352\n"," World 0.95 0.92 0.93 379\n","\n"," accuracy 0.93 1500\n"," macro avg 0.94 0.94 0.94 1500\n","weighted avg 0.93 0.93 0.93 1500\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorytest_sentencesdocumentyUnnamed: 0xx_embed_sentence_labse_embeddingscategory_confidencetext
origin_index
1031Sci/TechAether Systems Inc., a Maryland wireless data ...Sci/Tech1031[-0.018817514181137085, -0.018930165097117424,...0.992930Aether Systems Inc., a Maryland wireless data...
6566SportsRenee McDonald remembers the Christmas trees o...Business6566[-0.033650271594524384, 0.04151156544685364, 0...0.999996Renee McDonald remembers the Christmas trees o...
5122WorldPersonal freedoms in Canada are being eroded b...World5122[-0.00797173660248518, -0.05635803937911987, -...0.999978Personal freedoms in Canada are being eroded b...
7312WorldThe DUP was last night reconsidering its boyco...World7312[-0.04457780346274376, -0.013035906478762627, ...0.998248The DUP was last night reconsidering its boyco...
1231Sci/TechMaking games for the future consoles is going ...Sci/Tech1231[0.00020110986952204257, -0.04935045540332794,...1.000000Making games for the future consoles is going ...
...........................
1518SportsWhile Rafael Furcal #39;s DUI arrest on Friday...Sports1518[0.03824271634221077, -0.050272781401872635, 0...1.000000While Rafael Furcal #39;s DUI arrest on Friday...
2631SportsThe Redskins and Cowboys are underway from Fed...Sports2631[0.03182480111718178, -0.027464378625154495, -...1.000000The Redskins and Cowboys are underway from Fed...
809Sportsseeded Russian Elena Bovina won her first titl...Sports809[-0.017956998199224472, 0.05119836702942848, 0...1.000000seeded Russian Elena Bovina won her first titl...
3414Sci/TechMusician Brian Eno, who has been turning ideas...Sci/Tech3414[-0.0022161505185067654, -0.030591804534196854...0.999987Musician Brian Eno, who has been turning ideas...
7202Sci/TechHollywood movie powerhouse Walt Disney has tak...Sci/Tech7202[-0.05487370863556862, 0.003584994236007333, 0...0.998174Hollywood movie powerhouse Walt Disney has tak...
\n","

1500 rows × 8 columns

\n","
"],"text/plain":[" category ... text\n","origin_index ... \n","1031 Sci/Tech ... Aether Systems Inc., a Maryland wireless data...\n","6566 Sports ... Renee McDonald remembers the Christmas trees o...\n","5122 World ... Personal freedoms in Canada are being eroded b...\n","7312 World ... The DUP was last night reconsidering its boyco...\n","1231 Sci/Tech ... Making games for the future consoles is going ...\n","... ... ... ...\n","1518 Sports ... While Rafael Furcal #39;s DUI arrest on Friday...\n","2631 Sports ... The Redskins and Cowboys are underway from Fed...\n","809 Sports ... seeded Russian Elena Bovina won her first titl...\n","3414 Sci/Tech ... Musician Brian Eno, who has been turning ideas...\n","7202 Sci/Tech ... Hollywood movie powerhouse Walt Disney has tak...\n","\n","[1500 rows x 8 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Fxx4yNkNVGFl","executionInfo":{"status":"ok","timestamp":1614343276557,"user_tz":-300,"elapsed":1176,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"073cd72f-66cb-4e33-9852-013aa8bb2fec"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," Business 0.79 0.81 0.80 364\n"," Sci/Tech 0.83 0.80 0.82 388\n"," Sports 0.93 0.95 0.94 392\n"," World 0.84 0.83 0.83 376\n","\n"," accuracy 0.85 1520\n"," macro avg 0.85 0.85 0.85 1520\n","weighted avg 0.85 0.85 0.85 1520\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"BD5OKO4Umc5U"},"source":["# 4. Test Model with 20 languages!"]},{"cell_type":"code","metadata":{"id":"OQ72hP9unML7","colab":{"base_uri":"https://localhost:8080/","height":793},"executionInfo":{"status":"ok","timestamp":1614187334235,"user_tz":-300,"elapsed":1774970,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d79bed47-2868-4a7b-b6d5-f44e3630ee3c"},"source":["train_df = pd.read_csv(\"news_category_test_multi_lingual.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," Business 0.65 0.92 0.76 12\n"," Sci/Tech 0.94 0.78 0.85 37\n"," Sports 0.81 1.00 0.89 21\n"," World 0.96 0.83 0.89 30\n","\n"," accuracy 0.86 100\n"," macro avg 0.84 0.88 0.85 100\n","weighted avg 0.88 0.86 0.86 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
textxx_embed_sentence_labse_embeddingscategory_confidenceydocumentcategory
origin_index
0టర్నర్ నెవాల్ వద్ద కార్మికులకు ప్రాతినిధ్యం వహ...[-0.05777165666222572, -0.011031209491193295, ...0.999994Businessటర్నర్ నెవాల్ వద్ద కార్మికులకు ప్రాతినిధ్యం వహ...Business
1Торонто, Канада # 36; 10 миллион Ансари X прем...[-0.039270948618650436, -0.05998489260673523, ...0.999874Sci/TechТоронто, Канада # 36; 10 миллион Ансари X прем...Sci/Tech
2Une société fondée par un chercheur en chimie ...[-0.047125183045864105, -0.025509396567940712,...0.999995Sci/TechUne société fondée par un chercheur en chimie ...Sci/Tech
3সবেমাত্র ভোর যখন মাইক ফিৎসপ্যাট্রিক রঙিন মানচি...[-0.04609032720327377, -0.05127093940973282, -...0.999889Sci/Techসবেমাত্র ভোর যখন মাইক ফিৎসপ্যাট্রিক রঙিন মানচি...Sci/Tech
4Көньяк Калифорниянең томанга каршы көрәш агент...[-0.02939729019999504, -0.040420372039079666, ...0.314981Sci/TechКөньяк Калифорниянең томанга каршы көрәш агент...Sports
.....................
95ఫుట్‌బాల్ అసోసియేషన్ ప్రతిష్టను దెబ్బతీసిన కుం...[0.02515975944697857, -0.026320775970816612, -...0.999963Sportsఫుట్‌బాల్ అసోసియేషన్ ప్రతిష్టను దెబ్బతీసిన కుం...Sports
96Hücumçu Emile Heskey, Çərşənbə # 39-un Çərşənb...[0.04458567127585411, 0.03187408298254013, -0....1.000000SportsHücumçu Emile Heskey, Çərşənbə # 39-un Çərşənb...Sports
97Staples Inc. & lt; A HREF = \"http://www.invest...[-0.016342557966709137, -0.004877099301666021,...0.999987BusinessStaples Inc. & lt; A HREF = \"http://www.invest...Business
98គណៈប្រតិភូនៃប្រទេសអ៊ីរ៉ាក់ត្រូវបានពន្យារពេលដោយ...[0.030007358640432358, -0.0027152197435498238,...0.999985Worldគណៈប្រតិភូនៃប្រទេសអ៊ីរ៉ាក់ត្រូវបានពន្យារពេលដោយ...World
99امریکی صارفین کی قیمتوں میں جولائی میں پہلی با...[-0.04715617746114731, -0.04999865964055061, -...0.999984Businessامریکی صارفین کی قیمتوں میں جولائی میں پہلی با...Business
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" text ... category\n","origin_index ... \n","0 టర్నర్ నెవాల్ వద్ద కార్మికులకు ప్రాతినిధ్యం వహ... ... Business\n","1 Торонто, Канада # 36; 10 миллион Ансари X прем... ... Sci/Tech\n","2 Une société fondée par un chercheur en chimie ... ... Sci/Tech\n","3 সবেমাত্র ভোর যখন মাইক ফিৎসপ্যাট্রিক রঙিন মানচি... ... Sci/Tech\n","4 Көньяк Калифорниянең томанга каршы көрәш агент... ... Sports\n","... ... ... ...\n","95 ఫుట్‌బాల్ అసోసియేషన్ ప్రతిష్టను దెబ్బతీసిన కుం... ... Sports\n","96 Hücumçu Emile Heskey, Çərşənbə # 39-un Çərşənb... ... Sports\n","97 Staples Inc. & lt; A HREF = \"http://www.invest... ... Business\n","98 គណៈប្រតិភូនៃប្រទេសអ៊ីរ៉ាក់ត្រូវបានពន្យារពេលដោយ... ... World\n","99 امریکی صارفین کی قیمتوں میں جولائی میں پہلی با... ... Business\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614343762090,"user_tz":-300,"elapsed":4257,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"568e618d-8116-4f8a-fd81-f6e9f76cb8f5"},"source":["fitted_pipe.predict(\"There have been a great increase in businesses over the last decade \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessThere have been a great increase in businesses...[0.012169226072728634, -0.002660397905856371, ...0.996130
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.996130\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614343770849,"user_tz":-300,"elapsed":3981,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6b26a567-f1a3-4a35-fdf3-4740447a413a"},"source":["fitted_pipe.predict(\"Science has advanced rapidly over the last century \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechScience has advanced rapidly over the last cen...[0.022739626467227936, -0.03467154502868652, -...0.999995
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999995\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614344150287,"user_tz":-300,"elapsed":3394,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b953df9a-d3b5-41d4-85cf-2eb9b7b0d6df"},"source":["# German for: 'Businesses are the best way of making profit'\n","fitted_pipe.predict(\"Unternehmen sind der beste Weg, um Gewinn zu erzielen\")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessUnternehmen sind der beste Weg, um Gewinn zu e...[-0.048822492361068726, -0.0071628582663834095...0.999487
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999487\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614343796141,"user_tz":-300,"elapsed":4033,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"441a3ddf-5676-4d65-ced0-a256a8fb2f77"},"source":["# German for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Die Wissenschaft hat im letzten Jahrhundert rasante Fortschritte gemacht \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechDie Wissenschaft hat im letzten Jahrhundert ra...[0.035708025097846985, -0.04514779895544052, -...0.999999
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999999\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614343808581,"user_tz":-300,"elapsed":4307,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2918ac56-9319-41cf-9a65-258533a278ff"},"source":["# Chinese for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"在过去的十年中,业务有了很大的增长 \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Business在过去的十年中,业务有了很大的增长[0.007143490947782993, -0.003197029000148177, ...0.574210
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.574210\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614343818476,"user_tz":-300,"elapsed":4201,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"74bf506f-9589-47dd-9570-5fde4f3055ec"},"source":["# Chinese for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"在上个世纪,科学发展迅速 \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Tech在上个世纪,科学发展迅速[0.01899210549890995, -0.05363348498940468, -0...0.999645
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999645\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":13}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614343823492,"user_tz":-300,"elapsed":3950,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0f60a3a8-8160-4881-881f-5bedb2f657c8"},"source":["# Afrikaans for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"Daar het die afgelope dekade 'n groot toename in besighede plaasgevind \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessDaar het die afgelope dekade 'n groot toename ...[0.028091464191675186, -0.016515646129846573, ...0.929858
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.929858\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":14}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614343830946,"user_tz":-300,"elapsed":3528,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6c75c15c-759d-4e70-a73a-ebc0ec0a6bbc"},"source":["# Afrikaans for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Die wetenskap het die afgelope eeu vinnig gevorder \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechDie wetenskap het die afgelope eeu vinnig gevo...[0.02647087350487709, -0.04339253529906273, -0...0.999996
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999996\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["# The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"7ksJosuTOYpE","executionInfo":{"status":"ok","timestamp":1614343837756,"user_tz":-300,"elapsed":4195,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a8f10ff8-3342-4e9f-abfa-b335b2b432d4"},"source":["# Vietnamese for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"Đã có sự gia tăng đáng kể trong các doanh nghiệp trong thập kỷ qua \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessĐã có sự gia tăng đáng kể trong các doanh nghi...[0.002593805780634284, -0.03647594526410103, -...0.979494
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.979494\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VfG3UaCTEZB_","executionInfo":{"status":"ok","timestamp":1614343844799,"user_tz":-300,"elapsed":3810,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d0047d6e-27a8-4933-ffff-3fe9f4670c92"},"source":["# Vietnamese for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Khoa học đã phát triển nhanh chóng trong thế kỷ qua \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechKhoa học đã phát triển nhanh chóng trong thế k...[0.006926446221768856, -0.0595879964530468, -0...0.999535
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999535\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614344208848,"user_tz":-300,"elapsed":3931,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d15d595a-1bb8-4bb8-e191-6a5fa6c76804"},"source":["# Japanese for: 'Businesses are the best way of making profit'\n","fitted_pipe.predict(\"ビジネスは利益を上げるための最良の方法です\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessビジネスは利益を上げるための最良の方法です[-0.029112381860613823, -0.022607827559113503,...0.683041
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.683041\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-RjXWbFIPvIs","executionInfo":{"status":"ok","timestamp":1614343862887,"user_tz":-300,"elapsed":3656,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"766defa2-eb2a-4bec-afdd-aa22a45f8f89"},"source":["# Japanese for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"科学は前世紀にわたって急速に進歩しました \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Tech科学は前世紀にわたって急速に進歩しました[0.01969727873802185, -0.04392292723059654, -0...0.999981
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999981\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"ifRhs6e7OcR3","executionInfo":{"status":"ok","timestamp":1614343872273,"user_tz":-300,"elapsed":3506,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"47a28575-8ea7-4251-9d72-23a96e71dda3"},"source":["# Zulu for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"Kube nokwanda okukhulu emabhizinisini kule minyaka eyishumi edlule \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessKube nokwanda okukhulu emabhizinisini kule min...[0.011455212719738483, -0.019759127870202065, ...0.998235
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.998235\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":20}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"6uelDwq4xdWv","executionInfo":{"status":"ok","timestamp":1614343880558,"user_tz":-300,"elapsed":3702,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a69e5a50-585f-4a5f-e599-e5e97b4c4270"},"source":["# Zulu for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Isayensi ithuthuke ngokushesha ngekhulu leminyaka elidlule \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechIsayensi ithuthuke ngokushesha ngekhulu leminy...[0.033070385456085205, -0.04442666471004486, -...0.999992
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999992\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614344234044,"user_tz":-300,"elapsed":3703,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6d7cb27f-8d75-45f4-acac-0f8a131da284"},"source":["# Turkish for: 'Businesses are the best way of making profit'\n","fitted_pipe.predict(\"İşletmeler kar elde etmenin en iyi yoludur \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessİşletmeler kar elde etmenin en iyi yoludur[-0.023345213383436203, 0.0005469206953421235,...0.997994
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.997994\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":51}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614343901968,"user_tz":-300,"elapsed":4356,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"72de7e46-ed44-43a4-cb8c-df30acc68210"},"source":["# Turkish for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Bilim, geçen yüzyılda hızla ilerledi \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechBilim, geçen yüzyılda hızla ilerledi[0.01670285314321518, -0.050043221563100815, -...0.999998
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999998\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614343908732,"user_tz":-300,"elapsed":4167,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2359b0fa-ad0c-49fb-8141-42b607007449"},"source":["# Hebrew for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"חלה עלייה גדולה בעסקים בעשור האחרון \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessחלה עלייה גדולה בעסקים בעשור האחרון[0.030628306791186333, -0.022280622273683548, ...0.999873
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999873\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":24}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614343914907,"user_tz":-300,"elapsed":5181,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f31d38fb-3797-48be-f49c-d1558b04f9fa"},"source":["# Hebrew for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"המדע התקדם במהירות במהלך המאה האחרונה \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techהמדע התקדם במהירות במהלך המאה האחרונה[-0.0030932428780943155, -0.05540185421705246,...0.999986
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999986\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":25}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614343923847,"user_tz":-300,"elapsed":5307,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e2b93d0b-d0e4-4d6b-e731-af26f3fa31dd"},"source":["# Telugu for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"గత దశాబ్దంలో వ్యాపారాలలో గొప్ప పెరుగుదల ఉంది \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessగత దశాబ్దంలో వ్యాపారాలలో గొప్ప పెరుగుదల ఉంది[0.00526750274002552, -0.022807607427239418, -...0.999657
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999657\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614343944661,"user_tz":-300,"elapsed":5025,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a01f802f-0260-4bc5-cebd-b47ff1cd326d"},"source":["# Telugu for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"గత శతాబ్దంలో సైన్స్ వేగంగా అభివృద్ధి చెందింది \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techగత శతాబ్దంలో సైన్స్ వేగంగా అభివృద్ధి చెందింది[-0.015292842872440815, -0.03326159343123436, ...0.998944
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.998944\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614344256517,"user_tz":-300,"elapsed":3363,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"57adae43-f900-4030-86af-d3f483e76bae"},"source":["# Russian for: 'Businesses are the best way of making profit'\n","fitted_pipe.predict(\"Бизнес - лучший способ получения прибыли\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessБизнес - лучший способ получения прибыли[-0.016974015161395073, -0.024397598579525948,...0.999988
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999988\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":52}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614343955256,"user_tz":-300,"elapsed":3471,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4b46c5b2-c989-4f67-f762-da6f47cc907d"},"source":["# Russian for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Наука стремительно развивалась за последнее столетие \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechНаука стремительно развивалась за последнее ст...[0.0139895835891366, -0.04563469812273979, -0....0.999999
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999999\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614343961759,"user_tz":-300,"elapsed":3567,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"41b47ae4-218b-4ef2-a8fe-711c58b5ae78"},"source":["# Urdu for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"پچھلے ایک دہائی کے دوران کاروباروں میں زبردست اضافہ ہوا ہے \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessپچھلے ایک دہائی کے دوران کاروباروں میں زبردست ...[-0.004565550480037928, -0.008193295449018478,...0.999968
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999968\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":30}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614343969034,"user_tz":-300,"elapsed":3719,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8c139479-3960-4819-ca7f-78b91491be97"},"source":["# Urdu for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"سائنس گذشتہ صدی کے دوران تیزی سے ترقی کرچکی ہے \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techسائنس گذشتہ صدی کے دوران تیزی سے ترقی کرچکی ہے[-0.013339908793568611, -0.0262106005102396, -...0.999644
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999644\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":31}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614343977885,"user_tz":-300,"elapsed":3502,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9f4fc14d-24ae-46e5-c045-071984c4152a"},"source":["# hindi for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"पिछले दशक में व्यवसायों में बहुत वृद्धि हुई है \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessपिछले दशक में व्यवसायों में बहुत वृद्धि हुई है[-0.003939660266041756, -0.0293721966445446, -...0.938786
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.938786\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":32}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614343982199,"user_tz":-300,"elapsed":3446,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"03c51089-8220-4421-ef55-22ab9b131816"},"source":["\t\t\n","# hindi for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"विज्ञान पिछली सदी में तेजी से आगे बढ़ा है \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techविज्ञान पिछली सदी में तेजी से आगे बढ़ा है[-0.0006327364826574922, -0.047755494713783264...0.999998
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999998\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614343989723,"user_tz":-300,"elapsed":3402,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"44954405-7a54-4f42-db5f-33c2a314334f"},"source":["# Tartar for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"Соңгы ун елда бизнеста зур үсеш булды \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessСоңгы ун елда бизнеста зур үсеш булды[0.023730691522359848, -0.02879856713116169, -...0.867039
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.867039\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":34}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614343995715,"user_tz":-300,"elapsed":3713,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"db26c9df-2a1a-443c-d03d-40818303b9e1"},"source":["# Tartar for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Соңгы гасырда фән тиз үсә \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechСоңгы гасырда фән тиз үсә[0.02118440717458725, -0.046850722283124924, -...0.999993
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999993\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614344002345,"user_tz":-300,"elapsed":3760,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ed229c88-b7f3-4160-d8c9-625b1220a8fe"},"source":["# French for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"Il y a eu une forte augmentation des entreprises au cours de la dernière décennie \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessIl y a eu une forte augmentation des entrepris...[0.007794329896569252, -0.012789410538971424, ...0.999476
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999476\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614344007052,"user_tz":-300,"elapsed":3359,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d26c8d1c-af14-497c-f8c4-49c823917179"},"source":["# French for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"La science a progressé rapidement au cours du siècle dernier \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechLa science a progressé rapidement au cours du ...[0.01239328645169735, -0.04608025401830673, -0...0.999996
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999996\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614344013213,"user_tz":-300,"elapsed":3752,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ff11eb24-684b-4220-c781-78cf4512eeb8"},"source":["\t\t\n","# Thai for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"มีธุรกิจเพิ่มขึ้นอย่างมากในช่วงทศวรรษที่ผ่านมา \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessมีธุรกิจเพิ่มขึ้นอย่างมากในช่วงทศวรรษที่ผ่านมา[0.008413508534431458, -0.024852056056261063, ...0.583319
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.583319\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"code","metadata":{"id":"R6nKI7C3QKa3","colab":{"base_uri":"https://localhost:8080/","height":106},"executionInfo":{"status":"ok","timestamp":1614344018215,"user_tz":-300,"elapsed":3606,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8db8c572-5600-4e76-e599-87dd82181e9d"},"source":["# Thai for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"วิทยาศาสตร์ก้าวหน้าอย่างรวดเร็วในช่วงศตวรรษที่ผ่านมา \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techวิทยาศาสตร์ก้าวหน้าอย่างรวดเร็วในช่วงศตวรรษที่...[0.007343577221035957, -0.04965793341398239, -...0.999865
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999865\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614344025699,"user_tz":-300,"elapsed":4221,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a1615359-750b-423e-b547-8ba75edf98c4"},"source":["# Khmer for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"មានការរីកចម្រើនយ៉ាងខ្លាំងនៅក្នុងអាជីវកម្មក្នុងរយៈពេលមួយទសវត្សចុងក្រោយនេះ \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessមានការរីកចម្រើនយ៉ាងខ្លាំងនៅក្នុងអាជីវកម្មក្នុង...[0.02500440925359726, -0.037305932492017746, -...0.772556
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.772556\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":40}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"beoCtm4xQf2P","executionInfo":{"status":"ok","timestamp":1614344044938,"user_tz":-300,"elapsed":4767,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"09bf5b1f-b2b9-4d22-901e-ac778c717c9e"},"source":["\t\t\n","# Khmer for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"វិទ្យាសាស្ត្របានជឿនលឿនយ៉ាងលឿនក្នុងរយៈពេលមួយសតវត្សចុងក្រោយនេះ \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techវិទ្យាសាស្ត្របានជឿនលឿនយ៉ាងលឿនក្នុងរយៈពេលមួយសតវ...[0.008467243984341621, -0.05188147351145744, -...0.999984
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999984\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"sZlmLhajPoBb","executionInfo":{"status":"ok","timestamp":1614344041811,"user_tz":-300,"elapsed":3640,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a5e70a7b-2447-4d67-eb99-76c768b112f8"},"source":["\n","# Yiddish for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"די לעצטע יאָרצענדלינג איז געווען אַ גרויס פאַרגרעסערן אין געשעפטן \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessדי לעצטע יאָרצענדלינג איז געווען אַ גרויס פאַר...[0.0017607753397896886, -0.03173191845417023, ...0.998951
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.998951\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":41}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614344052015,"user_tz":-300,"elapsed":3453,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"62e63271-c366-4537-eb86-0480cf4ced09"},"source":["# Yiddish for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"וויסנשאַפֿט איז ראַפּאַדלי אַוואַנסירטע איבער די לעצטע יאָרהונדערט \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techוויסנשאַפֿט איז ראַפּאַדלי אַוואַנסירטע איבער ...[-0.020669342949986458, -0.05547677353024483, ...0.999996
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999996\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614344284942,"user_tz":-300,"elapsed":3274,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"41b17b0d-4da6-4258-bb66-2ad52ee2e42c"},"source":["# Kygrgyz for: 'Businesses are the best way of making profit'\n","fitted_pipe.predict(\"Бизнес - бул киреше табуунун эң мыкты жолу \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0BusinessБизнес - бул киреше табуунун эң мыкты жолу[-0.028402332216501236, -0.02759084478020668, ...0.994321
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.994321\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":53}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614344066211,"user_tz":-300,"elapsed":4652,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"445c9691-1718-43f5-9972-d8125a581694"},"source":["# Kygrgyz for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"Илим акыркы кылымда тездик менен өнүккөн \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/TechИлим акыркы кылымда тездик менен өнүккөн[0.025420300662517548, -0.044107213616371155, ...0.999996
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999996\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614344073072,"user_tz":-300,"elapsed":3530,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"802d85b9-262d-4567-fee3-58419f72f3ec"},"source":["# Tamil for: 'There have been a great increase in businesses over the last decade'\n","fitted_pipe.predict(\"கடந்த தசாப்தத்தில் வணிகங்களில் பெரும் அதிகரிப்பு ஏற்பட்டுள்ளது \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Businessகடந்த தசாப்தத்தில் வணிகங்களில் பெரும் அதிகரிப்...[0.0057315402664244175, -0.030773166567087173,...0.999775
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Business ... 0.999775\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614344077686,"user_tz":-300,"elapsed":3345,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"63ba0cfd-f20f-4ee2-f4c2-51397b726fb3"},"source":["\t\t\n","# Tamil for: 'Science has advanced rapidly over the last century'\n","fitted_pipe.predict(\"கடந்த நூற்றாண்டில் அறிவியல் வேகமாக முன்னேறியுள்ளது \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorydocumentxx_embed_sentence_labse_embeddingscategory_confidence
origin_index
0Sci/Techகடந்த நூற்றாண்டில் அறிவியல் வேகமாக முன்னேறியுள...[0.009729371406137943, -0.04586023837327957, -...0.999998
\n","
"],"text/plain":[" category ... category_confidence\n","origin_index ... \n","0 Sci/Tech ... 0.999998\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":110},"executionInfo":{"status":"ok","timestamp":1613867457298,"user_tz":-300,"elapsed":102453,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"552a5445-e5fe-49bf-fcec-b8f6beeb0cb1"},"source":["stored_model_path = './models/classifier_dl_trained'\n","hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('Tesla plans to invest 10M into the ML sector')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
classifier_confidencexx_embed_sentence_labse_embeddingsdocumentclassifier
origin_index
00.919902[0.0207071490585804, -0.03154003247618675, 0.0...Tesla plans to invest 10M into the ML sectorSci/Tech
\n","
"],"text/plain":[" classifier_confidence ... classifier\n","origin_index ... \n","0 0.919902 ... Sci/Tech\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613867457299,"user_tz":-300,"elapsed":102225,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e567e913-9de3-4165-da9f-757da3d96c6a"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['World', 'Sci/Tech', 'Sports', 'Business']) | Info: get the tags used to trained this ClassifierDLModel | Currently set to : ['World', 'Sci/Tech', 'Sports', 'Business']\n","pipe['classifier_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_amazon.ipynb b/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_amazon.ipynb new file mode 100644 index 00000000..75ede144 --- /dev/null +++ b/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_amazon.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_lingual_multi_class_text_classifier_demo_amazon.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_amazon.ipynb)\n","\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","## 3 class Amazon Phone review classifier training]\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","\n","You can achieve these results or even better on this dataset with training data :\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,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)\n","\n","\n","\n","You can achieve these results or even better on this dataset with test data :\n","\n","
\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"id":"hFGnBCHavltY","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614335654870,"user_tz":-300,"elapsed":89896,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2ec596cc-2ee6-416e-8362-a517bf39db2c"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 65kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 17.4MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=0b2e93a0248005e8642f90e550b22eda27ab90e4b7c2bd16beeab6f4c8eb0550\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download Amazon Unlocked mobile phones dataset \n","https://www.kaggle.com/PromptCloudHQ/amazon-reviews-unlocked-mobile-phones\n","\n","dataset with unlocked mobile phone reviews in 5 review classes\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614335656339,"user_tz":-300,"elapsed":91301,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"065fc929-13eb-440a-d783-5f05da20a258"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/Amazon_Unlocked_Mobile_multi_lingual.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-26 10:33:04-- http://ckl-it.de/wp-content/uploads/2021/02/Amazon_Unlocked_Mobile_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 511871 (500K) [text/csv]\n","Saving to: ‘Amazon_Unlocked_Mobile_multi_lingual.csv’\n","\n","Amazon_Unlocked_Mob 100%[===================>] 499.87K 622KB/s in 0.8s \n","\n","2021-02-26 10:33:05 (622 KB/s) - ‘Amazon_Unlocked_Mobile_multi_lingual.csv’ saved [511871/511871]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614335656356,"user_tz":-300,"elapsed":91252,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"852da78e-7ac3-4131-e77c-5e1514f54f33"},"source":["import pandas as pd\n","test_path = '/content/Amazon_Unlocked_Mobile_multi_lingual.csv'\n","train_df = pd.read_csv(test_path,sep=\",\")\n","cols = [\"y\",\"text\"]\n","train_df = train_df[cols]\n","from sklearn.model_selection import train_test_split\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
937goodGood phone, good qualty, the only that can bet...
697averagePhone was unlocked, but didn't come in a box a...
1014averageThe camera on this phone was foggy from the fi...
308goodLike phone its nice for price sometimes it get...
971goodLove it.
.........
48goodGave the phone as a birthday gift. My friend s...
1174averageNo internet
1422poorI bought this phone to give as a gift to a fri...
873poorPhone would not turn on after charge all night
1032averageGood
\n","

1200 rows × 2 columns

\n","
"],"text/plain":[" y text\n","937 good Good phone, good qualty, the only that can bet...\n","697 average Phone was unlocked, but didn't come in a box a...\n","1014 average The camera on this phone was foggy from the fi...\n","308 good Like phone its nice for price sometimes it get...\n","971 good Love it.\n","... ... ...\n","48 good Gave the phone as a birthday gift. My friend s...\n","1174 average No internet\n","1422 poor I bought this phone to give as a gift to a fri...\n","873 poor Phone would not turn on after charge all night\n","1032 average Good\n","\n","[1200 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":828},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614337076613,"user_tz":-300,"elapsed":1511438,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1ed7e2f5-94d2-42fb-9390-775c2ec5024a"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.classifier')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['classifier_dl'].setMaxEpochs(60) \n","trainable_pipe['classifier_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," average 0.87 0.78 0.82 399\n"," good 0.86 0.92 0.89 404\n"," poor 0.90 0.93 0.91 397\n","\n"," accuracy 0.88 1200\n"," macro avg 0.88 0.88 0.87 1200\n","weighted avg 0.88 0.88 0.87 1200\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidenceydocumentxx_embed_sentence_labse_embeddingstext
origin_index
937good0.997852goodGood phone, good qualty, the only that can bet...[-0.04583406820893288, -0.02492734231054783, -...Good phone, good qualty, the only that can bet...
697average0.994527averagePhone was unlocked, but didn't come in a box a...[-0.05288608372211456, 0.06084609776735306, -0...Phone was unlocked, but didn't come in a box a...
1014poor0.993759averageThe camera on this phone was foggy from the fi...[-0.007337542716413736, 0.06280891597270966, -...The camera on this phone was foggy from the fi...
308average0.992863goodLike phone its nice for price sometimes it get...[-0.05627260357141495, 0.020682260394096375, -...Like phone its nice for price sometimes it get...
971good1.000000goodLove it.[-0.008187997154891491, -0.06332288682460785, ...Love it.
.....................
48good0.999999goodGave the phone as a birthday gift. My friend s...[0.02145097777247429, 0.023429783061146736, -0...Gave the phone as a birthday gift. My friend s...
1174poor0.999460averageNo internet[-0.03171629458665848, -0.048338472843170166, ...No internet
1422poor0.999944poorI bought this phone to give as a gift to a fri...[-0.05380842089653015, 0.04326845705509186, -0...I bought this phone to give as a gift to a fri...
873poor0.999999poorPhone would not turn on after charge all night[-0.05948413163423538, -0.0034415803384035826,...Phone would not turn on after charge all night
1032good1.000000averageGood[-0.005856278818100691, 0.01673833839595318, -...Good
\n","

1200 rows × 6 columns

\n","
"],"text/plain":[" category ... text\n","origin_index ... \n","937 good ... Good phone, good qualty, the only that can bet...\n","697 average ... Phone was unlocked, but didn't come in a box a...\n","1014 poor ... The camera on this phone was foggy from the fi...\n","308 average ... Like phone its nice for price sometimes it get...\n","971 good ... Love it.\n","... ... ... ...\n","48 good ... Gave the phone as a birthday gift. My friend s...\n","1174 poor ... No internet\n","1422 poor ... I bought this phone to give as a gift to a fri...\n","873 poor ... Phone would not turn on after charge all night\n","1032 good ... Good\n","\n","[1200 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"id":"Fxx4yNkNVGFl","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614337408914,"user_tz":-300,"elapsed":914,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e21dba8c-dcb8-42a7-eed3-4f3642ffbf0c"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.82 0.74 0.78 101\n"," good 0.81 0.85 0.83 96\n"," poor 0.86 0.90 0.88 103\n","\n"," accuracy 0.83 300\n"," macro avg 0.83 0.83 0.83 300\n","weighted avg 0.83 0.83 0.83 300\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"yUkk_L8MGcRg"},"source":["#4. Test Model with 20 languages!"]},{"cell_type":"code","metadata":{"id":"q2s6nsZZGcRm","colab":{"base_uri":"https://localhost:8080/","height":606},"executionInfo":{"status":"ok","timestamp":1614183101782,"user_tz":-300,"elapsed":1744726,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3a03154b-7093-4132-b8cf-4ae51ebc6b5d"},"source":["train_df = pd.read_csv(\"Amazon_Unlocked_Mobile_multi_lingual.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.63 0.76 0.69 29\n"," good 0.88 0.88 0.88 32\n"," poor 0.88 0.74 0.81 39\n","\n"," accuracy 0.79 100\n"," macro avg 0.79 0.79 0.79 100\n","weighted avg 0.81 0.79 0.79 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategoryxx_embed_sentence_labse_embeddingsdocumentytext
origin_index
00.999397poor[0.023933328688144684, 0.03197603300213814, -0...Alındı, onu yandırdı, işləmədi. Geri açıldı, b...poorAlındı, onu yandırdı, işləmədi. Geri açıldı, b...
10.999097average[-0.019562775269150734, -0.036460112780332565,...דערווייַל עס איז 2014, די 3gs איז דיסקאַנטיניו...averageדערווייַל עס איז 2014, די 3gs איז דיסקאַנטיניו...
20.999882good[0.02229706011712551, -0.03892051428556442, -0...100% recommendedgood100% recommended
30.999841good[0.02347300760447979, -0.0566491037607193, 0.0...Đó là một chiếc điện thoại tốt nhưng nếu bạn s...averageĐó là một chiếc điện thoại tốt nhưng nếu bạn s...
40.999962average[-0.04908802732825279, 0.006140722427517176, -...វាល្អដែលទូរស័ព្ទនេះមានប្រព័ន្ធ LTE ហើយវាដំណើរក...averageវាល្អដែលទូរស័ព្ទនេះមានប្រព័ន្ធ LTE ហើយវាដំណើរក...
.....................
950.999811poor[-0.055938538163900375, 0.049839287996292114, ...העלא, מיר געקויפט צוויי פאָנעס און זיי געקומען...poorהעלא, מיר געקויפט צוויי פאָנעס און זיי געקומען...
961.000000good[0.017209621146321297, 0.013231038115918636, -...UitstekendgoodUitstekend
970.998939average[-0.04478548839688301, 0.037118781358003616, -...پروڈکٹ اچھی ہے لیکن انگریزی زبان میں اب بھی چی...poorپروڈکٹ اچھی ہے لیکن انگریزی زبان میں اب بھی چی...
980.999995poor[-0.0475904606282711, 0.046305101364851, -0.04...Veronderstel om 'n splinternuwe ontsluitfoon t...poorVeronderstel om 'n splinternuwe ontsluitfoon t...
990.998944average[-0.027637168765068054, 0.004834047518670559, ...خلل بسيط ومزعج للغاية عند إرسال الرسائل النصية...averageخلل بسيط ومزعج للغاية عند إرسال الرسائل النصية...
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" category_confidence ... text\n","origin_index ... \n","0 0.999397 ... Alındı, onu yandırdı, işləmədi. Geri açıldı, b...\n","1 0.999097 ... דערווייַל עס איז 2014, די 3gs איז דיסקאַנטיניו...\n","2 0.999882 ... 100% recommended \n","3 0.999841 ... Đó là một chiếc điện thoại tốt nhưng nếu bạn s...\n","4 0.999962 ... វាល្អដែលទូរស័ព្ទនេះមានប្រព័ន្ធ LTE ហើយវាដំណើរក...\n","... ... ... ...\n","95 0.999811 ... העלא, מיר געקויפט צוויי פאָנעס און זיי געקומען...\n","96 1.000000 ... Uitstekend \n","97 0.998939 ... پروڈکٹ اچھی ہے لیکن انگریزی زبان میں اب بھی چی...\n","98 0.999995 ... Veronderstel om 'n splinternuwe ontsluitfoon t...\n","99 0.998944 ... خلل بسيط ومزعج للغاية عند إرسال الرسائل النصية...\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614337420355,"user_tz":-300,"elapsed":4354,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8bef625d-e82c-473d-d6f3-610de65b7502"},"source":["fitted_pipe.predict(\"It was like brand new \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999587It was like brand new[0.024492498487234116, -0.003671384882181883, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.024492498487234116, -0.003671384882181883, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614337428170,"user_tz":-300,"elapsed":4098,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"91ebb8b2-7044-4f54-b842-1137d91d3cf5"},"source":["fitted_pipe.predict(\"It stopped working on the first day \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999982It stopped working on the first day[-0.004823732189834118, 0.020508425310254097, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.004823732189834118, 0.020508425310254097, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614339309225,"user_tz":-300,"elapsed":4257,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c51f1da7-1b02-4b82-f654-36a11ff37e76"},"source":["# German for: 'It worked perfectly '\n","fitted_pipe.predict(\"Es hat perfekt funktioniert\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999932Es hat perfekt funktioniert[-0.0051118237897753716, -0.048203449696302414...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.0051118237897753716, -0.048203449696302414...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":51}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614337516864,"user_tz":-300,"elapsed":5152,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d60e28bb-e42b-41bd-94cc-053ee9d6d8bf"},"source":["# German for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Am ersten Tag hörte es auf zu arbeiten \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.997735Am ersten Tag hörte es auf zu arbeiten[0.020860085263848305, -0.011390600353479385, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.020860085263848305, -0.011390600353479385, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614337526524,"user_tz":-300,"elapsed":5489,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6b685ef4-342e-4d1d-9d5c-37003bc807d9"},"source":["# Chinese for: 'It was like brand new'\n","fitted_pipe.predict(\"就像全新 \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999987就像全新[-0.01862957887351513, -0.02357419952750206, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.01862957887351513, -0.02357419952750206, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614337535041,"user_tz":-300,"elapsed":6116,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a4c54735-2451-4ccc-8f35-d025831cc8f6"},"source":["# Chinese for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"第一天停止工作 \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999527第一天停止工作[-0.002283927286043763, 0.012262673117220402, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.002283927286043763, 0.012262673117220402, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614339342112,"user_tz":-300,"elapsed":4289,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"bce1cb12-85d8-4a97-b5bd-8e50ea62e1fe"},"source":["\n","# Afrikaans for: 'It worked perfectly '\n","fitted_pipe.predict(\"Dit het perfek gewerk\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.992191Dit het perfek gewerk[-0.0018796967342495918, -0.043611422181129456...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.0018796967342495918, -0.043611422181129456...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":52}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614337548497,"user_tz":-300,"elapsed":5379,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7de1a4fc-0dde-4028-ceaf-1c548a6e70b8"},"source":["# Afrikaans for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Dit het op die eerste dag opgehou werk \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999818Dit het op die eerste dag opgehou werk[0.00801787432283163, -0.013427305966615677, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.00801787432283163, -0.013427305966615677, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":14}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"ifRhs6e7OcR3","executionInfo":{"status":"ok","timestamp":1614339479847,"user_tz":-300,"elapsed":4948,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2382c482-4576-40f8-c3c4-fae26437bfdb"},"source":["# Zulu for: 'It worked perfectly '\n","fitted_pipe.predict(\"Kusebenze ngokuphelele\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.998644Kusebenze ngokuphelele[0.010045883245766163, -0.051708437502384186, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.010045883245766163, -0.051708437502384186, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":57}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"6uelDwq4xdWv","executionInfo":{"status":"ok","timestamp":1614337565836,"user_tz":-300,"elapsed":14127,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"67db0cee-df39-4078-823d-d3aaa77a1289"},"source":["# Zulu for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Iyeke ukusebenza ngosuku lokuqala \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.996274Iyeke ukusebenza ngosuku lokuqala[0.004491214174777269, 0.01870339922606945, 0....
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.004491214174777269, 0.01870339922606945, 0....\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":20}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614339507969,"user_tz":-300,"elapsed":4507,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5243eedd-2d72-4d7f-8fe4-13765975a733"},"source":["\n","# Turkish for: 'It It worked perfectly '\n","fitted_pipe.predict(\"Mükemmel çalıştı\")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999999Mükemmel çalıştı[0.06036875769495964, 0.0009111057734116912, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.06036875769495964, 0.0009111057734116912, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":58}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614339059278,"user_tz":-300,"elapsed":3491,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7d417dde-d49c-4a79-d1f6-b2fab60d1fcd"},"source":["\n","# Turkish for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"İlk gün çalışmayı bıraktı \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.997740İlk gün çalışmayı bıraktı[0.05094106122851372, 0.02071293629705906, 0.0...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.05094106122851372, 0.02071293629705906, 0.0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":24}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614339528341,"user_tz":-300,"elapsed":4778,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dd6a13f6-78bd-4cab-d836-9da007704e18"},"source":["# Hebrew for: 'It worked perfectly '\n","fitted_pipe.predict(\"זה עבד בצורה מושלמת\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.997647זה עבד בצורה מושלמת[-0.013386869803071022, -0.05498736351728439, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.013386869803071022, -0.05498736351728439, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":59}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614339073628,"user_tz":-300,"elapsed":3501,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2c1537a5-b481-4557-f4c8-251efbba0e5d"},"source":["\t\t\n","# Hebrew for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"זה הפסיק לעבוד ביום הראשון \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999990זה הפסיק לעבוד ביום הראשון[-0.013081037439405918, -0.02689044177532196, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.013081037439405918, -0.02689044177532196, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":25}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614339084745,"user_tz":-300,"elapsed":6206,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c5fca5a8-56b4-47a0-d56f-0f8ab2f461a6"},"source":["\t\t\n","# Telugu for: 'It was like brand new'\n","fitted_pipe.predict(\"ఇది సరికొత్తది \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.992611ఇది సరికొత్తది[0.0202536229044199, -0.04585985466837883, -0....
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.0202536229044199, -0.04585985466837883, -0....\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614339093673,"user_tz":-300,"elapsed":5306,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"beec8261-3c5c-439b-f5fd-3dcd8e69820f"},"source":["\n","# Telugu for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"ఇది మొదటి రోజు పనిచేయడం మానేసింది \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999991ఇది మొదటి రోజు పనిచేయడం మానేసింది[0.0002221895701950416, -0.018764713779091835,...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.0002221895701950416, -0.018764713779091835,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614339547750,"user_tz":-300,"elapsed":4086,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"068dd623-583f-452d-e6ab-e4befe490b84"},"source":["\t\t\n","# Russian for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Перестал работать в первый же день \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999996Это сработало отлично[0.008218087255954742, -0.05058329179883003, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.008218087255954742, -0.05058329179883003, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":60}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614339558570,"user_tz":-300,"elapsed":4095,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c7ec4069-584c-4072-c878-7b7a87b0af37"},"source":["# Russian for: 'It worked perfectly '\n","fitted_pipe.predict(\"Это сработало отлично\")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999996Это сработало отлично[0.008218087255954742, -0.05058329179883003, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.008218087255954742, -0.05058329179883003, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":61}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614339609069,"user_tz":-300,"elapsed":4234,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"4954fd5e-0918-42bc-89d3-516afa5db0d1"},"source":["# Urdu for: 'It was the best ever!'\n","fitted_pipe.predict(\"یہ اب تک کا سب سے اچھا تھا!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999999یہ اب تک کا سب سے اچھا تھا![0.030929533764719963, -0.05265289545059204, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.030929533764719963, -0.05265289545059204, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":63}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614339583461,"user_tz":-300,"elapsed":3986,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0ae8cafc-bb28-41a2-e25d-46d6f4b5dcd5"},"source":["# Urdu for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"اس نے پہلے دن کام کرنا چھوڑ دیا \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.866228یہ بالکل کام کیا[0.03534713014960289, -0.06895627826452255, -0...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.03534713014960289, -0.06895627826452255, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":62}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614339668113,"user_tz":-300,"elapsed":3348,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"736cd07b-97fb-414b-ddf1-10688c156e4c"},"source":["# hindi for: 'It was the best ever !!'\n","fitted_pipe.predict(\"यह सबसे अच्छा कभी था !!\")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999092यह सबसे अच्छा कभी था !![0.002181761898100376, -0.05553552508354187, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.002181761898100376, -0.05553552508354187, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":66}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614339166747,"user_tz":-300,"elapsed":4190,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e23e028b-282e-4155-9481-2738e7b1cb99"},"source":["# hindi for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"इसने पहले दिन काम करना बंद कर दिया \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999991इसने पहले दिन काम करना बंद कर दिया[0.009801734238862991, -0.026267804205417633, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.009801734238862991, -0.026267804205417633, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614339700868,"user_tz":-300,"elapsed":3311,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"93c8850e-9b1e-4a9a-cbe7-e54c8d150107"},"source":["# Tartar for: 'It was It was the best ever !!'\n","fitted_pipe.predict(\"Бу иң яхшысы иде !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999988Бу иң яхшысы иде !![0.03979770094156265, -0.05419746786355972, -0...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.03979770094156265, -0.05419746786355972, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":67}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614339183512,"user_tz":-300,"elapsed":4326,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"70ea097f-0496-430f-ece8-a1ed59f24332"},"source":["# Tartar for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Беренче көнне эшләүне туктатты \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999926Беренче көнне эшләүне туктатты[0.030974868685007095, 0.03395547345280647, 0....
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.030974868685007095, 0.03395547345280647, 0....\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":38}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614339723420,"user_tz":-300,"elapsed":3620,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"8bcd1ae8-1a35-421a-b063-7e0a29190c3d"},"source":["# French for: 'It was the best ever !!'\n","fitted_pipe.predict(\"C'était la meilleure chose que je n'ai jamais faite !!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.998638C'était la meilleure chose que je n'ai jamais ...[0.02751990035176277, -0.047827284783124924, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.02751990035176277, -0.047827284783124924, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":68}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614339207129,"user_tz":-300,"elapsed":4127,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7bd6b282-0d7c-4077-fbe0-ec3ec03677fa"},"source":["\t\t\n","# French for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Il a cessé de fonctionner le premier jour \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999981Il a cessé de fonctionner le premier jour[-0.027476917952299118, -0.006572211626917124,...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.027476917952299118, -0.006572211626917124,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":40}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614339747805,"user_tz":-300,"elapsed":4390,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d3efa9b3-a289-47b2-a782-91244edfcee7"},"source":["# Thai for: 'It was the best ever !!'\n","fitted_pipe.predict(\"มันดีที่สุดเท่าที่เคยมีมา !!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good1.000000มันดีที่สุดเท่าที่เคยมีมา !![-0.00953331496566534, -0.05253230035305023, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.00953331496566534, -0.05253230035305023, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":69}]},{"cell_type":"code","metadata":{"id":"R6nKI7C3QKa3","colab":{"base_uri":"https://localhost:8080/","height":111},"executionInfo":{"status":"ok","timestamp":1614339220524,"user_tz":-300,"elapsed":4798,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"33f60654-b70c-4449-942e-43ded452995b"},"source":["# Thai for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"มันหยุดทำงานในวันแรก \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999795มันหยุดทำงานในวันแรก[-0.028285449370741844, -0.02508157305419445, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.028285449370741844, -0.02508157305419445, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614339225700,"user_tz":-300,"elapsed":4849,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"21c43d6c-085e-4c67-a45c-e7366c32e75c"},"source":["\n","# Khmer for: 'It was like brand new'\n","fitted_pipe.predict(\"វាដូចជាម៉ាកថ្មី \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999677វាដូចជាម៉ាកថ្មី[-0.013914551585912704, 0.011598535813391209, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.013914551585912704, 0.011598535813391209, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"beoCtm4xQf2P","executionInfo":{"status":"ok","timestamp":1614339231428,"user_tz":-300,"elapsed":4320,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f4eec1f0-7f10-45a5-9eeb-f007738e758c"},"source":["\t\t\n","# Khmer for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"វាឈប់ធ្វើការនៅថ្ងៃដំបូង \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999771វាឈប់ធ្វើការនៅថ្ងៃដំបូង[-0.012111756019294262, -0.025659380480647087,...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.012111756019294262, -0.025659380480647087,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"sZlmLhajPoBb","executionInfo":{"status":"ok","timestamp":1614339787003,"user_tz":-300,"elapsed":5612,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"96a0eea3-0680-48fb-c880-f9492c762e4e"},"source":["# Yiddish for: 'It was the best ever !!'\n","fitted_pipe.predict(\"עס איז געווען דער בעסטער טאָמיד !!\")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999999עס איז געווען דער בעסטער טאָמיד !![0.01722850650548935, -0.04829198867082596, -0...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.01722850650548935, -0.04829198867082596, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":70}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614339242470,"user_tz":-300,"elapsed":5022,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a643a8f4-7906-4aed-8d29-dcf52d58ed65"},"source":["# Yiddish for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"אויף דער ערשטער טאָג עס סטאַפּט ארבעטן \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999583אויף דער ערשטער טאָג עס סטאַפּט ארבעטן[-0.03324508294463158, -0.02061191014945507, 0...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [-0.03324508294463158, -0.02061191014945507, 0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614339809996,"user_tz":-300,"elapsed":4078,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"886fc3a5-5899-457b-c968-d0ba6a3afe79"},"source":["\t\t\n","# Kygrgyz for: 'It was the best ever !!'\n","fitted_pipe.predict(\"Бул эң мыкты болду !!\")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good1.000000Бул эң мыкты болду !![0.036575060337781906, -0.056231312453746796, ...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.036575060337781906, -0.056231312453746796, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":71}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614339257197,"user_tz":-300,"elapsed":8374,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a91748c2-2e5b-41ec-e14f-dbb6a85c5365"},"source":["\n","# Kygrgyz for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"Биринчи күнү эле иштебей калды \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999976Биринчи күнү эле иштебей калды[0.012193235568702221, 0.014580748975276947, -...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.012193235568702221, 0.014580748975276947, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614339829359,"user_tz":-300,"elapsed":4124,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6f1c92b6-35bc-4aca-aa8f-e771036196ad"},"source":["# Tamil for: 'It was the best ever !!'\n","fitted_pipe.predict(\"இது எப்போதும் சிறந்தது !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good1.000000இது எப்போதும் சிறந்தது !![-0.030394665896892548, -0.058778341859579086,...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [-0.030394665896892548, -0.058778341859579086,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":72}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":111},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614339264676,"user_tz":-300,"elapsed":3898,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d8547920-9db4-4112-e87a-033ed247e540"},"source":["\t\t\n","# Tamil for: 'It stopped working on the first day'\n","fitted_pipe.predict(\"இது முதல் நாளில் வேலை செய்வதை நிறுத்தியது \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
categorycategory_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0poor0.999954இது முதல் நாளில் வேலை செய்வதை நிறுத்தியது[0.02203391306102276, -0.009059661068022251, 0...
\n","
"],"text/plain":[" category ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 poor ... [0.02203391306102276, -0.009059661068022251, 0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":50}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613872379873,"user_tz":-300,"elapsed":934849,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f88514ee-d24f-41a5-da45-784ec6894a34"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":110},"executionInfo":{"status":"ok","timestamp":1613872792433,"user_tz":-300,"elapsed":107385,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"560796d4-e889-4a94-cc63-3cfbadae7f5c"},"source":["stored_model_path = './models/classifier_dl_trained'\n","hdd_pipe = nlu.load(path=stored_model_path)\n","preds = hdd_pipe.predict('It worked perfectly.')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
classifierclassifier_confidencedocumentxx_embed_sentence_labse_embeddings
origin_index
0good0.999984It worked perfectly.[0.006914846133440733, -0.04569808393716812, -...
\n","
"],"text/plain":[" classifier ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 good ... [0.006914846133440733, -0.04569808393716812, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613872792435,"user_tz":-300,"elapsed":103880,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ed2a6c7c-3fa5-482a-e9b1-327eb171a8ab"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['average', 'poor', 'good']) | Info: get the tags used to trained this ClassifierDLModel | Currently set to : ['average', 'poor', 'good']\n","pipe['classifier_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_hotel_reviews.ipynb b/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_hotel_reviews.ipynb new file mode 100644 index 00000000..b8254535 --- /dev/null +++ b/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_hotel_reviews.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_training_multi_lingual_multi_class_text_classifier_demo_hotel_reviews.ipynb","provenance":[],"collapsed_sections":["zkufh760uvF3"]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zkufh760uvF3"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/Training/multi_lingual/multi_class_text_classification/NLU_training_multi_lingual_multi_class_text_classifier_demo_hotel_reviews.ipynb)\n","\n","\n","\n","# Training a Deep Learning Classifier with NLU \n","## ClassifierDL (Multi-class Text Classification)\n","## 3 class Tripadvisor Hotel review classifier training\n","With the [ClassifierDL model](https://nlp.johnsnowlabs.com/docs/en/annotators#classifierdl-multi-class-text-classification) from Spark NLP you can achieve State Of the Art results on any multi class text classification problem \n","\n","This notebook showcases the following features : \n","\n","- How to train the deep learning classifier\n","- How to store a pipeline to disk\n","- How to load the pipeline from disk (Enables NLU offline mode)\n","\n","You can achieve these results or even better on this dataset with training data :\n","\n","
\n","\n","![image.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfEAAAC2CAYAAADJGLQdAAAgAElEQVR4Ae2di43jvA6FbyspLcUEW0uwpQymjh/YJnRhkZRIirZlj+OJnLPAwg+9P1I8spJx/pfwDwRAAARAAARAYEgC/xuy1+g0CIAACIAACIBAgojDCUAABEAABEBgUAIQ8UENh25vJfCdHrdbut0e6XtrUZX/+89Uxy09vtRNnL6WwNcjM5+4z7H/9/eu8tzT87/Xdimlf+l5p/5Qv85o89VjQv0jEoCIj2g19HkHAYj4DmhvVoRsuLiA+u+Z7rfXC2pezN2f6d8codyPW7ot5Zkri/ufQyAvUH/2YAER/xx3wUhBYHAC7yLiS/3gJ/T7Mz2nXRuI+OA+9+LuQ8RfDBjVgwAIvBGBJfHkbp7yJD7fj2lb//6Xns9Xn9bfiCy68ksEIOK/BB7NrhCQIOc+N/yjP42WPCmZzzNNnpSSbEvy56Hhk43PY7ZTXR/mnoyaOuzn3qaPpn6FoqnDbuvmOqb2zWe8No+q7ZdP++xjudyKgJnOr3BJidqSz7xvc3w5329tp/ux1v7e0s37bUrppyIu378o7QS+2+Rx/ehKn8oYG7ntXZP2u7sLrQ1UX/O8cvPJieT6HKR4MS3EDDvP3jPxPpvTqS+6HlngteOo36+QPGYOLVxgO30BDpL2EqhBuTgkO30NwDVPCYA+j7+OAiMLYmlnoctlAjd5qmA1Sf6GmpwmKegrTdQaVMrEVQEhT3B1ber81Yt1+9B4VBBlkTW2WLXPFDR1HSx+4RcQO+w0Z59DWXb0I/LVDX2Y91WpRBanlp2kTsfWt9imSuirwEg9XK/kCfy6rVe3+sJzJ8hNSzm9zrec7sqUOaj8y45HuOqFGXErfh0woXpV25xnWoCVch39a8bUcQMi3gEJWbYScE7PxfNkkeAgT1/lespEE0ic3ubnSkyQdgFnpZvzgbENbrNVmfZrLhsI5L4dD010CZaUZ75PUsdvHSMmejyUXhdl0Xi22aeM1AXecv+Xn8Q39SMUUamB2cru0nR0C7lGFKSoHCNBkLTpGAhNTnZss98qQZvyaJ9cn4O60Ref577bHTLTYsTEjTeag8RKBDj22YaJs5ePXcJfYhn1M5gzrn9mPJ0XEPFOUMi2hQA5q3Vg/2QQ59GtUICp20xlW7FsXWlR0SXjcz0R2xwusJrFhcq9JOJNGRsQogCy3CfV7umna/ZxvEJB6rMPcfF2tosdGj616RcOBs2MfUyeH1909GNRxPs6YLmIyHDZteA/x8EJXbz4rP1bn4M17ylnuf/VV4wvuLHl/jhO0RwUwaW67JyVMely4cJG/uRQYsDcIkoqlKPrn9zecoSIb6GFvJ0EYgGwzh/n0Q3Y/DpFzvtEouSe/pa4WUFLqj5S38o2v06aCY5xX23/dCCQKvO9rj5JibOOa/ahdBNEm67Z8TfJ042OwFvLdbQ5Y59axxFnHf04QMR1T8l3lJCvBf85Dq5c9tsF/4v9WvfsF8/zWNSTeYcvRXNw15O4iHUZvvN1iHghg5MhCQQC0EywII8fq5+kPl22/jpfvrJFMGeD12JwVAGl9K0+UUYBZEufguG/8Na6fTIjtxXrO0RjtlxMnhm/iF/K0yGec/Yxjf70oqMfB4u4FZqp/9SH+UUpiYpNb226JuK0yFqw309R/qi8s4MXTo4f2pfaOciciij76+CjiSAuNfX6vsyNszffXPmU8NrVBTZI2k2AA4zeYm2CfRtQwubKRKxbaDYwydOcSi/b7XUC1q14yaeeangimTzm6YQnthkP1WM+Mmj6WgV8Glsz0eWeaSuk8As3++xDQi5MAyZTzxsuir1sQxa29/T8ml7YUtlFbWRb+cBb6qj9MfY5jKITD11vM1bpix6zLhCfR2Nudz0CvyxMpnrbdM9jVcSnaqIx/YLPyoJQz1M/Hpvnkb7z3K6+ZNMjf22ZhX8t0TCpbWSLbhBn3yc/pthD6l1sp1cWODuMQJ8AHNYcKgIBEACBDgIkmE5wTTkWcbMYMhne7gIi/nYmuUKHIOJXsCLGAAJXIwARv5pFMZ4XEYCIvwgsqgUBEPgBAYj4D+ChKAiAAAiAAAiAwLEEsJ1+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG0gAAIgAAIgcBoBiPhpqNEQCIAACIAACBxLACJ+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG0gAAIgAAIgcBoBiPhpqNEQCIAACIAACBxLACJ+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG0gAAIgAAIgcBoBiPhpqNEQCIAACIAACBxLACJ+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG0gAAIgAAIgcBoBiPhpqNEQCIAACIAACBxLACJ+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG0gAAIgAAIgcBoBiPhpqNEQCIAACIAACBxLACJ+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG0gAAIgAAIgcBoBiPhpqNEQCIAACIAACBxLACJ+LE/UBgIgAAIgAAKnEYCIn4YaDYEACIAACIDAsQQg4sfyRG2jEvjvme63W7rJ/z/fm0by7++9lpU6+Pj4UlV9PUy++99/KvGap99/FNfbPT3/2zLO7/RwPIuN7s/k6dm2HmmbFbf06w3y/tBnky+vObP/W54/seMb8DqsC4FPRvHCzfVb4PuW79a5QQOCiB9mWFQ0LAEOZlVQeZJGE3PLIPMkVhPTXydqp7a7pfIx8lKQqmJKix3FZNcw/qXn/ZZuxj4H2WxXf36h0Kt8tsMnyYbVpr8w+jdrMpjHzVxPyc+FfK0XokGZnoFCxHsoIc+lCTSTaRrtzglVQXmhoetGsKd29ESuFYx/xkJjdiKS57JjmIFtsg2NqO+od6Air/HZlNYFOhCsgbi9qqve/0KO2W958ZPnRruYneppYsRKpyHiK4CmZDKI2koqwYIDUhOEA0fngDa3FZjbyPXwE0Xe2vJG1mlTf3y6iI/qK2+Racfw49FpHTguliUS18rZCtCGoTdCE7WTEm1pXvSpRgctRld8r5kzvWyjRQDZa7etept+m3yRLx3gs3gK32fhcLHK9hA/5zwl1s6IeJ4fRV/6ugMRX+P09bArI2+MJliLkKrAHBjZr6RLcFPCbPNME1fVmdrtGfmMqwYzcqTiOGVBoutp86whuVY6jb8wy/a8pcfXT7hEQiOLQc2e8ymbX4lt9mkJYvIEfn+m7/z9Ac1hw6ij+SYB8etn32vY0ItfzvoKn4380w/zJ3PC1zX6NbGQhzIdY/XIcgwPH8iCGME6sXVnDiKuiXedE/xqNH/N4qpWU9mQ6jo3I4GHv+RDIu6erIMnGdNFn+6vRehL227yc2U22JoWPuBCmPCkKqLzg4AVCQ2TrJOad1L+Tl90c3a/CPXiV5nHtDCigZGv7xHxIPBNVYbB7wf2e3v+L/BZPIX/wOo+dkxVkY1EkMnn/VY555EvFN6f6Tl9CbTEoL4uQcRXOTnQs9vTHJScOGdzmm/n6q3uGrx7Aps4gqz+6KiCIQczCZbiSHXBEY8l17PRcVaxDZOBJ+Ctigx1nVhVlv0DChdtc8UngbsqexZvP77sx3vGHMytjHXm/u525mz1NveP91n6DoiKJc1Yqc0aS5oMn33D+WDkexS/a8yPgE2xYytjiHhEstzjyVKeZKeEyJlrwI+M1xPUycALkyh6usv3VBkWcS3y1iFqP8sQcULfGvWi4tn2cmIb9Il/5Eu9DQ2QL2Sxf8x5Hnk7ZQyxX8/nH4DdShfDse31Wfmow8Q514Eo/rgsH33p2Icx3wl9w2stvSlANyDiM2DodiviJLbtainf//PMf/rSBPBsYP+kZxveLuIUuG63KuKh49hmmj9zcMmfecliUxc8xLZeCxZhPm/LMLhKcXNk3wpFyWQc+iLzUD466+c8R7Q/m4GHC4KaI9erWa7kryUHPev2WfazWxuzyshXBbqNg6UsTurWuVoEkZ/bp24/Fwy6xp4mdfECIr6IR76kprbA/3xnIWwCPBvBbx2W6kuQUnWpoDMb3EoFdTLSk/Y9PfMXeaqIy/a5fhKPtsrJmVQ/liZ4af/iJ2K/4OOSOvIVEV9brHW1UVu7ypn1N+2vaoRlfkTpfQse2878Qku1OvZplz/VuNHErDx69mklQB5KJEg+z0ddO+5TjG0e3MqXiFWcVfF+4kVcJd0K/haeEPEttN4679xqee6p8q0Hg86BAAiAAAh0EICId0AaI8uMiK89HY4xOPQSBEAABEAgIAARD6AMeyvY5rnqny8NayN0HARAAAQOJAARPxAmqgIBEAABEACBMwlAxM+kjbZAAARAAARA4EACEPEDYaIqEAABEAABEDiTAET8TNpoCwRAAARAAAQOJAARPxAmqgIBEAABEACBMwlAxM+kjbZAAARAAARA4EACEPEDYaIqEAABEAABEDiTAET8TNrv0lZ+AUz0est36eAv9MP/jf3Cayhne+frcK9j9K8Fra/H3f/Kxdm+vFGCHfe+sdo6op9rrK8XLVz32PCNuK12xfvbrvF2cCuvxP35K0JXxzRcBnkVc+DXq/bx7IM6OnhAxDsgXS4LRNyalCdbfbf0+vukbQX1N631O5R73jm9/s78pqWhbpD41gVjDxM/wFyHee+0t0/wtsLGpr7Wwa+b8XkmPePr4JZjhRUXb9Oelq6ah3zznu43y0h+434ppuSyauG1NxZAxK/qXUvjgogbOq1IyA/fuIlpSrmLINjRRF6qgwJvneiuztEvWWj0wkZ+yvemgtfyMAOhmX436s8t1ToijlTuqmwP8dm0zi0UFsQPclnhkP3czvNd9gnny/LsmFIh4uuMjsmRDS7bUfUoQSZPlvy0wSvq/Gta1jHaXymrTzilk+wIZUux+RnI2nbNs/AzhaXiq55Ewb7awArQEgMWm8Kb61gQqzBALjUxWpoEOdVvGnO0Ha4y+VOeO2auuCcfqVfslYNosYWvcPTro3y2/pLWPDf2Y9kJ4fgithid5P7+E5fMoRHxnfaBiO83x8tLNsZRDsCNSxDS7zq3q7m5MlrIv9NDJluul4XF3JOnTF3u5QTeuAHiKkEssWA8vlrePYOodox/nrDWsa/+Wv79zzKL4nvVF7//3tPs74bPDot45YVnqdNl5nmW8ywsnlypAS+P9VnZ+l3iRoui6QHAP1gMiO+ALhvfbkR8n30odmyPy3gSP8Cgq1UETyR5UqhAQwZ0E0SVM05TGnTOUu7Xk7Ccqrfm/NQzYVhF5l9GQff7nzi4vDz98WKgbvlavnsnrK3lva+K7zELWShtHjuXJ1sIZztXqE5ZOJHtti8U3ptn7d1RPuufxCNufI8XTsK5f17UXl/mzIu2v+aPKR5fG2KK8fFtpCDi23jty81PCBLEZFtcT4S1wCaTR2+By3mtlz8rzFvxatvcP7lkh9m+4ts3+HcvJaIgAiD9lUAp1yvHiClPTG0fqoXa1PZfqX3MZB7/zflf9mV3b36AEas4OFrOLD5qoTzfxmgpB/lsERs9fsstshXFIruI0jVc+zzwx0bEN9qH58neeAARP8PjWMRFdKejNxhNjHlhjSaT73pUR1guEhxf2Qdd248teOAbGYWcwyApH2d8QBBsFq8T2yAILvpavJgyvJsgShX63a7FZgZLPMJn5754qbnp84JohndJv/JJEMt1XJfdn277/FDAJ9QQ8RMcLpwIrt1IgE0Wdh4v/jpPU4c4nH/q4fv2yUXX9GHnDVsSjpY1P6W4v//OtHgyaqZkDy/WvEq/5BNi6zfZ9+UjhknC5z4PZ34SBGtNzMv4sH1alJ0t89FFY9Na4yXOmvHN+Wx9Kpz1Z+2Lrt7Ih71NL8HzJ4PIzNw8dxzFR40NDhDwqdsQ8Z8Yr7tsDf5m1aYC02xw022wY5g6VIAUR6npj/Q9OYpqR6qj9uqWu3EuyfRJR8c25lHtqMW6YCpCJFzbnZUoKJbyFz2hoD/PJA+7sGuZydN79et2J6v1ff/xyAXhdvnskohPTKpPC1/v2z5WRPHkgnT7h5Tt4ER8Kr1on2oX4V6P0RyY7w5EfJ7NQSlsLL3azTXPrZwPahbVgAAIgAAIXJ4ARPzlJp4RcX7y8Kvel3cHDYAACIAACFyGAET8DFO6bRXaNgm2X87oC9oAARAAARC4DAGI+GVMiYGAAAiAAAh8GgGI+KdZHOMFARAAARC4DAGI+GVMiYGAAAiAAAh8GgGI+KdZHOMFARAAARC4DAGI+GVMiYGAAAiAAAh8GgGI+KdZHOMFARAAARC4DAGI+GVMiYGAAAiAAAh8GgGI+KdZHOONCfi/5W/esBcXM3d9HdE71qVAybvtFYtSfKSjfe3qvvcj2Dpu4auEJyY238XZFh/iV9ru8Vn+QZr6ys9bit5Bb9KX/Hokxzykr/La2sCvO+xj/TWoo6OPEPEOSMhycQI82er70nlibgmKXId+A9/8e9LpLX73+z21P/hxLdYUpKqYzjOZH3euw7z/P7JPdG++zuFTjvBZEXDt577efL1PXIZn3DEA8s17ut8cI89R3lGvWDd+nd/i6erp6ANEvAMSslybQDOZpuFunVBR/pkAmIVsEqVcpgrc5ShzINMLm/JjJiqYLY87fm1xtpmqw18v1zl+6iE+y8JSF68TF15g/v1HkGZ8eHyCB4xA5m/AaNU+QZmpR1M5a4/1fkLE1xmdkKNOnGz8G2+PmaeP9ldxbn71N/U0O5b8YtR0tCJRBERWhrmt7au/E6Cc1ERlXxuULbItv4TFYlN4zzwZamGTIFAbvtZZMD56Ep/fDg8BsE9LcGuf5om1XSyENV3k5lE+Kz8NW/2c4o+KGTNicxGQPxgG+Vz2yYZRh32aMtSV7NtqcdrTQYh4D6WX5xEB0J9HKSeZ2tfBn/vTBLMc7Kwg+0lZgqhaAOQ8fsHw8jG/SwNOAFgwHl+Of2d3K98aGHXRzFomaSByOu/o55lF8Sv28fszfc/9pvjigMke+bPZUicXkID49Ux3WQBPR+G8WO+Iicf6rMSWzNYz47hjPhP3eUZE+MM+G98W//tPKu2xD88HzVJYe/+WameOEPEZMOfeDgw6bWxNwY4NGgstlaMnlLgO+b1geUohkbFCT0/vavV97uB/uTWZcMyvTCC6L09/653k8vIkzosBIyRetP31eiND5Sj+yyysD27wNy5v/FwtQosIFdtNmLbabyS0R/msfxKnev3unSEjQqPFx2T4gAsv2v6afe/xtRZThHfdeX3+2bhLlVKCiL+Fz8UCTIJLwc48wZU+63J03oqODWa6zlLNR58ww+YbtxIoO+FEgmzEK6gvKtPZ3BDZePyyEJU+F3GXG4vHyK/ZZiLaTRClCre1s9iJN0s8yGeL2OjhsbAsiPRnx5DAHxv/22+fKc63MVzbpz2HiLdMfuEOG91NHB2ElkRcP6G0DmDF47MnYGzacJdjo8BqW9VWFHsRNL3dq89FkGrh8c9ycPMfKwRBcHGkiqHKZ3nHeUK7qjpGPg3HttFnaQfD7crJn+m5WKRZhW3rDFc+Z582Hy/oecw7cSGjNfs0i4E+kBDxPk4vzhWIuA+ALAKyJTl1yAsyXdtJ6Z3Jl3nxwMaonlnXBRCJQr2WYdD9aQJrO+TUWftYe0hNtcyGbWVTeIyL7H/yEUPgs2UUzK/dyuW5YRY5bAclNFbU4++QlLaucNLts8zvFj3htRzlo4nW9xla4OdXwPmjMUTi220fbrnJ398jiHg/qxfmrBOtrvCC4F8CnXz7vBUAEmlJbz9fgYjPmJEnkfCPg9iCiE/VdtjHtJ7ztzY0eS5wQUIuPjkz3sIuSm/nR2Qf206w0LoASzOELp+t7CJm8t0B8ftmgVrssmI/07EPu8h2COL1in1srA7Kd2KEiHeCem02nmjqyeK17aF2EAABEACBKxCAiL+FFSHib2EGdAIEQAAEBiMAEX8Lg0HE38IM6AQIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIgAAIDEYAIj6YwdBdEAABEAABEBACEHEhgSMIgAAIjETgv2e6327pJv//fO/o/b/0vKs6prp0Pb6N2y3d//7b0c54Rf79vWe24Xi/HpW7ZyZD9ew0V84jbYgNH19SuP8IEe9nhZwgAAIg8B4EWCCqwHynx5yYzPaYBVyLS1OvK8zpe8TG1fS+l4XBMzOtjLnLOf2env/JEIi9yVfqkAVPax8ScFUPLwy2soWIix1wBAEQAIFBCHz/uaXb/ZlEInK3swgoUVgdSyA+iYTdCJKpZy3dZB7wYhqfMIz4xEPy9vDXuZSxT1x3WC5ustyFiPOKSbYzbrdHajeleBUl21a3W/KrJb8toicYpdl68z01Ceu1bkucSeyl06YtMJ9O+bIjqL6W7bGZlR71L65LWsYRBEDgXQhEQlpjg49NS72muV/jGcUOG6tMeSNEJuWCF8R0fkFTh2zFt8M+zdN8Sonjc6xBtS1/9uEi/p0eSkgTr0K1ACcReb3l5CiS48+LIE0UOzGqaFNlMpm0MLeOYetoJxw5z7wTcLoZS+RwboC4BAEQeCMCJC5FrMvivF90zGAkxs1tx+v04AHG1HWpi16ePl+HfbLNajwvsXzHIunDRbz1OC+uVkjb/CLyZUIFWfpF3C0EnKGbqn16jwP4MnmCVmdq2sANEACBNyMgIsGL8vIg4sVkvdvy8EDxi8rPPwRM9XEe8yCw3s6YOXp4Rg9OVO7xtWAficO8QCpP+z0x3MH8eBGnFZD7dmaZFCnl9CWHzUZw4usg94v4spjKhKtb/1O/VRlxDNe+vbRP3qvjs4VxBQIg8OsERDjqNjh1ScSjt4NRfrpXPoKLquqKM1HB0e4RiyKwTffFDioG5zxyf8E+ZXfDld3B9qNFvEdcV0XuLBGPVmje4P66cTq6kcedFyqTky4vQGaqwG0QAIFfJJDjknrYyF3pnP+l2zOxay3m1fhRarroyZKIi1A7EWYS6/aJ615jH4GGiOsnWVkd6cmRJ8bS30YuGzNDz3VUsSxP1KqdaEFhDObqKNtauv+y1aXqNXWUC3ag+93+TWhJxwkIgMBbE+BYVZ8SY1Eo3/MJ/76bypin7qZeR2Et3WUf+3KNaSzgecwNp7YuivlVF+iLbeq6E95Hi3gVQtlOf6TvSSy9CLJB9Da2/ww8r6D0N8JdHSZ9SnPtrIq4fOmutHFPz6/pZQ/ekWRRIWNyL29gx2gcqNNhkA0EQOBNCLi4VAVd96/GgzidhbzEFbcFnB8eVCz5gJ07E6sVl6ILDZPKxzDusA/FYSm/XcAnS3+4iGtn/6zz7DxuofFZBDBaEAABEBifAER8fBtuH0FeSe5b9W1vDCVAAARAAAReRQAi/iqyb1hv3bqBgL+hedAlEAABENhMACK+GRkKgAAIgAAIgMB7EICIv4cd0AsQAAEQAAEQ2EwAIr4ZGQqAAAiAAAiAwHsQgIi/hx3QCxAAARAAARDYTAAivhkZCoAACIAACIDAexCAiL+HHdALEAABEAABENhMACK+GRkKgAAIgAAIgMB7EICIv4cd0IvfJuBekWjeJ93bN1+H/+3lIN28prG3ncHy2ddY7ntHga3j1rwauUlvXkc8GLSe7np/Wvq1xdn66mtZy2uldT2+jfAd7LOVD50g79UI56h/9apmJqP27II80oaw96/zlqqWjhDxJTpI+wwCPNnqZA1+GGKNBNehJyFN0AXRCsqsNTNaOolrfb//KpNggLkO84rgdfu0ZYKKR751hM/K7zFocWnqdZA+wGdTYfBMj2jRktP1vG5/3KTW8Y8Btj7bzAVeGOgY4uiHlxDxEAtufhKBMOBvfTVtlL+Z7J4qPQXVxYNPH/w6DPj85KeFY3GYcf5ss6U6sj3q4mGxiQETD/FZ/tVD639rPrmWPiBM0+VpfCLQgTibvPXC28Nf55wmRsR1h+VqM+HZRUWcHO3xxaufvK2pzxULDjSynXELt+FqWclXV0uUNl2brREfYLIB5ddqpuOeAOP7Ic42jYfTfLtBIM2Oon+dJ5/ruhSfy59GQalyrnZeA0H1VLvO2ENXYya1TrjIeSCkZY6YJ+uV8fLcEbFpnmCa4mwLPxeafKPeOMpna8wSP6fYsBCbru6zxiVoDovfmSR3YcW3wz7RAp/9vMYQ18jM5aVF/MY/myeiNTlqPi+T+zs9TDDhya/viciXMp5kDfjlc1QvnIHjr04W30ze+rKTy9dBwc3myffUeJo8Qd+api99g+wnQYx+03f6Ocb+CazxEF9arJU6dQbxJ15EhXl0/oHPre/VufX9975jEavmmfJnjUfmeV5oz+TR+cc9P9ZnZes3c4vi3Af5rPWJ3hjg83XYJ8fdGqtLLN8Rj68t4uyQGVBwbpWDvJAAAAplSURBVA1GVzbwsOgvBgQyWBHwXI1eiXHwaiaHM3TUmbV7zhHkabwKg+4HVaZZ8J38uU8ts9bo1dLFDlVk6FMsut+zCiciXF52WLJt4t9yrwQj36mpo5+VucQsxMdooVMD2Oo4uTzZQjgv7xxRG8t5Vtt92wxH+ax/Emd/FB8Ox39tn7VDprEuxwDxR+3PHfaR2M0LpNJGvr/Nbz9exM3qXbaYlWi3omfNLMJZjOCT+csjbXqPg9jKKDDpLfl2Wz73V/ovjqKqaQLoDqdR1V3gVCbh9PSthyMTUd9bOA9Y16f6jeUWsg+VlJm03yTPPig+ujogso+dP2yzxTqicquNDZLhIJ/lj+Aiv7cPJQ5L5OsuyzUu12K02EEL+DRyub8QU8ruhiu7g+1Hi3gjaBP+aatPBYdXi7idQAuun43rVmiRwbNzUL6o7zRmvRBwdS504apJZuEjg4zYSlpw9H5DWdYXAnG5oIERb3Ggsj6+VVxjhuvc4nIjYoz6fITP0jZ6O/+juKH7sM5e5x75fEnERaidCPNw1+0T173GPqIJEddbR7I6UiIuT1P2SUCjjI2hc2Sn58/n5X5oZEmMjo2IU7vRlyCmuu9/pz+P8BOUytigGjX2YffY7tXGczYV5n6FnZL4iWYb2d2Qbdo1qZe4yH6u5hgxCQJf9u92Z6k81eg5OfclTkXMt6uSrnHa+M6cz4rYTDFB/txJELA/64/6mnolLx/X0l32sS/XmAZ+LANuOLV1NfGhifFS2fLxo0VctsLlG+dZECeQJmCkZL740XwhqTVOhJwMpp6AfRtRIXOvTkbq7z09v57prgJkyS4BUU9OSZQ0+eiAj+0ElwIfcuRJJ74Q8+Cg51/iIogatm6SN+l+kSUVXetIgiq+75jIUAubKN37vhekNn1xO1jaHP3Y5bOVzZpPi+/rhagsTiVNviw8Orql/lt/Fb9VHwsVX1VpURztsI/VhX3x4KIivmSiD05jpzKTdMKRnXKfA30wTQwdBEAABH6dAET8101wYgdmRPzyW48nIkZTIAACIHAmAYj4mbTfoC27fcPbQZu39t9gIOgCCIAACIBAgojDCUAABEAABEBgUAIQ8UENh26DAAiAAAiAAEQcPgACIAACIAACgxKAiA9qOHQbBEAABEAABCDi8AEQAAEQAAEQGJQARHxQw6HbIAACIAACIDC8iMufTMVvI1o2MJWN3hC1XO6I1Nw2/rTrCJSoAwRAAAQ+lgBEPHptqXeH/EazY8UeIu4h//K1e0Xirtd2+jr861mD9D2Lz18mtbl5+xrLfW8GtHWoV2Byb5r0nnm9eSRvVsD7U/Sa5dUu19eyller6np8Gzf/ytvVBobNsPiA6F+9qpnJiD27II+0Ieybt2lKXQvH4UV8YWyrSQSwQ5wh4qssh87Ak60KKr8jPZh0s+PkOvQkJP9aEK2gzGz9gyb4twGuMgnGmeswu1br9mnLBBWPfOsIn5WfzNR+3tTrIH2Az8pvZdCPSAWLlsxAz+vg9zMajq3PNnOBFwY6hjj64SVEvGfFDhEPnecqN8OAn22uJ+rKaKP8zWT3ddBTUF08+PTBr8OAz09+WjgWhxnnzzZbquMFc3axmycnHuKz/Gtw1v/WfHIt/WQQhzc3jU/mfSDOM+15e/jrXMzEiLjusNxMm3L7dBGfOmmdRrpCgyqrEA4Ass3Q/LJYBlJ/RaaUk+qmo69DfrmLJ395Ejd1iQH5t8WljDvaMfAqq+QJnu6jvpinC93xuXPfTu1r+UU2H9iCQJodpfRVGOq65tq/4v0oKFXOoV+FGKie+tOwXIe3hy5rJrVOuMh5Hp+dCzTn2u3wxRHz/JQ51zzBNIXZFkvsmzIj3TjKZ2uMEz+n2GBtZshc3WfNYGkOi9+ZJHdhxbfDPjkuu5jLfl5jiGtk5vJ0Ec8TMJpcelBzwhOKHoEWJ6zj9AZoJ3YUULIxfP+CYDTfjkwMNRGC8eS2w/HUmu3Z1H9VZ0rJTzgaj83j22nyfNSktETpyvkPT6THl/efqGx7j/jSwqj1yXZhGeZpqx3yjvU9nn/3Z/r+e09bA1VZpE6Lz5l5Q/PhE34P4FifNQ87PvZNnsfxSx6oruyzdqL1xgCfr8M+TlNKLN8Rj39HxGUS6oFkRyEBCoU0p7uVSybugIkVgvw2qARim/ie9E/q0v2Ue3z0ddJt26doPHE5V/naZdMv227iz7z0SrLtiy+z1ujV0mX8VWT+5SHSfc1ueeRcXj6eyba5peUvyFEby3mWW33n1OLjzEKCf74vnHoGwOXJFsI5igW1MmpjOU/NPdrZUT4rMfCWyDbsj4u2ubbPWk+gsS7HAPFH/fDUYR+J3bxAKm3k+9v89nQRp9+uFrG+p/udHWjqPIsnrUpkm1cfo8EJMItfVu4FTvAljiiYlMCjqxPg+h6fUx26j/WcJgYZufaDCobtBPXrW3Fb2nn46VwWIUG/qQ5VZofT6D6Nfy6TUAKZjGjOryTdHQPW5Ou+3o5yLsuwl5lJ++S8zfej+cM2Ez8PAUXlwowD3jzIZ/kzcVlcEQjy+8WFZeTrA1Jc7zKx8LG7lhM7qHiaE+W+n/sqprB4NztSO9ieL+K589Ogv9NjmoRTp/98pzyxeSunfVqs2NozBcYksjPqz37dVlEjaIc9iZuO0LZ31PZiELJ1kCC4RUxkcLUDEXGkMdeFxu3m6nTNfsJl5uRtEbFdgBEL05xv1oricjV96DMOVFYktoprzHCdW1xuaJ6q80f4LG2Tt/M/ihuqaYrVfr7oDJc5Jx+KRVyE2gs4DX7dPnHda+wjtOeLeF793dPz74O/4DbBeKTn33v9wlsOoH4VE3V/uhdP1vVJLltJ1ghhuTAYcX84LTY05cl1qi0qum6fUOZGmO9nJnrC0biblRx/Vk5/HqHzT7XErBbb/YTExobxBBN+02eDVphSip66yc7eBgpo065Ku8hpDkqN79s5l4fKc771Zw6WRjTY993CWCPz7eq0S5w3vjPnsyI20ReKA45NvY7WWrrLPvblGtPAj2XADae2riY+NDFeKls+/oKIi1NVACJqJjCWSa2eGtVEpkmq0uSJu0xsacfn8e3W6wlV7otqR/BJH+XLHUa02WCSRkdbr+nv1MdpfEE70l579OO5p+fXM91VgCxlhF1hUVKK2Ni+RhNclfmEU2dDY98yfg56kYhPeYS7+KK3TZO+IPClzfFPjO97JjK8wsbOG0r2vu/9tU1f3A6WNkc/dvlsZbPm0xITluPw9X3W+qvSD4nXxVdVGs95w7jDPlZX9rH9BRE/Z+ZkQwj00iQ7dCRuJc+FT9ipzCSdhpudcp8DXZgWhgYCIAACb0/gs0ScRcyslt7eRAd2cEbEaeUZPQEd2DaqAgEQAAEQOJzAZUVcf34p20TTsXkKPRzpe1dot294O6jZsXjvMaB3IAACIAACRODCIg4TgwAIgAAIgMC1CUDEr21fjA4EQAAEQODCBCDiFzYuhgYCIAACIHBtAhDxa9sXowMBEAABELgwAYj4hY2LoYEACIAACFybwP8BD48gzJ2iWbUAAAAASUVORK5CYII=)\n","\n","\n","You can achieve these results or even better on this dataset with test data :\n","\n","
\n","\n","\n","![image.png](data:image/png;base64,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)"]},{"cell_type":"markdown","metadata":{"id":"dur2drhW5Rvi"},"source":["# 1. Install Java 8 and NLU"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"dTyEf8lNWMi7","executionInfo":{"status":"ok","timestamp":1614343559957,"user_tz":-300,"elapsed":52036,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ced6de18-fa33-401a-ca04-d8e4469b27c8"},"source":["import os\n","from sklearn.metrics import classification_report\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install pyspark==2.4.7 \n","! pip install nlu > /dev/null \n","\n","\n","import nlu"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Requirement already satisfied: pyspark==2.4.7 in /usr/local/lib/python3.7/dist-packages (2.4.7)\n","Requirement already satisfied: py4j==0.10.7 in /usr/local/lib/python3.7/dist-packages (from pyspark==2.4.7) (0.10.7)\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"f4KkTfnR5Ugg"},"source":["# 2. Download hotel reviews dataset \n","https://www.kaggle.com/andrewmvd/trip-advisor-hotel-reviews\n","\n","Hotels play a crucial role in traveling and with the increased access to information new pathways of selecting the best ones emerged.\n","With this dataset, consisting of 20k reviews crawled from Tripadvisor, you can explore what makes a great hotel and maybe even use this model in your travels!\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OrVb5ZMvvrQD","executionInfo":{"status":"ok","timestamp":1614340264850,"user_tz":-300,"elapsed":96138,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"50abf627-2a43-4a06-c142-ee9fd1cb2eb3"},"source":["! wget http://ckl-it.de/wp-content/uploads/2021/02/tripadvisor_hotel_reviews_multi_lingual.csv\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["--2021-02-26 11:49:52-- http://ckl-it.de/wp-content/uploads/2021/02/tripadvisor_hotel_reviews_multi_lingual.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 5332717 (5.1M) [text/csv]\n","Saving to: ‘tripadvisor_hotel_reviews_multi_lingual.csv’\n","\n","tripadvisor_hotel_r 100%[===================>] 5.08M 4.03MB/s in 1.3s \n","\n","2021-02-26 11:49:54 (4.03 MB/s) - ‘tripadvisor_hotel_reviews_multi_lingual.csv’ saved [5332717/5332717]\n","\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":399},"id":"y4xSRWIhwT28","executionInfo":{"status":"ok","timestamp":1614343559964,"user_tz":-300,"elapsed":52023,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f19fba1c-ae73-47c3-affc-e1006a48e8ec"},"source":["import pandas as pd\n","test_path = '/content/tripadvisor_hotel_reviews_multi_lingual.csv'\n","train_df = pd.read_csv(test_path,sep=\",\")\n","cols = [\"y\",\"text\"]\n","train_df = train_df[cols]\n","from sklearn.model_selection import train_test_split\n","train_df = train_df.iloc[:1500]\n","train_df, test_df = train_test_split(train_df, test_size=0.2)\n","train_df\n","\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ytext
37greatexceeded expectations, stayed bavaro princess ...
1236averagenot bad just got week punta cana grand, like s...
1177poorhotel did not let know advance pool area close...
893greatprivacy french quarter feel spent nights dauph...
917averagenot bad, wife celebrated 10 year anniversay ba...
.........
1400poordisapointed hotel stayed hotel 2 days november...
1468greatwonderful hotel 5* plus emphasis customer serv...
554averagebasic good hotel fair distance city centre clo...
353greatcool, staff location hotel great, reasonably p...
118averageoverall good experience great place relax, hus...
\n","

1200 rows × 2 columns

\n","
"],"text/plain":[" y text\n","37 great exceeded expectations, stayed bavaro princess ...\n","1236 average not bad just got week punta cana grand, like s...\n","1177 poor hotel did not let know advance pool area close...\n","893 great privacy french quarter feel spent nights dauph...\n","917 average not bad, wife celebrated 10 year anniversay ba...\n","... ... ...\n","1400 poor disapointed hotel stayed hotel 2 days november...\n","1468 great wonderful hotel 5* plus emphasis customer serv...\n","554 average basic good hotel fair distance city centre clo...\n","353 great cool, staff location hotel great, reasonably p...\n","118 average overall good experience great place relax, hus...\n","\n","[1200 rows x 2 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"markdown","metadata":{"id":"0296Om2C5anY"},"source":["# 3. Train Deep Learning Classifier using nlu.load('train.classifier')\n","\n","You dataset label column should be named 'y' and the feature column with text data should be named 'text'"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":828},"id":"3ZIPkRkWftBG","executionInfo":{"status":"ok","timestamp":1614345941723,"user_tz":-300,"elapsed":2433763,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"db12de1a-f07d-40a6-eee0-26113a57e911"},"source":["trainable_pipe = nlu.load('xx.embed_sentence.labse train.classifier')\n","# We need to train longer and user smaller LR for NON-USE based sentence embeddings usually\n","# We could tune the hyperparameters further with hyperparameter tuning methods like gridsearch\n","# Also longer training gives more accuracy\n","trainable_pipe['classifier_dl'].setMaxEpochs(60) \n","trainable_pipe['classifier_dl'].setLr(0.005) \n","fitted_pipe = trainable_pipe.fit(train_df)\n","# predict with the trainable pipeline on dataset and get predictions\n","preds = fitted_pipe.predict(train_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":["labse download started this may take some time.\n","Approximate size to download 1.7 GB\n","[OK!]\n"," precision recall f1-score support\n","\n"," average 0.79 0.76 0.77 389\n"," great 0.87 0.88 0.88 402\n"," poor 0.84 0.86 0.85 409\n","\n"," accuracy 0.83 1200\n"," macro avg 0.83 0.83 0.83 1200\n","weighted avg 0.83 0.83 0.83 1200\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencetextycategorydocumentxx_embed_sentence_labse_embeddings
origin_index
370.999785exceeded expectations, stayed bavaro princess ...greatgreatexceeded expectations, stayed bavaro princess ...[-0.04549850523471832, 0.0030662992503494024, ...
12360.928466not bad just got week punta cana grand, like s...averageaveragenot bad just got week punta cana grand, like s...[-0.059047382324934006, 0.010260380804538727, ...
11770.999902hotel did not let know advance pool area close...poorpoorhotel did not let know advance pool area close...[-0.01514238677918911, 0.055598434060811996, -...
8930.845497privacy french quarter feel spent nights dauph...greatgreatprivacy french quarter feel spent nights dauph...[-0.00845617987215519, 0.01713375374674797, -0...
9170.786963not bad, wife celebrated 10 year anniversay ba...averageaveragenot bad, wife celebrated 10 year anniversay ba...[-0.022421982139348984, 0.03690879046916962, -...
.....................
14000.999878disapointed hotel stayed hotel 2 days november...poorpoordisapointed hotel stayed hotel 2 days november...[-0.055554818361997604, 0.058676544576883316, ...
14680.999970wonderful hotel 5* plus emphasis customer serv...greatgreatwonderful hotel 5* plus emphasis customer serv...[-0.0014703000197187066, -0.002986577339470386...
5540.998763basic good hotel fair distance city centre clo...averageaveragebasic good hotel fair distance city centre clo...[-0.02877921611070633, 0.0037026735953986645, ...
3530.751464cool, staff location hotel great, reasonably p...greatgreatcool, staff location hotel great, reasonably p...[0.015865614637732506, 0.04452160745859146, -0...
1180.999480overall good experience great place relax, hus...averagegreatoverall good experience great place relax, hus...[-0.013611174188554287, 0.022284582257270813, ...
\n","

1200 rows × 6 columns

\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","37 0.999785 ... [-0.04549850523471832, 0.0030662992503494024, ...\n","1236 0.928466 ... [-0.059047382324934006, 0.010260380804538727, ...\n","1177 0.999902 ... [-0.01514238677918911, 0.055598434060811996, -...\n","893 0.845497 ... [-0.00845617987215519, 0.01713375374674797, -0...\n","917 0.786963 ... [-0.022421982139348984, 0.03690879046916962, -...\n","... ... ... ...\n","1400 0.999878 ... [-0.055554818361997604, 0.058676544576883316, ...\n","1468 0.999970 ... [-0.0014703000197187066, -0.002986577339470386...\n","554 0.998763 ... [-0.02877921611070633, 0.0037026735953986645, ...\n","353 0.751464 ... [0.015865614637732506, 0.04452160745859146, -0...\n","118 0.999480 ... [-0.013611174188554287, 0.022284582257270813, ...\n","\n","[1200 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"markdown","metadata":{"id":"_1jxw3GnVGlI"},"source":["# 3.1 evaluate on Test Data"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Fxx4yNkNVGFl","executionInfo":{"status":"ok","timestamp":1614346462745,"user_tz":-300,"elapsed":2954773,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"80d001de-5876-477b-f5cc-0a7c9fd3fc95"},"source":["preds = fitted_pipe.predict(test_df,output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.63 0.52 0.57 105\n"," great 0.75 0.84 0.79 92\n"," poor 0.73 0.78 0.75 103\n","\n"," accuracy 0.71 300\n"," macro avg 0.70 0.71 0.70 300\n","weighted avg 0.70 0.71 0.70 300\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"yUkk_L8MGcRg"},"source":["#4. Test Model with 20 languages!"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":706},"id":"q2s6nsZZGcRm","executionInfo":{"status":"ok","timestamp":1614183708224,"user_tz":-300,"elapsed":2367533,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a2d42116-d186-4be3-b7bd-c8a5494262e0"},"source":["train_df = pd.read_csv(\"tripadvisor_hotel_reviews_multi_lingual.csv\")\n","preds = fitted_pipe.predict(train_df[[\"test_sentences\",\"y\"]].iloc[:100],output_level='document')\n","\n","#sentence detector that is part of the pipe generates sone NaNs. lets drop them first\n","preds.dropna(inplace=True)\n","print(classification_report(preds['y'], preds['category']))\n","\n","preds"],"execution_count":null,"outputs":[{"output_type":"stream","text":[" precision recall f1-score support\n","\n"," average 0.48 0.42 0.45 33\n"," great 0.68 0.77 0.72 35\n"," poor 0.71 0.69 0.70 32\n","\n"," accuracy 0.63 100\n"," macro avg 0.62 0.63 0.62 100\n","weighted avg 0.62 0.63 0.62 100\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingscategory_confidencedocumentytextcategory
origin_index
0[-0.013124355114996433, -0.010088321752846241,...0.989939Tolles Hotel 5 Nächte Ende August 2005. Reserv...greatTolles Hotel 5 Nächte Ende August 2005. Reserv...average
1[0.0211328137665987, 0.06491417437791824, -0.0...0.685842தூண்டில் மற்றும் சுவிட்ச் அறை விகிதங்கள், ஏற்ற...poorதூண்டில் மற்றும் சுவிட்ச் அறை விகிதங்கள், ஏற்ற...average
2[-0.01487706322222948, 0.08078613132238388, -0...0.993675បន្ទប់ឆែកល្អចូលចិត្តសណ្ឋាគារទីតាំងល្អមិត្តភាព។...averageបន្ទប់ឆែកល្អចូលចិត្តសណ្ឋាគារទីតាំងល្អមិត្តភាព។...average
3[-0.05104789137840271, 0.0495218001306057, -0....0.999985beste Lage Wert Eigenschaften Waikiki Kopf Hot...greatbeste Lage Wert Eigenschaften Waikiki Kopf Hot...great
4[-0.04287628084421158, 0.011480966582894325, -...0.999809botel not recommended little disappointed hone...poorbotel not recommended little disappointed hone...poor
.....................
95[-0.0008096436504274607, 0.03655293956398964, ...0.801106موقع رائع قضى 7 أيام في نزل القلعة في بداية ال...greatموقع رائع قضى 7 أيام في نزل القلعة في بداية ال...great
96[-0.005492127034813166, 0.055038247257471085, ...0.987334super emplacement les lits durs ont vraiment a...averagesuper emplacement les lits durs ont vraiment a...great
97[0.009459462948143482, 0.0067734019830822945, ...0.994116ทำเลที่ตั้งดีเยี่ยมโรงแรมที่สมบูรณ์แบบตรงกลางน...greatทำเลที่ตั้งดีเยี่ยมโรงแรมที่สมบูรณ์แบบตรงกลางน...average
98[-0.06341181695461273, 0.03327463939785957, -0...0.976167gerade anfangen, Glanz zu verlieren, blieb Kan...greatgerade anfangen, Glanz zu verlieren, blieb Kan...poor
99[0.028746405616402626, -0.009642810560762882, ...0.984000bittersweet यादें शानदार अतीत में हाल ही में र...poorbittersweet यादें शानदार अतीत में हाल ही में र...poor
\n","

100 rows × 6 columns

\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... category\n","origin_index ... \n","0 [-0.013124355114996433, -0.010088321752846241,... ... average\n","1 [0.0211328137665987, 0.06491417437791824, -0.0... ... average\n","2 [-0.01487706322222948, 0.08078613132238388, -0... ... average\n","3 [-0.05104789137840271, 0.0495218001306057, -0.... ... great\n","4 [-0.04287628084421158, 0.011480966582894325, -... ... poor\n","... ... ... ...\n","95 [-0.0008096436504274607, 0.03655293956398964, ... ... great\n","96 [-0.005492127034813166, 0.055038247257471085, ... ... great\n","97 [0.009459462948143482, 0.0067734019830822945, ... ... average\n","98 [-0.06341181695461273, 0.03327463939785957, -0... ... poor\n","99 [0.028746405616402626, -0.009642810560762882, ... ... poor\n","\n","[100 rows x 6 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"RjtuNUcvuJTT"},"source":["# The Model understands Englsih\n","![en](https://www.worldometers.info/img/flags/small/tn_nz-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"o0vu7PaWkcI7","executionInfo":{"status":"ok","timestamp":1614346500989,"user_tz":-300,"elapsed":5090,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ad0ae855-2aba-4f2d-f449-9b5a533dcff6"},"source":["fitted_pipe.predict(\"It was the best stay of my life, I loved it!! \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.999093greatIt was the best stay of my life, I loved it!![0.025105193257331848, -0.04443410038948059, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999093 ... [0.025105193257331848, -0.04443410038948059, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1ykjRQhCtQ4w","executionInfo":{"status":"ok","timestamp":1614346504428,"user_tz":-300,"elapsed":8332,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"b40b0e9c-3576-43c4-ec4c-df7195b33f7f"},"source":["fitted_pipe.predict(\"It was the worst stay of my life, I hated it!! \")\n"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.895561poorIt was the worst stay of my life, I hated it!![0.029578806832432747, -0.042081184685230255, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.895561 ... [0.029578806832432747, -0.042081184685230255, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"markdown","metadata":{"id":"vohym-XbuNHn"},"source":["# The Model understands German\n","![de](https://www.worldometers.info/img/flags/small/tn_gm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"dzaaZrI4tVWc","executionInfo":{"status":"ok","timestamp":1614346507368,"user_tz":-300,"elapsed":10904,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3a55ba80-9c2d-434f-bc94-3735b6aded46"},"source":["# German for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Es war der beste Aufenthalt meines Lebens, ich habe es geliebt !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.998235greatEs war der beste Aufenthalt meines Lebens, ich...[0.025617875158786774, -0.05000672861933708, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.998235 ... [0.025617875158786774, -0.05000672861933708, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"BbhgTSBGtTtJ","executionInfo":{"status":"ok","timestamp":1614346510969,"user_tz":-300,"elapsed":14359,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f840584b-9fef-4bd2-960b-d9d4b8cb1704"},"source":["\t\t\n","# German for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"Es war der schlimmste Aufenthalt meines Lebens, ich hasste es !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.467292poorEs war der schlimmste Aufenthalt meines Lebens...[0.022492459043860435, -0.05308642238378525, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.467292 ... [0.022492459043860435, -0.05308642238378525, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"a1JbtmWquQwj"},"source":["# The Model understands Chinese\n","![zh](https://www.worldometers.info/img/flags/small/tn_ch-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"kYSYqtoRtc-P","executionInfo":{"status":"ok","timestamp":1614346514096,"user_tz":-300,"elapsed":17068,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"ef123584-4111-435c-9ac7-1faf86208d52"},"source":["# Chinese for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"这是我一生中最美好的时光,我喜欢它!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.999551great这是我一生中最美好的时光,我喜欢它!![0.011552252806723118, -0.06316247582435608, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999551 ... [0.011552252806723118, -0.06316247582435608, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"06v9SD-QtlBU","executionInfo":{"status":"ok","timestamp":1614346967460,"user_tz":-300,"elapsed":3255,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"bb9b52b5-7218-4aaa-cb3d-4df7f906eba4"},"source":["# Chinese for: 'It was awful!! '\n","fitted_pipe.predict(\"太糟糕了!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.984005poor太糟糕了!![-0.025874078273773193, -0.0665956661105156, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.984005 ... [-0.025874078273773193, -0.0665956661105156, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":49}]},{"cell_type":"markdown","metadata":{"id":"9h7CvN4uu9Pb"},"source":["# Model understands Afrikaans\n","\n","![af](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)\n","\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VMPhbgw9twtf","executionInfo":{"status":"ok","timestamp":1614346520196,"user_tz":-300,"elapsed":22686,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"76c2e934-846e-4b57-befa-67a3a5c454cf"},"source":["\t\t\n","# Afrikaans for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Dit was die beste verblyf in my lewe, ek was mal daaroor !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.996766greatDit was die beste verblyf in my lewe, ek was m...[0.027523042634129524, -0.034727904945611954, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.996766 ... [0.027523042634129524, -0.034727904945611954, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"zWgNTIdkumhX","executionInfo":{"status":"ok","timestamp":1614346523225,"user_tz":-300,"elapsed":25265,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"56effef4-2b5a-4e2d-d538-e687497117f6"},"source":["# Afrikaans for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"Dit was die slegste verblyf in my lewe, ek het dit gehaat !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.982654poorDit was die slegste verblyf in my lewe, ek het...[0.020533405244350433, -0.04479401186108589, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.982654 ... [0.020533405244350433, -0.04479401186108589, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":12}]},{"cell_type":"markdown","metadata":{"id":"rSEPkC-Bwnpg"},"source":["# The model understands Vietnamese\n","![vi](https://www.worldometers.info/img/flags/small/tn_vm-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"7ksJosuTOYpE","executionInfo":{"status":"ok","timestamp":1614346526321,"user_tz":-300,"elapsed":28024,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"9e2c7e5e-218e-46a0-d374-87e51664e57f"},"source":["# Vietnamese for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Đó là kỳ nghỉ tuyệt vời nhất trong đời tôi, tôi yêu nó !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.800499greatĐó là kỳ nghỉ tuyệt vời nhất trong đời tôi, tô...[0.022074760869145393, -0.06135038658976555, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.800499 ... [0.022074760869145393, -0.06135038658976555, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":13}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"VfG3UaCTEZB_","executionInfo":{"status":"ok","timestamp":1614346932664,"user_tz":-300,"elapsed":3251,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"90063bf5-a504-4ccb-f1cd-c5bcbed20f14"},"source":["# Vietnamese for: 'It was awful!! '\n","fitted_pipe.predict(\"Nó quá tệ!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.993273poorNó quá tệ!![-0.011885236017405987, -0.06412354856729507, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.993273 ... [-0.011885236017405987, -0.06412354856729507, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":48}]},{"cell_type":"markdown","metadata":{"id":"IlkmAaMoxTuy"},"source":["# The model understands Japanese\n","![ja](https://www.worldometers.info/img/flags/small/tn_ja-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"1IfJu3q8wwUt","executionInfo":{"status":"ok","timestamp":1614346532495,"user_tz":-300,"elapsed":33764,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1713a75b-e523-4b19-fa14-0c8941f4f2e8"},"source":["# Japanese for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"それは私の人生で最高の滞在でした、私はそれを愛していました!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.999605greatそれは私の人生で最高の滞在でした、私はそれを愛していました!![0.03218996152281761, -0.04521138221025467, -0...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999605 ... [0.03218996152281761, -0.04521138221025467, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-RjXWbFIPvIs","executionInfo":{"status":"ok","timestamp":1614346535433,"user_tz":-300,"elapsed":36523,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"cf009458-299a-425e-df0e-0f037e6407b4"},"source":["# Japanese for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"人生最悪の滞在でした、嫌いでした!! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.726080poor人生最悪の滞在でした、嫌いでした!![0.0015585115179419518, -0.04200109466910362, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.726080 ... [0.0015585115179419518, -0.04200109466910362, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"markdown","metadata":{"id":"GITfT7FK0CGv"},"source":["# The model understands Zulu\n","![zu](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"ifRhs6e7OcR3","executionInfo":{"status":"ok","timestamp":1614346538101,"user_tz":-300,"elapsed":38857,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"87a1d188-adda-4977-fb8a-5b421456f7ed"},"source":["# Zulu for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Kwakungukuhlala okuhle kakhulu empilweni yami, ngangikuthanda !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.996036greatKwakungukuhlala okuhle kakhulu empilweni yami,...[0.020903199911117554, -0.05406733229756355, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.996036 ... [0.020903199911117554, -0.05406733229756355, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"6uelDwq4xdWv","executionInfo":{"status":"ok","timestamp":1614346540885,"user_tz":-300,"elapsed":41490,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"81fc9d11-c2bc-43ee-dd8e-2570d441b19e"},"source":["# Zulu for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"Kwakuwukuhlala okubi kakhulu empilweni yami, ngangikuzonda !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.974802poorKwakuwukuhlala okubi kakhulu empilweni yami, n...[0.012615667656064034, -0.05433851107954979, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.974802 ... [0.012615667656064034, -0.05433851107954979, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"markdown","metadata":{"id":"VGVvzl_30a0T"},"source":["# The Model understands Turkish\n","![tr](https://www.worldometers.info/img/flags/small/tn_tu-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DRNnuEeQz2pd","executionInfo":{"status":"ok","timestamp":1614346543620,"user_tz":-300,"elapsed":43890,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"f5359d0a-11f1-47a9-afbc-c667d7420ce0"},"source":["\n","# Turkish for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Hayatımın en iyi kalışıydı, onu sevdim! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.998495greatHayatımın en iyi kalışıydı, onu sevdim![0.01813080720603466, -0.018600456416606903, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.998495 ... [0.01813080720603466, -0.018600456416606903, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":19}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"aOSsiK6J0jWs","executionInfo":{"status":"ok","timestamp":1614346909801,"user_tz":-300,"elapsed":3979,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1e71ac31-6d05-472a-eae3-3725b43b62d6"},"source":["# Turkish for: 'It was awful!! '\n","fitted_pipe.predict(\"Berbattı!!\")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.993295poorBerbattı!![0.004018284380435944, -0.057571493089199066, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.993295 ... [0.004018284380435944, -0.057571493089199066, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":47}]},{"cell_type":"markdown","metadata":{"id":"803qL2gt0vlb"},"source":["# The Model understands Hebrew\n","![he](https://www.worldometers.info/img/flags/small/tn_sf-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"XQ5VCtxw0pc0","executionInfo":{"status":"ok","timestamp":1614346549067,"user_tz":-300,"elapsed":48742,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"afcf8675-dc8e-4b45-f492-113af2023909"},"source":["\t\t\n","# Hebrew for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"זה היה השהייה הכי טובה בחיי, אהבתי את זה !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.999557greatזה היה השהייה הכי טובה בחיי, אהבתי את זה !![0.021775633096694946, -0.0414351262152195, -0...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999557 ... [0.021775633096694946, -0.0414351262152195, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":21}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"9w2ZHfns05A4","executionInfo":{"status":"ok","timestamp":1614346551851,"user_tz":-300,"elapsed":51401,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"a266a4ce-dd04-4172-8c89-d4d1a97e6995"},"source":["# Hebrew for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"זה היה השהייה הגרועה בחיי, שנאתי את זה !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.672065poorזה היה השהייה הגרועה בחיי, שנאתי את זה !![0.020672744140028954, -0.04731827974319458, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.672065 ... [0.020672744140028954, -0.04731827974319458, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":22}]},{"cell_type":"markdown","metadata":{"id":"SDlpd33H1HIX"},"source":["# The Model understands Telugu\n","![te](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Kc5n1bzv1BJT","executionInfo":{"status":"ok","timestamp":1614346554511,"user_tz":-300,"elapsed":53649,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"266ab13e-9de7-4cce-d7cd-48c5b86102bf"},"source":["# Telugu for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"ఇది నా జీవితంలో ఉత్తమమైన కాలం, నేను దానిని ఇష్టపడ్డాను !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.994647greatఇది నా జీవితంలో ఉత్తమమైన కాలం, నేను దానిని ఇష్...[0.018417492508888245, -0.05317000299692154, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.994647 ... [0.018417492508888245, -0.05317000299692154, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":23}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"-l-u6vrz1Obe","executionInfo":{"status":"ok","timestamp":1614346557176,"user_tz":-300,"elapsed":56033,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"d54c5e5a-864b-402b-eef7-10cec058096a"},"source":["\t\t\n","# Telugu for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"ఇది నా జీవితంలో చెత్తగా ఉంది, నేను అసహ్యించుకున్నాను !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.971539poorఇది నా జీవితంలో చెత్తగా ఉంది, నేను అసహ్యించుకు...[-0.000955148774664849, -0.05593333765864372, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.971539 ... [-0.000955148774664849, -0.05593333765864372, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":24}]},{"cell_type":"markdown","metadata":{"id":"nziBUe8t1Zwn"},"source":["# Model understands Russian\n","![ru](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Ckyjl3YQ1VFn","executionInfo":{"status":"ok","timestamp":1614346560265,"user_tz":-300,"elapsed":58241,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"5a57e3d0-9a0d-4824-9476-126884f01639"},"source":["# Russian for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Это был лучший отдых в моей жизни, мне очень понравилось !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.999264greatЭто был лучший отдых в моей жизни, мне очень п...[0.024515371769666672, -0.03857886791229248, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999264 ... [0.024515371769666672, -0.03857886791229248, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":25}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"GIdWkfGv1gFz","executionInfo":{"status":"ok","timestamp":1614346562655,"user_tz":-300,"elapsed":60083,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0be2cac8-9e26-44a2-d30b-6b3f4126090a"},"source":["# Russian for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"Это было худшее пребывание в моей жизни, я ненавидел его !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.894004poorЭто было худшее пребывание в моей жизни, я нен...[-0.006281813140958548, -0.03218897059559822, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.894004 ... [-0.006281813140958548, -0.03218897059559822, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":26}]},{"cell_type":"markdown","metadata":{"id":"8R1j9mwz2Cm4"},"source":["# Model understands Urdu\n","![ur](https://www.worldometers.info/img/flags/small/tn_pk-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"j4zwvRV11pcG","executionInfo":{"status":"ok","timestamp":1614346566536,"user_tz":-300,"elapsed":63285,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"524b8550-cc34-4df7-e1fe-c5eb974be9b9"},"source":["\t\t\n","# Urdu for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"یہ میری زندگی کا بہترین قیام تھا ، مجھے اس سے پیار تھا !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.998025greatیہ میری زندگی کا بہترین قیام تھا ، مجھے اس سے ...[0.016523482277989388, -0.04361935704946518, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.998025 ... [0.016523482277989388, -0.04361935704946518, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":27}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SxzTuK4b2UKV","executionInfo":{"status":"ok","timestamp":1614346568197,"user_tz":-300,"elapsed":64721,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2b276f5b-476b-43e5-e2be-24d9f338102a"},"source":["\n","# Urdu for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"یہ میری زندگی کا بدترین قیام تھا ، مجھے اس سے نفرت تھی !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.947351poorیہ میری زندگی کا بدترین قیام تھا ، مجھے اس سے ...[0.010332305915653706, -0.032978497445583344, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.947351 ... [0.010332305915653706, -0.032978497445583344, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":28}]},{"cell_type":"markdown","metadata":{"id":"RoNg-C3k1qcX"},"source":["# Model understands Hindi\n","![hi](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)\n"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"QZ9RT5Wv1r1n","executionInfo":{"status":"ok","timestamp":1614346572863,"user_tz":-300,"elapsed":69071,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2ddc360e-056d-4d5b-ff50-bfc5c8e81067"},"source":["\n","\t\t\n","# hindi for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"यह मेरे जीवन का सबसे अच्छा प्रवास था, मुझे यह पसंद था !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.998548greatयह मेरे जीवन का सबसे अच्छा प्रवास था, मुझे यह ...[0.02085617184638977, -0.03468615561723709, -0...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.998548 ... [0.02085617184638977, -0.03468615561723709, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":29}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"quM-IL2i12-B","executionInfo":{"status":"ok","timestamp":1614346575324,"user_tz":-300,"elapsed":71369,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"1187b9af-b4b8-42f6-fff7-4eef2d16f6e4"},"source":["\t\t\n","# hindi for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"यह मेरे जीवन का सबसे बुरा पड़ाव था, मुझे इससे नफरत थी !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.941456poorयह मेरे जीवन का सबसे बुरा पड़ाव था, मुझे इससे ...[0.01690828427672386, -0.031606461852788925, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.941456 ... [0.01690828427672386, -0.031606461852788925, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":30}]},{"cell_type":"markdown","metadata":{"id":"R4ByHOZn35Lc"},"source":["# The model understands Tartar\n","![tt](https://www.worldometers.info/img/flags/small/tn_rs-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"2JrzusSQ18F5","executionInfo":{"status":"ok","timestamp":1614346578887,"user_tz":-300,"elapsed":74650,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7acec658-1683-4ffa-b388-8e49f6f507cd"},"source":["# Tartar for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Бу минем тормышымның иң яхшы торышы иде, мин аны яраттым !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.995180greatБу минем тормышымның иң яхшы торышы иде, мин а...[0.0361848883330822, -0.039926111698150635, -0...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.995180 ... [0.0361848883330822, -0.039926111698150635, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":31}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"J06Xm_Ln4AYu","executionInfo":{"status":"ok","timestamp":1614346581079,"user_tz":-300,"elapsed":76674,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"210fda0b-ff92-4794-ace7-b1707a588886"},"source":["# Tartar for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"Бу минем тормышымның иң начар торышы иде, мин аны нәфрәт иттем !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.973673poorБу минем тормышымның иң начар торышы иде, мин ...[0.023216629400849342, -0.029130196198821068, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.973673 ... [0.023216629400849342, -0.029130196198821068, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":32}]},{"cell_type":"markdown","metadata":{"id":"HKj5yWwwMplH"},"source":["# The Model understands French\n","![fr](https://www.worldometers.info/img/flags/small/tn_fr-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"CUHcJZfJMplL","executionInfo":{"status":"ok","timestamp":1614346583438,"user_tz":-300,"elapsed":78665,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"7da1d34a-79ff-4316-cdbc-13c04caf3e1b"},"source":["# French for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"C'était le meilleur séjour de ma vie, j'ai adoré !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.999693greatC'était le meilleur séjour de ma vie, j'ai ado...[0.016066204756498337, -0.042281411588191986, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.999693 ... [0.016066204756498337, -0.042281411588191986, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":33}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"57NY2XoTMplM","executionInfo":{"status":"ok","timestamp":1614346586277,"user_tz":-300,"elapsed":81148,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"c2e87a71-3fbd-4873-d412-6f1562585e8a"},"source":["# French for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"C'était le pire séjour de ma vie, je l'ai détesté !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.625446poorC'était le pire séjour de ma vie, je l'ai déte...[0.016935674473643303, -0.04099534824490547, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.625446 ... [0.016935674473643303, -0.04099534824490547, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":34}]},{"cell_type":"markdown","metadata":{"id":"jD2TBgT0Nq6F"},"source":["# The Model understands Thai\n","![th](https://www.worldometers.info/img/flags/small/tn_th-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"gBp11S5GNq6S","executionInfo":{"status":"ok","timestamp":1614346588839,"user_tz":-300,"elapsed":83317,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"22df6a5d-f77b-4c70-c453-980c108c55a3"},"source":["\t\t\n","# Thai for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"เป็นการพักที่ดีที่สุดในชีวิตฉันชอบมาก !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.991230greatเป็นการพักที่ดีที่สุดในชีวิตฉันชอบมาก !![-0.009586167521774769, -0.03715922310948372, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.991230 ... [-0.009586167521774769, -0.03715922310948372, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":35}]},{"cell_type":"code","metadata":{"id":"R6nKI7C3QKa3","colab":{"base_uri":"https://localhost:8080/","height":106},"executionInfo":{"status":"ok","timestamp":1614346591489,"user_tz":-300,"elapsed":85525,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"6298a66a-c81e-4a1c-9e82-e1f4be5f8b3c"},"source":["\t\t\n","# Thai for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"เป็นการพักที่แย่ที่สุดในชีวิตฉันเกลียดมัน !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.992197poorเป็นการพักที่แย่ที่สุดในชีวิตฉันเกลียดมัน !![-0.01785094477236271, -0.04203420504927635, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.992197 ... [-0.01785094477236271, -0.04203420504927635, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":36}]},{"cell_type":"markdown","metadata":{"id":"mLItI4KZOElB"},"source":["# The Model understands Khmer\n","![km](https://www.worldometers.info/img/flags/small/tn_cb-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"SWbqMgAwOElC","executionInfo":{"status":"ok","timestamp":1614346594266,"user_tz":-300,"elapsed":87513,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"48d23fdb-d7c0-4393-ef1a-62f7525991ce"},"source":["# Khmer for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"វាជាការស្នាក់នៅដ៏ល្អបំផុតក្នុងជីវិតខ្ញុំស្រឡាញ់វាណាស់ !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.996174greatវាជាការស្នាក់នៅដ៏ល្អបំផុតក្នុងជីវិតខ្ញុំស្រឡាញ...[0.0050583695992827415, -0.05372818186879158, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.996174 ... [0.0050583695992827415, -0.05372818186879158, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":37}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"beoCtm4xQf2P","executionInfo":{"status":"ok","timestamp":1614346609923,"user_tz":-300,"elapsed":5422,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"644cd909-2753-4620-ff05-3ad51c0653b5"},"source":["# Khmer for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"វាជាការស្នាក់នៅដ៏អាក្រក់បំផុតក្នុងជីវិតខ្ញុំស្អប់វាណាស់ !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.994846poorវាជាការស្នាក់នៅដ៏អាក្រក់បំផុតក្នុងជីវិតខ្ញុំស្...[-0.01400109101086855, -0.046681348234415054, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.994846 ... [-0.01400109101086855, -0.046681348234415054, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":39}]},{"cell_type":"markdown","metadata":{"id":"lvE-LbNiPoBT"},"source":["# The Model understands Yiddish\n","![yi](https://www.worldometers.info/img/flags/small/tn_pl-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"sZlmLhajPoBb","executionInfo":{"status":"ok","timestamp":1614346615967,"user_tz":-300,"elapsed":4656,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"e9868050-4a7b-43e1-f845-870671d797a4"},"source":["\t\t\n","# Yiddish for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"דאָס איז געווען דער בעסטער בלייַבן פון מיין לעבן, איך ליב געהאט עס !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.998024greatדאָס איז געווען דער בעסטער בלייַבן פון מיין לע...[0.016376741230487823, -0.04827779531478882, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.998024 ... [0.016376741230487823, -0.04827779531478882, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":40}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"5h-pha_nPoBc","executionInfo":{"status":"ok","timestamp":1614346872786,"user_tz":-300,"elapsed":4483,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"0bcce17c-7820-4c21-b3fc-fdeeac244664"},"source":["# Yiddish for: 'It was awful!! '\n","fitted_pipe.predict(\"עס איז געווען שרעקלעך !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.751072poorעס איז געווען שרעקלעך !![0.0001469508424634114, -0.057936470955610275,...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.751072 ... [0.0001469508424634114, -0.057936470955610275,...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":46}]},{"cell_type":"markdown","metadata":{"id":"XSz4WzScaAHj"},"source":["# The Model understands Kygrgyz\n","![ky](https://www.worldometers.info/img/flags/small/tn_kg-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"DXz6fhJSaAHu","executionInfo":{"status":"ok","timestamp":1614346621291,"user_tz":-300,"elapsed":9515,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"907f11f4-6995-40e1-bd7d-41c3e380e3e6"},"source":["\n","# Kygrgyz for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"Бул менин жашоомдогу эң жакшы жашоо болду, мен аны жакшы көрчүмүн !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.996750greatБул менин жашоомдогу эң жакшы жашоо болду, мен...[0.032868802547454834, -0.04612768813967705, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.996750 ... [0.032868802547454834, -0.04612768813967705, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":42}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"lh_ZSHlPaAHv","executionInfo":{"status":"ok","timestamp":1614346623853,"user_tz":-300,"elapsed":11412,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2848f44b-e5ca-4393-d85b-53f309f4d607"},"source":["# Kygrgyz for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"Бул менин жашоомдогу эң жаман калуу болду, мен аны жек көрдүм !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.981754poorБул менин жашоомдогу эң жаман калуу болду, мен...[0.023127004504203796, -0.04409905895590782, -...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.981754 ... [0.023127004504203796, -0.04409905895590782, -...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":43}]},{"cell_type":"markdown","metadata":{"id":"DGMVMKaTdJFj"},"source":["# The Model understands Tamil\n","![ta](https://www.worldometers.info/img/flags/small/tn_in-flag.gif)"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"JWDr_LoCdJFn","executionInfo":{"status":"ok","timestamp":1614346626603,"user_tz":-300,"elapsed":13407,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"76068b9e-f503-46f0-fcfd-1bd5b0f88e39"},"source":["# Tamil for: 'It was the best stay of my life, I loved it!!'\n","fitted_pipe.predict(\"இது என் வாழ்க்கையின் சிறந்த தங்குமிடம், நான் அதை நேசித்தேன் !! \")\n","\t\t"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.994477greatஇது என் வாழ்க்கையின் சிறந்த தங்குமிடம், நான் அ...[0.0208477433770895, -0.049386993050575256, -0...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.994477 ... [0.0208477433770895, -0.049386993050575256, -0...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":44}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"Q6C0BmTtdJFp","executionInfo":{"status":"ok","timestamp":1614346629260,"user_tz":-300,"elapsed":15640,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"86761e33-ef65-4df8-de0b-817c39712229"},"source":["# Tamil for: 'It was the worst stay of my life, I hated it!!'\n","fitted_pipe.predict(\"இது என் வாழ்க்கையின் மிக மோசமான காலம், நான் அதை வெறுத்தேன் !! \")"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
category_confidencecategorydocumentxx_embed_sentence_labse_embeddings
origin_index
00.796923poorஇது என் வாழ்க்கையின் மிக மோசமான காலம், நான் அத...[0.009537279605865479, -0.053919799625873566, ...
\n","
"],"text/plain":[" category_confidence ... xx_embed_sentence_labse_embeddings\n","origin_index ... \n","0 0.796923 ... [0.009537279605865479, -0.053919799625873566, ...\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":45}]},{"cell_type":"markdown","metadata":{"id":"2BB-NwZUoHSe"},"source":["# 5. Lets save the model"]},{"cell_type":"code","metadata":{"id":"eLex095goHwm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613907018382,"user_tz":-300,"elapsed":4090664,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"2394b2b7-795e-43f2-de73-048ed4ee2ecc"},"source":["stored_model_path = './models/classifier_dl_trained' \n","fitted_pipe.save(stored_model_path)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Stored model in ./models/classifier_dl_trained\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"e_b2DPd4rCiU"},"source":["# 6. Lets load the model from HDD.\n","This makes Offlien NLU usage possible! \n","You need to call nlu.load(path=path_to_the_pipe) to load a model/pipeline from disk."]},{"cell_type":"code","metadata":{"id":"SO4uz45MoRgp","colab":{"base_uri":"https://localhost:8080/","height":105},"executionInfo":{"status":"ok","timestamp":1613907286544,"user_tz":-300,"elapsed":134966,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"3d6a2ee6-d5dd-405f-dafe-35bf67fcc232"},"source":["stored_model_path = './models/classifier_dl_trained' \n","hdd_pipe = nlu.load(path=stored_model_path)\n","\n","preds = hdd_pipe.predict('It was a good experince!')\n","preds"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
xx_embed_sentence_labse_embeddingsclassifierclassifier_confidencedocument
origin_index
0[0.059547875076532364, -0.03929056599736214, -...great0.999993It was a good experince!
\n","
"],"text/plain":[" xx_embed_sentence_labse_embeddings ... document\n","origin_index ... \n","0 [0.059547875076532364, -0.03929056599736214, -... ... It was a good experince!\n","\n","[1 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"id":"e0CVlkk9v6Qi","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1613907286546,"user_tz":-300,"elapsed":134953,"user":{"displayName":"ahmed lone","photoUrl":"","userId":"02458088882398909889"}},"outputId":"dc9fe771-a4aa-4ee3-fdbf-7ad1ef7d031d"},"source":["hdd_pipe.print_info()"],"execution_count":null,"outputs":[{"output_type":"stream","text":["The following parameters are configurable for this NLU pipeline (You can copy paste the examples) :\n",">>> pipe['document_assembler'] has settable params:\n","pipe['document_assembler'].setCleanupMode('shrink') | Info: possible values: disabled, inplace, inplace_full, shrink, shrink_full, each, each_full, delete_full | Currently set to : shrink\n",">>> pipe['sentence_detector'] has settable params:\n","pipe['sentence_detector'].setCustomBounds([]) | Info: characters used to explicitly mark sentence bounds | Currently set to : []\n","pipe['sentence_detector'].setDetectLists(True) | Info: whether detect lists during sentence detection | Currently set to : True\n","pipe['sentence_detector'].setExplodeSentences(False) | Info: whether to explode each sentence into a different row, for better parallelization. Defaults to false. | Currently set to : False\n","pipe['sentence_detector'].setMaxLength(99999) | Info: Set the maximum allowed length for each sentence | Currently set to : 99999\n","pipe['sentence_detector'].setMinLength(0) | Info: Set the minimum allowed length for each sentence. | Currently set to : 0\n","pipe['sentence_detector'].setUseAbbreviations(True) | Info: whether to apply abbreviations at sentence detection | Currently set to : True\n","pipe['sentence_detector'].setUseCustomBoundsOnly(False) | Info: Only utilize custom bounds in sentence detection | Currently set to : False\n",">>> pipe['regex_tokenizer'] has settable params:\n","pipe['regex_tokenizer'].setCaseSensitiveExceptions(True) | Info: Whether to care for case sensitiveness in exceptions | Currently set to : True\n","pipe['regex_tokenizer'].setTargetPattern('\\S+') | Info: pattern to grab from text as token candidates. Defaults \\S+ | Currently set to : \\S+\n","pipe['regex_tokenizer'].setMaxLength(99999) | Info: Set the maximum allowed length for each token | Currently set to : 99999\n","pipe['regex_tokenizer'].setMinLength(0) | Info: Set the minimum allowed length for each token | Currently set to : 0\n",">>> pipe['glove'] has settable params:\n","pipe['glove'].setBatchSize(32) | Info: Batch size. Large values allows faster processing but requires more memory. | Currently set to : 32\n","pipe['glove'].setCaseSensitive(False) | Info: whether to ignore case in tokens for embeddings matching | Currently set to : False\n","pipe['glove'].setDimension(768) | Info: Number of embedding dimensions | Currently set to : 768\n","pipe['glove'].setMaxSentenceLength(128) | Info: Max sentence length to process | Currently set to : 128\n","pipe['glove'].setIsLong(False) | Info: Use Long type instead of Int type for inputs buffer - Some Bert models require Long instead of Int. | Currently set to : False\n","pipe['glove'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n",">>> pipe['classifier_dl'] has settable params:\n","pipe['classifier_dl'].setClasses(['average', 'great', 'poor']) | Info: get the tags used to trained this ClassifierDLModel | Currently set to : ['average', 'great', 'poor']\n","pipe['classifier_dl'].setStorageRef('labse') | Info: unique reference name for identification | Currently set to : labse\n"],"name":"stdout"}]}]} \ No newline at end of file diff --git a/examples/colab/component_examples/named_entity_recognition_(NER)/NER_aspect_airline_ATIS.ipynb b/examples/colab/component_examples/named_entity_recognition_(NER)/NER_aspect_airline_ATIS.ipynb index dcfc4c79..cae6b67f 100644 --- a/examples/colab/component_examples/named_entity_recognition_(NER)/NER_aspect_airline_ATIS.ipynb +++ b/examples/colab/component_examples/named_entity_recognition_(NER)/NER_aspect_airline_ATIS.ipynb @@ -1,576 +1 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "NER_aspect_airline_ATIS.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "display_name": "Python 3", - "name": "python3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "NYQRU3pRO146" - }, - "source": [ - "![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n", - "\n", - "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/NER_aspect_airline_ATIS.ipynb)\n", - "\n", - "\n", - "Named entities are phrases that contain the names of persons, organizations, locations, times and quantities. Example:\n", - "
\n", - "
\n", - "\n", - "#Content\n", - "ATIS dataset provides large number of messages and their associated intents that can be used in training a classifier. Within a chatbot, intent refers to the goal the customer has in mind when typing in a question or comment. While entity refers to the modifier the customer uses to describe their issue, the intent is what they really mean. For example, a user says, ‘I need new shoes.’ The intent behind the message is to browse the footwear on offer. Understanding the intent of the customer is key to implementing a successful chatbot experience for end-user.\n", - "https://www.kaggle.com/hassanamin/atis-airlinetravelinformationsystem\n", - "
\n", - "
\n", - "\n", - "|Tags predicted by this model | \t\n", - "|------|\n", - " | O|\n", - " | I-depart_time.end_time|\n", - " | B-arrive_date.date_relative|\n", - " | I-fromloc.state_name|\n", - " | B-depart_date.date_relative|\n", - " | B-fromloc.state_code|\n", - " | B-meal_description|\n", - " | B-depart_time.time_relative|\n", - " | I-fare_amount|\n", - " | I-fromloc.city_name|\n", - " | B-booking_class|\n", - " | I-arrive_time.end_time|\n", - " | B-return_date.today_relative|\n", - " | B-fromloc.state_name|\n", - " | B-round_trip|\n", - " | B-depart_date.today_relative|\n", - " | I-return_date.day_number|\n", - " | I-depart_time.start_time|\n", - " | B-period_of_day|\n", - " | B-arrive_date.day_number|\n", - " | B-flight_stop|\n", - " | B-depart_date.day_name|\n", - " | I-stoploc.city_name|\n", - " | I-return_date.today_relative|\n", - " | B-class_type|\n", - " | B-stoploc.state_code|\n", - " | B-economy|\n", - " | B-depart_time.end_time|\n", - " | B-return_date.date_relative|\n", - " | I-fromloc.airport_name|\n", - " | B-arrive_date.month_name|\n", - " | I-flight_mod|\n", - " | B-toloc.airport_code|\n", - " | I-depart_time.end_time|\n", - " | B-airline_code|\n", - " | B-flight_mod|\n", - " | B-cost_relative|\n", - " | B-state_name|\n", - " | B-fromloc.city_name|\n", - " | B-depart_time.period_of_day|\n", - " | I-city_name|\n", - " | B-depart_time.period_mod|\n", - " | B-city_name|\n", - " | B-meal|\n", - " | B-return_date.day_number|\n", - " | I-airline_name|\n", - " | I-restriction_code|\n", - " | B-airline_name|\n", - " | B-restriction_code|\n", - " | B-flight|\n", - " | B-transport_type|\n", - " | B-time_relative|\n", - " | B-arrive_time.time_relative|\n", - " | B-fromloc.airport_code|\n", - " | B-time|\n", - " | I-toloc.city_name|\n", - " | B-toloc.state_name|\n", - " | B-meal_code|\n", - " | I-arrive_date.day_number|\n", - " | B-depart_time.start_time|\n", - " | B-month_name|\n", - " | B-fromloc.airport_name|\n", - " | B-flight_number|\n", - " | B-days_code|\n", - " | I-meal_description|\n", - " | B-fare_basis_code|\n", - " | I-cost_relative|\n", - " | I-time|\n", - " | B-return_time.period_of_day|\n", - " | I-depart_time.time|\n", - " | B-depart_date.day_number|\n", - " | I-economy|\n", - " | B-arrive_time.start_time|\n", - " | B-return_date.day_name|\n", - " | B-return_time.period_mod|\n", - " | B-airport_code|\n", - " | B-stoploc.airport_code|\n", - " | B-flight_time|\n", - " | I-transport_type|\n", - " | B-depart_date.month_name|\n", - " | I-toloc.airport_name|\n", - " | B-today_relative|\n", - " | I-arrive_time.period_of_day|\n", - " | B-day_name|\n", - " | B-toloc.city_name|\n", - " | B-connect|\n", - " | I-round_trip|\n", - " | B-depart_time.time|\n", - " | B-airport_name|\n", - " | B-arrive_time.period_of_day|\n", - " | B-stoploc.airport_name|\n", - " | I-class_type|\n", - " | B-aircraft_code|\n", - " | I-return_date.date_relative|\n", - " | B-toloc.country_name|\n", - " | I-flight_number|\n", - " | B-state_code|\n", - " | B-or|\n", - " | I-depart_date.today_relative|\n", - " | B-toloc.airport_name|\n", - " | I-arrive_time.time|\n", - " | I-flight_time|\n", - " | I-state_name|\n", - " | I-airport_name|\n", - " | I-depart_time.period_of_day|\n", - " | B-arrive_time.time|\n", - " | B-depart_date.year|\n", - " | I-flight_stop|\n", - " | I-toloc.state_name|\n", - " | B-arrive_date.day_name|\n", - " | B-compartment|\n", - " | I-depart_date.day_number|\n", - " | I-meal_code|\n", - " | B-arrive_time.end_time|\n", - " | I-today_relative|\n", - " | I-arrive_time.start_time|\n", - " | B-toloc.state_code|\n", - " | B-day_number|\n", - " | I-arrive_time.time_relative|\n", - " | I-fare_basis_code|\n", - " | I-depart_time.time_relative|\n", - " | B-return_date.month_name|\n", - " | B-stoploc.city_name|\n", - " | B-arrive_time.period_mod|\n", - " | B-fare_amount|\n", - " | B-mod|\n", - " | B-arrive_date.today_relative|\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "M2-GiYL6xurJ", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "c254f482-0097-471f-89a4-e73c025d71d1" - }, - "source": [ - "import os\n", - "! apt-get update -qq > /dev/null \n", - "# Install java\n", - "! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n", - "os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n", - "os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n", - "!pip install nlu==1.1.1.rc1 pyspark==2.4.7 > /dev/null\n", - "! wget http://ckl-it.de/wp-content/uploads/2021/01/atis_intents.csv" - ], - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "text": [ - "--2021-02-02 13:11:15-- http://ckl-it.de/wp-content/uploads/2021/01/atis_intents.csv\n", - "Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n", - "Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 391936 (383K) [text/csv]\n", - "Saving to: ‘atis_intents.csv’\n", - "\n", - "atis_intents.csv 100%[===================>] 382.75K --.-KB/s in 0.1s \n", - "\n", - "2021-02-02 13:11:15 (3.87 MB/s) - ‘atis_intents.csv’ saved [391936/391936]\n", - "\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Gph8XOL1Pzpl" - }, - "source": [ - "# NLU makes NER easy. \n", - "\n", - "You just need to load the NER model via ner.load() and predict on some dataset. \n", - "It could be a pandas dataframe with a column named text or just an array of strings." - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 552 - }, - "id": "pmpZSNvGlyZQ", - "outputId": "ff099ddb-e4cf-4480-9d4b-fe8bc4207ff0" - }, - "source": [ - "import nlu \n", - "import pandas as pd\n", - "\n", - "df = pd.read_csv(\"atis_intents.csv\")\n", - "df.columns = [\"flight\",\"text\"]\n", - "ner_df = nlu.load('en.ner.aspect.airline',).predict(df[\"text\"],output_level='chunk')\n", - "ner_df" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "stream", - "text": [ - "nerdl_atis_840b_300d download started this may take some time.\n", - "Approximate size to download 14.5 MB\n", - "[OK!]\n", - "glove_840B_300 download started this may take some time.\n", - "Approximate size to download 2.3 GB\n", - "[OK!]\n" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
entitiesword_embeddingsner_confidenceentities_confidence
origin_index
0pittsburgh[[-0.038548000156879425, 0.5425199866294861, -...[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...fromloc.city_name
0baltimore[[-0.038548000156879425, 0.5425199866294861, -...[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...toloc.city_name
0thursday[[-0.038548000156879425, 0.5425199866294861, -...[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...depart_date.day_name
0morning[[-0.038548000156879425, 0.5425199866294861, -...[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...depart_time.period_of_day
1arrival time[[-0.038548000156879425, 0.5425199866294861, -...[1.0, 1.0, 0.9991999864578247, 0.8240000009536...flight_time
...............
4975san francisco[[-0.13562999665737152, 0.3321700096130371, -0...[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9998000264167...toloc.city_name
4975denver[[-0.13562999665737152, 0.3321700096130371, -0...[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9998000264167...stoploc.city_name
4976delta[[-0.08496099710464478, 0.5019999742507935, 0....[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...airline_name
4976denver[[-0.08496099710464478, 0.5019999742507935, 0....[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...fromloc.city_name
4976san francisco[[-0.08496099710464478, 0.5019999742507935, 0....[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...toloc.city_name
\n", - "

16673 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " entities ... entities_confidence\n", - "origin_index ... \n", - "0 pittsburgh ... fromloc.city_name\n", - "0 baltimore ... toloc.city_name\n", - "0 thursday ... depart_date.day_name\n", - "0 morning ... depart_time.period_of_day\n", - "1 arrival time ... flight_time\n", - "... ... ... ...\n", - "4975 san francisco ... toloc.city_name\n", - "4975 denver ... stoploc.city_name\n", - "4976 delta ... airline_name\n", - "4976 denver ... fromloc.city_name\n", - "4976 san francisco ... toloc.city_name\n", - "\n", - "[16673 rows x 4 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 2 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "STc7iOwtljGo" - }, - "source": [ - "## Lets explore our data which the predicted NER tags and visalize them! \n", - "\n", - "We specify [1:] so we dont see the count for the O-tag wich is the most common, since most words in a sentence are not named entities and thus not part of a chunk" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 919 - }, - "id": "UDSAYjadlfdK", - "outputId": "5778826a-5998-486e-98ad-16b66ccfd4f3" - }, - "source": [ - "ner_df['entities'].value_counts()[0:50].plot.bar(title='Occurence of Named Entities in dataset', figsize=(20,14))" - ], - "execution_count": 3, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 3 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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bd8nCQBJi4EcGY+IiF6y/ZHhx5JOB77RUji9lBNFEREREd12uaT3AFtJei6wGrig5ZgiIiLGZWtgx7aD6JP0KIqIiIjoMElbAMcAhwGi7Kqe7dzkRURED0m6kamTs4uAxwEn2/5Ue1H1SxJFEREREREREdEJ1aTPgQeA39h+oK14+iiJooiIiIgOk/Qi4BRgOaX/pADbXtZqYBEREdFJSRRFREREdJik/wKOAm5MuVlERESMKs2sIyIiIrrt58APkySKiIiIOuREUURERESHSVpJKT27HLh3cN32R1sLKiIiIjprcdsBRERERMRIPgD8EVgKPKrlWCIiIqLjkiiKiIiI6LYdbO/RdhARERHRD+lRFBEREdFtF0k6rO0gIiIioh/SoygiIiKiwyRtBLah9Ce6HxBg28taDSwiIiI6KYmiiIiIiIiIiIgA0qMoIiIiovMkbQ/sSmloDYDtK9qLKCIiIroqiaKIiIiIDpP0BmAVsCPwfeAA4Grg2W3GFREREd2UZtYRERER3bYKWAncZvsQYF/g9nZDioiIiK5KoigiIiKi2+6xfQ+ApCW21wO7tRxTREREdFRKzyIiIiK67ReSHgN8BfiWpD8At7UcU0RERHRUpp5FRERE9ISkZwHbAWts39d2PBEREdE9SRRFRERERERERASQHkUREREREREREVFJoigiIiIiIiIiIoAkiiIiIiIiIiIiopJEUUREREREREREAEkURURERERERERE5f8Ay+0NBKu72r0AAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YO6d6VYi4aJQ" - }, - "source": [ - "## Most occurding `fromloc.city_name` tagged entities" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 386 - }, - "id": "rlcEvP9tOSiy", - "outputId": "64129ead-b568-43ab-b52d-da2b8d96c54f" - }, - "source": [ - "ner_type_to_viz = 'fromloc.city_name'\n", - "ner_df[ner_df.entities_confidence == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring fromloc.city_name labeled entities in the dataset')" - ], - "execution_count": 4, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 4 - }, - { - "output_type": "display_data", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbEAAAFgCAYAAAA1skc7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd7weRfX/358UamiBiBBKABFEpRmagg1RihSRItJEFP2KAlawIlbkpyJYQASBKCpIEQQUEek9CRC6hN4JSIn0cn5/nLN59tm7+9ybwL3JxvN+vZ7Xszu7Ozs7OzNn5syZszIzkiRJkqSNDJvdCUiSJEmSWSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaWi/EJH1I0r2S/itprdmdnsFG0pGSvjlIcQ9ZXkoaJ8kkjRjM+5Tu9zdJuw/FvWY3kj4m6ZIBnvttSb+fxfvMlmtn4V5fk3R0j+M7S/rHa3zP1zROSRdI+sRrFV8l7uMkfW8w4h4K+hViku6S9IKkJSrh10QjNO7VJCDieMOriOLHwGfNbBTw+FA2jLMDM/u0mX13kKKfkZdmds0g3WO2YGabmdnxMHONfNIuJL1b0n3lMDP7gZl9Io736TyZ2Qlm9v7XMh2vJs6hFPAzy2AK01m9z0BHYncCO5Vu8FZggVlI22CwPHDj7E7EUCBp+CDfojEv5+aOQZIkLcbMev6Au4BvAFeXwn4MfB0wYFyELQJMAKYBd8c1w+LYG4ALgSeBR4ETI/yiiONp4L/AjjX3HxZx3Q08EvdYBJg3rimuvx24J/b/G78NIo6PAzcDjwPnAMuX4jfg08BtwBPALwE15MW8wM+AB+L3M2De0vGtgWuBpyI9m0b4aODYuOZx4C8R/jHgkso9DHhDbB8HHAGcHc/4vgj7Xhx/N3Af8MXImweBPUpxLQ78NdJzNfC96v1Kz9WVl6V3vz8wBXgeGAFshQu6J4ALgDdVysqX4/yngWOAJYG/AdOBfwKLxbnj4n4jYn9p4AzgP8BU4JOleIcDX4s8nQ5MApZteEdN7+AC4BPAm4DngJfjmZ8A1gEeBoaX4tkWuK6fuvFt4CS8TE6PfBlfOn5AKc03AR8qHfsYcClwaKThDuDtEX5vvM/dK+/ox3gZfxg4Epi/IV0fK79n4LCI86nIu40qz3AycGKkczKwRun40sApeL2+E9incu3vS/vrA5fF81wHvLt0bAW8DZgOnAv8onxtzTN8MN7jExHn6pVy9iW8nD0ZaZ8PWBB4FniFThuwdDmd1LQRNfm1aqTxP8CtwA6lY5vHu5wO3A98aYDvYEDtDLAp8ALwYqTvulL5/W6UmenAP4AlBpL3NfdYK97z9Mi7P9FpUxYDzoz3/XhsLxPHvo/Xm+cibb8YQPlaF5gYxx4Gftpfmpvu0/g8vQ6WCsz74mW+CW9Q7sN77WUhNgE4HVgIb6D+DewZx/6IC71heGHbsK7Rbrj/x/FGbUVgFHAq8LuGRn8cpYax1KhNjbSPwAXiZZXrzwQWBZaLl7dpQ1q+A1wBvA4YEy/gu6WX9SSwSTznWGDVOHZWFJbFgJHAu+oKes3zHBdxvqOUd8fRLcReinSNxCvYM3QExZ/itwCwGl7Q+gixpncR7/5aYFlgfuCNuHDaJO73lcjbeUrnX4ELrrF4QzwZrzTzAf8CDqx7V3iH5ldx3prxHt4bx74MXA+sAghYA1i8Jv293sEFwCd65PtNwGal/dOAL/ZTN76NV7TN8XrxQ+CK0vHt8UZ0GLBj5N1SpTS8BOwR134Pb2B/iQus9+ONzKg4/1BcyI/G69hfgR8OsAHdBe/QjMA7PA8B85We4UVgu3inX8KF1chI9yTgW8A8eB28A/hA6dpCOIwFHou8GBbv4DFgTBy/HPhpPNs749lqhViUl0eA9SJvdsfL1rylcnZV5O1ovIP66VKduK/mPRXpHEffNmJGfuGC8N54LyMiLY8Cq8XxB4lGGq/Paw/wHcxMOzMjvaWwC/AO0RvxungBcPBA8r4Szzz4gODz8Y63i/dftCmLAx/G24yFgD8Tne5qPRpg+boc2DW2RwHrD7C89LlPYz3s94SOEPsGXkk3xXspI+LFjMML2gvFi47rPgVcENsTgKMIid6r4aw5fh7wmdL+KpHpI6rXU19A/0YI09gfhjf0y5euLwvVk4ADGtJyO7B5af8DwF2x/Wvg0JprlsJ7hov1V9Brnuc4YELl+HF0C7FnK8/7CN7DGR75tErpWO1IrOldxLv/eGn/m8BJlby8n04P6i5g59LxU4AjSvufozMKnfGucCH5MrBQ6dwfAsfF9q3A1gMoq7XvoFopGvJ9f+CE2B4dZWSpfu73beCfpf3VgGd7nH9t8RyRhttKx94a+bFkKewxXKALF4ArlY5tANzZcJ8+z1c5/jgx2opnKAveYURDjQuReyrXfhU4tnRtIRz2p9S5jLBzcAG0HC6wFywd+wPNQuwIonNYCruVTufvLmCX0rFDgCNLdeLVCLEdgYtrytWBsX0P3rYt3E/Z6HoHzFw7MyO9lfL7jdL+Z4C/95f3NXG/E9cIqRR2GdGm1Jy/JvB4XT0aYPm6CDiI0qhxIGkeyH2K38xYJ/4O+Gi8nAmVY0vgUv3uUtjduLQF77ELuErSjZI+PhP3Xbom3hF4b38gLA8cJukJSU/gKgKV0gbecyh4Bu8xDDQtS8f2sriQq7Is8B8ze3yA6a1ybz/HHzOzl0r7RfrH4PlUvr6/uPq7f9fzm9krcbyclw+Xtp+t2a/L26XxPJpeCiuXn6a8rTLQ8+r4PbClpAWBHfCG7MEBXFctO/MV84eSdpN0bansvQWvKwXVvMHM6vJrDN4znlSK6+8R3i+SviTpZklPxrWLVNIx4x3HO70PfyfLA0sX94xrv0Z93Vse2L5y7oZ4J25pvCF8unT+3TVxlOP6YiWuZenUNRh4nZ1ZlgfWq9x7Z+D1cfzD+OjhbkkXStpgJuJ+tWluur5X3ldZGrjfQlIEM96FpAUk/VrS3ZKewoXQor3m4/spX3vio8dbJF0t6YOzkOaeDHiy3szulnQn/gL3rBx+FO/1L4+rZcB7X/fHtQ8BnwSQtCHwT0kXmdnUAdz6gYi3oOjVPVxzrtWE3Qt838xOGMC9BpqWwvhhuQgr7rNSw/1HS1rUzJ6oHHuakoGMpNfTl7pnGgjT8HxaBlftgjcEM0v5/g/gIwYAJCnivH8W01iOd7SkhUqCbEb5oZO3N/QTT9M7qNInT83sfkmX43Nhu+KjgVlG0vLAb4CNgcvN7GVJ1+IdqJnlUVygvdnMZiqvJW2EdyI3Bm40s1ckPV5Jx7Kl84fhZeYBvPzcaWYrD+BW9+I960/WpGF5YDFJC5YE2XI0l+2izn5/APet0l996e/4vcCFZrZJ7cVmVwNbSxoJfBYfUc1KverFzNb5xryv4UFgrCSVBNlydDp/X8S1XeuZ2UOS1gSuoVNeutLWX/kys9uAnaJcbQucLGnxAaR5wHkws+vE9sTnKco9KszsZfxlfl/SQlFov4D3bpG0vaRl4vTHI4GvxP7DuK69iT8Cn5e0gqRRwA9ww5CXas6dFvGW4zsS+KqkN0daFpG0/YCfuG9aviFpTCw5+BbxjLgRwx6SNpY0TNJYSatGb/5vwK8kLSZppKR3xjXXAW+WtKak+XA1wmtCvJNTgW9H72pVYLdXGe1JwBbxjCPxAv88ro54NWm9N+L4oaT5JK2Ol7Uib48GvitpZTmrR0WoUvsOas57GFhG0jyV8Al4hXwrnnevhgXxcj4NQNIe+EhsponR0W+AQyW9LuIbK+kDA7h8IVwYTQNGSPoWsHDlnLdJ2jZGkPvh7/QKfN5puqT9Jc0vabikt0hap+Y+xUj2A3HefHJz92XM7G58cv8gSfNER3bLHmn+DfBpSevF+15Q0haSFhrA8z4MLC5pkYbjdW1EmTOBN0raNerqSEnrSHpTpH1nSYuY2Yu4scIrDfG8Gh4GxkXDPxAa877m3Mvx8rBPPNu2+FxywUJ4h+kJSaOBA2vStmLl/MbyJWkXSWOiDBed+FcGkOb+5MIMZkqImdntZjax4fDn8JHFHcAluM77t3FsHeBKSf/FJ6f3NbM74ti3geNjSLlDTby/xVWZF+ETzs/FverS9wxu2XJpxLe+mZ0G/Aj4k3x4fAOw2Uw8dpnv4ZVxCm5oMDnCMLOr8MngQ3HjggvpjCB3xUeqt+BzVvvFNf/GjTL+iVstvdZrlz6LD+0fwvPwj3gDNUuY2a34JO7P8dHBlsCWZvbCq08qO+HzFQ/gRhUHmtk/49hPcQH6D7zhOAaf3Eaunt450tfrHZT5Fz6afkjSo6Xw0+L806IszTJmdhPwE7zReBgXjJe+iij3x41orohy/E+8x9wf5+Cqx3/jaqPn6KtWPh2fC3ocL6vbmtmL0RH6ID4vcif+zo/Gy1QX0RHZGlc3Tot7fJlOG/NRfI7tP3jDWJ2SKMc1Edfc/CLSNBWfxugXM7sFL+d3RBuwdOV4nzaicnw6blTzEbwsPoS3H/PGKbsCd8U7+DSuanyt+XP8PyZpcn8nDyDvy+e+gI+IPoa/ix3p7rD9DK9bj+Idmb9XojgM2E7S45IOp//ytSlwY7T9hwEfMbNnB5Dm6n0aUbdqNJmbkfQj4PVmtvvsTsuciqTbgU+VBGiSJHMwrXc7lTQjadVQvUnSuriK7rTZna45FUkfxlWA/5rdaUmSZGCkF4a5m4Vw1crSuErrJ7jqKKkg6QLcRH7X0N8X4X/Dzc2r/MDMfjBEyUuSpIFUJyZJkiStJdWJSZIkSWuZK9SJSyyxhI0bN252JyNJkqRVTJo06VEzG9Ci+TmVuUKIjRs3jokTmyz/kyRJkjok9fKc0gpSnZgkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lrnCY0fBuAPOmrF918FbzMaUJEmSJENBjsSSJEmS1pJCLEmSJGktKcSSJEmS1jLoQkzSKpKuLf2ekrSfpNGSzpV0W/wvFudL0uGSpkqaImntwU5jkiRJ0k4GXYiZ2a1mtqaZrQm8DXgGOA04ADjPzFYGzot9gM2AleO3F3DEYKcxSZIkaSdDrU7cGLjdzO4GtgaOj/DjgW1ie2tggjlXAItKWmqI05kkSZK0gKEWYh8B/hjbS5rZg7H9ELBkbI8F7i1dc1+EdSFpL0kTJU2cNm3aYKU3SZIkmYMZMiEmaR5gK+DP1WNmZoDNTHxmdpSZjTez8WPGtPrr2kmSJMksMpQjsc2AyWb2cOw/XKgJ4/+RCL8fWLZ03TIRliRJkiRdDKUQ24mOKhHgDGD32N4dOL0UvltYKa4PPFlSOyZJkiTJDIbE7ZSkBYFNgE+Vgg8GTpK0J3A3sEOEnw1sDkzFLRn3GIo0JkmSJO1jSISYmT0NLF4Jewy3Vqyea8DeQ5GuJEmSpN2kx44kSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktaQQS5IkSVpLCrEkSZKktQyJEJO0qKSTJd0i6WZJG0gaLelcSbfF/2JxriQdLmmqpCmS1h6KNCZJkiTtY6hGYocBfzezVYE1gJuBA4DzzGxl4LzYB9gMWDl+ewFHDFEakyRJkpYx6EJM0iLAO4FjAMzsBTN7AtgaOD5OOx7YJra3BiaYcwWwqKSlBjudSZIkSfsYipHYCsA04FhJ10g6WtKCwJJm9mCc8xCwZGyPBe4tXX9fhCVJkiRJF0MhxEYAawNHmNlawNN0VIcAmJkBNjORStpL0kRJE6dNm/aaJTZJkiRpD0MhxO4D7jOzK2P/ZFyoPVyoCeP/kTh+P7Bs6fplIqwLMzvKzMab2fgxY8YMWuKTJEmSOZdBF2Jm9hBwr6RVImhj4CbgDGD3CNsdOD22zwB2CyvF9YEnS2rHJEmSJJnBiCG6z+eAEyTNA9wB7IEL0JMk7QncDewQ554NbA5MBZ6Jc5MkSZKkD0MixMzsWmB8zaGNa841YO9BT1SSJEnSetJjR5IkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrWVIhJikuyRdL+laSRMjbLSkcyXdFv+LRbgkHS5pqqQpktYeijQmSZIk7WMoR2LvMbM1zWx87B8AnGdmKwPnxT7AZsDK8dsLOGII05gkSZK0iNmpTtwaOD62jwe2KYVPMOcKYFFJS82OBCZJkiRzNkMlxAz4h6RJkvaKsCXN7MHYfghYMrbHAveWrr0vwrqQtJekiZImTps2bbDSnSRJkszBjBii+2xoZvdLeh1wrqRbygfNzCTZzERoZkcBRwGMHz++57XjDjira/+ug7eYmVslSZIkcyhDMhIzs/vj/xHgNGBd4OFCTRj/j8Tp9wPLli5fJsKSJEmSpItBF2KSFpS0ULENvB+4ATgD2D1O2x04PbbPAHYLK8X1gSdLasckSZIkmcFQqBOXBE6TVNzvD2b2d0lXAydJ2hO4G9ghzj8b2ByYCjwD7DEEaUySJElayKALMTO7A1ijJvwxYOOacAP2Hux0JUmSJO0nPXYkSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJaUoglSZIkrSWFWJIkSdJahkyISRou6RpJZ8b+CpKulDRV0omS5onweWN/ahwfN1RpTJIkSdrFUI7E9gVuLu3/CDjUzN4APA7sGeF7Ao9H+KFxXpIkSZL0YUiEmKRlgC2Ao2NfwHuBk+OU44FtYnvr2CeObxznJ0mSJEkXQzUS+xnwFeCV2F8ceMLMXor9+4CxsT0WuBcgjj8Z53chaS9JEyVNnDZt2mCmPUmSJJlDGXQhJumDwCNmNum1jNfMjjKz8WY2fsyYMa9l1EmSJElLGDEE93gHsJWkzYH5gIWBw4BFJY2I0dYywP1x/v3AssB9kkYAiwCPDUE6kyRJkpYx6CMxM/uqmS1jZuOAjwD/MrOdgfOB7eK03YHTY/uM2CeO/8vMbLDTmSRJkrSP2blObH/gC5Km4nNex0T4McDiEf4F4IDZlL4kSZJkDmco1IkzMLMLgAti+w5g3ZpzngO2H8p0JUmSJO0kPXYkSZIkrSWFWJIkSdJahlSdOCcy7oCzZmzfdfAWszElSZIkycySI7EkSZKktfzPj8R6kaO0JEmSOZsciSVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0loGXYhJmk/SVZKuk3SjpIMifAVJV0qaKulESfNE+LyxPzWOjxvsNCZJkiTtZChGYs8D7zWzNYA1gU0lrQ/8CDjUzN4APA7sGefvCTwe4YfGeUmSJEnSh0EXYub8N3ZHxs+A9wInR/jxwDaxvXXsE8c3lqTBTmeSJEnSPoZkTkzScEnXAo8A5wK3A0+Y2Utxyn3A2NgeC9wLEMefBBaviXMvSRMlTZw2bdpgP0KSJEkyBzIkQszMXjazNYFlgHWBVV+DOI8ys/FmNn7MmDGvOo1JkiRJ+xhS60QzewI4H9gAWFTSiDi0DHB/bN8PLAsQxxcBHhvKdCZJkiTtYCisE8dIWjS25wc2AW7Ghdl2cdruwOmxfUbsE8f/ZWY22OlMkiRJ2seI/k951SwFHC9pOC40TzKzMyXdBPxJ0veAa4Bj4vxjgN9Jmgr8B/jIEKQxSZIkaSGDLsTMbAqwVk34Hfj8WDX8OWD7wU5XkiRJ0n7SY0eSJEnSWlKIJUmSJK0lhViSJEnSWlKIJUmSJK0lhViSJEnSWlKIJUmSJK0lhViSJEnSWoZisfNcx7gDzpqxfdfBW8zGlCRJkvxvk0LsNSYFXJIkydCR6sQkSZKkteRIbIgoj9AgR2lJkiSvBSnE5gBSBZkkSTJrpDoxSZIkaS0pxJIkSZLWkkIsSZIkaS0pxJIkSZLWkkIsSZIkaS0pxJIkSZLWkkIsSZIkaS0pxJIkSZLWMuhCTNKyks6XdJOkGyXtG+GjJZ0r6bb4XyzCJelwSVMlTZG09mCnMUmSJGknQzESewn4opmtBqwP7C1pNeAA4DwzWxk4L/YBNgNWjt9ewBFDkMYkSZKkhQy6EDOzB81scmxPB24GxgJbA8fHaccD28T21sAEc64AFpW01GCnM0mSJGkfQzonJmkcsBZwJbCkmT0Yhx4CloztscC9pcvui7BqXHtJmihp4rRp0wYtzUmSJMmcy5AJMUmjgFOA/czsqfIxMzPAZiY+MzvKzMab2fgxY8a8hilNkiRJ2sKQCDFJI3EBdoKZnRrBDxdqwvh/JMLvB5YtXb5MhCVJkiRJF0NhnSjgGOBmM/tp6dAZwO6xvTtweil8t7BSXB94sqR2TJIkSZIZDMX3xN4B7ApcL+naCPsacDBwkqQ9gbuBHeLY2cDmwFTgGWCPIUhjkiRJ0kIGXYiZ2SWAGg5vXHO+AXsPaqKSJEmSuYL02JEkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWtJIZYkSZK0lhRiSZIkSWsZCi/2ySwy7oCzuvbvOniL2ZSSJEmSOZMciSVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0lpSiCVJkiStJYVYkiRJ0loGXYhJ+q2kRyTdUAobLelcSbfF/2IRLkmHS5oqaYqktQc7fUmSJEl7GYqR2HHAppWwA4DzzGxl4LzYB9gMWDl+ewFHDEH6kiRJkpYy6ELMzC4C/lMJ3ho4PraPB7YphU8w5wpgUUlLDXYakyRJknYyu+bEljSzB2P7IWDJ2B4L3Fs6774I64OkvSRNlDRx2rRpg5fSJEmSZI5ltht2mJkBNgvXHWVm481s/JgxYwYhZUmSJMmczuwSYg8XasL4fyTC7weWLZ23TIQlSZIkSR9mlxA7A9g9tncHTi+F7xZWiusDT5bUjkmSJEnSxaB7sZf0R+DdwBKS7gMOBA4GTpK0J3A3sEOcfjawOTAVeAbYY7DTlyRJkrSXQRdiZrZTw6GNa841YO/BTVGSJEkytzDbDTuSJEmSZFbJj2K2lPIHM6sfy+x1LEmSZG4iR2JJkiRJa0khliRJkrSWFGJJkiRJa8k5sf8hcq4sSZK5jRyJJUmSJK0lR2IJ0DxKK4dXjyVJksxuUogls8ysCL4UlkmSvJakEEvmeHIuL0mSJlKIJa0mBVyS/G+TQiyZK0nhliT/G6R1YpIkSdJaciSW/M+RxiVJMveQQixJBsBraYmZJMlrRwqxJJkNDEQo5tcJkqR/UoglSct5rdflpbBM2kQKsSRJBsxrOYLMUWfyWpBCLEmS1jCUo84UpO0ghViSJMlMkMJtzmKOFWKSNgUOA4YDR5vZwbM5SUmSJD3JOcihZ44UYpKGA78ENgHuA66WdIaZ3TR7U5YkSTI05LrFgTFHCjFgXWCqmd0BIOlPwNZACrEkSf7nybm8DjKz2Z2GPkjaDtjUzD4R+7sC65nZZ0vn7AXsFburALeWolgCeLQm6qbwtl4zJ6Qh0z13XjMnpOF/Kd2z61mXN7MxDee1AzOb437Advg8WLG/K/CLmbh+4syEt/WaOSENme6585o5IQ3/S+meE561rb851QHw/cCypf1lIixJkiRJZjCnCrGrgZUlrSBpHuAjwBmzOU1JkiTJHMYcadhhZi9J+ixwDm5i/1szu3EmojhqJsPbes2ckIZM99x5zZyQhv+ldM8Jz9pK5kjDjiRJkiQZCHOqOjFJkiRJ+iWFWJIkSdJaUoi1DEmja8JWmB1paSOSRkkaNbvT8VogaUtJWYeT/2myAswikhaYhWuGSVo4tkdK2kfSyfH7nKSRA4jmr0UcEc9qwF8HM901cfQRmpLWif95JL0lfgN5nlm5/08kvXkmr3mrpGuAG4GbJE2S9JYBXPcOSQvG9i6Sfipp+VlL+Yw455e0yquJI9gRuE3SIZJWrdxjuKSlJS1X/F7NjSSNlfR2Se8sfhF+iKSFozyfJ2mapF1mMu7FJK3+KtKmeDffiv3lJK07K+VkKJGkmrB5+7nmc5IWazj2dkkflbRb8Xut0jonM1cYdkh6B/BtYHnc4lKAASsDN5rZqg3XbQG8GZivCDOz70gaA3wSGEfJgtPMPi7p7cDRwCgzW07SGsCngC8Ae1bji+1PAy/jSwcWxh0brwKMBI6P83YFXjazTzQ9j5mtGGn+CrBFxDEBX33/ZFP+mNlWPdK9ipltXMmX88xsY0n7AscC0+PatYADgIOBLc3s/jj/XcAvgM/F89wVaV4W2N3MLorz1gA2ittcbGbXRfhqVvGLKendZnZBCIyVzeyfkuaP/NgR2CO2jwX+aGZPSlrVzG6RtHZNNhwL7Gdm5xfxAz8ws7fH/juAa83s6WiE14739FdgDWB14LjIh88A3+yR36dGnK+ju2zdI2lL4MfAPGa2gqQ1ge+Y2VZxzdvplLu9cR+iX8bL84zs8ehs9ejQ7BT5YfGcC+Pv6WHglc7tbfW4x/WV+MDLz0Tge2b2WPmApB/heX4TXo6L+LaSdK2ZrSnpQ8AH8XpwkZmtEZ1jmTwAACAASURBVB2mLwLLmdknJa2Ml7czJV0AbBXPOQl4BLgUuBz4u5lNl/SNeA/fM7PJkpYE1on7X2Vmj0T6jojnfK+ZvSka+X8Av6a+nPy15vm78sLMdq3kwe+Az+L1sijDF+Lv7sk45y3AanS/8wk96tFHzOzjpXuMAk4v18dqGcK9FH0EmAz8FjjHzCzStxJwLd3vaJ+Ip7FN6ZEP7WB2r7Z+LX7ALcBmwOuAxYtfHDsdr0TVa47EBcC9wIHA9cAxcewy4EfADsCHi18cuxJvnK8pxXUD8Gfgu8DtwO54JToMbxgBdgZ+gguuKcB1NWm6rr/niePbRBqvB94IvCt+hwEnAlvG7w/AoXXpxivGzcB1wGLA6PiNA26ppOcDwKm4gJ6MNyRXA68HNo84lsUbo1VK6XwjMCm29418+k78rgc+V8q//fGKNT/wc7wx+2Tc5/Y4b2XgvFL8q+AC9e541r9G+Pk1v+lN+R3bU+L+awDX4ALkQmByHP8WsGdsP4Y3SmcBjwOnxO8/wJl443wb8DRwJ97A3hjXTgIWobv8XB//v4v3+qvIg2OAw/GGp8+vdP3iwH545+FvwAvA/j3qyyHAD4G3xu/5+D0HvAg8Fb/p8X8rMG9DXDfE/9G4q7hyuTkR73AV5yxApz4U5fATwEGldzAltjcELsA7a1fidfFuvJM0IfJ1uzh3cjnOmndbLSf70akzdb/JlWccjgvwU4CDgBXjdyBwapxzIF7OHo6y8RBwcj/16DvAr+LYYvHu94j9XmVIEdefgKnAD+Jfs9JGtv032xPwmjwEXNnj2EVRGc/DF0wXv6KyFP+j8NEBRUXrda9qhSlVyiK+kcAVuPpqJC7k3lU6fzKwUimOFUuVsc/z4I3a4aXfjfEchwOHxzl93MkUYdV040KlaLzuiIpyR6Rt78qzHAZ8qHL9BnijcxUwpnx+5f4z8hlYsBS+YOnYgvhI7nJcoH0VV3VfC8xDfYM/HHcK/RdcMOyPj5r+1PDeTsNHT+Pi9w3gtNLxOmE1GRdkXwX+jQvtYaU0/ANYqhTHUvjaxuvwRqLIq/fQ6SBdUVN+iny4mZqGCPhRXVg8/2l4h+DLwOvi2IXAXT3K8OSmsOLZKsf+ho/g6+I6GG8gr8HL+ZhSWSvKXh/hEmleKvJwnVIZKfLsh8BHi+sjT19XimdMKa4rozxMLh0r4hlwOYn3PB14iW5B/likp0+7QEcoXx9lo0jTksC5A6hHh+Ad6quJjnKpjagtQ7G/BvCzyPsj8M7UL/trt+bG3xy52HkWOF/S/8N7Oc8XgWY2mWa1zyHx/4ykpfGCulSEnSlpczM7u+a6e0PlYzHnsy/e+BTD8idCrfAQ3uv5Gd5Dvg64KNRjT+FD+/Ml3YH3rJbHVR9NzzMN70kWTKpJ24KSVrSO9/8VcAFRl+6ReAN4E/AzM3tK0jdx9c3lxT0k/QNYAfiqpLOBFSQV3lMWwNVQx4R6f6Kko4Hfx/GdcRUV8YyFmoPYLuYEXgSexUdh8wF3mtkrkp43sxeKqQNJIyL9h+Kqq3/hKsGrIp4fSbpV/imfLehWB0/EG5ZTY/9iYIYqB5gu6avALsA75QYTI3E12kdxwfZQzC39v7hmWTN7sBTHw8BywNNm9ph8DnSYmZ0v6Wdxzo2SPgoMD/XaPngPHFyAvx4oxwn+SaL9K2GbxbmHWkdd+4XIq6nA6Hiecn34aWwOl7RukW/y+czhceylkgrrIFzt9gxwraTzKvHtY2YHSDoEV8G9LOkZXGgAvBAqYIv7rFS6/ju4wL/EzK6WtCI+8phX0q/jmX8Uc0TDgGEW6sPgMTpz+ofjZfl1kr6P+179xgDKyZ30VStOA040s69WwpH0bkkbmtklsf8OvNwCPBtl9qVQ8T5Cx3VetR59FFhY0ra4AP4m3hk0Sduaq6NfrCtDoZrcDZ9COBp4AzAW7/B9WtIbKu9oq9js1Ua2mrllTuz8mmAzs/fG8eXpzKssgFfY/fDRzcb4vIPh6rTn8cZ1wdh+kY7+eGFJS+A9qvdF+D9wQfYhXN2wOq5OGAV8y8yOrEnvCHOvJPPiqg6AW83s+V7Pg1fsCWa2c0M+bIqvxi8Lxk+Z2Tk90n2++dzKhrg69MeR7vWiIV8TuMPMnoj5nCUi/jquwNVwG8b+xbi65HlJX8DVrKfFsW2A483sUEnX4Wrf70b8R+IqsTuBJ/BK+zl8LuomvJE+ycyersmDRYA/4qqx6+nMCWFmBzWkG0mvx4XV1WZ2cQird5vZhB7X/AJXcf4xgnaMtL0pnu9gvDf9CD7aeHuUv68D78ffwznAd83suXjva+IN2vP4+1sBL6+3l269ED5/dL+ZzRBukg7Ey8i5Nck1M/tOnDeeThkFH23siQv9w/E5tUfi/g9EeusiPD6e5wu4yn6vyrzXJviIdzW8vL0D+JiZXdCQpYXh0ab4iPA2SUvhKs9N8LpVzuspxfPLDVs2jjw9z8xulrQHvctJuRM/H152X8JHbXW8gqszF4n7/Cee5zpJvwK+hs9XfRH4Lz5K26OmHv0B7wA+Xp+t9nFJ/8TL0A/xOvEIrsY/F/dgdHc8x7tK1y4H3FOJ7MI4r2cb2WbmCiHWC0mfxCdDR5vZSlHJjgQ2LwmNefFC/FwR1hDXcHoIkR7X9TEgwXuSJ5jZE3HOYsBOZvarfuK6BJ/AfqHh+LxAYchyS6/nifOvMbO1JP0Qbzj+IOkmM1tN9QYSw4D/Z2bv6RVvw73WpiTgzOyaCB9vZhMr5+4KnIA3rjMafDP7jcLwpHL+jDBJUyyMGErH6ybzC2OGX5vZcw1pXh/v7LwJV20OB/5rZovE8W3pTPRfZGanya0Zn4s074w3eidYxWCi5l7vqgQtiAusbXBDgILpZvYfSZPNrOsdSZqCC8U/V8K3N7M/RxneJzoPiwBYxzDhOuC9wD+jTLwHH5nug9eNl+O84fgc2TOSTsS1AruZ2VtCCF1mZmvGuYsD60deXAF83MwOkfRz6o0rflyXN+ZGMR/GBSF4+Tkt7rEScF90lt6NC7sJwCm9ykkVSUcBb8M1JTVJmNEpXjgC6s5D0ji8I/CCNRsa9RwFNZUhXGtSZ3TyQLlDE+E/qobNjcwVQiwq44HAOyNohtWQpGvxj2xeaWZrxfnX48P1agMw2czWbih0T+LqvAsoCRFJu5jZ72OkUccb8V7Xe/Dh/3Z4T/ttRUUv3b8QKL2eZwLeoJ6BT/oCHVWRuq3bimMTJL0R150vGY3N6vjk8fr4FwI2wVWJz+IVYvEeI0IDti0av1L6e1m9LW1mO1bO/5OZfUQ1a9+CXc3ssNL58wGfx3u776ajjlwYt2hbNc77Ed4b/0fp2sPwuZJyT/4pXECcF//ltBcWrv+O+/0ZGI+PCt9Yp26qPNvr8XJn+HzHb6hvtIGO2kcNFnhxrFDz7RLpWA4f+RUUI7TVmsp2bF9lZuvWpHmimY0PYbZWqMeuw8vE+8zsv3HeKOAfMbIsrrmmVL+KPKtjIzM7TNLuDce/hOeT4llXwLUUjabyUcfH4+X+rPi9FVfnv5vmclLOo2ERx/+Z2RqV+HvW8VLdW53uuvdpM3t/j3q0Iw1W0D2etavjEh2K6/FORp8OTbkzV9eZLkbnbWZumRP7LT6fsEPs74qrS7YFqvMqY/GXOELSWnQX8GIN1a/wBv362H9rxL8Irkq7VD4v9DSwQTQuCzWk7e2hrptiZgdJ+gk+UT5ckix6EVEY5xnA89wev2HVe6rBzBbvlf4Gn/z/NYCZTQm1xrq4+ubHoepYCjfZpmm0Jel04HpJ51ISpPFcL+MWYOAN2QL4/OAelTiKeSvwnnzRcBUYrko8rBT2KXwuEdzoouAp3DCk4ArgtFDjFOrgBcxseOmcv0q62syWlnSjmdW+v2ikp0oaHiORY+Xrzb4ao7Af4Y2l6Ai+L+AGIv+KsJ/jlmR/q7tH6V474PNtFxTXSfoyrlr8KbA0HTXfVFwFWx6hrYt3fMZKOrwUvjCuJiu4VK4KPZHu9/dECKiLgRMkPRLHFygEGICZ/Ved9YZ1816vxy1x6zDgMDM7vuF4V7ikp/EvWtSOesxsYeAVc/X8tng5GIarBqF3OSmn8SV87noH+Zzx/9HpRL4YI86mOo6k3+IjwBvpqLDvizQ21aPL8Lz+J536+nv5R4GrzIu3Dy+X8qIoc88Ao2IUXlB0aIp7HUl9Z7r1zC0jsWtrRjXF+pVD6J5XKeYpFqdjdAA+L3CcmZ0q6VTgmxae8+ULir+Dmwtfiqsju7CG+RZJV5rPL12BC6HH8IJ+Gt4Y/TpO/RRwr5l9sdfzlPZHxX3/Wwq7Ge+F93mp0WCvU+kx97lPhG9b9ywlmirzvjW9wfvxRnQUnseFoHoBOKpuRCNpJ3x+akO8kpfv+wrwFzP7eVPi5BP2W+Pq0aJxvRn4gJndE/vL4erJN5VGwMNx449y5+73+Dzi0bgwfhCfB1lD0lR8vdzNlfvfindeHov9xXEVW88FzjHq2cQ665/G4A0cdKv5tsDL0pcrUbwZ73DtjwvRgun43OfjEW/TyGBLfNQ1jG4V1hn4cojJcf3b8I/UbqAe816S5quqaSWdRbeBT3ciOoYI5Wuux+epHsSXIRQqtqXM7FuSrsQNqL6Ov487Jd2Aq4kby0kTcuOk6hrOV/ClAoc2XHOTma3WcKxp0fEX6upfP2n7YbnOhNZmMXzurI/KuXTelFJnevVoP/5mZhvRcuaWkdizarYaOgCfV7keFxRH4g3StmZ2SkN8b7TSp1/M7Cb5Qto7JD0cI6ouIaKGBdK4peOieA97Mt5YHI2rC/fCe3zgE7ZH9/c8csvH3+FGKEh6FJ+PuJFm6zaAR6OXXDTq2zWcB96YNWFN6g65dVzV6u1RMxsr6SEze31TpDFCXh7Pu5fw/FiC7t7yqvjaqa3qBK3FImN87d8NFWH+ReASSbfjjeAKwGfkcw/HS/oc/k66FghHXgzHF7p+Hrc4+3Acf7gqwILHcMFRMB1YptJTrqZ9dZot8J63kqUaXmaKdXl1I9hLe4x0GkcGQNkI6nh1G0H9WdIDca/X46owzOxcSZPpzHvta2aPRnSX4RqNMivj9aTp/mWV3bC4/gFgq4qa74gQ+t/CR/mfBr4fAuyjeB25v59y0jRfvU7lXv+Ke70VqBViwOWqWbRfxFfang83QJlMbyvoWszsq5W6Ap5Pa1kYezRQtId11titZm4Zia2Bq8wWiaDHcU8RU6IQn2UVAwe5AcSH6auP/o6kk/CX/KcI3hFvUHfFG44XCSGCm7ruhqvrLo7jL5fimyEo457zWd+5pNHAMmY2ZQDPcxnwdavxPKG+1m1FGraSmzAfBbw94rsT2Lmfgl+L3Djmh1S8E0Q+/RYfdQlX33wCH3lugY9iy5UPM7tIDR4hgJut2/ruoLjf62qSNUO4SjoOX/Lwt3I+4FaohdHLreVRQoyq1rN+jC8q+XAY3qD/pXKfbfAG7/R4jq1xFfAtcfxoKpjZ3XIT6KoF3vV4Q97HUs3C20hNui4GNrZm459v1YXjnZo+RlDm3ltGUrKkjedrYnHccu/3+Ii6rLI/0jpzUvPgc8bg7+NFuYVlQaHiOwVXzf4Sr5OGq7z3to7HlXJcO5rZNyUdW5O2cjlpUrGtBWxvZrfHeSsCJ+Nz0yOpqGHNvYm8Cx+xPkTHwtmsYmAU8S0az/EOGqyga3PVrz0YV9NX64rho+V7Gq77Jn2tsY82s0bPM21hbhFiK0QPbIbVUCnsWFwVcxFe+P4e+vO/40YHVaHzE7mO/zN0LOkuxefJnsN7l1+tChF83qCs7utPJbcPfd3uXGZmn+/nea6zvhPP14V6q2rdVjzThZLeZmaTYuQxzNytzwfN7Mwe+VprYIJPnB+I90q3xHvCw8zsW6XrZli9RVht5QsBeyuwek1Ho9b6rq5hqJxzYE3wSPz9LW8VF0hxzfm4Kq88d9SfscqSdAsv4tyeHQPrbeq/Ld0WnI3Wjvh7+Zd1rAsXxQ0ZtqW38c8XS7ecD19LdTMuLPsYQZnZW9XXpVLh1qqOJePYeNyopRBiT+HLKk6NetPLRdnCnmSbHvvj8PnRdxCjTdyN2F39xdVEk4oNL9vH0b1UZQ+6VbQFZmbvjU7QF+i7rKNPWYgOwQ3Wj3q5Ic1NdeUiXPheRfc7r1PP1nam28rcIsTqGrtJZva22B6JLw7dEW8gzgXWN7M+DmDl8yL/bFK5NAkR3AvAZYVqoKEXWGD48H8tSZ/AF80eWKpMjc8j6TRcFfG7OLQLbun4oR73I1Q+u5nZDbH/EeDzZrZej2tOwVWU5bmBNXBB8Laigaukr8kfZW3li2v/hvd8C9Xs/+GdiJWot767BzjEupcnfNHMvtHjWWpNwfERL5HmVXABXU7j62k2VtnQzHqpXsv3v8TMNpQ0nXo/iAurxiS6Lqx0rG7u9Boa1jk1Cc9o1M4B5jefvy3mCEfgZe0UXDiuBpyN16VLzKzOAKEc71fM7JBKWNEZm4R75Lg1wt+Ij0A/hRsxFfOuT+ILzbuWYFTibIrrHHqUEzXPV/8S77T2WcPZIw2Xm9kGDcfKyzuG4x2Mk8wXii+Gq1jL9aVR+FbrSim8sQMbx+s61U/i88aP1BxrDa2eE5MvcHwzsEjlJS1Md6F4MV6+4V4htgFOlfRWM7u+HKe514FXJC3S0FO5I4bmhRC5FddJrwh8TdILuGogoqtXDUi6Xm4JuAOdxaTzytfC9Hqej+OeFE6N55nheUL1a5qejjRsB5wsny/YCFeBvr8ubSVWMrMPl/YPkpszPyOfm7lN0mdxE/1RPdQz4L3akfQduUBfjxDz4COdG6hfH3WNmX2tCDSzxyVtjhsYFPOTX6FbmI43sx3lRiOYr3ESncbynvjNQ8dKFNy0vNyhuF6dpRi7StqbvnMqv8LfaZfqNO7baOFGg2cOueFCnRXkXTVxjCiElWqMfxpYAFgGrxNfA+aXG2x8Bu+cbUf4lDRfvLsk4ZVFPRY74wL/kMq9TsbXYo0shE6k8d/R2fwt8Bkzuzji3xD4raSNaTZHb4prs17lhM589SF0POAcja/XPBR3g9VFUycNuEZu7ftXulX5p9K99u0l4G4zuy86sPtG3l+LzytejmuOmmj0nqIeyzNwu4ANcP+O4J2SScAKkr5jZr+jpbRaiOE9pQ8Ci9JtjDCdmDyWVIzA3o2bLh+NC44pwMfklmxVHfZ/qTEhN/cIXRYi4IYi37aw/CpQTFCref1Yndudx/p7HnzubJ+GOH9BzZqmSPsdMfr6C95Yv9/Mnm2Ip6DJwGRfvOHbB/ey8R7cG8dRVr+cAHpUPjr+LLswNy7o8nyPz7UMlzSvdRarz4+bIBecgKuOP4hP+O8OrKIaF0jV0Yn6qrG2VbOLprH4SO0D+PvcGVfLnYBbDnapluL6w3Fv6peXwoqR54qqN5M+hHoryN9K+ik+cgA3Ky8+MdNk/FNVkQ7H1899J+L5BB0jqLPx+rKJNbtUOhZvDIv5ufuBM2J016sz1uSibK1CgAGY2SWSXsLnF6vm6PQT1/h+ysmPcSOZjXDhcTG+lnKU6pcg7EVzJ21+vFyXO4aGOwi+sCJgbov/fSPsCjN7T3TKf0BvauuKGpZnmNnJccoI4E1m9nCcvySuhVgPn2pprRCbW9SJG5QbhcqxP+KF8W9llYAavgllPsFeuxDTelh8RZzFfIbha3puaTq3SbUT8fR6novxings8AfrnncqFp7OmDeS9CydSgPem3+SECTWY35J/pmQqpud3fHR3e0159eqZ8zsDf3laTQwy5V71JL2wRuOosPwIdw4ZQFcyBcq2z2AMwrVlTqqzXI+3IqrAGtdIKnjiqmsxvo4PsoujFXAOxSFscoN5p9TKdTAI/GG8CUzK+a1qnm0O96pWgVfZvEn/P00mklLutTM3lET14K437334WXuXOD78V9r/BP75bL/Ej5/ZTR8tki9XSrVLXa+E29Mt6K7wZ2OO969LIRc2UXZHXjnaydcIPyRzoLg53AHA7Xm6DVxXYyPhvejdzk5KdJUCL+P4mV9TM1tDFjCZsFMvUbAbIR3cvY3X/ZyLW5U9Lx8zeJMfwNNDcszLKY+VFkCEFqIG80988x4d21kbhFihwDfw0cJf8ctvD5vZr/veaFf2+ebT/2cPx6v0OPoHslegjvjLFuW3W5me1eu/4r1cLsTaoG6Y0/iXsFPl+v89wC2x3uCx5qbOl9E3zVNn8TnMGqxAVgnquJmR9KFuArkarzBuMjMrlc/FlCqsUaL8NpvbOF5vIGF77totC+PBmTTeFZwb+HnlNJ7hZmtL+kc3BfgA7gaa11KLpCsYwpOjID2rqixflUSgnXGKleZ2bqR75+JPL8q8nwn3BNIVbVUXDsat479CC68V1az+6SDqLGCLMdXeV+Nxj+l/cIFmOHagGvki9gbLdziunHAwtaxpL0Mf9+XmqtYV8JHmuv26ozFtfPgqu9X8HLT1BgZPn85Y855oPRTTvqs7ZJ0E/BBCyfapfAV47maOmnLxDPMcIuFLze4r0nA4IJ7D1zYvhe3Gh5pZpv3eJ47qc+npy3mp+O8wqN+MWf9K9zDS+GObDt8KcqXgTNtFtzIzSnMLUKs14f5mrwq7IKvQSp7QbjZzN7cVFDMP0p5K/WqonPw4XqhrhqG99bXovtjmcvihefCumcJFdpRuCl4UeA+jJvEL447Ed1PboCyDd5IPxXPdSje6I3E1zQtgjfEU9XwZd9+GqzFcUutGY0d7v7qsWiA1sHVtJ/CP9UxunRtlwWUeliQySfm3wtcUOrN3xD3XMfCFF7udurqcmVtSPcH8UZkWXxd2QhcXdJnwtw6C3j79EblxjCb4Sqepc1sM/nC9w3M7Bj5nEYfp8+RX6vS7b3BrPsDiOviHZ2t8XK3pbrdJ52Nq9DeTL0VYFd8lXT3NP6Rm9hvT2eEuw1e1t5PjYVbpHFnYEVzI53lgNeb2VXqZ7EzNR+KNXdwuwWuii+v2/uUmdV6NZEbxFTN0eczs5GqtyA1XHPwMzM7vSHO3+OLtq+I/fXwEd1brMawCu9E1HbS5FMPf6A7z3c2s01UMoCKuLoETIS9C6+vf7eGpRFx3uKl3fnw9zgaH732cpAsXPCWLa5PKdqrNjO3CLEbQ/gcjX+I7u/qmJ03eVWodXZqZns2FRRz7wCX1KmKJJ2J9+QL79LL43NUz+FqxY9Smjcxs317PM8VwDus43B1BN4ob4j78jsDX3d1Lv6NocnyBYyXm1mtmrRU0WfGJ925eMNfnmt4N52v226Ez99dG+kbTYNTYzVYkJmr/YqRU1klNQU3c96dbs/3x5lZ8VmTfpH0G3OT+lovFdZx6voz6tVY6+H5/dEoTyNwA4dGQSrpVmswnw6twYfwxvtE/JtmRX4VBiNfwT/t8fNZUfVEvh9Ep8G6CP/wZOGx41ZgjVLnYH78He7VEOVHqPlyspmtE9d3OfktRriS/kxD2Zd0Cz7imRrnroRbhq6Pz+WOo9uAo888sKSlzOxBNUwN4GvqTrDmL7vfjKt1i47ccviofQyuxSjmsxfGO65rW4PTcPX2GlS3/m+Kme1fGRFfarPwaRR11Od9lmdUzluSjj/PquFHa2m7YUfBX6NSPAv8XwzXi4WsTV4Var/XA2B9F7z+LBrhbwEHhrDsUhXhcyk3S7oKLyTr4pPL78TnsJ6OUdYfgItDQGxfafD/ZGYfwOdHRuEqRPAe6Ghzy8nX4b3sr1kYZpQFlGq8QpjZ6tVGNyrPZxpz1FnKzL5b2v+epB1x3f4kfA7nbOs4Q77WzAojg8Ia7JP4/ESTBRk0fGPLzH4q/4x9UTH3sPB8X4fqVbXPyo0prq9rCEsUqrbqGrPiy8evRLpfkjRazQY7AJep2XvD7fhI7tGaYy/KrSd3o2PYM1LN3mC+ZCXXQgDyb8gN6+dZHyAa4NifFzfI2NxqTPzx+Zq15eb7xXudJ44XI5bC+8tyctXr3cAbzGx7SVuXy36cN70QYMEd+PzU2bjvyzqjmD7m6MCD1qwSv1tSry9ObFrZ3wQfjW6Cj0aLd1AYVl1OeCAJYfZ8jNbXBh6TtAsdQbUTrm7EzL6sbg/8R5mv/6uOiI+V9Gcz+15TglXvtHiEpD1x7VOTirk/w4/WMlcIMev7Yb6n6XyYb6J8jVDVq0Lh7PQiup2dNhaU2N8DVxWNpNs9UZMXhCNxteV31f2xzPkKARbP8HgIKHBrtGujARcuCH8gnxM60vqaw36wOXfqidFb4xqx4B9yi8aTYn87XG26EV4h3wnsI+kVvIL3cmo8Sc0fzPwcbpL+PN4IXBjPOxpXP95VJEjSaOv2CbcYvs5uCm4ZSMRbCLG3lc5tdEFkzesCL8AbmnNjf31cndXLVH59/P31sXw1s19LGiv/2kCX5xL6uk9aAVdPNVnm/VXSZtaZq1wNf1ePyedoqnOWhXB/Eu84nBv7RaPd9PHNZ+NdFu91DJ2yXzjLnhLP+RZcjboInaUm1Q/FgtfLsyO9Fnl8NS5YLqk2xpo1c3SAmyStUu5AFdQIv6OBo1WZy5N/kWAsvvSgyWn4x3FV46F05vBmOL0299xTdXO3M90j4oPj2RqFGA1Oi/HR7q/lc5aT8HbtYjO7Ns79Oq6ar87LtV6IzS3qxKrX6Qvxxv5FNbiewRvO2m8+VVRPRUH5sZnd2ktV1JC2Yt7krbh6bBRuUbYX/qnywiHt8rhqqfhcxlL4aA58HuiBAdxrM6vMKUj6tJkdqXqfdIvHyK8pvmIe4pXSdcVcifDPZmyEm1ffgzeEy1Pv1LjWgsy6LUYLC8Cy6hM6AqmYz7yHvt5OLjWzYlnDOnSMbwpV0whcAPwr9t+Dj/Y+GNcsSo0aC5/HOxxvnG/AVU3bhdBsyrdelq+Nnkt6xNfkqHkLfD3cFrha994ICwAAIABJREFUbAI+D3OtauYs8XnSOt4bv9H0/fjmZfjoaEe8Q3Ac8eVk8++T9XKWfQE+wu3zodiGegk+t/YiLtTKnc4L6Zijr6kwRzezRs84ajAY6pXXcV31s0Vfx+f2xtDgNLwhnurC9hmHInwS3gYU2phFcZP8Wf5QpVw1/Em8bo61+HKDBjAv11bmFiFW53X6ZTP7xCDc61j8o5A3xX5TQS1GIF8rhZUb5Ztwc/ELI3wjYC8L6yn1dfLZcyV/XHMZ3rj8K/a/ArzH3CCh1iedNXwMsp/73IHPdVyC9/iuMv/czTC8wSw+Olh2alxrvh3xvRVvgMv+KHcHnrIawxN1PEr08XYSx+uMb36H+9R7MM5ZCm+APhD7l1Gjxgo12AhcSIhuq8rab7QV6iDVWL6qt+eSJsuzP9BgmSdpG1xgLAR8ONS0G1IzZ2lmf6y5fjHcQvABenhCV+fLyeCurm6O8Bus4vmmCGsSvr2QLx7/Pv7liSIvDHjMZtIcXfUGQ12NecN1FxKfLbJuQ6MDrcFpuKTjcWvE8vTAT6zG+KY0Il6OzteaZ4yI+xHMTa7gPodrR0YB1+B18+JSeW+cl+uVF21grlAn0ux1uq6heRpf4Pkize5/Gq3y6KsquovOIulOZB2hMR4vqMV6mS3xgvrTUFuuH+H7WWdCvHCI22XdBlwkaSWrWaMVbIV7IfgyrpZZlVCrWo91ab1Q/TzEG8zsleq5EXZE/Krx3CppuTqhhI/cvmDd65qOwhvmugZnhPp6Oykzzcy6FoRKGlNU6OBhvBEpmK8YyVWum4Kv5TqxJt9rv9EW1/SxfMWt9Hp5LhlfTg8dy7PP495gCsu8+fDyUIx4F8FHUJ+VfzfvM9TMWZae6QLqR7I7qftzNKMkjYp3Vni0L7zeFNwo6Qi6nWXfFCNvk3QM9ZadtZaL+MjxDVaZM5R0WoxU/gKcK+lxwkelfBH+t+l0+oqRziPmH5ItRzWQXvsC5paX5bCX8Lr1UWqchuMdk+r0QJNBTjGam0THaAl85NofTd8aHBdpPAsXbJeXO0rWMC83gPvN8cwtQuzlcuMuX9NRqGqqDc2Cdb3HCn/CRxiFy6WdcUuy99F3MngG0QNe2cyOxU1wF8JHh2tbxwPEt/GCBj6h/h/8PawmqRhtbYO77qlr6H6rmvmOeLZHJW2F67on4Wqv8jxG1RUTvVQXap6H+HQ0XEXH4JxIy47UL01YHTdWuVFu+FJ1ULpgIcAi7AL5/N9kSeuY2dWVKOu8nZQXdNcZ39wZ6Sz3RP9ZuuZ3ciOUM+kWMFvGuSfJ5/5OxP3e3UNzY/fdyKuy5esv5AYmjZ5LrMGgyCquqtR34fikyv4S1MxZWsdj+SLmTqU/AUwoRrJyF2LfpvI5Gkkn4wL1FFxAlA0QPoYLzf3i/EtxVdaLwDT8PRUdjX9H/h2Dj4xvoa+3k6mRR11Yxzfot+Xq/kXwNaFEfJ+n4swbOEQ1BkPVuGto+mzR6XSchlfr5jBJi1nHAnQ0De1rjO6H43nfy/CkjlpXcKFiXRh/75sAR0l6xEqW1FY/L9d65hYh9mXg/FBzgfdKiknV2oZG0u/MbNdyYCmszipvp9gufyeqfO2BeE96FbxnNA9uxLAE/gHIgheAJXuNtujRWzezd6l7vuMsSctW0jUP7stxO7mdxcLUu2KaVvcsJZrc4nR1DPCG7Fw6X2quo9cnH6r+KHfB82A9YGdJd+OCr+warFhDh/nC1HLFrjO+eQj3a1eoYao90Rdw662vU1JjmdmKuKHNIdEQfhNfdzic5sZujPW1fF0Ib/wmUeM2KK6vGhRtgY86q9/kuj6Of76pEYy6sCzeAXl75EVB00h2P7zz1CVM1dckf4YBgrmF7E+o+ZJzNOonSfoqzLDsLIRMk+Xig7iQPx8v/4WbqPLHUwt/p6PwTuCTVrO+TP6NuMJg6A/4Orbv1OVXhb1xTcCq8o+63okL2bPMrKkT+xP8m2J/xsvpdrhatBZzA7TlJc1THSn3Q60rOLnhzEbAu/B26F7cCrrnvJz1+OxLW5hbhNileIO6Ma5LPwcfMUBzQ9OlS5fPexSWbHVWecXopelDhE/hC0UnA5jZA9FwTQCuki9AhVjrhDf8TaOtXk4+q/MdZ9Iw31Fh8VDj7Gvu2fpCSdURTpXnzOw5Sch90N0iaRXgmXLHwHytzkvWw/uH9fUfV16nUvVHWTg1bnKe3LiINjbXsWbjmyYVyhepUWPF/ZbHOxw74j39r8ShpsbuGPW1fL3XKm7L1G1ZCX0tz5bBy0ufL4njZW6eukZQnTnLwhfgHpVzDqJ+JDuazrKOMk0m+XWqPE+cC/+n5ar5ou6tX4q/yXLxCLq98P84rq/6JCxUhiviHdj/h5efcn1ay8y+TklQhwAuz/tROlZWJ5+NO8stjJk+jC+d6OM0PJ53gnwOrrBy3dbql1iUuQO4VFLtJ3Ma+D/8I67lbw1+DP9i/UW4EdLVFvO2NFtNzzXMLUJsAi5EitFT8WXX7enb0LyIj47mk/RUKY4X8TmAwvvFfnQ+hT4M9xeHma1QlwC5CyKTVFTYBeP878s96Bf+1fYwd/HzTprnRmqdfAYX0Hu+o+nTDkWhflBu1fYAHUOKJu5T/TyE6joGavCOYj7P2LhOJVQwdeuaCtVMl4EEzaqogl7rtJqoVWPJPciPxDs021u3O6K7zex9Kn2jLa65LuL6PB3L11Fx7AIq81Fy34hfsGbXP03m/xOoaQRpmLOMa4bjgnPGHG4xkpXPX10gqfgczYfoeL6oM8mHZlUe+GLhM4CVJF1KWHbGsaOirH4zziksF6v+SY+X95aWtWbvMsVSkfKcogHPSXrOzE6IZ/8F3fN5VQq17Sp4Z+t0vKzuGs+7NrBHdBL6fPjSzG6UNI0oq2qeAy64PX7D6L1ko/NQbjK/hiqu4JiFZTZzC3OLdWKdD7SH6P4MxPx0m4iPieNvpNNAmvVvAXiemW1cDcO9ta+MV/Af4iOJP5jZzxviOQU3P67z6t7r/ovSme9YB1eXXW7u+qZ2Dsv8o31lV0w/x0c5B1nFAKLHfWe4xYn4+3wlOp6lj3eUuL7RQanc+OZL9DVv/xn1BhIvxFxTl+NdM1s/4r4Z/xZZn3VaPZ7vNHxkV6ixCn5pNWuM4pp7Ij9OxC32CqHe+DFP9bCsVLPl2S7UeEKh3lFtv0Y80eFatya8utC7MJaqddsUasArreGbdJK2x0d8y+IjmfVwc/xGrxQaoG/AgSA3Nz8DN4bYFHjCenjKKV13EbBFqVOyED6P/f/bO/NouaoqD38/JgMog6IiYivEXiAiLIMIAmFQEReIyKACRgbRFlBRFGwnaFAUIXFAXCIgBDHSShxAUJAWJcyQhFFaaFdrFLOaVulFEgFBYPcf+9zUrVvn3Hr1XuXdqnrnWysrr27VrXtqOvucPfz2u/HYbrEgvT485x/kseiojF0vYx7D2L5Aj730Rp1R2YndIWlHa9dAewhf3aRWVQvwL2FH8WRwkdxlZo/Kq/Bn4G6Oh4GNwhenXPD4YjObI9eRWx6uebKZ/UfNmGO7rWPD+GNacIXyxiNKxzvqWjv8IsQ0lpFY2cdQK1vt9+HQxrgraS4+4T83vObDSaujgO9UyjI3D+OLCvD41jfxdPzyav5COhMkZtHKWIwV0UJN8k0NlxFpJpkyYIEt8RXwB3AX4hL8c3mR4i1VoD6zMpV5trlFlFCslf491r5hBTcp0mrEeu9DBglXXjBUJ5nXkm2If+fm4L+jHYJruUOTknSG5ksVT/IhjLnc56vYbc3GOw5chr//p6pSLJ/ghUTi2Lhr973htQr3CJyPLwpjyTyz6i4ij/vFfud1dWLdeqRNOYZ6J1aa7NekpYFm+CrofvM2A6lV1YYkiifDBFQUaV6ET67H48H8TXBXXMFy4Hwz+3ofXk+tFlxY8UVrtML5Cy1RSyPXkPxffDd2Ax4PqW1PLg+M/xuVbDX89T+Cx/+epmVUlpFQW5crqmxLXD9uZRfuyvWLNh934/GNZ8LfZ9NZQH6ymcViR8VzRdOwQ+ymeExHO5ixEibqb+AG6FLS9VZvx11oN5rZsfJ41GwzO1AJ/T38e7dNaae3Oq6Q8U5KfcPw+rrD8Jjl7yvPs1lxTAkdSdyl2/F8FgqZE687qUlZ2nWejst+XVI6dhVuoD9tXTQp5bGmdXFPxxIqST7qbMb6aTx+9zCR+HX5M0+8pk/jn2M5jv19fPeb6qoQ/a5apZtA5Trl7/w0fLf6lJl9PHFKUfKxvbX3SFuE9zScX3ns26vHRpFhN2LRyb4gTPptxaXy+pV78ELa1IRfCLGeDCw1T4gojn2o7CJUOvunGEMqOeGfcbfjVrTHr7r9wFazdLzjx3hm3ofxJJe21g5y9fFCMmpv3BWSLEYNhm8H68xWaytRUEt9oTphhJdk75FnY95Gu2LH7niSwXF4pmQ1MH8pPoGcjscx/4z/gHeiR+Tamh2xm+K1afzqDrvhxuTN+GTyfUsUxI5hjLcAJ1p75tkcfMHSoYSC71w6+obhNW8dKuyxhULlMTfHnm8873c4/0p8174n7s14HF90bVtacJVFn+8idCkPFJJvx+BxxJQrr3DH9tTnq8vYZ5SvZR7HvpdEVwVJv6Dzu/oai/SB63LdqKu3dP+/EumRBhwc+cw73NqjyFC7E20MvbBIZwe+VoniSWCFPC14FrCrXIniefLEhaVq1+AranZejWc9Fskg7wJeVDOuufgu5yv4CvJIgntNNQkSwMvVXqO1UiXCzPaXd0J+GHfRbYBnLSGvLdsZ/2Fui6f239jlvXuQeLZaW5aWmR0ZrhFVLQjn7GmuDlDuqfV9/AdZGL6PVa7zKnxFXU6Q+KykD4f3bwXuzpkBfMLMrql5LdE07BKn4DJf14XXdJekzcPO6WozWyHpM+Fap5lrTy7B1REuxY3Po9FnLqH6zMpY5tnhuIvx/eF+aCmh3GGl+jrcrboJXjeZ6qhMjSsvVa/X7TWVXXnFuZ/FdzNvxiXbHpG7UU8MD0llLqa0AetceUWH8sfk3RweJvz25O7m6kLx4m6vKbhDq7G7ucBtlbnkgvB3MpknhbyWrKAw2OsnHl6M64yw2yt6pF2Fu7BfLK9DLFgPf/9GnqHeiY2V2Kqqcv/KpAVz+aSN8QzHhWZ2Q9jBzKNdV66M4f2aahsRVu4r2ieslMEpHYu2jwmPiUriBINWdEIuilL3x+uhzpYXvC7EV9bRQH3kWhfgbtoiW63gvXgD0LbECVzqq9qT60Hc9bg5nbp8N5nZrOASOZaWQsoNuPbl40RQq83OXnjN22eA79StOuWp1asTj92gdDsYwup+F1yYdTbuutxB0nrWyg4bE6pvT/IsPHtvOr4AWeaXt2htkzr7hp2Gf8+fTaKjcjgv6srDMzQ7+pDhi93qRLEM33lujafcF668g/Dd1lFd3ocZuAEakyZl+CxSrrxoM1Z8Et8dN2I/w8WMbzSzgzqvMDbUap0Cnkx0ZzieTOapea5yEkthsD9b7MTHOJ5tgaKJbDmdfgXwKwvF16PMUO/ExkpiVVW+f0Hl0PFW0hQz17y7xWp0xiTdLG/78D38i3kI7WnPVZ4IO7zfypUSltJaudUlSKRUIsCNyw6lH/oZeLLK2fhOcRfgUEmfwOuCFpjZBaT5Y/i3Fi0tSEh3iv6JOlULluO7raQuH65qshyvcQGf4L8t6XvEG5ouCY/bG1c9uE+VNyRCKg27CKJH28GUztsHXxD8VFKhMr5xMCRR7cQEde1JLqcVa1xanKC0rNJ2tOrrCuM/A28uWST0xNjI4kXIRb1e4Q69AfcQnIobmXI8cwWe2XuQmW0YJuxTJX0J3x3UEnayu9HSpHwz8EZJb0ycItqTfp4Ox7CWMMEPgwtzmrnc1L241+FOMzsy7EC7dnvvNm5Kc4mkY/AF2HSlk3lSbEXn4m1R7Rmd47lbruu4l3WWJ0wJpoQRGweplhRFl9QO9wk+8Z4V/hn+BT605hofxoPRx+GZTXvgcj4HkGgfY66WnSrehvof+t2SirqUmfgqezda7pAOrEe9xTCBFaoF4JllnzezJbhRT7G1tZdI/EreJv5M4g1N50q6BtgM+KQ8WScaJyy9lm4ZmVV1h5/jn8sPJZ2LfyfOCLulIqsyqp1IfSuNuvYkm1pEEUKJeF54fKxZ5NtoZaXGSLnypuOuqdXwueENuJF/wkIDzMAVasW0CmWcDlfeGHgtrbKKIu52d+KxSVde2eVLaF4p6XN4Y9FnJD0lr6v6c3h9/eQS3GjXLdJSxBZvRX3rmDFX/3iJelf/GAmyESvRZVVVuGKqmVCF+2QJrR5m3a6zOq6ofgJeRF3ElObiK1Nw/3pVpeBHxFUiilTeuh/6ItztczO+4tu1W0xRPeotmqsWLKK1uxmLagHESyQW4TpxsR3pUbgL5Xdm9liYkI+MPK76elKxG/BV8Vb4b2IN/LN8K542nYrr1O2KUxRFvp+hVeRbSHKlFCFSskqXBaM6F69JLOKXqRT6YgcRK0J+Ox7bOwF375UXBVerVLgb3OuF1+AReWx5Nr5DMdy41yLpO7jRvAs3zEt9iOmFk9INUotU/l3wWNFsvGRjURjb+fgC4G+0lHz6QnjPl1G/SEuRWrxFUb3e4u/pXf1jJJgSMbGxIg+ob0h9S4poJhS+Uq+TQqpe61YLxbnjHGubSkTpeMpn/3wz66aVWL3GNfhEeAIlvcU6t+p4ULpN/DTcoBxDZ8p+T61qahYfR4X7HyAygReGXvG2KlcBHwTmm2euHgQcZWYpd2uRHXsgvgMp6vuOxcsY1sDTyNsUIfB4TjSeJy8UPxI3QrfjBq3c/qf0cF98hDE8Tam9DL77utZKgrGlMe+NG4X/Do/fLIz5OuB9ZvbV0vNOsy6lG+GxvwG2ssoEJE9AOpuW2voNeLLQn2qeK5nKX3rMy4D1UjG3JpA0D/h6ZfH2ATM7rOacG4HXV3dc6ixUB3r3pgwj2YhFUI04sIJCgaRbgQNw98l9eGA8GrBPXOMcvFvsfNpXTkVN1Wl41tXVeL3a8WY2rzIJVttBxK7T0V6kTN1KTa1Ek3KvroUV19KEUWepxOxiePikWY4tGp6O/056ayxZm4Yt6cbEBF5VYvgnvAbxlfIar6pyyaywK0+N42paSujF2DekfvdyUeRY2Sitju+6v4a7pwR8ytLNGmNJCHfgO8xD6FSR+VH43hX94B6wcfShq1xvPnCctbfHQS5tdQntySXvMrM9a56rmsq/RTj/4NjjrUYxZDLQGOpba869GO//Ft1xqffC96EnuxPj1IkDXxlcFGfSaoHxLeAtNQH7GNNwA1h2zRUuwzeZ2ccl7Y8nMRyA18XMo74dRIwxabIlGI/eYs9E3JrvgNqU/bpWNSmSadiBWPsW8DKIqBKDueZgh3ZiF6Jxry6ktBO3wXdh++Bp9/uG3dkWwEJJxY6skK9aG184rS3vdVVWnVmHuPp/8Z3cjtbCaVt526Cuqeo1bIT3Hbud9vf7+eatjAoukvQR6qmm8n8Zd8d3KOvTnszTFBPROYzqLYb46spCdUldC9VHhWzESsiztT6F/8iL1GnhsjPnhdtzcPfWTNy/XiiF7xXuT0khFdc4I7jjfmbpavric9kHd1WVG/v1NAlO0J1wWnCxfoyW3mKqxf2qINVosK6xZIpi8VGO3XyrdH9qAv+HdbZVmRfb4aql6l8Xh0gqoUeeb1bYfad20/uF1/Apay9H+AJujIu6u0K+6nJc8XxToDzG5fj3/nSLqP9H4lfg781EjNgpieMny6XeikzIQ/AFRxIze4xS/aH1WGA82XSLRXc5t5AGWye8bsLtm+lsLHs+rYSZkSW7EyNIOt3MPpm471I8vbhI1T0UrzG7Bk9N3gafMKJSSMGVsA2wuOrSKT3mi/hu43E8g2sD4MrgxjwPOHssk2B4ro+b2ZlqtURvw7oIDjeJvKhzd2tP2V+AN1fsWTy59LwdsRtJDyQm8JgSw/54wkxKoSTZsyoE7jtq7CxSTyTp/WZ2biLekbyOEvJVxTFJB1pEVUSeWDTbKsk4qfhVuC+mM3rWeCfq4Fo+Gy++NjwR6UNm9uB4nm/UkPQ6/Lv3bDP7J3md2PuBna2HOtVRIu/ESkja0szuB+arsxFh4UuPZhSZWSHaugAv7E1xNR4/Kdq+rLw8QZXDzD4R4mLLzNNnH6WV+bgLcIS8UHIsCu1Fdt8iauSxygyQ4Yum7OOulDGp7xcokYZtrQy3VPuW/ehUDXl12J3VKZSkSCZ9VDGzQmZq8x6vE22cWLr/Jnkhe1WxY0e8j121iP3XuCZmW/wqcA7uXtwW3/l9C9+h7Vb32pRQpcH1Cg+vLFzm0C5HNZX5Ku71+QmsLJ3ZFa83jTWWHXmyEWvno7jixZdon7yLH9jr6UwH/ypedxN1+VRdS2Z2InCipMvNrC4lfxM83lKuRbuYHibBcL0rwp//ibuMXkbrc0+5hMqGrzFs/Cn7MVJp2EUxc3QCrywOqsWkKXdn3Wsazw6l1+scDVysTvmqgrnhX6Gi/194FmrKTX0RkfhVSKR5ysxM0n54pt0FkmrVOgKpGsA7raQyYWb/1+09nWqY2YNqL+soF6qXC9+nhOHPRqyEmf1L+HNvOivpj5LXjq2Jr9rLGUV/pccEijoDFtxHu1ORy8FrRMbrT5+H70DupXth8BXh/8YVAILRqrq3xiOeXMRyYsob0DmB3wdYZbcMpR0zsJo6FUpWxW8qeh1J081spZSXvGv3WbirKdY4sSCq2JH6bkk6pWZshc7ou4GZchWaNWseX5BSpenbe6pE77/qsSHjQUk74d/NNYFb8UXnYYMcGliVZCMWJ1ZJvwQvNI4ykWBthIPos1wOXt811gaYV1DjerQuyu6TQFI8uYalSitvxD6/WvHWQMrd2W9S17lQXle1EF9oHYMrxpwNzIgYr4KUYkcUM1sQvoNFacXt1uoN90789/EeM3tIXgg9O/Y8FaKqNDWvdcwE78U6JHr/9fJcA8jR+Gf8YrysYC18AfHv8vT7ti2adVcNGXpyYkcExTtFdxwLx/seP1JL0mcxPkmvwGvOtuxyat1zvoFEDVDksUU84wA8FlIY0EPwFfRkZih2oBrx5Jpz1sF3W/ea2W/lyhuvsnrl+7GMZSta7s5fTsDdOa7rSFoLNy674+7iaXgMryy23OYaVUt895X4jrOb+O47cMN0XXiumbhq/w/C/SkDV/d65kYOm3nbngm9p/IuBx9hFfb+awpJO5vZTaXbx+FhkBfhRq2n3mmjQDZiEdRDJb2kfc3sCkmHV++D8bnkJH0Dn5AOxoPlf8MzwLpKK9U85zw8hfw+SinkllAUCecsMrPXdDs22cjTiXcBfgD8Ev/xftEi2YWjTIjvzQz/NsBT4O+h1X+rDWupj0zDlUb2whdIt+AZr9ECZnmW6J6FcZLLkf0iuCxrDVyTqNL7bxRQulD9NjM7JnHaSJONWATFZZAewHXx6jIBe7lGstNwMDgLcBfR3+mDXI4SKeRdzvkN3hX7d+H2Znh92ysmMpaJIml7PA6wAS7Suz5whpnd1uS4JhtJT+FF76fjn8uYxF/lZSLLge+GQ4cCG5hZVHi2vOMNt1cD7jZvBpk0cInnWuWZr2rvpdZBzPsw6MhT63fCd5hfKd21HrB/6v2eCuSYWJxeFRWQa9idQKccVEod4ALiyuTFfTNxl8904E5J14eg/XhJpZDXcTxwnaTf4Ub2pXhNStM8Yy6rUxZPnogKwrCyEa4xuCtwnLxn3C1mdlL9ab0Jz+ICwD+nvRXLz8Lfq1Xchw9TH5/sueRjHOxbc1+hQDJsrIXHadegPYlsOR5Dn7LknVifCCvSb1IxSma2OPH428xsh9h94f7V8TjDHngw9/EJxsR+gxvEsdaXFeeVNfPut96knlYJwX1ymJn9Otw+GNeWTL6fo4qkV+A1WTPxlfofzaxbjdZ4hGcPpCTKa2Y/Dsdn48X7ZQN3j3URiQ676Y6Sj354OUYZSS8tuYVXwzNRe2rMOmpkI9YnuiUWRB6f7DQs6VpgXVqyVjeOJVje5XpVkd3iet3asexE5+5yInJDE0YuvPsD3A02EzgM167sqp4+SoQd8v14+cX1eFJFVd28Y6Lrt7s8ZeC6nPMAkZKPPmf5ovr2O0OHXJP1aHyhvBB3J55lZmPJCB1JshGbIKGOBby55V/oNErRFFdJv4ocNjN7vaSv4IKrT+DNNa/H3USPR85ZZSihmTcI9SjBfXsZPhHvP9nvzSAg13LsqPnrNtGlFjQFpZX+CuIuv3Kt3HjHHu0a0E/Upf3OMKIgHybvIj8Dbxm1eCrvYLMRmyByhYeyhl7bGzqRFFd5x+Ij8Fjbxmb2rPE+1zivn9TMawK1WlgUvACvb3oCYKr9kIMhPwd4oZltLVe1fyueLr9KJ7qJGrheSj4mMMba9jvDiKT78Iawl+Au4QWaIhqJKXJixwQxs80AJK1Np8rHN2tOTbo6JH0Qd5NthxdZX0h9W5dVRZ1mXhNMxeSNOs7HXXLnApjZPWEXJrmaw9vwie4fkvq6EDGzibT4gfq2L/2iW/udYeRcfE64G7g+7KqndEwsG7H+EVP5+DahN1aVlKsj3D0Nb5Wx2My6tbtflUR7PllDih39jpeMAOuY2e1q19F7Cl/0LGGwJ7rtJ6Gur1v7naHDzL5Ga44B+IO8x92UJbsT+4R6UPkI9w28q0Mt5Y42zGzBZI8l04mkq/Ci5flmNkPSQcBRZtYhEi1pjYYXRG0o0fZlFV6vo/3OMCJXR/kClQ4EZnZBw0NrjLwT6x9VdfsdqFeBH3hXRzZWA88H8GatW0paipdPzIK4qxrv7jwojKVrwIRQ9/Y7w8hFxDsQZCOWmTDb0VK3h5C2XCQjRH6cA+vqKDLHIsH7CWdrSDYkAAAE5klEQVSlZfpHUFJ5o6R18aLjFdDVVT0o9CwoMA66td8ZRqIdCJoeVJNkI9Y/evpRmtnnwp8/lHQlA+TqKFKf+xC8z6xCgovsQEIdXyk2tlPJVX2qpC8BVzU0zCiTFN/s1n5nGOmpA8FUIBuxPtHrj3JEXR2ZyeVyfAJbTHs7k4F3VU8Ste13hpSP4l2dp0u6idCBoNkhNUs2Ys0xiq6OzOSyqZl1eAAkrTOorupJ5h24h2SOmT0ib79zYsNjmhBB0Wc3XHFFwANm9o+Gh9UoOTuxIeRt2F8t6XS8x9UlxbGmx5YZDiSdh7dQubfmMSORlZdpMYhScE2SjVhDhDjYUtzVMQN3Ad0+lSvvM70hV55/OS1R5/XxXddHY4/vpxpGphkGWQquKbIRawitok7DmalDRAOxEIF9NPJws5oGqJnhYNCk4AaBbMQymUxmSJA0HzjOzAZFCq5xcmJHJjMiSIq6EQvM7MuTNZZMf5F0Be4qfg4DJAU3CGQjlsmMDrmub3SZ0/QABpXsTsxkMpkhQdJmwP+Y2d/D7bXxVjxLGh1Yg2QjlsmMGJKmAUfR2eYnJ3YMOZIW4YosT4bbawE3mdn2zY6sOYa9ej2TyXTyHbwP3F7AAmBTYEWjI8r0izUKAwYQ/l6rwfE0TjZimczo8XIzOwl41My+jWsHZiWY0eAvklYmcUjaD/hrg+NpnJzYkcmMHoUM0SOStgYeAl7Q4Hgy/eNo4LuSvh5u/wl4d4PjaZxsxDKZ0eM8SRsCJ+Fisc8GTm52SJk+8YyZ7Ria6GJmfwvJHlOWnNiRyWQyQ4KkO8xsRuXYYjPbrqkxNU3eiWUyI0Iudh5dJG2JZ5uuL+mA0l3r0d69e8qRjVgmMzoUxc5bANvjrkSAfRm8zs6Z3tgCeAuwAf55FqwA3tfIiAaE7E7MZEYMSdcD+4SGq0h6DvBTM9u12ZFlJoqk15nZLU2PY5DIKfaZzOjxQuDJ0u0nw7HM8LO/pPUkrSnpWkl/kTSr6UE1STZimczocTFwu6RTJJ0C3AZc1OiIMv3iTWa2HHctLsH7yQ11t+qJkmNimcyIYWafl3QVMDMcOtLM7mxyTJm+sWb4fx9gvpktk9TkeBonG7FMZgQxszuAO5oeR6bvXCHpfrwT/DGSng/8veExNUpO7MhkMpkhQtJzgWVm9rSkdYHnmNlDTY+rKXJMLJPJZIYESesAxwLnhEObAK9pbkTNk41YJpPJDA9z8WzTncLtpcBpzQ2nebIRy2QymeFhupmdSRB5NrPHgCmd2ZGNWCaTyQwPT4ZuzgYgaTrwRLNDapacnZjJZDLDwynA1cBLJH0X2Bk4oskBNU3OTsxkMpkhQtLzgB1xN+KtZpabYmYymUxm8JE0D1gA3GBm9zc9nkEg78QymUxmSJC0B67EMhOYDtwJXG9mZzU6sAbJRiyTyWSGCEmr46129gCOBh43sy2bHVVzZHdiJpPJDAmSrgXWBW4BbgC2N7M/NzuqZskp9plMJjM83IMXO28NbANsHVLupyzZnZjJZDJDRmh0egRwArCxmT2r2RE1R3YnZjKZzJAg6YN4Usd2eD+xC3G34pQlG7FMJpMZHqYBXwYWm9lTTQ9mEMjuxEwmk8kMLTmxI5PJZDJDSzZimUwmkxlashHLZDKZzNCSjVgmk8lkhpb/B4i3UEk6z0/gAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6R2-0v5Z4hMJ" - }, - "source": [ - "## Most occurding `flight_time` tagged entities" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "ks6NDXg7RXG3", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 368 - }, - "outputId": "dbf2e7ee-84fa-4d7d-abee-c5a11babfc5d" - }, - "source": [ - "ner_type_to_viz = 'flight_time'\n", - "ner_df[ner_df.entities_confidence == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring ORG labeled entities in the dataset')" - ], - "execution_count": 5, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 5 - }, - { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [], - "needs_background": "light" - } - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "67MNeUed5W0y" - }, - "source": [ - "" - ], - "execution_count": 5, - "outputs": [] - } - ] -} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NER_aspect_airline_ATIS.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"NYQRU3pRO146"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/NER_aspect_airline_ATIS.ipynb)\n","\n","\n","Named entities are phrases that contain the names of persons, organizations, locations, times and quantities. Example:\n","
\n","
\n","\n","#Content\n","ATIS dataset provides large number of messages and their associated intents that can be used in training a classifier. Within a chatbot, intent refers to the goal the customer has in mind when typing in a question or comment. While entity refers to the modifier the customer uses to describe their issue, the intent is what they really mean. For example, a user says, ‘I need new shoes.’ The intent behind the message is to browse the footwear on offer. Understanding the intent of the customer is key to implementing a successful chatbot experience for end-user.\n","https://www.kaggle.com/hassanamin/atis-airlinetravelinformationsystem\n","
\n","
\n","\n","|Tags predicted by this model | \t\n","|------|\n"," | O|\n"," | I-depart_time.end_time|\n"," | B-arrive_date.date_relative|\n"," | I-fromloc.state_name|\n"," | B-depart_date.date_relative|\n"," | B-fromloc.state_code|\n"," | B-meal_description|\n"," | B-depart_time.time_relative|\n"," | I-fare_amount|\n"," | I-fromloc.city_name|\n"," | B-booking_class|\n"," | I-arrive_time.end_time|\n"," | B-return_date.today_relative|\n"," | B-fromloc.state_name|\n"," | B-round_trip|\n"," | B-depart_date.today_relative|\n"," | I-return_date.day_number|\n"," | I-depart_time.start_time|\n"," | B-period_of_day|\n"," | B-arrive_date.day_number|\n"," | B-flight_stop|\n"," | B-depart_date.day_name|\n"," | I-stoploc.city_name|\n"," | I-return_date.today_relative|\n"," | B-class_type|\n"," | B-stoploc.state_code|\n"," | B-economy|\n"," | B-depart_time.end_time|\n"," | B-return_date.date_relative|\n"," | I-fromloc.airport_name|\n"," | B-arrive_date.month_name|\n"," | I-flight_mod|\n"," | B-toloc.airport_code|\n"," | I-depart_time.end_time|\n"," | B-airline_code|\n"," | B-flight_mod|\n"," | B-cost_relative|\n"," | B-state_name|\n"," | B-fromloc.city_name|\n"," | B-depart_time.period_of_day|\n"," | I-city_name|\n"," | B-depart_time.period_mod|\n"," | B-city_name|\n"," | B-meal|\n"," | B-return_date.day_number|\n"," | I-airline_name|\n"," | I-restriction_code|\n"," | B-airline_name|\n"," | B-restriction_code|\n"," | B-flight|\n"," | B-transport_type|\n"," | B-time_relative|\n"," | B-arrive_time.time_relative|\n"," | B-fromloc.airport_code|\n"," | B-time|\n"," | I-toloc.city_name|\n"," | B-toloc.state_name|\n"," | B-meal_code|\n"," | I-arrive_date.day_number|\n"," | B-depart_time.start_time|\n"," | B-month_name|\n"," | B-fromloc.airport_name|\n"," | B-flight_number|\n"," | B-days_code|\n"," | I-meal_description|\n"," | B-fare_basis_code|\n"," | I-cost_relative|\n"," | I-time|\n"," | B-return_time.period_of_day|\n"," | I-depart_time.time|\n"," | B-depart_date.day_number|\n"," | I-economy|\n"," | B-arrive_time.start_time|\n"," | B-return_date.day_name|\n"," | B-return_time.period_mod|\n"," | B-airport_code|\n"," | B-stoploc.airport_code|\n"," | B-flight_time|\n"," | I-transport_type|\n"," | B-depart_date.month_name|\n"," | I-toloc.airport_name|\n"," | B-today_relative|\n"," | I-arrive_time.period_of_day|\n"," | B-day_name|\n"," | B-toloc.city_name|\n"," | B-connect|\n"," | I-round_trip|\n"," | B-depart_time.time|\n"," | B-airport_name|\n"," | B-arrive_time.period_of_day|\n"," | B-stoploc.airport_name|\n"," | I-class_type|\n"," | B-aircraft_code|\n"," | I-return_date.date_relative|\n"," | B-toloc.country_name|\n"," | I-flight_number|\n"," | B-state_code|\n"," | B-or|\n"," | I-depart_date.today_relative|\n"," | B-toloc.airport_name|\n"," | I-arrive_time.time|\n"," | I-flight_time|\n"," | I-state_name|\n"," | I-airport_name|\n"," | I-depart_time.period_of_day|\n"," | B-arrive_time.time|\n"," | B-depart_date.year|\n"," | I-flight_stop|\n"," | I-toloc.state_name|\n"," | B-arrive_date.day_name|\n"," | B-compartment|\n"," | I-depart_date.day_number|\n"," | I-meal_code|\n"," | B-arrive_time.end_time|\n"," | I-today_relative|\n"," | I-arrive_time.start_time|\n"," | B-toloc.state_code|\n"," | B-day_number|\n"," | I-arrive_time.time_relative|\n"," | I-fare_basis_code|\n"," | I-depart_time.time_relative|\n"," | B-return_date.month_name|\n"," | B-stoploc.city_name|\n"," | B-arrive_time.period_mod|\n"," | B-fare_amount|\n"," | B-mod|\n"," | B-arrive_date.today_relative|\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n","\n"]},{"cell_type":"code","metadata":{"id":"M2-GiYL6xurJ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614376587174,"user_tz":-60,"elapsed":68019,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"047d7d04-a754-4a32-ccdc-92efa7dae102"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null\n","! wget http://ckl-it.de/wp-content/uploads/2021/01/atis_intents.csv"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple\n","Collecting nlu_test==1.1.3rc2\n","\u001b[?25l Downloading https://test-files.pythonhosted.org/packages/5c/84/241410ba610c9281afc8e1cffaa352f5ca83fe6e2574f1cfcdf3334dc81f/nlu_test-1.1.3rc2-py3-none-any.whl (158kB)\n","\u001b[K |████████████████████████████████| 163kB 4.6MB/s \n","\u001b[?25hCollecting spark-nlp<2.8,>=2.7.1\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/8d/a5/a5130215b43f3bd0e98bd16c471d36dafeab8855ca17789d4927337fa7dc/spark_nlp-2.7.4-py2.py3-none-any.whl (139kB)\n","\u001b[K |████████████████████████████████| 143kB 5.2MB/s \n","\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.19.5)\n","Requirement already satisfied: pyarrow>=0.16.0 in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (3.0.0)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.1.5)\n","Collecting dataclasses\n"," Downloading https://files.pythonhosted.org/packages/26/2f/1095cdc2868052dd1e64520f7c0d5c8c550ad297e944e641dbf1ffbb9a5d/dataclasses-0.6-py3-none-any.whl\n","Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2.8.1)\n","Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2018.9)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->nlu_test==1.1.3rc2) (1.15.0)\n","Installing collected packages: spark-nlp, dataclasses, nlu-test\n","Successfully installed dataclasses-0.6 nlu-test-1.1.3rc2 spark-nlp-2.7.4\n","Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 58kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 18.6MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=9c99372c9e98f2f158460e074286800e94eadb7de413c968d281cede0811628f\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n","--2021-02-26 21:56:25-- http://ckl-it.de/wp-content/uploads/2021/01/atis_intents.csv\n","Resolving ckl-it.de (ckl-it.de)... 217.160.0.108, 2001:8d8:100f:f000::209\n","Connecting to ckl-it.de (ckl-it.de)|217.160.0.108|:80... connected.\n","HTTP request sent, awaiting response... 200 OK\n","Length: 391936 (383K) [text/csv]\n","Saving to: ‘atis_intents.csv’\n","\n","atis_intents.csv 100%[===================>] 382.75K 693KB/s in 0.6s \n","\n","2021-02-26 21:56:26 (693 KB/s) - ‘atis_intents.csv’ saved [391936/391936]\n","\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Gph8XOL1Pzpl"},"source":["# NLU makes NER easy. \n","\n","You just need to load the NER model via ner.load() and predict on some dataset. \n","It could be a pandas dataframe with a column named text or just an array of strings."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":736},"id":"pmpZSNvGlyZQ","executionInfo":{"status":"ok","timestamp":1614377034668,"user_tz":-60,"elapsed":515492,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"19c3fb2b-6be4-4fc3-8aab-e836ef632fb5"},"source":["import nlu \n","import pandas as pd\n","\n","df = pd.read_csv(\"atis_intents.csv\")\n","df.columns = [\"flight\",\"text\"]\n","ner_df = nlu.load('en.ner.aspect.airline',).predict(df[\"text\"],output_level='chunk')\n","ner_df"],"execution_count":null,"outputs":[{"output_type":"stream","text":["nerdl_atis_840b_300d download started this may take some time.\n","Approximate size to download 14.5 MB\n","[OK!]\n","glove_840B_300 download started this may take some time.\n","Approximate size to download 2.3 GB\n","[OK!]\n","\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
ner_confidenceword_embeddingsentitiesentities_class
origin_index
0[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.038548000156879425, 0.5425199866294861, -...pittsburghfromloc.city_name
0[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.038548000156879425, 0.5425199866294861, -...baltimoretoloc.city_name
0[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.038548000156879425, 0.5425199866294861, -...thursdaydepart_date.day_name
0[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.038548000156879425, 0.5425199866294861, -...morningdepart_time.period_of_day
1[1.0, 1.0, 0.9991999864578247, 0.8240000009536...[[-0.038548000156879425, 0.5425199866294861, -...arrival timeflight_time
...............
4975[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9998000264167...[[-0.13562999665737152, 0.3321700096130371, -0...san franciscotoloc.city_name
4975[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9998000264167...[[-0.13562999665737152, 0.3321700096130371, -0...denverstoploc.city_name
4976[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.08496099710464478, 0.5019999742507935, 0....deltaairline_name
4976[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.08496099710464478, 0.5019999742507935, 0....denverfromloc.city_name
4976[1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ...[[-0.08496099710464478, 0.5019999742507935, 0....san franciscotoloc.city_name
\n","

16673 rows × 4 columns

\n","
"],"text/plain":[" ner_confidence ... entities_class\n","origin_index ... \n","0 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... fromloc.city_name\n","0 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... toloc.city_name\n","0 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... depart_date.day_name\n","0 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... depart_time.period_of_day\n","1 [1.0, 1.0, 0.9991999864578247, 0.8240000009536... ... flight_time\n","... ... ... ...\n","4975 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9998000264167... ... toloc.city_name\n","4975 [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9998000264167... ... stoploc.city_name\n","4976 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... airline_name\n","4976 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... fromloc.city_name\n","4976 [1.0, 0.9998999834060669, 1.0, 1.0, 1.0, 1.0, ... ... toloc.city_name\n","\n","[16673 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"markdown","metadata":{"id":"STc7iOwtljGo"},"source":["## Lets explore our data which the predicted NER tags and visalize them! \n","\n","We specify [1:] so we dont see the count for the O-tag wich is the most common, since most words in a sentence are not named entities and thus not part of a chunk"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":938},"id":"UDSAYjadlfdK","executionInfo":{"status":"ok","timestamp":1614377035646,"user_tz":-60,"elapsed":516465,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"66af0ab4-45f1-4041-b0ff-e79f94745bfb"},"source":["ner_df['entities'].value_counts()[0:50].plot.bar(title='Occurence of Named Entities in dataset', figsize=(20,14))"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":3},{"output_type":"display_data","data":{"image/png":"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Ab7WUji9lBNFEREREd12taT3AVtKOgRYDVzUckwRERHjshWwU9tB9El6FEVERER0mKTNgDcChwKi7Kqe7dzkRURED0m6iamTs4uAxwMn2j69vaj6JYmiiIiIiIiIiOiEatLnwIPAb2w/2FY8fZREUURERESHSXoxcBKwjNJ/UoBtL201sIiIiOikJIoiIiIiOkzSfwFHAjel3CwiIiJGlWbWEREREd32c+AHSRJFREREHXKiKCIiIqLDJK2glJ5dDdw3uG771NaCioiIiM5a3HYAERERETGSDwF/BJYAj2k5loiIiOi4JIoiIiIium1H23u2HURERET0Q3oURURERHTbJZIObTuIiIiI6If0KIqIiIjoMEkbgK0p/YkeAATY9tJWA4uIiIhOSqIoIiIiIiIiIiKA9CiKiIiI6DxJ2wO7URpaA2D7mvYiioiIiK5KoigiIiKiwyS9CVgF7AR8D9gfuB54bptxRURERDelmXVEREREt60CVgC32T4YeDpwR7shRURERFclURQRERHRbffavhdA0ha21wO7txxTREREdFRKzyIiIiK67ReStgMuAC6X9AfgtpZjioiIiI7K1LOIiIiInpD0HGBbYI3t+9uOJyIiIroniaKIiIiIiIiIiADSoygiIiIiIiIiIipJFEVEREREREREBJBEUUREREREREREVJIoioiIiIiIiIgIIImiiIiIiIiIiIio/B9dlA0EyRKvYgAAAABJRU5ErkJggg==\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"YO6d6VYi4aJQ"},"source":["## Most occurding `fromloc.city_name` tagged entities"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":385},"id":"rlcEvP9tOSiy","executionInfo":{"status":"ok","timestamp":1614377131170,"user_tz":-60,"elapsed":1690,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"3b87033d-7691-4e83-ab77-16c771f178c4"},"source":["ner_type_to_viz = 'fromloc.city_name'\n","ner_df[ner_df.entities_class == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring fromloc.city_name labeled entities in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":6},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"markdown","metadata":{"id":"6R2-0v5Z4hMJ"},"source":["## Most occurding `flight_time` tagged entities"]},{"cell_type":"code","metadata":{"id":"ks6NDXg7RXG3","colab":{"base_uri":"https://localhost:8080/","height":367},"executionInfo":{"status":"ok","timestamp":1614377131171,"user_tz":-60,"elapsed":778,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"30e830d7-154c-4d63-c921-8468e4be4c1f"},"source":["ner_type_to_viz = 'flight_time'\n","ner_df[ner_df.entities_class == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring ORG labeled entities in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":7},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"67MNeUed5W0y"},"source":[""],"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_CONLL_2003_5class_example.ipynb b/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_CONLL_2003_5class_example.ipynb index a0556d8b..096288bb 100644 --- a/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_CONLL_2003_5class_example.ipynb +++ b/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_CONLL_2003_5class_example.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_ner_CONLL_2003_5class_example.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"NYQRU3pRO146"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_CONLL_2003_5class_example.ipynb)\n","\n","\n","Named entities are phrases that contain the names of persons, organizations, locations, times and quantities. Example:\n","
\n","
\n","[ORG **U.N.** ] official [PER **Ekeus** ] heads for [LOC **Baghdad** ] . \n","
\n","\n","https://www.aclweb.org/anthology/W03-0419.pdf \n","CoNLL-2003 is a NER dataset that available in English and German. NLU provides pretrained languages for both of these languages.\n","\n","It features **5 classes** of tags, **LOC (location)** , **ORG(Organisation)**, **PER(Persons)** and the forth which describes all the named entities which do not belong to any of the thre previously mentioned tags **(MISC)**. \n","The fifth class **(O)** is used for tokens which belong to no named entity.\n","\n","\n","\n","\n","\n","|Tag | \tDescription |\n","|------|--------------|\n","|PER | A person like **Jim** or **Joe** |\n","|ORG | An organisation like **Microsoft** or **PETA**|\n","|LOC | A location like **Germany**|\n","|MISC | Anything else like **Playstation** |\n","|O| Everything that is not an entity. | \n","\n","\n","The shared task of [CoNLL-2003 concerns](https://www.clips.uantwerpen.be/conll2003/) language-independent named entity recognition. We will concentrate on four types of named entities: persons, locations, organizations and names of miscellaneous entities that do not belong to the previous three groups. The participants of the shared task will be offered training and test data for two languages. They will use the data for developing a named-entity recognition system that includes a machine learning component. For each language, additional information (lists of names and non-annotated data) will be supplied as well. The challenge for the participants is to find ways of incorporating this information in their system.\n","\n","\n","\n","\n","\n","\n","\n","\n","\n"]},{"cell_type":"code","metadata":{"id":"M2-GiYL6xurJ"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Gph8XOL1Pzpl"},"source":["# NLU makes NER easy. \n","\n","You just need to load the NER model via ner.load() and predict on some dataset. \n","It could be a pandas dataframe with a column named text or just an array of strings."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":442},"id":"pmpZSNvGlyZQ","executionInfo":{"status":"ok","timestamp":1605842814212,"user_tz":-60,"elapsed":15191,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"0e995509-0682-4aa9-c704-adbde9954c94"},"source":["import nlu \n","\n","example_text = [\"A person like Jim or Joe\", \n"," \"An organisation like Microsoft or PETA\",\n"," \"A location like Germany\",\n"," \"Anything else like Playstation\", \n"," \"Person consisting of multiple tokens like Angela Merkel or Donald Trump\",\n"," \"Organisations consisting of multiple tokens like JP Morgan\",\n"," \"Locations consiting of multiple tokens like Los Angeles\", \n"," \"Anything else made up of multiple tokens like Super Nintendo\",]\n","\n","nlu.load('ner').predict(example_text)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
entities_confidenceembeddingsentities
origin_index
0PERSON[[-0.2708599865436554, 0.04400600120425224, -0...Jim
0PERSON[[-0.2708599865436554, 0.04400600120425224, -0...Joe
1ORG[[-0.4214000105857849, -0.18796999752521515, 0...Microsoft
1ORG[[-0.4214000105857849, -0.18796999752521515, 0...PETA
2GPE[[-0.2708599865436554, 0.04400600120425224, -0...Germany
3PRODUCT[[-0.029784999787807465, 0.08645900338888168, ...Playstation
4PERSON[[0.3870899975299835, 0.3262900114059448, 0.64...Angela Merkel
4PERSON[[0.3870899975299835, 0.3262900114059448, 0.64...Donald Trump
5ORG[[-0.19327999651432037, 0.6523399949073792, -1...JP Morgan
6GPE[[0.06345599889755249, -0.042142000049352646, ...Los Angeles
7PRODUCT[[-0.029784999787807465, 0.08645900338888168, ...Super Nintendo
\n","
"],"text/plain":[" entities_confidence ... entities\n","origin_index ... \n","0 PERSON ... Jim\n","0 PERSON ... Joe\n","1 ORG ... Microsoft\n","1 ORG ... PETA\n","2 GPE ... Germany\n","3 PRODUCT ... Playstation\n","4 PERSON ... Angela Merkel\n","4 PERSON ... Donald Trump\n","5 ORG ... JP Morgan\n","6 GPE ... Los Angeles\n","7 PRODUCT ... Super Nintendo\n","\n","[11 rows x 3 columns]"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qgGdEUgkMika","executionInfo":{"status":"ok","timestamp":1605842820717,"user_tz":-60,"elapsed":21676,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"6df9b401-de99-476d-c6b4-ea9cff2fa2d0"},"source":["text = [\"Barclays misled shareholders and the public about one of the biggest investments in the bank's history, a BBC Panorama investigation has found.\",\n","\"The bank announced in 2008 that Manchester City owner Sheikh Mansour had agreed to invest more than £3bn.\",\n","\"But the BBC found that the money, which helped Barclays avoid a bailout by British taxpayers, actually came from the Abu Dhabi government.\",\n","\"Barclays said the mistake in its accounts was 'a drafting error'.\",\n","\"Unlike RBS and Lloyds TSB, Barclays narrowly avoided having to request a government bailout late in 2008 after it was rescued by £7bn worth of new investment, most of which came from the Gulf states of Qatar and Abu Dhabi.\",\n","\"The S&P 500's price to earnings multiple is 71% higher than Apple's, and if Apple were simply valued at the same multiple, its share price would be $840, which is 52% higher than its current price.\",\n","\"Alice has a cat named Alice and also a dog named Alice and also a parrot named Alice, it is her favorite name!\"\n","] + example_text\n","ner_df = nlu.load('ner').predict(text, output_level= 'chunk')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"5nhKQZPpSRxv","executionInfo":{"status":"ok","timestamp":1605842822177,"user_tz":-60,"elapsed":23119,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"1bc02780-4849-48c7-e0b2-36db9c549df6"},"source":["ner_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
entities_confidenceembeddingsentities
origin_index
0ORG[[0.044123999774456024, -0.47940999269485474, ...Barclays
0CARDINAL[[0.044123999774456024, -0.47940999269485474, ...about one
0ORG[[0.044123999774456024, -0.47940999269485474, ...BBC Panorama
1DATE[[-0.03819400072097778, -0.24487000703811646, ...2008
1GPE[[-0.03819400072097778, -0.24487000703811646, ...Manchester City
1PERSON[[-0.03819400072097778, -0.24487000703811646, ...Sheikh Mansour
1MONEY[[-0.03819400072097778, -0.24487000703811646, ...more than £3bn
2ORG[[-0.05707800015807152, 0.3987399935722351, 0....BBC
2ORG[[-0.05707800015807152, 0.3987399935722351, 0....Barclays
2NORP[[-0.05707800015807152, 0.3987399935722351, 0....British
2GPE[[-0.05707800015807152, 0.3987399935722351, 0....Abu Dhabi
3ORG[[0.044123999774456024, -0.47940999269485474, ...Barclays
4ORG[[-0.32710000872612, 0.4879100024700165, 0.416...RBS
4ORG[[-0.32710000872612, 0.4879100024700165, 0.416...Lloyds TSB
4ORG[[-0.32710000872612, 0.4879100024700165, 0.416...Barclays
4DATE[[-0.32710000872612, 0.4879100024700165, 0.416...2008
4MONEY[[-0.32710000872612, 0.4879100024700165, 0.416...7bn
4LOC[[-0.32710000872612, 0.4879100024700165, 0.416...Gulf
4GPE[[-0.32710000872612, 0.4879100024700165, 0.416...Qatar
4GPE[[-0.32710000872612, 0.4879100024700165, 0.416...Abu Dhabi
5ORG[[-0.03819400072097778, -0.24487000703811646, ...S&P
5DATE[[-0.03819400072097778, -0.24487000703811646, ...500's
5PERCENT[[-0.03819400072097778, -0.24487000703811646, ...71%
5ORG[[-0.03819400072097778, -0.24487000703811646, ...Apple
5ORG[[-0.03819400072097778, -0.24487000703811646, ...Apple
5CARDINAL[[-0.03819400072097778, -0.24487000703811646, ...$840
5PERCENT[[-0.03819400072097778, -0.24487000703811646, ...52%
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice
7PERSON[[-0.2708599865436554, 0.04400600120425224, -0...Jim
7PERSON[[-0.2708599865436554, 0.04400600120425224, -0...Joe
8ORG[[-0.4214000105857849, -0.18796999752521515, 0...Microsoft
8ORG[[-0.4214000105857849, -0.18796999752521515, 0...PETA
9GPE[[-0.2708599865436554, 0.04400600120425224, -0...Germany
10PRODUCT[[-0.029784999787807465, 0.08645900338888168, ...Playstation
11PERSON[[0.3870899975299835, 0.3262900114059448, 0.64...Angela Merkel
11PERSON[[0.3870899975299835, 0.3262900114059448, 0.64...Donald Trump
12ORG[[-0.19327999651432037, 0.6523399949073792, -1...JP Morgan
13GPE[[0.06345599889755249, -0.042142000049352646, ...Los Angeles
14PRODUCT[[-0.029784999787807465, 0.08645900338888168, ...Super Nintendo
\n","
"],"text/plain":[" entities_confidence ... entities\n","origin_index ... \n","0 ORG ... Barclays\n","0 CARDINAL ... about one\n","0 ORG ... BBC Panorama\n","1 DATE ... 2008\n","1 GPE ... Manchester City\n","1 PERSON ... Sheikh Mansour\n","1 MONEY ... more than £3bn\n","2 ORG ... BBC\n","2 ORG ... Barclays\n","2 NORP ... British\n","2 GPE ... Abu Dhabi\n","3 ORG ... Barclays\n","4 ORG ... RBS\n","4 ORG ... Lloyds TSB\n","4 ORG ... Barclays\n","4 DATE ... 2008\n","4 MONEY ... 7bn\n","4 LOC ... Gulf\n","4 GPE ... Qatar\n","4 GPE ... Abu Dhabi\n","5 ORG ... S&P\n","5 DATE ... 500's\n","5 PERCENT ... 71%\n","5 ORG ... Apple\n","5 ORG ... Apple\n","5 CARDINAL ... $840\n","5 PERCENT ... 52%\n","6 PERSON ... Alice\n","6 PERSON ... Alice\n","6 PERSON ... Alice\n","6 PERSON ... Alice\n","7 PERSON ... Jim\n","7 PERSON ... Joe\n","8 ORG ... Microsoft\n","8 ORG ... PETA\n","9 GPE ... Germany\n","10 PRODUCT ... Playstation\n","11 PERSON ... Angela Merkel\n","11 PERSON ... Donald Trump\n","12 ORG ... JP Morgan\n","13 GPE ... Los Angeles\n","14 PRODUCT ... Super Nintendo\n","\n","[42 rows x 3 columns]"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"STc7iOwtljGo"},"source":["## Lets explore our data which the predicted NER tags and visalize them! \n","\n","We specify [1:] so we dont se the count for the O-tag wich is the most common, since most words in a sentence are not named entities and thus not part of a chunk"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":370},"id":"UDSAYjadlfdK","executionInfo":{"status":"ok","timestamp":1605842822185,"user_tz":-60,"elapsed":23112,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"19a5af50-6e11-4692-b4a1-4a35b00f4a86"},"source":["ner_df['entities'].value_counts()[1:].plot.bar(title='Occurence of Named Entity tokens in dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":12},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":310},"id":"rlcEvP9tOSiy","executionInfo":{"status":"ok","timestamp":1605842822570,"user_tz":-60,"elapsed":23484,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"46f15995-e4e3-43a2-91f9-dba065d92b7b"},"source":["ner_type_to_viz = 'LOC'\n","ner_df[ner_df.entities_confidence == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring LOC labeled tokens in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":13},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":363},"id":"ks6NDXg7RXG3","executionInfo":{"status":"ok","timestamp":1605842822587,"user_tz":-60,"elapsed":23460,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"b2995949-a229-416a-f780-c8cffc83c5cb"},"source":["ner_type_to_viz = 'ORG'\n","ner_df[ner_df.entities_confidence == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring ORG labeled tokens in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":14},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"aBZM4_boe7DF"},"source":[""],"execution_count":null,"outputs":[]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_ner_CONLL_2003_5class_example.ipynb","provenance":[],"collapsed_sections":[]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"NYQRU3pRO146"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_CONLL_2003_5class_example.ipynb)\n","\n","\n","Named entities are phrases that contain the names of persons, organizations, locations, times and quantities. Example:\n","
\n","
\n","[ORG **U.N.** ] official [PER **Ekeus** ] heads for [LOC **Baghdad** ] . \n","
\n","\n","https://www.aclweb.org/anthology/W03-0419.pdf \n","CoNLL-2003 is a NER dataset that available in English and German. NLU provides pretrained languages for both of these languages.\n","\n","It features **5 classes** of tags, **LOC (location)** , **ORG(Organisation)**, **PER(Persons)** and the forth which describes all the named entities which do not belong to any of the thre previously mentioned tags **(MISC)**. \n","The fifth class **(O)** is used for tokens which belong to no named entity.\n","\n","\n","\n","\n","\n","|Tag | \tDescription |\n","|------|--------------|\n","|PER | A person like **Jim** or **Joe** |\n","|ORG | An organisation like **Microsoft** or **PETA**|\n","|LOC | A location like **Germany**|\n","|MISC | Anything else like **Playstation** |\n","|O| Everything that is not an entity. | \n","\n","\n","The shared task of [CoNLL-2003 concerns](https://www.clips.uantwerpen.be/conll2003/) language-independent named entity recognition. We will concentrate on four types of named entities: persons, locations, organizations and names of miscellaneous entities that do not belong to the previous three groups. The participants of the shared task will be offered training and test data for two languages. They will use the data for developing a named-entity recognition system that includes a machine learning component. For each language, additional information (lists of names and non-annotated data) will be supplied as well. The challenge for the participants is to find ways of incorporating this information in their system.\n","\n","\n","\n","\n","\n","\n","\n","\n","\n"]},{"cell_type":"code","metadata":{"id":"M2-GiYL6xurJ","executionInfo":{"status":"ok","timestamp":1614376103147,"user_tz":-60,"elapsed":622,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}}},"source":["# import os\n","# ! apt-get update -qq > /dev/null \n","# # Install java\n","# ! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","# os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","# os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","# ! pip install nlu pyspark==2.4.7 > /dev/null\n"],"execution_count":1,"outputs":[]},{"cell_type":"code","metadata":{"id":"RaFQ13IDzHFH","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614376168385,"user_tz":-60,"elapsed":65851,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"e9a8747c-46b1-413a-c029-77cf75f2c155"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.3.4 \n","\n"],"execution_count":2,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.3.4\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/7d/0f/6ae297667dad605a3bccc5581a4a7e3b4e409235b17b6e91f1d80ba8a04a/pyspark-2.3.4.tar.gz (212.3MB)\n","\u001b[K |████████████████████████████████| 212.3MB 64kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 18.1MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.3.4-py2.py3-none-any.whl size=212742814 sha256=eaeafb20427c3d270903d9b9125291a3ffaf02390a704a1f8cd6cdc87a95ea03\n"," Stored in directory: /root/.cache/pip/wheels/28/43/b9/dd30cad8012aa654f5688534e626e6f8b262d4425bb3530fb1\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.3.4\n","Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple\n","Collecting nlu_test==1.1.3rc2\n","\u001b[?25l Downloading https://test-files.pythonhosted.org/packages/5c/84/241410ba610c9281afc8e1cffaa352f5ca83fe6e2574f1cfcdf3334dc81f/nlu_test-1.1.3rc2-py3-none-any.whl (158kB)\n","\u001b[K |████████████████████████████████| 163kB 5.3MB/s \n","\u001b[?25hCollecting dataclasses\n"," Downloading https://files.pythonhosted.org/packages/26/2f/1095cdc2868052dd1e64520f7c0d5c8c550ad297e944e641dbf1ffbb9a5d/dataclasses-0.6-py3-none-any.whl\n","Collecting spark-nlp<2.8,>=2.7.1\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/8d/a5/a5130215b43f3bd0e98bd16c471d36dafeab8855ca17789d4927337fa7dc/spark_nlp-2.7.4-py2.py3-none-any.whl (139kB)\n","\u001b[K |████████████████████████████████| 143kB 6.9MB/s \n","\u001b[?25hRequirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.1.5)\n","Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.19.5)\n","Requirement already satisfied: pyarrow>=0.16.0 in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (3.0.0)\n","Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2018.9)\n","Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2.8.1)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->nlu_test==1.1.3rc2) (1.15.0)\n","Installing collected packages: dataclasses, spark-nlp, nlu-test\n","Successfully installed dataclasses-0.6 nlu-test-1.1.3rc2 spark-nlp-2.7.4\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Gph8XOL1Pzpl"},"source":["# NLU makes NER easy. \n","\n","You just need to load the NER model via ner.load() and predict on some dataset. \n","It could be a pandas dataframe with a column named text or just an array of strings."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"pmpZSNvGlyZQ","executionInfo":{"status":"ok","timestamp":1614376217409,"user_tz":-60,"elapsed":114869,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"fb7aa88a-7854-48f0-f368-befdf4d48b9b"},"source":["import nlu \n","\n","example_text = [\"A person like Jim or Joe\", \n"," \"An organisation like Microsoft or PETA\",\n"," \"A location like Germany\",\n"," \"Anything else like Playstation\", \n"," \"Person consisting of multiple tokens like Angela Merkel or Donald Trump\",\n"," \"Organisations consisting of multiple tokens like JP Morgan\",\n"," \"Locations consiting of multiple tokens like Los Angeles\", \n"," \"Anything else made up of multiple tokens like Super Nintendo\",]\n","\n","nlu.load('ner').predict(example_text)"],"execution_count":3,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
tokenentitiesner_confidenceembeddingsentities_confidence
origin_index
0A[Jim, Joe]0.999700[-0.2708599865436554, 0.04400600120425224, -0....[PERSON, PERSON]
0person[Jim, Joe]0.844200[0.3870899975299835, 0.3262900114059448, 0.645...[PERSON, PERSON]
0like[Jim, Joe]0.973300[-0.2687000036239624, 0.817080020904541, 0.698...[PERSON, PERSON]
0Jim[Jim, Joe]0.996600[-0.5946000218391418, 0.24015000462532043, 0.8...[PERSON, PERSON]
0or[Jim, Joe]0.997800[0.31038999557495117, 0.6485900282859802, 0.28...[PERSON, PERSON]
0Joe[Jim, Joe]0.678500[-0.008324000053107738, -0.22608999907970428, ...[PERSON, PERSON]
1An[Microsoft, PETA]0.999600[-0.4214000105857849, -0.18796999752521515, 0....[ORG, ORG]
1organisation[Microsoft, PETA]0.828700[0.2066899985074997, 0.11495999991893768, -0.7...[ORG, ORG]
1like[Microsoft, PETA]0.995100[-0.2687000036239624, 0.817080020904541, 0.698...[ORG, ORG]
1Microsoft[Microsoft, PETA]0.998100[0.292959988117218, -0.2003300040960312, 0.647...[ORG, ORG]
1or[Microsoft, PETA]0.999900[0.31038999557495117, 0.6485900282859802, 0.28...[ORG, ORG]
1PETA[Microsoft, PETA]0.981300[0.23658999800682068, 0.09654799848794937, -0....[ORG, ORG]
2A[Germany]0.999700[-0.2708599865436554, 0.04400600120425224, -0....[GPE]
2location[Germany]0.834800[-0.15413999557495117, -0.4418500065803528, 0....[GPE]
2like[Germany]0.879700[-0.2687000036239624, 0.817080020904541, 0.698...[GPE]
2Germany[Germany]0.960200[0.6208900213241577, 0.7105100154876709, 0.495...[GPE]
3Anything[Playstation]0.997300[-0.029784999787807465, 0.08645900338888168, 0...[PRODUCT]
3else[Playstation]0.865000[0.07139399647712708, 0.5581200122833252, 1.03...[PRODUCT]
3like[Playstation]0.816900[-0.2687000036239624, 0.817080020904541, 0.698...[PRODUCT]
3Playstation[Playstation]0.681800[-0.13797999918460846, -0.2239599972963333, 1....[PRODUCT]
4Person[Angela Merkel, Donald Trump]0.999500[0.3870899975299835, 0.3262900114059448, 0.645...[PERSON, PERSON]
4consisting[Angela Merkel, Donald Trump]0.670700[-0.8197299838066101, 0.6228200197219849, 0.21...[PERSON, PERSON]
4of[Angela Merkel, Donald Trump]0.956800[-0.15289999544620514, -0.24278999865055084, 0...[PERSON, PERSON]
4multiple[Angela Merkel, Donald Trump]0.700400[-0.16572999954223633, 0.5437099933624268, -0....[PERSON, PERSON]
4tokens[Angela Merkel, Donald Trump]0.530900[0.1645199954509735, 0.6764900088310242, -0.50...[PERSON, PERSON]
4like[Angela Merkel, Donald Trump]0.988500[-0.2687000036239624, 0.817080020904541, 0.698...[PERSON, PERSON]
4Angela[Angela Merkel, Donald Trump]0.959800[-0.563759982585907, 0.26958999037742615, 0.35...[PERSON, PERSON]
4Merkel[Angela Merkel, Donald Trump]0.987700[-1.000499963760376, 0.41997000575065613, 0.59...[PERSON, PERSON]
4or[Angela Merkel, Donald Trump]0.999900[0.31038999557495117, 0.6485900282859802, 0.28...[PERSON, PERSON]
4Donald[Angela Merkel, Donald Trump]0.947000[-0.5496799945831299, -0.488319993019104, 0.59...[PERSON, PERSON]
4Trump[Angela Merkel, Donald Trump]0.859300[-0.15730999410152435, -0.7550299763679504, 0....[PERSON, PERSON]
5Organisations[JP Morgan]0.999600[-0.19327999651432037, 0.6523399949073792, -1....[ORG]
5consisting[JP Morgan]0.952000[-0.8197299838066101, 0.6228200197219849, 0.21...[ORG]
5of[JP Morgan]0.995200[-0.15289999544620514, -0.24278999865055084, 0...[ORG]
5multiple[JP Morgan]0.971600[-0.16572999954223633, 0.5437099933624268, -0....[ORG]
5tokens[JP Morgan]0.953100[0.1645199954509735, 0.6764900088310242, -0.50...[ORG]
5like[JP Morgan]0.994100[-0.2687000036239624, 0.817080020904541, 0.698...[ORG]
5JP[JP Morgan]0.816400[-0.4920400083065033, 0.42118000984191895, -0....[ORG]
5Morgan[JP Morgan]0.386300[0.017304999753832817, -0.045906998217105865, ...[ORG]
6Locations[Los Angeles]0.999300[0.06345599889755249, -0.042142000049352646, 0...[GPE]
6consiting[Los Angeles]0.868300[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...[GPE]
6of[Los Angeles]0.958900[-0.15289999544620514, -0.24278999865055084, 0...[GPE]
6multiple[Los Angeles]0.675400[-0.16572999954223633, 0.5437099933624268, -0....[GPE]
6tokens[Los Angeles]0.822400[0.1645199954509735, 0.6764900088310242, -0.50...[GPE]
6like[Los Angeles]0.893900[-0.2687000036239624, 0.817080020904541, 0.698...[GPE]
6Los[Los Angeles]0.741900[0.9132099747657776, -0.6833699941635132, 0.43...[GPE]
6Angeles[Los Angeles]0.769100[0.7376400232315063, -0.31266000866889954, 0.4...[GPE]
7Anything[Super Nintendo]0.999800[-0.029784999787807465, 0.08645900338888168, 0...[PRODUCT]
7else[Super Nintendo]0.945700[0.07139399647712708, 0.5581200122833252, 1.03...[PRODUCT]
7made[Super Nintendo]0.700100[-0.19820000231266022, -0.28404998779296875, 0...[PRODUCT]
7up[Super Nintendo]0.828700[0.21468999981880188, 0.4336700141429901, 0.33...[PRODUCT]
7of[Super Nintendo]0.810000[-0.15289999544620514, -0.24278999865055084, 0...[PRODUCT]
7multiple[Super Nintendo]0.627900[-0.16572999954223633, 0.5437099933624268, -0....[PRODUCT]
7tokens[Super Nintendo]0.483400[0.1645199954509735, 0.6764900088310242, -0.50...[PRODUCT]
7like[Super Nintendo]0.920500[-0.2687000036239624, 0.817080020904541, 0.698...[PRODUCT]
7Super[Super Nintendo]0.320700[-0.4453299939632416, -0.4496900141239166, 1.2...[PRODUCT]
7Nintendo[Super Nintendo]0.446900[0.25946998596191406, -0.5758200287818909, 1.3...[PRODUCT]
\n","
"],"text/plain":[" token ... entities_confidence\n","origin_index ... \n","0 A ... [PERSON, PERSON]\n","0 person ... [PERSON, PERSON]\n","0 like ... [PERSON, PERSON]\n","0 Jim ... [PERSON, PERSON]\n","0 or ... [PERSON, PERSON]\n","0 Joe ... [PERSON, PERSON]\n","1 An ... [ORG, ORG]\n","1 organisation ... [ORG, ORG]\n","1 like ... [ORG, ORG]\n","1 Microsoft ... [ORG, ORG]\n","1 or ... [ORG, ORG]\n","1 PETA ... [ORG, ORG]\n","2 A ... [GPE]\n","2 location ... [GPE]\n","2 like ... [GPE]\n","2 Germany ... [GPE]\n","3 Anything ... [PRODUCT]\n","3 else ... [PRODUCT]\n","3 like ... [PRODUCT]\n","3 Playstation ... [PRODUCT]\n","4 Person ... [PERSON, PERSON]\n","4 consisting ... [PERSON, PERSON]\n","4 of ... [PERSON, PERSON]\n","4 multiple ... [PERSON, PERSON]\n","4 tokens ... [PERSON, PERSON]\n","4 like ... [PERSON, PERSON]\n","4 Angela ... [PERSON, PERSON]\n","4 Merkel ... [PERSON, PERSON]\n","4 or ... [PERSON, PERSON]\n","4 Donald ... [PERSON, PERSON]\n","4 Trump ... [PERSON, PERSON]\n","5 Organisations ... [ORG]\n","5 consisting ... [ORG]\n","5 of ... [ORG]\n","5 multiple ... [ORG]\n","5 tokens ... [ORG]\n","5 like ... [ORG]\n","5 JP ... [ORG]\n","5 Morgan ... [ORG]\n","6 Locations ... [GPE]\n","6 consiting ... [GPE]\n","6 of ... [GPE]\n","6 multiple ... [GPE]\n","6 tokens ... [GPE]\n","6 like ... [GPE]\n","6 Los ... [GPE]\n","6 Angeles ... [GPE]\n","7 Anything ... [PRODUCT]\n","7 else ... [PRODUCT]\n","7 made ... [PRODUCT]\n","7 up ... [PRODUCT]\n","7 of ... [PRODUCT]\n","7 multiple ... [PRODUCT]\n","7 tokens ... [PRODUCT]\n","7 like ... [PRODUCT]\n","7 Super ... [PRODUCT]\n","7 Nintendo ... [PRODUCT]\n","\n","[57 rows x 5 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qgGdEUgkMika","executionInfo":{"status":"ok","timestamp":1614376226664,"user_tz":-60,"elapsed":124119,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"da600ecd-8f40-440f-fe0a-035b7e878896"},"source":["text = [\"Barclays misled shareholders and the public about one of the biggest investments in the bank's history, a BBC Panorama investigation has found.\",\n","\"The bank announced in 2008 that Manchester City owner Sheikh Mansour had agreed to invest more than £3bn.\",\n","\"But the BBC found that the money, which helped Barclays avoid a bailout by British taxpayers, actually came from the Abu Dhabi government.\",\n","\"Barclays said the mistake in its accounts was 'a drafting error'.\",\n","\"Unlike RBS and Lloyds TSB, Barclays narrowly avoided having to request a government bailout late in 2008 after it was rescued by £7bn worth of new investment, most of which came from the Gulf states of Qatar and Abu Dhabi.\",\n","\"The S&P 500's price to earnings multiple is 71% higher than Apple's, and if Apple were simply valued at the same multiple, its share price would be $840, which is 52% higher than its current price.\",\n","\"Alice has a cat named Alice and also a dog named Alice and also a parrot named Alice, it is her favorite name!\"\n","] + example_text\n","ner_df = nlu.load('ner').predict(text, output_level= 'chunk')"],"execution_count":4,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"5nhKQZPpSRxv","executionInfo":{"status":"ok","timestamp":1614376229431,"user_tz":-60,"elapsed":126880,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"3f2dff25-64af-47ae-9b0e-59e12d3e0ee2"},"source":["ner_df"],"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
entitiesentities_classner_confidenceembeddings
origin_index
0BarclaysORG[0.9980999827384949, 1.0, 0.9994999766349792, ...[[0.044123999774456024, -0.47940999269485474, ...
0about oneCARDINAL[0.9980999827384949, 1.0, 0.9994999766349792, ...[[0.044123999774456024, -0.47940999269485474, ...
0BBC PanoramaORG[0.9980999827384949, 1.0, 0.9994999766349792, ...[[0.044123999774456024, -0.47940999269485474, ...
12008DATE[0.9997000098228455, 0.848800003528595, 0.9908...[[-0.03819400072097778, -0.24487000703811646, ...
1Manchester CityGPE[0.9997000098228455, 0.848800003528595, 0.9908...[[-0.03819400072097778, -0.24487000703811646, ...
1Sheikh MansourPERSON[0.9997000098228455, 0.848800003528595, 0.9908...[[-0.03819400072097778, -0.24487000703811646, ...
1more than £3bnMONEY[0.9997000098228455, 0.848800003528595, 0.9908...[[-0.03819400072097778, -0.24487000703811646, ...
2BBCORG[0.9998999834060669, 0.9825999736785889, 1.0, ...[[-0.05707800015807152, 0.3987399935722351, 0....
2BarclaysORG[0.9998999834060669, 0.9825999736785889, 1.0, ...[[-0.05707800015807152, 0.3987399935722351, 0....
2BritishNORP[0.9998999834060669, 0.9825999736785889, 1.0, ...[[-0.05707800015807152, 0.3987399935722351, 0....
2Abu DhabiGPE[0.9998999834060669, 0.9825999736785889, 1.0, ...[[-0.05707800015807152, 0.3987399935722351, 0....
3BarclaysORG[0.9987999796867371, 1.0, 0.9980000257492065, ...[[0.044123999774456024, -0.47940999269485474, ...
4RBSORG[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
4Lloyds TSBORG[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
4BarclaysORG[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
42008DATE[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
47bnMONEY[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
4GulfLOC[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
4QatarGPE[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
4Abu DhabiGPE[0.9997000098228455, 0.9998999834060669, 0.999...[[-0.32710000872612, 0.4879100024700165, 0.416...
5S&PORG[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
5500'sDATE[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
571%PERCENT[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
5AppleORG[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
5AppleORG[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
5$840CARDINAL[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
552%PERCENT[0.9994999766349792, 0.9878000020980835, 0.865...[[-0.03819400072097778, -0.24487000703811646, ...
6AlicePERSON[0.9970999956130981, 0.9984999895095825, 0.922...[[0.28501999378204346, -0.4355500042438507, 0....
6AlicePERSON[0.9970999956130981, 0.9984999895095825, 0.922...[[0.28501999378204346, -0.4355500042438507, 0....
6AlicePERSON[0.9970999956130981, 0.9984999895095825, 0.922...[[0.28501999378204346, -0.4355500042438507, 0....
6AlicePERSON[0.9970999956130981, 0.9984999895095825, 0.922...[[0.28501999378204346, -0.4355500042438507, 0....
7JimPERSON[0.9997000098228455, 0.8442000150680542, 0.973...[[-0.2708599865436554, 0.04400600120425224, -0...
7JoePERSON[0.9997000098228455, 0.8442000150680542, 0.973...[[-0.2708599865436554, 0.04400600120425224, -0...
8MicrosoftORG[0.9995999932289124, 0.8287000060081482, 0.995...[[-0.4214000105857849, -0.18796999752521515, 0...
8PETAORG[0.9995999932289124, 0.8287000060081482, 0.995...[[-0.4214000105857849, -0.18796999752521515, 0...
9GermanyGPE[0.9997000098228455, 0.8348000049591064, 0.879...[[-0.2708599865436554, 0.04400600120425224, -0...
10PlaystationPRODUCT[0.9973000288009644, 0.8650000095367432, 0.816...[[-0.029784999787807465, 0.08645900338888168, ...
11Angela MerkelPERSON[0.9994999766349792, 0.6707000136375427, 0.956...[[0.3870899975299835, 0.3262900114059448, 0.64...
11Donald TrumpPERSON[0.9994999766349792, 0.6707000136375427, 0.956...[[0.3870899975299835, 0.3262900114059448, 0.64...
12JP MorganORG[0.9995999932289124, 0.9520000219345093, 0.995...[[-0.19327999651432037, 0.6523399949073792, -1...
13Los AngelesGPE[0.9993000030517578, 0.8683000206947327, 0.958...[[0.06345599889755249, -0.042142000049352646, ...
14Super NintendoPRODUCT[0.9998000264167786, 0.9456999897956848, 0.700...[[-0.029784999787807465, 0.08645900338888168, ...
\n","
"],"text/plain":[" entities ... embeddings\n","origin_index ... \n","0 Barclays ... [[0.044123999774456024, -0.47940999269485474, ...\n","0 about one ... [[0.044123999774456024, -0.47940999269485474, ...\n","0 BBC Panorama ... [[0.044123999774456024, -0.47940999269485474, ...\n","1 2008 ... [[-0.03819400072097778, -0.24487000703811646, ...\n","1 Manchester City ... [[-0.03819400072097778, -0.24487000703811646, ...\n","1 Sheikh Mansour ... [[-0.03819400072097778, -0.24487000703811646, ...\n","1 more than £3bn ... [[-0.03819400072097778, -0.24487000703811646, ...\n","2 BBC ... [[-0.05707800015807152, 0.3987399935722351, 0....\n","2 Barclays ... [[-0.05707800015807152, 0.3987399935722351, 0....\n","2 British ... [[-0.05707800015807152, 0.3987399935722351, 0....\n","2 Abu Dhabi ... [[-0.05707800015807152, 0.3987399935722351, 0....\n","3 Barclays ... [[0.044123999774456024, -0.47940999269485474, ...\n","4 RBS ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 Lloyds TSB ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 Barclays ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 2008 ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 7bn ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 Gulf ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 Qatar ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","4 Abu Dhabi ... [[-0.32710000872612, 0.4879100024700165, 0.416...\n","5 S&P ... [[-0.03819400072097778, -0.24487000703811646, ...\n","5 500's ... [[-0.03819400072097778, -0.24487000703811646, ...\n","5 71% ... [[-0.03819400072097778, -0.24487000703811646, ...\n","5 Apple ... [[-0.03819400072097778, -0.24487000703811646, ...\n","5 Apple ... [[-0.03819400072097778, -0.24487000703811646, ...\n","5 $840 ... [[-0.03819400072097778, -0.24487000703811646, ...\n","5 52% ... [[-0.03819400072097778, -0.24487000703811646, ...\n","6 Alice ... [[0.28501999378204346, -0.4355500042438507, 0....\n","6 Alice ... [[0.28501999378204346, -0.4355500042438507, 0....\n","6 Alice ... [[0.28501999378204346, -0.4355500042438507, 0....\n","6 Alice ... [[0.28501999378204346, -0.4355500042438507, 0....\n","7 Jim ... [[-0.2708599865436554, 0.04400600120425224, -0...\n","7 Joe ... [[-0.2708599865436554, 0.04400600120425224, -0...\n","8 Microsoft ... [[-0.4214000105857849, -0.18796999752521515, 0...\n","8 PETA ... [[-0.4214000105857849, -0.18796999752521515, 0...\n","9 Germany ... [[-0.2708599865436554, 0.04400600120425224, -0...\n","10 Playstation ... [[-0.029784999787807465, 0.08645900338888168, ...\n","11 Angela Merkel ... [[0.3870899975299835, 0.3262900114059448, 0.64...\n","11 Donald Trump ... [[0.3870899975299835, 0.3262900114059448, 0.64...\n","12 JP Morgan ... [[-0.19327999651432037, 0.6523399949073792, -1...\n","13 Los Angeles ... [[0.06345599889755249, -0.042142000049352646, ...\n","14 Super Nintendo ... [[-0.029784999787807465, 0.08645900338888168, ...\n","\n","[42 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"STc7iOwtljGo"},"source":["## Lets explore our data which the predicted NER tags and visalize them! \n","\n","We specify [1:] so we dont se the count for the O-tag wich is the most common, since most words in a sentence are not named entities and thus not part of a chunk"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":368},"id":"UDSAYjadlfdK","executionInfo":{"status":"ok","timestamp":1614376229735,"user_tz":-60,"elapsed":127177,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"cd41bd9c-d283-45f0-ae03-5a9c84bc5d6d"},"source":["ner_df['entities'].value_counts()[1:].plot.bar(title='Occurence of Named Entity tokens in dataset')"],"execution_count":6,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":6},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":308},"id":"rlcEvP9tOSiy","executionInfo":{"status":"ok","timestamp":1614376390216,"user_tz":-60,"elapsed":575,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"86d229d3-3847-434c-cbce-eac44c324737"},"source":["ner_type_to_viz = 'LOC'\n","ner_df[ner_df.entities_class == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring LOC labeled tokens in the dataset')"],"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":10},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"ks6NDXg7RXG3","colab":{"base_uri":"https://localhost:8080/","height":361},"executionInfo":{"status":"ok","timestamp":1614376396753,"user_tz":-60,"elapsed":579,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"2632ce57-f063-4bb3-c1c9-d2325134329b"},"source":["ner_type_to_viz = 'ORG'\n","ner_df[ner_df.entities_class == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring ORG labeled tokens in the dataset')"],"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":11},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"BDe5P8ByVOU_"},"source":[""],"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_ONTO_18class_example.ipynb b/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_ONTO_18class_example.ipynb index 39dc408b..0c33620a 100644 --- a/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_ONTO_18class_example.ipynb +++ b/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_ONTO_18class_example.ipynb @@ -1 +1 @@ -{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_ner_ONTO_18class_example.ipynb","provenance":[{"file_id":"1CYzHfQyFCdvIOVO2Z5aggVI9c0hDEOrw","timestamp":1599267946314}],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"NYQRU3pRO146"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_ONTO_18class_example.ipynb.ipynb)\n","\n","# Named-entity recognition with Deep Learning ONTO NOTES\n","\n","Named-Entity recognition is a well-known technique in information extraction it is also known as entity identification, entity chunking and entity extraction. Knowing the relevant tags for each article help in automatically categorizing the articles in defined hierarchies and enable smooth content discovery. This pipeline is based on NerDLApproach annotator with Char CNN - BiLSTM and GloVe Embeddings on the OntoNotes corpus and supports the identification of 18 entities.\n","\n","\n","Following NER classes can be detected by this model\n","\n","\n","\n","\n","|Type | \tDescription |\n","|------|--------------|\n","| PERSON | \tPeople, including fictional like **Harry Potter** |\n","| NORP | \tNationalities or religious or political groups like the **Germans** |\n","| FAC | \tBuildings, airports, highways, bridges, etc. like **New York Airport** |\n","| ORG | \tCompanies, agencies, institutions, etc. like **Microsoft** |\n","| GPE | \tCountries, cities, states. like **Germany** |\n","| LOC | \tNon-GPE locations, mountain ranges, bodies of water. Like the **Sahara desert**|\n","| PRODUCT | \tObjects, vehicles, foods, etc. (Not services.) like **playstation** |\n","| EVENT | \tNamed hurricanes, battles, wars, sports events, etc. like **hurricane Katrina**|\n","| WORK_OF_ART | \tTitles of books, songs, etc. Like **Mona Lisa** |\n","| LAW | \tNamed documents made into laws. Like : **Declaration of Independence** |\n","| LANGUAGE | \tAny named language. Like **Turkish**|\n","| DATE | \tAbsolute or relative dates or periods. Like every second **friday**|\n","| TIME | \tTimes smaller than a day. Like **every minute**|\n","| PERCENT | \tPercentage, including ”%“. Like **55%** of workers enjoy their work |\n","| MONEY | \tMonetary values, including unit. Like **50$** for those pants |\n","| QUANTITY | \tMeasurements, as of weight or distance. Like this person weights **50kg** |\n","| ORDINAL | \t“first”, “second”, etc. Like David placed **first** in the tournament |\n","| CARDINAL | \tNumerals that do not fall under another type. Like **hundreds** of models are avaiable in NLU |"]},{"cell_type":"code","metadata":{"id":"M2-GiYL6xurJ"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.4.7 > /dev/null\n","\n"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Gph8XOL1Pzpl"},"source":["# NLU makes NER easy. \n","\n","You just need to load the NER model via ner.load() and predict on some dataset. \n","It could be a pandas dataframe with a column named text or just an array of strings."]},{"cell_type":"code","metadata":{"id":"pmpZSNvGlyZQ","colab":{"base_uri":"https://localhost:8080/","height":757},"executionInfo":{"status":"ok","timestamp":1609628217826,"user_tz":-60,"elapsed":179196,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"b7848f8f-2049-45dc-fa3c-c6c52c09a340"},"source":["import nlu \n","\n","example_text = ['People, including fictional like Harry Potter.',\n","'Nationalities or religious or political groups like Germans.',\n","'Buildings, airports, highways, bridges, etc. like New York Airport',\n","'Companies, agencies, institutions, etc. like Microsoft',\n","'Countries, cities, states. like Germany',\n","'Non-GPE locations, mountain ranges, bodies of water. Like Sahara Destert',\n","'Objects, vehicles, foods, etc. (Not services.) Like the a or playstation or Playstation',\n","'Named hurricanes, battles, wars, sports events, etc. like hurricane Katrina',\n","'Titles of books, songs, etc. Like the Mona Lisa',\n","'Named documents made into laws. Like the Declaration of Independence',\n","'Any named language. Like English',\n","'Absolute or relative dates or periods. Like every second friday',\n","'Times smaller than a day. Like every minute',\n","'Percentage, including ”%“. Like 55% of workers enjoy their work',\n","'Monetary values, including unit. Like 50$ for those pants',\n","'Measurements, as of weight or distance. Like this person weights 50kg',\n","'“first”, “second”, etc. Like David place first in the tournament',\n","'Numerals that do not fall under another type. Like hundreds of models are avaiable in NLU',]\n","nlu.load('ner.onto').predict(example_text)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
entities_confidenceembeddingsentities
origin_index
0PERSON[[0.2901900112628937, 0.8049700260162354, 0.31...Harry Potter
1NORP[[-0.02076599933207035, 0.5784800052642822, 0....Germans
2FAC[[0.058736998587846756, 0.6042199730873108, -0...New York Airport
3ORG[[0.39910998940467834, 0.23048000037670135, -0...Microsoft
4GPE[[-0.0445609986782074, 0.8070899844169617, 0.6...Germany
5ORG[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...Non-GPE
5LOC[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...Sahara Destert
6PRODUCT[[-0.12313000112771988, 1.027899980545044, -0....Playstation
7EVENT[[-0.3515700101852417, -0.1662600040435791, 0....hurricane Katrina
8PERSON[[0.5689799785614014, -0.38422998785972595, 0....Lisa
10LANGUAGE[[-0.2367600053548813, 0.15658999979496002, 0....English
11ORDINAL[[-0.0853630006313324, -0.5337499976158142, 1....second
12DATE[[-0.29739999771118164, 0.1302099972963333, 0....smaller than a day
13PERCENT[[0.06162400171160698, 0.6707599759101868, 0.3...55%
14MONEY[[0.3520300090312958, -0.1374099999666214, 0.2...50$
15PERSON[[-0.5554199814796448, 0.0024757999926805496, ...50kg
16ORDINAL[[-0.04256799817085266, -0.08424600213766098, ...first
16ORDINAL[[-0.04256799817085266, -0.08424600213766098, ...second
16PERSON[[-0.04256799817085266, -0.08424600213766098, ...David
16ORDINAL[[-0.04256799817085266, -0.08424600213766098, ...first
17CARDINAL[[-0.2671700119972229, 0.7479100227355957, -0....hundreds
17ORG[[-0.2671700119972229, 0.7479100227355957, -0....NLU
\n","
"],"text/plain":[" entities_confidence ... entities\n","origin_index ... \n","0 PERSON ... Harry Potter\n","1 NORP ... Germans\n","2 FAC ... New York Airport\n","3 ORG ... Microsoft\n","4 GPE ... Germany\n","5 ORG ... Non-GPE\n","5 LOC ... Sahara Destert\n","6 PRODUCT ... Playstation\n","7 EVENT ... hurricane Katrina\n","8 PERSON ... Lisa\n","10 LANGUAGE ... English\n","11 ORDINAL ... second\n","12 DATE ... smaller than a day\n","13 PERCENT ... 55%\n","14 MONEY ... 50$\n","15 PERSON ... 50kg\n","16 ORDINAL ... first\n","16 ORDINAL ... second\n","16 PERSON ... David\n","16 ORDINAL ... first\n","17 CARDINAL ... hundreds\n","17 ORG ... NLU\n","\n","[22 rows x 3 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"id":"qgGdEUgkMika","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1609628226448,"user_tz":-60,"elapsed":187809,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"87443e04-3cf8-4d1d-a434-9f924e22f49c"},"source":["text = [\"Barclays misled shareholders and the public about one of the biggest investments in the bank's history, a BBC Panorama investigation has found.\",\n","\"The bank announced in 2008 that Manchester City owner Sheikh Mansour had agreed to invest more than £3bn.\",\n","\"But the BBC found that the money, which helped Barclays avoid a bailout by British taxpayers, actually came from the Abu Dhabi government.\",\n","\"Barclays said the mistake in its accounts was 'a drafting error'.\",\n","\"Unlike RBS and Lloyds TSB, Barclays narrowly avoided having to request a government bailout late in 2008 after it was rescued by £7bn worth of new investment, most of which came from the Gulf states of Qatar and Abu Dhabi.\",\n","\"The S&P 500's price to earnings multiple is 71% higher than Apple's, and if Apple were simply valued at the same multiple, its share price would be $840, which is 52% higher than its current price.\",\n","\"Alice has a cat named Alice and also a dog named Alice and also a parrot named Alice, it is her favorite name!\"\n","] + example_text\n","ner_df = nlu.load('ner.onto').predict(text, output_level='chunk')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"STc7iOwtljGo"},"source":["## Lets explore our data which the predicted NER tags and visalize them! \n","\n","We specify [1:] so we dont se the count for the O-tag wich is the most common, since most words in a sentence are not named entities and thus not part of a chunk"]},{"cell_type":"code","metadata":{"id":"UDSAYjadlfdK","colab":{"base_uri":"https://localhost:8080/","height":381},"executionInfo":{"status":"ok","timestamp":1609628227256,"user_tz":-60,"elapsed":188597,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"f97077e1-bb5a-4ab3-f714-c8fb0f859b75"},"source":["ner_df['entities'].value_counts()[1:].plot.bar(title='Occurence of Named Entity tokens in dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":4},{"output_type":"display_data","data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAXUAAAFcCAYAAAA3Xi42AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd5glRdWH398GguSwkjYR1kTOIKgIoiRBJaOSBQMSRBEQSaICKiIiIDmI5CCSUTK4wO6yxIWPJYMgS87Iwvn+ONU7dXv6hpm5s7Ncz/s8/dzbVdXd1d3Vp6pOnTolMyMIgiDoDAYNdAaCIAiC9hFCPQiCoIMIoR4EQdBBhFAPgiDoIEKoB0EQdBAh1IMgCDqIEOpBUyR9XdLTkt6UtPxA56cnSFpL0jPT6Voj0zMaPD2uV3F9k7TEAF27rfc+kPfyUed/WqhL2l7SfZLelvS8pOMlzT3Q+ZoB+S2wm5nNbmZ3lyPTB3ifpEFZ2GGSTp+emewNKe9vJYFUbPu0eOwTkr5U7JvZU+kZfZDib5S0cx/z9pEQbOV7n15IGp2e05BOuE47+J8V6pL2Bo4AfgLMBawGjAKukzTTdMrDDF9AEqOAB5qkWRjYajrkpT9YNgmkYjtyoDMUBL3GzP7nNmBO4E1gi1L47MAUYMe0PxjYH3gUeAMYD4xIcUsC1wEvA/8B9k/hpwOHZedcC3gm238C+ClwL/AeMASvUG4HXgXuAdbK0t8I/AK4LeXhWmD+LH7N7Ninge1T+Mx4C/uplL8TgFnrPI9BwAHAk8ALwJl4RTdzek4GvAU8Wud4S/f0CDAkhR0GnJ6luQB4HngNuBlYMos7HTgOuCpd7zZgQeBo4BXgIWD5LP3CwEXpXT0O7J7FzZrO9wrwIF5pP1OV7yzvS9SJOxg4Pz2PN/CKbaUUdxbwIfBOyvM+wOh0viHAL4EPgHdT/LHAn4Dfla5xGbBXxbVvzp77m8CWKfw7wGS83F0GLFx1L6lcPF2UJWBHYFJ6LtcAo0rHfTe9v1dTPpXilgBuSu/tReC8Os9q2r23Um4rjv8J8Bzw75TX/F42BO4GXk/3dHB23FMp7ZtpWx1YHLgeeCnl+Wxg7uyYnwLPpnw9DKyTfQf74t/7S+ndz1vvOgMtx+o+y4HOwIDcNKwHTC0KYCnuDOCcrKDdB3wSELAsMB8wRyqAewOzpP1V0zGn01yoTwRG4AJokVSANkiFat20Pyz7OB4FPpHS3wgcnuJGpYK5NTA05W25FPd7/KOfN+Xv78Cv6zyPHXFBsRhesV0MnJXF1xV8WfwYvNLbOYWVhfqOKR8z48J6YhZ3evr4VkzP83pcWG+LV6yHATektIPSdQ4EZkp5fgz4Soo/HLgl3fcI4H76JtTfTe9mMPBrYGzpXX4p2x9Nd8G2cxa/Ci60BqX9+YG3gQVayRuwdnpOK6Tn+Efg5nJ6vHw/DaySwjdJ7/fTeIVzAHB76bjLgbmBkXhluV6KOwf4WXruswBr1slr1b1Xlts63+N/gKWA2YC/UivU1wKWTnlYJqX9WtV1U9gS+Hc0MzAMryCPTnGfTM9m4ez4xdP/PYCxwPB07J/pkgXdrjOjbgOegQG5afgW8HyduMOB69L/h4FNKtJsDdxd5/jTaS7Ud8z2f0omQFPYNcB26f+NwAFZ3PeBq9P//YBLKvIgvIW3eBa2OvB4nTz/E/h+tv9J4P3sA21FqC+BC78ncWFbI9RL6edOx8yVPbOTsvgfApOy/aWBV9P/VYGnSufbDzgt/X+MJJDS/i40F+qv4y3UYisqiIOBf2RpPwO8U3qXLQv1FDYJWDf93w24stlzzfZPAY7M9mdP72l0ln6/9A6WytJdBeyU7Q/CK5NR2XFrZvHnA/um/2cCJwLDm3xTVfdeWW4rjj2VTODjFUGjyvZo4PdV162T/muk7zWV0xeALwFDK97NOtn+Qun5DmnlOjPK9r+qU38RmL+OTnuhFA/e0nu0Ik298FZ5Ovs/Cthc0qvFhnedF8rSPJ/9fxv/mBvlYxjwMWB8ds6rU3gVC+OCoOBJvCAv0OL9AGBmVwLPALvm4ZIGSzpc0qOSXseFIXhLteA/2f93KvaLex4FLFx6XvtneV2Y2ueb31c9VjCzubPtmiyu/Oxn6eNYyBl4o4L0e1YPjq15T2b2Jt6rWyRLsydwvpndn4WNAv6QPa+X8Yo/P65eGdsnpb1T0gOSduxBfuuds0zDdyZpVUk3SJoi6TVcVZSXHUrpF5B0rqRnU3n7S5HezCbjz+hg4IWUbuF06Cjgkuw5TcJVaD36Dgaa/1Wh/i9cn/2NPFDS7MD6eMsVvKAtXnH803i3v4q3cIFasGBFGiud66ySUJnNzA5vfht18/ciLgiXzM45l5nV+6j+jRfogpG4euo/1ckb8jNcyObPYBtcBfAlXFc/OoWrF+d/Gu9x5M9rDjPbIMU/h1d2BSN7cY1WsV7E/wXYRNKyuDrk0h5cr+Y9SZoNV7k9m6XZHPiapD2ysKeBXUvPbFYzu73ZBc3seTP7jpktjFfWx/WDRU6zd/ZXXJU4wszmwseHirJT9Yx/lcKXNrM58cpzWlkzs7+a2Zr4szTcYAL8Oa1fek6zmNmzda4zQ/I/KdTN7DXgEOCPktaTNFTSaLzb+QxdraeTgV9IGiNnGUnz4frHhSTtKWlmSXNIWjUdMxHYQNK8khbEWwWN+AvwVUlfSS3aWZJt9fAWbuVs4EuStpA0RNJ8kpYzsw+Bk4DfS/o4gKRFJH2lznnOAfaStGiq2H6FD4hNbSEPNZjZjbgee7sseA68En0JF/a/6ul5M+4E3pD0U0mzpme2lKSVU/z5wH6S5knP8Id9uFYz/kP9yr0y3syeAe7Cy9hFZvZOD44/B9hB0nKSZsaf4x1m9kSW5t/AOsAekr6Xwk7An8mSAJLmkrR5s5tLaTfPyuIruHD7sJVje8D5wPaSPiPpY8BBpfg5gJfN7F1Jq+CNhIIpKT+LldK/CbwmaRF8bAwASZ+UtHZ6fu/ijZ/ifk4AfilpVEo7TNImDa4zQ/I/KdQBzM3W9sctRF4H7sBr6nXM7L2U7Ci8wF2b0pyCW5C8gQ/EfBXvYj4CfDEdcxZuwfJEOu68Jvl4Gm/F7o8XnKfxQtj03ZjZU7gee2+8Sz0RH8wF19VPBsamLug/cF15FaemfN+MD1C+S9+E4QH4QGXBmXiX+lncImVsb09sbge9EbAcntcX8cp3rpTkkHStx/Hn34p6456SnfrRLWbn18ABqbv+44r4PwCbSXpF0jFZ+Bn4OEGzvB0MnJHOv4WZ/QP4OW758xzeS+tmRprKxTrAvpJ2NrNL8Nbouaks3I/3SFthZeAOSW/ireU9zOyxFo9tCTO7CteTX4+X2etLSb4PHCrpDXyA/Pzs2LdxS6Pb0nNaDS8DK+AWO1fgA/8FM+PjZi/i3+7H8XEI8Pd1GXBtutZYfAyn3nVmSAqzpSAIphOSPo/30EZZfIBBm/mfbakHwUAgaShuOndyCPSgPwihHgTTCUmfxk0mF8LVDUHQdkL9EgRB0EFESz0IgqCDCKEeBEHQQQyYl8D555/fRo8ePVCXD4Ig+Egyfvz4F82s3uzwgRPqo0ePZty4cQN1+SAIgo8kkhq6vgj1SxAEQQcRQj0IgqCDCKEeBEHQQYRQD4Ig6CBCqAdBEHQQLQv15OL0bkmXV8TNLOk8SZMl3ZHc2AZBEATTmZ601PfAVwKpYifgFTNbAl8b84g66YIgCIJ+pCWhnpzkb4j7ra5iE9xHNMCFwDqSerOqTRAEQdAHWp18dDS+VuEcdeIXIa0xaGZT0zqC89G11icAknbBFwJm5EhfsWr0vlfUnOiJwzdsMUtBEARBmaYtdUkbAS+Y2fi+XszMTjSzlcxspWHD6s5yDYIgCHpJK+qXNYCNJT0BnAusLekvpTTPkhaOTSutz4WvRxkEQRBMR1pZB3M/MxtuZqPx9RCvN7NvlZJdRtdCw5ulNOGoPQiCYDrTa4dekg4FxpnZZfiCzGdJmowvgNxtMdwgCIKg/+mRUDezG4Eb0/8Ds/B3gc3bmbEgCIKg58SM0iAIgg4ihHoQBEEHEUI9CIKggwihHgRB0EGEUA+CIOggQqgHQRB0ECHUgyAIOogQ6kEQBB1ECPUgCIIOIoR6EARBBxFCPQiCoIMIoR4EQdBBhFAPgiDoIEKoB0EQdBAh1IMgCDqIEOpBEAQdRCsLT88i6U5J90h6QNIhFWm2lzRF0sS07dw/2Q2CIAga0crKR+8Ba5vZm5KGArdKusrMxpbSnWdmu7U/i0EQBEGrNBXqaQHpN9Pu0LTFotJBEAQzIC3p1CUNljQReAG4zszuqEi2qaR7JV0oaURbcxkEQRC0REtC3cw+MLPlgOHAKpKWKiX5OzDazJYBrgPOqDqPpF0kjZM0bsqUKX3JdxAEQVBBj6xfzOxV4AZgvVL4S2b2Xto9GVixzvEnmtlKZrbSsGHDepPfIAiCoAGtWL8MkzR3+j8rsC7wUCnNQtnuxsCkdmYyCIIgaI1WrF8WAs6QNBivBM43s8slHQqMM7PLgN0lbQxMBV4Gtu+vDAdBEAT1acX65V5g+YrwA7P/+wH7tTdrQRAEQU+JGaVBEAQdRAj1IAiCDiKEehAEQQcRQj0IgqCDCKEeBEHQQYRQD4Ig6CBCqAdBEHQQIdSDIAg6iBDqQRAEHUQI9SAIgg4ihHoQBEEHEUI9CIKggwihHgRB0EGEUA+CIOggQqgHQRB0ECHUgyAIOogQ6kEQBB1EK2uUziLpTkn3SHpA0iEVaWaWdJ6kyZLukDS6PzIbBEEQNKaVlvp7wNpmtiywHLCepNVKaXYCXjGzJYDfA0e0N5tBEARBKzQV6ua8mXaHps1KyTYBzkj/LwTWkaS25TIIgiBoiZZ06pIGS5oIvABcZ2Z3lJIsAjwNYGZTgdeA+dqZ0SAIgqA5LQl1M/vAzJYDhgOrSFqqNxeTtIukcZLGTZkypTenCIIgCBrQI+sXM3sVuAFYrxT1LDACQNIQYC7gpYrjTzSzlcxspWHDhvUux0EQBEFdWrF+GSZp7vR/VmBd4KFSssuA7dL/zYDrzaysdw+CIAj6mSEtpFkIOEPSYLwSON/MLpd0KDDOzC4DTgHOkjQZeBnYqt9yHARBENSlqVA3s3uB5SvCD8z+vwts3t6sBUEQBD0lZpQGQRB0ECHUgyAIOogQ6kEQBB1ECPUgCIIOIoR6EARBBxFCPQiCoIMIoR4EQdBBhFAPgiDoIEKoB0EQdBAh1IMgCDqIEOpBEAQdRAj1IAiCDiKEehAEQQcRQj0IgqCDCKEeBEHQQYRQD4Ig6CBCqAdBEHQQraxROkLSDZIelPSApD0q0qwl6TVJE9N2YNW5giAIgv6llTVKpwJ7m9kESXMA4yVdZ2YPltLdYmYbtT+LQRAEQas0bamb2XNmNiH9fwOYBCzS3xkLgiAIek6PdOqSRuOLUN9REb26pHskXSVpyTbkLQiCIOghrahfAJA0O3ARsKeZvV6KngCMMrM3JW0AXAqMqTjHLsAuACNHjux1poMgCIJqWmqpSxqKC/SzzezicryZvW5mb6b/VwJDJc1fke5EM1vJzFYaNmxYH7MeBEEQlGnF+kXAKcAkMzuqTpoFUzokrZLO+1I7MxoEQRA0pxX1yxrAt4H7JE1MYfsDIwHM7ARgM+B7kqYC7wBbmZn1Q36DIAiCBjQV6mZ2K6AmaY4Fjm1XpoIgCILeETNKgyAIOogQ6kEQBB1ECPUgCIIOIoR6EARBBxFCPQiCoIMIoR4EQdBBhFAPgiDoIEKoB0EQdBAh1IMgCDqIEOpBEAQdRAj1IAiCDiKEehAEQQcRQj0IgqCDCKEeBEHQQYRQD4Ig6CBCqAdBEHQQIdSDIAg6iFbWKB0h6QZJD0p6QNIeFWkk6RhJkyXdK2mF/sluEARB0IhW1iidCuxtZhMkzQGMl3SdmT2YpVkfGJO2VYHj028QBEEwHWnaUjez58xsQvr/BjAJWKSUbBPgTHPGAnNLWqjtuQ2CIAga0iOduqTRwPLAHaWoRYCns/1n6C74gyAIgn6mFfULAJJmBy4C9jSz13tzMUm7ALsAjBw5sqVjRu97Rc3+E4dv2OM0/R0fBEEwo9BSS13SUFygn21mF1ckeRYYke0PT2E1mNmJZraSma00bNiw3uQ3CIIgaEAr1i8CTgEmmdlRdZJdBmybrGBWA14zs+famM8gCIKgBVpRv6wBfBu4T9LEFLY/MBLAzE4ArgQ2ACYDbwM7tD+rQRAEQTOaCnUzuxVQkzQG/KBdmQqCIAh6R8woDYIg6CBCqAdBEHQQIdSDIAg6iBDqQRAEHUQI9SAIgg4ihHoQBEEHEUI9CIKggwihHgRB0EGEUA+CIOggQqgHQRB0ECHUgyAIOogQ6kEQBB1ECPUgCIIOIoR6EARBBxFCPQiCoIMIoR4EQdBBhFAPgiDoIFpZo/RUSS9Iur9O/FqSXpM0MW0Htj+bQRAEQSu0skbp6cCxwJkN0txiZhu1JUdBEARBr2naUjezm4GXp0NegiAIgj7SLp366pLukXSVpCXbdM4gCIKgh7SifmnGBGCUmb0paQPgUmBMVUJJuwC7AIwcObINlw6CIAhy+txSN7PXzezN9P9KYKik+eukPdHMVjKzlYYNG9bXSwdBEAQl+izUJS0oSen/KumcL/X1vEEQBEHPaap+kXQOsBYwv6RngIOAoQBmdgKwGfA9SVOBd4CtzMz6LcdBEARBXZoKdTPbukn8sbjJYxAEQTDAxIzSIAiCDiKEehAEQQcRQj0IgqCDCKEeBEHQQYRQD4Ig6CBCqAdBEHQQIdSDIAg6iBDqQRAEHUQI9SAIgg4ihHoQBEEHEUI9CIKggwihHgRB0EGEUA+CIOggQqgHQRB0ECHUgyAIOogQ6kEQBB1ECPUgCIIOoqlQl3SqpBck3V8nXpKOkTRZ0r2SVmh/NoMgCIJWaKWlfjqwXoP49YExadsFOL7v2QqCIAh6Q1OhbmY3Ay83SLIJcKY5Y4G5JS3UrgwGQRAErdN04ekWWAR4Ott/JoU9V04oaRe8Nc/IkSPbcOkZg9H7XlGz/8ThG/Yovh3nGOj4GSEPcQ8zRh7iHqbfNaqYrgOlZnaima1kZisNGzZsel46CILgf4J2CPVngRHZ/vAUFgRBEExn2iHULwO2TVYwqwGvmVk31UsQBEHQ/zTVqUs6B1gLmF/SM8BBwFAAMzsBuBLYAJgMvA3s0F+ZDYIgCBrTVKib2dZN4g34QdtyFARBEPSamFEaBEHQQYRQD4Ig6CBCqAdBEHQQIdSDIAg6iBDqQRAEHUQI9SAIgg4ihHoQBEEHEUI9CIKggwihHgRB0EGEUA+CIOggQqgHQRB0ECHUgyAIOogQ6kEQBB1ECPUgCIIOIoR6EARBBxFCPQiCoIMIoR4EQdBBtCTUJa0n6WFJkyXtWxG/vaQpkiambef2ZzUIgiBoRitrlA4G/gSsCzwD3CXpMjN7sJT0PDPbrR/yGARBELRIKy31VYDJZvaYmf0XOBfYpH+zFQRBEPSGVoT6IsDT2f4zKazMppLulXShpBFVJ5K0i6RxksZNmTKlF9kNgiAIGtGugdK/A6PNbBngOuCMqkRmdqKZrWRmKw0bNqxNlw6CIAgKWhHqzwJ5y3t4CpuGmb1kZu+l3ZOBFduTvSAIgqAntCLU7wLGSFpU0kzAVsBleQJJC2W7GwOT2pfFIAiCoFWaWr+Y2VRJuwHXAIOBU83sAUmHAuPM7DJgd0kbA1OBl4Ht+zHPQRAEQR2aCnUAM7sSuLIUdmD2fz9gv/ZmLQiCIOgpMaM0CIKggwihHgRB0EGEUA+CIOggQqgHQRB0ECHUgyAIOogQ6kEQBB1ECPUgCIIOIoR6EARBBxFCPQiCoIMIoR4EQdBBhFAPgiDoIEKoB0EQdBAh1IMgCDqIEOpBEAQdRAj1IAiCDiKEehAEQQcRQj0IgqCDaEmoS1pP0sOSJkvatyJ+Zknnpfg7JI1ud0aDIAiC5jQV6pIGA38C1gc+A2wt6TOlZDsBr5jZEsDvgSPandEgCIKgOa201FcBJpvZY2b2X+BcYJNSmk2AM9L/C4F1JKl92QyCIAhaQWbWOIG0GbCeme2c9r8NrGpmu2Vp7k9pnkn7j6Y0L5bOtQuwS9r9JPBwFj0/UJO+RLP4dpxjoONnhDzEPcwYeYh7mDHyMCPewygzG1Y3tZk13IDNgJOz/W8Dx5bS3A8Mz/YfBeZvdu7SOcb1Jb4d5xjo+BkhD3EPM0Ye4h5mjDx8FO6hvLWifnkWGJHtD09hlWkkDQHmAl5q4dxBEARBG2lFqN8FjJG0qKSZgK2Ay0ppLgO2S/83A663VMUEQRAE048hzRKY2VRJuwHXAIOBU83sAUmH4t2Cy4BTgLMkTQZexgV/Tzmxj/HtOMdAx88IeYh7mDHyEPcwY+Tho3APNTQdKA2CIAg+OsSM0iAIgg4ihHoQBEEHEUI96Hgkbd5K2EAhabCkswc6H82QtHST+EXrhUkaJGmL/spb0MVHUqhLmjP9zlu19eA8e7QS1od8fkzSzyWdlPbHSNqoXefvFCQNk/RbSVdKur7Y2niJ/VoMGxDM7ANgVLIuazuSzkq/fS3bx0m6U9L3Jc1VEX9RRdiFAGb2IbBPH6/fEpLWaCWsIs2QYia8pBGSNpO0fD/k72JJG0rqF/nb1PqlP5F0JHAY8A5wNbAMsBewJdBoBHcQsBEwPqXLXRIYsFg6/wLAr4CFzWz95LNmdTM7JaXdDvhD6dzbF2GSPg/8x8weToVidWCSmV2R4r+B+7n5eMqDADOzOdO5Tkt5XD3tPwtcAFyePYP7Ku71NWAccJiZ1dj7SxoJfMzMHpL0KTN7KIXPbGbvZelWM7Ox6f8awEQze0vSt4AV0j2+0e3J5g/S7OXStecDPg88ZWbjS3EzA5sCo8nKlZkdmlrFV5vZG5IOSNc/zMwmpGRnA+cBGwLfxd/LlHTe3+BuKv5cut6uwKJmtm8pfBiwBzAr8CCwHLCIpGOyZHMCU0vHLQ48Y2bvSVoLL4tnmtmryf/RA2b2qUbPK53nsxXP4ExJqwF/BD4NzIRbkr2VlZXHgNskXQa8lR17VHbuT+EuORZJQc8Cl5nZpCbZWlHSwsCOks6k9nupes+DgQVK9/CUmX1O0hhgR2C8pDvxMv40sCQwV/omCuYEZsn2/yHpx/i7zu+x5vopD/l7PMHMHsnixgC/xn1RzZKdZ7H09494GcupCat4T18Avg68KekXwE+ACcDykk41syMkfRzYH1gCuA/4tZm9Xs57C/dwHLADcIykC4DTzOzh7LgfAn8xs1fqnbsRA2r9ImmimS0n6eu4kP4RcDOwe0ryDWBB4C9pf2tcyO7V4vmvwgvdz8xs2TQx6m5c0G8DrAnckh0yJ/CBma0j6Wjc780Q3JxzHeAq/OXfbWY/SSacX633UUkaZ2YrSbrbzJZPYfeY2bJZmiOBD4C/pqCtgI8Bz6f8PYALlwclbQocBbyKVwzrm9kK6TwTiv/lfUn3Asvigup04GRgC2AkXZXiSOCV9H9u4Kl07X3N7H5JC+GFfBywOHCimR2dXe9qvDIan+4HADP7naR7zWwZSWvilfhvgAPNbNV07HgzW7FIl8LuMrOVJY0HVirPe0itnHvNbKlS+JnASem+TkjXOhQ4MEv2BnBD/tFImgishH/oVwJ/A5Y0sw1S/N+AH5rZU9QhtYgXByZmz8DMbHdJ4/B3e0G6zrbAJ8xsv3TsQVXnNLNDUvxP8fJ/LvBMih6eznku8DNqGweGTy2/AZiMV5SL4RVBTSMoE4aFQDkI+A/wYZZmmSzNYOBrwDHA68AcwP/hZSyfw/IGcK6Z3Z6Oe7z6Fruun10jf4+/N7OVs7hbUx5/D3wVF5CD8O/zs8CeKa5gTuDrxXdX5z1tgwvrOYBJ+FT8FyV9DLjLzJZMZXw8LqM2AuYws+0r7qnpPaT4ufB3+jO8YjwJl3UH4e91AnAqcE2P5v30ZPppuzfg/vR7Mu47BuCeLL7b9NhyGC74jwJ+B3ytFHdX+r07C5sIjALWAv6FC+liWwEYktI9gBf+j+HC7mMpfGiW79ua3N/teC09Ie0vDtxZSjOh4rgi/X14C7sIvxX3mTMYuKd0X3eXznF3xfkOBHYqXzcVpg2y/fWBP+Ot0yJsf7xyAS/491a9yzrP4e70+2tgm4r8jU2/1+Ct9eWBR1s47wPpmM9nYefis5uHA/emZ/XXFspi8Yx+ggvvch5vxoXUP3HBdRneSs7PMYnUUKpXbvPnVn5nTfL3f8DQivCZgEfqHDMP3vO9IO0f38J1JgPz1YlbBheW/4d7bl0hhS8MPAns3+r9VJy74XsspR1ffB95GN6LPAh4Lv0W24+AMY3eU+ld31MVVxE+oQ/3MB/eih+XytKWeG/ixhQv4CvpHJPxhujirTzLAVW/AJdLeghXv3wvdVfezeJnk7SYmT0G0wZdZisiJR2H167npKDvSlrXzH6Q9t9KKgNL6VcDXjOzJ4EnJX0JeMfMPpT0CeBTuCAFb0GYpGmtlfT7IV1jEeMknQdcCkxTfZjZxenvQbhaaYR8IGwNXL2TM1jSKmZ2Z8rjyrggAnfkg6QD8cphcfzlC3fFMJOkz5vZzXRX4eT7b0jaD/gW8PnUyh2axa9mZt/J8n9V6kG8n6VZBxf+mKtRPqSW2yUtbWb30Z1nJf0ZWBc4Iqlqcn3iYanVsjdesOfEhRHAO5LGWNb9Ts9kDF5utgAOkPQ94ADg53jlMSvwfTP7IOlHZzL3MlqP9yVtjbdov5rC8mf08wbHFtyP9yyfq4h7W64zn5ie7XNkz0DSDVSoHM1s7fT3Q7qEZ85CdLWoy8e+Avxe0vbysaafqWLMyWrVH0/jPa4q/og3wPY3s3ey4/+d1Go/xIVPJanV+yNgpJntkt7hJ83scpq8x9Kp3ktl+BH5xMhngdmBg8x72Uta6uHUoeo9zSrXnw/Cv6vl6VKpTlPxSJqHrp7O4NJ+S/cg6RK8cXYW3tMv8nFe6tGRZM/zeI99Kl5BXyjpOjNrODYx4JOPUiF7LX18s0AdPzUAACAASURBVOFdmudT3Hr4bKrH8Ac3CtjVzK5J8Q8Bn7aiavMX/YCZfTrtr4AXxKXwFzkM2MzM7k3x44HP4Q/sNtwlwn/N7JuSjsC7crMAN+ICfyzeon/MzL4r6bSKWzIz2zG7v/mA1VL+x1p3z5Ur412s2VPQG8DOeCt0Q1xP/SYu6B4zs58m4XADMAavyYUL+3OL0wJbmNkC6RoL4t3Lu8zsFrlefi0zOzPFX4OroQo11zfxVs9/gWvx7v6puA77VUmz4i3PJdU1JjAk5ecxvIIrxheWSR/zenjL6pGkylnazK6teH41SFoff4eH4a0xcPXFfsCeZnZlSrcY8Evg38AvzOzV7Bxn4rrsRvrqz+D6/H+Z2TmpAbGFmbW8NkASzMsBd1JbyW8saRSu0pgJr7DmAo4zs8np2BWzU82Cv/epxQecvoVjgUdwwQuuMlsC2M3Mrq6Tp6HpnguVTdkltlmt+uUUXOBcUbqHo2iCpN/jFWFZZz4hxZ+Hv8NtzWypVC5uN7PlsnPUfY9ZmpXx1vbcwC/wZ3kkXkZ3xme4b1Nxr4fgZXUOur+nz9LVoOuGmX1R0hN4BVrlVnzac2x2D5I2KMptFjZtTEw+oL0trj47GbjUzN4vKjIzW7xePmHgderj8RdwjtUZFEitumKA6iGrHQy8HPhBanmTPpxjzeyrWZoheCEV8LCZvZ/FTTCzFZIecVYzO1JJz5/iV8df1lj5QNrXcV3zheaj+a3c4yJ4ZZQPOt2c35/54NxcKe41SfMWradU0W2LC9gz08tdIj2T+Rpd28zOaBSf5WFevFfx+RR0M/4BDMH10QsBfyqEsKQvAiua2W/TM2+Uh+LdVA6+pbhF8Vbe6FL8xil+KVwtUujPHwB+Y2b3pffyPfz5HIv3Zg7AhdKfUmOhob66FdR8oBNJX6hznZtavU7pmnea2SrZ/iB8nCcfKL0r3eM3Kk4xD17Z32pmh7Z4zbrPSk0GKFOlVnGo9zbUYIyplfdYJ7+DgNnN7HW5m/Cd8LGoceV84GW6Lr19T1leWroHlca/ymGSDsHdsZR7ZUj6tDUbGC/rY6bnhrcyfonrjM7FdUhlXddn8Vp322z7O97qugl4G29J35D9/0ajLTv33bhlylh8UAwyPV3aXwDXta8ALFCKWyzlZQrwAj64tmgWfwTwRHqpfy/yXTrHFSQ9ftpfkKQzbPEZDsNbrnNXxL2BD2RVbm1+l4sDM6f/a+GD3XOn/R/irY4H8NbQfdTqlu9J6b9INsbR4nXvTGVkXeCfWfi2+X4Kmx0XAHnYDcD1eEXd6DrjUnm9GxfoO+DWD+V0C+CDaBsBH8/C1wCuw/XRjxVbFj9vts2PfwsPN8nT97P/p5W2U/FB4g2zNJ+v2uqce06815yH3Yqr4e7FGyoHA4f2oIzUHWPq4Xv8a8rfbLiF0zPAT7L4nzfJx2zAoPT/E8DGeG96wdJ1/4YPBs9b5zwb4I1BcNnS8B7wb3tFvJexPF1yZS28wZqfezCubhtZbC0/53Z+2L3dcD3WxnjL4ym8Rp0X1zndjpsA/TFtx1A7uFm1lQt4TWEvFfLLgJ+m/cWAY9L/5XBhPwn4R9oeSmHFANFY3L/8kLR9C7gjO//DJEHX4N6/A1ySXuJo/IP5coqbCzg8Xfdl3J3xpBQ2N97VfAEf8H0e2LjONX6B6/TmSB/D9/AW+NEpvqgky9uY9MyOwgd7rsK71ffgFin5NSamZ7AELrh+A1yZ4uoOvqX4OxrEjcEtdvI8vJnysHL6XSil+1fp2OKDWwoXxk+mbTxdlfiotA2vl4eUrulAJ65TfRJfBexM4HFc3Ud6h+vj5q/zFVt27OO4oH8cV7FcC6yZxf+oYnux+N8k709l77nYrsN159eX0q6EV7pPpO0evFcGdQYos/8L4D3vq9L+Z0gD82n/y3hDbApuxvoE8MUU1/Q95mUt/X4TN5AYSveByI2B36Zto1LceNwAYpGUhwvw72veTC78G1eB/YI6FT7eGh+Ly6cJze4BH6+5gWR9lW2XUdvY3I0GjaCm8rQ3QridG10j6g/jAntVfMBsIg2sCdpw3cHAbxvET8RXbyqHr0YaBa960NRa71xFqWVY51o/SB/afcBns/BrgJ9S24JYMIVdSxonSOGLlQtSVZ7yMLo+1nqV4634SlU/xivczfFu97qUBDFdra99KFmPpII7pMH9b4Orf1anq/VSVJwN84C3jC7CB8uXrXP+20nCI+2vhety8zR1e2Qp/mZc7XImrr/dq/xc0zPNW+fDsrJSt+Jqsby+geuqD6TLquOV4n+TY5+uEz4CuKgUdi/wuWx/zaKcp+c4CLgYFzxfJ+tNpPK+RXbPQ+je850PHyvaiGwhnVbeY5b2AVyQX0Dq0VH73f0abxnvmLbrgF9VlNUfAvuk/+9k8X8CDs5lQfpdlfS9ZXEH4o2trVq9B2DTJvfXsBHUtKz0paD1dcNrzH/iH/XMpbiL00tbqMHxq+GDm2/ieqwPyNQKqQAdg9ei4/EJN3nraGyDc1eaiaW4x/CexBHAvngLexQu0H6dpbsovaA/p3wcQ1dPIG9x7Y0LhLPIWl406H7jlWDZpKqbeWQKvx1v1QxOH+U3yYQa3nXs1qOg1pxycr24tH8HbnN7P0kFRZfp5ym4cN4vv+/s2F/jXeib6Gq9XN/TPDR4VpWVWvpt2iNL6UbhlcmcuCA9ipKJGd0F2KAiDO9d/YaKiivFD8VVUBembTcyE0a8C35BKnOFee1jLd7/U3XCBTxYCutmZkmXEFwZV2ENx3twF+OWU0W6ShPi7P8/K87dLayF+9kdr+CvpMuA4pYs/l6SeiXtD6bUw6K72vVdusyZH6LWNLEox/eQfSepDFyMV963tpDvb6XfvanoeWXpGjaCmm0DbdK4uSVzxTJm9o008PKgfOZajTVB+nssFRM6stOci7ewNk3738RbO19K+3fLZ/BdQO1o/cXAVZKuwFtmhbXBiHSN+XEdazEKvmuedbqmoBdqjCrmKO1fXBH+pKR9gDPM7D9AMUt2+5SnZVQ7U3J4vm9mxSSubfAK7Q8pf7elsIKv4qZvN+PP52ozm0qtqVx55lx5oHgH3Hrkl2b2eBr8PCvFPZW2mdJWZnNgMas2OexJHmqQdJWZrQ88JunnWX6+hVfM4KqdXc3sjtKxq+GCq5go9jUz+wP+8RcTgvagdkby1cmSqDCx3RIXPOCtPPByWmBAYbJ4PC7Yj0v7305hO8O0QeXNJW0CXJcsTfL8/qjeYyBZVkn6I11mk4NwvW5hmVIM3N0kNz89J6XdEh+nwszuSmnexN93mUoTYkmz4OqO+UsmgHOSBn3lrj/2I6nYzKyYjIek48xsmkmgmRUNpIIn0+B9zty4SgVcjZmzZ7rWJeZrQyyWnsNNkl7ETWVvSddegi4TzyHmRg1D8HLzDq5e+1DuEmQ9S1ZIyfDhKLwivB/v2RXm2IWlWz0eA25M8qdHFkgwY5g0bohPMc5H0w9NcV+oOsbSKHU2mp7PRMxH1u+37jMO7zOzpdP/06pP7yaJyZyualr2lRXH1bu/meiqaGqsb1o4dh68J7AJrh4w3CzuMrzF9tX6R7du/ZKuNRTX+W6Jd7mvwwX/ZPwjXDz9J+0vZmazVZyqx0i6FNjFzF6oiHu7UR5wk9TK0wKXm9lC6Tkeku4L/IM92MxekfSImY2pk6/JZrZE+l9lsTCtrGVhm+KDouCtx0sa3Xt2XM1M43phKXw2fJByVTP7fAo7qNH5za1Xtit2cdvnJ6xrtucNDQ5fGu/t1Tt3YaVUZUK8Oa7u2hMf+MtntL4OnGRmx0q6CB9LGIurTN7HJ6q9l1mpfcvM/lKvAiuEnny+weF4i1e4jnxfMzuv3j0kQb0SrhO/1szeSuGfwFWoE1JltwSuAp0db80/KXcr8Utc919YsJyMj3OdhPeEv2BmX6t3/VJeKt+ltWitNdAmjSfgNfgXcXvMzfDR8J2yNAvgtR0p7oUs7ma81V08wOeA7a1rOvBR+Ij0+emQzYBVzOzHbcj7KngFcJfcxnk93C/MVVmatfBBsyfwwjUC2M7Mbk41+X74dOuP4x9aYUFzuFXb534ON2m7z1qw8c6O+wTe6lvA3D54GXxQ9bBSuqHpPnbAP4QVu50sIxXo881sC1X7sMHcTn0YrpoqV96FqduN+NjKXVTbdzfiMVxtU2U7vJqZzZrd31zAh2b2RhZ2DF5ZVPXIHqerV1N2KTFHOtc6jTLXA0E0Ae+5Ppr2F8MH6Mo+TPJzz2+leQ910m2CDwT/Ke3fiQtcw3XKF6Zex8Vm9nTF8UXjqqHbDrn58QdkJsS4GqSwv949tbLzcxcmvdNMiVP4z3Drko2B65JQ39XM/lxH6JllZpvyuRC53Hhe0tFmtqekv9O9rH7ezOau+xC7zrsmrur9D64mmy/d66bAyZlQL9/PRLyh1LIfo94y0EK98AlS/M6Od70+l+K3wPWQN+IP7nO46dKFKX4UjSd0vIF3eYpu+iBczTIUfzFnUC2Ids+Ebt5KLoSu4RXREPxFrYq3CtbF/TT8Ml1/PN7aeDjtfwK3yV8xddOvx1UrxWSrBXHVytpm9mVldsqSdsYHVC/FrQj+juupF7OuSUQX4rp+cIdZ16fwm3A77z9X9WJSj2RLvEV1I14JXptUMFXvbRCwtZmdLWkhM3uunvBNgv9aXK3zYzKHXWb203S+hj2yiuvPD7xkZibpftyvxyMV6Z42sxHqmuBVqLZeA3a05JSsUY8s3deiuN4//+jewPW0UyXdamZrpvKWlyfhXfZZm7W+JK2Dq3vyiXY7mNkNWR6PS3n7IS5YZ8Yrye3o6h1UsRNuSfN0OtdEXO0zO+5Mah1Jr+HfxqO46uX8coVR9IzrhdXpzeT213XjJU3C9dsfZnHb4+V2djNrWLlL2tOSLyLVd2A3v5mNr1PeTq7XY8uusTI+6Fx8r9vh382j+DjLvbjKRfi3urglASv3v/Q+LfgxatYIaor1Uhnfjo1kEYB3uRbGC+nkLL6uNUEfr/tS+t0T/yBqthRXz/JkX/yDHoz3Ml4H5kzxs1I7IFNlHVNYEjQcBE2/+YDTXXRZusyGW8r8E/hMluY+vHX9eVwvPu3YivPlA1jn4D2G8mB1oec8Fq9IhAuUJ4C/9eB5F6Zw95bz1MKxq+EVzcW4Dvh+vFf2At6r2Ayfal517NeK61LHomM6lfPBwF4tpJsZ77EsU/EuJuITn1bHrS1WS+GfxvXBe1dsB+Imlh+UznVs9r/wu3M33uj5Mj6wPQV3cbEdyV4dH0xeLDt20RTW0P66WXw615HAlyqeyXo0MFrI0j2V/b83ldVl07P5AXBTFr9HxfGvUm02mhsuTKCB2SO1/mYOout7XRDvCTb0Y5T9vxaviCfhVminAke0XN6mV8GucyM/xwc0NqVLffKLLL6uNUHabzihI6Xp5vALn7CwMF5pzEPtxI/ipTUSuu9m/8u2yrmwPBVXDa2VtpNIdvLpxe1DZj6H9wh+Cvwj7Rf5m4/ujszupiQY8e5z8f+27P9VuIqhsGLYjGRL3OT9/I00kIi33m/EVR3LZWnqTXB6g2SJRAOHXSm8rhUTPiD9ZVw3+wpdwuxT6RnsDoxoch+NLDqKuQCTqJgL0EoeszRnVVznrPR7Z5M8bk6X8DwAr8RWKOc3/X+6dGzZEmmOdI7H8bGXxxtc99Hy+dP+UFz1cQ7eqwIXsE9l5eCJ9G62o8v++npK9te0aJ9duv6auED9couy5OnsfzMHdlVO9N6n1ly0Ziu+xyx9pdljo3tI5WdMRboxZN83fWgEmQ2wUC/d2MzAXKWw3+CCYPu0XQUcmcU3m9BxHC48d0jb1ell/BD/cN8jqwzSR/BYOraR0H2NLrOy3HRqrlLhmTm91IvTthddsy7nwT+4h3Bh9XLK0xF0VSxP5PkimXfi3eaJNDa7zHs8i+Gmem/j3fdbcdeiDQUWtRXoYLx1PEsv3u1G6dkshX/M48kmStFgtia1leSk0nnvTu/i37i++/uU7IhTuqNxs9K18JbPcXhFvwI+AFivR3ZtK3nM0pQF4xCSySA+F+NYXIVYZdJY9ODWTM9oQ2onsl2PV64/wVuie+Hqou1I5nR4o+SwVF4OBuZJ4WcD36l4Lrvi6kBo4DGSVNazMr1s2sq9iWb213XjySo9fELeRFyg3oYPcjYrY3lL/Sa8h/lIepeD8F7s1rja8hVqJ9ndQAszrPFeYl2zx9I97Fy+B1xWTcZl2dJp2wFvlOZeUhs2gprms6cfaDs2WpzGn6U9Km1fL8U1nNCRHryy/UFkgoEGrkhpLHQXrHPM/Lijqt48k8/hXeamLRNc7bNoKqAbVsRvBFyR/k+bZIWrbeaoSF8psGjRDj7FzVuxdXMVW+fYurM1adDCwrvDragNbmiwvdUgXw+3mMf98FboVGp7Ki/RVTlVXfv6inPVc088Aq+YjscF1V64oLoCV8H8Btft/pTurhA+jldeN+A91t/hre1/kRotuG/3vn7Xe+AqO+E91Al5ecZ75Uel8jYu5WOuinvtpmpM/xv1Cqdmxy+IN6Y+l/ZH4gPfo6jvcrupG2Tc7/lteA/2brrGJJdI4a3cw1L4WN74tJ1BSWbQpBHUbBuQgVJVmxIWmHWZFC4KPGdm76b9WfHWcjEYuAUuhC6m1mqisL1t6vCrST4/hdvNjjWzN7PwafaoFcfMYy2sWNJsENTMDm/hHEvgH/XtJHtjXHf5WXxq9P+ldGPNbLUG56k0DcV1u4X9vvAxg7fTf7NaZ1ZP4IInX2jjeXwg+yB8YHk01Q676loxSfog5SG/fpGfWfCPZdrgm7pMM7dO51wAtyUuLKDK934t3oupmguwrpl9qVkes3P92tKiFxXXmeZCuiosldVn8cH2FXAb6DtL518Ar4TeTN/C3niv7Q/p2PfwiiX/qKe9K0lr44Nv4Drcdi4ZOM0EU9JX8AHxA3D1UzFQehHeoi1Mbb+Nz7z8hqR7cIE7CDc2WCk7bzfT0RbyUtdqrk76aU70mqRbjTpmj/hAd9vuobcMuJ16I+S+hT9raVKK3Ob7NlxNUA+zLlO5m/AXe2eKWxmvQV9PCTeuPIMfuzsuaCfhsw73MLO/pbi3cAc7L6X9lS1NzKga4a9z/tye/i68+zVFboM81pItfQvnmRmfVDXtY8UXhXg3S3M83lWvmmTVksBqIR8n4SZ4hVvkL+NjJafhA7r74S3LadYN1jXfYBQNrJiaXLfuxyLpY2b2dpXVRpam4VwA6/KW+Rm8FToU7xIPxXt6kyvON4Zaq4Wb61h+jDezFYu80sQ9sXzd1u3N7Cm5T/ZheE9yPTMrT76Z7mRWbH/AF3u4pFTOa8z88jDVurU1YA1zq6rZcfXScrRIPas53FVzPSulmkZKb2jXPaiJ19KmtNqk748Nd6ifD0bNg5viFftVgw8tW79Q28VaCx+YfYAWvADiAmj29H803l3cI+2/U0qbqwjyLtjmFefdvLgPGgyCtvk5n1ax5Y7NRtF9CvwSPbzGfRVhhZ64kYpjMHB2H+6tqdoAH/T8Md6TqBkQr0hbowbDhffRuPptQtr+DeyX4vNB451TuXkF7za/g1t2bYqrRnI14/ZkFg/Zs6j0zIerk57E1QjF/x+k/4+l8GXaWW7qPJ958LkS3bw8pnJ1La7L/hg+YJs7/PoXtU7K1qCOv6Iszcegy/Npi3nsF6u5PjyzHt0DffBaamYDLtTrWiWk/9dRO6C2CclXBD7B4Xe4+uEK3Btbtw8cH2T4DT7oeAPJ2VQLeSt/cLPjutqj8Jb+b3EXBd/IPthNqbXqaLRU3RM0GATtwzOtq/ductwwKgYZe3D8tbg+dxRdfnCuS4Lqceo47ErH3grM1I/l7PGKrRgQLw9u3U3t4NYxeA9mjizdnPjiLceTWZbgAn0WuhxAfSoJstNw/XpeqR5DrfO2Zu6JR9G1kPY6eO9zZAov/s/VzudW8RyrKq18XGBQereFy+X5yCoafHD1Hro8QN5NP1RENPbBM5iSm9tS2iq3vC2NDbWYt6bmrfTR+dtA+34ZrNoVP2bFR9cLvgucLelPeHfmGWBb+eIVF+Mf1ol4d2d53F/CN/BW1dZpexGf+CLrWRf1P5KWM7OJAOZ6zI1wM8XZUl6+gH/Ec+ODG8JXVF8fnw1XdxV7Mxtd57of4t7vesu0mZWq9fVRxR64ANsNL/iSNBX4o7W4qEJG4Wnx0rRfzMQcjI/ifwef8JIvD1hMpngMuE3uh6dyZaK+YGaLNojOl6zbFW+hT5H0W7yVPStuhjbtOZovyPA9vGytnx3/rpm9K6mYKfmQpDnNbAdJq5vZvxrkYw/c3v6lOvfwZHqf1+DP8DvmapiR+LyLugtit5E9cBXmWPOVgD5F7fJ1hrvb3Qh37TwbSQ0laTl8QHErXP+PmZV9+bSLuj54zBcUeVjSyDrP7Gbgc0mNdi2urt0SV3H2mXT9raldGLvMH+ST1a6lYqywGQMt1M8G/pkNnO5A1yAK5lOmV0s6KSwNVqbCvbWZ3Zid69KkczwIX2DgFnywsJhduhc9Y1uSAM7yMxWvVP5sZrcV4ZL2N7Nfpf9n4N3zcXgtPz47xRt0rb1ZiZm9jbcke8sV2f9i9Zc18I+t8H2xOd7q2yvFrWxmj6f8LwYcL2kvM2tU8Mr5fhFvbXZDvhZsPYdd4D2dR/GKpezorNdIWtvMrlf1qkCYjykMSh/wILzin5Li3koV3Ie5QM+O/UDSFDMbmwU/I2luvGK7TtIrdK0perekH9B9lmCx9GGjtUGLtMdLOivlqRgwfglvvEwPqiqtT2bxx+EVztq4UH8DuEg+Lf9b+LdwJG4RdFJ/ZFCS8F7QynT5+jnRan3wzAM8IHeXkDciNsbLwNuSdsLHdY6Uz8BtJ7dJOpY6y/7hpo7fpn4jqCEDNlCaHv5wvJAXXhOvszTQltIsgLcEFjaz9dNg1er4ohafKJ8zHfMwrgbYChdYV+PeGk9u0mJrO5KGWJ2p9tM5H2NxXebUtD8Ur/Rmxi08ytPBh+Gj+y2P1icLgB/TfXBnbTVw2FU6R03l3VckHWJmB6mB47Zmg1u4muBiS64YsnN/Cx8f2aTOtb+AD/heZb4E4QX4oOY2uMD7Jm5eu0dK3+u1QacX8gWTd8BnYq+Nq2GGmtkGKb6Y8l+zXB1eHlZOwnI+fLbzytVXaUs+pzntqxP/hapwM7tJbvX1fbwlvZO5F8eG5+tF/m6ovvw0A4/J+EzxRgul12XAWupmZpKuTA+r0jwQn814Gm4fCm6kfx7eAqjHW2Z2Kd5ynw3Xw+8JfDxZgVxiPXCG1UcekVTVylusKnFvSS3RI3B7ZNF9NH8eXPVTmGzNnsLeLwv0lL8pSfD3hAuAE3D9c3k9ybmBh+RWPt1cKMvXID2LZKoqd3+6rZk90MM81GBmB6Xfbm5iU4OhFTXYf4GLJe1I7cLXs1JSk0k6y8y+nc5bWPachbe6ljCzzSVtYmZnSPortQ7CmrknHnDMrLjfg5Ngmovab/d9+Vq0BtMaBx8C7xU9CzN7Se7rpD+ZoMwirYxlPoWU+RFKQVVueauEcK9pQQ18P/7NNGwE1WOgHXqdgduNVz58SXeZ2cqlmn8ibiFwbtUh+ArwC1Scax5c7bClNfGs1y5Sq6RglnT9ec3swDZfZzLwVauzIK2kHfAZhjfANFekB+PWPJXml2rRNDNLP808ryKubssoxd8O/My6nFetha9U89lWr99iHguXFNsAnzazhXtwbG7j/aCZ/bMiTc0zSwLuPjP7jNK8BLn56Pdx09E7213BDySSvonrn1fA1aib4bbqJ+G6augyMZy2+Lq1aqrXej4ewvX3T9I1x8HwFbQOxxs3v8AbEvPjqrdtrc7ck3ZTTwNhZqek+Bup47W0pfMPsFCvfPjWNQHmRvwjLFxvroa3SE9tdF7rgR/x6U0j4deHc95mZo289CH3AFks1HCHuSvSYmJPt+S4O4CWW+uSDsZbFpeQFURcT/yAmX2qwbEt+xLvKfLB901wQb48rrP/GnCzZR4B+3iN/YD96T456r+4Pnc/+QSzi3B96el4b+nnltywqq+e+WYQ5IOn6+D3/08zm1SvUi+wOt44+5CHUXWiLsLf01y4gcX6ZjY25fkO3L1AvTy2reKRdBVJA2E+WWsIbglYrPPQsBHU9PwDLNQrH751zQCtcrq/mZndO90y2YD0IX6H7nrkYkZs3tIdhHfbv9cOYVXKxx/wqdGXUluzX5ylWQQ3f8vzeTNtQlLV4K6Z2WKS/oabklZaaCRd7QRqVyZaMevu9zZPf8VbhdfiPbvrcZ84/TK2oooZpZJGWIWP8hS3kZldnv43dE/8UUDS0rgZJ/h4wf0DlI/V8IbEG2l/TtyVwp8tTQCSNMnMPp0d8whustnQZ3yb8lepgTCfhDWYJo2gZgyo9UsmvD9O1jrJWBw3GRuBt9hXZeAtdnL+hutF/0F3PTK4HX3BVHzQbYt+yMeceAvxy1mYkZbIk3QE3i1+gNrR9LYJ9SaCspG1AfhKN4fQtaTfLSmsr3wGH8ybhAuZD6rGONrI5ZJms1o/3htL+pKZPZEnTCqxA4DLU9B8ZnaKpD1Si+ymNAYxwyNfe+Bv+HdauL1dWtJTwCbWf6aL9Tgef/YFb6awvGf2TumYN9JA6e+sdvbx3+Uz29tJ5bJ/0JLJZXOsHycrNNtwk79H8A/9cfyh536FG3quG+iNPkwSms75fJiKhaXbdO59sv+bl+J+lX6/ULVNp3v/FF5hPIRbs0wh87zZ5mvlfrzvxmd83ocP8I/J0hUuE4ZnYX3yzDednuU30vf6Gpl7ZdyE8Ld0X+z5SHzOw/TOZ9VM9Hvp8j5a5Xzt/ZSu0md8m/O3Aj6P47X0+3+4D5wi/uaUp3+SeZNs+fwDBzUETQAAGE9JREFUXEjuwWedFR7qvgicksU39Fw30Bvu5nSDBvHF4rPdvNK1OR/DcV32C2m7qCQwrqLkua+N127oRTH7P4q0CAJpCnkW9wlcx3ktriK5nmymYhvzumISPk8Bt/fXs6DkxxvXMU/G1YhH4w7Y5ikd2yfPfNNjS/fw6YrwB0kuaUvhQ6j1itorD6a9yOfF+DT7oWnbA7i0xWMrfca3OX8zp2ezZHrfQ8kaXfSxETTQOvXCO+A9wPLmq3JPGyBTE891cvvjKpPBdnTdW8l/sVzee7iT/RpTQjXwStfmfFwH/JVanfQ3zWzdLB/L4jV/rnPfvQ3XzvWCNc61in1J38EtD+Y1s8UljQFOsGSFlN7/Cbggm6bGsrTcXLuRJNwta9vUT+m8N+EmfsUary/gPkeWlq8vewku0LewzOHaR4V6A/KqcNRVFSepmBtxOu7vp+Fkqz7k8+N472FtXD78E3fm1ZKJoNxJXqHTfsjSjPc25q/hsn9pfxTeu/uH3NnbYMvW1m3EQOunX5VP8rgZdwfwArXWGFvgNedvzexVuee6n2Txl2f/Z8Hthv/dz3mehpk1m/24uJltmu0fovbPTgP32ZJPsDld0p7ZftGF6w+szv98/we4E6g7AMy9EH48SzfVzI7vp/x1w7wl01aBntgSt7LZydy6aCSwhKTX8Qp/ZrzV/kKqWAwXcI3y2ueKt42Mk3QepQF5YBZJy0O3xb+LewbAzD6XKvQdgfFpjOU0M7uunZlMwnur3hwrX1f4FHzxkKYutHt47gVxb6mzlp7XnHjvtUg3rRGEjysugjd6WjLFHmihvgne+t4Ln2E3Fz7bDpg2Zf7ibP853C1ssX9RfjJJ5+B60+mG6rhaTX/fkbSmmd2a0q5B9wGadvBSGpgrfF1sjU8fL/LTnyaey2ZCa9b0n7RfPJP3zOy/LscgmXDlFcDfJX2fkjmkteDfegZjc1xIvQJgPtA1a6MDJP0X782djzdIyoJxRqLegPxzuJqxiufznVShH4CrI48Blk8V3P6WWWv1Bkn7mE/rr/R51GIFuSXe07orDZCehs+ubodK4yu4d87huCq2eNdv4KaWBc0aQQ0ZaOuXolX+oaQrqJ3Z1RvG4LMqpwvJ9ngP/CVNxJeF+xddPhq+B5yRrAOET3rYrh+ysiNu+vl7vDDfjhfMIp+PU13I+zzxxcwGt5DsJkn740J/XXzyzd+z+OKZ5L0ww5fh6zPKnMZlYS0titBDFsCFwQR8LsU1LZTnhUiT4vDBu/Nwv/SvtjlvfcYqZub2BEnL4OVyQ9yD51fNbIKkhfHvpk9CHR/khC6fRz3G3FfUzyT9HB/nOBX4IKl6/9CXMpMaV2dI2rTcIC3RrBHU9EIDMeDScIX4HpynGH0vfv+PJusktvk+qlytXlyRbk5gzoF41un682XbIvhU6EOn4/UH4fb8F6Rt5+l8/1eQuU/FBen4frqW8BbZufjA4q9wNVwrxw7H7dT/DXx7oMpLg/zNgrcij8OF3alkfvlbOP4mfFxp1oq4GeZ+8dmcv8etxo7BTan3pk3WbjRf9u9IvOX+ED6eeAnwy1bPP1At9WPpmtl1PbUzu86hvi+YGqy5Tru/aei1LtmiHoSbZJqkW3FhWuletadIauRuwMzsF+lP+XpHJ91hW90VlJG0CW6F8yfgpKQrHAasKOlVM7swS7sUbleeq7HOLJ+zl1wKnC9pM9yW+jJceLYdMzNJz+ONlKm4jf6Fkq4zs33qHSefqLY1/hFfRa13zxmFs3BB8xUyp2StHJgm1TxrZmdVxdcL7wly1811sRZmhabv4lVcr76vdfXw7kjq03awo5n9Qb7s33x4RXcWbv0F7sd/J7zRuAu+3vDJrZ58oIT6EEtOtSQdasl9aRKKPTqR3JnVmnj35BZzZ17Ti0auVsFbazfjE6fAP4Lz6PJK2VeqpvjPhheI+XD/FvVmtk6Pd78PtQNWM+FmhcV6jhem/B2Er0z1Gdzv9fr42EhbhLqZnSRfCvFSfPbvrmZ2ezvOnSNpD9xl84t4C+wn5h4aB+HO3f5El0XDrPg7+AmujpiEl5f9bAbw7FmHZk7J6mI+qWaEpJmsl94HW2B13IXxObg+ujfjE5tbaS3ZAmuf1VqRrw2AM80dh6knjaBGDJRQbzSzq2XdkaTjcN8xxQDhdyWta2Y/6GP+WsKae61bqGgtJw6TtGUbrz9txqqkOfBu3Q64cMhns/6OrudazGzdvF35aMBMVjtF/lZzneTLcg+aBZuRJuyYLyixAF3TtHuNpB/lu/jqQBNxH/2rWfvd2s4LfMPSTOkCc1Pd0/FKrLBoGI5bNHwRn3i3bNp+lRo2NX6QZhDeT7+vpp7V85TGsJoYDjxOPy6Ggk/vXxfv8WyDq93OsZ55+3xJ0lG4SSq4yuhQa6/55Xi5W4hFgf3St/shLTaCmjFQQr0Vi4lWWBufDFFMtz0Dnwo/3UjdygXoWthiQXzyAsC1krbCLRvAhdc1tBFJ8wI/wnsBZ+DLxJVNsdbHewuj6XrnW5FZGvUT8+Q7ZrZbtjss+/9OEnxT5X46XsDVJH2lrJ67uE54W7Dk6lcltxfmVjCbUm3RMF19/PeRE5PQ/jmuwpqdTIXXguFAvyyGUmBmH+CNqqvltuZb46uhHWJmx7Z4mlPxMb7Cnce3cYHazrklO+HLEj5mXT7md8AnXrbSCGrIgAh1a81iohUm462vomU0IoVNFyT9ENeZ/4fMp4p8NXDDK6k96Wp1DsL9ULRFnyvpN3hhOxGfrVdvcYlLcT3hBGB6Tnq5Q9J3rLTKjaRd8XU1C8YlNdZJuC75TVwY9AkzOyRVukeYWb/o0HMkfRU37VsYr5hG4WqVJalj0VBu1c/IZHrdm6i2TKq73F16D58ws7YsC1ePJMw3xAX6aHyg85JGx5SYHnNLjOpl/1ptBDVkoO3Ue4V8eSzDa/tJ8kkMho9S39no2DbTcF3J6cDeuF33AbgZVhFeXiRjuJmtNwD52wtfrGQbvEIB707OjLu/LTxdngpgZidIuhq3FGqLJ86ky23XAFczDsNbp/8wn0n7RXx2LzQ365zhSQKz3OPDutazrWs4kN7DqP7UqUs6E592fyVwiPXOS+T0mFtSuewfrTeCGvKRFOq4/456TE+/B03XlWyiY+wTZtbqCjK3S1razO5rx3VbxXxm32dVu8DEFWZ2PUzrrv8K75IvKmkXM+uPma8Tkx73Amp1uX21iy7zvqWVfSQNMrMbJB2d4nKLhl1xwdOyRcMMwt/w8j6e2hmlBc0MB/p1gXG8An0Lb2zt3qCR04iquSXbtyl/BataWvYPz9graSC/aSOoFQbU90u7kbQmviB1vw6UZgNwS9JgXcl6OkabTgsfSLoPr+SG4BXLYymfM8QgnKT7gS+aL5+3GO4PZPV+uM5pFcFmbfYRJOkf+Mf3a3xFnRfwtTnbuoLTQCHpfjNbqsW0XyAZDhQt82Tl1A0zO6R9uWwPaWwH6we3wZLuAD4L3JWEe82awKVG0ANFI6jl83/Uhbrch8I2uDXH48BFPRgU6e01KwtnworuaBKqhY5xuULH2EbTqGb5HNUofqD1ueruxKhHS+jNaKTBrHfxSrNwe3F2ar2vgS8hOAqvZIuKdbF0bMP4GQFJJ+KudLv1+NSGxR0GkpKlVDfaaSmlOsv+mdkF7Tj/R1L9Il+5fuu0vYjbfsuaL+jaFoqWhaTNyy9CUm4q2HBy0nTI54w+CDdc0jH19q1NzqwkDcfdKBS69Vvw9Vmfacf5C6zL7QV0eeYsOAXvXtd4ouxB/IBR6vHtIKlbj89aWNxBM/aSfY2scdra8jWzs+WTnIpl/75mddYX7g0fSaGOz2q7Bfj/9s49Vo6yDOPP0wuUUjEKmhSkgViUAqVcyk0oCoiCVJB7iFAvEFHAQgiN1ipCUMGUaywpINIAFirITSitoBaQNDRQsK2VkFZAGsRwC4SLILSPf7zfnJ2d7tndc+abndk97y856Zmd2ZnvbHff/eb93vd5psq0GkAymt3UAJgJy9P291irHONQZ0Zmu6guynkwaeLkC/fk8NihMU5Ok2BOqp2AWhBI53LflLSoyWla7S+TqW0e18rhaj5sAjYVKcu+iOMcNM1SQKxXPI3FGpi0yYhwjcE7HWXoyvQLya/B6qz3h9WlLgBwvQrynmxw/cNh3WAnwN6kCVsA2EnS3g2es1GO0ekMbKD33eixgsdwCcwN6E40XmQ8odF+SU82OLYUSN4s6ZT+HmMLw2QG03WSK1Uzl39c0l5Fjz0PJF+QNC7i+dKl0OsReY2rK2fqMimAu0MO8yhYLfgnSc4FcJeCBEGB/BumBHck6meXb8FuoTdCkR3TnQHRVJo4LyRHwWae42G2aTdo41b/fcK/af/L9Owe/eyvQmoiYef0Rsij75lst/EeTzpSXyJ5BOxz9PGoIyyG2HLIhZZCd+VMvRGhdPB4ACcqOOp04JojJX3Q+kinDMKX/A9gaYFfwbRBEmni6dFud8044gNYSvBwAP+SdPYAzzFKGTckkluW2AORHsdMmADfZjA9dcAC3f8AXCdpZjhuX9jrPAHW4j4cwDuqOYFNhb1G24bjtoDVkxdl4BKFAmbqSwAc2uCLP875eyWoO04WkjNgKnc/lXRLgddZJWli+H0EzHJxoyqeMDvNLhImlVILARyVfNBpLjkLJe2ZPU9ZkLw4CeD97H8Clha9HXbHMQ3WRdrvc6pCal1ko10wqeDcWY12S6Hz0pXpF6c3oMkcrJV0bebx0wFsL+mHec4vaTZNSfBykt+GCWhtSO2P1XzUd7cm6UM2UBoleQ3MsuwgWNPRcajvErwbwO3sgDzwYGknOEtaS3K4TIdlHsmnaJaV/c4eY1U55UGdkfFOrvFC+Nkk/ETFZ+oRIDlaZr3nDIBQ1jVZmTchTap2ZbuNLm1cZxqAn8O0+/s0emI1H5Fcj1q1B1FLU/RVvySLg6l/xwBYJGlK6jxnwjx5t0NB8sBFQvIRmKz09TAFx5dg3ZjpGeiFsEXCPlSs3eKQw2fqOSD5OdgbeAyAcSQnwT6MZ5Q7sq5h02xAB/qkanMvTpHcGcBc2ILc3jKP2+ioPYG6RD/kXZp922sAxrLz8sBFcgpMtO4sWMHAtjAnsj6RPZLnDPUgTvJBmG77G2H7YwAWSPpyjPN7UM/HFTAXmD8AgKQVJA9s/hQnxX9J7iBpTfpBmuN8DBGl38OajIquhmqH+0LPwmyYrodgE4KOygMPlnY6RlPNbu/BZuQND4s9ti7kE0p50Mq0X6J5K3tQz4mkdZlJZaW6ASvO+QAWkfwZaqWhk2ENXDEaPnZTxnC6LFQzS7mD5H0ARimu8UKhtNkxmpU6SJ5bGamDirA+/ToGOY9oX3Ye1POxLqRgRHIkrP40WrtvryNpUWgkmwHg++Hh1bBb9tyKklUJ6EBfvny+pDckvU9yNMkzYNUh57AmJ12H2vDV7CCtOkYbSh1kKktGs94UJ+m4HUrMAvAoyYdhr8EUWJVWFHyhNAcktwJwFWxxiDDj2LOrUFvsVIt+ulqfAnCapOWtujGrQBsdo8sk7dPoGKeeEDv2DZuPSXo12rk9qA+OkGO8SQU7ufQyIXc+C6ZZfTnM+WgKTF/9NEmPR7rOIQCWSoptdjCQMawCsGuyMBzePysl7Zw6ZjMA4yQ9U9IwWxJSBYl59mhYg9EOYXflpQ6qAsltsHGaKorPgqdfBok64OQyBJgH4CZYZ+EyWB79aFhgn4Naa31epgGYS/J1WEfjIzD/x6yXa5EsBvA7kklN/ulImZTTrPAuhdUtb09yN5jhcWXSLzR3+++gZp69Daz2P2vWUmWpg9Ih+UuY9O5qpEpsYe/L/Of3mfrgodlnTYBVvxTh5NLTpFMSJNdKGt9oX8TrbQ1r+jkPwNYxugQHcO1hsECeSFg8CBOhWx/2L4cFv4dUM0vo61StAjSvzr0BLKvqGLsBks/A7toKWfPxmXo+CnVHHwJsSP2edZjZgEgEMa8pACbC9PfnwGbsHUPSBljN/Nx+DvlA0puZSqqqzbgammenD2gmheD08SyAkWis1pkbD+o5UM0sY0zYfrvcEXUdO5JcCVtk/nT4HWE7ZhnclbAv32sALJH0fMRzN4XkbZJOYM1oog7V5FZX07wph4e1hukw4bEq8TCbmGe3IYXgGO/CfHP/jPq1hzimMJ5+GTwkdwFwM2ryoa8CmCZpdXmj6h7YQbu90F16IIADYAt7zyijDV4EJMdKeqm/vzX5G8Oi4ywAX4J9qf0RwEXKKDeWSUghnYr6MV6fWvxtKYXgACS/0ejxWJ22HtRzQHIpgFmSloTtL8A8SHvCaLgMQqnXa43kA3KccwuYocrnYWmYrWBlZA0/XLEJlS5/UofsFssiKWkk+RiAY2BSCKvTayVO8Xj6JR+bJwEdACQ9RDPucNqApr99Cayk8SLYXc9WAIaRnCZpcbPnD4BHUz9zFNmbtBWhUmoDyY/210VK8909DybmlS5zK71ypL/UUUIqhdRICuHXxY+wuwjptYsB7IT6tYcoKUefqeeA5F2wN+/N4aGTAewp6ejyRtU90PS3fwSz+bsOwOGSHiO5I4BbkwqLiNcrTU2T5D0AdodVvaQrpaaH/StgOf+6bkxJRfm2ts1g0mQkN0WXSSF0CpKPwpQqrwDwVQDfAjBM0vlRzu9BffAEdbULYXlawCoqLuhw/XPXkilpfFrShNS+p2IFdZL7wVrYx0gqRU2zVR6Vwb+zU+OJCcm9AKyT9J+wPQ3AsTCT9QskvV7m+KoGa16taXOVaP//nn7JQQjepQv8dzHpssVst2fM2caVKFFNM+TUv9kop04yWWS/N2jB3IX6iojSAyKbuwIJwFqYVAbC63oJTMtnN9gd2HGdGWnX8H5YdF5D8iwAL8Lku6PgQT0HJCfD0gfboT4PGsUVfAgwKYg7EVYmlxZ6GtX/0wZOmWqaLXLqy1FvQD0j/VTELe0cFGrhCkRyRerL50SYb+kdMEXKvxU+wO7jbFjp53TYWtLBAKIt2ntQz8d82IdwFSI2ywwV1J65RAyqoKb5NoBVNIOEdE59+w6PIzc07e/0l+5wkiNk/qqHoF5x0GNMhpSm0duwfHpU/AXPxyuquBO6AwD4LkxNcxvYre4DAM7s8BjuRM0Ao49uykeTPBLAZQC2BvAyTJDqaQC3wBqTXoWl0f4ajh8PwBdKAySbxopYOj++UJqDoP53EoBsZ1gsQ2OnxyH5JIAvSno95KMXoJaPniCpMvnoUKFzMKzmfneSBwE4WdKpoTx1LIAHJL0Tjv8MbHHaVRoBkHwFwDoAt8IE7Oo1ISLJLHtQzwHJ3wLYERm1NUUyNHbyQbJZiZhUcyPqxFieQ+PFxrckTQrHXA27+7sgbEcXNcsDySckTQ7BfXeZl+yKZPxOc8KC+aGwieCuABbCSnejdqB7+iUfe0n6bNmDcPrlnQaPbQ5rdd8StkjVKdJytKMAHA+Tlzimi/LRb4TW/0cAzCf5Mhq/xk4DgiLnYgCLQx3/SQAeInmhpDmxruMz9RyQnAdgtqR/lD0WpzkkPwJbID0VwG0ALpP0csljWg7Ls38Fphs0DsAekhTy0TdK2r/MMaYJ3dLvwdIGX4c1jc2XO321TQjmR8AC+nawMtsbJL0Y7Roe1AcPyadhZgHPwXLqieeilzRWhFAHfi4sCN0I4KoymsNI7pHaHAabuX9P0qRuy0cHLZ10CW9lFnOrDM1/YRcA9wNYIOnvhVzHg/rgaaW855QLydkwYanrAFxdpjQyySWpzQ8BPA/gUlXYui4LydNhHdTvwdaQkklM6bX03QDJDailq9KBN6oBtwd1p2cJH6L3YUG0sA/RUIHkGgD7KaJJshOfqi3EOE40JGW9M0sj5FKPxcbdx93kCvRPmMGDU2E8qDtOZ7gH1oizHAXZmHWAmQCWklyGAhx7nDh4UHeczvApSYeVPYicXAvgL3BZjErjQd1xOsNSkhMlrSp7IDkYKencsgfhNMcXSh2nQFKuQSNg3qjPokvLX0n+Ala1cy8qJg/s1PCg7jgF0klz7aIJUgdZvKSxYnhQdxzH6SEqU/LlOE61IXl8kFsAyR+TvJNkVB9ZJz8e1B3HaZefSHqL5AEw+7rfwMyynQrhQd1xnHZJLACPgFnWLQSwSYnjcRrgQd1xnHZ5keS1MB/S+0OXrMeQiuELpY7jtAXJ0QAOA7BK0hqSYwFMlPRAyUNzUnhQdxzH6SH81slxHKeH8KDuOI7TQ3hQdxzH6SE8qDuO4/QQHtQdx3F6iP8DfZvdgPep8VkAAAAASUVORK5CYII=\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"rlcEvP9tOSiy","colab":{"base_uri":"https://localhost:8080/","height":361},"executionInfo":{"status":"ok","timestamp":1609628227258,"user_tz":-60,"elapsed":188575,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"3e93ce38-87eb-4411-a3f1-093a7479abde"},"source":["ner_type_to_viz = 'ORG'\n","ner_df[ner_df.entities_confidence == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring ORG labeled tokens in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":5},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"ks6NDXg7RXG3","colab":{"base_uri":"https://localhost:8080/","height":363},"executionInfo":{"status":"ok","timestamp":1609628227683,"user_tz":-60,"elapsed":188986,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"b6278d5d-ece7-4e76-e31f-ed2467c3bc81"},"source":["ner_type_to_viz = 'LOC'\n","ner_df[ner_df.entities_confidence == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring LOC labeled tokens in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":6},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]}]} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"NLU_ner_ONTO_18class_example.ipynb","provenance":[{"file_id":"1CYzHfQyFCdvIOVO2Z5aggVI9c0hDEOrw","timestamp":1599267946314}],"collapsed_sections":[]},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"NYQRU3pRO146"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/NLU_ner_ONTO_18class_example.ipynb.ipynb)\n","\n","# Named-entity recognition with Deep Learning ONTO NOTES\n","\n","Named-Entity recognition is a well-known technique in information extraction it is also known as entity identification, entity chunking and entity extraction. Knowing the relevant tags for each article help in automatically categorizing the articles in defined hierarchies and enable smooth content discovery. This pipeline is based on NerDLApproach annotator with Char CNN - BiLSTM and GloVe Embeddings on the OntoNotes corpus and supports the identification of 18 entities.\n","\n","\n","Following NER classes can be detected by this model\n","\n","\n","\n","\n","|Type | \tDescription |\n","|------|--------------|\n","| PERSON | \tPeople, including fictional like **Harry Potter** |\n","| NORP | \tNationalities or religious or political groups like the **Germans** |\n","| FAC | \tBuildings, airports, highways, bridges, etc. like **New York Airport** |\n","| ORG | \tCompanies, agencies, institutions, etc. like **Microsoft** |\n","| GPE | \tCountries, cities, states. like **Germany** |\n","| LOC | \tNon-GPE locations, mountain ranges, bodies of water. Like the **Sahara desert**|\n","| PRODUCT | \tObjects, vehicles, foods, etc. (Not services.) like **playstation** |\n","| EVENT | \tNamed hurricanes, battles, wars, sports events, etc. like **hurricane Katrina**|\n","| WORK_OF_ART | \tTitles of books, songs, etc. Like **Mona Lisa** |\n","| LAW | \tNamed documents made into laws. Like : **Declaration of Independence** |\n","| LANGUAGE | \tAny named language. Like **Turkish**|\n","| DATE | \tAbsolute or relative dates or periods. Like every second **friday**|\n","| TIME | \tTimes smaller than a day. Like **every minute**|\n","| PERCENT | \tPercentage, including ”%“. Like **55%** of workers enjoy their work |\n","| MONEY | \tMonetary values, including unit. Like **50$** for those pants |\n","| QUANTITY | \tMeasurements, as of weight or distance. Like this person weights **50kg** |\n","| ORDINAL | \t“first”, “second”, etc. Like David placed **first** in the tournament |\n","| CARDINAL | \tNumerals that do not fall under another type. Like **hundreds** of models are avaiable in NLU |"]},{"cell_type":"code","metadata":{"id":"M2-GiYL6xurJ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614375794950,"user_tz":-60,"elapsed":58377,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"b399183e-704a-42b1-e16f-697ab6795204"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n"," \n","! pip install nlu pyspark==2.4.7 > /dev/null\n","\n"],"execution_count":null,"outputs":[{"output_type":"stream","text":["Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple\n","Collecting nlu_test==1.1.3rc2\n","\u001b[?25l Downloading https://test-files.pythonhosted.org/packages/5c/84/241410ba610c9281afc8e1cffaa352f5ca83fe6e2574f1cfcdf3334dc81f/nlu_test-1.1.3rc2-py3-none-any.whl (158kB)\n","\u001b[K |████████████████████████████████| 163kB 5.7MB/s \n","\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.19.5)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.1.5)\n","Collecting dataclasses\n"," Downloading https://files.pythonhosted.org/packages/26/2f/1095cdc2868052dd1e64520f7c0d5c8c550ad297e944e641dbf1ffbb9a5d/dataclasses-0.6-py3-none-any.whl\n","Requirement already satisfied: pyarrow>=0.16.0 in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (3.0.0)\n","Collecting spark-nlp<2.8,>=2.7.1\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/8d/a5/a5130215b43f3bd0e98bd16c471d36dafeab8855ca17789d4927337fa7dc/spark_nlp-2.7.4-py2.py3-none-any.whl (139kB)\n","\u001b[K |████████████████████████████████| 143kB 7.6MB/s \n","\u001b[?25hRequirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2.8.1)\n","Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2018.9)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->nlu_test==1.1.3rc2) (1.15.0)\n","Installing collected packages: dataclasses, spark-nlp, nlu-test\n","Successfully installed dataclasses-0.6 nlu-test-1.1.3rc2 spark-nlp-2.7.4\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"Gph8XOL1Pzpl"},"source":["# NLU makes NER easy. \n","\n","You just need to load the NER model via ner.load() and predict on some dataset. \n","It could be a pandas dataframe with a column named text or just an array of strings."]},{"cell_type":"code","metadata":{"id":"pmpZSNvGlyZQ","colab":{"base_uri":"https://localhost:8080/","height":486},"executionInfo":{"status":"ok","timestamp":1614375848849,"user_tz":-60,"elapsed":112266,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"e10d0a3e-7aed-4f50-813b-6d889365fd2f"},"source":["import nlu \n","\n","example_text = ['People, including fictional like Harry Potter.',\n","'Nationalities or religious or political groups like Germans.',\n","'Buildings, airports, highways, bridges, etc. like New York Airport',\n","'Companies, agencies, institutions, etc. like Microsoft',\n","'Countries, cities, states. like Germany',\n","'Non-GPE locations, mountain ranges, bodies of water. Like Sahara Destert',\n","'Objects, vehicles, foods, etc. (Not services.) Like the a or playstation or Playstation',\n","'Named hurricanes, battles, wars, sports events, etc. like hurricane Katrina',\n","'Titles of books, songs, etc. Like the Mona Lisa',\n","'Named documents made into laws. Like the Declaration of Independence',\n","'Any named language. Like English',\n","'Absolute or relative dates or periods. Like every second friday',\n","'Times smaller than a day. Like every minute',\n","'Percentage, including ”%“. Like 55% of workers enjoy their work',\n","'Monetary values, including unit. Like 50$ for those pants',\n","'Measurements, as of weight or distance. Like this person weights 50kg',\n","'“first”, “second”, etc. Like David place first in the tournament',\n","'Numerals that do not fall under another type. Like hundreds of models are avaiable in NLU',]\n","nlu.load('ner.onto').predict(example_text)"],"execution_count":null,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
embeddingsentitiestokenentities_confidencener_confidence
origin_index
0[0.2901900112628937, 0.8049700260162354, 0.311...[Harry Potter]People[PERSON]0.999600
0[-0.10767000168561935, 0.11052999645471573, 0....[Harry Potter],[PERSON]0.995300
0[0.013899999670684338, 0.39162999391555786, 0....[Harry Potter]including[PERSON]0.953400
0[-0.20130999386310577, -0.14045000076293945, 0...[Harry Potter]fictional[PERSON]0.883800
0[-0.2687000036239624, 0.817080020904541, 0.698...[Harry Potter]like[PERSON]0.965100
..................
17[-0.453359991312027, 0.5522699952125549, 0.218...[hundreds, NLU]models[CARDINAL, ORG]0.681000
17[-0.5153300166130066, 0.8318600058555603, 0.22...[hundreds, NLU]are[CARDINAL, ORG]0.920500
17[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...[hundreds, NLU]avaiable[CARDINAL, ORG]0.841900
17[0.08570300042629242, -0.22201000154018402, 0....[hundreds, NLU]in[CARDINAL, ORG]0.973100
17[0.4970400035381317, -0.013454999774694443, 0....[hundreds, NLU]NLU[CARDINAL, ORG]0.936900
\n","

217 rows × 5 columns

\n","
"],"text/plain":[" embeddings ... ner_confidence\n","origin_index ... \n","0 [0.2901900112628937, 0.8049700260162354, 0.311... ... 0.999600\n","0 [-0.10767000168561935, 0.11052999645471573, 0.... ... 0.995300\n","0 [0.013899999670684338, 0.39162999391555786, 0.... ... 0.953400\n","0 [-0.20130999386310577, -0.14045000076293945, 0... ... 0.883800\n","0 [-0.2687000036239624, 0.817080020904541, 0.698... ... 0.965100\n","... ... ... ...\n","17 [-0.453359991312027, 0.5522699952125549, 0.218... ... 0.681000\n","17 [-0.5153300166130066, 0.8318600058555603, 0.22... ... 0.920500\n","17 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... ... 0.841900\n","17 [0.08570300042629242, -0.22201000154018402, 0.... ... 0.973100\n","17 [0.4970400035381317, -0.013454999774694443, 0.... ... 0.936900\n","\n","[217 rows x 5 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"id":"qgGdEUgkMika","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614375858341,"user_tz":-60,"elapsed":121752,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"c5753103-8853-46a2-dca7-41686799c2ef"},"source":["text = [\"Barclays misled shareholders and the public about one of the biggest investments in the bank's history, a BBC Panorama investigation has found.\",\n","\"The bank announced in 2008 that Manchester City owner Sheikh Mansour had agreed to invest more than £3bn.\",\n","\"But the BBC found that the money, which helped Barclays avoid a bailout by British taxpayers, actually came from the Abu Dhabi government.\",\n","\"Barclays said the mistake in its accounts was 'a drafting error'.\",\n","\"Unlike RBS and Lloyds TSB, Barclays narrowly avoided having to request a government bailout late in 2008 after it was rescued by £7bn worth of new investment, most of which came from the Gulf states of Qatar and Abu Dhabi.\",\n","\"The S&P 500's price to earnings multiple is 71% higher than Apple's, and if Apple were simply valued at the same multiple, its share price would be $840, which is 52% higher than its current price.\",\n","\"Alice has a cat named Alice and also a dog named Alice and also a parrot named Alice, it is her favorite name!\"\n","] + example_text\n","ner_df = nlu.load('ner.onto').predict(text, output_level='chunk')"],"execution_count":null,"outputs":[{"output_type":"stream","text":["onto_recognize_entities_sm download started this may take some time.\n","Approx size to download 159 MB\n","[OK!]\n"],"name":"stdout"}]},{"cell_type":"markdown","metadata":{"id":"STc7iOwtljGo"},"source":["## Lets explore our data which the predicted NER tags and visalize them! \n","\n","We specify [1:] so we dont se the count for the O-tag wich is the most common, since most words in a sentence are not named entities and thus not part of a chunk"]},{"cell_type":"code","metadata":{"id":"UDSAYjadlfdK","colab":{"base_uri":"https://localhost:8080/","height":381},"executionInfo":{"status":"ok","timestamp":1614375859096,"user_tz":-60,"elapsed":122501,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"51553f59-5c76-4946-ebbe-3f0acab5a246"},"source":["ner_df['entities'].value_counts()[1:].plot.bar(title='Occurence of Named Entity tokens in dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":4},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"oRH8yxMcTdv9","executionInfo":{"status":"ok","timestamp":1614375940210,"user_tz":-60,"elapsed":2569,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"9a895ec5-db3a-43f6-aeb3-6679e7e2b52e"},"source":["ner_df"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
entities_classembeddingsentitiesner_confidence
origin_index
0ORG[[0.044123999774456024, -0.47940999269485474, ...Barclays[0.9980999827384949, 1.0, 0.9994999766349792, ...
0CARDINAL[[0.044123999774456024, -0.47940999269485474, ...about one[0.9980999827384949, 1.0, 0.9994999766349792, ...
0ORG[[0.044123999774456024, -0.47940999269485474, ...BBC Panorama[0.9980999827384949, 1.0, 0.9994999766349792, ...
1DATE[[-0.03819400072097778, -0.24487000703811646, ...2008[0.9997000098228455, 0.848800003528595, 0.9908...
1GPE[[-0.03819400072097778, -0.24487000703811646, ...Manchester City[0.9997000098228455, 0.848800003528595, 0.9908...
1PERSON[[-0.03819400072097778, -0.24487000703811646, ...Sheikh Mansour[0.9997000098228455, 0.848800003528595, 0.9908...
1MONEY[[-0.03819400072097778, -0.24487000703811646, ...more than £3bn[0.9997000098228455, 0.848800003528595, 0.9908...
2ORG[[-0.05707800015807152, 0.3987399935722351, 0....BBC[0.9998999834060669, 0.9825999736785889, 1.0, ...
2ORG[[-0.05707800015807152, 0.3987399935722351, 0....Barclays[0.9998999834060669, 0.9825999736785889, 1.0, ...
2NORP[[-0.05707800015807152, 0.3987399935722351, 0....British[0.9998999834060669, 0.9825999736785889, 1.0, ...
2GPE[[-0.05707800015807152, 0.3987399935722351, 0....Abu Dhabi[0.9998999834060669, 0.9825999736785889, 1.0, ...
3ORG[[0.044123999774456024, -0.47940999269485474, ...Barclays[0.9987999796867371, 1.0, 0.9980000257492065, ...
4ORG[[-0.32710000872612, 0.4879100024700165, 0.416...RBS[0.9997000098228455, 0.9998999834060669, 0.999...
4ORG[[-0.32710000872612, 0.4879100024700165, 0.416...Lloyds TSB[0.9997000098228455, 0.9998999834060669, 0.999...
4ORG[[-0.32710000872612, 0.4879100024700165, 0.416...Barclays[0.9997000098228455, 0.9998999834060669, 0.999...
4DATE[[-0.32710000872612, 0.4879100024700165, 0.416...2008[0.9997000098228455, 0.9998999834060669, 0.999...
4MONEY[[-0.32710000872612, 0.4879100024700165, 0.416...7bn[0.9997000098228455, 0.9998999834060669, 0.999...
4LOC[[-0.32710000872612, 0.4879100024700165, 0.416...Gulf[0.9997000098228455, 0.9998999834060669, 0.999...
4GPE[[-0.32710000872612, 0.4879100024700165, 0.416...Qatar[0.9997000098228455, 0.9998999834060669, 0.999...
4GPE[[-0.32710000872612, 0.4879100024700165, 0.416...Abu Dhabi[0.9997000098228455, 0.9998999834060669, 0.999...
5ORG[[-0.03819400072097778, -0.24487000703811646, ...S&P[0.9994999766349792, 0.9878000020980835, 0.865...
5DATE[[-0.03819400072097778, -0.24487000703811646, ...500's[0.9994999766349792, 0.9878000020980835, 0.865...
5PERCENT[[-0.03819400072097778, -0.24487000703811646, ...71%[0.9994999766349792, 0.9878000020980835, 0.865...
5ORG[[-0.03819400072097778, -0.24487000703811646, ...Apple[0.9994999766349792, 0.9878000020980835, 0.865...
5ORG[[-0.03819400072097778, -0.24487000703811646, ...Apple[0.9994999766349792, 0.9878000020980835, 0.865...
5CARDINAL[[-0.03819400072097778, -0.24487000703811646, ...$840[0.9994999766349792, 0.9878000020980835, 0.865...
5PERCENT[[-0.03819400072097778, -0.24487000703811646, ...52%[0.9994999766349792, 0.9878000020980835, 0.865...
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice[0.9970999956130981, 0.9984999895095825, 0.922...
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice[0.9970999956130981, 0.9984999895095825, 0.922...
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice[0.9970999956130981, 0.9984999895095825, 0.922...
6PERSON[[0.28501999378204346, -0.4355500042438507, 0....Alice[0.9970999956130981, 0.9984999895095825, 0.922...
7PERSON[[0.2901900112628937, 0.8049700260162354, 0.31...Harry Potter[0.9995999932289124, 0.9952999949455261, 0.953...
8NORP[[-0.02076599933207035, 0.5784800052642822, 0....Germans[0.9599000215530396, 0.9986000061035156, 0.931...
9FAC[[0.058736998587846756, 0.6042199730873108, -0...New York Airport[0.9984999895095825, 0.9846000075340271, 0.864...
10ORG[[0.39910998940467834, 0.23048000037670135, -0...Microsoft[0.9997000098228455, 0.9990000128746033, 0.998...
11GPE[[-0.0445609986782074, 0.8070899844169617, 0.6...Germany[0.9965000152587891, 0.996999979019165, 0.9298...
12ORG[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...Non-GPE[0.9894000291824341, 0.9937000274658203, 0.984...
12LOC[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...Sahara Destert[0.9894000291824341, 0.9937000274658203, 0.984...
13PRODUCT[[-0.12313000112771988, 1.027899980545044, -0....Playstation[0.9980000257492065, 0.9919999837875366, 0.975...
14EVENT[[-0.3515700101852417, -0.1662600040435791, 0....hurricane Katrina[0.9976999759674072, 0.2168000042438507, 0.997...
15PERSON[[0.5689799785614014, -0.38422998785972595, 0....Lisa[0.9997000098228455, 0.9491999745368958, 0.618...
17LANGUAGE[[-0.2367600053548813, 0.15658999979496002, 0....English[0.9994999766349792, 0.45260000228881836, 0.70...
18ORDINAL[[-0.0853630006313324, -0.5337499976158142, 1....second[0.9986000061035156, 0.953000009059906, 0.6958...
19DATE[[-0.29739999771118164, 0.1302099972963333, 0....smaller than a day[0.641700029373169, 0.8838000297546387, 0.4259...
20PERCENT[[0.06162400171160698, 0.6707599759101868, 0.3...55%[0.9894000291824341, 0.9973999857902527, 0.984...
21MONEY[[0.3520300090312958, -0.1374099999666214, 0.2...50$[0.9984999895095825, 0.9837999939918518, 0.995...
22PERSON[[-0.5554199814796448, 0.0024757999926805496, ...50kg[0.9990000128746033, 0.9778000116348267, 0.961...
23ORDINAL[[-0.04256799817085266, -0.08424600213766098, ...first[0.996999979019165, 0.9940000176429749, 0.9404...
23ORDINAL[[-0.04256799817085266, -0.08424600213766098, ...second[0.996999979019165, 0.9940000176429749, 0.9404...
23PERSON[[-0.04256799817085266, -0.08424600213766098, ...David[0.996999979019165, 0.9940000176429749, 0.9404...
23ORDINAL[[-0.04256799817085266, -0.08424600213766098, ...first[0.996999979019165, 0.9940000176429749, 0.9404...
24CARDINAL[[-0.2671700119972229, 0.7479100227355957, -0....hundreds[0.9789000153541565, 0.9932000041007996, 0.816...
24ORG[[-0.2671700119972229, 0.7479100227355957, -0....NLU[0.9789000153541565, 0.9932000041007996, 0.816...
\n","
"],"text/plain":[" entities_class ... ner_confidence\n","origin_index ... \n","0 ORG ... [0.9980999827384949, 1.0, 0.9994999766349792, ...\n","0 CARDINAL ... [0.9980999827384949, 1.0, 0.9994999766349792, ...\n","0 ORG ... [0.9980999827384949, 1.0, 0.9994999766349792, ...\n","1 DATE ... [0.9997000098228455, 0.848800003528595, 0.9908...\n","1 GPE ... [0.9997000098228455, 0.848800003528595, 0.9908...\n","1 PERSON ... [0.9997000098228455, 0.848800003528595, 0.9908...\n","1 MONEY ... [0.9997000098228455, 0.848800003528595, 0.9908...\n","2 ORG ... [0.9998999834060669, 0.9825999736785889, 1.0, ...\n","2 ORG ... [0.9998999834060669, 0.9825999736785889, 1.0, ...\n","2 NORP ... [0.9998999834060669, 0.9825999736785889, 1.0, ...\n","2 GPE ... [0.9998999834060669, 0.9825999736785889, 1.0, ...\n","3 ORG ... [0.9987999796867371, 1.0, 0.9980000257492065, ...\n","4 ORG ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 ORG ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 ORG ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 DATE ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 MONEY ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 LOC ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 GPE ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","4 GPE ... [0.9997000098228455, 0.9998999834060669, 0.999...\n","5 ORG ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","5 DATE ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","5 PERCENT ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","5 ORG ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","5 ORG ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","5 CARDINAL ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","5 PERCENT ... [0.9994999766349792, 0.9878000020980835, 0.865...\n","6 PERSON ... [0.9970999956130981, 0.9984999895095825, 0.922...\n","6 PERSON ... [0.9970999956130981, 0.9984999895095825, 0.922...\n","6 PERSON ... [0.9970999956130981, 0.9984999895095825, 0.922...\n","6 PERSON ... [0.9970999956130981, 0.9984999895095825, 0.922...\n","7 PERSON ... [0.9995999932289124, 0.9952999949455261, 0.953...\n","8 NORP ... [0.9599000215530396, 0.9986000061035156, 0.931...\n","9 FAC ... [0.9984999895095825, 0.9846000075340271, 0.864...\n","10 ORG ... [0.9997000098228455, 0.9990000128746033, 0.998...\n","11 GPE ... [0.9965000152587891, 0.996999979019165, 0.9298...\n","12 ORG ... [0.9894000291824341, 0.9937000274658203, 0.984...\n","12 LOC ... [0.9894000291824341, 0.9937000274658203, 0.984...\n","13 PRODUCT ... [0.9980000257492065, 0.9919999837875366, 0.975...\n","14 EVENT ... [0.9976999759674072, 0.2168000042438507, 0.997...\n","15 PERSON ... [0.9997000098228455, 0.9491999745368958, 0.618...\n","17 LANGUAGE ... [0.9994999766349792, 0.45260000228881836, 0.70...\n","18 ORDINAL ... [0.9986000061035156, 0.953000009059906, 0.6958...\n","19 DATE ... [0.641700029373169, 0.8838000297546387, 0.4259...\n","20 PERCENT ... [0.9894000291824341, 0.9973999857902527, 0.984...\n","21 MONEY ... [0.9984999895095825, 0.9837999939918518, 0.995...\n","22 PERSON ... [0.9990000128746033, 0.9778000116348267, 0.961...\n","23 ORDINAL ... [0.996999979019165, 0.9940000176429749, 0.9404...\n","23 ORDINAL ... [0.996999979019165, 0.9940000176429749, 0.9404...\n","23 PERSON ... [0.996999979019165, 0.9940000176429749, 0.9404...\n","23 ORDINAL ... [0.996999979019165, 0.9940000176429749, 0.9404...\n","24 CARDINAL ... [0.9789000153541565, 0.9932000041007996, 0.816...\n","24 ORG ... [0.9789000153541565, 0.9932000041007996, 0.816...\n","\n","[53 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"code","metadata":{"id":"rlcEvP9tOSiy","colab":{"base_uri":"https://localhost:8080/","height":361},"executionInfo":{"status":"ok","timestamp":1614375965327,"user_tz":-60,"elapsed":711,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"ad4a7e55-288e-4e5b-ac28-98920489a30e"},"source":["ner_type_to_viz = 'ORG'\n","ner_df[ner_df.entities_class == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring ORG labeled tokens in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":7},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"ks6NDXg7RXG3","colab":{"base_uri":"https://localhost:8080/","height":363},"executionInfo":{"status":"ok","timestamp":1614375965582,"user_tz":-60,"elapsed":675,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"320d148a-8f22-474d-d48c-9e3fffe85916"},"source":["ner_type_to_viz = 'LOC'\n","ner_df[ner_df.entities_class == ner_type_to_viz]['entities'].value_counts().plot.bar(title='Most often occuring LOC labeled tokens in the dataset')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":[""]},"metadata":{"tags":[]},"execution_count":8},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["
"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"AuB4bjK1TlCk"},"source":["ss"],"execution_count":null,"outputs":[]}]} \ No newline at end of file diff --git a/examples/colab/component_examples/named_entity_recognition_(NER)/aspect_based_ner_sentiment_restaurants.ipynb b/examples/colab/component_examples/named_entity_recognition_(NER)/aspect_based_ner_sentiment_restaurants.ipynb index a3f92eb9..faa45c53 100644 --- a/examples/colab/component_examples/named_entity_recognition_(NER)/aspect_based_ner_sentiment_restaurants.ipynb +++ b/examples/colab/component_examples/named_entity_recognition_(NER)/aspect_based_ner_sentiment_restaurants.ipynb @@ -1,357 +1 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "aspect_based_ner_sentiment_restaurants.ipynb", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "9ayP-N_Cqr9K" - }, - "source": [ - "![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n", - "\n", - "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/aspect_based_ner_sentiment_restaurants.ipynb)\n", - "\n", - "\n", - "\n", - "\n", - "Automatically detect positive, negative and neutral aspects about restaurants from user reviews. Instead of labelling the entire review as negative or positive, this model helps identify which exact phrases relate to sentiment identified in the review." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "NqnAGVadANyZ" - }, - "source": [ - "import os\n", - "! apt-get update -qq > /dev/null \n", - "# Install java\n", - "! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n", - "os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n", - "os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n", - "! pip install nlu pyspark==2.4.7\n", - "import nlu\n" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 220 - }, - "id": "c-9dIJVco9Xf", - "outputId": "60774c61-4f27-49d4-d046-34792f08268b" - }, - "source": [ - "pipe = nlu.load('en.ner.aspect_sentiment')\n", - "data = 'We loved our Thai-style main which amazing with lots of flavours very impressive for vegetarian. But the service was below average and the chips were too terrible to finish.'\n", - "df = pipe.predict([data], output_level='chunk')\n", - "df" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ner_confidenceentities_confidenceword_embeddingsentities
origin_index
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...POS[[-0.05083499848842621, 0.2482600063085556, -0...Thai-style main
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...POS[[-0.05083499848842621, 0.2482600063085556, -0...flavours
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...POS[[-0.05083499848842621, 0.2482600063085556, -0...vegetarian
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...NEG[[-0.05083499848842621, 0.2482600063085556, -0...service
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...NEG[[-0.05083499848842621, 0.2482600063085556, -0...chips
\n", - "
" - ], - "text/plain": [ - " ner_confidence ... entities\n", - "origin_index ... \n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... Thai-style main\n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... flavours\n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... vegetarian\n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... service\n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... chips\n", - "\n", - "[5 rows x 4 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 11 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 105 - }, - "id": "WFtrCQSnp_Ie", - "outputId": "003874b1-e5d9-4296-cfac-7e3f974792e1" - }, - "source": [ - "df = pipe.predict([data], output_level='document')\n", - "df" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ner_confidencedocumententities_confidenceword_embeddingsentities
origin_index
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...We loved our Thai-style main which amazing wit...[POS, POS, POS, NEG, NEG][[-0.05083499848842621, 0.2482600063085556, -0...[Thai-style main, flavours, vegetarian, servic...
\n", - "
" - ], - "text/plain": [ - " ner_confidence ... entities\n", - "origin_index ... \n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... [Thai-style main, flavours, vegetarian, servic...\n", - "\n", - "[1 rows x 5 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 14 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "-gM60xyIxx5M" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 133 - }, - "id": "GCFVSTRKqIgi", - "outputId": "8ed02957-f9bd-4da3-8695-4e6e2831ce5d" - }, - "source": [ - "data = 'We loved our Thai-style main which amazing with lots of flavours very impressive for vegetarian. But the service was below average and the chips were too terrible to finish.'\n", - "df = pipe.predict([data], output_level='sentence')\n", - "df" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
ner_confidencesentenceentities_confidenceword_embeddingsentities
origin_index
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...We loved our Thai-style main which amazing wit...[POS, POS, POS, NEG, NEG][[-0.05083499848842621, 0.2482600063085556, -0...[Thai-style main, flavours, vegetarian, servic...
0[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...But the service was below average and the chip...[POS, POS, POS, NEG, NEG][[-0.05083499848842621, 0.2482600063085556, -0...[Thai-style main, flavours, vegetarian, servic...
\n", - "
" - ], - "text/plain": [ - " ner_confidence ... entities\n", - "origin_index ... \n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... [Thai-style main, flavours, vegetarian, servic...\n", - "0 [1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997... ... [Thai-style main, flavours, vegetarian, servic...\n", - "\n", - "[2 rows x 5 columns]" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 15 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Yao4hlfyqQNg" - }, - "source": [ - "nlu.print_all_model_kinds_for_action('pos')" - ], - "execution_count": null, - "outputs": [] - } - ] -} \ No newline at end of file +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"aspect_based_ner_sentiment_restaurants.ipynb","provenance":[],"collapsed_sections":[],"authorship_tag":"ABX9TyMaOK1zlx/utJMFRRzUDN5Z"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"markdown","metadata":{"id":"9ayP-N_Cqr9K"},"source":["![JohnSnowLabs](https://nlp.johnsnowlabs.com/assets/images/logo.png)\n","\n","[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/JohnSnowLabs/nlu/blob/master/examples/colab/component_examples/named_entity_recognition_(NER)/aspect_based_ner_sentiment_restaurants.ipynb)\n","\n","\n","\n","\n","Automatically detect positive, negative and neutral aspects about restaurants from user reviews. Instead of labelling the entire review as negative or positive, this model helps identify which exact phrases relate to sentiment identified in the review."]},{"cell_type":"code","metadata":{"id":"NqnAGVadANyZ","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614376517904,"user_tz":-60,"elapsed":67506,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"4c6518b8-bc24-42ee-e3e4-546d96f0f749"},"source":["import os\n","! apt-get update -qq > /dev/null \n","# Install java\n","! apt-get install -y openjdk-8-jdk-headless -qq > /dev/null\n","os.environ[\"JAVA_HOME\"] = \"/usr/lib/jvm/java-8-openjdk-amd64\"\n","os.environ[\"PATH\"] = os.environ[\"JAVA_HOME\"] + \"/bin:\" + os.environ[\"PATH\"]\n","! pip install nlu pyspark==2.3.4 > /dev/null\n","\n","import nlu\n"],"execution_count":1,"outputs":[{"output_type":"stream","text":["Collecting pyspark==2.4.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e2/06/29f80e5a464033432eedf89924e7aa6ebbc47ce4dcd956853a73627f2c07/pyspark-2.4.7.tar.gz (217.9MB)\n","\u001b[K |████████████████████████████████| 217.9MB 70kB/s \n","\u001b[?25hCollecting py4j==0.10.7\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/e3/53/c737818eb9a7dc32a7cd4f1396e787bd94200c3997c72c1dbe028587bd76/py4j-0.10.7-py2.py3-none-any.whl (197kB)\n","\u001b[K |████████████████████████████████| 204kB 20.9MB/s \n","\u001b[?25hBuilding wheels for collected packages: pyspark\n"," Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for pyspark: filename=pyspark-2.4.7-py2.py3-none-any.whl size=218279465 sha256=37f941c42432e737a6396f822d2bfc63b586e9a35ca673ed38a2c6141ffa743b\n"," Stored in directory: /root/.cache/pip/wheels/34/1f/2e/1e7460f80acf26b08dbb8c53d7ff9e07146f2a68dd5c732be5\n","Successfully built pyspark\n","Installing collected packages: py4j, pyspark\n","Successfully installed py4j-0.10.7 pyspark-2.4.7\n","Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple\n","Collecting nlu_test==1.1.3rc2\n","\u001b[?25l Downloading https://test-files.pythonhosted.org/packages/5c/84/241410ba610c9281afc8e1cffaa352f5ca83fe6e2574f1cfcdf3334dc81f/nlu_test-1.1.3rc2-py3-none-any.whl (158kB)\n","\u001b[K |████████████████████████████████| 163kB 5.3MB/s \n","\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.19.5)\n","Collecting dataclasses\n"," Downloading https://files.pythonhosted.org/packages/26/2f/1095cdc2868052dd1e64520f7c0d5c8c550ad297e944e641dbf1ffbb9a5d/dataclasses-0.6-py3-none-any.whl\n","Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (1.1.5)\n","Collecting spark-nlp<2.8,>=2.7.1\n","\u001b[?25l Downloading https://files.pythonhosted.org/packages/8d/a5/a5130215b43f3bd0e98bd16c471d36dafeab8855ca17789d4927337fa7dc/spark_nlp-2.7.4-py2.py3-none-any.whl (139kB)\n","\u001b[K |████████████████████████████████| 143kB 8.5MB/s \n","\u001b[?25hRequirement already satisfied: pyarrow>=0.16.0 in /usr/local/lib/python3.7/dist-packages (from nlu_test==1.1.3rc2) (3.0.0)\n","Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2018.9)\n","Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas->nlu_test==1.1.3rc2) (2.8.1)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas->nlu_test==1.1.3rc2) (1.15.0)\n","Installing collected packages: dataclasses, spark-nlp, nlu-test\n","Successfully installed dataclasses-0.6 nlu-test-1.1.3rc2 spark-nlp-2.7.4\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":394},"id":"c-9dIJVco9Xf","executionInfo":{"status":"ok","timestamp":1614376583281,"user_tz":-60,"elapsed":132870,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"a9cd0d1a-5f00-4b72-9c0e-d2b7d9e9e791"},"source":["pipe = nlu.load('en.ner.aspect_sentiment')\n","data = 'We loved our Thai-style main which amazing with lots of flavours very impressive for vegetarian. But the service was below average and the chips were too terrible to finish.'\n","df = pipe.predict([data], output_level='chunk')\n","df"],"execution_count":2,"outputs":[{"output_type":"stream","text":["ner_aspect_based_sentiment download started this may take some time.\n","Approximate size to download 21.3 MB\n","[OK!]\n","glove_6B_300 download started this may take some time.\n","Approximate size to download 426.2 MB\n","[OK!]\n","\n","\n","\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
word_embeddingsner_confidenceentitiesentities_class
origin_index
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...Thai-style mainPOS
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...flavoursPOS
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...vegetarianPOS
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...serviceNEG
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...chipsNEG
\n","
"],"text/plain":[" word_embeddings ... entities_class\n","origin_index ... \n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... POS\n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... POS\n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... POS\n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... NEG\n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... NEG\n","\n","[5 rows x 4 columns]"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":174},"id":"WFtrCQSnp_Ie","executionInfo":{"status":"ok","timestamp":1614376588254,"user_tz":-60,"elapsed":137835,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"233fd26c-0c9e-45d8-fc1c-7c16aad41e86"},"source":["df = pipe.predict([data], output_level='document')\n","df"],"execution_count":3,"outputs":[{"output_type":"stream","text":["\n","\n","\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
word_embeddingsner_confidenceentities_confidencedocumententities
origin_index
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...[POS, POS, POS, NEG, NEG]We loved our Thai-style main which amazing wit...[Thai-style main, flavours, vegetarian, servic...
\n","
"],"text/plain":[" word_embeddings ... entities\n","origin_index ... \n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... [Thai-style main, flavours, vegetarian, servic...\n","\n","[1 rows x 5 columns]"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":204},"id":"GCFVSTRKqIgi","executionInfo":{"status":"ok","timestamp":1614376592010,"user_tz":-60,"elapsed":141577,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"efb9945a-4f48-4dbd-f15e-d24b9c56ffe3"},"source":["data = 'We loved our Thai-style main which amazing with lots of flavours very impressive for vegetarian. But the service was below average and the chips were too terrible to finish.'\n","df = pipe.predict([data], output_level='sentence')\n","df"],"execution_count":4,"outputs":[{"output_type":"stream","text":["\n","\n","\n","\n"],"name":"stdout"},{"output_type":"execute_result","data":{"text/html":["
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
word_embeddingsner_confidencesentenceentities_confidenceentities
origin_index
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...We loved our Thai-style main which amazing wit...[POS, POS, POS, NEG, NEG][Thai-style main, flavours, vegetarian, servic...
0[[-0.05083499848842621, 0.2482600063085556, -0...[1.0, 1.0, 1.0, 0.5135999917984009, 0.93879997...But the service was below average and the chip...[POS, POS, POS, NEG, NEG][Thai-style main, flavours, vegetarian, servic...
\n","
"],"text/plain":[" word_embeddings ... entities\n","origin_index ... \n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... [Thai-style main, flavours, vegetarian, servic...\n","0 [[-0.05083499848842621, 0.2482600063085556, -0... ... [Thai-style main, flavours, vegetarian, servic...\n","\n","[2 rows x 5 columns]"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"code","metadata":{"id":"Yao4hlfyqQNg","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1614376592012,"user_tz":-60,"elapsed":141571,"user":{"displayName":"Christian Kasim Loan","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjqAD-ircKP-s5Eh6JSdkDggDczfqQbJGU_IRb4Hw=s64","userId":"14469489166467359317"}},"outputId":"eaa48aab-6fb2-480a-beab-36982127d3d0"},"source":["nlu.print_all_model_kinds_for_action('pos')"],"execution_count":5,"outputs":[{"output_type":"stream","text":["For language NLU provides the following Models : \n","nlu.load('nl.pos') returns Spark NLP model pos_ud_alpino\n","nlu.load('nl.pos.ud_alpino') returns Spark NLP model pos_ud_alpino\n","For language NLU provides the following Models : \n","nlu.load('en.pos') returns Spark NLP model pos_anc\n","nlu.load('en.pos.anc') returns Spark NLP model pos_anc\n","nlu.load('en.pos.ud_ewt') returns Spark NLP model pos_ud_ewt\n","For language NLU provides the following Models : \n","nlu.load('fr.pos') returns Spark NLP model pos_ud_gsd\n","nlu.load('fr.pos.ud_gsd') returns Spark NLP model pos_ud_gsd\n","For language NLU provides the following Models : \n","nlu.load('de.pos.ud_hdt') returns Spark NLP model pos_ud_hdt\n","nlu.load('de.pos') returns Spark NLP model pos_ud_hdt\n","For language NLU provides the following Models : \n","nlu.load('it.pos') returns Spark NLP model pos_ud_isdt\n","nlu.load('it.pos.ud_isdt') returns Spark NLP model pos_ud_isdt\n","For language NLU provides the following Models : \n","nlu.load('nb.pos.ud_bokmaal') returns Spark NLP model pos_ud_bokmaal\n","For language NLU provides the following Models : \n","nlu.load('nn.pos') returns Spark NLP model pos_ud_nynorsk\n","nlu.load('nn.pos.ud_nynorsk') returns Spark NLP model pos_ud_nynorsk\n","For language NLU provides the following Models : \n","nlu.load('pl.pos') returns Spark NLP model pos_ud_lfg\n","nlu.load('pl.pos.ud_lfg') returns Spark NLP model pos_ud_lfg\n","For language NLU provides the following Models : \n","nlu.load('pt.pos.ud_bosque') returns Spark NLP model pos_ud_bosque\n","nlu.load('pt.pos') returns Spark NLP model pos_ud_bosque\n","For language NLU provides the following Models : \n","nlu.load('ru.pos.ud_gsd') returns Spark NLP model pos_ud_gsd\n","nlu.load('ru.pos') returns Spark NLP model pos_ud_gsd\n","For language NLU provides the following Models : \n","nlu.load('es.pos') returns Spark NLP model pos_ud_gsd\n","nlu.load('es.pos.ud_gsd') returns Spark NLP model pos_ud_gsd\n","For language NLU provides the following Models : \n","nlu.load('ar.pos') returns Spark NLP model pos_ud_padt\n","For language NLU provides the following Models : \n","nlu.load('hy.pos') returns Spark NLP model pos_ud_armtdp\n","For language NLU provides the following Models : \n","nlu.load('eu.pos') returns Spark NLP model pos_ud_bdt\n","For language NLU provides the following Models : \n","nlu.load('bn.pos') returns Spark NLP model pos_msri\n","For language
NLU provides the following Models : \n","nlu.load('br.pos') returns Spark NLP model pos_ud_keb\n","For language NLU provides the following Models : \n","nlu.load('bg.pos') returns Spark NLP model pos_ud_btb\n","nlu.load('bg.pos.ud_btb') returns Spark NLP model pos_ud_btb\n","For language NLU provides the following Models : \n","nlu.load('ca.pos') returns Spark NLP model pos_ud_ancora\n","For language NLU provides the following Models : \n","nlu.load('cs.pos') returns Spark NLP model pos_ud_pdt\n","nlu.load('cs.pos.ud_pdt') returns Spark NLP model pos_ud_pdt\n","For language NLU provides the following Models : \n","nlu.load('fi.pos.ud_tdt') returns Spark NLP model pos_ud_tdt\n","nlu.load('fi.pos') returns Spark NLP model pos_ud_tdt\n","For language NLU provides the following Models : \n","nlu.load('gl.pos') returns Spark NLP model pos_ud_treegal\n","For language NLU provides the following Models : \n","nlu.load('el.pos') returns Spark NLP model pos_ud_gdt\n","nlu.load('el.pos.ud_gdt') returns Spark NLP model pos_ud_gdt\n","For language NLU provides the following Models : \n","nlu.load('he.pos') returns Spark NLP model pos_ud_htb\n","nlu.load('he.pos.ud_htb') returns Spark NLP model pos_ud_htb\n","For language NLU provides the following Models : \n","nlu.load('hi.pos') returns Spark NLP model pos_ud_hdtb\n","For language NLU provides the following Models : \n","nlu.load('hu.pos') returns Spark NLP model pos_ud_szeged\n","nlu.load('hu.pos.ud_szeged') returns Spark NLP model pos_ud_szeged\n","For language NLU provides the following Models : \n","nlu.load('id.pos') returns Spark NLP model pos_ud_gsd\n","For language NLU provides the following Models : \n","nlu.load('ga.pos') returns Spark NLP model pos_ud_idt\n","For language NLU provides the following Models : \n","nlu.load('da.pos') returns Spark NLP model pos_ud_ddt\n","For language NLU provides the following Models : \n","nlu.load('ja.pos') returns Spark NLP model pos_ud_gsd\n","nlu.load('ja.pos.ud_gsd') returns Spark NLP model pos_ud_gsd\n","For language NLU provides the following Models : \n","nlu.load('la.pos') returns Spark NLP model pos_ud_llct\n","For language NLU provides the following Models : \n","nlu.load('lv.pos') returns Spark NLP model pos_ud_lvtb\n","For language NLU provides the following Models : \n","nlu.load('mr.pos') returns Spark NLP model pos_ud_ufal\n","For language NLU provides the following Models : \n","nlu.load('fa.pos') returns Spark NLP model pos_ud_perdt\n","For language NLU provides the following Models : \n","nlu.load('ro.pos') returns Spark NLP model pos_ud_rrt\n","nlu.load('ro.pos.ud_rrt') returns Spark NLP model pos_ud_rrt\n","For language NLU provides the following Models : \n","nlu.load('sk.pos') returns Spark NLP model pos_ud_snk\n","nlu.load('sk.pos.ud_snk') returns Spark NLP model pos_ud_snk\n","For language NLU provides the following Models : \n","nlu.load('sl.pos') returns Spark NLP model pos_ud_ssj\n","For language NLU provides the following Models : \n","nlu.load('sv.pos') returns Spark NLP model pos_ud_tal\n","nlu.load('sv.pos.ud_tal') returns Spark NLP model pos_ud_tal\n","For language NLU provides the following Models : \n","nlu.load('th.pos') returns Spark NLP model pos_lst20\n","For language NLU provides the following Models : \n","nlu.load('tr.pos') returns Spark NLP model pos_ud_imst\n","nlu.load('tr.pos.ud_imst') returns Spark NLP model pos_ud_imst\n","For language NLU provides the following Models : \n","nlu.load('uk.pos') returns Spark NLP model pos_ud_iu\n","nlu.load('uk.pos.ud_iu') returns Spark NLP model pos_ud_iu\n","For language NLU provides the following Models : \n","nlu.load('yo.pos') returns Spark NLP model pos_ud_ytb\n","For language NLU provides the following Models : \n","nlu.load('zh.pos') returns Spark NLP model pos_ud_gsd\n","nlu.load('zh.pos.ud_gsd') returns Spark NLP model pos_ud_gsd\n","nlu.load('zh.pos.ctb9') returns Spark NLP model pos_ctb9\n","nlu.load('zh.pos.ud_gsd_trad') returns Spark NLP model pos_ud_gsd_trad\n","For language NLU provides the following Models : \n","nlu.load('et.pos') returns Spark NLP model pos_ud_edt\n","For language NLU provides the following Models : \n","nlu.load('ur.pos') returns Spark NLP model pos_ud_udtb\n","nlu.load('ur.pos.ud_udtb') returns Spark NLP model pos_ud_udtb\n","For language NLU provides the following Models : \n","nlu.load('ko.pos') returns Spark NLP model pos_ud_kaist\n","nlu.load('ko.pos.ud_kaist') returns Spark NLP model pos_ud_kaist\n","For language NLU provides the following Models : \n","nlu.load('bh.pos') returns Spark NLP model pos_ud_bhtb\n","For language NLU provides the following Models : \n","nlu.load('am.pos') returns Spark NLP model pos_ud_att\n"],"name":"stdout"}]}]} \ No newline at end of file