|
|
- {
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "from gensim.models import Word2Vec"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "sentences = [[\"cat\", \"say\", \"meow\"], [\"dog\", \"say\", \"woof\"], [\"man\", \"say\", \"dam\"]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "5\n"
- ]
- }
- ],
- "source": [
- "model = Word2Vec(min_count=1, size=10)\n",
- "model.build_vocab(sentences)\n",
- "model.train(sentences, total_examples=model.corpus_count, epochs=model.epochs) \n",
- "model.save(\"basic-word2vec.model\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[('woof', 0.3232297897338867),\n",
- " ('dam', 0.14384251832962036),\n",
- " ('man', 0.11316978931427002),\n",
- " ('cat', -0.06251632422208786),\n",
- " ('say', -0.1781214326620102),\n",
- " ('meow', -0.21009384095668793)]"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "model.wv.most_similar(\"dog\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[ 0.04777663 0.01543251 -0.04632503 0.03601828 -0.00572644 0.00553683\n",
- " -0.04476452 -0.0274465 0.0047655 0.00508591]\n"
- ]
- }
- ],
- "source": [
- "print(model.wv.get_vector(\"dog\"))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {},
- "outputs": [],
- "source": [
- "from sklearn.decomposition import IncrementalPCA # inital reduction\n",
- "from sklearn.manifold import TSNE # final reduction\n",
- "import numpy as np # array handling\n",
- "\n",
- "def reduce_dimensions(model):\n",
- " num_dimensions = 2 # final num dimensions (2D, 3D, etc)\n",
- "\n",
- " vectors = [] # positions in vector space\n",
- " labels = [] # keep track of words to label our data again later\n",
- " for word in model.wv.vocab:\n",
- " vectors.append(model.wv[word])\n",
- " labels.append(word)\n",
- "\n",
- " # convert both lists into numpy vectors for reduction\n",
- " vectors = np.asarray(vectors)\n",
- " labels = np.asarray(labels)\n",
- "\n",
- " # reduce using t-SNE\n",
- " vectors = np.asarray(vectors)\n",
- " tsne = TSNE(n_components=num_dimensions, random_state=0)\n",
- " vectors = tsne.fit_transform(vectors)\n",
- "\n",
- " x_vals = [v[0] for v in vectors]\n",
- " y_vals = [v[1] for v in vectors]\n",
- " return x_vals, y_vals, labels\n",
- "\n",
- "\n",
- "x_vals, y_vals, labels = reduce_dimensions(model)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['cat' 'say' 'meow' 'dog' 'woof' 'man' 'dam']\n",
- "[-29.594002, -45.996586, 20.368856, 53.92877, -12.437127, 3.9659712, 37.524284]\n",
- "[60.112713, 11.891685, 70.019325, 31.70431, -26.423267, 21.79772, -16.517805]\n"
- ]
- }
- ],
- "source": [
- "print(labels)\n",
- "print(x_vals)\n",
- "print(y_vals)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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
- "text/plain": [
- "<Figure size 360x360 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "import random\n",
- "\n",
- "def plot_with_matplotlib(x_vals, y_vals, labels, num_to_label):\n",
- " plt.figure(figsize=(5, 5))\n",
- " plt.scatter(x_vals, y_vals)\n",
- " plt.title(\"Embedding Space\")\n",
- " indices = list(range(len(labels)))\n",
- " selected_indices = random.sample(indices, num_to_label)\n",
- " for i in selected_indices:\n",
- " plt.annotate(labels[i], (x_vals[i], y_vals[i]))\n",
- " \n",
- "plot_with_matplotlib(x_vals, y_vals, labels, 5)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " Inspired by [Justin and [Dan I decided to make a 2018 review post. I believe that it would be a good way to reflect upon what I did in 2018 and make plans for 2019. This post will be a very high level overview of the projects and activities that I did in 2018 -- nothing personal. Pictures say a thousand words, so, I will include a lot. # January: **Eagle Ceremony** ![Eagle Ceremony **Started Second Semester of College** Classes: - Mechanics of Programming - Statistics - Discrete Math - Communications - Moral Issues **Brick hack 4** ![Sleep Deprived me at BrickHack # February: **RIT Career Fair** ![Overview Picture of the Career **Build my Blog in Node.js** ![What original website looked # March: **Upgrading Floppy Drive Project** ![Floppy drive project under **Designed Website for Hoffends** ![Hoffends # April: **Imagine RIT** ![RITlug imagine rit ![RITlug imagine rit # May: **End of Second Semester** ![RIT Tiger during the **Started SSA Research Job** ![Erie # June: **Steam Graph Project** <youtube src=\"DoDaHmyIPvQ\" /> ![Steam graph project example showing 3 friend # July **Summer!** <youtube src=\"t7s2alt0sQ8\" /> ![Taughannock ![Erie **Updated UI for the Blog** ![New theme of # August: **Presented at RIT's Undergraduate Research Symposium** ![Poster at the undergraduate research **Second Year of College** First year on the Eboard of RITlug as Vice President. Classes: - Linear Algebra - Analysis Of Algorithms - CS Theory - SWEN - Public Policy # September: **End of Summer :(** ![Biking # October: **Hacktoberfest** ![Github hacktoberfest # November: **Foss [Election Night ![FOSS Election Night **Rochester Maker Fair** ![RITlug booth at the maker # December: **End of Fall Semester** ![Biking\n",
- "['inspired', 'by', 'justin', 'and', 'dan', 'decided', 'to', 'make', 'review', 'post', 'believe', 'that', 'it', 'would', 'be', 'good', 'way', 'to', 'reflect', 'upon', 'what', 'did', 'in', 'and', 'make', 'plans', 'for', 'this', 'post', 'will', 'be', 'very', 'high', 'level', 'overview', 'of', 'the', 'projects', 'and', 'activities', 'that', 'did', 'in', 'nothing', 'personal', 'pictures', 'say', 'thousand', 'words', 'so', 'will', 'include', 'lot', 'january', 'eagle', 'ceremony', 'eagle', 'ceremony', 'started', 'second', 'semester', 'of', 'college', 'classes', 'mechanics', 'of', 'programming', 'statistics', 'discrete', 'math', 'communications', 'moral', 'issues', 'brick', 'hack', 'sleep', 'deprived', 'me', 'at', 'brickhack', 'february', 'rit', 'career', 'fair', 'overview', 'picture', 'of', 'the', 'career', 'build', 'my', 'blog', 'in', 'node', 'js', 'what', 'original', 'website', 'looked', 'march', 'upgrading', 'floppy', 'drive', 'project', 'floppy', 'drive', 'project', 'under', 'designed', 'website', 'for', 'hoffends', 'hoffends', 'april', 'imagine', 'rit', 'ritlug', 'imagine', 'rit', 'ritlug', 'imagine', 'rit', 'may', 'end', 'of', 'second', 'semester', 'rit', 'tiger', 'during', 'the', 'started', 'ssa', 'research', 'job', 'erie', 'june', 'steam', 'graph', 'project', 'youtube', 'src', 'dodahmyipvq', 'steam', 'graph', 'project', 'example', 'showing', 'friend', 'july', 'summer', 'youtube', 'src', 'alt', 'sq', 'taughannock', 'erie', 'updated', 'ui', 'for', 'the', 'blog', 'new', 'theme', 'of', 'august', 'presented', 'at', 'rit', 'undergraduate', 'research', 'symposium', 'poster', 'at', 'the', 'undergraduate', 'research', 'second', 'year', 'of', 'college', 'first', 'year', 'on', 'the', 'eboard', 'of', 'ritlug', 'as', 'vice', 'president', 'classes', 'linear', 'algebra', 'analysis', 'of', 'algorithms', 'cs', 'theory', 'swen', 'public', 'policy', 'september', 'end', 'of', 'summer', 'biking', 'october', 'hacktoberfest', 'github', 'hacktoberfest', 'november', 'foss', 'election', 'night', 'foss', 'election', 'night', 'rochester', 'maker', 'fair', 'ritlug', 'booth', 'at', 'the', 'maker', 'december', 'end', 'of', 'fall', 'semester', 'biking']\n"
- ]
- }
- ],
- "source": [
- "def process_file(fileName):\n",
- " result = \"\"\n",
- " tempResult = \"\"\n",
- " inCodeBlock = False\n",
- "\n",
- " with open(fileName) as file:\n",
- " for line in file:\n",
- " if line.startswith(\"```\"):\n",
- " inCodeBlock = not inCodeBlock\n",
- " elif inCodeBlock:\n",
- " pass\n",
- " else:\n",
- " for word in line.split():\n",
- " if \"http\" not in word and \"media/\"not in word:\n",
- " result = result + \" \" + word\n",
- " return result\n",
- "\n",
- "\n",
- "print(process_file(\"data/2018-in-review.md\"))\n",
- "\n",
- "from gensim import utils\n",
- "print(utils.simple_preprocess(process_file(\"data/2018-in-review.md\")))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {},
- "outputs": [],
- "source": [
- "import os\n",
- "file = open(\"jrtechs.cor\", \"w+\")\n",
- "for file_name in os.listdir(\"data\"):\n",
- " file.write(process_file(\"data/\" + file_name) + \"\\n\")\n",
- "file.close()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {},
- "outputs": [],
- "source": [
- "from gensim.test.utils import datapath\n",
- "from gensim import utils\n",
- "\n",
- "class MyCorpus(object):\n",
- " \"\"\"An interator that yields sentences (lists of str).\"\"\"\n",
- "\n",
- " def __iter__(self):\n",
- " corpus_path = \"jrtechs.cor\"\n",
- " for line in open(corpus_path):\n",
- " # assume there's one document per line, tokens separated by whitespace\n",
- " yield utils.simple_preprocess(line)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {},
- "outputs": [],
- "source": [
- "sentences = MyCorpus()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {},
- "outputs": [],
- "source": [
- "model = Word2Vec(min_count=1, size=10, sentences=sentences)\n",
- "model.train(sentences, total_examples=model.corpus_count, epochs=model.epochs) \n",
- "model.save(\"jrtechs-word2vec.model\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[('constrained', 0.9626229405403137),\n",
- " ('logics', 0.9502561092376709),\n",
- " ('slide', 0.9486078023910522),\n",
- " ('clip', 0.9481177926063538),\n",
- " ('syntactically', 0.9479268789291382),\n",
- " ('solace', 0.9447624683380127),\n",
- " ('containing', 0.9312535524368286),\n",
- " ('claims', 0.928554892539978),\n",
- " ('exponential', 0.9284722805023193),\n",
- " ('scarce', 0.9266577363014221)]"
- ]
- },
- "execution_count": 59,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "model.wv.most_similar(\"story\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {},
- "outputs": [],
- "source": [
- "x_vals, y_vals, labels = reduce_dimensions(model)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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
- "text/plain": [
- "<Figure size 216x216 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "plot_with_matplotlib(x_vals, y_vals, labels, 10)"
- ]
- }
- ],
- "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.6"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
- }
|