Created
November 24, 2017 16:41
-
-
Save henryyang42/bf4321a7e4d3b0a0d40be0516ad019a6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Using TensorFlow backend.\n" | |
] | |
} | |
], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import json\n", | |
"import pickle\n", | |
"\n", | |
"from keras.models import Sequential\n", | |
"from keras.layers import Dense\n", | |
"from keras.utils import to_categorical\n", | |
"from keras.layers import Dropout\n", | |
"\n", | |
"from sklearn.feature_extraction.text import TfidfVectorizer\n", | |
"from sklearn.pipeline import make_pipeline\n", | |
"from sklearn.preprocessing import Normalizer\n", | |
"from sklearn.decomposition import TruncatedSVD\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"from sklearn.metrics.pairwise import cosine_similarity\n", | |
"from sklearn.metrics import accuracy_score\n", | |
"\n", | |
"from vickygod import *\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Vicky's Godly Dataset" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Arg1</th>\n", | |
" <th>Arg2</th>\n", | |
" <th>Relation</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>[]</td>\n", | |
" <td>[七, 年前, ,, 年, 僅, 九, 歲, 及, 八, 歲, 的, 板橋市, 某, 國小,...</td>\n", | |
" <td>殺人罪</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>[0, ‧, 3, 坪, 喊價, 800萬, 畸零地, 圍籬, 阻, 路, 拆, !]</td>\n", | |
" <td>[○, ., 三, 坪, 畸零地, 能, 「, 螞蟻, 吃, 大象, 」, ?, 北市, 議...</td>\n", | |
" <td>道路交通管理處罰條例</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>[100, cc, 催芽劑奪, 信義, 鄉四, 命]</td>\n", | |
" <td>[信義, 鄉民, 朱明福, ,, 涉嫌, 將, 催芽劑, 摻入, 米酒, ,, 導致, 前,...</td>\n", | |
" <td>殺人罪</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>[101, 前董座, 林鴻明, 二審, 輕, 判, 1年, 8月]</td>\n", | |
" <td>[前, 台北, 101, 董事長, 林鴻明, ,, 被, 控, 掏空, 股票, 上市, 的,...</td>\n", | |
" <td>證券交易法</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>[101, 大樓, 前添, 紛爭, 台獨, 大, 旗, 砸傷, 人]</td>\n", | |
" <td>[台北, 101, 大樓, 前, 法輪, 功, 、, 愛國, 同心, 會, 的, 爭端, ,...</td>\n", | |
" <td>傷害罪</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Arg1 \\\n", | |
"0 [] \n", | |
"1 [0, ‧, 3, 坪, 喊價, 800萬, 畸零地, 圍籬, 阻, 路, 拆, !] \n", | |
"2 [100, cc, 催芽劑奪, 信義, 鄉四, 命] \n", | |
"3 [101, 前董座, 林鴻明, 二審, 輕, 判, 1年, 8月] \n", | |
"4 [101, 大樓, 前添, 紛爭, 台獨, 大, 旗, 砸傷, 人] \n", | |
"\n", | |
" Arg2 Relation \n", | |
"0 [七, 年前, ,, 年, 僅, 九, 歲, 及, 八, 歲, 的, 板橋市, 某, 國小,... 殺人罪 \n", | |
"1 [○, ., 三, 坪, 畸零地, 能, 「, 螞蟻, 吃, 大象, 」, ?, 北市, 議... 道路交通管理處罰條例 \n", | |
"2 [信義, 鄉民, 朱明福, ,, 涉嫌, 將, 催芽劑, 摻入, 米酒, ,, 導致, 前,... 殺人罪 \n", | |
"3 [前, 台北, 101, 董事長, 林鴻明, ,, 被, 控, 掏空, 股票, 上市, 的,... 證券交易法 \n", | |
"4 [台北, 101, 大樓, 前, 法輪, 功, 、, 愛國, 同心, 會, 的, 爭端, ,... 傷害罪 " | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"dataset = pickle.load(open('data/selected_frames.data.p', 'rb'))\n", | |
"dataset.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"laws = dataset.Relation.unique().tolist()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Parameters" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"n_classes = len(laws)\n", | |
"n_svd = 300" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Generate Training Data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"train_X, train_Y = [], []\n", | |
"for index, frame in dataset.iterrows():\n", | |
" law_ind = laws.index(frame['Relation'])\n", | |
" seg_content = ' '.join(frame['Arg2'])\n", | |
" train_X.append(seg_content)\n", | |
" train_Y.append(law_ind)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 1. Make artilcles of same classes into a huge document & Tfidf" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Acc: 0.588469\n" | |
] | |
} | |
], | |
"source": [ | |
"train_x, valid_x, train_y, valid_y = train_test_split(train_X, train_Y, test_size=0.25, random_state=42)\n", | |
"huge_doc = {c: '' for c in range(n_classes)}\n", | |
"for x, y in zip(train_x, train_y):\n", | |
" huge_doc[y] += ' ' + x\n", | |
"\n", | |
"# 0~n_classes store huge doc\n", | |
"corpus = [huge_doc[c] for c in range(n_classes)] + valid_x\n", | |
"vectorizer = TfidfVectorizer()\n", | |
"vectors = vectorizer.fit_transform(corpus)\n", | |
"train_vec, valid_vec = vectors[:n_classes], vectors[n_classes:]\n", | |
"\n", | |
"pred_y = []\n", | |
"for i, y in enumerate(valid_y):\n", | |
" # Get largest similarity\n", | |
" pred_y.append(cosine_similarity(train_vec, valid_vec[i]).T[0].argsort()[-1])\n", | |
"\n", | |
"print('Acc: %.6f' % accuracy_score(valid_y, pred_y))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 2. Tfidf & LSA for each articles" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"vectorizer = TfidfVectorizer()\n", | |
"vectors = vectorizer.fit_transform(train_X)\n", | |
"svd = TruncatedSVD(n_svd)\n", | |
"normalizer = Normalizer()\n", | |
"lsa = make_pipeline(svd, normalizer)\n", | |
"\n", | |
"train_x = lsa.fit_transform(vectors)\n", | |
"train_y = to_categorical(train_Y, n_classes)\n", | |
"\n", | |
"train_x, valid_x, train_y, valid_y = train_test_split(train_x, train_y, test_size=0.25, random_state=42)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# A Garbage Model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def get_garbage_model():\n", | |
" model = Sequential()\n", | |
" model.add(Dense(n_svd // 2, activation='relu', input_dim=n_svd))\n", | |
" model.add(Dropout(0.3))\n", | |
" model.add(Dense(n_svd // 4, activation='relu'))\n", | |
" model.add(Dense(n_classes, activation='softmax'))\n", | |
" return model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Max Valid Acc Epoch\n", | |
" acc loss acc loss\n", | |
" train train valid valid\n", | |
"epoch \n", | |
"42 0.958886 0.161228 0.617296 2.684009\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fde27bb6518>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fde27bb6438>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"model = get_garbage_model()\n", | |
"model.compile(optimizer='adam',\n", | |
" loss='categorical_crossentropy',\n", | |
" metrics=['accuracy'])\n", | |
"hist = model.fit(train_x ,train_y, epochs=50, validation_data=(valid_x, valid_y), verbose=0)\n", | |
"record(hist)" | |
] | |
} | |
], | |
"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.4.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment