diff --git a/Topic_modelling_3.ipynb b/Topic_modelling_3.ipynb new file mode 100644 index 0000000..649f136 --- /dev/null +++ b/Topic_modelling_3.ipynb @@ -0,0 +1,2081 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import itertools\n", + "import pickle\n", + "from pprint import pprint\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import nltk\n", + "from nltk.stem import WordNetLemmatizer, SnowballStemmer\n", + "from nltk.stem.porter import *\n", + "from nltk.corpus import wordnet\n", + "from nltk import FreqDist\n", + "from nltk.corpus import stopwords\n", + "\n", + "import spacy\n", + "\n", + "import gensim\n", + "from gensim.utils import simple_preprocess\n", + "from gensim.parsing.preprocessing import STOPWORDS\n", + "from gensim.models.ldamodel import LdaModel\n", + "from gensim.models import CoherenceModel\n", + "import gensim.corpora as corpora\n", + "\n", + "import pyLDAvis.gensim\n", + "np.random.seed(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "data = pd.read_excel('Rubber News.xlsx', error_bad_lines=False);" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5275, 6)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "data = data[[\"Full.story\"]]\n", + "data= data.apply(lambda x: x.astype(str).str.lower())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5275, 1)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# data.rename(columns = {'Full.story':'full_story'}, inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "documents = data.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Full.story
0sumitomo rubber industries has established a n...
1spot rubber closed unchanged on thursday. rss ...
2delegate registration for india rubber meet 20...
3mumbai – futures contracts of rubber on the in...
4tapping has been delayed despite the fact that...
......
5270cogencis, wednesday, apr 11 new delhi – india’...
5271cogencis, tuesday, apr 10 by prabhnoor nanda n...
5272outlook futures contracts of natural rubber ma...
5273cogencis, tuesday, apr 10 by shikha singh new ...
5274cogencis, monday, apr 9 by prabhnoor nanda new...
\n", + "

5275 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " Full.story\n", + "0 sumitomo rubber industries has established a n...\n", + "1 spot rubber closed unchanged on thursday. rss ...\n", + "2 delegate registration for india rubber meet 20...\n", + "3 mumbai – futures contracts of rubber on the in...\n", + "4 tapping has been delayed despite the fact that...\n", + "... ...\n", + "5270 cogencis, wednesday, apr 11 new delhi – india’...\n", + "5271 cogencis, tuesday, apr 10 by prabhnoor nanda n...\n", + "5272 outlook futures contracts of natural rubber ma...\n", + "5273 cogencis, tuesday, apr 10 by shikha singh new ...\n", + "5274 cogencis, monday, apr 9 by prabhnoor nanda new...\n", + "\n", + "[5275 rows x 1 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'cogencis, monday, jul 30 –source: india jun natural rubber use 102,000 tn, up 17.7% on year –india jun natural rubber imports 38,367 tn, up 14.7% on year –india natural rubber june-end stocks 232,000 tn by mugunthan kesavan new delhi – india’s natural rubber production fell 2.2% on year to 44,000 tn in june while consumption rose 17.7% to 102,000 tn, a rubber board source said. heavy rains in kerala, the top producer of rubber, have hit tapping in the last two months. with consumption shooting up and output declining, imports rose 14.7% on year to 38,367 tn in june, the source said. for apr-jun, natural rubber output was down 11.9% on year at 126,000 tn, while consumption was 14.2% higher at 302,000 tn. during the same period, imports rose 24.6% on year to 118,355 tn, the source said. india’s natural rubber inventory at the end of june was 232,000 tn, compared with 225,000 tn a year ago, the source said. the tyre industry has been demanding removal of port restrictions on natural rubber for all imports. in june, the government allowed imports of rubber meant for re-export under advance authorisation scheme, from any port in india. under the scheme, a product is imported duty-free with a re-export obligation after value addition. in 2016, the government restricted imports of natural rubber for re-export to only chennai and nhava sheva (jawaharlal nehru port) ports. the curbs are aimed at supporting domestic prices of rubber which have fallen by more than 100 rupees per kg in the last few years due to cheaper availability in global markets. tyre manufacturers are against the restrictions as it delays deliveries and increases transportation cost. endedited by akshit harsh cogencis tel +91 (11) 4220-1000 send comments to feedback@cogencis.com'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents[documents.index == 5027].values[0][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "<>:1: DeprecationWarning: invalid escape sequence \\.\n", + "<>:1: DeprecationWarning: invalid escape sequence \\.\n", + "<>:1: DeprecationWarning: invalid escape sequence \\.\n", + ":1: DeprecationWarning: invalid escape sequence \\.\n", + " documents['full_story'] = documents['Full.story'].map(lambda x: re.sub('[,\\.!?]', '', x))\n" + ] + } + ], + "source": [ + "documents['full_story'] = documents['Full.story'].map(lambda x: re.sub('[,\\.!?]', '', x))\n", + "documents['full_story'] = documents['full_story'].str.replace(\"[^a-zA-Z#]\", \" \")\n", + "documents['full_story']= documents['full_story'].str.replace(' ', ' ')\n", + "documents['full_story']= documents['full_story'].str.replace(' ', ' ')\n", + "documents['full_story']= documents['full_story'].str.replace(' ', ' ')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'cogencis monday jul source india jun natural rubber use tn up on year india jun natural rubber imports tn up on year india natural rubber june end stocks tn by mugunthan kesavan new delhi india s natural rubber production fell on year to tn in june while consumption rose to tn a rubber board source said heavy rains in kerala the top producer of rubber have hit tapping in the last two months with consumption shooting up and output declining imports rose on year to tn in june the source said for apr jun natural rubber output was down on year at tn while consumption was higher at tn during the same period imports rose on year to tn the source said india s natural rubber inventory at the end of june was tn compared with tn a year ago the source said the tyre industry has been demanding removal of port restrictions on natural rubber for all imports in june the government allowed imports of rubber meant for re export under advance authorisation scheme from any port in india under the scheme a product is imported duty free with a re export obligation after value addition in the government restricted imports of natural rubber for re export to only chennai and nhava sheva jawaharlal nehru port ports the curbs are aimed at supporting domestic prices of rubber which have fallen by more than rupees per kg in the last few years due to cheaper availability in global markets tyre manufacturers are against the restrictions as it delays deliveries and increases transportation cost endedited by akshit harsh cogencis tel send comments to feedback cogenciscom'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents[documents.index == 5027].values[0][1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EDA" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "from wordcloud import WordCloud" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Join the different processed titles together.\n", + "long_string = ','.join(list(documents['full_story'].values))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wordcloud = WordCloud(background_color=\"white\", max_words=5000, contour_width=8, contour_color='steelblue')\n", + "wordcloud.generate(long_string)\n", + "wordcloud.to_image()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "def freq_words(x, terms = 30):\n", + " all_words = ' '.join([text for text in x])\n", + " all_words = all_words.split()\n", + "\n", + " fdist = FreqDist(all_words)\n", + " words_df = pd.DataFrame({'word':list(fdist.keys()), 'count':list(fdist.values())})\n", + "\n", + " d = words_df.nlargest(columns=\"count\", n = terms) \n", + " plt.figure(figsize=(20,5))\n", + " ax = sns.barplot(data=d, x= \"word\", y = \"count\")\n", + " ax.set(ylabel = 'Count')\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "freq_words(documents['full_story'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data processing" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def sent_to_words(sentences):\n", + " for sentence in sentences:\n", + " yield(gensim.utils.simple_preprocess(str(sentence), deacc=True)) # deacc=True removes punctuations\n", + "\n", + "data = documents.full_story.values.tolist()\n", + "data_words = list(sent_to_words(data))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['sumitomo', 'rubber', 'industries', 'has', 'established', 'natural', 'rubber', 'procurement', 'subsidiary', 'in', 'singapore', 'the', 'world', 'largest', 'natural', 'rubber', 'trading', 'hub']\n" + ] + } + ], + "source": [ + "print(data_words[:1][0][:30])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating Bi-Gram and Tri-Gram" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "bigram = gensim.models.Phrases(data_words, min_count=5, threshold=100) # higher threshold fewer phrases.\n", + "trigram = gensim.models.Phrases(bigram[data_words], threshold=100) \n", + "\n", + "bigram_mod = gensim.models.phrases.Phraser(bigram)\n", + "trigram_mod = gensim.models.phrases.Phraser(trigram)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "my_stop_words = STOPWORDS.union(set(['send', 'comment', 'feedback', 'today', 'come', 'harsh', 'akshit', 'nishant', 'chakraborty', \n", + " 'augustine', 'cogencis', 'com', 'rahul', 'dhuri', 'end-users','rupeesedited', 'mugunthan', 'kesavan', \n", + " 'says', 'said', 'say', 'prabhnoor', 'nanda',\"show\",\"table\",\"detail\",\"give\",\"geojit\",\n", + " 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', 'january', 'february',\n", + " 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december' ]))\n", + "\n", + "\n", + "# ,'kerla','delhi','kottayam','india','china','japanese','thailand','malaysia','tokyo',\n", + "# \"come\",\"chinese\",\"prabhnoor\",\"shikha\",\"singh\",\"mumbai\",\"rubber\",\"kerala\",\"kochi\",\"make\",\"board\",\"data\",\n", + "# \"grade\",\"cents\",\"iran\"])) " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "stop_words = stopwords.words('english')\n", + "stop_words.extend(my_stop_words)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def remove_stopwords(texts):\n", + " return [[word for word in simple_preprocess(str(doc)) if word not in stop_words] for doc in texts]\n", + "\n", + "def make_bigrams(texts):\n", + " return [bigram_mod[doc] for doc in texts]\n", + "\n", + "def make_trigrams(texts):\n", + " return [trigram_mod[bigram_mod[doc]] for doc in texts]\n", + "\n", + "def lemmatization(texts, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV']):\n", + " texts_out = []\n", + " for sent in texts:\n", + " doc = nlp(\" \".join(sent)) \n", + " texts_out.append([token.lemma_ for token in doc if token.pos_ in allowed_postags])\n", + " return texts_out" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "data_words_nostops = remove_stopwords(data_words)\n", + "\n", + "data_words_bigrams = make_bigrams(data_words_nostops)\n", + "\n", + "# Initialize spacy 'en' model, keeping only tagger component (for efficiency)\n", + "nlp = spacy.load(\"en_core_web_sm\", disable=['parser', 'ner'])\n", + "\n", + "# Do lemmatization keeping only noun, adj, vb, adv\n", + "data_lemmatized = lemmatization(data_words_bigrams, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV'])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "original document: \n", + "['sumitomo', 'rubber', 'industries', 'has', 'established', 'natural', 'rubber', 'procurement', 'subsidiary', 'in', 'singapore', 'the', 'world', 'largest', 'natural', 'rubber', 'trading', 'hub']\n", + "After lemmatization, tokenization:\n", + "['industry', 'establish', 'natural', 'rubber', 'subsidiary', 'large', 'natural', 'rubber', 'trading', 'hub']\n" + ] + } + ], + "source": [ + "print('original document: ')\n", + "print(data_words[:1][0][:30])\n", + "print('After lemmatization, tokenization:')\n", + "print(data_lemmatized[:1][0][:30])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "words_after_preprocessing= list(itertools.chain.from_iterable(data_lemmatized))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "freq_words(words_after_preprocessing)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gensim doc2bow-- Creating dictionary from the data" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "id2word = corpora.Dictionary(data_lemmatized)\n", + "\n", + "# Create Corpus\n", + "texts = data_lemmatized\n", + "\n", + "# Term Document Frequency\n", + "corpus = [id2word.doc2bow(text) for text in texts]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "After lemmatization, tokenization:\n", + "['industry', 'establish', 'natural', 'rubber', 'subsidiary', 'large', 'natural', 'rubber', 'trading', 'hub']\n", + "Word 0 (\"establish\") appears 1 time.\n", + "Word 1 (\"hub\") appears 1 time.\n", + "Word 2 (\"industry\") appears 1 time.\n", + "Word 3 (\"large\") appears 1 time.\n", + "Word 4 (\"natural\") appears 2 time.\n", + "Word 5 (\"rubber\") appears 2 time.\n", + "Word 6 (\"subsidiary\") appears 1 time.\n", + "Word 7 (\"trading\") appears 1 time.\n" + ] + } + ], + "source": [ + "print('After lemmatization, tokenization:')\n", + "print(data_lemmatized[:1][0][:30])\n", + "bow_doc_test_0 = corpus[0]\n", + "for i in range(len(bow_doc_test_0)):\n", + " print(\"Word {} (\\\"{}\\\") appears {} time.\".format(bow_doc_test_0[i][0], \n", + " id2word[bow_doc_test_0[i][0]], \n", + " bow_doc_test_0[i][1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving pickle files" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "# pickle.dump(corpus, open('corpus_bow_ngram.pkl', 'wb'))\n", + "# id2word.save('dictionary_bow_ngram.gensim')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## LDA" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "lda_model = gensim.models.LdaMulticore(corpus=corpus,\n", + " id2word=id2word,\n", + " num_topics=10, \n", + " random_state=100,\n", + " chunksize=100,\n", + " passes=10,\n", + " per_word_topics=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.088*\"rubber\" + 0.088*\"price\" + 0.073*\"oil\" + 0.071*\"crude\" + 0.032*\"cue\"')\n", + "(1, '0.060*\"rubber\" + 0.032*\"price\" + 0.020*\"supply\" + 0.017*\"production\" + 0.016*\"low\"')\n", + "(2, '0.022*\"commodity\" + 0.021*\"receive\" + 0.019*\"company\" + 0.016*\"rubber\" + 0.014*\"government\"')\n", + "(3, '0.068*\"rubber\" + 0.064*\"year\" + 0.037*\"natural\" + 0.033*\"month\" + 0.020*\"ton\"')\n", + "(4, '0.115*\"rubber\" + 0.088*\"contract\" + 0.054*\"rupee\" + 0.038*\"yen\" + 0.025*\"end\"')\n", + "(5, '0.083*\"settle\" + 0.025*\"denominate\" + 0.023*\"comment\" + 0.021*\"market\" + 0.020*\"subdue\"')\n", + "(6, '0.032*\"plantation\" + 0.027*\"state\" + 0.021*\"government\" + 0.019*\"price\" + 0.016*\"sector\"')\n", + "(7, '0.038*\"future\" + 0.031*\"contract\" + 0.023*\"trade\" + 0.023*\"yen\" + 0.023*\"position\"')\n", + "(8, '0.029*\"market\" + 0.016*\"growth\" + 0.015*\"term\" + 0.015*\"tax\" + 0.015*\"rate\"')\n", + "(9, '0.093*\"price\" + 0.057*\"rubber\" + 0.053*\"market\" + 0.053*\"rupee\" + 0.046*\"trader\"')\n" + ] + } + ], + "source": [ + "topics = lda_model.print_topics(num_words=5)\n", + "for topic in topics:\n", + " print(topic)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0,\n", + " '0.088*\"rubber\" + 0.088*\"price\" + 0.073*\"oil\" + 0.071*\"crude\" + 0.032*\"cue\" '\n", + " '+ 0.029*\"exchange\" + 0.019*\"substitute\" + 0.019*\"rise\" + 0.016*\"give\" + '\n", + " '0.016*\"future\"'),\n", + " (1,\n", + " '0.060*\"rubber\" + 0.032*\"price\" + 0.020*\"supply\" + 0.017*\"production\" + '\n", + " '0.016*\"low\" + 0.016*\"natural\" + 0.016*\"coming_day\" + 0.014*\"expect\" + '\n", + " '0.012*\"high\" + 0.012*\"year\"'),\n", + " (2,\n", + " '0.022*\"commodity\" + 0.021*\"receive\" + 0.019*\"company\" + 0.016*\"rubber\" + '\n", + " '0.014*\"government\" + 0.013*\"duty\" + 0.012*\"industry\" + 0.012*\"allow\" + '\n", + " '0.012*\"product\" + 0.011*\"capacity\"'),\n", + " (3,\n", + " '0.068*\"rubber\" + 0.064*\"year\" + 0.037*\"natural\" + 0.033*\"month\" + '\n", + " '0.020*\"ton\" + 0.019*\"production\" + 0.019*\"increase\" + 0.017*\"output\" + '\n", + " '0.017*\"consumption\" + 0.016*\"country\"'),\n", + " (4,\n", + " '0.115*\"rubber\" + 0.088*\"contract\" + 0.054*\"rupee\" + 0.038*\"yen\" + '\n", + " '0.025*\"end\" + 0.023*\"analyst\" + 0.022*\"fall\" + 0.021*\"active\" + '\n", + " '0.020*\"close\" + 0.020*\"high\"'),\n", + " (5,\n", + " '0.083*\"settle\" + 0.025*\"denominate\" + 0.023*\"comment\" + 0.021*\"market\" + '\n", + " '0.020*\"subdue\" + 0.017*\"make\" + 0.014*\"cheap\" + 0.014*\"fuel\" + '\n", + " '0.012*\"commodity\" + 0.011*\"expensive\"'),\n", + " (6,\n", + " '0.032*\"plantation\" + 0.027*\"state\" + 0.021*\"government\" + 0.019*\"price\" + '\n", + " '0.016*\"sector\" + 0.014*\"export\" + 0.013*\"report\" + 0.013*\"cardamom\" + '\n", + " '0.012*\"tell\" + 0.012*\"source\"'),\n", + " (7,\n", + " '0.038*\"future\" + 0.031*\"contract\" + 0.023*\"trade\" + 0.023*\"yen\" + '\n", + " '0.023*\"position\" + 0.022*\"delivery\" + 0.022*\"day\" + 0.021*\"rubber\" + '\n", + " '0.017*\"trading\" + 0.012*\"exchange\"'),\n", + " (8,\n", + " '0.029*\"market\" + 0.016*\"growth\" + 0.015*\"term\" + 0.015*\"tax\" + 0.015*\"rate\" '\n", + " '+ 0.014*\"increase\" + 0.014*\"holder\" + 0.012*\"continue\" + 0.011*\"tire\" + '\n", + " '0.010*\"demand\"'),\n", + " (9,\n", + " '0.093*\"price\" + 0.057*\"rubber\" + 0.053*\"market\" + 0.053*\"rupee\" + '\n", + " '0.046*\"trader\" + 0.040*\"rise\" + 0.031*\"demand\" + 0.030*\"fall\" + '\n", + " '0.029*\"domestic\" + 0.027*\"spot\"')]\n" + ] + } + ], + "source": [ + "pprint(lda_model.print_topics())\n", + "doc_lda = lda_model[corpus]" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coherence Score: 0.5396317471542709\n" + ] + } + ], + "source": [ + "coherence_model_lda = CoherenceModel(model=lda_model, texts=data_lemmatized, dictionary=id2word, coherence='c_v')\n", + "coherence_lda = coherence_model_lda.get_coherence()\n", + "print('Coherence Score: ', coherence_lda)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimal Topics" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_coherence_values(dictionary, corpus, texts, limit, start=2, step=1):\n", + " coherence_values = []\n", + " model_list = []\n", + " for num_topics in range(start, limit, step):\n", + " model=LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics)\n", + " model_list.append(model)\n", + " coherencemodel = CoherenceModel(model=model, texts=texts, dictionary=dictionary, coherence='c_v')\n", + " coherence_values.append(coherencemodel.get_coherence())\n", + "\n", + " return model_list, coherence_values" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "model_list, coherence_values = compute_coherence_values(dictionary=id2word, corpus=corpus, texts=data_lemmatized, \n", + " start=2, limit=20, step=1)\n", + "limit=20; start=2; step=1;\n", + "x = range(start, limit, step)\n", + "plt.plot(x, coherence_values)\n", + "plt.xlabel(\"Num Topics\")\n", + "plt.ylabel(\"Coherence score\")\n", + "plt.xticks(x)\n", + "plt.legend((\"coherence_values\"), loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Topics- 3: Best model run" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "lda_model_best_3 = gensim.models.ldamodel.LdaModel(corpus=corpus,\n", + " id2word=id2word,\n", + " num_topics=3, \n", + " random_state=100,\n", + " chunksize=100,\n", + " passes=10,\n", + " alpha='auto',\n", + " eta= 0.61)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# lda_model_best_3.save('model_lda_bow_ngram_best_3.gensim')" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, '0.021*\"month\" + 0.018*\"year\" + 0.012*\"index\" + 0.009*\"company\" + 0.009*\"inflation\" + 0.009*\"increase\" + 0.008*\"high\" + 0.007*\"rubber\" + 0.007*\"export\" + 0.006*\"state\"'), (1, '0.110*\"rubber\" + 0.066*\"price\" + 0.034*\"market\" + 0.032*\"natural\" + 0.031*\"rise\" + 0.028*\"fall\" + 0.023*\"oil\" + 0.023*\"domestic\" + 0.022*\"crude\" + 0.021*\"trader\"'), (2, '0.090*\"rupee\" + 0.068*\"rubber\" + 0.055*\"contract\" + 0.047*\"price\" + 0.039*\"yen\" + 0.034*\"close\" + 0.025*\"grade\" + 0.024*\"previous\" + 0.019*\"active\" + 0.017*\"rss\"')]\n" + ] + } + ], + "source": [ + "print(lda_model_best_3.print_topics())\n", + "# doc_lda_best = lda_model_best[bow_corpus]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.021*\"month\" + 0.018*\"year\" + 0.012*\"index\" + 0.009*\"company\" + 0.009*\"inflation\"')\n", + "(1, '0.110*\"rubber\" + 0.066*\"price\" + 0.034*\"market\" + 0.032*\"natural\" + 0.031*\"rise\"')\n", + "(2, '0.090*\"rupee\" + 0.068*\"rubber\" + 0.055*\"contract\" + 0.047*\"price\" + 0.039*\"yen\"')\n" + ] + } + ], + "source": [ + "topics_best_3 = lda_model_best_3.print_topics(num_words=5)\n", + "for topic in topics_best_3:\n", + " print(topic)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.021*\"month\" + 0.018*\"year\" + 0.012*\"index\" + 0.009*\"company\" + 0.009*\"inflation\" + 0.009*\"increase\" + 0.008*\"high\" + 0.007*\"rubber\" + 0.007*\"export\" + 0.006*\"state\" + 0.006*\"low\" + 0.006*\"plantation\" + 0.006*\"production\"')\n", + "(1, '0.110*\"rubber\" + 0.066*\"price\" + 0.034*\"market\" + 0.032*\"natural\" + 0.031*\"rise\" + 0.028*\"fall\" + 0.023*\"oil\" + 0.023*\"domestic\" + 0.022*\"crude\" + 0.021*\"trader\" + 0.020*\"contract\" + 0.019*\"demand\" + 0.019*\"likely\"')\n", + "(2, '0.090*\"rupee\" + 0.068*\"rubber\" + 0.055*\"contract\" + 0.047*\"price\" + 0.039*\"yen\" + 0.034*\"close\" + 0.025*\"grade\" + 0.024*\"previous\" + 0.019*\"active\" + 0.017*\"rss\" + 0.016*\"high\" + 0.016*\"low\" + 0.016*\"datum\"')\n" + ] + } + ], + "source": [ + "topics_best_3 = lda_model_best_3.print_topics(num_words=13)\n", + "for topic in topics_best_3:\n", + " print(topic)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coherence Score for c_v: 0.6172659695956492\n" + ] + } + ], + "source": [ + "coherence_model_lda_c_v_3 = CoherenceModel(model=lda_model_best_3, texts=data_lemmatized, dictionary=id2word, coherence='c_v')\n", + "coherence_lda_3 = coherence_model_lda_c_v_3.get_coherence()\n", + "print('Coherence Score for c_v: ', coherence_lda_3)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "def get_lda_topics(model, num_topics):\n", + " word_dict = {};\n", + " for i in range(num_topics):\n", + " words = model.show_topic(i, topn = 40);\n", + " word_dict['Topic ' + '{:d}'.format(i+1)] = [i[0] for i in words];\n", + " return pd.DataFrame(word_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Topic 1Topic 2Topic 3
0monthrubberrupee
1yearpricerubber
2indexmarketcontract
3companynaturalprice
4inflationriseyen
5increasefallclose
6highoilgrade
7rubberdomesticprevious
8exportcrudeactive
9statetraderrss
10lowcontracthigh
11plantationdemandlow
12productionlikelydatum
13wholesalespottrader
14commoditysupplymarket
15reportkeyexchange
16countryanalystend
17quartergainbourse
18releasebasesettle
19productendboard
20expectglobalhit
21floodexchangeaccord
22ratecuefuture
23accordimportwidely_trade
24rainfallweekweek
25mlnexpectationvariety
26periodtocomcompare
27seefuturechange
28largeoutputgive
29governmentsupportfollowing
30salesubstitutefall
31growthexpectshow
32consumptionproductionclosing
33sectorhighrise
34industrybenchmarkjapanese
35raiseconcerndetail
36damagenewanalyst
37arealowdollar
38totalstocktocom
39raindeclinesell
\n", + "
" + ], + "text/plain": [ + " Topic 1 Topic 2 Topic 3\n", + "0 month rubber rupee\n", + "1 year price rubber\n", + "2 index market contract\n", + "3 company natural price\n", + "4 inflation rise yen\n", + "5 increase fall close\n", + "6 high oil grade\n", + "7 rubber domestic previous\n", + "8 export crude active\n", + "9 state trader rss\n", + "10 low contract high\n", + "11 plantation demand low\n", + "12 production likely datum\n", + "13 wholesale spot trader\n", + "14 commodity supply market\n", + "15 report key exchange\n", + "16 country analyst end\n", + "17 quarter gain bourse\n", + "18 release base settle\n", + "19 product end board\n", + "20 expect global hit\n", + "21 flood exchange accord\n", + "22 rate cue future\n", + "23 accord import widely_trade\n", + "24 rainfall week week\n", + "25 mln expectation variety\n", + "26 period tocom compare\n", + "27 see future change\n", + "28 large output give\n", + "29 government support following\n", + "30 sale substitute fall\n", + "31 growth expect show\n", + "32 consumption production closing\n", + "33 sector high rise\n", + "34 industry benchmark japanese\n", + "35 raise concern detail\n", + "36 damage new analyst\n", + "37 area low dollar\n", + "38 total stock tocom\n", + "39 rain decline sell" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_lda_topics(lda_model_best_3, 3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize topic keywords from best model" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "dictionary = gensim.corpora.Dictionary.load('dictionary_bow_ngram.gensim')\n", + "corpus = pickle.load(open('corpus_bow_ngram.pkl', 'rb'))\n", + "# lda = gensim.models.ldamodel.LdaModel.load('model_lda_bow_ngram_best_3.gensim')" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\plohith\\.conda\\envs\\rpg_env\\lib\\site-packages\\pyLDAvis\\_prepare.py:257: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " return pd.concat([default_term_info] + list(topic_dfs))\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lda_display = pyLDAvis.gensim.prepare(lda_model_best_3, corpus, dictionary, sort_topics=False)\n", + "pyLDAvis.display(lda_display)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Topic-3: Train Data Mapping" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "documents_copy= documents.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "df_lemma = pd.DataFrame({'lemmatized':data_lemmatized})" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "documents_copy_df_lemma= pd.concat([documents_copy,df_lemma],axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Full.storyfull_storylemmatized
0sumitomo rubber industries has established a n...sumitomo rubber industries has established a n...[industry, establish, natural, rubber, subsidi...
1spot rubber closed unchanged on thursday. rss ...spot rubber closed unchanged on thursday rss ...[spot, rubber, close, unchanged, rss, quote, s...
2delegate registration for india rubber meet 20...delegate registration for india rubber meet i...[meet, hold]
3mumbai – futures contracts of rubber on the in...mumbai futures contracts of rubber on the ind...[rise, ongoing, supply, crunch, market, trader...
4tapping has been delayed despite the fact that...tapping has been delayed despite the fact that...[tap, delay, fact, peak_season, decline, impor...
............
5270cogencis, wednesday, apr 11 new delhi – india’...cogencis wednesday apr new delhi india s nat...[rubber, production, fall, year, accord, relea...
5271cogencis, tuesday, apr 10 by prabhnoor nanda n...cogencis tuesday apr by prabhnoor nanda new d...[contract, rubber, exchange, likely, fall, ses...
5272outlook futures contracts of natural rubber ma...outlook futures contracts of natural rubber ma...[contract, natural, rubber, trade, low, sessio...
5273cogencis, tuesday, apr 10 by shikha singh new ...cogencis tuesday apr by shikha singh new delh...[price, natural, rubber, fall, spot, market, p...
5274cogencis, monday, apr 9 by prabhnoor nanda new...cogencis monday apr by prabhnoor nanda new de...[contract, rubber, exchange, settle, marginall...
\n", + "

5275 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " Full.story \\\n", + "0 sumitomo rubber industries has established a n... \n", + "1 spot rubber closed unchanged on thursday. rss ... \n", + "2 delegate registration for india rubber meet 20... \n", + "3 mumbai – futures contracts of rubber on the in... \n", + "4 tapping has been delayed despite the fact that... \n", + "... ... \n", + "5270 cogencis, wednesday, apr 11 new delhi – india’... \n", + "5271 cogencis, tuesday, apr 10 by prabhnoor nanda n... \n", + "5272 outlook futures contracts of natural rubber ma... \n", + "5273 cogencis, tuesday, apr 10 by shikha singh new ... \n", + "5274 cogencis, monday, apr 9 by prabhnoor nanda new... \n", + "\n", + " full_story \\\n", + "0 sumitomo rubber industries has established a n... \n", + "1 spot rubber closed unchanged on thursday rss ... \n", + "2 delegate registration for india rubber meet i... \n", + "3 mumbai futures contracts of rubber on the ind... \n", + "4 tapping has been delayed despite the fact that... \n", + "... ... \n", + "5270 cogencis wednesday apr new delhi india s nat... \n", + "5271 cogencis tuesday apr by prabhnoor nanda new d... \n", + "5272 outlook futures contracts of natural rubber ma... \n", + "5273 cogencis tuesday apr by shikha singh new delh... \n", + "5274 cogencis monday apr by prabhnoor nanda new de... \n", + "\n", + " lemmatized \n", + "0 [industry, establish, natural, rubber, subsidi... \n", + "1 [spot, rubber, close, unchanged, rss, quote, s... \n", + "2 [meet, hold] \n", + "3 [rise, ongoing, supply, crunch, market, trader... \n", + "4 [tap, delay, fact, peak_season, decline, impor... \n", + "... ... \n", + "5270 [rubber, production, fall, year, accord, relea... \n", + "5271 [contract, rubber, exchange, likely, fall, ses... \n", + "5272 [contract, natural, rubber, trade, low, sessio... \n", + "5273 [price, natural, rubber, fall, spot, market, p... \n", + "5274 [contract, rubber, exchange, settle, marginall... \n", + "\n", + "[5275 rows x 3 columns]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents_copy_df_lemma" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [], + "source": [ + "def identify_topic_sentence_120(row):\n", + " bow_vector = id2word.doc2bow(row['lemmatized'])\n", + " row2= sorted(bow_vector, key=lambda x: (x[1]), reverse=True)\n", + " main_keywords = \",\".join([id2word[wor[0]] for index, wor in enumerate(row2)])\n", + " row['Main_keywords']= main_keywords\n", + " \n", + " row1= lda_model_best_3[bow_vector]\n", + " row1 = sorted(row1, key=lambda x: (x[1]), reverse=True)\n", + "\n", + " if len(row1)== 1:\n", + " first_topic_num= int(row1[0][0])\n", + " first_topic_num+= 1\n", + " first_prop_topic= row1[0][1]\n", + " second_topic_num= 0\n", + " second_prop_topic= 0\n", + " else:\n", + " first_topic_num= int(row1[0][0])\n", + " first_topic_num+= 1\n", + " first_prop_topic= row1[0][1]\n", + " second_topic_num= int(row1[1][0])\n", + " second_topic_num+= 1\n", + " second_prop_topic= row1[1][1]\n", + "\n", + " row['First_topic_number']= int(first_topic_num) \n", + " if int(first_topic_num)== 1:\n", + " row['First_topic_name']= 'Global economy'\n", + " elif int(first_topic_num)== 2:\n", + " row['First_topic_name']= 'Rate change'\n", + " else:\n", + " row['First_topic_name']= 'Rubber trade' \n", + " row['First_topic_propability']= round(first_prop_topic,3)\n", + "\n", + "\n", + " row['Second_topic_number']= int(second_topic_num)\n", + " if int(second_topic_num)== 1:\n", + " row['Second_topic_name']= 'Global economy'\n", + " elif int(second_topic_num)== 2:\n", + " row['Second_topic_name']= 'Rate change'\n", + " elif int(second_topic_num)== 3:\n", + " row['Second_topic_name']= 'Rubber trade' \n", + " else:\n", + " row['Second_topic_name']= 'Unidentified'\n", + " row['Second_topic_propability']= round(second_prop_topic,3)\n", + " \n", + " \n", + " return row " + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "doc120= documents_copy_df_lemma.apply(identify_topic_sentence_120,axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Full.storyfull_storylemmatizedMain_keywordsFirst_topic_numberFirst_topic_nameFirst_topic_propabilitySecond_topic_numberSecond_topic_nameSecond_topic_propability
0sumitomo rubber industries has established a n...sumitomo rubber industries has established a n...[industry, establish, natural, rubber, subsidi...natural,rubber,establish,hub,industry,large,su...2Rate change0.5211Global economy0.466
1spot rubber closed unchanged on thursday. rss ...spot rubber closed unchanged on thursday rss ...[spot, rubber, close, unchanged, rss, quote, s...rubber,accord,close,dealer,finish,flat,quote,r...3Rubber trade0.9782Rate change0.016
2delegate registration for india rubber meet 20...delegate registration for india rubber meet i...[meet, hold]hold,meet1Global economy0.8572Rate change0.085
3mumbai – futures contracts of rubber on the in...mumbai futures contracts of rubber on the ind...[rise, ongoing, supply, crunch, market, trader...close,trader,active,contract,crunch,end,market...3Rubber trade0.5292Rate change0.464
4tapping has been delayed despite the fact that...tapping has been delayed despite the fact that...[tap, delay, fact, peak_season, decline, impor...rubber,trader,supply,base,decline,deepen,delay...2Rate change0.8341Global economy0.155
.................................
5270cogencis, wednesday, apr 11 new delhi – india’...cogencis wednesday apr new delhi india s nat...[rubber, production, fall, year, accord, relea...year,rubber,end,rise,natural,month,consumption...2Rate change0.6661Global economy0.330
5271cogencis, tuesday, apr 10 by prabhnoor nanda n...cogencis tuesday apr by prabhnoor nanda new d...[contract, rubber, exchange, likely, fall, ses...rubber,price,fall,natural,demand,likely,week,c...2Rate change0.7033Rubber trade0.168
5272outlook futures contracts of natural rubber ma...outlook futures contracts of natural rubber ma...[contract, natural, rubber, trade, low, sessio...rubber,price,natural,crude,oil,track,contract,...2Rate change0.7943Rubber trade0.204
5273cogencis, tuesday, apr 10 by shikha singh new ...cogencis tuesday apr by shikha singh new delh...[price, natural, rubber, fall, spot, market, p...rubber,close,price,natural,market,previous,rup...2Rate change0.4853Rubber trade0.447
5274cogencis, monday, apr 9 by prabhnoor nanda new...cogencis monday apr by prabhnoor nanda new de...[contract, rubber, exchange, settle, marginall...rubber,price,close,contract,exchange,market,ri...3Rubber trade0.5312Rate change0.469
\n", + "

5275 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " Full.story \\\n", + "0 sumitomo rubber industries has established a n... \n", + "1 spot rubber closed unchanged on thursday. rss ... \n", + "2 delegate registration for india rubber meet 20... \n", + "3 mumbai – futures contracts of rubber on the in... \n", + "4 tapping has been delayed despite the fact that... \n", + "... ... \n", + "5270 cogencis, wednesday, apr 11 new delhi – india’... \n", + "5271 cogencis, tuesday, apr 10 by prabhnoor nanda n... \n", + "5272 outlook futures contracts of natural rubber ma... \n", + "5273 cogencis, tuesday, apr 10 by shikha singh new ... \n", + "5274 cogencis, monday, apr 9 by prabhnoor nanda new... \n", + "\n", + " full_story \\\n", + "0 sumitomo rubber industries has established a n... \n", + "1 spot rubber closed unchanged on thursday rss ... \n", + "2 delegate registration for india rubber meet i... \n", + "3 mumbai futures contracts of rubber on the ind... \n", + "4 tapping has been delayed despite the fact that... \n", + "... ... \n", + "5270 cogencis wednesday apr new delhi india s nat... \n", + "5271 cogencis tuesday apr by prabhnoor nanda new d... \n", + "5272 outlook futures contracts of natural rubber ma... \n", + "5273 cogencis tuesday apr by shikha singh new delh... \n", + "5274 cogencis monday apr by prabhnoor nanda new de... \n", + "\n", + " lemmatized \\\n", + "0 [industry, establish, natural, rubber, subsidi... \n", + "1 [spot, rubber, close, unchanged, rss, quote, s... \n", + "2 [meet, hold] \n", + "3 [rise, ongoing, supply, crunch, market, trader... \n", + "4 [tap, delay, fact, peak_season, decline, impor... \n", + "... ... \n", + "5270 [rubber, production, fall, year, accord, relea... \n", + "5271 [contract, rubber, exchange, likely, fall, ses... \n", + "5272 [contract, natural, rubber, trade, low, sessio... \n", + "5273 [price, natural, rubber, fall, spot, market, p... \n", + "5274 [contract, rubber, exchange, settle, marginall... \n", + "\n", + " Main_keywords First_topic_number \\\n", + "0 natural,rubber,establish,hub,industry,large,su... 2 \n", + "1 rubber,accord,close,dealer,finish,flat,quote,r... 3 \n", + "2 hold,meet 1 \n", + "3 close,trader,active,contract,crunch,end,market... 3 \n", + "4 rubber,trader,supply,base,decline,deepen,delay... 2 \n", + "... ... ... \n", + "5270 year,rubber,end,rise,natural,month,consumption... 2 \n", + "5271 rubber,price,fall,natural,demand,likely,week,c... 2 \n", + "5272 rubber,price,natural,crude,oil,track,contract,... 2 \n", + "5273 rubber,close,price,natural,market,previous,rup... 2 \n", + "5274 rubber,price,close,contract,exchange,market,ri... 3 \n", + "\n", + " First_topic_name First_topic_propability Second_topic_number \\\n", + "0 Rate change 0.521 1 \n", + "1 Rubber trade 0.978 2 \n", + "2 Global economy 0.857 2 \n", + "3 Rubber trade 0.529 2 \n", + "4 Rate change 0.834 1 \n", + "... ... ... ... \n", + "5270 Rate change 0.666 1 \n", + "5271 Rate change 0.703 3 \n", + "5272 Rate change 0.794 3 \n", + "5273 Rate change 0.485 3 \n", + "5274 Rubber trade 0.531 2 \n", + "\n", + " Second_topic_name Second_topic_propability \n", + "0 Global economy 0.466 \n", + "1 Rate change 0.016 \n", + "2 Rate change 0.085 \n", + "3 Rate change 0.464 \n", + "4 Global economy 0.155 \n", + "... ... ... \n", + "5270 Global economy 0.330 \n", + "5271 Rubber trade 0.168 \n", + "5272 Rubber trade 0.204 \n", + "5273 Rubber trade 0.447 \n", + "5274 Rate change 0.469 \n", + "\n", + "[5275 rows x 10 columns]" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "doc120" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [], + "source": [ + "doc120.drop(['lemmatized', 'full_story'],axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "doc120= doc120[['First_topic_number', 'First_topic_propability', 'First_topic_name',\n", + " 'Second_topic_number','Second_topic_propability','Second_topic_name',\n", + " 'Main_keywords','Full.story']]" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "doc120.to_excel('Topic_modelling_3.xlsx', float_format= \"%.2f\", index= False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tuning Hyperparameters of LDA" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_coherence_values(corpus, dictionary, k, a, b):\n", + " \n", + " lda_model_hyper = gensim.models.LdaMulticore(corpus=corpus,\n", + " id2word=dictionary,\n", + " num_topics=k, \n", + " random_state=100,\n", + " chunksize=100,\n", + " passes=10,\n", + " alpha=a,\n", + " eta=b)\n", + " \n", + " coherence_model_lda = CoherenceModel(model=lda_model_hyper, texts=data_lemmatized, dictionary=id2word, coherence='c_v')\n", + " \n", + " return coherence_model_lda.get_coherence()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████████████████████████████████████████████████████████████████████████| 270/270 [1:38:06<00:00, 21.80s/it]\n" + ] + } + ], + "source": [ + "grid = {}\n", + "grid['Validation_Set'] = {}\n", + "\n", + "min_topics = 2\n", + "max_topics = 11\n", + "step_size = 1\n", + "topics_range = range(min_topics, max_topics, step_size)\n", + "\n", + "alpha = list(np.arange(0.01, 1, 0.3))\n", + "alpha.append('symmetric')\n", + "alpha.append('asymmetric')\n", + "\n", + "beta = list(np.arange(0.01, 1, 0.3))\n", + "beta.append('symmetric')\n", + "\n", + "# Validation sets\n", + "num_of_docs = len(corpus)\n", + "corpus_sets = [corpus]\n", + "\n", + "corpus_title = ['100% Corpus']\n", + "\n", + "model_results = {'Validation_Set': [],\n", + " 'Topics': [],\n", + " 'Alpha': [],\n", + " 'Beta': [],\n", + " 'Coherence': []\n", + " }\n", + "\n", + "if 1 == 1:\n", + " pbar = tqdm.tqdm(total=(len(beta)*len(alpha)*len(topics_range)*len(corpus_title)))\n", + " \n", + " for i in range(len(corpus_sets)):\n", + " for k in topics_range: #topic iterate\n", + " for a in alpha: # alpha iterate\n", + " for b in beta: #beta iterate\n", + " cv = compute_coherence_values(corpus=corpus_sets[i], dictionary=id2word, k=k, a=a, b=b)\n", + " # Save the model results\n", + " model_results['Validation_Set'].append(corpus_title[i])\n", + " model_results['Topics'].append(k)\n", + " model_results['Alpha'].append(a)\n", + " model_results['Beta'].append(b)\n", + " model_results['Coherence'].append(cv)\n", + " \n", + " pbar.update(1)\n", + " pd.DataFrame(model_results).to_csv('lda_bow_ngram_tuning_results.csv', index=False)\n", + " pbar.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Web Scraping_Website.ipynb b/Web Scraping_Website.ipynb new file mode 100644 index 0000000..d3fc728 --- /dev/null +++ b/Web Scraping_Website.ipynb @@ -0,0 +1,1694 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: beautifulsoup4 in c:\\programdata\\anaconda3\\lib\\site-packages (4.8.0)\n", + "Requirement already satisfied: requests in c:\\programdata\\anaconda3\\lib\\site-packages (2.22.0)\n", + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.25.1)\n", + "Requirement already satisfied: soupsieve>=1.2 in c:\\programdata\\anaconda3\\lib\\site-packages (from beautifulsoup4) (1.9.3)\n", + "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from requests) (1.24.2)\n", + "Requirement already satisfied: idna<2.9,>=2.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from requests) (2.8)\n", + "Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\\programdata\\anaconda3\\lib\\site-packages (from requests) (3.0.4)\n", + "Requirement already satisfied: certifi>=2017.4.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from requests) (2019.9.11)\n", + "Requirement already satisfied: pytz>=2017.2 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2019.3)\n", + "Requirement already satisfied: python-dateutil>=2.6.1 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.13.3 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.5)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.6.1->pandas) (1.12.0)\n" + ] + } + ], + "source": [ + "!pip install beautifulsoup4 requests pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup\n", + "import requests" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "url = \"https://subaahsavere.com/?s=commodity\"" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "res = requests.get(url) # it opens up the connection and grabs the webpage\n", + "print(res)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " \n", + "\n", + "You searched for rubber - Global Rubber Markets\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "
\n", + "Search\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\r\n", + "\r\n", + " Wednesday, January 22, 2020\r\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
Home Search
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

\n", + "rubber - search results\n", + "

\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\r\n", + " If you're not happy with the results, please do another search
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Tokyo rubber slumps over 4 percent

\n", + "
\n", + "
\n", + "
\r\n", + " Tokyo Commodity Exchange (TOCOM) futures plunged more than 4% on Tuesday, their most in 22 months, as concerns over the potential economic fallout from...
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

India Rubber: Tad dn on ICEX on TOCOM cues; rise in spot limits fall

\n", + "
\n", + "
\n", + "
\r\n", + " \r\n", + " Back \r\n", + "\r\n", + " ...
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

India Rubber: Down on ICEX tailing TOCOM contracts; up in spot mkts

\n", + "
\n", + "
\n", + "
\r\n", + " \r\n", + " Back \r\n", + "\r\n", + " ...
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Tokyo rubber hits one-week low

\n", + "
\n", + "
\n", + "
\r\n", + " Tokyo Commodity Exchange (TOCOM) futures slipped to an about 1-week low on Monday, as investors took profits after the benchmark touched a 10-1/2-month high...
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

India Rubber: Down on ICEX on short selling, tailing TOCOM contracts

\n", + "
\n", + "
\n", + "
\r\n", + " \r\n", + " Back \r\n", + "\r\n", + " ...
\n", + "
\n", + "
\n", + "
\n", + "
\"Natural
\n", + "
\n", + "

Natural Rubber prices surge at tail end of peak season

\n", + "
\n", + "
\n", + "
\r\n", + " From Rs 120 per kg in the first week of November, the price of premium grade RSS-4 has crossed Rs 137 per kg this...
\n", + "
\n", + "
\n", + "
\n", + "
\"Chinese
\n", + "
\n", + "

Chinese Natural Rubber Daily Market Price Report: January 16, 2019

\n", + "
\n", + "
\n", + "
\r\n", + " Chinese Natural Rubber Daily Market Price Report: January 16, 2019\r\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Asian physical rubber prices: January 16, 2020

\n", + "
\n", + "
\n", + "
\r\n", + " Jan 16 (Reuters) - Asian physical rubber prices\r\n", + "\r\n", + "\r\n", + "\r\n", + "Grade\r\n", + "Prices\r\n", + "\r\n", + "\r\n", + "Thai RSS3 (February)\r\n", + "$1.66/kg\r\n", + "\r\n", + "\r\n", + "Thai STR20 (February)\r\n", + "$1.52/kg\r\n", + "\r\n", + "\r\n", + "Thai 60% latex (bulk/February)\r\n", + "$1,150/tonne\r\n", + "\r\n", + "\r\n", + "Thai 60% latex (drum/February)\r\n", + "$1,250/tonne\r\n", + "\r\n", + "\r\n", + "Malaysia SMR20 (February)\r\n", + "$1.52/kg\r\n", + "\r\n", + "\r\n", + "Indonesia SIR20*\r\n", + "$1.54/Kg\r\n", + "\r\n", + "\r\n", + "Thai USS3\r\n", + "41.94 baht/kg\r\n", + "\r\n", + "\r\n", + "\r\n", + "* As...
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

India Rubber: Hits 4-month high on ICEX tracking gains in Kerala mkt

\n", + "
\n", + "
\n", + "
\r\n", + " By Rahul Dhuri\r\n", + "MUMBAI – The most active February contract of rubber hit a four-month high of 14,380 rupees per 100 kg on the Indian...
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

India: Spot rubber shows a mixed mood

\n", + "
\n", + "
\n", + "
\r\n", + " \r\n", + "\r\n", + "\r\n", + "Spot rubber showed a mixed mood on Thursday. RSS 4 was quoted steady at Rs.137.50 per kg by traders. The same improved to Rs.137.50...
\n", + "
\n", + "
\n", + "
123...5,127Page 1 of 5,127
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "

Advertisement

\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "

LATEST

\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Oil market shrugs off Libya crisis amid ample global supply

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Egypt may add Indian wheat to list of acceptable import origins

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Expect A Strong Year For Oil Discoveries

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Spanish olive growers claim first victory against U.S. duties

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\"\"
\n", + "
\n", + "

Trump says middle class tax cut to be announced over next...

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "
\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(soup)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "January 22, 2020\n", + "Tokyo rubber slumps over 4 percent\n", + "Tokyo Commodity Exchange (TOCOM) futures plunged more than 4% on Tuesday, their most in 22 months, as concerns over the potential economic fallout from... \n", + "https://globalrubbermarkets.com/194165/tokyo-rubber-slumps-over-4-percent.html\n", + "\n", + "\n", + "January 22, 2020\n", + "India Rubber: Tad dn on ICEX on TOCOM cues; rise in spot limits fall\n", + "Back \r\n", + "\r\n", + " ... \n", + "https://globalrubbermarkets.com/194109/india-rubber-tad-dn-on-icex-on-tocom-cues-rise-in-spot-limits-fall.html\n", + "\n", + "\n", + "January 21, 2020\n", + "India Rubber: Down on ICEX tailing TOCOM contracts; up in spot mkts\n", + "Back \r\n", + "\r\n", + " ... \n", + "https://globalrubbermarkets.com/193884/india-rubber-down-on-icex-tailing-tocom-contracts-up-in-spot-mkts.html\n", + "\n", + "\n", + "January 20, 2020\n", + "Tokyo rubber hits one-week low\n", + "Tokyo Commodity Exchange (TOCOM) futures slipped to an about 1-week low on Monday, as investors took profits after the benchmark touched a 10-1/2-month high... \n", + "https://globalrubbermarkets.com/193865/tokyo-rubber-hits-one-week-low.html\n", + "\n", + "\n", + "January 17, 2020\n", + "India Rubber: Down on ICEX on short selling, tailing TOCOM contracts\n", + "Back \r\n", + "\r\n", + " ... \n", + "https://globalrubbermarkets.com/193518/india-rubber-down-on-icex-on-short-selling-tailing-tocom-contracts.html\n", + "\n", + "\n", + "January 17, 2020\n", + "Natural Rubber prices surge at tail end of peak season\n", + "From Rs 120 per kg in the first week of November, the price of premium grade RSS-4 has crossed Rs 137 per kg this... \n", + "https://globalrubbermarkets.com/193348/natural-rubber-prices-surge-at-tail-end-of-peak-season.html\n", + "\n", + "\n", + "January 17, 2020\n", + "Chinese Natural Rubber Daily Market Price Report: January 16, 2019\n", + "Chinese Natural Rubber Daily Market Price Report: January 16, 2019\r\n", + " \n", + "https://globalrubbermarkets.com/193343/chinese-natural-rubber-daily-market-price-report-january-16-2019.html\n", + "\n", + "\n", + "January 17, 2020\n", + "Asian physical rubber prices: January 16, 2020\n", + "Jan 16 (Reuters) - Asian physical rubber prices\r\n", + "\r\n", + "\r\n", + "\r\n", + "Grade\r\n", + "Prices\r\n", + "\r\n", + "\r\n", + "Thai RSS3 (February)\r\n", + "$1.66/kg\r\n", + "\r\n", + "\r\n", + "Thai STR20 (February)\r\n", + "$1.52/kg\r\n", + "\r\n", + "\r\n", + "Thai 60% latex (bulk/February)\r\n", + "$1,150/tonne\r\n", + "\r\n", + "\r\n", + "Thai 60% latex (drum/February)\r\n", + "$1,250/tonne\r\n", + "\r\n", + "\r\n", + "Malaysia SMR20 (February)\r\n", + "$1.52/kg\r\n", + "\r\n", + "\r\n", + "Indonesia SIR20*\r\n", + "$1.54/Kg\r\n", + "\r\n", + "\r\n", + "Thai USS3\r\n", + "41.94 baht/kg\r\n", + "\r\n", + "\r\n", + "\r\n", + "* As... \n", + "https://globalrubbermarkets.com/193342/asian-physical-rubber-prices-january-16-2020.html\n", + "\n", + "\n", + "January 17, 2020\n", + "India Rubber: Hits 4-month high on ICEX tracking gains in Kerala mkt\n", + "By Rahul Dhuri\r\n", + "MUMBAI – The most active February contract of rubber hit a four-month high of 14,380 rupees per 100 kg on the Indian... \n", + "https://globalrubbermarkets.com/193340/india-rubber-hits-4-month-high-on-icex-tracking-gains-in-kerala-mkt-2.html\n", + "\n", + "\n", + "January 17, 2020\n", + "India: Spot rubber shows a mixed mood\n", + "Spot rubber showed a mixed mood on Thursday. RSS 4 was quoted steady at Rs.137.50 per kg by traders. The same improved to Rs.137.50... \n", + "https://globalrubbermarkets.com/193338/india-spot-rubber-shows-a-mixed-mood.html\n", + "\n", + "\n" + ] + } + ], + "source": [ + "container = soup.findAll(\"div\",{\"class\":\"td_module_16 td_module_wrap td-animation-stack\"})\n", + "all_links = list()\n", + "for i in container:\n", + " headlines = i.findAll(\"div\",{\"class\":\"item-details\"})\n", + " for j in headlines:\n", + " date = j.find(\"span\",{\"class\":\"td-post-date\"})\n", + " print(date.text)\n", + " title = j.find(\"h3\",{\"class\":\"entry-title td-module-title\"})\n", + " print(title.text)\n", + " summary = j.find(\"div\",{\"class\":\"td-excerpt\"})\n", + " print((summary.text).lstrip())\n", + " link = j.find(\"a\")\n", + " print(link['href'])\n", + " all_links.append(link['href'])\n", + " print(\"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['https://globalrubbermarkets.com/194165/tokyo-rubber-slumps-over-4-percent.html',\n", + " 'https://globalrubbermarkets.com/194109/india-rubber-tad-dn-on-icex-on-tocom-cues-rise-in-spot-limits-fall.html',\n", + " 'https://globalrubbermarkets.com/193884/india-rubber-down-on-icex-tailing-tocom-contracts-up-in-spot-mkts.html',\n", + " 'https://globalrubbermarkets.com/193865/tokyo-rubber-hits-one-week-low.html',\n", + " 'https://globalrubbermarkets.com/193518/india-rubber-down-on-icex-on-short-selling-tailing-tocom-contracts.html',\n", + " 'https://globalrubbermarkets.com/193348/natural-rubber-prices-surge-at-tail-end-of-peak-season.html',\n", + " 'https://globalrubbermarkets.com/193343/chinese-natural-rubber-daily-market-price-report-january-16-2019.html',\n", + " 'https://globalrubbermarkets.com/193342/asian-physical-rubber-prices-january-16-2020.html',\n", + " 'https://globalrubbermarkets.com/193340/india-rubber-hits-4-month-high-on-icex-tracking-gains-in-kerala-mkt-2.html',\n", + " 'https://globalrubbermarkets.com/193338/india-spot-rubber-shows-a-mixed-mood.html']" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "all_links" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tokyo Commodity Exchange (TOCOM) futures plunged more than 4% on Tuesday, their most in 22 months, as concerns over the potential economic fallout from an outbreak of a new flu-like virus in China weighed on prices.\n", + "TOCOM’s rubber contract for June delivery finished 8.4 yen, or 4.2%, lower at 193.0 yen ($1.76) per kg, marking the biggest one-day drop since March 2018. It touched the lowest since Dec. 23 of 192.2 yen earlier in the session.\n", + "The most-active rubber contract on the Shanghai futures exchange for May delivery tumbled 345 yuan to finish at 12,620 yuan ($1,827) per tonne.\n", + "The front-month rubber contract on Singapore’s SICOM exchange for February delivery last traded at 147.2 US cents per kg, down 2.3%.\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Full.story
0Sumitomo Rubber Industries has established a n...
1Spot rubber closed unchanged on Thursday. RSS ...
2Delegate registration for India Rubber Meet 20...
3MUMBAI – Futures contracts of rubber on the In...
4Tapping has been delayed despite the fact that...
......
5270Cogencis, Wednesday, Apr 11 NEW DELHI – India’...
5271Cogencis, Tuesday, Apr 10 By Prabhnoor Nanda N...
5272OUTLOOK Futures contracts of natural rubber ma...
5273Cogencis, Tuesday, Apr 10 By Shikha Singh NEW ...
5274Cogencis, Monday, Apr 9 By Prabhnoor Nanda NEW...
\n", + "

5275 rows × 1 columns

\n", + "" + ], + "text/plain": [ + " Full.story\n", + "0 Sumitomo Rubber Industries has established a n...\n", + "1 Spot rubber closed unchanged on Thursday. RSS ...\n", + "2 Delegate registration for India Rubber Meet 20...\n", + "3 MUMBAI – Futures contracts of rubber on the In...\n", + "4 Tapping has been delayed despite the fact that...\n", + "... ...\n", + "5270 Cogencis, Wednesday, Apr 11 NEW DELHI – India’...\n", + "5271 Cogencis, Tuesday, Apr 10 By Prabhnoor Nanda N...\n", + "5272 OUTLOOK Futures contracts of natural rubber ma...\n", + "5273 Cogencis, Tuesday, Apr 10 By Shikha Singh NEW ...\n", + "5274 Cogencis, Monday, Apr 9 By Prabhnoor Nanda NEW...\n", + "\n", + "[5275 rows x 1 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "data.rename(columns = {'Full.story':'full_story'}, inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
full_story
0Sumitomo Rubber Industries has established a n...
1Spot rubber closed unchanged on Thursday. RSS ...
2Delegate registration for India Rubber Meet 20...
3MUMBAI – Futures contracts of rubber on the In...
4Tapping has been delayed despite the fact that...
......
5270Cogencis, Wednesday, Apr 11 NEW DELHI – India’...
5271Cogencis, Tuesday, Apr 10 By Prabhnoor Nanda N...
5272OUTLOOK Futures contracts of natural rubber ma...
5273Cogencis, Tuesday, Apr 10 By Shikha Singh NEW ...
5274Cogencis, Monday, Apr 9 By Prabhnoor Nanda NEW...
\n", + "

5275 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " full_story\n", + "0 Sumitomo Rubber Industries has established a n...\n", + "1 Spot rubber closed unchanged on Thursday. RSS ...\n", + "2 Delegate registration for India Rubber Meet 20...\n", + "3 MUMBAI – Futures contracts of rubber on the In...\n", + "4 Tapping has been delayed despite the fact that...\n", + "... ...\n", + "5270 Cogencis, Wednesday, Apr 11 NEW DELHI – India’...\n", + "5271 Cogencis, Tuesday, Apr 10 By Prabhnoor Nanda N...\n", + "5272 OUTLOOK Futures contracts of natural rubber ma...\n", + "5273 Cogencis, Tuesday, Apr 10 By Shikha Singh NEW ...\n", + "5274 Cogencis, Monday, Apr 9 By Prabhnoor Nanda NEW...\n", + "\n", + "[5275 rows x 1 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5275, 1)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents = data[['full_story']]\n", + "documents.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
full_story
0Sumitomo Rubber Industries has established a n...
1Spot rubber closed unchanged on Thursday. RSS ...
2Delegate registration for India Rubber Meet 20...
3MUMBAI – Futures contracts of rubber on the In...
4Tapping has been delayed despite the fact that...
......
5270Cogencis, Wednesday, Apr 11 NEW DELHI – India’...
5271Cogencis, Tuesday, Apr 10 By Prabhnoor Nanda N...
5272OUTLOOK Futures contracts of natural rubber ma...
5273Cogencis, Tuesday, Apr 10 By Shikha Singh NEW ...
5274Cogencis, Monday, Apr 9 By Prabhnoor Nanda NEW...
\n", + "

5275 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " full_story\n", + "0 Sumitomo Rubber Industries has established a n...\n", + "1 Spot rubber closed unchanged on Thursday. RSS ...\n", + "2 Delegate registration for India Rubber Meet 20...\n", + "3 MUMBAI – Futures contracts of rubber on the In...\n", + "4 Tapping has been delayed despite the fact that...\n", + "... ...\n", + "5270 Cogencis, Wednesday, Apr 11 NEW DELHI – India’...\n", + "5271 Cogencis, Tuesday, Apr 10 By Prabhnoor Nanda N...\n", + "5272 OUTLOOK Futures contracts of natural rubber ma...\n", + "5273 Cogencis, Tuesday, Apr 10 By Shikha Singh NEW ...\n", + "5274 Cogencis, Monday, Apr 9 By Prabhnoor Nanda NEW...\n", + "\n", + "[5275 rows x 1 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
full_story
4310Rubber futures on TOCOM were trading higher du...
\n", + "
" + ], + "text/plain": [ + " full_story\n", + "4310 Rubber futures on TOCOM were trading higher du..." + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents[documents.index == 4310]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## EDA" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# !pip install wordcloud" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "from wordcloud import WordCloud" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Join the different processed titles together.\n", + "long_string = ','.join(list(documents['full_story'].values))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wordcloud = WordCloud(background_color=\"white\", max_words=5000, contour_width=8, contour_color='steelblue')\n", + "wordcloud.generate(long_string)\n", + "wordcloud.to_image()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def freq_words(x, terms = 30):\n", + " all_words = ' '.join([text for text in x])\n", + " all_words = all_words.split()\n", + "\n", + " fdist = FreqDist(all_words)\n", + " words_df = pd.DataFrame({'word':list(fdist.keys()), 'count':list(fdist.values())})\n", + "\n", + " d = words_df.nlargest(columns=\"count\", n = terms) \n", + " plt.figure(figsize=(20,5))\n", + " ax = sns.barplot(data=d, x= \"word\", y = \"count\")\n", + " ax.set(ylabel = 'Count')\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "freq_words(documents['full_story'])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "documents['full_story'] = documents['full_story'].str.replace(\"[^a-zA-Z#@]\", \" \")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data processing" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# import nltk\n", + "# nltk.download('wordnet')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# stop_words.extend(['from', 'subject', 're', 'edu', 'use'])" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [], + "source": [ + "my_stop_words = STOPWORDS.union(set(['send', 'comment', 'feedback', 'today', 'come', 'harsh', 'akshit', 'nishant', 'chakraborty', 'augustine',\n", + " 'cogencis', 'com', 'rahul', 'dhuri', 'end-users','rupeesedited', 'mugunthan', 'kesavan', 'says', 'said', 'say'\n", + " 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday', \n", + " 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', \n", + " 'november', 'december','kerela','delhi','kottayam','india','china','japanese','thailand','malaysia','tokyo'\n", + " , \"come\",\"chinese\",\"prabhnoor\",\"shikha\",\"singh\",\"mumbai\",\"rubber\",\"kerala\",\"kochi\",\"make\",\"board\",\"data\",\"grade\"\n", + " ,\"cents\",\"show\",\"table\",\"detail\",\"change\",\"give\",\"nanda\",\"geojit\",\"iran\"])) " + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "def lemmatize_stemming(text):\n", + "# ps=SnowballStemmer(language='english')\n", + " return WordNetLemmatizer().lemmatize(text, pos='v')\n", + "\n", + "def preprocess(text):\n", + " result = []\n", + " for token in gensim.utils.simple_preprocess(text):\n", + " if token not in gensim.parsing.preprocessing.STOPWORDS and token not in my_stop_words and len(token) > 3:\n", + " result.append(lemmatize_stemming(token))\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [], + "source": [ + "doc_sample = documents[documents.index == 4310].values[0][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Rubber futures on TOCOM were trading higher due to signs of a recovery in the Chinese economy after the release of stronger than expected data on Friday analysts said China is the largest consumer of natural rubber '" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "doc_sample" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "original document: \n", + "['Rubber', 'futures', 'on', 'TOCOM', 'were', 'trading', 'higher', 'due', 'to', 'signs', 'of', 'a', 'recovery', 'in', 'the', 'Chinese', 'economy', '', 'after', 'the', 'release', 'of', 'stronger', 'than', 'expected', 'data', 'on', 'Friday', '', 'analysts', 'said', '', 'China', 'is', 'the', 'largest', 'consumer', 'of', 'natural', 'rubber', '']\n", + "\n", + "Tokenized and Lemmatized document: \n", + "['futures', 'tocom', 'trade', 'higher', 'sign', 'recovery', 'economy', 'release', 'stronger', 'expect', 'analysts', 'largest', 'consumer', 'natural']\n" + ] + } + ], + "source": [ + "print('original document: ')\n", + "words = []\n", + "for word in doc_sample.split(' '):\n", + " words.append(word)\n", + "print(words)\n", + "\n", + "print('\\nTokenized and Lemmatized document: ')\n", + "print(preprocess(doc_sample))" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 [sumitomo, industries, establish, natural, pro...\n", + "1 [spot, close, unchanged, quote, steady, trader...\n", + "2 [delegate, registration, meet, begin, meet, ho...\n", + "3 [futures, contract, indian, commodity, exchang...\n", + "4 [tap, delay, despite, fact, peak, season, decl...\n", + " ... \n", + "5270 [natural, production, fell, year, accord, prov...\n", + "5271 [futures, contract, national, multi, commodity...\n", + "5272 [outlook, futures, contract, natural, trade, l...\n", + "5273 [price, natural, fell, spot, market, poor, dem...\n", + "5274 [monday, futures, contract, national, multi, c...\n", + "Name: full_story, Length: 5275, dtype: object" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "processed_docs = documents['full_story'].map(preprocess)\n", + "processed_docs" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [], + "source": [ + "def merging_preprocess(row):\n", + " values = ' '.join(str(row[v]) for v in range(len(row)))\n", + " return values" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [], + "source": [ + "documents['preprocess_join']=processed_docs.apply(merging_preprocess)" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 sumitomo industries establish natural procurem...\n", + "1 spot close unchanged quote steady traders fini...\n", + "2 delegate registration meet begin meet hold rad...\n", + "3 futures contract indian commodity exchange ris...\n", + "4 tap delay despite fact peak season decline imp...\n", + " ... \n", + "5270 natural production fell year accord provisiona...\n", + "5271 futures contract national multi commodity exch...\n", + "5272 outlook futures contract natural trade lower s...\n", + "5273 price natural fell spot market poor demand tra...\n", + "5274 monday futures contract national multi commodi...\n", + "Name: preprocess_join, Length: 5275, dtype: object" + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents['preprocess_join']" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "freq_words(documents['preprocess_join'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Filters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "-- filter tokens less than 15 documents\n", + "-- keep only 100000 words" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 establish\n", + "1 industries\n", + "2 largest\n", + "3 natural\n", + "4 procurement\n", + "5 singapore\n" + ] + } + ], + "source": [ + "dictionary = gensim.corpora.Dictionary(processed_docs)\n", + "\n", + "count = 0\n", + "for k, v in dictionary.iteritems():\n", + " print(k, v)\n", + " count += 1\n", + " if count > 5:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dictionary" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [], + "source": [ + "dictionary.filter_extremes(no_below=15, no_above=0.5, keep_n=100000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gensim doc2bow-- Creating dictionary from the data" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Word 1 (\"largest\") appears 1 time.\n", + "Word 2 (\"natural\") appears 1 time.\n", + "Word 4 (\"trade\") appears 1 time.\n", + "Word 27 (\"futures\") appears 1 time.\n", + "Word 79 (\"analysts\") appears 1 time.\n", + "Word 89 (\"consumer\") appears 1 time.\n", + "Word 130 (\"tocom\") appears 1 time.\n", + "Word 142 (\"expect\") appears 1 time.\n", + "Word 143 (\"higher\") appears 1 time.\n", + "Word 161 (\"economy\") appears 1 time.\n", + "Word 382 (\"release\") appears 1 time.\n", + "Word 572 (\"sign\") appears 1 time.\n", + "Word 621 (\"recovery\") appears 1 time.\n" + ] + } + ], + "source": [ + "bow_doc_4310 = bow_corpus[4310]\n", + "for i in range(len(bow_doc_4310)):\n", + " print(\"Word {} (\\\"{}\\\") appears {} time.\".format(bow_doc_4310[i][0], \n", + " dictionary[bow_doc_4310[i][0]], \n", + " bow_doc_4310[i][1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Saving pickle files" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle\n", + "pickle.dump(bow_corpus, open('corpus.pkl', 'wb'))\n", + "dictionary.save('dictionary.gensim')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## LDA" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [], + "source": [ + "lda_model_batch = gensim.models.ldamodel.LdaModel(corpus=bow_corpus,\n", + " id2word=dictionary,\n", + " num_topics=20, \n", + " random_state=100,\n", + " update_every=1,\n", + " chunksize=100,\n", + " passes=10,\n", + " alpha='auto',\n", + " per_word_topics=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [], + "source": [ + "lda_model_batch.save('model_lda.gensim')" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, '0.261*\"state\" + 0.181*\"continue\" + 0.156*\"increase\" + 0.090*\"cheaper\" + 0.083*\"research\" + 0.049*\"recent\" + 0.045*\"worry\" + 0.044*\"flat\" + 0.027*\"economic\" + 0.027*\"tepid\"'), (1, '0.308*\"produce\" + 0.138*\"face\" + 0.098*\"plantations\" + 0.087*\"group\" + 0.079*\"producers\" + 0.075*\"plan\" + 0.071*\"current\" + 0.048*\"vietnam\" + 0.033*\"latex\" + 0.018*\"expand\"'), (2, '0.201*\"contract\" + 0.155*\"exchange\" + 0.121*\"commodity\" + 0.074*\"rupees\" + 0.060*\"week\" + 0.058*\"gain\" + 0.054*\"benchmark\" + 0.046*\"higher\" + 0.043*\"track\" + 0.033*\"futures\"'), (3, '0.235*\"rupees\" + 0.124*\"widely\" + 0.113*\"rupee\" + 0.088*\"unchanged\" + 0.081*\"sell\" + 0.071*\"variety\" + 0.067*\"show\" + 0.059*\"trade\" + 0.044*\"traders\" + 0.036*\"cap\"'), (4, '0.298*\"analysts\" + 0.111*\"lower\" + 0.084*\"global\" + 0.078*\"largest\" + 0.042*\"investors\" + 0.041*\"world\" + 0.037*\"consumer\" + 0.035*\"firm\" + 0.035*\"fall\" + 0.033*\"profit\"'), (5, '0.190*\"see\" + 0.161*\"base\" + 0.121*\"tap\" + 0.086*\"season\" + 0.061*\"alencherry\" + 0.046*\"owner\" + 0.042*\"grow\" + 0.035*\"areas\" + 0.035*\"gain\" + 0.034*\"peak\"'), (6, '0.254*\"close\" + 0.235*\"rupees\" + 0.119*\"previous\" + 0.100*\"bourse\" + 0.096*\"come\" + 0.076*\"contract\" + 0.057*\"active\" + 0.049*\"end\" + 0.009*\"affect\" + 0.004*\"step\"'), (7, '0.327*\"year\" + 0.190*\"outlook\" + 0.185*\"natural\" + 0.125*\"global\" + 0.084*\"association\" + 0.023*\"president\" + 0.021*\"economy\" + 0.014*\"forecast\" + 0.007*\"line\" + 0.007*\"slow\"'), (8, '0.188*\"trader\" + 0.167*\"decline\" + 0.140*\"weigh\" + 0.120*\"base\" + 0.076*\"largely\" + 0.065*\"financial\" + 0.058*\"buy\" + 0.031*\"tyres\" + 0.030*\"boost\" + 0.026*\"bank\"'), (9, '0.205*\"market\" + 0.106*\"natural\" + 0.102*\"spot\" + 0.097*\"domestic\" + 0.083*\"demand\" + 0.082*\"likely\" + 0.074*\"traders\" + 0.070*\"supply\" + 0.047*\"rise\" + 0.027*\"price\"'), (10, '0.383*\"expect\" + 0.234*\"output\" + 0.102*\"estimate\" + 0.068*\"cover\" + 0.054*\"tree\" + 0.043*\"plant\" + 0.030*\"agriculture\" + 0.029*\"ministry\" + 0.021*\"authority\" + 0.011*\"million\"'), (11, '0.333*\"accord\" + 0.257*\"tyre\" + 0.091*\"steady\" + 0.050*\"quote\" + 0.050*\"improve\" + 0.043*\"sector\" + 0.034*\"strength\" + 0.032*\"mix\" + 0.031*\"open\" + 0.026*\"respectively\"'), (12, '0.190*\"icex\" + 0.180*\"remain\" + 0.129*\"account\" + 0.083*\"trend\" + 0.082*\"level\" + 0.063*\"capital\" + 0.061*\"short\" + 0.056*\"resistance\" + 0.051*\"term\" + 0.034*\"director\"'), (13, '0.228*\"production\" + 0.182*\"stock\" + 0.117*\"high\" + 0.081*\"earlier\" + 0.055*\"growth\" + 0.046*\"average\" + 0.040*\"deal\" + 0.037*\"industry\" + 0.034*\"compare\" + 0.028*\"industrial\"'), (14, '0.221*\"trade\" + 0.207*\"follow\" + 0.191*\"monday\" + 0.165*\"compare\" + 0.052*\"add\" + 0.038*\"strong\" + 0.029*\"early\" + 0.025*\"product\" + 0.019*\"ahead\" + 0.015*\"slightly\"'), (15, '0.182*\"crude\" + 0.159*\"futures\" + 0.120*\"tocom\" + 0.093*\"cue\" + 0.055*\"dollar\" + 0.053*\"trade\" + 0.051*\"shanghai\" + 0.046*\"weakness\" + 0.044*\"international\" + 0.042*\"weak\"'), (16, '0.249*\"export\" + 0.218*\"report\" + 0.142*\"consumption\" + 0.103*\"government\" + 0.075*\"place\" + 0.054*\"second\" + 0.047*\"share\" + 0.032*\"farmers\" + 0.016*\"uncertainty\" + 0.013*\"force\"'), (17, '0.569*\"price\" + 0.152*\"rise\" + 0.113*\"fall\" + 0.072*\"fell\" + 0.025*\"variety\" + 0.024*\"sharp\" + 0.015*\"show\" + 0.007*\"prevent\" + 0.005*\"source\" + 0.004*\"water\"'), (18, '0.447*\"import\" + 0.383*\"month\" + 0.067*\"general\" + 0.020*\"statistics\" + 0.016*\"directorate\" + 0.016*\"natural\" + 0.015*\"commercial\" + 0.009*\"show\" + 0.005*\"intelligence\" + 0.003*\"fell\"'), (19, '0.289*\"support\" + 0.146*\"take\" + 0.089*\"near\" + 0.062*\"pressure\" + 0.052*\"begin\" + 0.043*\"plantation\" + 0.037*\"hold\" + 0.037*\"position\" + 0.027*\"result\" + 0.027*\"meet\"')]\n" + ] + } + ], + "source": [ + "print(lda_model_batch.print_topics())\n", + "doc_lda = lda_model_batch[bow_corpus]" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.261*\"state\" + 0.181*\"continue\" + 0.156*\"increase\" + 0.090*\"cheaper\" + 0.083*\"research\"')\n", + "(1, '0.308*\"produce\" + 0.138*\"face\" + 0.098*\"plantations\" + 0.087*\"group\" + 0.079*\"producers\"')\n", + "(2, '0.201*\"contract\" + 0.155*\"exchange\" + 0.121*\"commodity\" + 0.074*\"rupees\" + 0.060*\"week\"')\n", + "(3, '0.235*\"rupees\" + 0.124*\"widely\" + 0.113*\"rupee\" + 0.088*\"unchanged\" + 0.081*\"sell\"')\n", + "(4, '0.298*\"analysts\" + 0.111*\"lower\" + 0.084*\"global\" + 0.078*\"largest\" + 0.042*\"investors\"')\n", + "(5, '0.190*\"see\" + 0.161*\"base\" + 0.121*\"tap\" + 0.086*\"season\" + 0.061*\"alencherry\"')\n", + "(6, '0.254*\"close\" + 0.235*\"rupees\" + 0.119*\"previous\" + 0.100*\"bourse\" + 0.096*\"come\"')\n", + "(7, '0.327*\"year\" + 0.190*\"outlook\" + 0.185*\"natural\" + 0.125*\"global\" + 0.084*\"association\"')\n", + "(8, '0.188*\"trader\" + 0.167*\"decline\" + 0.140*\"weigh\" + 0.120*\"base\" + 0.076*\"largely\"')\n", + "(9, '0.205*\"market\" + 0.106*\"natural\" + 0.102*\"spot\" + 0.097*\"domestic\" + 0.083*\"demand\"')\n", + "(10, '0.383*\"expect\" + 0.234*\"output\" + 0.102*\"estimate\" + 0.068*\"cover\" + 0.054*\"tree\"')\n", + "(11, '0.333*\"accord\" + 0.257*\"tyre\" + 0.091*\"steady\" + 0.050*\"quote\" + 0.050*\"improve\"')\n", + "(12, '0.190*\"icex\" + 0.180*\"remain\" + 0.129*\"account\" + 0.083*\"trend\" + 0.082*\"level\"')\n", + "(13, '0.228*\"production\" + 0.182*\"stock\" + 0.117*\"high\" + 0.081*\"earlier\" + 0.055*\"growth\"')\n", + "(14, '0.221*\"trade\" + 0.207*\"follow\" + 0.191*\"monday\" + 0.165*\"compare\" + 0.052*\"add\"')\n", + "(15, '0.182*\"crude\" + 0.159*\"futures\" + 0.120*\"tocom\" + 0.093*\"cue\" + 0.055*\"dollar\"')\n", + "(16, '0.249*\"export\" + 0.218*\"report\" + 0.142*\"consumption\" + 0.103*\"government\" + 0.075*\"place\"')\n", + "(17, '0.569*\"price\" + 0.152*\"rise\" + 0.113*\"fall\" + 0.072*\"fell\" + 0.025*\"variety\"')\n", + "(18, '0.447*\"import\" + 0.383*\"month\" + 0.067*\"general\" + 0.020*\"statistics\" + 0.016*\"directorate\"')\n", + "(19, '0.289*\"support\" + 0.146*\"take\" + 0.089*\"near\" + 0.062*\"pressure\" + 0.052*\"begin\"')\n" + ] + } + ], + "source": [ + "topics = lda_model_batch.print_topics(num_words=5)\n", + "for topic in topics:\n", + " print(topic)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.261*\"state\" + 0.181*\"continue\" + 0.156*\"increase\" + 0.090*\"cheaper\" + 0.083*\"research\" + 0.049*\"recent\" + 0.045*\"worry\" + 0.044*\"flat\"')\n", + "(1, '0.308*\"produce\" + 0.138*\"face\" + 0.098*\"plantations\" + 0.087*\"group\" + 0.079*\"producers\" + 0.075*\"plan\" + 0.071*\"current\" + 0.048*\"vietnam\"')\n", + "(2, '0.201*\"contract\" + 0.155*\"exchange\" + 0.121*\"commodity\" + 0.074*\"rupees\" + 0.060*\"week\" + 0.058*\"gain\" + 0.054*\"benchmark\" + 0.046*\"higher\"')\n", + "(3, '0.235*\"rupees\" + 0.124*\"widely\" + 0.113*\"rupee\" + 0.088*\"unchanged\" + 0.081*\"sell\" + 0.071*\"variety\" + 0.067*\"show\" + 0.059*\"trade\"')\n", + "(4, '0.298*\"analysts\" + 0.111*\"lower\" + 0.084*\"global\" + 0.078*\"largest\" + 0.042*\"investors\" + 0.041*\"world\" + 0.037*\"consumer\" + 0.035*\"firm\"')\n", + "(5, '0.190*\"see\" + 0.161*\"base\" + 0.121*\"tap\" + 0.086*\"season\" + 0.061*\"alencherry\" + 0.046*\"owner\" + 0.042*\"grow\" + 0.035*\"areas\"')\n", + "(6, '0.254*\"close\" + 0.235*\"rupees\" + 0.119*\"previous\" + 0.100*\"bourse\" + 0.096*\"come\" + 0.076*\"contract\" + 0.057*\"active\" + 0.049*\"end\"')\n", + "(7, '0.327*\"year\" + 0.190*\"outlook\" + 0.185*\"natural\" + 0.125*\"global\" + 0.084*\"association\" + 0.023*\"president\" + 0.021*\"economy\" + 0.014*\"forecast\"')\n", + "(8, '0.188*\"trader\" + 0.167*\"decline\" + 0.140*\"weigh\" + 0.120*\"base\" + 0.076*\"largely\" + 0.065*\"financial\" + 0.058*\"buy\" + 0.031*\"tyres\"')\n", + "(9, '0.205*\"market\" + 0.106*\"natural\" + 0.102*\"spot\" + 0.097*\"domestic\" + 0.083*\"demand\" + 0.082*\"likely\" + 0.074*\"traders\" + 0.070*\"supply\"')\n", + "(10, '0.383*\"expect\" + 0.234*\"output\" + 0.102*\"estimate\" + 0.068*\"cover\" + 0.054*\"tree\" + 0.043*\"plant\" + 0.030*\"agriculture\" + 0.029*\"ministry\"')\n", + "(11, '0.333*\"accord\" + 0.257*\"tyre\" + 0.091*\"steady\" + 0.050*\"quote\" + 0.050*\"improve\" + 0.043*\"sector\" + 0.034*\"strength\" + 0.032*\"mix\"')\n", + "(12, '0.190*\"icex\" + 0.180*\"remain\" + 0.129*\"account\" + 0.083*\"trend\" + 0.082*\"level\" + 0.063*\"capital\" + 0.061*\"short\" + 0.056*\"resistance\"')\n", + "(13, '0.228*\"production\" + 0.182*\"stock\" + 0.117*\"high\" + 0.081*\"earlier\" + 0.055*\"growth\" + 0.046*\"average\" + 0.040*\"deal\" + 0.037*\"industry\"')\n", + "(14, '0.221*\"trade\" + 0.207*\"follow\" + 0.191*\"monday\" + 0.165*\"compare\" + 0.052*\"add\" + 0.038*\"strong\" + 0.029*\"early\" + 0.025*\"product\"')\n", + "(15, '0.182*\"crude\" + 0.159*\"futures\" + 0.120*\"tocom\" + 0.093*\"cue\" + 0.055*\"dollar\" + 0.053*\"trade\" + 0.051*\"shanghai\" + 0.046*\"weakness\"')\n", + "(16, '0.249*\"export\" + 0.218*\"report\" + 0.142*\"consumption\" + 0.103*\"government\" + 0.075*\"place\" + 0.054*\"second\" + 0.047*\"share\" + 0.032*\"farmers\"')\n", + "(17, '0.569*\"price\" + 0.152*\"rise\" + 0.113*\"fall\" + 0.072*\"fell\" + 0.025*\"variety\" + 0.024*\"sharp\" + 0.015*\"show\" + 0.007*\"prevent\"')\n", + "(18, '0.447*\"import\" + 0.383*\"month\" + 0.067*\"general\" + 0.020*\"statistics\" + 0.016*\"directorate\" + 0.016*\"natural\" + 0.015*\"commercial\" + 0.009*\"show\"')\n", + "(19, '0.289*\"support\" + 0.146*\"take\" + 0.089*\"near\" + 0.062*\"pressure\" + 0.052*\"begin\" + 0.043*\"plantation\" + 0.037*\"hold\" + 0.037*\"position\"')\n" + ] + } + ], + "source": [ + "topics = lda_model_batch.print_topics(num_words=8)\n", + "for topic in topics:\n", + " print(topic)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model Metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Perplexity: -11.818964763758563\n" + ] + } + ], + "source": [ + "print('Perplexity: ', lda_model_batch.log_perplexity(bow_corpus)) " + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coherence Score for c_v: 0.3965778953756843\n" + ] + } + ], + "source": [ + "from gensim.models import CoherenceModel\n", + "coherence_model_lda_c_v = CoherenceModel(model=lda_model_batch, texts=processed_docs, dictionary=dictionary, coherence='c_v')\n", + "coherence_lda = coherence_model_lda_c_v.get_coherence()\n", + "print('Coherence Score for c_v: ', coherence_lda)" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coherence Score for u_mass: -4.673057546428844\n" + ] + } + ], + "source": [ + "coherence_model_lda_u_mass = CoherenceModel(model=lda_model_batch, texts=processed_docs, dictionary=dictionary, coherence=\"u_mass\")\n", + "coherence_lda = coherence_model_lda_u_mass.get_coherence()\n", + "print('Coherence Score for u_mass: ', coherence_lda)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimal Topics" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [], + "source": [ + "def compute_coherence_values(dictionary, corpus, texts, limit, start=2, step=1):\n", + " coherence_values = []\n", + " model_list = []\n", + " for num_topics in range(start, limit, step):\n", + " model=LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics)\n", + " model_list.append(model)\n", + " coherencemodel = CoherenceModel(model=model, texts=texts, dictionary=dictionary, coherence='c_v')\n", + " coherence_values.append(coherencemodel.get_coherence())\n", + "\n", + " return model_list, coherence_values" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmodel_list\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcoherence_values\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcompute_coherence_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdictionary\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdictionary\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcorpus\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mbow_corpus\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtexts\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mprocessed_docs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstart\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlimit\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m20\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mlimit\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m20\u001b[0m\u001b[1;33m;\u001b[0m \u001b[0mstart\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m;\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m;\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstart\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlimit\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcoherence_values\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Num Topics\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m\u001b[0m in \u001b[0;36mcompute_coherence_values\u001b[1;34m(dictionary, corpus, texts, limit, start, step)\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mmodel_list\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mnum_topics\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstart\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlimit\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mmodel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLdaModel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcorpus\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcorpus\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mid2word\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdictionary\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum_topics\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnum_topics\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[0mmodel_list\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mcoherencemodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCoherenceModel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtexts\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtexts\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdictionary\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdictionary\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcoherence\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'c_v'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\gensim-3.8.1-py3.7-win-amd64.egg\\gensim\\models\\ldamodel.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, corpus, num_topics, id2word, distributed, chunksize, passes, update_every, alpha, eta, decay, offset, eval_every, iterations, gamma_threshold, minimum_probability, random_state, ns_conf, minimum_phi_value, per_word_topics, callbacks, dtype)\u001b[0m\n\u001b[0;32m 517\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcorpus\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 518\u001b[0m \u001b[0muse_numpy\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdispatcher\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 519\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcorpus\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mchunks_as_numpy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0muse_numpy\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 520\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 521\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minit_dir_prior\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mprior\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\gensim-3.8.1-py3.7-win-amd64.egg\\gensim\\models\\ldamodel.py\u001b[0m in \u001b[0;36mupdate\u001b[1;34m(self, corpus, chunksize, decay, offset, passes, update_every, eval_every, iterations, gamma_threshold, chunks_as_numpy)\u001b[0m\n\u001b[0;32m 978\u001b[0m \u001b[0mpass_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mchunk_no\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchunk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlencorpus\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 979\u001b[0m )\n\u001b[1;32m--> 980\u001b[1;33m \u001b[0mgammat\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdo_estep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchunk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mother\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 981\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 982\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptimize_alpha\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\gensim-3.8.1-py3.7-win-amd64.egg\\gensim\\models\\ldamodel.py\u001b[0m in \u001b[0;36mdo_estep\u001b[1;34m(self, chunk, state)\u001b[0m\n\u001b[0;32m 740\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mstate\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 741\u001b[0m \u001b[0mstate\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 742\u001b[1;33m \u001b[0mgamma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msstats\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minference\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchunk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcollect_sstats\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 743\u001b[0m \u001b[0mstate\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msstats\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0msstats\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 744\u001b[0m \u001b[0mstate\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnumdocs\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0mgamma\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;31m# avoids calling len(chunk) on a generator\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\gensim-3.8.1-py3.7-win-amd64.egg\\gensim\\models\\ldamodel.py\u001b[0m in \u001b[0;36minference\u001b[1;34m(self, chunk, collect_sstats)\u001b[0m\n\u001b[0;32m 694\u001b[0m \u001b[0mElogthetad\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdirichlet_expectation\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgammad\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 695\u001b[0m \u001b[0mexpElogthetad\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mElogthetad\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 696\u001b[1;33m \u001b[0mphinorm\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexpElogthetad\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexpElogbetad\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mepsilon\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 697\u001b[0m \u001b[1;31m# If gamma hasn't changed much, we're done.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 698\u001b[0m \u001b[0mmeanchange\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmean_absolute_difference\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgammad\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlastgamma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "model_list, coherence_values = compute_coherence_values(dictionary=dictionary, corpus=bow_corpus, texts=processed_docs, start=2, limit=20, step=1)\n", + "limit=20; start=2; step=1;\n", + "x = range(start, limit, step)\n", + "plt.plot(x, coherence_values)\n", + "plt.xlabel(\"Num Topics\")\n", + "plt.ylabel(\"Coherence score\")\n", + "plt.xticks(x)\n", + "plt.legend((\"coherence_values\"), loc='best')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Best model run" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [], + "source": [ + "lda_model_best = gensim.models.ldamodel.LdaModel(corpus=bow_corpus,\n", + " id2word=dictionary,\n", + " num_topics=4, \n", + " random_state=100,\n", + " update_every=1,\n", + " chunksize=100,\n", + " passes=10,\n", + " alpha='auto',\n", + " per_word_topics=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [], + "source": [ + "lda_model_best.save('model_bow_best.gensim')" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, '0.057*\"price\" + 0.048*\"market\" + 0.037*\"rise\" + 0.036*\"natural\" + 0.036*\"domestic\" + 0.033*\"demand\" + 0.032*\"likely\" + 0.030*\"supply\" + 0.027*\"fall\" + 0.025*\"spot\"'), (1, '0.021*\"month\" + 0.020*\"year\" + 0.018*\"national\" + 0.017*\"give\" + 0.016*\"multi\" + 0.015*\"company\" + 0.014*\"index\" + 0.013*\"price\" + 0.013*\"heavy\" + 0.012*\"state\"'), (2, '0.129*\"rupees\" + 0.074*\"price\" + 0.073*\"contract\" + 0.064*\"close\" + 0.046*\"commodity\" + 0.043*\"exchange\" + 0.034*\"previous\" + 0.032*\"market\" + 0.027*\"end\" + 0.026*\"active\"'), (3, '0.064*\"price\" + 0.056*\"contract\" + 0.051*\"crude\" + 0.051*\"futures\" + 0.048*\"exchange\" + 0.046*\"analysts\" + 0.038*\"tocom\" + 0.030*\"fell\" + 0.028*\"accord\" + 0.026*\"cue\"')]\n" + ] + } + ], + "source": [ + "print(lda_model_best.print_topics())\n", + "doc_lda_best = lda_model_best[bow_corpus]" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.057*\"price\" + 0.048*\"market\" + 0.037*\"rise\" + 0.036*\"natural\" + 0.036*\"domestic\"')\n", + "(1, '0.021*\"month\" + 0.020*\"year\" + 0.018*\"national\" + 0.017*\"give\" + 0.016*\"multi\"')\n", + "(2, '0.129*\"rupees\" + 0.074*\"price\" + 0.073*\"contract\" + 0.064*\"close\" + 0.046*\"commodity\"')\n", + "(3, '0.064*\"price\" + 0.056*\"contract\" + 0.051*\"crude\" + 0.051*\"futures\" + 0.048*\"exchange\"')\n" + ] + } + ], + "source": [ + "topics_best = lda_model_best.print_topics(num_words=5)\n", + "for topic in topics_best:\n", + " print(topic)" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, '0.057*\"price\" + 0.048*\"market\" + 0.037*\"rise\" + 0.036*\"natural\" + 0.036*\"domestic\" + 0.033*\"demand\" + 0.032*\"likely\" + 0.030*\"supply\"')\n", + "(1, '0.021*\"month\" + 0.020*\"year\" + 0.018*\"national\" + 0.017*\"give\" + 0.016*\"multi\" + 0.015*\"company\" + 0.014*\"index\" + 0.013*\"price\"')\n", + "(2, '0.129*\"rupees\" + 0.074*\"price\" + 0.073*\"contract\" + 0.064*\"close\" + 0.046*\"commodity\" + 0.043*\"exchange\" + 0.034*\"previous\" + 0.032*\"market\"')\n", + "(3, '0.064*\"price\" + 0.056*\"contract\" + 0.051*\"crude\" + 0.051*\"futures\" + 0.048*\"exchange\" + 0.046*\"analysts\" + 0.038*\"tocom\" + 0.030*\"fell\"')\n" + ] + } + ], + "source": [ + "topics_best = lda_model_best.print_topics(num_words=8)\n", + "for topic in topics_best:\n", + " print(topic)" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Perplexity: -5.768329720101713\n" + ] + } + ], + "source": [ + "print('Perplexity: ', lda_model_best.log_perplexity(bow_corpus)) " + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coherence Score for c_v: 0.7160431196112311\n" + ] + } + ], + "source": [ + "from gensim.models import CoherenceModel\n", + "coherence_model_lda_c_v = CoherenceModel(model=lda_model_best, texts=processed_docs, dictionary=dictionary, coherence='c_v')\n", + "coherence_lda = coherence_model_lda_c_v.get_coherence()\n", + "print('Coherence Score for c_v: ', coherence_lda)" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [], + "source": [ + "def get_lda_topics(model, num_topics):\n", + " word_dict = {};\n", + " for i in range(num_topics):\n", + " words = model.show_topic(i, topn = 40);\n", + " word_dict['Topic #' + '{:02d}'.format(i)] = [i[0] for i in words];\n", + " return pd.DataFrame(word_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Topic #00Topic #01Topic #02Topic #03
0pricemonthrupeesprice
1marketyearpricecontract
2risenationalcontractcrude
3naturalgiveclosefutures
4domesticmulticommodityexchange
5demandcompanyexchangeanalysts
6likelyindexprevioustocom
7supplypricemarketfell
8fallheavyendaccord
9spotstateactivecue
10tradersexportboursenatural
11comeincreasetradetrade
12basecurrencytradersrise
13tyremakesettlenmce
14dayshighvarietyweek
15raininternationalwidelysynthetic
16commentcomparespotdollar
17importexpectrupeesubstitute
18tradernearmondayfall
19outlookwholesaleweekcommodity
20seemarketfollowshanghai
21outputdenominaterisebenchmark
22gainmanufacturedetailmercantile
23globalreportbenchmarkyork
24productionmonthsshowwarehouse
25endusmajorunchangedtrack
26largestserviceindianmanufacture
27expectationsproductionsellgain
28remaincountryicexglobal
29countriesproductshigherstock
30tapreleasetrackdecline
31expectbuyersfuturescompare
32arrivalsdepartmentgainsupport
33supportperiodhighhigher
34sharpstocklowerweigh
35stockistsearlierweaknessmonth
36sessionsautomonthaccredit
37manufacturersfloodbuylower
38associationquarternaturalweak
39seasontakesteadyconcern
\n", + "
" + ], + "text/plain": [ + " Topic #00 Topic #01 Topic #02 Topic #03\n", + "0 price month rupees price\n", + "1 market year price contract\n", + "2 rise national contract crude\n", + "3 natural give close futures\n", + "4 domestic multi commodity exchange\n", + "5 demand company exchange analysts\n", + "6 likely index previous tocom\n", + "7 supply price market fell\n", + "8 fall heavy end accord\n", + "9 spot state active cue\n", + "10 traders export bourse natural\n", + "11 come increase trade trade\n", + "12 base currency traders rise\n", + "13 tyre make settle nmce\n", + "14 days high variety week\n", + "15 rain international widely synthetic\n", + "16 comment compare spot dollar\n", + "17 import expect rupee substitute\n", + "18 trader near monday fall\n", + "19 outlook wholesale week commodity\n", + "20 see market follow shanghai\n", + "21 output denominate rise benchmark\n", + "22 gain manufacture detail mercantile\n", + "23 global report benchmark york\n", + "24 production months show warehouse\n", + "25 endus major unchanged track\n", + "26 largest service indian manufacture\n", + "27 expectations production sell gain\n", + "28 remain country icex global\n", + "29 countries products higher stock\n", + "30 tap release track decline\n", + "31 expect buyers futures compare\n", + "32 arrivals department gain support\n", + "33 support period high higher\n", + "34 sharp stock lower weigh\n", + "35 stockists earlier weakness month\n", + "36 sessions auto month accredit\n", + "37 manufacturers flood buy lower\n", + "38 association quarter natural weak\n", + "39 season take steady concern" + ] + }, + "execution_count": 138, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_lda_topics(lda_model_best, 4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualize topic keywords from best model" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "dictionary = gensim.corpora.Dictionary.load('dictionary.gensim')\n", + "corpus = pickle.load(open('corpus.pkl', 'rb'))\n", + "lda = gensim.models.ldamodel.LdaModel.load('model_bow_best.gensim')" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pyLDAvis\\_prepare.py:257: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version\n", + "of pandas will change to not sort by default.\n", + "\n", + "To accept the future behavior, pass 'sort=False'.\n", + "\n", + "To retain the current behavior and silence the warning, pass 'sort=True'.\n", + "\n", + " return pd.concat([default_term_info] + list(topic_dfs))\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pyLDAvis.gensim\n", + "lda_display = pyLDAvis.gensim.prepare(lda, corpus, dictionary, sort_topics=False)\n", + "pyLDAvis.display(lda_display)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Train Data Mapping" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [], + "source": [ + "documents_copy= documents.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
full_storypreprocess_join
0Sumitomo Rubber Industries has established a n...sumitomo industries establish natural procurem...
1Spot rubber closed unchanged on Thursday RSS ...spot close unchanged quote steady traders fini...
2Delegate registration for India Rubber Meet ...delegate registration meet begin meet hold rad...
3MUMBAI Futures contracts of rubber on the In...futures contract indian commodity exchange ris...
4Tapping has been delayed despite the fact that...tap delay despite fact peak season decline imp...
.........
5270Cogencis Wednesday Apr NEW DELHI India ...natural production fell year accord provisiona...
5271Cogencis Tuesday Apr By Prabhnoor Nanda N...futures contract national multi commodity exch...
5272OUTLOOK Futures contracts of natural rubber ma...outlook futures contract natural trade lower s...
5273Cogencis Tuesday Apr By Shikha Singh NEW ...price natural fell spot market poor demand tra...
5274Cogencis Monday Apr By Prabhnoor Nanda NEW...monday futures contract national multi commodi...
\n", + "

5275 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " full_story \\\n", + "0 Sumitomo Rubber Industries has established a n... \n", + "1 Spot rubber closed unchanged on Thursday RSS ... \n", + "2 Delegate registration for India Rubber Meet ... \n", + "3 MUMBAI Futures contracts of rubber on the In... \n", + "4 Tapping has been delayed despite the fact that... \n", + "... ... \n", + "5270 Cogencis Wednesday Apr NEW DELHI India ... \n", + "5271 Cogencis Tuesday Apr By Prabhnoor Nanda N... \n", + "5272 OUTLOOK Futures contracts of natural rubber ma... \n", + "5273 Cogencis Tuesday Apr By Shikha Singh NEW ... \n", + "5274 Cogencis Monday Apr By Prabhnoor Nanda NEW... \n", + "\n", + " preprocess_join \n", + "0 sumitomo industries establish natural procurem... \n", + "1 spot close unchanged quote steady traders fini... \n", + "2 delegate registration meet begin meet hold rad... \n", + "3 futures contract indian commodity exchange ris... \n", + "4 tap delay despite fact peak season decline imp... \n", + "... ... \n", + "5270 natural production fell year accord provisiona... \n", + "5271 futures contract national multi commodity exch... \n", + "5272 outlook futures contract natural trade lower s... \n", + "5273 price natural fell spot market poor demand tra... \n", + "5274 monday futures contract national multi commodi... \n", + "\n", + "[5275 rows x 2 columns]" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents_copy" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [], + "source": [ + "def identify_topic_sentence(row):\n", + " bow_vector = dictionary.doc2bow(preprocess(row['full_story']))\n", + " row1= lda_model_best[bow_vector][0]\n", + " row1 = sorted(row1, key=lambda x: (x[1]), reverse=True)\n", + " \n", + " topic_num= row1[0][0]\n", + " prop_topic= row1[0][1]\n", + " wp = lda_model_best.show_topic(topic_num)\n", + " topic_keywords = \", \".join([word for word, prop in wp])\n", + " row['Topic_NUmber']= int(topic_num)\n", + " if int(topic_num)== 1:\n", + " row['Topic_name']= 'Domestic market supply demand'\n", + " elif int(topic_num)== 2:\n", + " row['Topic_name']= 'Rubber price comparison'\n", + " elif int(topic_num)== 3:\n", + " row['Topic_name']= 'Commodity market price'\n", + " else:\n", + " row['Topic_name']= 'Stock exchange analysis' \n", + " row['Topic_Propability']= round(prop_topic,3)\n", + " row['Keywords']= topic_keywords\n", + " \n", + " return row" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [], + "source": [ + "doc= documents_copy.apply(identify_topic_sentence,axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [], + "source": [ + "doc.drop(['preprocess_join'],axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
full_storyTopic_NUmberTopic_nameTopic_PropabilityKeywords
0Sumitomo Rubber Industries has established a n...0Stock exchange analysis0.462price, market, rise, natural, domestic, demand...
1Spot rubber closed unchanged on Thursday RSS ...2Rubber price comparison0.757rupees, price, contract, close, commodity, exc...
2Delegate registration for India Rubber Meet ...1Domestic market supply demand0.899month, year, national, give, multi, company, i...
3MUMBAI Futures contracts of rubber on the In...2Rubber price comparison0.742rupees, price, contract, close, commodity, exc...
4Tapping has been delayed despite the fact that...0Stock exchange analysis0.892price, market, rise, natural, domestic, demand...
..................
5270Cogencis Wednesday Apr NEW DELHI India ...0Stock exchange analysis0.424price, market, rise, natural, domestic, demand...
5271Cogencis Tuesday Apr By Prabhnoor Nanda N...0Stock exchange analysis0.450price, market, rise, natural, domestic, demand...
5272OUTLOOK Futures contracts of natural rubber ma...3Commodity market price0.685price, contract, crude, futures, exchange, ana...
5273Cogencis Tuesday Apr By Shikha Singh NEW ...0Stock exchange analysis0.392price, market, rise, natural, domestic, demand...
5274Cogencis Monday Apr By Prabhnoor Nanda NEW...3Commodity market price0.447price, contract, crude, futures, exchange, ana...
\n", + "

5275 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " full_story Topic_NUmber \\\n", + "0 Sumitomo Rubber Industries has established a n... 0 \n", + "1 Spot rubber closed unchanged on Thursday RSS ... 2 \n", + "2 Delegate registration for India Rubber Meet ... 1 \n", + "3 MUMBAI Futures contracts of rubber on the In... 2 \n", + "4 Tapping has been delayed despite the fact that... 0 \n", + "... ... ... \n", + "5270 Cogencis Wednesday Apr NEW DELHI India ... 0 \n", + "5271 Cogencis Tuesday Apr By Prabhnoor Nanda N... 0 \n", + "5272 OUTLOOK Futures contracts of natural rubber ma... 3 \n", + "5273 Cogencis Tuesday Apr By Shikha Singh NEW ... 0 \n", + "5274 Cogencis Monday Apr By Prabhnoor Nanda NEW... 3 \n", + "\n", + " Topic_name Topic_Propability \\\n", + "0 Stock exchange analysis 0.462 \n", + "1 Rubber price comparison 0.757 \n", + "2 Domestic market supply demand 0.899 \n", + "3 Rubber price comparison 0.742 \n", + "4 Stock exchange analysis 0.892 \n", + "... ... ... \n", + "5270 Stock exchange analysis 0.424 \n", + "5271 Stock exchange analysis 0.450 \n", + "5272 Commodity market price 0.685 \n", + "5273 Stock exchange analysis 0.392 \n", + "5274 Commodity market price 0.447 \n", + "\n", + " Keywords \n", + "0 price, market, rise, natural, domestic, demand... \n", + "1 rupees, price, contract, close, commodity, exc... \n", + "2 month, year, national, give, multi, company, i... \n", + "3 rupees, price, contract, close, commodity, exc... \n", + "4 price, market, rise, natural, domestic, demand... \n", + "... ... \n", + "5270 price, market, rise, natural, domestic, demand... \n", + "5271 price, market, rise, natural, domestic, demand... \n", + "5272 price, contract, crude, futures, exchange, ana... \n", + "5273 price, market, rise, natural, domestic, demand... \n", + "5274 price, contract, crude, futures, exchange, ana... \n", + "\n", + "[5275 rows x 5 columns]" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "doc" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [], + "source": [ + "doc.to_excel('LDA_BOW_Input_Mapping.xlsx')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "test_document1 = 'MUMBAI – Rubber contracts on the Indian Commodity Exchange fell today tracking the benchmark contracts on Tokyo Commodity Exchange, traders said. The most-active February contract ended at 14,100 rupees per 100 kg, down 0.2% from the pervious close'\n", + "bow_vector = dictionary.doc2bow(preprocess(test_document1))" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, 0.010566269), (1, 0.96880543), (2, 0.013036869)]\n" + ] + } + ], + "source": [ + "print(lda_model_best.get_document_topics(bow_vector))" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Word (0, 1) (\"active\") \n", + "Word (1, 1) (\"benchmark\") \n", + "Word (2, 1) (\"close\") \n", + "Word (3, 2) (\"commodity\") \n", + "Word (4, 3) (\"contract\") \n", + "Word (5, 2) (\"exchange\") \n", + "Word (7, 1) (\"february\") \n", + "Word (8, 1) (\"indian\") \n", + "Word (9, 1) (\"mumbai\") \n", + "Word (11, 1) (\"today\") \n", + "Word (12, 1) (\"tokyo\") \n", + "Word (13, 1) (\"track\") \n" + ] + } + ], + "source": [ + "for i in range(len(bow_vector)):\n", + " print(\"Word {} (\\\"{}\\\") \".format(bow_vector[i], \n", + " dictionary[bow_vector[i][0]]))" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# lda_model_best[bow_vector]" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [], + "source": [ + "sent_topics_df = pd.DataFrame()\n", + "row= lda_model_best[bow_vector][0]\n", + "row = sorted(row, key=lambda x: (x[1]), reverse=True)\n", + "\n", + "\n", + "\n", + "# for i, (topic_num, prop_topic) in enumerate(row):\n", + "# wp = lda_model_best.show_topic(topic_num)\n", + "# topic_keywords = \", \".join([word for word, prop in wp])\n", + "# sent_topics_df = sent_topics_df.append(pd.Series([int(topic_num), round(prop_topic,4), topic_keywords]), ignore_index=True)\n", + "\n", + "# print(sent_topics_df)\n", + "\n", + "topic_num= row[0][0]\n", + "prop_topic= row[0][1]\n", + "wp = lda_model_best.show_topic(topic_num)\n", + "topic_keywords = \", \".join([word for word, prop in wp])\n", + "sent_topics_df = sent_topics_df.append(pd.Series([int(topic_num), round(prop_topic,4), topic_keywords]), ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [], + "source": [ + "contents = pd.Series(test_document1)\n", + "sent_topics_df = pd.concat([contents,sent_topics_df], axis=1, ignore_index= True)\n", + "sent_topics_df.rename(columns = {0:'Input_document', 1: 'Topic_NUmber', 2: 'Topic_Propability', 3: 'Keywords'}, inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Input_documentTopic_NUmberTopic_PropabilityKeywords
0MUMBAI – Rubber contracts on the Indian Commod...1.00.9688contract, exchange, rupee, commodity, price, f...
\n", + "
" + ], + "text/plain": [ + " Input_document Topic_NUmber \\\n", + "0 MUMBAI – Rubber contracts on the Indian Commod... 1.0 \n", + "\n", + " Topic_Propability Keywords \n", + "0 0.9688 contract, exchange, rupee, commodity, price, f... " + ] + }, + "execution_count": 193, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sent_topics_df" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [], + "source": [ + "test_document3 = 'Today thailand recieved the highest rainfall. It may effect the production of natural rubber as well to a greater extent.'\n", + "bow_vector = dictionary.doc2bow(preprocess(test_document3))" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(0, 0.46492192), (1, 0.024663068), (2, 0.3061411), (3, 0.20427391)]\n" + ] + } + ], + "source": [ + "print(lda_model_best.get_document_topics(bow_vector))" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "sent_topics_df = pd.DataFrame()\n", + "row= lda_model_best[bow_vector][0]\n", + "row = sorted(row, key=lambda x: (x[1]), reverse=True)\n", + "\n", + "topic_num= row[0][0]\n", + "prop_topic= row[0][1]\n", + "wp = lda_model_best.show_topic(topic_num)\n", + "topic_keywords = \", \".join([word for word, prop in wp])\n", + "sent_topics_df = sent_topics_df.append(pd.Series([int(topic_num), round(prop_topic,4), topic_keywords]), ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [], + "source": [ + "contents = pd.Series(test_document1)\n", + "sent_topics_df = pd.concat([contents,sent_topics_df], axis=1, ignore_index= True)\n", + "sent_topics_df.rename(columns = {0:'Input_document', 1: 'Topic_NUmber', 2: 'Topic_Propability', 3: 'Keywords'}, inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Input_documentTopic_NUmberTopic_PropabilityKeywords
0MUMBAI – Rubber contracts on the Indian Commod...0.00.4649india, month, year, send, comment, feedback, r...
\n", + "
" + ], + "text/plain": [ + " Input_document Topic_NUmber \\\n", + "0 MUMBAI – Rubber contracts on the Indian Commod... 0.0 \n", + "\n", + " Topic_Propability Keywords \n", + "0 0.4649 india, month, year, send, comment, feedback, r... " + ] + }, + "execution_count": 186, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sent_topics_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}