{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Word2Vec Model\n", "==============\n", "\n", "Introduces Gensim's Word2Vec model and demonstrates its use on the `Lee Evaluation Corpus\n", "`_.\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import logging\n", "logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In case you missed the buzz, Word2Vec is a widely used algorithm based on neural\n", "networks, commonly referred to as \"deep learning\" (though word2vec itself is rather shallow).\n", "Using large amounts of unannotated plain text, word2vec learns relationships\n", "between words automatically. The output are vectors, one vector per word,\n", "with remarkable linear relationships that allow us to do things like:\n", "\n", "* vec(\"king\") - vec(\"man\") + vec(\"woman\") =~ vec(\"queen\")\n", "* vec(\"Montreal Canadiens\") – vec(\"Montreal\") + vec(\"Toronto\") =~ vec(\"Toronto Maple Leafs\").\n", "\n", "Word2vec is very useful in `automatic text tagging\n", "`_\\ , recommender\n", "systems and machine translation.\n", "\n", "This tutorial:\n", "\n", "#. Introduces ``Word2Vec`` as an improvement over traditional bag-of-words\n", "#. Shows off a demo of ``Word2Vec`` using a pre-trained model\n", "#. Demonstrates training a new model from your own data\n", "#. Demonstrates loading and saving models\n", "#. Introduces several training parameters and demonstrates their effect\n", "#. Discusses memory requirements\n", "#. Visualizes Word2Vec embeddings by applying dimensionality reduction\n", "\n", "Review: Bag-of-words\n", "--------------------\n", "\n", ".. Note:: Feel free to skip these review sections if you're already familiar with the models.\n", "\n", "You may be familiar with the `bag-of-words model\n", "`_ from the\n", "`core_concepts_vector` section.\n", "This model transforms each document to a fixed-length vector of integers.\n", "For example, given the sentences:\n", "\n", "- ``John likes to watch movies. Mary likes movies too.``\n", "- ``John also likes to watch football games. Mary hates football.``\n", "\n", "The model outputs the vectors:\n", "\n", "- ``[1, 2, 1, 1, 2, 1, 1, 0, 0, 0, 0]``\n", "- ``[1, 1, 1, 1, 0, 1, 0, 1, 2, 1, 1]``\n", "\n", "Each vector has 10 elements, where each element counts the number of times a\n", "particular word occurred in the document.\n", "The order of elements is arbitrary.\n", "In the example above, the order of the elements corresponds to the words:\n", "``[\"John\", \"likes\", \"to\", \"watch\", \"movies\", \"Mary\", \"too\", \"also\", \"football\", \"games\", \"hates\"]``.\n", "\n", "Bag-of-words models are surprisingly effective, but have several weaknesses.\n", "\n", "First, they lose all information about word order: \"John likes Mary\" and\n", "\"Mary likes John\" correspond to identical vectors. There is a solution: bag\n", "of `n-grams `__\n", "models consider word phrases of length n to represent documents as\n", "fixed-length vectors to capture local word order but suffer from data\n", "sparsity and high dimensionality.\n", "\n", "Second, the model does not attempt to learn the meaning of the underlying\n", "words, and as a consequence, the distance between vectors doesn't always\n", "reflect the difference in meaning. The ``Word2Vec`` model addresses this\n", "second problem.\n", "\n", "Introducing: the ``Word2Vec`` Model\n", "-----------------------------------\n", "\n", "``Word2Vec`` is a more recent model that embeds words in a lower-dimensional\n", "vector space using a shallow neural network. The result is a set of\n", "word-vectors where vectors close together in vector space have similar\n", "meanings based on context, and word-vectors distant to each other have\n", "differing meanings. For example, ``strong`` and ``powerful`` would be close\n", "together and ``strong`` and ``Paris`` would be relatively far.\n", "\n", "The are two versions of this model and :py:class:`~gensim.models.word2vec.Word2Vec`\n", "class implements them both:\n", "\n", "1. Skip-grams (SG)\n", "2. Continuous-bag-of-words (CBOW)\n", "\n", ".. Important::\n", " Don't let the implementation details below scare you.\n", " They're advanced material: if it's too much, then move on to the next section.\n", "\n", "The `Word2Vec Skip-gram `__\n", "model, for example, takes in pairs (word1, word2) generated by moving a\n", "window across text data, and trains a 1-hidden-layer neural network based on\n", "the synthetic task of given an input word, giving us a predicted probability\n", "distribution of nearby words to the input. A virtual `one-hot\n", "`__ encoding of words\n", "goes through a 'projection layer' to the hidden layer; these projection\n", "weights are later interpreted as the word embeddings. So if the hidden layer\n", "has 300 neurons, this network will give us 300-dimensional word embeddings.\n", "\n", "Continuous-bag-of-words Word2vec is very similar to the skip-gram model. It\n", "is also a 1-hidden-layer neural network. The synthetic training task now uses\n", "the average of multiple input context words, rather than a single word as in\n", "skip-gram, to predict the center word. Again, the projection weights that\n", "turn one-hot words into averageable vectors, of the same width as the hidden\n", "layer, are interpreted as the word embeddings.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Word2Vec Demo\n", "-------------\n", "\n", "To see what ``Word2Vec`` can do, let's download a pre-trained model and play\n", "around with it. We will fetch the Word2Vec model trained on part of the\n", "Google News dataset, covering approximately 3 million words and phrases. Such\n", "a model can take hours to train, but since it's already available,\n", "downloading and loading it with Gensim takes minutes.\n", "\n", ".. Important::\n", " The model is approximately 2GB, so you'll need a decent network connection\n", " to proceed. Otherwise, skip ahead to the \"Training Your Own Model\" section\n", " below.\n", "\n", "You may also check out an `online word2vec demo\n", "`_ where you can try\n", "this vector algebra for yourself. That demo runs ``word2vec`` on the\n", "**entire** Google News dataset, of **about 100 billion words**.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:15:23,239 : INFO : loading projection weights from /Users/vip/gensim-data/word2vec-google-news-300/word2vec-google-news-300.gz\n", "2025-03-27 14:15:43,108 : INFO : KeyedVectors lifecycle event {'msg': 'loaded (3000000, 300) matrix of type float32 from /Users/vip/gensim-data/word2vec-google-news-300/word2vec-google-news-300.gz', 'binary': True, 'encoding': 'utf8', 'datetime': '2025-03-27T14:15:43.108564', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'load_word2vec_format'}\n" ] } ], "source": [ "import gensim.downloader as api\n", "wv = api.load('word2vec-google-news-300')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A common operation is to retrieve the vocabulary of a model. That is trivial:\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "word #0/3000000 is \n", "word #1/3000000 is in\n", "word #2/3000000 is for\n", "word #3/3000000 is that\n", "word #4/3000000 is is\n", "word #5/3000000 is on\n", "word #6/3000000 is ##\n", "word #7/3000000 is The\n", "word #8/3000000 is with\n", "word #9/3000000 is said\n" ] } ], "source": [ "for index, word in enumerate(wv.index_to_key):\n", " if index == 10:\n", " break\n", " print(f\"word #{index}/{len(wv.index_to_key)} is {word}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can easily obtain vectors for terms the model is familiar with:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "vec_king = wv['king']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, the model is unable to infer vectors for unfamiliar words.\n", "This is one limitation of Word2Vec: if this limitation matters to you, check\n", "out the FastText model.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The word 'cameroon' does not appear in this model\n" ] } ], "source": [ "try:\n", " vec_cameroon = wv['cameroon']\n", "except KeyError:\n", " print(\"The word 'cameroon' does not appear in this model\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Moving on, ``Word2Vec`` supports several word similarity tasks out of the\n", "box. You can see how the similarity intuitively decreases as the words get\n", "less and less similar.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "'car'\t'minivan'\t0.69\n", "'car'\t'bicycle'\t0.54\n", "'car'\t'airplane'\t0.42\n", "'car'\t'cereal'\t0.14\n", "'car'\t'communism'\t0.06\n" ] } ], "source": [ "pairs = [\n", " ('car', 'minivan'), # a minivan is a kind of car\n", " ('car', 'bicycle'), # still a wheeled vehicle\n", " ('car', 'airplane'), # ok, no wheels, but still a vehicle\n", " ('car', 'cereal'), # ... and so on\n", " ('car', 'communism'),\n", "]\n", "for w1, w2 in pairs:\n", " print('%r\\t%r\\t%.2f' % (w1, w2, wv.similarity(w1, w2)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print the 5 most similar words to \"car\" or \"minivan\"\n", "\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('SUV', 0.8532192707061768), ('vehicle', 0.8175783753395081), ('pickup_truck', 0.7763689756393433), ('Jeep', 0.7567334175109863), ('Ford_Explorer', 0.7565719485282898)]\n" ] } ], "source": [ "print(wv.most_similar(positive=['car', 'minivan'], topn=5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which of the below does not belong in the sequence?\n", "\n" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "car\n" ] } ], "source": [ "print(wv.doesnt_match(['fire', 'water', 'land', 'sea', 'air', 'car']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Training Your Own Model\n", "-----------------------\n", "\n", "To start, you'll need some data for training the model. For the following\n", "examples, we'll use the `Lee Evaluation Corpus\n", "`_\n", "(which you `already have\n", "`_\n", "if you've installed Gensim).\n", "\n", "This corpus is small enough to fit entirely in memory, but we'll implement a\n", "memory-friendly iterator that reads it line-by-line to demonstrate how you\n", "would handle a larger corpus.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:16:43,057 : INFO : adding document #0 to Dictionary<0 unique tokens: []>\n", "2025-03-27 14:16:43,058 : INFO : built Dictionary<12 unique tokens: ['computer', 'human', 'interface', 'response', 'survey']...> from 9 documents (total 29 corpus positions)\n", "2025-03-27 14:16:43,058 : INFO : Dictionary lifecycle event {'msg': \"built Dictionary<12 unique tokens: ['computer', 'human', 'interface', 'response', 'survey']...> from 9 documents (total 29 corpus positions)\", 'datetime': '2025-03-27T14:16:43.058804', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] } ], "source": [ "from gensim.test.utils import datapath\n", "from gensim import utils\n", "\n", "class MyCorpus:\n", " \"\"\"An iterator that yields sentences (lists of str).\"\"\"\n", "\n", " def __iter__(self):\n", " corpus_path = datapath('lee_background.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": "markdown", "metadata": {}, "source": [ "If we wanted to do any custom preprocessing, e.g. decode a non-standard\n", "encoding, lowercase, remove numbers, extract named entities... All of this can\n", "be done inside the ``MyCorpus`` iterator and ``word2vec`` doesn’t need to\n", "know. All that is required is that the input yields one sentence (list of\n", "utf8 words) after another.\n", "\n", "Let's go ahead and train a model on our corpus. Don't worry about the\n", "training parameters much for now, we'll revisit them later.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:17:00,060 : INFO : collecting all words and their counts\n", "2025-03-27 14:17:00,063 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:17:00,127 : INFO : collected 6981 word types from a corpus of 58152 raw words and 300 sentences\n", "2025-03-27 14:17:00,127 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:17:00,131 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1750 unique words (25.07% of original 6981, drops 5231)', 'datetime': '2025-03-27T14:17:00.131400', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:00,131 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 49335 word corpus (84.84% of original 58152, drops 8817)', 'datetime': '2025-03-27T14:17:00.131712', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:00,135 : INFO : deleting the raw counts dictionary of 6981 items\n", "2025-03-27 14:17:00,135 : INFO : sample=0.001 downsamples 51 most-common words\n", "2025-03-27 14:17:00,136 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 35935.33721568072 word corpus (72.8%% of prior 49335)', 'datetime': '2025-03-27T14:17:00.136217', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:00,142 : INFO : estimated required memory for 1750 words and 100 dimensions: 2275000 bytes\n", "2025-03-27 14:17:00,142 : INFO : resetting layer weights\n", "2025-03-27 14:17:00,143 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:17:00.143668', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:17:00,172 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1750 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:17:00.172864', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:00,230 : INFO : EPOCH 0: training on 58152 raw words (35936 effective words) took 0.1s, 638228 effective words/s\n", "2025-03-27 14:17:00,286 : INFO : EPOCH 1: training on 58152 raw words (35991 effective words) took 0.1s, 656303 effective words/s\n", "2025-03-27 14:17:00,339 : INFO : EPOCH 2: training on 58152 raw words (35921 effective words) took 0.1s, 692074 effective words/s\n", "2025-03-27 14:17:00,393 : INFO : EPOCH 3: training on 58152 raw words (35959 effective words) took 0.1s, 676909 effective words/s\n", "2025-03-27 14:17:00,447 : INFO : EPOCH 4: training on 58152 raw words (35979 effective words) took 0.1s, 684933 effective words/s\n", "2025-03-27 14:17:00,447 : INFO : Word2Vec lifecycle event {'msg': 'training on 290760 raw words (179786 effective words) took 0.3s, 654816 effective words/s', 'datetime': '2025-03-27T14:17:00.447817', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:00,448 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:17:00.448036', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] } ], "source": [ "import gensim.models\n", "\n", "sentences = MyCorpus()\n", "model = gensim.models.Word2Vec(sentences=sentences)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once we have our model, we can use it in the same way as in the demo above.\n", "\n", "The main part of the model is ``model.wv``\\ , where \"wv\" stands for \"word vectors\".\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "vec_king = model.wv['king']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Retrieving the vocabulary works the same way:\n", "\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "word #0/3000000 is \n", "word #1/3000000 is in\n", "word #2/3000000 is for\n", "word #3/3000000 is that\n", "word #4/3000000 is is\n", "word #5/3000000 is on\n", "word #6/3000000 is ##\n", "word #7/3000000 is The\n", "word #8/3000000 is with\n", "word #9/3000000 is said\n" ] } ], "source": [ "for index, word in enumerate(wv.index_to_key):\n", " if index == 10:\n", " break\n", " print(f\"word #{index}/{len(wv.index_to_key)} is {word}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Storing and loading models\n", "--------------------------\n", "\n", "You'll notice that training non-trivial models can take time. Once you've\n", "trained your model and it works as expected, you can save it to disk. That\n", "way, you don't have to spend time training it all over again later.\n", "\n", "You can store/load models using the standard gensim methods:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:17:15,337 : INFO : Word2Vec lifecycle event {'fname_or_handle': '/var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4', 'separately': 'None', 'sep_limit': 10485760, 'ignore': frozenset(), 'datetime': '2025-03-27T14:17:15.337430', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'saving'}\n", "2025-03-27 14:17:15,339 : INFO : not storing attribute cum_table\n", "2025-03-27 14:17:15,345 : INFO : saved /var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4\n", "2025-03-27 14:17:15,346 : INFO : loading Word2Vec object from /var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4\n", "2025-03-27 14:17:15,347 : INFO : loading wv recursively from /var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4.wv.* with mmap=None\n", "2025-03-27 14:17:15,348 : INFO : setting ignored attribute cum_table to None\n", "2025-03-27 14:17:15,356 : INFO : Word2Vec lifecycle event {'fname': '/var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4', 'datetime': '2025-03-27T14:17:15.356060', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'loaded'}\n" ] } ], "source": [ "import tempfile\n", "\n", "with tempfile.NamedTemporaryFile(prefix='gensim-model-', delete=False) as tmp:\n", " temporary_filepath = tmp.name\n", " model.save(temporary_filepath)\n", " #\n", " # The model is now safely stored in the filepath.\n", " # You can copy it to other machines, share it with others, etc.\n", " #\n", " # To load a saved model:\n", " #\n", " new_model = gensim.models.Word2Vec.load(temporary_filepath)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which uses pickle internally, optionally ``mmap``\\ ‘ing the model’s internal\n", "large NumPy matrices into virtual memory directly from disk files, for\n", "inter-process memory sharing.\n", "\n", "In addition, you can load models created by the original C tool, both using\n", "its text and binary formats::\n", "\n", " model = gensim.models.KeyedVectors.load_word2vec_format('/tmp/vectors.txt', binary=False)\n", " # using gzipped/bz2 input works too, no need to unzip\n", " model = gensim.models.KeyedVectors.load_word2vec_format('/tmp/vectors.bin.gz', binary=True)\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Training Parameters\n", "-------------------\n", "\n", "``Word2Vec`` accepts several parameters that affect both training speed and quality.\n", "\n", "min_count\n", "---------\n", "\n", "``min_count`` is for pruning the internal dictionary. Words that appear only\n", "once or twice in a billion-word corpus are probably uninteresting typos and\n", "garbage. In addition, there’s not enough data to make any meaningful training\n", "on those words, so it’s best to ignore them:\n", "\n", "default value of min_count=5\n", "\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:17:26,709 : INFO : collecting all words and their counts\n", "2025-03-27 14:17:26,711 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:17:26,773 : INFO : collected 6981 word types from a corpus of 58152 raw words and 300 sentences\n", "2025-03-27 14:17:26,774 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:17:26,776 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=10 retains 889 unique words (12.73% of original 6981, drops 6092)', 'datetime': '2025-03-27T14:17:26.776847', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:26,777 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=10 leaves 43776 word corpus (75.28% of original 58152, drops 14376)', 'datetime': '2025-03-27T14:17:26.777106', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:26,779 : INFO : deleting the raw counts dictionary of 6981 items\n", "2025-03-27 14:17:26,779 : INFO : sample=0.001 downsamples 55 most-common words\n", "2025-03-27 14:17:26,779 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 29691.39528319831 word corpus (67.8%% of prior 43776)', 'datetime': '2025-03-27T14:17:26.779815', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:26,782 : INFO : estimated required memory for 889 words and 100 dimensions: 1155700 bytes\n", "2025-03-27 14:17:26,783 : INFO : resetting layer weights\n", "2025-03-27 14:17:26,783 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:17:26.783950', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:17:26,784 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 889 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:17:26.784135', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:26,838 : INFO : EPOCH 0: training on 58152 raw words (29735 effective words) took 0.1s, 555663 effective words/s\n", "2025-03-27 14:17:26,890 : INFO : EPOCH 1: training on 58152 raw words (29637 effective words) took 0.1s, 580644 effective words/s\n", "2025-03-27 14:17:26,942 : INFO : EPOCH 2: training on 58152 raw words (29668 effective words) took 0.1s, 579282 effective words/s\n", "2025-03-27 14:17:26,994 : INFO : EPOCH 3: training on 58152 raw words (29757 effective words) took 0.1s, 590708 effective words/s\n", "2025-03-27 14:17:27,046 : INFO : EPOCH 4: training on 58152 raw words (29649 effective words) took 0.1s, 580325 effective words/s\n", "2025-03-27 14:17:27,046 : INFO : Word2Vec lifecycle event {'msg': 'training on 290760 raw words (148446 effective words) took 0.3s, 566255 effective words/s', 'datetime': '2025-03-27T14:17:27.046456', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:27,046 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:17:27.046663', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] } ], "source": [ "model = gensim.models.Word2Vec(sentences, min_count=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "vector_size\n", "-----------\n", "\n", "``vector_size`` is the number of dimensions (N) of the N-dimensional space that\n", "gensim Word2Vec maps the words onto.\n", "\n", "Bigger size values require more training data, but can lead to better (more\n", "accurate) models. Reasonable values are in the tens to hundreds.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:17:38,448 : INFO : collecting all words and their counts\n", "2025-03-27 14:17:38,452 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:17:38,515 : INFO : collected 6981 word types from a corpus of 58152 raw words and 300 sentences\n", "2025-03-27 14:17:38,516 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:17:38,519 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1750 unique words (25.07% of original 6981, drops 5231)', 'datetime': '2025-03-27T14:17:38.519961', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:38,520 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 49335 word corpus (84.84% of original 58152, drops 8817)', 'datetime': '2025-03-27T14:17:38.520639', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:38,524 : INFO : deleting the raw counts dictionary of 6981 items\n", "2025-03-27 14:17:38,524 : INFO : sample=0.001 downsamples 51 most-common words\n", "2025-03-27 14:17:38,525 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 35935.33721568072 word corpus (72.8%% of prior 49335)', 'datetime': '2025-03-27T14:17:38.525204', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:38,536 : INFO : estimated required memory for 1750 words and 200 dimensions: 3675000 bytes\n", "2025-03-27 14:17:38,537 : INFO : resetting layer weights\n", "2025-03-27 14:17:38,539 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:17:38.539299', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:17:38,539 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1750 vocabulary and 200 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:17:38.539522', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:38,595 : INFO : EPOCH 0: training on 58152 raw words (35994 effective words) took 0.1s, 658978 effective words/s\n", "2025-03-27 14:17:38,651 : INFO : EPOCH 1: training on 58152 raw words (36034 effective words) took 0.1s, 653169 effective words/s\n", "2025-03-27 14:17:38,706 : INFO : EPOCH 2: training on 58152 raw words (35839 effective words) took 0.1s, 661644 effective words/s\n", "2025-03-27 14:17:38,761 : INFO : EPOCH 3: training on 58152 raw words (35837 effective words) took 0.1s, 658906 effective words/s\n", "2025-03-27 14:17:38,818 : INFO : EPOCH 4: training on 58152 raw words (35892 effective words) took 0.1s, 642252 effective words/s\n", "2025-03-27 14:17:38,819 : INFO : Word2Vec lifecycle event {'msg': 'training on 290760 raw words (179596 effective words) took 0.3s, 642691 effective words/s', 'datetime': '2025-03-27T14:17:38.819160', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:38,819 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:17:38.819391', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] } ], "source": [ "# The default value of vector_size is 100.\n", "model = gensim.models.Word2Vec(sentences, vector_size=200)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "workers\n", "-------\n", "\n", "``workers`` , the last of the major parameters (full list `here\n", "`_)\n", "is for training parallelization, to speed up training:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:17:43,033 : INFO : collecting all words and their counts\n", "2025-03-27 14:17:43,040 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:17:43,094 : INFO : collected 6981 word types from a corpus of 58152 raw words and 300 sentences\n", "2025-03-27 14:17:43,094 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:17:43,099 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1750 unique words (25.07% of original 6981, drops 5231)', 'datetime': '2025-03-27T14:17:43.099101', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:43,099 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 49335 word corpus (84.84% of original 58152, drops 8817)', 'datetime': '2025-03-27T14:17:43.099482', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:43,103 : INFO : deleting the raw counts dictionary of 6981 items\n", "2025-03-27 14:17:43,104 : INFO : sample=0.001 downsamples 51 most-common words\n", "2025-03-27 14:17:43,104 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 35935.33721568072 word corpus (72.8%% of prior 49335)', 'datetime': '2025-03-27T14:17:43.104893', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:17:43,110 : INFO : estimated required memory for 1750 words and 100 dimensions: 2275000 bytes\n", "2025-03-27 14:17:43,111 : INFO : resetting layer weights\n", "2025-03-27 14:17:43,112 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:17:43.112633', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:17:43,112 : INFO : Word2Vec lifecycle event {'msg': 'training model with 4 workers on 1750 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:17:43.112831', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:43,169 : INFO : EPOCH 0: training on 58152 raw words (35936 effective words) took 0.1s, 642622 effective words/s\n", "2025-03-27 14:17:43,224 : INFO : EPOCH 1: training on 58152 raw words (35991 effective words) took 0.1s, 678474 effective words/s\n", "2025-03-27 14:17:43,276 : INFO : EPOCH 2: training on 58152 raw words (35921 effective words) took 0.1s, 696209 effective words/s\n", "2025-03-27 14:17:43,331 : INFO : EPOCH 3: training on 58152 raw words (35959 effective words) took 0.1s, 673475 effective words/s\n", "2025-03-27 14:17:43,385 : INFO : EPOCH 4: training on 58152 raw words (35979 effective words) took 0.1s, 672566 effective words/s\n", "2025-03-27 14:17:43,385 : INFO : Word2Vec lifecycle event {'msg': 'training on 290760 raw words (179786 effective words) took 0.3s, 658780 effective words/s', 'datetime': '2025-03-27T14:17:43.385938', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:17:43,386 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:17:43.386162', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] } ], "source": [ "# default value of workers=3 (tutorial says 1...)\n", "model = gensim.models.Word2Vec(sentences, workers=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ``workers`` parameter only has an effect if you have `Cython\n", "`_ installed. Without Cython, you’ll only be able to use\n", "one core because of the `GIL\n", "`_ (and ``word2vec``\n", "training will be `miserably slow\n", "`_\\ ).\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Memory\n", "------\n", "\n", "At its core, ``word2vec`` model parameters are stored as matrices (NumPy\n", "arrays). Each array is **#vocabulary** (controlled by the ``min_count`` parameter)\n", "times **vector size** (the ``vector_size`` parameter) of floats (single precision aka 4 bytes).\n", "\n", "Three such matrices are held in RAM (work is underway to reduce that number\n", "to two, or even one). So if your input contains 100,000 unique words, and you\n", "asked for layer ``vector_size=200``\\ , the model will require approx.\n", "``100,000*200*4*3 bytes = ~229MB``.\n", "\n", "There’s a little extra memory needed for storing the vocabulary tree (100,000 words would\n", "take a few megabytes), but unless your words are extremely loooong strings, memory\n", "footprint will be dominated by the three matrices above.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Evaluating\n", "----------\n", "\n", "``Word2Vec`` training is an unsupervised task, there’s no good way to\n", "objectively evaluate the result. Evaluation depends on your end application.\n", "\n", "Google has released their testing set of about 20,000 syntactic and semantic\n", "test examples, following the “A is to B as C is to D” task. It is provided in\n", "the 'datasets' folder.\n", "\n", "For example a syntactic analogy of comparative type is ``bad:worse;good:?``.\n", "There are total of 9 types of syntactic comparisons in the dataset like\n", "plural nouns and nouns of opposite meaning.\n", "\n", "The semantic questions contain five types of semantic analogies, such as\n", "capital cities (``Paris:France;Tokyo:?``) or family members\n", "(``brother:sister;dad:?``).\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gensim supports the same evaluation set, in exactly the same format:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:17:57,250 : INFO : Evaluating word analogies for top 300000 words in the model on /Users/vip/Library/Python/3.9/lib/python/site-packages/gensim/test/test_data/questions-words.txt\n", "2025-03-27 14:17:57,305 : INFO : capital-common-countries: 0.0% (0/6)\n", "2025-03-27 14:17:57,329 : INFO : capital-world: 0.0% (0/2)\n", "2025-03-27 14:17:57,373 : INFO : family: 0.0% (0/6)\n", "2025-03-27 14:17:57,407 : INFO : gram3-comparative: 0.0% (0/20)\n", "2025-03-27 14:17:57,431 : INFO : gram4-superlative: 0.0% (0/12)\n", "2025-03-27 14:17:57,457 : INFO : gram5-present-participle: 0.0% (0/20)\n", "2025-03-27 14:17:57,504 : INFO : gram6-nationality-adjective: 0.0% (0/30)\n", "2025-03-27 14:17:57,536 : INFO : gram7-past-tense: 0.0% (0/20)\n", "2025-03-27 14:17:57,581 : INFO : gram8-plural: 0.0% (0/30)\n", "2025-03-27 14:17:57,585 : INFO : Quadruplets with out-of-vocabulary words: 99.3%\n", "2025-03-27 14:17:57,586 : INFO : NB: analogies containing OOV words were skipped from evaluation! To change this behavior, use \"dummy4unknown=True\"\n", "2025-03-27 14:17:57,587 : INFO : Total accuracy: 0.0% (0/146)\n" ] }, { "data": { "text/plain": [ "(0.0,\n", " [{'section': 'capital-common-countries',\n", " 'correct': [],\n", " 'incorrect': [('CANBERRA', 'AUSTRALIA', 'KABUL', 'AFGHANISTAN'),\n", " ('CANBERRA', 'AUSTRALIA', 'PARIS', 'FRANCE'),\n", " ('KABUL', 'AFGHANISTAN', 'PARIS', 'FRANCE'),\n", " ('KABUL', 'AFGHANISTAN', 'CANBERRA', 'AUSTRALIA'),\n", " ('PARIS', 'FRANCE', 'CANBERRA', 'AUSTRALIA'),\n", " ('PARIS', 'FRANCE', 'KABUL', 'AFGHANISTAN')]},\n", " {'section': 'capital-world',\n", " 'correct': [],\n", " 'incorrect': [('CANBERRA', 'AUSTRALIA', 'KABUL', 'AFGHANISTAN'),\n", " ('KABUL', 'AFGHANISTAN', 'PARIS', 'FRANCE')]},\n", " {'section': 'currency', 'correct': [], 'incorrect': []},\n", " {'section': 'city-in-state', 'correct': [], 'incorrect': []},\n", " {'section': 'family',\n", " 'correct': [],\n", " 'incorrect': [('HE', 'SHE', 'HIS', 'HER'),\n", " ('HE', 'SHE', 'MAN', 'WOMAN'),\n", " ('HIS', 'HER', 'MAN', 'WOMAN'),\n", " ('HIS', 'HER', 'HE', 'SHE'),\n", " ('MAN', 'WOMAN', 'HE', 'SHE'),\n", " ('MAN', 'WOMAN', 'HIS', 'HER')]},\n", " {'section': 'gram1-adjective-to-adverb', 'correct': [], 'incorrect': []},\n", " {'section': 'gram2-opposite', 'correct': [], 'incorrect': []},\n", " {'section': 'gram3-comparative',\n", " 'correct': [],\n", " 'incorrect': [('GOOD', 'BETTER', 'GREAT', 'GREATER'),\n", " ('GOOD', 'BETTER', 'LONG', 'LONGER'),\n", " ('GOOD', 'BETTER', 'LOW', 'LOWER'),\n", " ('GOOD', 'BETTER', 'SMALL', 'SMALLER'),\n", " ('GREAT', 'GREATER', 'LONG', 'LONGER'),\n", " ('GREAT', 'GREATER', 'LOW', 'LOWER'),\n", " ('GREAT', 'GREATER', 'SMALL', 'SMALLER'),\n", " ('GREAT', 'GREATER', 'GOOD', 'BETTER'),\n", " ('LONG', 'LONGER', 'LOW', 'LOWER'),\n", " ('LONG', 'LONGER', 'SMALL', 'SMALLER'),\n", " ('LONG', 'LONGER', 'GOOD', 'BETTER'),\n", " ('LONG', 'LONGER', 'GREAT', 'GREATER'),\n", " ('LOW', 'LOWER', 'SMALL', 'SMALLER'),\n", " ('LOW', 'LOWER', 'GOOD', 'BETTER'),\n", " ('LOW', 'LOWER', 'GREAT', 'GREATER'),\n", " ('LOW', 'LOWER', 'LONG', 'LONGER'),\n", " ('SMALL', 'SMALLER', 'GOOD', 'BETTER'),\n", " ('SMALL', 'SMALLER', 'GREAT', 'GREATER'),\n", " ('SMALL', 'SMALLER', 'LONG', 'LONGER'),\n", " ('SMALL', 'SMALLER', 'LOW', 'LOWER')]},\n", " {'section': 'gram4-superlative',\n", " 'correct': [],\n", " 'incorrect': [('BIG', 'BIGGEST', 'GOOD', 'BEST'),\n", " ('BIG', 'BIGGEST', 'GREAT', 'GREATEST'),\n", " ('BIG', 'BIGGEST', 'LARGE', 'LARGEST'),\n", " ('GOOD', 'BEST', 'GREAT', 'GREATEST'),\n", " ('GOOD', 'BEST', 'LARGE', 'LARGEST'),\n", " ('GOOD', 'BEST', 'BIG', 'BIGGEST'),\n", " ('GREAT', 'GREATEST', 'LARGE', 'LARGEST'),\n", " ('GREAT', 'GREATEST', 'BIG', 'BIGGEST'),\n", " ('GREAT', 'GREATEST', 'GOOD', 'BEST'),\n", " ('LARGE', 'LARGEST', 'BIG', 'BIGGEST'),\n", " ('LARGE', 'LARGEST', 'GOOD', 'BEST'),\n", " ('LARGE', 'LARGEST', 'GREAT', 'GREATEST')]},\n", " {'section': 'gram5-present-participle',\n", " 'correct': [],\n", " 'incorrect': [('GO', 'GOING', 'LOOK', 'LOOKING'),\n", " ('GO', 'GOING', 'PLAY', 'PLAYING'),\n", " ('GO', 'GOING', 'RUN', 'RUNNING'),\n", " ('GO', 'GOING', 'SAY', 'SAYING'),\n", " ('LOOK', 'LOOKING', 'PLAY', 'PLAYING'),\n", " ('LOOK', 'LOOKING', 'RUN', 'RUNNING'),\n", " ('LOOK', 'LOOKING', 'SAY', 'SAYING'),\n", " ('LOOK', 'LOOKING', 'GO', 'GOING'),\n", " ('PLAY', 'PLAYING', 'RUN', 'RUNNING'),\n", " ('PLAY', 'PLAYING', 'SAY', 'SAYING'),\n", " ('PLAY', 'PLAYING', 'GO', 'GOING'),\n", " ('PLAY', 'PLAYING', 'LOOK', 'LOOKING'),\n", " ('RUN', 'RUNNING', 'SAY', 'SAYING'),\n", " ('RUN', 'RUNNING', 'GO', 'GOING'),\n", " ('RUN', 'RUNNING', 'LOOK', 'LOOKING'),\n", " ('RUN', 'RUNNING', 'PLAY', 'PLAYING'),\n", " ('SAY', 'SAYING', 'GO', 'GOING'),\n", " ('SAY', 'SAYING', 'LOOK', 'LOOKING'),\n", " ('SAY', 'SAYING', 'PLAY', 'PLAYING'),\n", " ('SAY', 'SAYING', 'RUN', 'RUNNING')]},\n", " {'section': 'gram6-nationality-adjective',\n", " 'correct': [],\n", " 'incorrect': [('AUSTRALIA', 'AUSTRALIAN', 'FRANCE', 'FRENCH'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'INDIA', 'INDIAN'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'ISRAEL', 'ISRAELI'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'JAPAN', 'JAPANESE'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'SWITZERLAND', 'SWISS'),\n", " ('FRANCE', 'FRENCH', 'INDIA', 'INDIAN'),\n", " ('FRANCE', 'FRENCH', 'ISRAEL', 'ISRAELI'),\n", " ('FRANCE', 'FRENCH', 'JAPAN', 'JAPANESE'),\n", " ('FRANCE', 'FRENCH', 'SWITZERLAND', 'SWISS'),\n", " ('FRANCE', 'FRENCH', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('INDIA', 'INDIAN', 'ISRAEL', 'ISRAELI'),\n", " ('INDIA', 'INDIAN', 'JAPAN', 'JAPANESE'),\n", " ('INDIA', 'INDIAN', 'SWITZERLAND', 'SWISS'),\n", " ('INDIA', 'INDIAN', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('INDIA', 'INDIAN', 'FRANCE', 'FRENCH'),\n", " ('ISRAEL', 'ISRAELI', 'JAPAN', 'JAPANESE'),\n", " ('ISRAEL', 'ISRAELI', 'SWITZERLAND', 'SWISS'),\n", " ('ISRAEL', 'ISRAELI', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('ISRAEL', 'ISRAELI', 'FRANCE', 'FRENCH'),\n", " ('ISRAEL', 'ISRAELI', 'INDIA', 'INDIAN'),\n", " ('JAPAN', 'JAPANESE', 'SWITZERLAND', 'SWISS'),\n", " ('JAPAN', 'JAPANESE', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('JAPAN', 'JAPANESE', 'FRANCE', 'FRENCH'),\n", " ('JAPAN', 'JAPANESE', 'INDIA', 'INDIAN'),\n", " ('JAPAN', 'JAPANESE', 'ISRAEL', 'ISRAELI'),\n", " ('SWITZERLAND', 'SWISS', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('SWITZERLAND', 'SWISS', 'FRANCE', 'FRENCH'),\n", " ('SWITZERLAND', 'SWISS', 'INDIA', 'INDIAN'),\n", " ('SWITZERLAND', 'SWISS', 'ISRAEL', 'ISRAELI'),\n", " ('SWITZERLAND', 'SWISS', 'JAPAN', 'JAPANESE')]},\n", " {'section': 'gram7-past-tense',\n", " 'correct': [],\n", " 'incorrect': [('GOING', 'WENT', 'PAYING', 'PAID'),\n", " ('GOING', 'WENT', 'PLAYING', 'PLAYED'),\n", " ('GOING', 'WENT', 'SAYING', 'SAID'),\n", " ('GOING', 'WENT', 'TAKING', 'TOOK'),\n", " ('PAYING', 'PAID', 'PLAYING', 'PLAYED'),\n", " ('PAYING', 'PAID', 'SAYING', 'SAID'),\n", " ('PAYING', 'PAID', 'TAKING', 'TOOK'),\n", " ('PAYING', 'PAID', 'GOING', 'WENT'),\n", " ('PLAYING', 'PLAYED', 'SAYING', 'SAID'),\n", " ('PLAYING', 'PLAYED', 'TAKING', 'TOOK'),\n", " ('PLAYING', 'PLAYED', 'GOING', 'WENT'),\n", " ('PLAYING', 'PLAYED', 'PAYING', 'PAID'),\n", " ('SAYING', 'SAID', 'TAKING', 'TOOK'),\n", " ('SAYING', 'SAID', 'GOING', 'WENT'),\n", " ('SAYING', 'SAID', 'PAYING', 'PAID'),\n", " ('SAYING', 'SAID', 'PLAYING', 'PLAYED'),\n", " ('TAKING', 'TOOK', 'GOING', 'WENT'),\n", " ('TAKING', 'TOOK', 'PAYING', 'PAID'),\n", " ('TAKING', 'TOOK', 'PLAYING', 'PLAYED'),\n", " ('TAKING', 'TOOK', 'SAYING', 'SAID')]},\n", " {'section': 'gram8-plural',\n", " 'correct': [],\n", " 'incorrect': [('BUILDING', 'BUILDINGS', 'CAR', 'CARS'),\n", " ('BUILDING', 'BUILDINGS', 'CHILD', 'CHILDREN'),\n", " ('BUILDING', 'BUILDINGS', 'MAN', 'MEN'),\n", " ('BUILDING', 'BUILDINGS', 'ROAD', 'ROADS'),\n", " ('BUILDING', 'BUILDINGS', 'WOMAN', 'WOMEN'),\n", " ('CAR', 'CARS', 'CHILD', 'CHILDREN'),\n", " ('CAR', 'CARS', 'MAN', 'MEN'),\n", " ('CAR', 'CARS', 'ROAD', 'ROADS'),\n", " ('CAR', 'CARS', 'WOMAN', 'WOMEN'),\n", " ('CAR', 'CARS', 'BUILDING', 'BUILDINGS'),\n", " ('CHILD', 'CHILDREN', 'MAN', 'MEN'),\n", " ('CHILD', 'CHILDREN', 'ROAD', 'ROADS'),\n", " ('CHILD', 'CHILDREN', 'WOMAN', 'WOMEN'),\n", " ('CHILD', 'CHILDREN', 'BUILDING', 'BUILDINGS'),\n", " ('CHILD', 'CHILDREN', 'CAR', 'CARS'),\n", " ('MAN', 'MEN', 'ROAD', 'ROADS'),\n", " ('MAN', 'MEN', 'WOMAN', 'WOMEN'),\n", " ('MAN', 'MEN', 'BUILDING', 'BUILDINGS'),\n", " ('MAN', 'MEN', 'CAR', 'CARS'),\n", " ('MAN', 'MEN', 'CHILD', 'CHILDREN'),\n", " ('ROAD', 'ROADS', 'WOMAN', 'WOMEN'),\n", " ('ROAD', 'ROADS', 'BUILDING', 'BUILDINGS'),\n", " ('ROAD', 'ROADS', 'CAR', 'CARS'),\n", " ('ROAD', 'ROADS', 'CHILD', 'CHILDREN'),\n", " ('ROAD', 'ROADS', 'MAN', 'MEN'),\n", " ('WOMAN', 'WOMEN', 'BUILDING', 'BUILDINGS'),\n", " ('WOMAN', 'WOMEN', 'CAR', 'CARS'),\n", " ('WOMAN', 'WOMEN', 'CHILD', 'CHILDREN'),\n", " ('WOMAN', 'WOMEN', 'MAN', 'MEN'),\n", " ('WOMAN', 'WOMEN', 'ROAD', 'ROADS')]},\n", " {'section': 'gram9-plural-verbs', 'correct': [], 'incorrect': []},\n", " {'section': 'Total accuracy',\n", " 'correct': [],\n", " 'incorrect': [('CANBERRA', 'AUSTRALIA', 'KABUL', 'AFGHANISTAN'),\n", " ('CANBERRA', 'AUSTRALIA', 'PARIS', 'FRANCE'),\n", " ('KABUL', 'AFGHANISTAN', 'PARIS', 'FRANCE'),\n", " ('KABUL', 'AFGHANISTAN', 'CANBERRA', 'AUSTRALIA'),\n", " ('PARIS', 'FRANCE', 'CANBERRA', 'AUSTRALIA'),\n", " ('PARIS', 'FRANCE', 'KABUL', 'AFGHANISTAN'),\n", " ('CANBERRA', 'AUSTRALIA', 'KABUL', 'AFGHANISTAN'),\n", " ('KABUL', 'AFGHANISTAN', 'PARIS', 'FRANCE'),\n", " ('HE', 'SHE', 'HIS', 'HER'),\n", " ('HE', 'SHE', 'MAN', 'WOMAN'),\n", " ('HIS', 'HER', 'MAN', 'WOMAN'),\n", " ('HIS', 'HER', 'HE', 'SHE'),\n", " ('MAN', 'WOMAN', 'HE', 'SHE'),\n", " ('MAN', 'WOMAN', 'HIS', 'HER'),\n", " ('GOOD', 'BETTER', 'GREAT', 'GREATER'),\n", " ('GOOD', 'BETTER', 'LONG', 'LONGER'),\n", " ('GOOD', 'BETTER', 'LOW', 'LOWER'),\n", " ('GOOD', 'BETTER', 'SMALL', 'SMALLER'),\n", " ('GREAT', 'GREATER', 'LONG', 'LONGER'),\n", " ('GREAT', 'GREATER', 'LOW', 'LOWER'),\n", " ('GREAT', 'GREATER', 'SMALL', 'SMALLER'),\n", " ('GREAT', 'GREATER', 'GOOD', 'BETTER'),\n", " ('LONG', 'LONGER', 'LOW', 'LOWER'),\n", " ('LONG', 'LONGER', 'SMALL', 'SMALLER'),\n", " ('LONG', 'LONGER', 'GOOD', 'BETTER'),\n", " ('LONG', 'LONGER', 'GREAT', 'GREATER'),\n", " ('LOW', 'LOWER', 'SMALL', 'SMALLER'),\n", " ('LOW', 'LOWER', 'GOOD', 'BETTER'),\n", " ('LOW', 'LOWER', 'GREAT', 'GREATER'),\n", " ('LOW', 'LOWER', 'LONG', 'LONGER'),\n", " ('SMALL', 'SMALLER', 'GOOD', 'BETTER'),\n", " ('SMALL', 'SMALLER', 'GREAT', 'GREATER'),\n", " ('SMALL', 'SMALLER', 'LONG', 'LONGER'),\n", " ('SMALL', 'SMALLER', 'LOW', 'LOWER'),\n", " ('BIG', 'BIGGEST', 'GOOD', 'BEST'),\n", " ('BIG', 'BIGGEST', 'GREAT', 'GREATEST'),\n", " ('BIG', 'BIGGEST', 'LARGE', 'LARGEST'),\n", " ('GOOD', 'BEST', 'GREAT', 'GREATEST'),\n", " ('GOOD', 'BEST', 'LARGE', 'LARGEST'),\n", " ('GOOD', 'BEST', 'BIG', 'BIGGEST'),\n", " ('GREAT', 'GREATEST', 'LARGE', 'LARGEST'),\n", " ('GREAT', 'GREATEST', 'BIG', 'BIGGEST'),\n", " ('GREAT', 'GREATEST', 'GOOD', 'BEST'),\n", " ('LARGE', 'LARGEST', 'BIG', 'BIGGEST'),\n", " ('LARGE', 'LARGEST', 'GOOD', 'BEST'),\n", " ('LARGE', 'LARGEST', 'GREAT', 'GREATEST'),\n", " ('GO', 'GOING', 'LOOK', 'LOOKING'),\n", " ('GO', 'GOING', 'PLAY', 'PLAYING'),\n", " ('GO', 'GOING', 'RUN', 'RUNNING'),\n", " ('GO', 'GOING', 'SAY', 'SAYING'),\n", " ('LOOK', 'LOOKING', 'PLAY', 'PLAYING'),\n", " ('LOOK', 'LOOKING', 'RUN', 'RUNNING'),\n", " ('LOOK', 'LOOKING', 'SAY', 'SAYING'),\n", " ('LOOK', 'LOOKING', 'GO', 'GOING'),\n", " ('PLAY', 'PLAYING', 'RUN', 'RUNNING'),\n", " ('PLAY', 'PLAYING', 'SAY', 'SAYING'),\n", " ('PLAY', 'PLAYING', 'GO', 'GOING'),\n", " ('PLAY', 'PLAYING', 'LOOK', 'LOOKING'),\n", " ('RUN', 'RUNNING', 'SAY', 'SAYING'),\n", " ('RUN', 'RUNNING', 'GO', 'GOING'),\n", " ('RUN', 'RUNNING', 'LOOK', 'LOOKING'),\n", " ('RUN', 'RUNNING', 'PLAY', 'PLAYING'),\n", " ('SAY', 'SAYING', 'GO', 'GOING'),\n", " ('SAY', 'SAYING', 'LOOK', 'LOOKING'),\n", " ('SAY', 'SAYING', 'PLAY', 'PLAYING'),\n", " ('SAY', 'SAYING', 'RUN', 'RUNNING'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'FRANCE', 'FRENCH'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'INDIA', 'INDIAN'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'ISRAEL', 'ISRAELI'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'JAPAN', 'JAPANESE'),\n", " ('AUSTRALIA', 'AUSTRALIAN', 'SWITZERLAND', 'SWISS'),\n", " ('FRANCE', 'FRENCH', 'INDIA', 'INDIAN'),\n", " ('FRANCE', 'FRENCH', 'ISRAEL', 'ISRAELI'),\n", " ('FRANCE', 'FRENCH', 'JAPAN', 'JAPANESE'),\n", " ('FRANCE', 'FRENCH', 'SWITZERLAND', 'SWISS'),\n", " ('FRANCE', 'FRENCH', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('INDIA', 'INDIAN', 'ISRAEL', 'ISRAELI'),\n", " ('INDIA', 'INDIAN', 'JAPAN', 'JAPANESE'),\n", " ('INDIA', 'INDIAN', 'SWITZERLAND', 'SWISS'),\n", " ('INDIA', 'INDIAN', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('INDIA', 'INDIAN', 'FRANCE', 'FRENCH'),\n", " ('ISRAEL', 'ISRAELI', 'JAPAN', 'JAPANESE'),\n", " ('ISRAEL', 'ISRAELI', 'SWITZERLAND', 'SWISS'),\n", " ('ISRAEL', 'ISRAELI', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('ISRAEL', 'ISRAELI', 'FRANCE', 'FRENCH'),\n", " ('ISRAEL', 'ISRAELI', 'INDIA', 'INDIAN'),\n", " ('JAPAN', 'JAPANESE', 'SWITZERLAND', 'SWISS'),\n", " ('JAPAN', 'JAPANESE', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('JAPAN', 'JAPANESE', 'FRANCE', 'FRENCH'),\n", " ('JAPAN', 'JAPANESE', 'INDIA', 'INDIAN'),\n", " ('JAPAN', 'JAPANESE', 'ISRAEL', 'ISRAELI'),\n", " ('SWITZERLAND', 'SWISS', 'AUSTRALIA', 'AUSTRALIAN'),\n", " ('SWITZERLAND', 'SWISS', 'FRANCE', 'FRENCH'),\n", " ('SWITZERLAND', 'SWISS', 'INDIA', 'INDIAN'),\n", " ('SWITZERLAND', 'SWISS', 'ISRAEL', 'ISRAELI'),\n", " ('SWITZERLAND', 'SWISS', 'JAPAN', 'JAPANESE'),\n", " ('GOING', 'WENT', 'PAYING', 'PAID'),\n", " ('GOING', 'WENT', 'PLAYING', 'PLAYED'),\n", " ('GOING', 'WENT', 'SAYING', 'SAID'),\n", " ('GOING', 'WENT', 'TAKING', 'TOOK'),\n", " ('PAYING', 'PAID', 'PLAYING', 'PLAYED'),\n", " ('PAYING', 'PAID', 'SAYING', 'SAID'),\n", " ('PAYING', 'PAID', 'TAKING', 'TOOK'),\n", " ('PAYING', 'PAID', 'GOING', 'WENT'),\n", " ('PLAYING', 'PLAYED', 'SAYING', 'SAID'),\n", " ('PLAYING', 'PLAYED', 'TAKING', 'TOOK'),\n", " ('PLAYING', 'PLAYED', 'GOING', 'WENT'),\n", " ('PLAYING', 'PLAYED', 'PAYING', 'PAID'),\n", " ('SAYING', 'SAID', 'TAKING', 'TOOK'),\n", " ('SAYING', 'SAID', 'GOING', 'WENT'),\n", " ('SAYING', 'SAID', 'PAYING', 'PAID'),\n", " ('SAYING', 'SAID', 'PLAYING', 'PLAYED'),\n", " ('TAKING', 'TOOK', 'GOING', 'WENT'),\n", " ('TAKING', 'TOOK', 'PAYING', 'PAID'),\n", " ('TAKING', 'TOOK', 'PLAYING', 'PLAYED'),\n", " ('TAKING', 'TOOK', 'SAYING', 'SAID'),\n", " ('BUILDING', 'BUILDINGS', 'CAR', 'CARS'),\n", " ('BUILDING', 'BUILDINGS', 'CHILD', 'CHILDREN'),\n", " ('BUILDING', 'BUILDINGS', 'MAN', 'MEN'),\n", " ('BUILDING', 'BUILDINGS', 'ROAD', 'ROADS'),\n", " ('BUILDING', 'BUILDINGS', 'WOMAN', 'WOMEN'),\n", " ('CAR', 'CARS', 'CHILD', 'CHILDREN'),\n", " ('CAR', 'CARS', 'MAN', 'MEN'),\n", " ('CAR', 'CARS', 'ROAD', 'ROADS'),\n", " ('CAR', 'CARS', 'WOMAN', 'WOMEN'),\n", " ('CAR', 'CARS', 'BUILDING', 'BUILDINGS'),\n", " ('CHILD', 'CHILDREN', 'MAN', 'MEN'),\n", " ('CHILD', 'CHILDREN', 'ROAD', 'ROADS'),\n", " ('CHILD', 'CHILDREN', 'WOMAN', 'WOMEN'),\n", " ('CHILD', 'CHILDREN', 'BUILDING', 'BUILDINGS'),\n", " ('CHILD', 'CHILDREN', 'CAR', 'CARS'),\n", " ('MAN', 'MEN', 'ROAD', 'ROADS'),\n", " ('MAN', 'MEN', 'WOMAN', 'WOMEN'),\n", " ('MAN', 'MEN', 'BUILDING', 'BUILDINGS'),\n", " ('MAN', 'MEN', 'CAR', 'CARS'),\n", " ('MAN', 'MEN', 'CHILD', 'CHILDREN'),\n", " ('ROAD', 'ROADS', 'WOMAN', 'WOMEN'),\n", " ('ROAD', 'ROADS', 'BUILDING', 'BUILDINGS'),\n", " ('ROAD', 'ROADS', 'CAR', 'CARS'),\n", " ('ROAD', 'ROADS', 'CHILD', 'CHILDREN'),\n", " ('ROAD', 'ROADS', 'MAN', 'MEN'),\n", " ('WOMAN', 'WOMEN', 'BUILDING', 'BUILDINGS'),\n", " ('WOMAN', 'WOMEN', 'CAR', 'CARS'),\n", " ('WOMAN', 'WOMEN', 'CHILD', 'CHILDREN'),\n", " ('WOMAN', 'WOMEN', 'MAN', 'MEN'),\n", " ('WOMAN', 'WOMEN', 'ROAD', 'ROADS')]}])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.wv.evaluate_word_analogies(datapath('questions-words.txt'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This ``evaluate_word_analogies`` method takes an `optional parameter\n", "`_\n", "``restrict_vocab`` which limits which test examples are to be considered.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the December 2016 release of Gensim we added a better way to evaluate semantic similarity.\n", "\n", "By default it uses an academic dataset WS-353 but one can create a dataset\n", "specific to your business based on it. It contains word pairs together with\n", "human-assigned similarity judgments. It measures the relatedness or\n", "co-occurrence of two words. For example, 'coast' and 'shore' are very similar\n", "as they appear in the same context. At the same time 'clothes' and 'closet'\n", "are less similar because they are related but not interchangeable.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:01,673 : INFO : Skipping line #2 with OOV words: love\tsex\t6.77\n", "2025-03-27 14:18:01,675 : INFO : Skipping line #3 with OOV words: tiger\tcat\t7.35\n", "2025-03-27 14:18:01,675 : INFO : Skipping line #4 with OOV words: tiger\ttiger\t10.00\n", "2025-03-27 14:18:01,676 : INFO : Skipping line #5 with OOV words: book\tpaper\t7.46\n", "2025-03-27 14:18:01,676 : INFO : Skipping line #6 with OOV words: computer\tkeyboard\t7.62\n", "2025-03-27 14:18:01,677 : INFO : Skipping line #7 with OOV words: computer\tinternet\t7.58\n", "2025-03-27 14:18:01,679 : INFO : Skipping line #9 with OOV words: train\tcar\t6.31\n", "2025-03-27 14:18:01,680 : INFO : Skipping line #10 with OOV words: telephone\tcommunication\t7.50\n", "2025-03-27 14:18:01,681 : INFO : Skipping line #14 with OOV words: bread\tbutter\t6.19\n", "2025-03-27 14:18:01,681 : INFO : Skipping line #15 with OOV words: cucumber\tpotato\t5.92\n", "2025-03-27 14:18:01,682 : INFO : Skipping line #16 with OOV words: doctor\tnurse\t7.00\n", "2025-03-27 14:18:01,682 : INFO : Skipping line #18 with OOV words: student\tprofessor\t6.81\n", "2025-03-27 14:18:01,683 : INFO : Skipping line #19 with OOV words: smart\tstudent\t4.62\n", "2025-03-27 14:18:01,683 : INFO : Skipping line #20 with OOV words: smart\tstupid\t5.81\n", "2025-03-27 14:18:01,683 : INFO : Skipping line #21 with OOV words: company\tstock\t7.08\n", "2025-03-27 14:18:01,684 : INFO : Skipping line #22 with OOV words: stock\tmarket\t8.08\n", "2025-03-27 14:18:01,684 : INFO : Skipping line #23 with OOV words: stock\tphone\t1.62\n", "2025-03-27 14:18:01,685 : INFO : Skipping line #24 with OOV words: stock\tCD\t1.31\n", "2025-03-27 14:18:01,685 : INFO : Skipping line #25 with OOV words: stock\tjaguar\t0.92\n", "2025-03-27 14:18:01,685 : INFO : Skipping line #26 with OOV words: stock\tegg\t1.81\n", "2025-03-27 14:18:01,686 : INFO : Skipping line #27 with OOV words: fertility\tegg\t6.69\n", "2025-03-27 14:18:01,686 : INFO : Skipping line #28 with OOV words: stock\tlive\t3.73\n", "2025-03-27 14:18:01,686 : INFO : Skipping line #29 with OOV words: stock\tlife\t0.92\n", "2025-03-27 14:18:01,687 : INFO : Skipping line #30 with OOV words: book\tlibrary\t7.46\n", "2025-03-27 14:18:01,687 : INFO : Skipping line #32 with OOV words: wood\tforest\t7.73\n", "2025-03-27 14:18:01,687 : INFO : Skipping line #33 with OOV words: money\tcash\t9.15\n", "2025-03-27 14:18:01,687 : INFO : Skipping line #34 with OOV words: professor\tcucumber\t0.31\n", "2025-03-27 14:18:01,688 : INFO : Skipping line #35 with OOV words: king\tcabbage\t0.23\n", "2025-03-27 14:18:01,688 : INFO : Skipping line #36 with OOV words: king\tqueen\t8.58\n", "2025-03-27 14:18:01,688 : INFO : Skipping line #37 with OOV words: king\trook\t5.92\n", "2025-03-27 14:18:01,689 : INFO : Skipping line #38 with OOV words: bishop\trabbi\t6.69\n", "2025-03-27 14:18:01,689 : INFO : Skipping line #41 with OOV words: holy\tsex\t1.62\n", "2025-03-27 14:18:01,690 : INFO : Skipping line #42 with OOV words: fuck\tsex\t9.44\n", "2025-03-27 14:18:01,690 : INFO : Skipping line #43 with OOV words: Maradona\tfootball\t8.62\n", "2025-03-27 14:18:01,690 : INFO : Skipping line #44 with OOV words: football\tsoccer\t9.03\n", "2025-03-27 14:18:01,691 : INFO : Skipping line #45 with OOV words: football\tbasketball\t6.81\n", "2025-03-27 14:18:01,691 : INFO : Skipping line #46 with OOV words: football\ttennis\t6.63\n", "2025-03-27 14:18:01,691 : INFO : Skipping line #47 with OOV words: tennis\tracket\t7.56\n", "2025-03-27 14:18:01,692 : INFO : Skipping line #50 with OOV words: Arafat\tJackson\t2.50\n", "2025-03-27 14:18:01,692 : INFO : Skipping line #51 with OOV words: law\tlawyer\t8.38\n", "2025-03-27 14:18:01,692 : INFO : Skipping line #52 with OOV words: movie\tstar\t7.38\n", "2025-03-27 14:18:01,693 : INFO : Skipping line #53 with OOV words: movie\tpopcorn\t6.19\n", "2025-03-27 14:18:01,693 : INFO : Skipping line #54 with OOV words: movie\tcritic\t6.73\n", "2025-03-27 14:18:01,694 : INFO : Skipping line #55 with OOV words: movie\ttheater\t7.92\n", "2025-03-27 14:18:01,694 : INFO : Skipping line #56 with OOV words: physics\tproton\t8.12\n", "2025-03-27 14:18:01,694 : INFO : Skipping line #57 with OOV words: physics\tchemistry\t7.35\n", "2025-03-27 14:18:01,694 : INFO : Skipping line #58 with OOV words: space\tchemistry\t4.88\n", "2025-03-27 14:18:01,695 : INFO : Skipping line #59 with OOV words: alcohol\tchemistry\t5.54\n", "2025-03-27 14:18:01,695 : INFO : Skipping line #60 with OOV words: vodka\tgin\t8.46\n", "2025-03-27 14:18:01,695 : INFO : Skipping line #61 with OOV words: vodka\tbrandy\t8.13\n", "2025-03-27 14:18:01,695 : INFO : Skipping line #62 with OOV words: drink\tcar\t3.04\n", "2025-03-27 14:18:01,696 : INFO : Skipping line #63 with OOV words: drink\tear\t1.31\n", "2025-03-27 14:18:01,696 : INFO : Skipping line #64 with OOV words: drink\tmouth\t5.96\n", "2025-03-27 14:18:01,696 : INFO : Skipping line #65 with OOV words: drink\teat\t6.87\n", "2025-03-27 14:18:01,696 : INFO : Skipping line #66 with OOV words: baby\tmother\t7.85\n", "2025-03-27 14:18:01,697 : INFO : Skipping line #67 with OOV words: drink\tmother\t2.65\n", "2025-03-27 14:18:01,697 : INFO : Skipping line #68 with OOV words: car\tautomobile\t8.94\n", "2025-03-27 14:18:01,697 : INFO : Skipping line #69 with OOV words: gem\tjewel\t8.96\n", "2025-03-27 14:18:01,697 : INFO : Skipping line #70 with OOV words: journey\tvoyage\t9.29\n", "2025-03-27 14:18:01,698 : INFO : Skipping line #71 with OOV words: boy\tlad\t8.83\n", "2025-03-27 14:18:01,698 : INFO : Skipping line #72 with OOV words: coast\tshore\t9.10\n", "2025-03-27 14:18:01,698 : INFO : Skipping line #73 with OOV words: asylum\tmadhouse\t8.87\n", "2025-03-27 14:18:01,699 : INFO : Skipping line #74 with OOV words: magician\twizard\t9.02\n", "2025-03-27 14:18:01,699 : INFO : Skipping line #75 with OOV words: midday\tnoon\t9.29\n", "2025-03-27 14:18:01,699 : INFO : Skipping line #76 with OOV words: furnace\tstove\t8.79\n", "2025-03-27 14:18:01,699 : INFO : Skipping line #77 with OOV words: food\tfruit\t7.52\n", "2025-03-27 14:18:01,699 : INFO : Skipping line #78 with OOV words: bird\tcock\t7.10\n", "2025-03-27 14:18:01,700 : INFO : Skipping line #79 with OOV words: bird\tcrane\t7.38\n", "2025-03-27 14:18:01,700 : INFO : Skipping line #80 with OOV words: tool\timplement\t6.46\n", "2025-03-27 14:18:01,700 : INFO : Skipping line #81 with OOV words: brother\tmonk\t6.27\n", "2025-03-27 14:18:01,701 : INFO : Skipping line #82 with OOV words: crane\timplement\t2.69\n", "2025-03-27 14:18:01,701 : INFO : Skipping line #83 with OOV words: lad\tbrother\t4.46\n", "2025-03-27 14:18:01,701 : INFO : Skipping line #84 with OOV words: journey\tcar\t5.85\n", "2025-03-27 14:18:01,702 : INFO : Skipping line #85 with OOV words: monk\toracle\t5.00\n", "2025-03-27 14:18:01,702 : INFO : Skipping line #86 with OOV words: cemetery\twoodland\t2.08\n", "2025-03-27 14:18:01,702 : INFO : Skipping line #87 with OOV words: food\trooster\t4.42\n", "2025-03-27 14:18:01,702 : INFO : Skipping line #89 with OOV words: forest\tgraveyard\t1.85\n", "2025-03-27 14:18:01,703 : INFO : Skipping line #90 with OOV words: shore\twoodland\t3.08\n", "2025-03-27 14:18:01,703 : INFO : Skipping line #91 with OOV words: monk\tslave\t0.92\n", "2025-03-27 14:18:01,703 : INFO : Skipping line #92 with OOV words: coast\tforest\t3.15\n", "2025-03-27 14:18:01,703 : INFO : Skipping line #93 with OOV words: lad\twizard\t0.92\n", "2025-03-27 14:18:01,704 : INFO : Skipping line #94 with OOV words: chord\tsmile\t0.54\n", "2025-03-27 14:18:01,704 : INFO : Skipping line #95 with OOV words: glass\tmagician\t2.08\n", "2025-03-27 14:18:01,704 : INFO : Skipping line #96 with OOV words: noon\tstring\t0.54\n", "2025-03-27 14:18:01,705 : INFO : Skipping line #97 with OOV words: rooster\tvoyage\t0.62\n", "2025-03-27 14:18:01,705 : INFO : Skipping line #98 with OOV words: money\tdollar\t8.42\n", "2025-03-27 14:18:01,706 : INFO : Skipping line #99 with OOV words: money\tcash\t9.08\n", "2025-03-27 14:18:01,706 : INFO : Skipping line #100 with OOV words: money\tcurrency\t9.04\n", "2025-03-27 14:18:01,706 : INFO : Skipping line #101 with OOV words: money\twealth\t8.27\n", "2025-03-27 14:18:01,706 : INFO : Skipping line #103 with OOV words: money\tpossession\t7.29\n", "2025-03-27 14:18:01,707 : INFO : Skipping line #105 with OOV words: money\tdeposit\t7.73\n", "2025-03-27 14:18:01,707 : INFO : Skipping line #106 with OOV words: money\twithdrawal\t6.88\n", "2025-03-27 14:18:01,707 : INFO : Skipping line #107 with OOV words: money\tlaundering\t5.65\n", "2025-03-27 14:18:01,707 : INFO : Skipping line #109 with OOV words: tiger\tjaguar\t8.00\n", "2025-03-27 14:18:01,708 : INFO : Skipping line #110 with OOV words: tiger\tfeline\t8.00\n", "2025-03-27 14:18:01,708 : INFO : Skipping line #111 with OOV words: tiger\tcarnivore\t7.08\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:01,709 : INFO : Skipping line #112 with OOV words: tiger\tmammal\t6.85\n", "2025-03-27 14:18:01,709 : INFO : Skipping line #113 with OOV words: tiger\tanimal\t7.00\n", "2025-03-27 14:18:01,709 : INFO : Skipping line #114 with OOV words: tiger\torganism\t4.77\n", "2025-03-27 14:18:01,709 : INFO : Skipping line #115 with OOV words: tiger\tfauna\t5.62\n", "2025-03-27 14:18:01,709 : INFO : Skipping line #116 with OOV words: tiger\tzoo\t5.87\n", "2025-03-27 14:18:01,710 : INFO : Skipping line #117 with OOV words: psychology\tpsychiatry\t8.08\n", "2025-03-27 14:18:01,710 : INFO : Skipping line #118 with OOV words: psychology\tanxiety\t7.00\n", "2025-03-27 14:18:01,710 : INFO : Skipping line #119 with OOV words: psychology\tfear\t6.85\n", "2025-03-27 14:18:01,710 : INFO : Skipping line #120 with OOV words: psychology\tdepression\t7.42\n", "2025-03-27 14:18:01,710 : INFO : Skipping line #121 with OOV words: psychology\tclinic\t6.58\n", "2025-03-27 14:18:01,711 : INFO : Skipping line #122 with OOV words: psychology\tdoctor\t6.42\n", "2025-03-27 14:18:01,711 : INFO : Skipping line #123 with OOV words: psychology\tFreud\t8.21\n", "2025-03-27 14:18:01,711 : INFO : Skipping line #124 with OOV words: psychology\tmind\t7.69\n", "2025-03-27 14:18:01,711 : INFO : Skipping line #125 with OOV words: psychology\thealth\t7.23\n", "2025-03-27 14:18:01,712 : INFO : Skipping line #126 with OOV words: psychology\tscience\t6.71\n", "2025-03-27 14:18:01,712 : INFO : Skipping line #127 with OOV words: psychology\tdiscipline\t5.58\n", "2025-03-27 14:18:01,712 : INFO : Skipping line #128 with OOV words: psychology\tcognition\t7.48\n", "2025-03-27 14:18:01,713 : INFO : Skipping line #129 with OOV words: planet\tstar\t8.45\n", "2025-03-27 14:18:01,713 : INFO : Skipping line #130 with OOV words: planet\tconstellation\t8.06\n", "2025-03-27 14:18:01,713 : INFO : Skipping line #131 with OOV words: planet\tmoon\t8.08\n", "2025-03-27 14:18:01,713 : INFO : Skipping line #132 with OOV words: planet\tsun\t8.02\n", "2025-03-27 14:18:01,714 : INFO : Skipping line #133 with OOV words: planet\tgalaxy\t8.11\n", "2025-03-27 14:18:01,714 : INFO : Skipping line #134 with OOV words: planet\tspace\t7.92\n", "2025-03-27 14:18:01,714 : INFO : Skipping line #135 with OOV words: planet\tastronomer\t7.94\n", "2025-03-27 14:18:01,714 : INFO : Skipping line #136 with OOV words: precedent\texample\t5.85\n", "2025-03-27 14:18:01,715 : INFO : Skipping line #137 with OOV words: precedent\tinformation\t3.85\n", "2025-03-27 14:18:01,715 : INFO : Skipping line #138 with OOV words: precedent\tcognition\t2.81\n", "2025-03-27 14:18:01,715 : INFO : Skipping line #139 with OOV words: precedent\tlaw\t6.65\n", "2025-03-27 14:18:01,715 : INFO : Skipping line #140 with OOV words: precedent\tcollection\t2.50\n", "2025-03-27 14:18:01,715 : INFO : Skipping line #141 with OOV words: precedent\tgroup\t1.77\n", "2025-03-27 14:18:01,715 : INFO : Skipping line #142 with OOV words: precedent\tantecedent\t6.04\n", "2025-03-27 14:18:01,716 : INFO : Skipping line #143 with OOV words: cup\tcoffee\t6.58\n", "2025-03-27 14:18:01,716 : INFO : Skipping line #144 with OOV words: cup\ttableware\t6.85\n", "2025-03-27 14:18:01,716 : INFO : Skipping line #145 with OOV words: cup\tarticle\t2.40\n", "2025-03-27 14:18:01,716 : INFO : Skipping line #146 with OOV words: cup\tartifact\t2.92\n", "2025-03-27 14:18:01,717 : INFO : Skipping line #147 with OOV words: cup\tobject\t3.69\n", "2025-03-27 14:18:01,717 : INFO : Skipping line #148 with OOV words: cup\tentity\t2.15\n", "2025-03-27 14:18:01,717 : INFO : Skipping line #149 with OOV words: cup\tdrink\t7.25\n", "2025-03-27 14:18:01,717 : INFO : Skipping line #151 with OOV words: cup\tsubstance\t1.92\n", "2025-03-27 14:18:01,718 : INFO : Skipping line #152 with OOV words: cup\tliquid\t5.90\n", "2025-03-27 14:18:01,718 : INFO : Skipping line #153 with OOV words: jaguar\tcat\t7.42\n", "2025-03-27 14:18:01,718 : INFO : Skipping line #154 with OOV words: jaguar\tcar\t7.27\n", "2025-03-27 14:18:01,719 : INFO : Skipping line #157 with OOV words: energy\tlaboratory\t5.09\n", "2025-03-27 14:18:01,719 : INFO : Skipping line #158 with OOV words: computer\tlaboratory\t6.78\n", "2025-03-27 14:18:01,719 : INFO : Skipping line #159 with OOV words: weapon\tsecret\t6.06\n", "2025-03-27 14:18:01,719 : INFO : Skipping line #160 with OOV words: FBI\tfingerprint\t6.94\n", "2025-03-27 14:18:01,719 : INFO : Skipping line #161 with OOV words: FBI\tinvestigation\t8.31\n", "2025-03-27 14:18:01,720 : INFO : Skipping line #163 with OOV words: Mars\twater\t2.94\n", "2025-03-27 14:18:01,720 : INFO : Skipping line #164 with OOV words: Mars\tscientist\t5.63\n", "2025-03-27 14:18:01,720 : INFO : Skipping line #166 with OOV words: canyon\tlandscape\t7.53\n", "2025-03-27 14:18:01,720 : INFO : Skipping line #167 with OOV words: image\tsurface\t4.56\n", "2025-03-27 14:18:01,721 : INFO : Skipping line #168 with OOV words: discovery\tspace\t6.34\n", "2025-03-27 14:18:01,721 : INFO : Skipping line #169 with OOV words: water\tseepage\t6.56\n", "2025-03-27 14:18:01,721 : INFO : Skipping line #170 with OOV words: sign\trecess\t2.38\n", "2025-03-27 14:18:01,721 : INFO : Skipping line #172 with OOV words: mile\tkilometer\t8.66\n", "2025-03-27 14:18:01,722 : INFO : Skipping line #173 with OOV words: computer\tnews\t4.47\n", "2025-03-27 14:18:01,722 : INFO : Skipping line #174 with OOV words: territory\tsurface\t5.34\n", "2025-03-27 14:18:01,722 : INFO : Skipping line #175 with OOV words: atmosphere\tlandscape\t3.69\n", "2025-03-27 14:18:01,722 : INFO : Skipping line #176 with OOV words: president\tmedal\t3.00\n", "2025-03-27 14:18:01,722 : INFO : Skipping line #179 with OOV words: skin\teye\t6.22\n", "2025-03-27 14:18:01,723 : INFO : Skipping line #181 with OOV words: theater\thistory\t3.91\n", "2025-03-27 14:18:01,723 : INFO : Skipping line #182 with OOV words: volunteer\tmotto\t2.56\n", "2025-03-27 14:18:01,723 : INFO : Skipping line #183 with OOV words: prejudice\trecognition\t3.00\n", "2025-03-27 14:18:01,723 : INFO : Skipping line #184 with OOV words: decoration\tvalor\t5.63\n", "2025-03-27 14:18:01,724 : INFO : Skipping line #185 with OOV words: century\tyear\t7.59\n", "2025-03-27 14:18:01,724 : INFO : Skipping line #186 with OOV words: century\tnation\t3.16\n", "2025-03-27 14:18:01,724 : INFO : Skipping line #187 with OOV words: delay\tracism\t1.19\n", "2025-03-27 14:18:01,725 : INFO : Skipping line #191 with OOV words: minority\tpeace\t3.69\n", "2025-03-27 14:18:01,725 : INFO : Skipping line #194 with OOV words: deployment\tdeparture\t4.25\n", "2025-03-27 14:18:01,725 : INFO : Skipping line #195 with OOV words: deployment\twithdrawal\t5.88\n", "2025-03-27 14:18:01,725 : INFO : Skipping line #197 with OOV words: announcement\tnews\t7.56\n", "2025-03-27 14:18:01,725 : INFO : Skipping line #198 with OOV words: announcement\teffort\t2.75\n", "2025-03-27 14:18:01,726 : INFO : Skipping line #199 with OOV words: stroke\thospital\t7.03\n", "2025-03-27 14:18:01,726 : INFO : Skipping line #200 with OOV words: disability\tdeath\t5.47\n", "2025-03-27 14:18:01,726 : INFO : Skipping line #201 with OOV words: victim\temergency\t6.47\n", "2025-03-27 14:18:01,726 : INFO : Skipping line #203 with OOV words: journal\tassociation\t4.97\n", "2025-03-27 14:18:01,726 : INFO : Skipping line #205 with OOV words: doctor\tliability\t5.19\n", "2025-03-27 14:18:01,727 : INFO : Skipping line #206 with OOV words: liability\tinsurance\t7.03\n", "2025-03-27 14:18:01,727 : INFO : Skipping line #207 with OOV words: school\tcenter\t3.44\n", "2025-03-27 14:18:01,727 : INFO : Skipping line #208 with OOV words: reason\thypertension\t2.31\n", "2025-03-27 14:18:01,727 : INFO : Skipping line #209 with OOV words: reason\tcriterion\t5.91\n", "2025-03-27 14:18:01,728 : INFO : Skipping line #210 with OOV words: hundred\tpercent\t7.38\n", "2025-03-27 14:18:01,728 : INFO : Skipping line #211 with OOV words: Harvard\tYale\t8.13\n", "2025-03-27 14:18:01,728 : INFO : Skipping line #212 with OOV words: hospital\tinfrastructure\t4.63\n", "2025-03-27 14:18:01,728 : INFO : Skipping line #213 with OOV words: death\trow\t5.25\n", "2025-03-27 14:18:01,728 : INFO : Skipping line #214 with OOV words: death\tinmate\t5.03\n", "2025-03-27 14:18:01,729 : INFO : Skipping line #215 with OOV words: lawyer\tevidence\t6.69\n", "2025-03-27 14:18:01,729 : INFO : Skipping line #218 with OOV words: word\tsimilarity\t4.75\n", "2025-03-27 14:18:01,729 : INFO : Skipping line #219 with OOV words: board\trecommendation\t4.47\n", "2025-03-27 14:18:01,729 : INFO : Skipping line #221 with OOV words: OPEC\tcountry\t5.63\n", "2025-03-27 14:18:01,729 : INFO : Skipping line #222 with OOV words: peace\tatmosphere\t3.69\n", "2025-03-27 14:18:01,730 : INFO : Skipping line #224 with OOV words: territory\tkilometer\t5.28\n", "2025-03-27 14:18:01,730 : INFO : Skipping line #226 with OOV words: competition\tprice\t6.44\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:01,730 : INFO : Skipping line #227 with OOV words: consumer\tconfidence\t4.13\n", "2025-03-27 14:18:01,730 : INFO : Skipping line #228 with OOV words: consumer\tenergy\t4.75\n", "2025-03-27 14:18:01,731 : INFO : Skipping line #231 with OOV words: credit\tcard\t8.06\n", "2025-03-27 14:18:01,731 : INFO : Skipping line #233 with OOV words: hotel\treservation\t8.03\n", "2025-03-27 14:18:01,731 : INFO : Skipping line #234 with OOV words: grocery\tmoney\t5.94\n", "2025-03-27 14:18:01,731 : INFO : Skipping line #235 with OOV words: registration\tarrangement\t6.00\n", "2025-03-27 14:18:01,731 : INFO : Skipping line #236 with OOV words: arrangement\taccommodation\t5.41\n", "2025-03-27 14:18:01,732 : INFO : Skipping line #238 with OOV words: type\tkind\t8.97\n", "2025-03-27 14:18:01,732 : INFO : Skipping line #239 with OOV words: arrival\thotel\t6.00\n", "2025-03-27 14:18:01,732 : INFO : Skipping line #240 with OOV words: bed\tcloset\t6.72\n", "2025-03-27 14:18:01,732 : INFO : Skipping line #241 with OOV words: closet\tclothes\t8.00\n", "2025-03-27 14:18:01,732 : INFO : Skipping line #242 with OOV words: situation\tconclusion\t4.81\n", "2025-03-27 14:18:01,733 : INFO : Skipping line #243 with OOV words: situation\tisolation\t3.88\n", "2025-03-27 14:18:01,733 : INFO : Skipping line #244 with OOV words: impartiality\tinterest\t5.16\n", "2025-03-27 14:18:01,733 : INFO : Skipping line #245 with OOV words: direction\tcombination\t2.25\n", "2025-03-27 14:18:01,733 : INFO : Skipping line #246 with OOV words: street\tplace\t6.44\n", "2025-03-27 14:18:01,733 : INFO : Skipping line #247 with OOV words: street\tavenue\t8.88\n", "2025-03-27 14:18:01,734 : INFO : Skipping line #248 with OOV words: street\tblock\t6.88\n", "2025-03-27 14:18:01,734 : INFO : Skipping line #249 with OOV words: street\tchildren\t4.94\n", "2025-03-27 14:18:01,734 : INFO : Skipping line #250 with OOV words: listing\tproximity\t2.56\n", "2025-03-27 14:18:01,734 : INFO : Skipping line #251 with OOV words: listing\tcategory\t6.38\n", "2025-03-27 14:18:01,734 : INFO : Skipping line #252 with OOV words: cell\tphone\t7.81\n", "2025-03-27 14:18:01,735 : INFO : Skipping line #253 with OOV words: production\thike\t1.75\n", "2025-03-27 14:18:01,735 : INFO : Skipping line #254 with OOV words: benchmark\tindex\t4.25\n", "2025-03-27 14:18:01,735 : INFO : Skipping line #256 with OOV words: media\tgain\t2.88\n", "2025-03-27 14:18:01,735 : INFO : Skipping line #257 with OOV words: dividend\tpayment\t7.63\n", "2025-03-27 14:18:01,735 : INFO : Skipping line #258 with OOV words: dividend\tcalculation\t6.48\n", "2025-03-27 14:18:01,736 : INFO : Skipping line #259 with OOV words: calculation\tcomputation\t8.44\n", "2025-03-27 14:18:01,736 : INFO : Skipping line #260 with OOV words: currency\tmarket\t7.50\n", "2025-03-27 14:18:01,736 : INFO : Skipping line #261 with OOV words: OPEC\toil\t8.59\n", "2025-03-27 14:18:01,736 : INFO : Skipping line #262 with OOV words: oil\tstock\t6.34\n", "2025-03-27 14:18:01,737 : INFO : Skipping line #263 with OOV words: announcement\tproduction\t3.38\n", "2025-03-27 14:18:01,737 : INFO : Skipping line #264 with OOV words: announcement\twarning\t6.00\n", "2025-03-27 14:18:01,737 : INFO : Skipping line #265 with OOV words: profit\twarning\t3.88\n", "2025-03-27 14:18:01,737 : INFO : Skipping line #266 with OOV words: profit\tloss\t7.63\n", "2025-03-27 14:18:01,738 : INFO : Skipping line #267 with OOV words: dollar\tyen\t7.78\n", "2025-03-27 14:18:01,738 : INFO : Skipping line #268 with OOV words: dollar\tbuck\t9.22\n", "2025-03-27 14:18:01,738 : INFO : Skipping line #269 with OOV words: dollar\tprofit\t7.38\n", "2025-03-27 14:18:01,738 : INFO : Skipping line #270 with OOV words: dollar\tloss\t6.09\n", "2025-03-27 14:18:01,738 : INFO : Skipping line #271 with OOV words: computer\tsoftware\t8.50\n", "2025-03-27 14:18:01,739 : INFO : Skipping line #272 with OOV words: network\thardware\t8.31\n", "2025-03-27 14:18:01,739 : INFO : Skipping line #273 with OOV words: phone\tequipment\t7.13\n", "2025-03-27 14:18:01,739 : INFO : Skipping line #274 with OOV words: equipment\tmaker\t5.91\n", "2025-03-27 14:18:01,739 : INFO : Skipping line #275 with OOV words: luxury\tcar\t6.47\n", "2025-03-27 14:18:01,739 : INFO : Skipping line #277 with OOV words: report\tgain\t3.63\n", "2025-03-27 14:18:01,740 : INFO : Skipping line #278 with OOV words: investor\tearning\t7.13\n", "2025-03-27 14:18:01,740 : INFO : Skipping line #279 with OOV words: liquid\twater\t7.89\n", "2025-03-27 14:18:01,740 : INFO : Skipping line #280 with OOV words: baseball\tseason\t5.97\n", "2025-03-27 14:18:01,740 : INFO : Skipping line #283 with OOV words: marathon\tsprint\t7.47\n", "2025-03-27 14:18:01,741 : INFO : Skipping line #285 with OOV words: game\tdefeat\t6.97\n", "2025-03-27 14:18:01,741 : INFO : Skipping line #287 with OOV words: seafood\tsea\t7.47\n", "2025-03-27 14:18:01,741 : INFO : Skipping line #288 with OOV words: seafood\tfood\t8.34\n", "2025-03-27 14:18:01,741 : INFO : Skipping line #289 with OOV words: seafood\tlobster\t8.70\n", "2025-03-27 14:18:01,741 : INFO : Skipping line #290 with OOV words: lobster\tfood\t7.81\n", "2025-03-27 14:18:01,742 : INFO : Skipping line #291 with OOV words: lobster\twine\t5.70\n", "2025-03-27 14:18:01,742 : INFO : Skipping line #292 with OOV words: food\tpreparation\t6.22\n", "2025-03-27 14:18:01,742 : INFO : Skipping line #293 with OOV words: video\tarchive\t6.34\n", "2025-03-27 14:18:01,742 : INFO : Skipping line #298 with OOV words: championship\ttournament\t8.36\n", "2025-03-27 14:18:01,742 : INFO : Skipping line #299 with OOV words: fighting\tdefeating\t7.41\n", "2025-03-27 14:18:01,743 : INFO : Skipping line #301 with OOV words: day\tsummer\t3.94\n", "2025-03-27 14:18:01,743 : INFO : Skipping line #302 with OOV words: summer\tdrought\t7.16\n", "2025-03-27 14:18:01,743 : INFO : Skipping line #303 with OOV words: summer\tnature\t5.63\n", "2025-03-27 14:18:01,743 : INFO : Skipping line #304 with OOV words: day\tdawn\t7.53\n", "2025-03-27 14:18:01,743 : INFO : Skipping line #305 with OOV words: nature\tenvironment\t8.31\n", "2025-03-27 14:18:01,744 : INFO : Skipping line #306 with OOV words: environment\tecology\t8.81\n", "2025-03-27 14:18:01,744 : INFO : Skipping line #307 with OOV words: nature\tman\t6.25\n", "2025-03-27 14:18:01,744 : INFO : Skipping line #311 with OOV words: soap\topera\t7.94\n", "2025-03-27 14:18:01,744 : INFO : Skipping line #312 with OOV words: opera\tperformance\t6.88\n", "2025-03-27 14:18:01,744 : INFO : Skipping line #313 with OOV words: life\tlesson\t5.94\n", "2025-03-27 14:18:01,745 : INFO : Skipping line #315 with OOV words: production\tcrew\t6.25\n", "2025-03-27 14:18:01,745 : INFO : Skipping line #316 with OOV words: television\tfilm\t7.72\n", "2025-03-27 14:18:01,745 : INFO : Skipping line #317 with OOV words: lover\tquarrel\t6.19\n", "2025-03-27 14:18:01,745 : INFO : Skipping line #318 with OOV words: viewer\tserial\t2.97\n", "2025-03-27 14:18:01,745 : INFO : Skipping line #319 with OOV words: possibility\tgirl\t1.94\n", "2025-03-27 14:18:01,746 : INFO : Skipping line #320 with OOV words: population\tdevelopment\t3.75\n", "2025-03-27 14:18:01,746 : INFO : Skipping line #321 with OOV words: morality\timportance\t3.31\n", "2025-03-27 14:18:01,746 : INFO : Skipping line #322 with OOV words: morality\tmarriage\t3.69\n", "2025-03-27 14:18:01,746 : INFO : Skipping line #323 with OOV words: Mexico\tBrazil\t7.44\n", "2025-03-27 14:18:01,747 : INFO : Skipping line #324 with OOV words: gender\tequality\t6.41\n", "2025-03-27 14:18:01,747 : INFO : Skipping line #325 with OOV words: change\tattitude\t5.44\n", "2025-03-27 14:18:01,747 : INFO : Skipping line #327 with OOV words: opera\tindustry\t2.63\n", "2025-03-27 14:18:01,748 : INFO : Skipping line #328 with OOV words: sugar\tapproach\t0.88\n", "2025-03-27 14:18:01,748 : INFO : Skipping line #329 with OOV words: practice\tinstitution\t3.19\n", "2025-03-27 14:18:01,748 : INFO : Skipping line #330 with OOV words: ministry\tculture\t4.69\n", "2025-03-27 14:18:01,748 : INFO : Skipping line #331 with OOV words: problem\tchallenge\t6.75\n", "2025-03-27 14:18:01,748 : INFO : Skipping line #332 with OOV words: size\tprominence\t5.31\n", "2025-03-27 14:18:01,748 : INFO : Skipping line #333 with OOV words: country\tcitizen\t7.31\n", "2025-03-27 14:18:01,749 : INFO : Skipping line #334 with OOV words: planet\tpeople\t5.75\n", "2025-03-27 14:18:01,749 : INFO : Skipping line #335 with OOV words: development\tissue\t3.97\n", "2025-03-27 14:18:01,749 : INFO : Skipping line #336 with OOV words: experience\tmusic\t3.47\n", "2025-03-27 14:18:01,749 : INFO : Skipping line #337 with OOV words: music\tproject\t3.63\n", "2025-03-27 14:18:01,750 : INFO : Skipping line #338 with OOV words: glass\tmetal\t5.56\n", "2025-03-27 14:18:01,750 : INFO : Skipping line #339 with OOV words: aluminum\tmetal\t7.83\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:01,750 : INFO : Skipping line #340 with OOV words: chance\tcredibility\t3.88\n", "2025-03-27 14:18:01,750 : INFO : Skipping line #341 with OOV words: exhibit\tmemorabilia\t5.31\n", "2025-03-27 14:18:01,750 : INFO : Skipping line #342 with OOV words: concert\tvirtuoso\t6.81\n", "2025-03-27 14:18:01,751 : INFO : Skipping line #343 with OOV words: rock\tjazz\t7.59\n", "2025-03-27 14:18:01,751 : INFO : Skipping line #344 with OOV words: museum\ttheater\t7.19\n", "2025-03-27 14:18:01,751 : INFO : Skipping line #345 with OOV words: observation\tarchitecture\t4.38\n", "2025-03-27 14:18:01,751 : INFO : Skipping line #347 with OOV words: preservation\tworld\t6.19\n", "2025-03-27 14:18:01,752 : INFO : Skipping line #348 with OOV words: admission\tticket\t7.69\n", "2025-03-27 14:18:01,752 : INFO : Skipping line #349 with OOV words: shower\tthunderstorm\t6.31\n", "2025-03-27 14:18:01,752 : INFO : Skipping line #350 with OOV words: shower\tflood\t6.03\n", "2025-03-27 14:18:01,752 : INFO : Skipping line #354 with OOV words: architecture\tcentury\t3.78\n", "2025-03-27 14:18:01,754 : INFO : Pearson correlation coefficient against /Users/vip/Library/Python/3.9/lib/python/site-packages/gensim/test/test_data/wordsim353.tsv: 0.1715\n", "2025-03-27 14:18:01,754 : INFO : Spearman rank-order correlation coefficient against /Users/vip/Library/Python/3.9/lib/python/site-packages/gensim/test/test_data/wordsim353.tsv: 0.1426\n", "2025-03-27 14:18:01,754 : INFO : Pairs with unknown words ratio: 83.0%\n" ] }, { "data": { "text/plain": [ "(PearsonRResult(statistic=0.17147094626235634, pvalue=0.19019767223751688),\n", " SignificanceResult(statistic=0.14264276870117013, pvalue=0.276933183632982),\n", " 83.0028328611898)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.wv.evaluate_word_pairs(datapath('wordsim353.tsv'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ".. Important::\n", " Good performance on Google's or WS-353 test set doesn’t mean word2vec will\n", " work well in your application, or vice versa. It’s always best to evaluate\n", " directly on your intended task. For an example of how to use word2vec in a\n", " classifier pipeline, see this `tutorial\n", " `_.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Online training / Resuming training\n", "-----------------------------------\n", "\n", "Advanced users can load a model and continue training it with more sentences\n", "and `new vocabulary words `_:\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:17,184 : INFO : loading Word2Vec object from /var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4\n", "2025-03-27 14:18:17,191 : INFO : loading wv recursively from /var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4.wv.* with mmap=None\n", "2025-03-27 14:18:17,192 : INFO : setting ignored attribute cum_table to None\n", "2025-03-27 14:18:17,201 : INFO : Word2Vec lifecycle event {'fname': '/var/folders/w_/5zj48w1d0xb7ycgdm6pk40v00000gn/T/gensim-model-k8l_1pq4', 'datetime': '2025-03-27T14:18:17.201501', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'loaded'}\n", "2025-03-27 14:18:17,202 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:17,202 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:17,203 : INFO : collected 13 word types from a corpus of 13 raw words and 1 sentences\n", "2025-03-27 14:18:17,203 : INFO : Updating model with new vocabulary\n", "2025-03-27 14:18:17,207 : INFO : Word2Vec lifecycle event {'msg': 'added 0 new unique words (0.00% of original 13) and increased the count of 0 pre-existing words (0.00% of original 13)', 'datetime': '2025-03-27T14:18:17.207446', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:17,208 : INFO : deleting the raw counts dictionary of 13 items\n", "2025-03-27 14:18:17,208 : INFO : sample=0.001 downsamples 0 most-common words\n", "2025-03-27 14:18:17,208 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 0 word corpus (0.0%% of prior 0)', 'datetime': '2025-03-27T14:18:17.208794', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:17,216 : INFO : estimated required memory for 1750 words and 100 dimensions: 2275000 bytes\n", "2025-03-27 14:18:17,216 : INFO : updating layer weights\n", "2025-03-27 14:18:17,217 : INFO : Word2Vec lifecycle event {'update': True, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:17.217470', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:17,217 : WARNING : Effective 'alpha' higher than previous training cycles\n", "2025-03-27 14:18:17,218 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1750 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:17.218191', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:17,219 : INFO : EPOCH 0: training on 13 raw words (6 effective words) took 0.0s, 19329 effective words/s\n", "2025-03-27 14:18:17,221 : INFO : EPOCH 1: training on 13 raw words (4 effective words) took 0.0s, 19386 effective words/s\n", "2025-03-27 14:18:17,222 : INFO : EPOCH 2: training on 13 raw words (5 effective words) took 0.0s, 24470 effective words/s\n", "2025-03-27 14:18:17,224 : INFO : EPOCH 3: training on 13 raw words (5 effective words) took 0.0s, 13587 effective words/s\n", "2025-03-27 14:18:17,225 : INFO : EPOCH 4: training on 13 raw words (6 effective words) took 0.0s, 51046 effective words/s\n", "2025-03-27 14:18:17,226 : INFO : Word2Vec lifecycle event {'msg': 'training on 65 raw words (26 effective words) took 0.0s, 3454 effective words/s', 'datetime': '2025-03-27T14:18:17.226029', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] } ], "source": [ "model = gensim.models.Word2Vec.load(temporary_filepath)\n", "more_sentences = [\n", " ['Advanced', 'users', 'can', 'load', 'a', 'model',\n", " 'and', 'continue', 'training', 'it', 'with', 'more', 'sentences'],\n", "]\n", "model.build_vocab(more_sentences, update=True)\n", "model.train(more_sentences, total_examples=model.corpus_count, epochs=model.epochs)\n", "\n", "# cleaning up temporary file\n", "import os\n", "os.remove(temporary_filepath)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You may need to tweak the ``total_words`` parameter to ``train()``,\n", "depending on what learning rate decay you want to simulate.\n", "\n", "Note that it’s not possible to resume training with models generated by the C\n", "tool, ``KeyedVectors.load_word2vec_format()``. You can still use them for\n", "querying/similarity, but information vital for training (the vocab tree) is\n", "missing there.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Training Loss Computation\n", "-------------------------\n", "\n", "The parameter ``compute_loss`` can be used to toggle computation of loss\n", "while training the Word2Vec model. The computed loss is stored in the model\n", "attribute ``running_training_loss`` and can be retrieved using the function\n", "``get_latest_training_loss`` as follows :\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:27,135 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:27,141 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:27,196 : INFO : collected 6981 word types from a corpus of 58152 raw words and 300 sentences\n", "2025-03-27 14:18:27,197 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:27,209 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=1 retains 6981 unique words (100.00% of original 6981, drops 0)', 'datetime': '2025-03-27T14:18:27.209211', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:27,209 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=1 leaves 58152 word corpus (100.00% of original 58152, drops 0)', 'datetime': '2025-03-27T14:18:27.209743', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:27,226 : INFO : deleting the raw counts dictionary of 6981 items\n", "2025-03-27 14:18:27,227 : INFO : sample=0.001 downsamples 43 most-common words\n", "2025-03-27 14:18:27,234 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 45723.4541622429 word corpus (78.6%% of prior 58152)', 'datetime': '2025-03-27T14:18:27.234194', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:27,257 : INFO : estimated required memory for 6981 words and 100 dimensions: 9075300 bytes\n", "2025-03-27 14:18:27,258 : INFO : resetting layer weights\n", "2025-03-27 14:18:27,260 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:27.260906', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:27,261 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 6981 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:27.261234', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:27,389 : INFO : EPOCH 0: training on 58152 raw words (45629 effective words) took 0.1s, 359377 effective words/s\n", "2025-03-27 14:18:27,512 : INFO : EPOCH 1: training on 58152 raw words (45777 effective words) took 0.1s, 374436 effective words/s\n", "2025-03-27 14:18:27,629 : INFO : EPOCH 2: training on 58152 raw words (45684 effective words) took 0.1s, 394596 effective words/s\n", "2025-03-27 14:18:27,750 : INFO : EPOCH 3: training on 58152 raw words (45798 effective words) took 0.1s, 380392 effective words/s\n", "2025-03-27 14:18:27,865 : INFO : EPOCH 4: training on 58152 raw words (45627 effective words) took 0.1s, 398818 effective words/s\n", "2025-03-27 14:18:27,866 : INFO : Word2Vec lifecycle event {'msg': 'training on 290760 raw words (228515 effective words) took 0.6s, 377822 effective words/s', 'datetime': '2025-03-27T14:18:27.866304', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:27,866 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:27.866526', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "1374090.375\n" ] } ], "source": [ "# instantiating and training the Word2Vec model\n", "model_with_loss = gensim.models.Word2Vec(\n", " sentences,\n", " min_count=1,\n", " compute_loss=True,\n", " hs=0,\n", " sg=1,\n", " seed=42,\n", ")\n", "\n", "# getting the training loss value\n", "training_loss = model_with_loss.get_latest_training_loss()\n", "print(training_loss)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Benchmarks\n", "----------\n", "\n", "Let's run some benchmarks to see effect of the training loss computation code\n", "on training time.\n", "\n", "We'll use the following data for the benchmarks:\n", "\n", "#. Lee Background corpus: included in gensim's test data\n", "#. Text8 corpus. To demonstrate the effect of corpus size, we'll look at the\n", " first 1MB, 10MB, 50MB of the corpus, as well as the entire thing.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "import io\n", "import os\n", "\n", "import gensim.models.word2vec\n", "import gensim.downloader as api\n", "import smart_open\n", "\n", "\n", "def head(path, size):\n", " with smart_open.open(path) as fin:\n", " return io.StringIO(fin.read(size))\n", "\n", "\n", "def generate_input_data():\n", " lee_path = datapath('lee_background.cor')\n", " ls = gensim.models.word2vec.LineSentence(lee_path)\n", " ls.name = '25kB'\n", " yield ls\n", "\n", " text8_path = api.load('text8').fn\n", " labels = ('1MB', '10MB', '50MB', '100MB')\n", " sizes = (1024 ** 2, 10 * 1024 ** 2, 50 * 1024 ** 2, 100 * 1024 ** 2)\n", " for l, s in zip(labels, sizes):\n", " ls = gensim.models.word2vec.LineSentence(head(text8_path, s))\n", " ls.name = l\n", " yield ls\n", "\n", "\n", "input_data = list(generate_input_data())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now compare the training time taken for different combinations of input\n", "data and model training parameters like ``hs`` and ``sg``.\n", "\n", "For each combination, we repeat the test several times to obtain the mean and\n", "standard deviation of the test duration.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:51,580 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:51,581 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:51,591 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:51,591 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:51,598 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:51.598350', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,599 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:51.598999', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,603 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:51,603 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:51,604 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:51.604219', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,612 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:51,612 : INFO : resetting layer weights\n", "2025-03-27 14:18:51,614 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:51.614136', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:51,614 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:51.614380', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:51,640 : INFO : EPOCH 0: training on 59890 raw words (32668 effective words) took 0.0s, 1316453 effective words/s\n", "2025-03-27 14:18:51,662 : INFO : EPOCH 1: training on 59890 raw words (32652 effective words) took 0.0s, 1591555 effective words/s\n", "2025-03-27 14:18:51,685 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.0s, 1532284 effective words/s\n", "2025-03-27 14:18:51,709 : INFO : EPOCH 3: training on 59890 raw words (32654 effective words) took 0.0s, 1410812 effective words/s\n", "2025-03-27 14:18:51,730 : INFO : EPOCH 4: training on 59890 raw words (32562 effective words) took 0.0s, 1637718 effective words/s\n", "2025-03-27 14:18:51,730 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163104 effective words) took 0.1s, 1403749 effective words/s', 'datetime': '2025-03-27T14:18:51.730871', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:51,731 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:51.731153', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:51,731 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:51,732 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:51,740 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:51,741 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:51,745 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:51.745826', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,746 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:51.746259', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,750 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:51,750 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:51,750 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:51.750835', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,757 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:51,757 : INFO : resetting layer weights\n", "2025-03-27 14:18:51,758 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:51.758705', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:51,758 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:51.758926', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:51,782 : INFO : EPOCH 0: training on 59890 raw words (32517 effective words) took 0.0s, 1420191 effective words/s\n", "2025-03-27 14:18:51,806 : INFO : EPOCH 1: training on 59890 raw words (32567 effective words) took 0.0s, 1432107 effective words/s\n", "2025-03-27 14:18:51,828 : INFO : EPOCH 2: training on 59890 raw words (32610 effective words) took 0.0s, 1753289 effective words/s\n", "2025-03-27 14:18:51,852 : INFO : EPOCH 3: training on 59890 raw words (32579 effective words) took 0.0s, 1473119 effective words/s\n", "2025-03-27 14:18:51,874 : INFO : EPOCH 4: training on 59890 raw words (32632 effective words) took 0.0s, 1533059 effective words/s\n", "2025-03-27 14:18:51,874 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162905 effective words) took 0.1s, 1406975 effective words/s', 'datetime': '2025-03-27T14:18:51.874917', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:51,875 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:51.875212', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:51,875 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:51,876 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:51,885 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:51,885 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:51,889 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:51.889966', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:51,890 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:51.890416', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,894 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:51,894 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:51,895 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:51.895118', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:51,901 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:51,901 : INFO : resetting layer weights\n", "2025-03-27 14:18:51,902 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:51.902722', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:51,902 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:51.902937', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:51,925 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.0s, 1478911 effective words/s\n", "2025-03-27 14:18:51,946 : INFO : EPOCH 1: training on 59890 raw words (32552 effective words) took 0.0s, 1656404 effective words/s\n", "2025-03-27 14:18:51,968 : INFO : EPOCH 2: training on 59890 raw words (32603 effective words) took 0.0s, 1589053 effective words/s\n", "2025-03-27 14:18:51,991 : INFO : EPOCH 3: training on 59890 raw words (32598 effective words) took 0.0s, 1447401 effective words/s\n", "2025-03-27 14:18:52,013 : INFO : EPOCH 4: training on 59890 raw words (32581 effective words) took 0.0s, 1583229 effective words/s\n", "2025-03-27 14:18:52,014 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162877 effective words) took 0.1s, 1468784 effective words/s', 'datetime': '2025-03-27T14:18:52.014013', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,014 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:52.014241', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:52,014 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:52,015 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:52,024 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:52,024 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:52,028 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:52.028376', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,028 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:52.028687', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,032 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:52,032 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:52,033 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:52.032997', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,038 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:52,039 : INFO : resetting layer weights\n", "2025-03-27 14:18:52,040 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:52.040430', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:52,040 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:52.040733', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,062 : INFO : EPOCH 0: training on 59890 raw words (32517 effective words) took 0.0s, 1917026 effective words/s\n", "2025-03-27 14:18:52,082 : INFO : EPOCH 1: training on 59890 raw words (32567 effective words) took 0.0s, 1651781 effective words/s\n", "2025-03-27 14:18:52,104 : INFO : EPOCH 2: training on 59890 raw words (32654 effective words) took 0.0s, 1589118 effective words/s\n", "2025-03-27 14:18:52,126 : INFO : EPOCH 3: training on 59890 raw words (32647 effective words) took 0.0s, 1528835 effective words/s\n", "2025-03-27 14:18:52,148 : INFO : EPOCH 4: training on 59890 raw words (32528 effective words) took 0.0s, 1532328 effective words/s\n", "2025-03-27 14:18:52,148 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162913 effective words) took 0.1s, 1510800 effective words/s', 'datetime': '2025-03-27T14:18:52.148813', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,149 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:52.149018', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:52,149 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:52,149 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:52,158 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:52,158 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:52,163 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:52.163143', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,163 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:52.163573', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,167 : INFO : deleting the raw counts dictionary of 10781 items\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:52,167 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:52,168 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:52.168036', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,173 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:52,174 : INFO : resetting layer weights\n", "2025-03-27 14:18:52,175 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:52.175021', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:52,175 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:52.175210', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,195 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.0s, 1665825 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #0: {'train_data': '25kB', 'compute_loss': True, 'sg': 0, 'hs': 0, 'train_time_mean': 0.14458235104878744, 'train_time_std': 0.004779222957497731}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:52,216 : INFO : EPOCH 1: training on 59890 raw words (32692 effective words) took 0.0s, 1654171 effective words/s\n", "2025-03-27 14:18:52,236 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.0s, 1656253 effective words/s\n", "2025-03-27 14:18:52,257 : INFO : EPOCH 3: training on 59890 raw words (32601 effective words) took 0.0s, 1662924 effective words/s\n", "2025-03-27 14:18:52,278 : INFO : EPOCH 4: training on 59890 raw words (32650 effective words) took 0.0s, 1573516 effective words/s\n", "2025-03-27 14:18:52,278 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163054 effective words) took 0.1s, 1575040 effective words/s', 'datetime': '2025-03-27T14:18:52.278919', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,279 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:52.279157', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:52,279 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:52,279 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:52,288 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:52,288 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:52,293 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:52.293132', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,293 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:52.293604', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,297 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:52,298 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:52,298 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:52.298438', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,304 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:52,304 : INFO : resetting layer weights\n", "2025-03-27 14:18:52,305 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:52.305559', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:52,305 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:52.305752', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,326 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.0s, 1637926 effective words/s\n", "2025-03-27 14:18:52,345 : INFO : EPOCH 1: training on 59890 raw words (32552 effective words) took 0.0s, 1788007 effective words/s\n", "2025-03-27 14:18:52,365 : INFO : EPOCH 2: training on 59890 raw words (32603 effective words) took 0.0s, 1649198 effective words/s\n", "2025-03-27 14:18:52,387 : INFO : EPOCH 3: training on 59890 raw words (32587 effective words) took 0.0s, 1589041 effective words/s\n", "2025-03-27 14:18:52,409 : INFO : EPOCH 4: training on 59890 raw words (32592 effective words) took 0.0s, 1545692 effective words/s\n", "2025-03-27 14:18:52,409 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162877 effective words) took 0.1s, 1572361 effective words/s', 'datetime': '2025-03-27T14:18:52.409519', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,409 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:52.409763', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:52,410 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:52,410 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:52,419 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:52,419 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:52,423 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:52.423991', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,424 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:52.424304', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,428 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:52,428 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:52,428 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:52.428605', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,429 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:52,450 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:52,456 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:52,456 : INFO : resetting layer weights\n", "2025-03-27 14:18:52,457 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:52.457429', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:52,457 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:52,457 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:52.457822', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,494 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.0s, 900347 effective words/s\n", "2025-03-27 14:18:52,531 : INFO : EPOCH 1: training on 59890 raw words (32552 effective words) took 0.0s, 995122 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:52,569 : INFO : EPOCH 2: training on 59890 raw words (32630 effective words) took 0.0s, 870937 effective words/s\n", "2025-03-27 14:18:52,603 : INFO : EPOCH 3: training on 59890 raw words (32560 effective words) took 0.0s, 971933 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #1: {'train_data': '25kB', 'compute_loss': False, 'sg': 0, 'hs': 0, 'train_time_mean': 0.131805419921875, 'train_time_std': 0.002030210634488772}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:52,640 : INFO : EPOCH 4: training on 59890 raw words (32594 effective words) took 0.0s, 913596 effective words/s\n", "2025-03-27 14:18:52,640 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162879 effective words) took 0.2s, 891681 effective words/s', 'datetime': '2025-03-27T14:18:52.640669', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,640 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:52.640935', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:52,641 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:52,641 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:52,650 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:52,650 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:52,654 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:52.654733', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,655 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:52.655048', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,658 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:52,659 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:52,659 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:52.659733', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,660 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:52,735 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:52,741 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:52,741 : INFO : resetting layer weights\n", "2025-03-27 14:18:52,742 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:52.742647', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:52,742 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:52,743 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:52.743075', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,782 : INFO : EPOCH 0: training on 59890 raw words (32517 effective words) took 0.0s, 852306 effective words/s\n", "2025-03-27 14:18:52,821 : INFO : EPOCH 1: training on 59890 raw words (32567 effective words) took 0.0s, 853252 effective words/s\n", "2025-03-27 14:18:52,856 : INFO : EPOCH 2: training on 59890 raw words (32654 effective words) took 0.0s, 943540 effective words/s\n", "2025-03-27 14:18:52,897 : INFO : EPOCH 3: training on 59890 raw words (32527 effective words) took 0.0s, 813490 effective words/s\n", "2025-03-27 14:18:52,937 : INFO : EPOCH 4: training on 59890 raw words (32643 effective words) took 0.0s, 873387 effective words/s\n", "2025-03-27 14:18:52,937 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162908 effective words) took 0.2s, 837459 effective words/s', 'datetime': '2025-03-27T14:18:52.937817', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:52,938 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:52.938142', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:52,938 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:52,939 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:52,947 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:52,948 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:52,952 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:52.952422', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,952 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:52.952822', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,956 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:52,957 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:52,957 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:52.957368', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:52,958 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:52,980 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:52,986 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:52,986 : INFO : resetting layer weights\n", "2025-03-27 14:18:52,987 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:52.987659', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:52,987 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:52,988 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:52.988106', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,030 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.0s, 790667 effective words/s\n", "2025-03-27 14:18:53,069 : INFO : EPOCH 1: training on 59890 raw words (32692 effective words) took 0.0s, 851394 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:53,107 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.0s, 892553 effective words/s\n", "2025-03-27 14:18:53,145 : INFO : EPOCH 3: training on 59890 raw words (32745 effective words) took 0.0s, 868695 effective words/s\n", "2025-03-27 14:18:53,182 : INFO : EPOCH 4: training on 59890 raw words (32469 effective words) took 0.0s, 902046 effective words/s\n", "2025-03-27 14:18:53,183 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163017 effective words) took 0.2s, 837489 effective words/s', 'datetime': '2025-03-27T14:18:53.182989', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,183 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:53.183281', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:53,184 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:53,184 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:53,193 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:53,193 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:53,198 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:53.198678', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,199 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:53.199080', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,203 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:53,203 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:53,204 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:53.203998', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,204 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:53,226 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:53,231 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:53,232 : INFO : resetting layer weights\n", "2025-03-27 14:18:53,233 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:53.233346', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:53,233 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:53,233 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:53.233771', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,273 : INFO : EPOCH 0: training on 59890 raw words (32668 effective words) took 0.0s, 845196 effective words/s\n", "2025-03-27 14:18:53,311 : INFO : EPOCH 1: training on 59890 raw words (32652 effective words) took 0.0s, 889269 effective words/s\n", "2025-03-27 14:18:53,347 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.0s, 913981 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #2: {'train_data': '25kB', 'compute_loss': True, 'sg': 0, 'hs': 1, 'train_time_mean': 0.25787798563639325, 'train_time_std': 0.02856204570085011}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:53,385 : INFO : EPOCH 3: training on 59890 raw words (32585 effective words) took 0.0s, 891907 effective words/s\n", "2025-03-27 14:18:53,424 : INFO : EPOCH 4: training on 59890 raw words (32720 effective words) took 0.0s, 852773 effective words/s\n", "2025-03-27 14:18:53,424 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163193 effective words) took 0.2s, 855372 effective words/s', 'datetime': '2025-03-27T14:18:53.424805', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,425 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:53.425072', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:53,425 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:53,426 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:53,434 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:53,435 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:53,439 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:53.439390', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,439 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:53.439738', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,443 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:53,444 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:53,444 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:53.444336', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,444 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:53,465 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:53,471 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:53,471 : INFO : resetting layer weights\n", "2025-03-27 14:18:53,472 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:53.472810', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:53,473 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:53,473 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:53.473253', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,510 : INFO : EPOCH 0: training on 59890 raw words (32517 effective words) took 0.0s, 1034826 effective words/s\n", "2025-03-27 14:18:53,547 : INFO : EPOCH 1: training on 59890 raw words (32617 effective words) took 0.0s, 892260 effective words/s\n", "2025-03-27 14:18:53,586 : INFO : EPOCH 2: training on 59890 raw words (32644 effective words) took 0.0s, 861061 effective words/s\n", "2025-03-27 14:18:53,623 : INFO : EPOCH 3: training on 59890 raw words (32565 effective words) took 0.0s, 908195 effective words/s\n", "2025-03-27 14:18:53,663 : INFO : EPOCH 4: training on 59890 raw words (32582 effective words) took 0.0s, 842844 effective words/s\n", "2025-03-27 14:18:53,663 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162925 effective words) took 0.2s, 856415 effective words/s', 'datetime': '2025-03-27T14:18:53.663719', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,664 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:53.664055', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:53,664 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:53,665 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:53,674 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:53,674 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:53,678 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:53.678634', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,679 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:53.679058', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,683 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:53,684 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:53,684 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:53.684493', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,685 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:53,706 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:53,712 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:53,713 : INFO : resetting layer weights\n", "2025-03-27 14:18:53,715 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:53.715007', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:53,715 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:53,715 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:53.715595', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,757 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.0s, 800675 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:53,799 : INFO : EPOCH 1: training on 59890 raw words (32692 effective words) took 0.0s, 857711 effective words/s\n", "2025-03-27 14:18:53,836 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.0s, 910614 effective words/s\n", "2025-03-27 14:18:53,874 : INFO : EPOCH 3: training on 59890 raw words (32745 effective words) took 0.0s, 877257 effective words/s\n", "2025-03-27 14:18:53,912 : INFO : EPOCH 4: training on 59890 raw words (32469 effective words) took 0.0s, 894268 effective words/s\n", "2025-03-27 14:18:53,912 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163017 effective words) took 0.2s, 829090 effective words/s', 'datetime': '2025-03-27T14:18:53.912462', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:53,912 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:53.912768', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:53,913 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:53,913 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:53,922 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:53,923 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:53,927 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:53.927393', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,927 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:53.927857', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,931 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:53,932 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:53,932 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:53.932671', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:53,938 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:53,938 : INFO : resetting layer weights\n", "2025-03-27 14:18:53,939 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:53.939746', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:53,940 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:53.940005', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:54,011 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.1s, 461777 effective words/s\n", "2025-03-27 14:18:54,084 : INFO : EPOCH 1: training on 59890 raw words (32692 effective words) took 0.1s, 453880 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #3: {'train_data': '25kB', 'compute_loss': False, 'sg': 0, 'hs': 1, 'train_time_mean': 0.24313569068908691, 'train_time_std': 0.004160162300211008}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:54,155 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.1s, 463317 effective words/s\n", "2025-03-27 14:18:54,224 : INFO : EPOCH 3: training on 59890 raw words (32601 effective words) took 0.1s, 481066 effective words/s\n", "2025-03-27 14:18:54,294 : INFO : EPOCH 4: training on 59890 raw words (32650 effective words) took 0.1s, 476250 effective words/s\n", "2025-03-27 14:18:54,295 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163054 effective words) took 0.4s, 459665 effective words/s', 'datetime': '2025-03-27T14:18:54.295090', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:54,295 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:54.295386', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:54,295 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:54,296 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:54,305 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:54,305 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:54,309 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:54.309954', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:54,310 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:54.310263', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:54,314 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:54,314 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:54,314 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:54.314929', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:54,320 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:54,321 : INFO : resetting layer weights\n", "2025-03-27 14:18:54,321 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:54.321970', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:54,322 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:54.322227', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:54,399 : INFO : EPOCH 0: training on 59890 raw words (32596 effective words) took 0.1s, 428191 effective words/s\n", "2025-03-27 14:18:54,467 : INFO : EPOCH 1: training on 59890 raw words (32570 effective words) took 0.1s, 491364 effective words/s\n", "2025-03-27 14:18:54,531 : INFO : EPOCH 2: training on 59890 raw words (32503 effective words) took 0.1s, 509023 effective words/s\n", "2025-03-27 14:18:54,593 : INFO : EPOCH 3: training on 59890 raw words (32593 effective words) took 0.1s, 535172 effective words/s\n", "2025-03-27 14:18:54,655 : INFO : EPOCH 4: training on 59890 raw words (32640 effective words) took 0.1s, 532929 effective words/s\n", "2025-03-27 14:18:54,656 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162902 effective words) took 0.3s, 487995 effective words/s', 'datetime': '2025-03-27T14:18:54.656403', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:54,656 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:54.656699', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:54,657 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:54,657 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:54,666 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:54,666 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:54,670 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:54.670832', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:54,671 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:54.671227', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:54,675 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:54,676 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:54,676 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:54.676566', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:54,682 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:54,682 : INFO : resetting layer weights\n", "2025-03-27 14:18:54,683 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:54.683469', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:54,683 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:54.683891', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:54,753 : INFO : EPOCH 0: training on 59890 raw words (32517 effective words) took 0.1s, 474485 effective words/s\n", "2025-03-27 14:18:54,818 : INFO : EPOCH 1: training on 59890 raw words (32567 effective words) took 0.1s, 511538 effective words/s\n", "2025-03-27 14:18:54,885 : INFO : EPOCH 2: training on 59890 raw words (32610 effective words) took 0.1s, 491425 effective words/s\n", "2025-03-27 14:18:54,948 : INFO : EPOCH 3: training on 59890 raw words (32521 effective words) took 0.1s, 527326 effective words/s\n", "2025-03-27 14:18:55,013 : INFO : EPOCH 4: training on 59890 raw words (32622 effective words) took 0.1s, 514643 effective words/s\n", "2025-03-27 14:18:55,013 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162837 effective words) took 0.3s, 494667 effective words/s', 'datetime': '2025-03-27T14:18:55.013575', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:55,013 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:55.013856', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:55,014 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:55,015 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:55,023 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:55,024 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:55,028 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:55.028517', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,028 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:55.028966', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,033 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:55,033 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:55,033 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:55.033786', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,040 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:55,040 : INFO : resetting layer weights\n", "2025-03-27 14:18:55,041 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:55.041981', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:55,042 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:55.042224', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:55,108 : INFO : EPOCH 0: training on 59890 raw words (32596 effective words) took 0.1s, 503421 effective words/s\n", "2025-03-27 14:18:55,172 : INFO : EPOCH 1: training on 59890 raw words (32570 effective words) took 0.1s, 518834 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #4: {'train_data': '25kB', 'compute_loss': True, 'sg': 1, 'hs': 0, 'train_time_mean': 0.3669389883677165, 'train_time_std': 0.011131627256245082}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:55,241 : INFO : EPOCH 2: training on 59890 raw words (32549 effective words) took 0.1s, 482330 effective words/s\n", "2025-03-27 14:18:55,303 : INFO : EPOCH 3: training on 59890 raw words (32574 effective words) took 0.1s, 529224 effective words/s\n", "2025-03-27 14:18:55,367 : INFO : EPOCH 4: training on 59890 raw words (32594 effective words) took 0.1s, 521298 effective words/s\n", "2025-03-27 14:18:55,367 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162883 effective words) took 0.3s, 500972 effective words/s', 'datetime': '2025-03-27T14:18:55.367731', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:55,368 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:55.368013', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:55,368 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:55,368 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:55,377 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:55,377 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:55,382 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:55.382375', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,382 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:55.382774', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,386 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:55,387 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:55,387 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:55.387607', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,393 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:55,393 : INFO : resetting layer weights\n", "2025-03-27 14:18:55,394 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:55.394887', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:55,395 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:55.395139', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:55,460 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.1s, 505604 effective words/s\n", "2025-03-27 14:18:55,522 : INFO : EPOCH 1: training on 59890 raw words (32692 effective words) took 0.1s, 538641 effective words/s\n", "2025-03-27 14:18:55,585 : INFO : EPOCH 2: training on 59890 raw words (32568 effective words) took 0.1s, 521698 effective words/s\n", "2025-03-27 14:18:55,648 : INFO : EPOCH 3: training on 59890 raw words (32637 effective words) took 0.1s, 523902 effective words/s\n", "2025-03-27 14:18:55,714 : INFO : EPOCH 4: training on 59890 raw words (32606 effective words) took 0.1s, 505209 effective words/s\n", "2025-03-27 14:18:55,714 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163046 effective words) took 0.3s, 510619 effective words/s', 'datetime': '2025-03-27T14:18:55.714725', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:55,715 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:55.715046', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:55,715 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:55,715 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:55,724 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:55,725 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:55,729 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:55.729398', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,729 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:55.729804', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,733 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:55,734 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:55,734 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:55.734606', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:55,740 : INFO : estimated required memory for 1762 words and 100 dimensions: 2290600 bytes\n", "2025-03-27 14:18:55,740 : INFO : resetting layer weights\n", "2025-03-27 14:18:55,741 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:55.741813', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:55,742 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:55.742140', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:55,807 : INFO : EPOCH 0: training on 59890 raw words (32596 effective words) took 0.1s, 503025 effective words/s\n", "2025-03-27 14:18:55,871 : INFO : EPOCH 1: training on 59890 raw words (32650 effective words) took 0.1s, 523388 effective words/s\n", "2025-03-27 14:18:55,934 : INFO : EPOCH 2: training on 59890 raw words (32617 effective words) took 0.1s, 526487 effective words/s\n", "2025-03-27 14:18:55,996 : INFO : EPOCH 3: training on 59890 raw words (32571 effective words) took 0.1s, 532672 effective words/s\n", "2025-03-27 14:18:56,059 : INFO : EPOCH 4: training on 59890 raw words (32548 effective words) took 0.1s, 523320 effective words/s\n", "2025-03-27 14:18:56,060 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162982 effective words) took 0.3s, 512957 effective words/s', 'datetime': '2025-03-27T14:18:56.060180', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:56,060 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:56.060455', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:56,061 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:56,061 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:56,070 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:56,070 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:56,075 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:56.075244', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:56,075 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:56.075720', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:56,079 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:56,080 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:56,080 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:56.080727', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:56,081 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:56,102 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:56,107 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:56,108 : INFO : resetting layer weights\n", "2025-03-27 14:18:56,109 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:56.109593', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:56,109 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:56,110 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:56.110046', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:56,237 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.1s, 256919 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #5: {'train_data': '25kB', 'compute_loss': False, 'sg': 1, 'hs': 0, 'train_time_mean': 0.3488934834798177, 'train_time_std': 0.0037324655418704265}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:56,381 : INFO : EPOCH 1: training on 59890 raw words (32552 effective words) took 0.1s, 227808 effective words/s\n", "2025-03-27 14:18:56,513 : INFO : EPOCH 2: training on 59890 raw words (32517 effective words) took 0.1s, 248850 effective words/s\n", "2025-03-27 14:18:56,642 : INFO : EPOCH 3: training on 59890 raw words (32769 effective words) took 0.1s, 255979 effective words/s\n", "2025-03-27 14:18:56,775 : INFO : EPOCH 4: training on 59890 raw words (32465 effective words) took 0.1s, 246746 effective words/s\n", "2025-03-27 14:18:56,775 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162846 effective words) took 0.7s, 244642 effective words/s', 'datetime': '2025-03-27T14:18:56.775931', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:56,776 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:56.776274', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:56,776 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:56,777 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:56,785 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:56,786 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:56,790 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:56.790655', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:56,791 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:56.791200', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:56,795 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:56,795 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:56,795 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:56.795865', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:56,796 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:56,817 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:56,823 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:56,823 : INFO : resetting layer weights\n", "2025-03-27 14:18:56,824 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:56.824623', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:56,824 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:56,825 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:56.825101', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:56,951 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.1s, 258942 effective words/s\n", "2025-03-27 14:18:57,084 : INFO : EPOCH 1: training on 59890 raw words (32552 effective words) took 0.1s, 247796 effective words/s\n", "2025-03-27 14:18:57,215 : INFO : EPOCH 2: training on 59890 raw words (32630 effective words) took 0.1s, 250316 effective words/s\n", "2025-03-27 14:18:57,343 : INFO : EPOCH 3: training on 59890 raw words (32560 effective words) took 0.1s, 256571 effective words/s\n", "2025-03-27 14:18:57,474 : INFO : EPOCH 4: training on 59890 raw words (32583 effective words) took 0.1s, 251418 effective words/s\n", "2025-03-27 14:18:57,474 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162868 effective words) took 0.6s, 250855 effective words/s', 'datetime': '2025-03-27T14:18:57.474621', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:57,474 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:57.474972', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:57,475 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:57,476 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:57,484 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:57,484 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:57,489 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:57.489178', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:57,489 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:57.489545', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:57,493 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:57,493 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:57,494 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:57.494512', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:57,495 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:57,516 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:57,522 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:57,522 : INFO : resetting layer weights\n", "2025-03-27 14:18:57,524 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:57.524596', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:57,524 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:57,525 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:57.525137', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:57,654 : INFO : EPOCH 0: training on 59890 raw words (32517 effective words) took 0.1s, 253960 effective words/s\n", "2025-03-27 14:18:57,784 : INFO : EPOCH 1: training on 59890 raw words (32567 effective words) took 0.1s, 252599 effective words/s\n", "2025-03-27 14:18:57,914 : INFO : EPOCH 2: training on 59890 raw words (32654 effective words) took 0.1s, 251962 effective words/s\n", "2025-03-27 14:18:58,043 : INFO : EPOCH 3: training on 59890 raw words (32527 effective words) took 0.1s, 254044 effective words/s\n", "2025-03-27 14:18:58,171 : INFO : EPOCH 4: training on 59890 raw words (32640 effective words) took 0.1s, 256364 effective words/s\n", "2025-03-27 14:18:58,172 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162905 effective words) took 0.6s, 251806 effective words/s', 'datetime': '2025-03-27T14:18:58.172309', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:58,172 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:58.172581', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:58,173 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:58,173 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:58,182 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:58,182 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:58,186 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:58.186777', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:58,187 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:58.187133', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:58,190 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:58,191 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:58,191 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:58.191600', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:58,192 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:58,212 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:58,218 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:58,219 : INFO : resetting layer weights\n", "2025-03-27 14:18:58,220 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:58.220697', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:58,221 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:58,221 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:58.221645', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:58,348 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.1s, 259381 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #6: {'train_data': '25kB', 'compute_loss': True, 'sg': 1, 'hs': 1, 'train_time_mean': 0.7040122350056967, 'train_time_std': 0.00820130813052232}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:58,483 : INFO : EPOCH 1: training on 59890 raw words (32692 effective words) took 0.1s, 244142 effective words/s\n", "2025-03-27 14:18:58,614 : INFO : EPOCH 2: training on 59890 raw words (32559 effective words) took 0.1s, 250152 effective words/s\n", "2025-03-27 14:18:58,740 : INFO : EPOCH 3: training on 59890 raw words (32637 effective words) took 0.1s, 260157 effective words/s\n", "2025-03-27 14:18:58,870 : INFO : EPOCH 4: training on 59890 raw words (32567 effective words) took 0.1s, 252201 effective words/s\n", "2025-03-27 14:18:58,871 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162998 effective words) took 0.6s, 251178 effective words/s', 'datetime': '2025-03-27T14:18:58.871082', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:58,871 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:58.871448', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:58,872 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:58,872 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:58,881 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:58,881 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:58,885 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:58.885848', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:58,886 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:58.886244', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:58,890 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:58,890 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:58,890 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:58.890974', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:58,891 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:58,911 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:58,917 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:58,918 : INFO : resetting layer weights\n", "2025-03-27 14:18:58,919 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:58.919192', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:58,919 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:58,919 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:58.919622', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:59,047 : INFO : EPOCH 0: training on 59890 raw words (32543 effective words) took 0.1s, 261332 effective words/s\n", "2025-03-27 14:18:59,179 : INFO : EPOCH 1: training on 59890 raw words (32552 effective words) took 0.1s, 249947 effective words/s\n", "2025-03-27 14:18:59,307 : INFO : EPOCH 2: training on 59890 raw words (32603 effective words) took 0.1s, 256994 effective words/s\n", "2025-03-27 14:18:59,435 : INFO : EPOCH 3: training on 59890 raw words (32661 effective words) took 0.1s, 266036 effective words/s\n", "2025-03-27 14:18:59,568 : INFO : EPOCH 4: training on 59890 raw words (32544 effective words) took 0.1s, 247797 effective words/s\n", "2025-03-27 14:18:59,569 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (162903 effective words) took 0.6s, 250945 effective words/s', 'datetime': '2025-03-27T14:18:59.568984', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:18:59,569 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:18:59.569275', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:18:59,570 : INFO : collecting all words and their counts\n", "2025-03-27 14:18:59,570 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:18:59,579 : INFO : collected 10781 word types from a corpus of 59890 raw words and 300 sentences\n", "2025-03-27 14:18:59,579 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:18:59,583 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 1762 unique words (16.34% of original 10781, drops 9019)', 'datetime': '2025-03-27T14:18:59.583925', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:59,584 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 46084 word corpus (76.95% of original 59890, drops 13806)', 'datetime': '2025-03-27T14:18:59.584356', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:59,588 : INFO : deleting the raw counts dictionary of 10781 items\n", "2025-03-27 14:18:59,588 : INFO : sample=0.001 downsamples 45 most-common words\n", "2025-03-27 14:18:59,588 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 32610.61883565215 word corpus (70.8%% of prior 46084)', 'datetime': '2025-03-27T14:18:59.588755', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:18:59,589 : INFO : constructing a huffman tree from 1762 words\n", "2025-03-27 14:18:59,620 : INFO : built huffman tree with maximum node depth 13\n", "2025-03-27 14:18:59,626 : INFO : estimated required memory for 1762 words and 100 dimensions: 3347800 bytes\n", "2025-03-27 14:18:59,627 : INFO : resetting layer weights\n", "2025-03-27 14:18:59,628 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:18:59.628545', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:18:59,628 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:18:59,629 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 1762 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:18:59.629050', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:18:59,767 : INFO : EPOCH 0: training on 59890 raw words (32648 effective words) took 0.1s, 237265 effective words/s\n", "2025-03-27 14:18:59,897 : INFO : EPOCH 1: training on 59890 raw words (32591 effective words) took 0.1s, 258327 effective words/s\n", "2025-03-27 14:19:00,040 : INFO : EPOCH 2: training on 59890 raw words (32623 effective words) took 0.1s, 229898 effective words/s\n", "2025-03-27 14:19:00,169 : INFO : EPOCH 3: training on 59890 raw words (32622 effective words) took 0.1s, 254299 effective words/s\n", "2025-03-27 14:19:00,296 : INFO : EPOCH 4: training on 59890 raw words (32707 effective words) took 0.1s, 260828 effective words/s\n", "2025-03-27 14:19:00,296 : INFO : Word2Vec lifecycle event {'msg': 'training on 299450 raw words (163191 effective words) took 0.7s, 244578 effective words/s', 'datetime': '2025-03-27T14:19:00.296512', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:00,296 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:00.296800', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:00,297 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:00,304 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:00,320 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:00,320 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:00,329 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:00.329847', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:00,330 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:00.330408', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:00,339 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:00,340 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:00,340 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:00.340499', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:00,353 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:00,353 : INFO : resetting layer weights\n", "2025-03-27 14:19:00,356 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:00.356071', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:00,356 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:00.356414', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:00,417 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.1s, 2101477 effective words/s\n", "2025-03-27 14:19:00,483 : INFO : EPOCH 1: training on 175599 raw words (110178 effective words) took 0.1s, 1852705 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #7: {'train_data': '25kB', 'compute_loss': False, 'sg': 1, 'hs': 1, 'train_time_mean': 0.7080506483713785, 'train_time_std': 0.01365019201133514}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:00,550 : INFO : EPOCH 2: training on 175599 raw words (110145 effective words) took 0.1s, 1855558 effective words/s\n", "2025-03-27 14:19:00,612 : INFO : EPOCH 3: training on 175599 raw words (110095 effective words) took 0.1s, 2034363 effective words/s\n", "2025-03-27 14:19:00,676 : INFO : EPOCH 4: training on 175599 raw words (110334 effective words) took 0.1s, 1927943 effective words/s\n", "2025-03-27 14:19:00,677 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550746 effective words) took 0.3s, 1716942 effective words/s', 'datetime': '2025-03-27T14:19:00.677439', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:00,677 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:00.677720', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:00,678 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:00,684 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:00,700 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:00,700 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:00,709 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:00.709099', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:00,709 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:00.709526', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:00,718 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:00,718 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:00,718 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:00.718921', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:00,732 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:00,732 : INFO : resetting layer weights\n", "2025-03-27 14:19:00,734 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:00.734448', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:00,734 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:00.734656', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:00,795 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.1s, 2083994 effective words/s\n", "2025-03-27 14:19:00,858 : INFO : EPOCH 1: training on 175599 raw words (110105 effective words) took 0.1s, 1943798 effective words/s\n", "2025-03-27 14:19:00,920 : INFO : EPOCH 2: training on 175599 raw words (110001 effective words) took 0.1s, 1985407 effective words/s\n", "2025-03-27 14:19:00,981 : INFO : EPOCH 3: training on 175599 raw words (110063 effective words) took 0.1s, 2057278 effective words/s\n", "2025-03-27 14:19:01,044 : INFO : EPOCH 4: training on 175599 raw words (110309 effective words) took 0.1s, 1950752 effective words/s\n", "2025-03-27 14:19:01,045 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550472 effective words) took 0.3s, 1775259 effective words/s', 'datetime': '2025-03-27T14:19:01.044993', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:01,045 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:01.045325', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:01,045 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:01,051 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:01,068 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:01,069 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:01,078 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:01.078487', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,078 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:01.078922', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,088 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:01,089 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:01,089 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:01.089788', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,103 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:01,104 : INFO : resetting layer weights\n", "2025-03-27 14:19:01,106 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:01.106982', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:01,107 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:01.107438', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:01,166 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.1s, 2134222 effective words/s\n", "2025-03-27 14:19:01,226 : INFO : EPOCH 1: training on 175599 raw words (110178 effective words) took 0.1s, 2082488 effective words/s\n", "2025-03-27 14:19:01,291 : INFO : EPOCH 2: training on 175599 raw words (110145 effective words) took 0.1s, 1889708 effective words/s\n", "2025-03-27 14:19:01,356 : INFO : EPOCH 3: training on 175599 raw words (110095 effective words) took 0.1s, 1916653 effective words/s\n", "2025-03-27 14:19:01,422 : INFO : EPOCH 4: training on 175599 raw words (110334 effective words) took 0.1s, 1884164 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:01,423 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550746 effective words) took 0.3s, 1747075 effective words/s', 'datetime': '2025-03-27T14:19:01.423061', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:01,423 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:01.423399', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:01,424 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:01,430 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:01,447 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:01,448 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:01,456 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:01.456865', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,457 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:01.457355', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,466 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:01,466 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:01,467 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:01.467360', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,480 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:01,481 : INFO : resetting layer weights\n", "2025-03-27 14:19:01,483 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:01.483991', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:01,484 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:01.484306', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:01,551 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.1s, 1859671 effective words/s\n", "2025-03-27 14:19:01,615 : INFO : EPOCH 1: training on 175599 raw words (110214 effective words) took 0.1s, 1945305 effective words/s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #8: {'train_data': '1MB', 'compute_loss': True, 'sg': 0, 'hs': 0, 'train_time_mean': 0.37556807200113934, 'train_time_std': 0.005800017401025353}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:01,679 : INFO : EPOCH 2: training on 175599 raw words (110137 effective words) took 0.1s, 2000347 effective words/s\n", "2025-03-27 14:19:01,740 : INFO : EPOCH 3: training on 175599 raw words (110323 effective words) took 0.1s, 2022381 effective words/s\n", "2025-03-27 14:19:01,808 : INFO : EPOCH 4: training on 175599 raw words (110174 effective words) took 0.1s, 1803673 effective words/s\n", "2025-03-27 14:19:01,809 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551132 effective words) took 0.3s, 1696299 effective words/s', 'datetime': '2025-03-27T14:19:01.809462', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:01,809 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:01.809798', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:01,810 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:01,816 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:01,833 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:01,833 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:01,841 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:01.841810', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,842 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:01.842316', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,851 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:01,851 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:01,852 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:01.852166', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:01,865 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:01,866 : INFO : resetting layer weights\n", "2025-03-27 14:19:01,868 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:01.868154', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:01,868 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:01.868398', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:01,932 : INFO : EPOCH 0: training on 175599 raw words (110344 effective words) took 0.1s, 1945680 effective words/s\n", "2025-03-27 14:19:01,991 : INFO : EPOCH 1: training on 175599 raw words (110214 effective words) took 0.1s, 2100445 effective words/s\n", "2025-03-27 14:19:02,069 : INFO : EPOCH 2: training on 175599 raw words (110315 effective words) took 0.1s, 1542830 effective words/s\n", "2025-03-27 14:19:02,135 : INFO : EPOCH 3: training on 175599 raw words (110291 effective words) took 0.1s, 1910001 effective words/s\n", "2025-03-27 14:19:02,201 : INFO : EPOCH 4: training on 175599 raw words (110335 effective words) took 0.1s, 1878404 effective words/s\n", "2025-03-27 14:19:02,201 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551499 effective words) took 0.3s, 1657378 effective words/s', 'datetime': '2025-03-27T14:19:02.201566', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:02,201 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:02.201874', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:02,202 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:02,208 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:02,226 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:02,226 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:02,235 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:02.235730', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:02,236 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:02.236460', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:02,246 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:02,246 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:02,247 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:02.247052', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:02,261 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:02,261 : INFO : resetting layer weights\n", "2025-03-27 14:19:02,264 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:02.264156', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:02,264 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:02.264409', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:02,329 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.1s, 1936984 effective words/s\n", "2025-03-27 14:19:02,391 : INFO : EPOCH 1: training on 175599 raw words (110178 effective words) took 0.1s, 1958318 effective words/s\n", "2025-03-27 14:19:02,452 : INFO : EPOCH 2: training on 175599 raw words (110145 effective words) took 0.1s, 2118558 effective words/s\n", "2025-03-27 14:19:02,512 : INFO : EPOCH 3: training on 175599 raw words (110284 effective words) took 0.1s, 2062050 effective words/s\n", "2025-03-27 14:19:02,572 : INFO : EPOCH 4: training on 175599 raw words (110256 effective words) took 0.1s, 2135420 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:02,573 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550857 effective words) took 0.3s, 1784250 effective words/s', 'datetime': '2025-03-27T14:19:02.573503', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:02,573 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:02.573850', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:02,574 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:02,580 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:02,597 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:02,597 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:02,606 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:02.606667', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:02,607 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:02.607298', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:02,616 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:02,617 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:02,617 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:02.617463', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:02,618 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:02,669 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:02,682 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:02,683 : INFO : resetting layer weights\n", "2025-03-27 14:19:02,685 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:02.685069', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:02,685 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:02,685 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:02.685539', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #9: {'train_data': '1MB', 'compute_loss': False, 'sg': 0, 'hs': 0, 'train_time_mean': 0.3833769162495931, 'train_time_std': 0.00846858103415652}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:02,800 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.1s, 1025704 effective words/s\n", "2025-03-27 14:19:02,919 : INFO : EPOCH 1: training on 175599 raw words (110008 effective words) took 0.1s, 979062 effective words/s\n", "2025-03-27 14:19:03,032 : INFO : EPOCH 2: training on 175599 raw words (110417 effective words) took 0.1s, 1048598 effective words/s\n", "2025-03-27 14:19:03,147 : INFO : EPOCH 3: training on 175599 raw words (110226 effective words) took 0.1s, 1017945 effective words/s\n", "2025-03-27 14:19:03,263 : INFO : EPOCH 4: training on 175599 raw words (110314 effective words) took 0.1s, 1015572 effective words/s\n", "2025-03-27 14:19:03,263 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551249 effective words) took 0.6s, 953703 effective words/s', 'datetime': '2025-03-27T14:19:03.263766', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:03,264 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:03.264060', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:03,264 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:03,270 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:03,289 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:03,289 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:03,298 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:03.298333', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:03,298 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:03.298872', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:03,307 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:03,308 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:03,309 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:03.309155', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:03,310 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:03,360 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:03,373 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:03,374 : INFO : resetting layer weights\n", "2025-03-27 14:19:03,377 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:03.377743', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:03,378 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:03,378 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:03.378439', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:03,510 : INFO : EPOCH 0: training on 175599 raw words (110202 effective words) took 0.1s, 881600 effective words/s\n", "2025-03-27 14:19:03,634 : INFO : EPOCH 1: training on 175599 raw words (110115 effective words) took 0.1s, 965178 effective words/s\n", "2025-03-27 14:19:03,750 : INFO : EPOCH 2: training on 175599 raw words (110317 effective words) took 0.1s, 1007070 effective words/s\n", "2025-03-27 14:19:03,864 : INFO : EPOCH 3: training on 175599 raw words (110240 effective words) took 0.1s, 1028502 effective words/s\n", "2025-03-27 14:19:03,977 : INFO : EPOCH 4: training on 175599 raw words (110127 effective words) took 0.1s, 1033100 effective words/s\n", "2025-03-27 14:19:03,978 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551001 effective words) took 0.6s, 918528 effective words/s', 'datetime': '2025-03-27T14:19:03.978566', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:03,978 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:03.978861', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:03,979 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:03,985 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:04,002 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:04,003 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:04,011 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:04.011463', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:04,011 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:04.011908', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:04,021 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:04,022 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:04,022 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:04.022813', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:04,023 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:04,073 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:04,086 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:04,086 : INFO : resetting layer weights\n", "2025-03-27 14:19:04,088 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:04.088818', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:04,089 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:04,089 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:04.089273', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:04,210 : INFO : EPOCH 0: training on 175599 raw words (110086 effective words) took 0.1s, 973066 effective words/s\n", "2025-03-27 14:19:04,322 : INFO : EPOCH 1: training on 175599 raw words (110235 effective words) took 0.1s, 1045975 effective words/s\n", "2025-03-27 14:19:04,435 : INFO : EPOCH 2: training on 175599 raw words (109859 effective words) took 0.1s, 1034610 effective words/s\n", "2025-03-27 14:19:04,548 : INFO : EPOCH 3: training on 175599 raw words (110239 effective words) took 0.1s, 1036759 effective words/s\n", "2025-03-27 14:19:04,668 : INFO : EPOCH 4: training on 175599 raw words (109999 effective words) took 0.1s, 977604 effective words/s\n", "2025-03-27 14:19:04,668 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550418 effective words) took 0.6s, 949905 effective words/s', 'datetime': '2025-03-27T14:19:04.668977', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:04,669 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:04.669386', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:04,670 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:04,676 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:04,692 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:04,693 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:04,702 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:04.702622', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:04,703 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:04.703170', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:04,711 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:04,712 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:04,713 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:04.713021', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:04,714 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:04,765 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:04,779 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:04,779 : INFO : resetting layer weights\n", "2025-03-27 14:19:04,781 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:04.781980', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:04,782 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:04,782 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:04.782606', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #10: {'train_data': '1MB', 'compute_loss': True, 'sg': 0, 'hs': 1, 'train_time_mean': 0.6986416975657145, 'train_time_std': 0.011644824822215011}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:04,915 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.1s, 889652 effective words/s\n", "2025-03-27 14:19:05,031 : INFO : EPOCH 1: training on 175599 raw words (110008 effective words) took 0.1s, 1012357 effective words/s\n", "2025-03-27 14:19:05,146 : INFO : EPOCH 2: training on 175599 raw words (110417 effective words) took 0.1s, 1024185 effective words/s\n", "2025-03-27 14:19:05,258 : INFO : EPOCH 3: training on 175599 raw words (110426 effective words) took 0.1s, 1046856 effective words/s\n", "2025-03-27 14:19:05,376 : INFO : EPOCH 4: training on 175599 raw words (110382 effective words) took 0.1s, 1010185 effective words/s\n", "2025-03-27 14:19:05,377 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551517 effective words) took 0.6s, 928410 effective words/s', 'datetime': '2025-03-27T14:19:05.377353', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:05,377 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:05.377648', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:05,378 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:05,384 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:05,402 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:05,402 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:05,411 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:05.411923', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:05,412 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:05.412388', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:05,421 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:05,422 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:05,423 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:05.423181', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:05,424 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:05,475 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:05,488 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:05,489 : INFO : resetting layer weights\n", "2025-03-27 14:19:05,492 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:05.492115', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:05,492 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:05,492 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:05.492718', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:05,614 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.1s, 959719 effective words/s\n", "2025-03-27 14:19:05,728 : INFO : EPOCH 1: training on 175599 raw words (110178 effective words) took 0.1s, 1043077 effective words/s\n", "2025-03-27 14:19:05,850 : INFO : EPOCH 2: training on 175599 raw words (110145 effective words) took 0.1s, 954730 effective words/s\n", "2025-03-27 14:19:05,965 : INFO : EPOCH 3: training on 175599 raw words (110095 effective words) took 0.1s, 1023340 effective words/s\n", "2025-03-27 14:19:06,081 : INFO : EPOCH 4: training on 175599 raw words (110138 effective words) took 0.1s, 1032725 effective words/s\n", "2025-03-27 14:19:06,081 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550550 effective words) took 0.6s, 934938 effective words/s', 'datetime': '2025-03-27T14:19:06.081811', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:06,082 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:06.082146', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:06,083 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:06,089 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:06,105 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:06,106 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:06,114 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:06.114534', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:06,114 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:06.114934', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:06,123 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:06,123 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:06,124 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:06.124273', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:06,125 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:06,176 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:06,190 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:06,190 : INFO : resetting layer weights\n", "2025-03-27 14:19:06,192 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:06.192266', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:06,192 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:06,192 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:06.192764', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:06,308 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.1s, 1016225 effective words/s\n", "2025-03-27 14:19:06,425 : INFO : EPOCH 1: training on 175599 raw words (110178 effective words) took 0.1s, 999736 effective words/s\n", "2025-03-27 14:19:06,539 : INFO : EPOCH 2: training on 175599 raw words (110145 effective words) took 0.1s, 1053245 effective words/s\n", "2025-03-27 14:19:06,662 : INFO : EPOCH 3: training on 175599 raw words (110095 effective words) took 0.1s, 958349 effective words/s\n", "2025-03-27 14:19:06,784 : INFO : EPOCH 4: training on 175599 raw words (110334 effective words) took 0.1s, 951374 effective words/s\n", "2025-03-27 14:19:06,785 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550746 effective words) took 0.6s, 929721 effective words/s', 'datetime': '2025-03-27T14:19:06.785431', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:06,785 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:06.785762', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:06,787 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:06,793 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:06,810 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:06,810 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:06,819 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:06.819499', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:06,819 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:06.819966', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:06,828 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:06,829 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:06,829 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:06.829593', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:06,843 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:06,843 : INFO : resetting layer weights\n", "2025-03-27 14:19:06,845 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:06.845464', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:06,845 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:06.845695', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #11: {'train_data': '1MB', 'compute_loss': False, 'sg': 0, 'hs': 1, 'train_time_mean': 0.7054657141367594, 'train_time_std': 0.001835862447610594}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:07,074 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.2s, 500077 effective words/s\n", "2025-03-27 14:19:07,283 : INFO : EPOCH 1: training on 175599 raw words (110008 effective words) took 0.2s, 546161 effective words/s\n", "2025-03-27 14:19:07,509 : INFO : EPOCH 2: training on 175599 raw words (110417 effective words) took 0.2s, 505302 effective words/s\n", "2025-03-27 14:19:07,721 : INFO : EPOCH 3: training on 175599 raw words (110001 effective words) took 0.2s, 536428 effective words/s\n", "2025-03-27 14:19:07,926 : INFO : EPOCH 4: training on 175599 raw words (110184 effective words) took 0.2s, 556727 effective words/s\n", "2025-03-27 14:19:07,927 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550894 effective words) took 1.1s, 509344 effective words/s', 'datetime': '2025-03-27T14:19:07.927484', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:07,927 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:07.927772', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:07,929 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:07,935 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:07,952 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:07,952 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:07,961 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:07.961552', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:07,962 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:07.962073', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:07,970 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:07,971 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:07,972 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:07.972034', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:07,985 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:07,986 : INFO : resetting layer weights\n", "2025-03-27 14:19:07,987 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:07.987794', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:07,988 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:07.988008', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:08,196 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.2s, 551191 effective words/s\n", "2025-03-27 14:19:08,405 : INFO : EPOCH 1: training on 175599 raw words (110054 effective words) took 0.2s, 544563 effective words/s\n", "2025-03-27 14:19:08,612 : INFO : EPOCH 2: training on 175599 raw words (110371 effective words) took 0.2s, 553603 effective words/s\n", "2025-03-27 14:19:08,818 : INFO : EPOCH 3: training on 175599 raw words (110429 effective words) took 0.2s, 555476 effective words/s\n", "2025-03-27 14:19:09,028 : INFO : EPOCH 4: training on 175599 raw words (109966 effective words) took 0.2s, 543189 effective words/s\n", "2025-03-27 14:19:09,028 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550814 effective words) took 1.0s, 529333 effective words/s', 'datetime': '2025-03-27T14:19:09.028821', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:09,029 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:09.029108', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:09,029 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:09,036 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:09,052 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:09,053 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:09,061 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:09.061925', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:09,062 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:09.062502', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:09,071 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:09,072 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:09,073 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:09.073258', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:09,087 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:09,087 : INFO : resetting layer weights\n", "2025-03-27 14:19:09,090 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:09.090310', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:09,090 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:09.090923', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:09,300 : INFO : EPOCH 0: training on 175599 raw words (110086 effective words) took 0.2s, 543498 effective words/s\n", "2025-03-27 14:19:09,506 : INFO : EPOCH 1: training on 175599 raw words (110309 effective words) took 0.2s, 557322 effective words/s\n", "2025-03-27 14:19:09,713 : INFO : EPOCH 2: training on 175599 raw words (110151 effective words) took 0.2s, 549361 effective words/s\n", "2025-03-27 14:19:09,928 : INFO : EPOCH 3: training on 175599 raw words (110293 effective words) took 0.2s, 528290 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:10,135 : INFO : EPOCH 4: training on 175599 raw words (110127 effective words) took 0.2s, 554604 effective words/s\n", "2025-03-27 14:19:10,135 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550966 effective words) took 1.0s, 527338 effective words/s', 'datetime': '2025-03-27T14:19:10.135916', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:10,136 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:10.136207', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:10,136 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:10,143 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:10,159 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:10,160 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:10,169 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:10.169759', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:10,170 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:10.170158', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:10,179 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:10,180 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:10,180 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:10.180287', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:10,193 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:10,193 : INFO : resetting layer weights\n", "2025-03-27 14:19:10,195 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:10.195457', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:10,195 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:10.195659', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #12: {'train_data': '1MB', 'compute_loss': True, 'sg': 1, 'hs': 0, 'train_time_mean': 1.1165948708852131, 'train_time_std': 0.018046651526726992}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:10,404 : INFO : EPOCH 0: training on 175599 raw words (110086 effective words) took 0.2s, 544621 effective words/s\n", "2025-03-27 14:19:10,611 : INFO : EPOCH 1: training on 175599 raw words (110309 effective words) took 0.2s, 554978 effective words/s\n", "2025-03-27 14:19:10,823 : INFO : EPOCH 2: training on 175599 raw words (110151 effective words) took 0.2s, 543245 effective words/s\n", "2025-03-27 14:19:11,036 : INFO : EPOCH 3: training on 175599 raw words (110252 effective words) took 0.2s, 538233 effective words/s\n", "2025-03-27 14:19:11,264 : INFO : EPOCH 4: training on 175599 raw words (110114 effective words) took 0.2s, 501008 effective words/s\n", "2025-03-27 14:19:11,265 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550912 effective words) took 1.1s, 515013 effective words/s', 'datetime': '2025-03-27T14:19:11.265598', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:11,265 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:11.265944', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:11,266 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:11,272 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:11,289 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:11,289 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:11,298 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:11.298064', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:11,298 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:11.298530', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:11,307 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:11,308 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:11,308 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:11.308507', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:11,323 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:11,323 : INFO : resetting layer weights\n", "2025-03-27 14:19:11,325 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:11.325814', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:11,326 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:11.326102', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:11,544 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.2s, 523900 effective words/s\n", "2025-03-27 14:19:11,750 : INFO : EPOCH 1: training on 175599 raw words (110008 effective words) took 0.2s, 553140 effective words/s\n", "2025-03-27 14:19:11,956 : INFO : EPOCH 2: training on 175599 raw words (110566 effective words) took 0.2s, 555504 effective words/s\n", "2025-03-27 14:19:12,161 : INFO : EPOCH 3: training on 175599 raw words (110199 effective words) took 0.2s, 561021 effective words/s\n", "2025-03-27 14:19:12,377 : INFO : EPOCH 4: training on 175599 raw words (110181 effective words) took 0.2s, 526644 effective words/s\n", "2025-03-27 14:19:12,378 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551238 effective words) took 1.1s, 524113 effective words/s', 'datetime': '2025-03-27T14:19:12.378152', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:12,378 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:12.378459', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:12,379 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:12,385 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:12,402 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:12,403 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:12,411 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:12.411563', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:12,412 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:12.412011', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:12,421 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:12,422 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:12,422 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:12.422331', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:12,435 : INFO : estimated required memory for 4125 words and 100 dimensions: 5362500 bytes\n", "2025-03-27 14:19:12,435 : INFO : resetting layer weights\n", "2025-03-27 14:19:12,437 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:12.437582', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:12,437 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:12.437816', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:12,644 : INFO : EPOCH 0: training on 175599 raw words (109994 effective words) took 0.2s, 550841 effective words/s\n", "2025-03-27 14:19:12,849 : INFO : EPOCH 1: training on 175599 raw words (110177 effective words) took 0.2s, 554464 effective words/s\n", "2025-03-27 14:19:13,058 : INFO : EPOCH 2: training on 175599 raw words (110354 effective words) took 0.2s, 551496 effective words/s\n", "2025-03-27 14:19:13,264 : INFO : EPOCH 3: training on 175599 raw words (110208 effective words) took 0.2s, 559034 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:13,466 : INFO : EPOCH 4: training on 175599 raw words (110212 effective words) took 0.2s, 567565 effective words/s\n", "2025-03-27 14:19:13,467 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550945 effective words) took 1.0s, 535412 effective words/s', 'datetime': '2025-03-27T14:19:13.467077', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:13,467 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:13.467361', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:13,468 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:13,474 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:13,491 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:13,492 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:13,501 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:13.501364', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:13,501 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:13.501680', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:13,510 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:13,510 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:13,511 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:13.511120', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:13,512 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:13,564 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:13,577 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:13,577 : INFO : resetting layer weights\n", "2025-03-27 14:19:13,579 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:13.579412', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:13,579 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:13,579 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:13.579859', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #13: {'train_data': '1MB', 'compute_loss': False, 'sg': 1, 'hs': 0, 'train_time_mean': 1.1103806495666504, 'train_time_std': 0.016719505657097004}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:14,057 : INFO : EPOCH 0: training on 175599 raw words (110086 effective words) took 0.5s, 234531 effective words/s\n", "2025-03-27 14:19:14,541 : INFO : EPOCH 1: training on 175599 raw words (110147 effective words) took 0.5s, 231500 effective words/s\n", "2025-03-27 14:19:15,022 : INFO : EPOCH 2: training on 175599 raw words (110141 effective words) took 0.5s, 232828 effective words/s\n", "2025-03-27 14:19:15,479 : INFO : EPOCH 3: training on 175599 raw words (109999 effective words) took 0.4s, 245978 effective words/s\n", "2025-03-27 14:19:15,963 : INFO : EPOCH 4: training on 175599 raw words (110137 effective words) took 0.5s, 232465 effective words/s\n", "2025-03-27 14:19:15,963 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550510 effective words) took 2.4s, 230954 effective words/s', 'datetime': '2025-03-27T14:19:15.963700', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:15,964 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:15.964041', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:15,964 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:15,970 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:15,987 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:15,987 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:15,995 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:15.995907', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:15,996 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:15.996303', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:16,005 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:16,006 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:16,007 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:16.007291', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:16,008 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:16,061 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:16,074 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:16,074 : INFO : resetting layer weights\n", "2025-03-27 14:19:16,076 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:16.076876', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:16,077 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:16,077 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:16.077339', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:16,575 : INFO : EPOCH 0: training on 175599 raw words (110086 effective words) took 0.5s, 224865 effective words/s\n", "2025-03-27 14:19:17,099 : INFO : EPOCH 1: training on 175599 raw words (110274 effective words) took 0.5s, 213216 effective words/s\n", "2025-03-27 14:19:17,611 : INFO : EPOCH 2: training on 175599 raw words (110178 effective words) took 0.5s, 218952 effective words/s\n", "2025-03-27 14:19:18,094 : INFO : EPOCH 3: training on 175599 raw words (110164 effective words) took 0.5s, 231315 effective words/s\n", "2025-03-27 14:19:18,610 : INFO : EPOCH 4: training on 175599 raw words (110248 effective words) took 0.5s, 217261 effective words/s\n", "2025-03-27 14:19:18,610 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550950 effective words) took 2.5s, 217498 effective words/s', 'datetime': '2025-03-27T14:19:18.610674', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:18,611 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:18.611020', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:18,612 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:18,618 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:18,637 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:18,638 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:18,648 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:18.648049', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:18,648 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:18.648902', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:18,664 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:18,666 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:18,667 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:18.667730', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:18,669 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:18,724 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:18,739 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:18,739 : INFO : resetting layer weights\n", "2025-03-27 14:19:18,741 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:18.741928', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:18,742 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:18,742 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:18.742796', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:19,295 : INFO : EPOCH 0: training on 175599 raw words (110135 effective words) took 0.5s, 202153 effective words/s\n", "2025-03-27 14:19:19,780 : INFO : EPOCH 1: training on 175599 raw words (110254 effective words) took 0.5s, 230955 effective words/s\n", "2025-03-27 14:19:20,265 : INFO : EPOCH 2: training on 175599 raw words (110128 effective words) took 0.5s, 230609 effective words/s\n", "2025-03-27 14:19:20,765 : INFO : EPOCH 3: training on 175599 raw words (110331 effective words) took 0.5s, 223910 effective words/s\n", "2025-03-27 14:19:21,272 : INFO : EPOCH 4: training on 175599 raw words (110240 effective words) took 0.5s, 220804 effective words/s\n", "2025-03-27 14:19:21,273 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551088 effective words) took 2.5s, 217823 effective words/s', 'datetime': '2025-03-27T14:19:21.273235', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:21,273 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:21.273626', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:21,275 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:21,281 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:21,299 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:21,300 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:21,308 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:21.308329', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:21,309 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:21.309045', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:21,318 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:21,319 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:21,319 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:21.319423', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:21,320 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:21,372 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:21,386 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:21,386 : INFO : resetting layer weights\n", "2025-03-27 14:19:21,388 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:21.388349', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:21,388 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:21,388 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:21.388933', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #14: {'train_data': '1MB', 'compute_loss': True, 'sg': 1, 'hs': 1, 'train_time_mean': 2.602240562438965, 'train_time_std': 0.07494918217447978}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:21,878 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.5s, 228829 effective words/s\n", "2025-03-27 14:19:22,345 : INFO : EPOCH 1: training on 175599 raw words (110008 effective words) took 0.5s, 239658 effective words/s\n", "2025-03-27 14:19:22,863 : INFO : EPOCH 2: training on 175599 raw words (110417 effective words) took 0.5s, 217073 effective words/s\n", "2025-03-27 14:19:23,380 : INFO : EPOCH 3: training on 175599 raw words (110226 effective words) took 0.5s, 216231 effective words/s\n", "2025-03-27 14:19:23,894 : INFO : EPOCH 4: training on 175599 raw words (110223 effective words) took 0.5s, 217576 effective words/s\n", "2025-03-27 14:19:23,894 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (551158 effective words) took 2.5s, 219976 effective words/s', 'datetime': '2025-03-27T14:19:23.894697', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:23,895 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:23.895041', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:23,896 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:23,902 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:23,919 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:23,920 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:23,928 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:23.928886', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:23,929 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:23.929798', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:23,938 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:23,939 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:23,940 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:23.940030', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:23,941 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:24,046 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:24,060 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:24,060 : INFO : resetting layer weights\n", "2025-03-27 14:19:24,062 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:24.062748', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:24,063 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:24,063 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:24.063323', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:24,532 : INFO : EPOCH 0: training on 175599 raw words (110284 effective words) took 0.5s, 238898 effective words/s\n", "2025-03-27 14:19:24,982 : INFO : EPOCH 1: training on 175599 raw words (110209 effective words) took 0.4s, 249078 effective words/s\n", "2025-03-27 14:19:25,436 : INFO : EPOCH 2: training on 175599 raw words (110051 effective words) took 0.4s, 246134 effective words/s\n", "2025-03-27 14:19:25,880 : INFO : EPOCH 3: training on 175599 raw words (110192 effective words) took 0.4s, 252304 effective words/s\n", "2025-03-27 14:19:26,350 : INFO : EPOCH 4: training on 175599 raw words (110120 effective words) took 0.5s, 238913 effective words/s\n", "2025-03-27 14:19:26,351 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550856 effective words) took 2.3s, 240799 effective words/s', 'datetime': '2025-03-27T14:19:26.351171', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:26,351 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:26.351551', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:26,352 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:26,358 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:26,376 : INFO : collected 17251 word types from a corpus of 175599 raw words and 18 sentences\n", "2025-03-27 14:19:26,377 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:26,386 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 4125 unique words (23.91% of original 17251, drops 13126)', 'datetime': '2025-03-27T14:19:26.386266', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:26,386 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 154201 word corpus (87.81% of original 175599, drops 21398)', 'datetime': '2025-03-27T14:19:26.386769', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:26,395 : INFO : deleting the raw counts dictionary of 17251 items\n", "2025-03-27 14:19:26,396 : INFO : sample=0.001 downsamples 40 most-common words\n", "2025-03-27 14:19:26,396 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 110199.4281334271 word corpus (71.5%% of prior 154201)', 'datetime': '2025-03-27T14:19:26.396473', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:26,397 : INFO : constructing a huffman tree from 4125 words\n", "2025-03-27 14:19:26,448 : INFO : built huffman tree with maximum node depth 15\n", "2025-03-27 14:19:26,462 : INFO : estimated required memory for 4125 words and 100 dimensions: 7837500 bytes\n", "2025-03-27 14:19:26,463 : INFO : resetting layer weights\n", "2025-03-27 14:19:26,465 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:26.465868', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:26,466 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:26,466 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 4125 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:26.466460', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:26,988 : INFO : EPOCH 0: training on 175599 raw words (110242 effective words) took 0.5s, 214359 effective words/s\n", "2025-03-27 14:19:27,477 : INFO : EPOCH 1: training on 175599 raw words (110156 effective words) took 0.5s, 229004 effective words/s\n", "2025-03-27 14:19:27,978 : INFO : EPOCH 2: training on 175599 raw words (110017 effective words) took 0.5s, 222960 effective words/s\n", "2025-03-27 14:19:28,476 : INFO : EPOCH 3: training on 175599 raw words (109948 effective words) took 0.5s, 223899 effective words/s\n", "2025-03-27 14:19:28,995 : INFO : EPOCH 4: training on 175599 raw words (110492 effective words) took 0.5s, 216496 effective words/s\n", "2025-03-27 14:19:28,995 : INFO : Word2Vec lifecycle event {'msg': 'training on 877995 raw words (550855 effective words) took 2.5s, 217820 effective words/s', 'datetime': '2025-03-27T14:19:28.995607', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:28,995 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:28.995979', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:28,997 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:29,060 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #15: {'train_data': '1MB', 'compute_loss': False, 'sg': 1, 'hs': 1, 'train_time_mean': 2.5740624268849692, 'train_time_std': 0.08392968022586558}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:29,231 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:29,231 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:29,276 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:29.276958', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:29,277 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:29.277529', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:29,323 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:29,326 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:29,326 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:29.326667', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:29,392 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:19:29,393 : INFO : resetting layer weights\n", "2025-03-27 14:19:29,399 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:29.399444', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:29,400 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:29.400060', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:30,133 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 0.7s, 1712771 effective words/s\n", "2025-03-27 14:19:30,875 : INFO : EPOCH 1: training on 1788017 raw words (1241711 effective words) took 0.7s, 1692236 effective words/s\n", "2025-03-27 14:19:31,618 : INFO : EPOCH 2: training on 1788017 raw words (1242767 effective words) took 0.7s, 1692335 effective words/s\n", "2025-03-27 14:19:32,366 : INFO : EPOCH 3: training on 1788017 raw words (1242596 effective words) took 0.7s, 1817617 effective words/s\n", "2025-03-27 14:19:33,097 : INFO : EPOCH 4: training on 1788017 raw words (1242016 effective words) took 0.7s, 1718767 effective words/s\n", "2025-03-27 14:19:33,098 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6210537 effective words) took 3.7s, 1679452 effective words/s', 'datetime': '2025-03-27T14:19:33.098221', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:33,098 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:33.098524', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:33,099 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:33,161 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:33,348 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:33,349 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:33,395 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:33.395792', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:33,396 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:33.396342', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:33,440 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:33,442 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:33,443 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:33.443114', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:33,510 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:19:33,510 : INFO : resetting layer weights\n", "2025-03-27 14:19:33,517 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:33.517153', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:33,517 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:33.517730', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:34,228 : INFO : EPOCH 0: training on 1788017 raw words (1242847 effective words) took 0.6s, 1922778 effective words/s\n", "2025-03-27 14:19:35,007 : INFO : EPOCH 1: training on 1788017 raw words (1241921 effective words) took 0.8s, 1613012 effective words/s\n", "2025-03-27 14:19:35,716 : INFO : EPOCH 2: training on 1788017 raw words (1242513 effective words) took 0.7s, 1774629 effective words/s\n", "2025-03-27 14:19:36,502 : INFO : EPOCH 3: training on 1788017 raw words (1241965 effective words) took 0.7s, 1719632 effective words/s\n", "2025-03-27 14:19:37,229 : INFO : EPOCH 4: training on 1788017 raw words (1242250 effective words) took 0.7s, 1728949 effective words/s\n", "2025-03-27 14:19:37,230 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211496 effective words) took 3.7s, 1673197 effective words/s', 'datetime': '2025-03-27T14:19:37.230318', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:37,230 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:37.230556', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:37,232 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:37,294 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:37,495 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:37,495 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:37,544 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:37.544365', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:37,544 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:37.544797', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:37,591 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:37,593 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:37,594 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:37.594148', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:37,660 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:19:37,661 : INFO : resetting layer weights\n", "2025-03-27 14:19:37,667 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:37.667935', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:37,668 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:37.668368', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:38,432 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 0.7s, 1656861 effective words/s\n", "2025-03-27 14:19:39,215 : INFO : EPOCH 1: training on 1788017 raw words (1241586 effective words) took 0.7s, 1729149 effective words/s\n", "2025-03-27 14:19:39,929 : INFO : EPOCH 2: training on 1788017 raw words (1241929 effective words) took 0.7s, 1762595 effective words/s\n", "2025-03-27 14:19:40,652 : INFO : EPOCH 3: training on 1788017 raw words (1243222 effective words) took 0.7s, 1892546 effective words/s\n", "2025-03-27 14:19:41,352 : INFO : EPOCH 4: training on 1788017 raw words (1242392 effective words) took 0.7s, 1797675 effective words/s\n", "2025-03-27 14:19:41,352 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6210576 effective words) took 3.7s, 1685834 effective words/s', 'datetime': '2025-03-27T14:19:41.352623', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:41,352 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:41.352849', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:41,354 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:41,419 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #16: {'train_data': '10MB', 'compute_loss': True, 'sg': 0, 'hs': 0, 'train_time_mean': 4.119072596232097, 'train_time_std': 0.012591949927743307}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:41,599 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:41,600 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:41,645 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:41.645198', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:41,645 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:41.645665', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:41,690 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:41,693 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:41,693 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:41.693432', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:41,759 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:19:41,759 : INFO : resetting layer weights\n", "2025-03-27 14:19:41,766 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:41.765986', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:41,766 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:41.766503', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:42,445 : INFO : EPOCH 0: training on 1788017 raw words (1241493 effective words) took 0.6s, 2014390 effective words/s\n", "2025-03-27 14:19:43,124 : INFO : EPOCH 1: training on 1788017 raw words (1242860 effective words) took 0.7s, 1855865 effective words/s\n", "2025-03-27 14:19:43,807 : INFO : EPOCH 2: training on 1788017 raw words (1242204 effective words) took 0.7s, 1842147 effective words/s\n", "2025-03-27 14:19:44,502 : INFO : EPOCH 3: training on 1788017 raw words (1241876 effective words) took 0.7s, 1807066 effective words/s\n", "2025-03-27 14:19:45,180 : INFO : EPOCH 4: training on 1788017 raw words (1242449 effective words) took 0.6s, 2039931 effective words/s\n", "2025-03-27 14:19:45,181 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6210882 effective words) took 3.4s, 1819108 effective words/s', 'datetime': '2025-03-27T14:19:45.181010', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:45,181 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:45.181248', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:45,182 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:45,249 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:45,432 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:45,432 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:45,478 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:45.478328', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:45,478 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:45.478783', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:45,520 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:45,523 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:45,523 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:45.523597', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:45,588 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:19:45,588 : INFO : resetting layer weights\n", "2025-03-27 14:19:45,595 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:45.595256', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:45,595 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:45.595682', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:46,284 : INFO : EPOCH 0: training on 1788017 raw words (1241493 effective words) took 0.6s, 2006833 effective words/s\n", "2025-03-27 14:19:46,965 : INFO : EPOCH 1: training on 1788017 raw words (1242965 effective words) took 0.7s, 1847411 effective words/s\n", "2025-03-27 14:19:47,649 : INFO : EPOCH 2: training on 1788017 raw words (1242312 effective words) took 0.6s, 2022617 effective words/s\n", "2025-03-27 14:19:48,369 : INFO : EPOCH 3: training on 1788017 raw words (1242593 effective words) took 0.7s, 1748243 effective words/s\n", "2025-03-27 14:19:49,124 : INFO : EPOCH 4: training on 1788017 raw words (1242481 effective words) took 0.7s, 1663930 effective words/s\n", "2025-03-27 14:19:49,125 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211844 effective words) took 3.5s, 1759933 effective words/s', 'datetime': '2025-03-27T14:19:49.125496', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:49,125 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:49.125767', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:49,128 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:49,193 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:19:49,376 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:49,377 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:49,423 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:49.423081', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:49,423 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:49.423635', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:49,466 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:49,468 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:49,469 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:49.469070', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:49,535 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:19:49,535 : INFO : resetting layer weights\n", "2025-03-27 14:19:49,542 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:49.542067', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:49,542 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:49.542354', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:50,225 : INFO : EPOCH 0: training on 1788017 raw words (1241493 effective words) took 0.6s, 2021864 effective words/s\n", "2025-03-27 14:19:50,900 : INFO : EPOCH 1: training on 1788017 raw words (1242857 effective words) took 0.7s, 1866103 effective words/s\n", "2025-03-27 14:19:51,578 : INFO : EPOCH 2: training on 1788017 raw words (1242430 effective words) took 0.6s, 2035898 effective words/s\n", "2025-03-27 14:19:52,256 : INFO : EPOCH 3: training on 1788017 raw words (1242244 effective words) took 0.7s, 1856255 effective words/s\n", "2025-03-27 14:19:52,933 : INFO : EPOCH 4: training on 1788017 raw words (1242861 effective words) took 0.7s, 1858738 effective words/s\n", "2025-03-27 14:19:52,934 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211885 effective words) took 3.4s, 1831479 effective words/s', 'datetime': '2025-03-27T14:19:52.934257', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:52,934 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:19:52.934507', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:19:52,936 : INFO : collecting all words and their counts\n", "2025-03-27 14:19:53,002 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #17: {'train_data': '10MB', 'compute_loss': False, 'sg': 0, 'hs': 0, 'train_time_mean': 3.860673983891805, 'train_time_std': 0.06030935425040049}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:19:53,182 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:19:53,182 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:19:53,227 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:19:53.227706', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:53,228 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:19:53.228055', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:53,271 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:19:53,273 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:19:53,274 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:19:53.274065', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:19:53,279 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:19:53,533 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:19:53,595 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:19:53,596 : INFO : resetting layer weights\n", "2025-03-27 14:19:53,603 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:19:53.603341', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:19:53,603 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:19:53,603 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:19:53.603847', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:19:54,620 : INFO : EPOCH 0 - PROGRESS: at 71.51% examples, 881653 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:19:55,004 : INFO : EPOCH 0: training on 1788017 raw words (1241493 effective words) took 1.4s, 891457 effective words/s\n", "2025-03-27 14:19:56,080 : INFO : EPOCH 1 - PROGRESS: at 76.54% examples, 944255 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:19:56,392 : INFO : EPOCH 1: training on 1788017 raw words (1242965 effective words) took 1.3s, 940851 effective words/s\n", "2025-03-27 14:19:57,401 : INFO : EPOCH 2 - PROGRESS: at 71.51% examples, 888622 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:19:57,779 : INFO : EPOCH 2: training on 1788017 raw words (1242312 effective words) took 1.4s, 901340 effective words/s\n", "2025-03-27 14:19:58,791 : INFO : EPOCH 3 - PROGRESS: at 61.45% examples, 761651 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:19:59,381 : INFO : EPOCH 3: training on 1788017 raw words (1242593 effective words) took 1.6s, 779903 effective words/s\n", "2025-03-27 14:20:00,451 : INFO : EPOCH 4 - PROGRESS: at 72.63% examples, 900985 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:00,849 : INFO : EPOCH 4: training on 1788017 raw words (1242481 effective words) took 1.4s, 887509 effective words/s\n", "2025-03-27 14:20:00,850 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211844 effective words) took 7.2s, 857230 effective words/s', 'datetime': '2025-03-27T14:20:00.850377', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:00,850 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:00.850686', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:00,852 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:00,918 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:20:01,106 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:01,107 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:01,155 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:01.155452', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:01,155 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:01.155869', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:01,205 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:01,208 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:01,208 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:01.208476', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:01,213 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:20:01,484 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:20:01,546 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:20:01,547 : INFO : resetting layer weights\n", "2025-03-27 14:20:01,554 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:01.554519', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:01,554 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:20:01,555 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:01.555162', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:02,570 : INFO : EPOCH 0 - PROGRESS: at 71.51% examples, 883374 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:02,947 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 1.4s, 896840 effective words/s\n", "2025-03-27 14:20:03,960 : INFO : EPOCH 1 - PROGRESS: at 71.51% examples, 885495 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:20:04,347 : INFO : EPOCH 1: training on 1788017 raw words (1241621 effective words) took 1.4s, 892560 effective words/s\n", "2025-03-27 14:20:05,361 : INFO : EPOCH 2 - PROGRESS: at 72.07% examples, 891273 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:05,733 : INFO : EPOCH 2: training on 1788017 raw words (1242229 effective words) took 1.4s, 902241 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:20:06,804 : INFO : EPOCH 3 - PROGRESS: at 76.54% examples, 949470 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:07,116 : INFO : EPOCH 3: training on 1788017 raw words (1242362 effective words) took 1.3s, 944861 effective words/s\n", "2025-03-27 14:20:08,137 : INFO : EPOCH 4 - PROGRESS: at 71.51% examples, 877142 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:08,526 : INFO : EPOCH 4: training on 1788017 raw words (1241770 effective words) took 1.4s, 886335 effective words/s\n", "2025-03-27 14:20:08,526 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6209429 effective words) took 7.0s, 890689 effective words/s', 'datetime': '2025-03-27T14:20:08.526802', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:08,527 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:08.527024', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:08,530 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:08,592 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:20:08,773 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:08,774 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:08,819 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:08.819386', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:08,819 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:08.819791', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:08,864 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:08,866 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:08,866 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:08.866643', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:08,873 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:20:09,197 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:20:09,259 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:20:09,260 : INFO : resetting layer weights\n", "2025-03-27 14:20:09,266 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:09.266823', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:09,267 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:20:09,267 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:09.267398', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:10,279 : INFO : EPOCH 0 - PROGRESS: at 70.39% examples, 871453 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:10,681 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 1.4s, 883162 effective words/s\n", "2025-03-27 14:20:11,692 : INFO : EPOCH 1 - PROGRESS: at 72.07% examples, 893668 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:12,063 : INFO : EPOCH 1: training on 1788017 raw words (1241621 effective words) took 1.4s, 904231 effective words/s\n", "2025-03-27 14:20:13,135 : INFO : EPOCH 2 - PROGRESS: at 75.98% examples, 940826 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:13,457 : INFO : EPOCH 2: training on 1788017 raw words (1242229 effective words) took 1.3s, 936103 effective words/s\n", "2025-03-27 14:20:14,471 : INFO : EPOCH 3 - PROGRESS: at 72.07% examples, 891517 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:14,842 : INFO : EPOCH 3: training on 1788017 raw words (1242362 effective words) took 1.4s, 902774 effective words/s\n", "2025-03-27 14:20:15,858 : INFO : EPOCH 4 - PROGRESS: at 71.51% examples, 882074 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:16,235 : INFO : EPOCH 4: training on 1788017 raw words (1241770 effective words) took 1.4s, 896748 effective words/s\n", "2025-03-27 14:20:16,236 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6209429 effective words) took 7.0s, 891022 effective words/s', 'datetime': '2025-03-27T14:20:16.236387', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:16,236 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:16.236633', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:16,240 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:16,304 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #18: {'train_data': '10MB', 'compute_loss': True, 'sg': 0, 'hs': 1, 'train_time_mean': 7.767791589101155, 'train_time_std': 0.10568085894457598}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:20:16,486 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:16,487 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:16,534 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:16.534551', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:16,535 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:16.535011', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:16,577 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:16,580 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:16,580 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:16.580978', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:16,587 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:20:16,847 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:20:16,910 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:20:16,911 : INFO : resetting layer weights\n", "2025-03-27 14:20:16,918 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:16.918096', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:16,918 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:20:16,918 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:16.918601', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:17,993 : INFO : EPOCH 0 - PROGRESS: at 76.54% examples, 943390 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:18,316 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 1.3s, 931950 effective words/s\n", "2025-03-27 14:20:19,386 : INFO : EPOCH 1 - PROGRESS: at 75.98% examples, 939100 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:19,708 : INFO : EPOCH 1: training on 1788017 raw words (1241621 effective words) took 1.3s, 934820 effective words/s\n", "2025-03-27 14:20:20,721 : INFO : EPOCH 2 - PROGRESS: at 70.39% examples, 870504 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:21,115 : INFO : EPOCH 2: training on 1788017 raw words (1242229 effective words) took 1.4s, 888447 effective words/s\n", "2025-03-27 14:20:22,125 : INFO : EPOCH 3 - PROGRESS: at 72.63% examples, 901411 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:22,495 : INFO : EPOCH 3: training on 1788017 raw words (1242394 effective words) took 1.4s, 905562 effective words/s\n", "2025-03-27 14:20:23,563 : INFO : EPOCH 4 - PROGRESS: at 76.54% examples, 952091 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:23,874 : INFO : EPOCH 4: training on 1788017 raw words (1242564 effective words) took 1.3s, 947046 effective words/s\n", "2025-03-27 14:20:23,874 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6210255 effective words) took 7.0s, 892792 effective words/s', 'datetime': '2025-03-27T14:20:23.874702', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:23,874 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:23.874959', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:23,879 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:23,943 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:20:24,130 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:24,131 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:24,174 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:24.174799', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:24,175 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:24.175234', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:24,218 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:24,220 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:24,220 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:24.220409', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:24,225 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:20:24,549 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:20:24,611 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:20:24,612 : INFO : resetting layer weights\n", "2025-03-27 14:20:24,619 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:24.619421', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:24,619 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:20:24,619 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:24.619964', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:25,640 : INFO : EPOCH 0 - PROGRESS: at 71.51% examples, 878285 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:20:26,016 : INFO : EPOCH 0: training on 1788017 raw words (1241493 effective words) took 1.4s, 894407 effective words/s\n", "2025-03-27 14:20:27,025 : INFO : EPOCH 1 - PROGRESS: at 71.51% examples, 888768 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:20:27,414 : INFO : EPOCH 1: training on 1788017 raw words (1242966 effective words) took 1.4s, 894323 effective words/s\n", "2025-03-27 14:20:28,427 : INFO : EPOCH 2 - PROGRESS: at 72.07% examples, 891779 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:28,804 : INFO : EPOCH 2: training on 1788017 raw words (1242465 effective words) took 1.4s, 899439 effective words/s\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:20:29,814 : INFO : EPOCH 3 - PROGRESS: at 70.95% examples, 880699 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:30,205 : INFO : EPOCH 3: training on 1788017 raw words (1242391 effective words) took 1.4s, 892229 effective words/s\n", "2025-03-27 14:20:31,218 : INFO : EPOCH 4 - PROGRESS: at 69.83% examples, 863486 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:20:31,624 : INFO : EPOCH 4: training on 1788017 raw words (1242515 effective words) took 1.4s, 880880 effective words/s\n", "2025-03-27 14:20:31,624 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211830 effective words) took 7.0s, 886790 effective words/s', 'datetime': '2025-03-27T14:20:31.624913', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:31,625 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:31.625143', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:31,628 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:31,692 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:20:31,875 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:31,875 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:31,921 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:31.921690', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:31,922 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:31.922110', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:31,965 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:31,967 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:31,967 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:31.967826', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:31,972 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:20:32,228 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:20:32,291 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:20:32,292 : INFO : resetting layer weights\n", "2025-03-27 14:20:32,298 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:32.298847', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:32,299 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:20:32,299 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=0 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:32.299428', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:33,372 : INFO : EPOCH 0 - PROGRESS: at 76.54% examples, 945487 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:33,696 : INFO : EPOCH 0: training on 1788017 raw words (1241493 effective words) took 1.3s, 931962 effective words/s\n", "2025-03-27 14:20:34,716 : INFO : EPOCH 1 - PROGRESS: at 73.18% examples, 900479 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:35,076 : INFO : EPOCH 1: training on 1788017 raw words (1242857 effective words) took 1.4s, 906717 effective words/s\n", "2025-03-27 14:20:36,089 : INFO : EPOCH 2 - PROGRESS: at 71.51% examples, 885375 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:36,465 : INFO : EPOCH 2: training on 1788017 raw words (1242586 effective words) took 1.4s, 899904 effective words/s\n", "2025-03-27 14:20:37,543 : INFO : EPOCH 3 - PROGRESS: at 74.86% examples, 922150 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:37,867 : INFO : EPOCH 3: training on 1788017 raw words (1242391 effective words) took 1.3s, 931478 effective words/s\n", "2025-03-27 14:20:38,880 : INFO : EPOCH 4 - PROGRESS: at 70.39% examples, 870743 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:20:39,290 : INFO : EPOCH 4: training on 1788017 raw words (1242515 effective words) took 1.4s, 878375 effective words/s\n", "2025-03-27 14:20:39,291 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211842 effective words) took 7.0s, 888473 effective words/s', 'datetime': '2025-03-27T14:20:39.291133', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:39,291 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:39.291370', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:39,295 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:39,358 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #19: {'train_data': '10MB', 'compute_loss': False, 'sg': 0, 'hs': 1, 'train_time_mean': 7.6848710378011065, 'train_time_std': 0.04688368226648027}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:20:39,543 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:39,544 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:39,590 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:39.590675', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:39,591 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:39.591104', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:39,636 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:39,639 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:39,639 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:39.639480', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:39,705 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:20:39,705 : INFO : resetting layer weights\n", "2025-03-27 14:20:39,711 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:39.711555', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:39,711 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:39.711964', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:40,728 : INFO : EPOCH 0 - PROGRESS: at 37.43% examples, 467615 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:41,733 : INFO : EPOCH 0 - PROGRESS: at 79.33% examples, 490302 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:42,235 : INFO : EPOCH 0: training on 1788017 raw words (1242524 effective words) took 2.5s, 494105 effective words/s\n", "2025-03-27 14:20:43,246 : INFO : EPOCH 1 - PROGRESS: at 37.99% examples, 476926 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:44,253 : INFO : EPOCH 1 - PROGRESS: at 80.45% examples, 498135 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:44,727 : INFO : EPOCH 1: training on 1788017 raw words (1242992 effective words) took 2.5s, 500277 effective words/s\n", "2025-03-27 14:20:45,816 : INFO : EPOCH 2 - PROGRESS: at 40.78% examples, 501766 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:46,821 : INFO : EPOCH 2 - PROGRESS: at 83.24% examples, 510392 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:47,231 : INFO : EPOCH 2: training on 1788017 raw words (1241482 effective words) took 2.4s, 509267 effective words/s\n", "2025-03-27 14:20:48,264 : INFO : EPOCH 3 - PROGRESS: at 35.75% examples, 439991 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:49,266 : INFO : EPOCH 3 - PROGRESS: at 76.54% examples, 470409 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:49,832 : INFO : EPOCH 3: training on 1788017 raw words (1242989 effective words) took 2.6s, 479684 effective words/s\n", "2025-03-27 14:20:50,844 : INFO : EPOCH 4 - PROGRESS: at 35.75% examples, 448303 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:51,846 : INFO : EPOCH 4 - PROGRESS: at 77.09% examples, 478541 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:52,456 : INFO : EPOCH 4: training on 1788017 raw words (1242012 effective words) took 2.6s, 474853 effective words/s\n", "2025-03-27 14:20:52,457 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211999 effective words) took 12.7s, 487409 effective words/s', 'datetime': '2025-03-27T14:20:52.457156', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:52,457 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:20:52.457422', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:20:52,460 : INFO : collecting all words and their counts\n", "2025-03-27 14:20:52,529 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:20:52,723 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:20:52,724 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:20:52,770 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:20:52.770170', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:52,770 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:20:52.770638', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:52,814 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:20:52,816 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:20:52,816 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:20:52.816968', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:20:52,886 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:20:52,886 : INFO : resetting layer weights\n", "2025-03-27 14:20:52,893 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:20:52.893368', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:20:52,893 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:20:52.893748', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:20:53,903 : INFO : EPOCH 0 - PROGRESS: at 34.64% examples, 436387 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:54,913 : INFO : EPOCH 0 - PROGRESS: at 73.74% examples, 456498 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:55,596 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 2.7s, 461574 effective words/s\n", "2025-03-27 14:20:56,679 : INFO : EPOCH 1 - PROGRESS: at 37.99% examples, 471254 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:57,680 : INFO : EPOCH 1 - PROGRESS: at 74.86% examples, 462127 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:20:58,355 : INFO : EPOCH 1: training on 1788017 raw words (1242313 effective words) took 2.7s, 461687 effective words/s\n", "2025-03-27 14:20:59,388 : INFO : EPOCH 2 - PROGRESS: at 35.75% examples, 439228 words/s, in_qsize 5, out_qsize 0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:21:00,399 : INFO : EPOCH 2 - PROGRESS: at 76.54% examples, 468108 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:01,018 : INFO : EPOCH 2: training on 1788017 raw words (1242458 effective words) took 2.7s, 468111 effective words/s\n", "2025-03-27 14:21:02,029 : INFO : EPOCH 3 - PROGRESS: at 35.20% examples, 442624 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:03,043 : INFO : EPOCH 3 - PROGRESS: at 76.54% examples, 472871 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:21:03,601 : INFO : EPOCH 3: training on 1788017 raw words (1242659 effective words) took 2.6s, 482680 effective words/s\n", "2025-03-27 14:21:04,613 : INFO : EPOCH 4 - PROGRESS: at 37.43% examples, 469315 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:05,620 : INFO : EPOCH 4 - PROGRESS: at 77.65% examples, 480692 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:06,165 : INFO : EPOCH 4: training on 1788017 raw words (1242362 effective words) took 2.6s, 486060 effective words/s\n", "2025-03-27 14:21:06,166 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6212746 effective words) took 13.3s, 468087 effective words/s', 'datetime': '2025-03-27T14:21:06.166504', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:06,166 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:21:06.166724', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:21:06,169 : INFO : collecting all words and their counts\n", "2025-03-27 14:21:06,234 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:21:06,412 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:21:06,413 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:21:06,457 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:21:06.457098', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:06,457 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:21:06.457469', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:06,497 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:21:06,500 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:21:06,500 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:21:06.500513', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:06,566 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:21:06,566 : INFO : resetting layer weights\n", "2025-03-27 14:21:06,572 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:21:06.572631', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:21:06,572 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:21:06.572905', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:07,588 : INFO : EPOCH 0 - PROGRESS: at 37.43% examples, 467351 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:08,600 : INFO : EPOCH 0 - PROGRESS: at 78.21% examples, 481809 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:09,180 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 2.6s, 477530 effective words/s\n", "2025-03-27 14:21:10,195 : INFO : EPOCH 1 - PROGRESS: at 37.99% examples, 475539 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:11,199 : INFO : EPOCH 1 - PROGRESS: at 79.89% examples, 494299 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:11,735 : INFO : EPOCH 1: training on 1788017 raw words (1242045 effective words) took 2.5s, 487829 effective words/s\n", "2025-03-27 14:21:12,806 : INFO : EPOCH 2 - PROGRESS: at 40.22% examples, 504571 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:13,806 : INFO : EPOCH 2 - PROGRESS: at 82.12% examples, 509572 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:14,245 : INFO : EPOCH 2: training on 1788017 raw words (1242434 effective words) took 2.4s, 508671 effective words/s\n", "2025-03-27 14:21:15,322 : INFO : EPOCH 3 - PROGRESS: at 37.43% examples, 465975 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:16,334 : INFO : EPOCH 3 - PROGRESS: at 78.21% examples, 481105 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:16,863 : INFO : EPOCH 3: training on 1788017 raw words (1241664 effective words) took 2.6s, 486904 effective words/s\n", "2025-03-27 14:21:17,879 : INFO : EPOCH 4 - PROGRESS: at 37.99% examples, 474989 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:18,890 : INFO : EPOCH 4 - PROGRESS: at 77.65% examples, 478825 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:19,455 : INFO : EPOCH 4: training on 1788017 raw words (1242591 effective words) took 2.6s, 480933 effective words/s\n", "2025-03-27 14:21:19,456 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6210181 effective words) took 12.9s, 482034 effective words/s', 'datetime': '2025-03-27T14:21:19.456224', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:19,456 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:21:19.456453', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:21:19,458 : INFO : collecting all words and their counts\n", "2025-03-27 14:21:19,524 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #20: {'train_data': '10MB', 'compute_loss': True, 'sg': 1, 'hs': 0, 'train_time_mean': 13.387713034947714, 'train_time_std': 0.23221319096515025}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:21:19,704 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:21:19,704 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:21:19,748 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:21:19.748657', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:19,748 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:21:19.748985', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:19,789 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:21:19,792 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:21:19,792 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:21:19.792379', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:19,857 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:21:19,858 : INFO : resetting layer weights\n", "2025-03-27 14:21:19,864 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:21:19.864097', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:21:19,864 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:21:19.864377', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:20,903 : INFO : EPOCH 0 - PROGRESS: at 36.87% examples, 450488 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:21,919 : INFO : EPOCH 0 - PROGRESS: at 73.18% examples, 444579 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:22,684 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 2.8s, 441624 effective words/s\n", "2025-03-27 14:21:23,700 : INFO : EPOCH 1 - PROGRESS: at 37.99% examples, 474836 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:24,702 : INFO : EPOCH 1 - PROGRESS: at 80.45% examples, 497906 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:25,172 : INFO : EPOCH 1: training on 1788017 raw words (1242045 effective words) took 2.5s, 500791 effective words/s\n", "2025-03-27 14:21:26,181 : INFO : EPOCH 2 - PROGRESS: at 37.99% examples, 478385 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:27,184 : INFO : EPOCH 2 - PROGRESS: at 80.45% examples, 500075 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:27,660 : INFO : EPOCH 2: training on 1788017 raw words (1242786 effective words) took 2.5s, 501285 effective words/s\n", "2025-03-27 14:21:28,674 : INFO : EPOCH 3 - PROGRESS: at 36.31% examples, 454572 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:29,675 : INFO : EPOCH 3 - PROGRESS: at 76.54% examples, 474916 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:30,238 : INFO : EPOCH 3: training on 1788017 raw words (1242773 effective words) took 2.6s, 483636 effective words/s\n", "2025-03-27 14:21:31,256 : INFO : EPOCH 4 - PROGRESS: at 34.08% examples, 425030 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:32,267 : INFO : EPOCH 4 - PROGRESS: at 74.30% examples, 457382 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:32,897 : INFO : EPOCH 4: training on 1788017 raw words (1242769 effective words) took 2.7s, 468785 effective words/s\n", "2025-03-27 14:21:32,897 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211820 effective words) took 13.0s, 476605 effective words/s', 'datetime': '2025-03-27T14:21:32.897908', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:32,898 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:21:32.898163', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:21:32,899 : INFO : collecting all words and their counts\n", "2025-03-27 14:21:32,966 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:21:33,173 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:21:33,174 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:21:33,218 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:21:33.218171', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:33,218 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:21:33.218609', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:33,259 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:21:33,261 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:21:33,261 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:21:33.261906', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:33,326 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:21:33,327 : INFO : resetting layer weights\n", "2025-03-27 14:21:33,333 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:21:33.333482', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:21:33,333 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:21:33.333772', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:34,411 : INFO : EPOCH 0 - PROGRESS: at 37.99% examples, 474109 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:35,414 : INFO : EPOCH 0 - PROGRESS: at 74.86% examples, 462905 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:36,030 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 2.6s, 472908 effective words/s\n", "2025-03-27 14:21:37,040 : INFO : EPOCH 1 - PROGRESS: at 37.99% examples, 477448 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:38,053 : INFO : EPOCH 1 - PROGRESS: at 79.33% examples, 490126 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:38,647 : INFO : EPOCH 1: training on 1788017 raw words (1242483 effective words) took 2.6s, 476274 effective words/s\n", "2025-03-27 14:21:39,718 : INFO : EPOCH 2 - PROGRESS: at 34.64% examples, 435034 words/s, in_qsize 5, out_qsize 0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:21:40,722 : INFO : EPOCH 2 - PROGRESS: at 76.54% examples, 474509 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:41,288 : INFO : EPOCH 2: training on 1788017 raw words (1241607 effective words) took 2.6s, 482611 effective words/s\n", "2025-03-27 14:21:42,361 : INFO : EPOCH 3 - PROGRESS: at 39.11% examples, 490200 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:21:43,375 : INFO : EPOCH 3 - PROGRESS: at 78.21% examples, 481950 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:43,930 : INFO : EPOCH 3: training on 1788017 raw words (1242530 effective words) took 2.6s, 482588 effective words/s\n", "2025-03-27 14:21:44,953 : INFO : EPOCH 4 - PROGRESS: at 37.43% examples, 463825 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:45,961 : INFO : EPOCH 4 - PROGRESS: at 78.77% examples, 484527 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:46,480 : INFO : EPOCH 4: training on 1788017 raw words (1242091 effective words) took 2.5s, 488735 effective words/s\n", "2025-03-27 14:21:46,481 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211665 effective words) took 13.1s, 472471 effective words/s', 'datetime': '2025-03-27T14:21:46.481039', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:46,481 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:21:46.481255', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:21:46,482 : INFO : collecting all words and their counts\n", "2025-03-27 14:21:46,548 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:21:46,728 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:21:46,728 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:21:46,772 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:21:46.772794', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:46,773 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:21:46.773165', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:46,814 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:21:46,816 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:21:46,816 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:21:46.816398', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:46,880 : INFO : estimated required memory for 20167 words and 100 dimensions: 26217100 bytes\n", "2025-03-27 14:21:46,880 : INFO : resetting layer weights\n", "2025-03-27 14:21:46,887 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:21:46.887353', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:21:46,887 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=0 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:21:46.887649', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:47,976 : INFO : EPOCH 0 - PROGRESS: at 40.78% examples, 503211 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:48,986 : INFO : EPOCH 0 - PROGRESS: at 79.89% examples, 489488 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:49,502 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 2.5s, 487864 effective words/s\n", "2025-03-27 14:21:50,579 : INFO : EPOCH 1 - PROGRESS: at 40.78% examples, 508745 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:21:51,582 : INFO : EPOCH 1 - PROGRESS: at 83.24% examples, 514709 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:52,001 : INFO : EPOCH 1: training on 1788017 raw words (1242313 effective words) took 2.4s, 511109 effective words/s\n", "2025-03-27 14:21:53,086 : INFO : EPOCH 2 - PROGRESS: at 40.78% examples, 504113 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:54,097 : INFO : EPOCH 2 - PROGRESS: at 83.80% examples, 513482 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:54,490 : INFO : EPOCH 2: training on 1788017 raw words (1241885 effective words) took 2.4s, 512810 effective words/s\n", "2025-03-27 14:21:55,524 : INFO : EPOCH 3 - PROGRESS: at 39.11% examples, 480273 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:56,534 : INFO : EPOCH 3 - PROGRESS: at 82.12% examples, 501594 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:56,969 : INFO : EPOCH 3: training on 1788017 raw words (1242417 effective words) took 2.5s, 502780 effective words/s\n", "2025-03-27 14:21:57,978 : INFO : EPOCH 4 - PROGRESS: at 37.99% examples, 477682 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:58,981 : INFO : EPOCH 4 - PROGRESS: at 77.09% examples, 478946 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:21:59,558 : INFO : EPOCH 4: training on 1788017 raw words (1241899 effective words) took 2.6s, 481345 effective words/s\n", "2025-03-27 14:21:59,558 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211468 effective words) took 12.7s, 490221 effective words/s', 'datetime': '2025-03-27T14:21:59.558472', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:21:59,558 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:21:59.558749', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:21:59,560 : INFO : collecting all words and their counts\n", "2025-03-27 14:21:59,627 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #21: {'train_data': '10MB', 'compute_loss': False, 'sg': 1, 'hs': 0, 'train_time_mean': 13.367362340291342, 'train_time_std': 0.21309599541612576}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:21:59,807 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:21:59,807 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:21:59,851 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:21:59.851860', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:59,852 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:21:59.852268', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:59,893 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:21:59,894 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:21:59,895 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:21:59.895322', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:21:59,901 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:22:00,230 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:22:00,292 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:22:00,292 : INFO : resetting layer weights\n", "2025-03-27 14:22:00,299 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:22:00.299574', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:22:00,300 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:22:00,300 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:22:00.300246', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:22:01,309 : INFO : EPOCH 0 - PROGRESS: at 16.76% examples, 212756 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:02,314 : INFO : EPOCH 0 - PROGRESS: at 35.20% examples, 220941 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:03,347 : INFO : EPOCH 0 - PROGRESS: at 52.51% examples, 216307 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:04,380 : INFO : EPOCH 0 - PROGRESS: at 70.95% examples, 216654 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:05,382 : INFO : EPOCH 0 - PROGRESS: at 88.83% examples, 217864 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:22:06,005 : INFO : EPOCH 0: training on 1788017 raw words (1242982 effective words) took 5.7s, 218179 effective words/s\n", "2025-03-27 14:22:07,088 : INFO : EPOCH 1 - PROGRESS: at 17.32% examples, 204627 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:08,093 : INFO : EPOCH 1 - PROGRESS: at 35.75% examples, 216434 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:09,165 : INFO : EPOCH 1 - PROGRESS: at 52.51% examples, 208606 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:10,212 : INFO : EPOCH 1 - PROGRESS: at 70.95% examples, 210008 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:11,214 : INFO : EPOCH 1 - PROGRESS: at 88.27% examples, 211222 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:11,883 : INFO : EPOCH 1: training on 1788017 raw words (1242552 effective words) took 5.9s, 211678 effective words/s\n", "2025-03-27 14:22:12,916 : INFO : EPOCH 2 - PROGRESS: at 15.64% examples, 193892 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:13,924 : INFO : EPOCH 2 - PROGRESS: at 34.64% examples, 214454 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:14,984 : INFO : EPOCH 2 - PROGRESS: at 54.19% examples, 218786 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:22:16,002 : INFO : EPOCH 2 - PROGRESS: at 73.74% examples, 222888 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:17,044 : INFO : EPOCH 2 - PROGRESS: at 92.74% examples, 223718 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:17,420 : INFO : EPOCH 2: training on 1788017 raw words (1241603 effective words) took 5.5s, 224579 effective words/s\n", "2025-03-27 14:22:18,464 : INFO : EPOCH 3 - PROGRESS: at 15.64% examples, 191662 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:19,478 : INFO : EPOCH 3 - PROGRESS: at 32.96% examples, 202937 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:20,544 : INFO : EPOCH 3 - PROGRESS: at 52.51% examples, 210943 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:21,546 : INFO : EPOCH 3 - PROGRESS: at 72.07% examples, 217611 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:22,580 : INFO : EPOCH 3 - PROGRESS: at 89.39% examples, 215890 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:23,174 : INFO : EPOCH 3: training on 1788017 raw words (1242417 effective words) took 5.7s, 216249 effective words/s\n", "2025-03-27 14:22:24,234 : INFO : EPOCH 4 - PROGRESS: at 15.64% examples, 188292 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:25,288 : INFO : EPOCH 4 - PROGRESS: at 34.08% examples, 203667 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:26,327 : INFO : EPOCH 4 - PROGRESS: at 52.51% examples, 208781 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:27,380 : INFO : EPOCH 4 - PROGRESS: at 70.95% examples, 209982 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:28,391 : INFO : EPOCH 4 - PROGRESS: at 88.83% examples, 212123 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:29,087 : INFO : EPOCH 4: training on 1788017 raw words (1242479 effective words) took 5.9s, 210388 effective words/s\n", "2025-03-27 14:22:29,088 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6212033 effective words) took 28.8s, 215782 effective words/s', 'datetime': '2025-03-27T14:22:29.088544', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:22:29,088 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:22:29.088811', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:22:29,091 : INFO : collecting all words and their counts\n", "2025-03-27 14:22:29,156 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:22:29,336 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:22:29,336 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:22:29,382 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:22:29.382032', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:22:29,382 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:22:29.382533', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:22:29,423 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:22:29,425 : INFO : sample=0.001 downsamples 38 most-common words\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:22:29,425 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:22:29.425987', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:22:29,430 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:22:29,686 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:22:29,749 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:22:29,749 : INFO : resetting layer weights\n", "2025-03-27 14:22:29,756 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:22:29.756842', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:22:29,757 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:22:29,757 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:22:29.757381', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:22:30,857 : INFO : EPOCH 0 - PROGRESS: at 17.32% examples, 212898 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:31,859 : INFO : EPOCH 0 - PROGRESS: at 36.31% examples, 224622 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:32,918 : INFO : EPOCH 0 - PROGRESS: at 55.87% examples, 225521 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:33,928 : INFO : EPOCH 0 - PROGRESS: at 75.42% examples, 228766 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:34,974 : INFO : EPOCH 0 - PROGRESS: at 94.41% examples, 228102 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:35,258 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 5.4s, 228691 effective words/s\n", "2025-03-27 14:22:36,267 : INFO : EPOCH 1 - PROGRESS: at 16.76% examples, 212735 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:37,273 : INFO : EPOCH 1 - PROGRESS: at 35.20% examples, 220834 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:38,298 : INFO : EPOCH 1 - PROGRESS: at 52.51% examples, 216800 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:39,308 : INFO : EPOCH 1 - PROGRESS: at 69.83% examples, 214685 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:22:40,335 : INFO : EPOCH 1 - PROGRESS: at 87.71% examples, 215294 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:41,032 : INFO : EPOCH 1: training on 1788017 raw words (1242313 effective words) took 5.8s, 215481 effective words/s\n", "2025-03-27 14:22:42,061 : INFO : EPOCH 2 - PROGRESS: at 15.64% examples, 194291 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:43,068 : INFO : EPOCH 2 - PROGRESS: at 32.40% examples, 201414 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:44,124 : INFO : EPOCH 2 - PROGRESS: at 50.84% examples, 206380 words/s, in_qsize 6, out_qsize 1\n", "2025-03-27 14:22:45,139 : INFO : EPOCH 2 - PROGRESS: at 68.72% examples, 208141 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:46,189 : INFO : EPOCH 2 - PROGRESS: at 87.15% examples, 210585 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:46,911 : INFO : EPOCH 2: training on 1788017 raw words (1242242 effective words) took 5.9s, 211585 effective words/s\n", "2025-03-27 14:22:48,012 : INFO : EPOCH 3 - PROGRESS: at 17.32% examples, 212992 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:49,025 : INFO : EPOCH 3 - PROGRESS: at 34.64% examples, 213254 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:50,031 : INFO : EPOCH 3 - PROGRESS: at 53.63% examples, 219764 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:51,055 : INFO : EPOCH 3 - PROGRESS: at 72.63% examples, 221533 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:22:52,072 : INFO : EPOCH 3 - PROGRESS: at 91.06% examples, 222518 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:52,533 : INFO : EPOCH 3: training on 1788017 raw words (1242739 effective words) took 5.6s, 223710 effective words/s\n", "2025-03-27 14:22:53,626 : INFO : EPOCH 4 - PROGRESS: at 17.32% examples, 213953 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:54,674 : INFO : EPOCH 4 - PROGRESS: at 34.08% examples, 206905 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:55,743 : INFO : EPOCH 4 - PROGRESS: at 52.51% examples, 208930 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:22:56,753 : INFO : EPOCH 4 - PROGRESS: at 70.39% examples, 210546 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:57,776 : INFO : EPOCH 4 - PROGRESS: at 87.15% examples, 209398 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:22:58,575 : INFO : EPOCH 4: training on 1788017 raw words (1242497 effective words) took 6.0s, 207863 effective words/s\n", "2025-03-27 14:22:58,576 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6212745 effective words) took 28.8s, 215574 effective words/s', 'datetime': '2025-03-27T14:22:58.576174', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:22:58,576 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:22:58.576394', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:22:58,579 : INFO : collecting all words and their counts\n", "2025-03-27 14:22:58,644 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:22:58,848 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:22:58,849 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:22:58,900 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:22:58.900091', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:22:58,900 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:22:58.900613', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:22:58,946 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:22:58,949 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:22:58,949 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:22:58.949432', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:22:58,956 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:22:59,225 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:22:59,291 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:22:59,291 : INFO : resetting layer weights\n", "2025-03-27 14:22:59,298 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:22:59.298391', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:22:59,298 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:22:59,299 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:22:59.299026', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:23:00,332 : INFO : EPOCH 0 - PROGRESS: at 15.64% examples, 193590 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:01,362 : INFO : EPOCH 0 - PROGRESS: at 34.08% examples, 209166 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:02,365 : INFO : EPOCH 0 - PROGRESS: at 52.51% examples, 215035 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:03,374 : INFO : EPOCH 0 - PROGRESS: at 72.07% examples, 220419 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:04,419 : INFO : EPOCH 0 - PROGRESS: at 91.06% examples, 221782 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:04,881 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 5.6s, 222967 effective words/s\n", "2025-03-27 14:23:05,970 : INFO : EPOCH 1 - PROGRESS: at 17.32% examples, 203356 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:06,981 : INFO : EPOCH 1 - PROGRESS: at 36.31% examples, 218432 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:07,988 : INFO : EPOCH 1 - PROGRESS: at 55.31% examples, 222844 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:09,002 : INFO : EPOCH 1 - PROGRESS: at 72.07% examples, 217886 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:10,011 : INFO : EPOCH 1 - PROGRESS: at 90.50% examples, 219950 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:10,530 : INFO : EPOCH 1: training on 1788017 raw words (1242313 effective words) took 5.6s, 220249 effective words/s\n", "2025-03-27 14:23:11,618 : INFO : EPOCH 2 - PROGRESS: at 17.32% examples, 215086 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:12,620 : INFO : EPOCH 2 - PROGRESS: at 34.64% examples, 215388 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:13,623 : INFO : EPOCH 2 - PROGRESS: at 51.40% examples, 212593 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:14,632 : INFO : EPOCH 2 - PROGRESS: at 70.39% examples, 216723 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:15,648 : INFO : EPOCH 2 - PROGRESS: at 88.83% examples, 218681 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:16,262 : INFO : EPOCH 2: training on 1788017 raw words (1241885 effective words) took 5.7s, 219204 effective words/s\n", "2025-03-27 14:23:17,350 : INFO : EPOCH 3 - PROGRESS: at 17.32% examples, 203542 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:18,407 : INFO : EPOCH 3 - PROGRESS: at 35.75% examples, 210582 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:19,445 : INFO : EPOCH 3 - PROGRESS: at 52.51% examples, 206976 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:20,466 : INFO : EPOCH 3 - PROGRESS: at 70.39% examples, 208498 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:21,496 : INFO : EPOCH 3 - PROGRESS: at 86.03% examples, 204819 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:22,382 : INFO : EPOCH 3: training on 1788017 raw words (1242427 effective words) took 6.1s, 203295 effective words/s\n", "2025-03-27 14:23:23,467 : INFO : EPOCH 4 - PROGRESS: at 15.64% examples, 194817 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:24,469 : INFO : EPOCH 4 - PROGRESS: at 32.96% examples, 205702 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:25,511 : INFO : EPOCH 4 - PROGRESS: at 50.84% examples, 208163 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:26,545 : INFO : EPOCH 4 - PROGRESS: at 69.27% examples, 210100 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:27,602 : INFO : EPOCH 4 - PROGRESS: at 87.71% examples, 211727 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:28,277 : INFO : EPOCH 4: training on 1788017 raw words (1242420 effective words) took 5.8s, 213101 effective words/s\n", "2025-03-27 14:23:28,278 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211999 effective words) took 29.0s, 214357 effective words/s', 'datetime': '2025-03-27T14:23:28.278416', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:23:28,278 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:23:28.278634', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:23:28,282 : INFO : collecting all words and their counts\n", "2025-03-27 14:23:28,347 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #22: {'train_data': '10MB', 'compute_loss': True, 'sg': 1, 'hs': 1, 'train_time_mean': 29.573920567830402, 'train_time_std': 0.09235685986903587}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:23:28,543 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:23:28,543 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:23:28,594 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:23:28.594829', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:23:28,595 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:23:28.595323', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:23:28,642 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:23:28,645 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:23:28,645 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:23:28.645667', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:23:28,650 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:23:28,975 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:23:29,038 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:23:29,038 : INFO : resetting layer weights\n", "2025-03-27 14:23:29,045 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:23:29.045236', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:23:29,045 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:23:29,045 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:23:29.045847', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:23:30,132 : INFO : EPOCH 0 - PROGRESS: at 17.32% examples, 204007 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:31,139 : INFO : EPOCH 0 - PROGRESS: at 36.31% examples, 219279 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:32,195 : INFO : EPOCH 0 - PROGRESS: at 55.87% examples, 222168 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:33,201 : INFO : EPOCH 0 - PROGRESS: at 74.86% examples, 224657 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:34,221 : INFO : EPOCH 0 - PROGRESS: at 93.85% examples, 225989 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:34,562 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 5.5s, 225663 effective words/s\n", "2025-03-27 14:23:35,642 : INFO : EPOCH 1 - PROGRESS: at 17.32% examples, 205079 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:36,647 : INFO : EPOCH 1 - PROGRESS: at 36.31% examples, 219886 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:37,705 : INFO : EPOCH 1 - PROGRESS: at 55.87% examples, 222445 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:38,744 : INFO : EPOCH 1 - PROGRESS: at 74.30% examples, 221401 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:39,795 : INFO : EPOCH 1 - PROGRESS: at 92.74% examples, 220796 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:40,178 : INFO : EPOCH 1: training on 1788017 raw words (1242313 effective words) took 5.6s, 221538 effective words/s\n", "2025-03-27 14:23:41,261 : INFO : EPOCH 2 - PROGRESS: at 17.32% examples, 215973 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:42,273 : INFO : EPOCH 2 - PROGRESS: at 36.31% examples, 224987 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:43,338 : INFO : EPOCH 2 - PROGRESS: at 55.87% examples, 225300 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:44,343 : INFO : EPOCH 2 - PROGRESS: at 74.86% examples, 227082 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:45,345 : INFO : EPOCH 2 - PROGRESS: at 91.62% examples, 223356 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:45,839 : INFO : EPOCH 2: training on 1788017 raw words (1241885 effective words) took 5.6s, 221943 effective words/s\n", "2025-03-27 14:23:46,935 : INFO : EPOCH 3 - PROGRESS: at 15.64% examples, 191522 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:47,959 : INFO : EPOCH 3 - PROGRESS: at 34.08% examples, 208525 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:48,995 : INFO : EPOCH 3 - PROGRESS: at 50.84% examples, 205920 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:50,009 : INFO : EPOCH 3 - PROGRESS: at 70.39% examples, 212855 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:51,056 : INFO : EPOCH 3 - PROGRESS: at 87.71% examples, 211642 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:51,767 : INFO : EPOCH 3: training on 1788017 raw words (1241878 effective words) took 5.9s, 211720 effective words/s\n", "2025-03-27 14:23:52,797 : INFO : EPOCH 4 - PROGRESS: at 15.64% examples, 194282 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:23:53,814 : INFO : EPOCH 4 - PROGRESS: at 34.08% examples, 210635 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:54,816 : INFO : EPOCH 4 - PROGRESS: at 52.51% examples, 216218 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:55,831 : INFO : EPOCH 4 - PROGRESS: at 70.39% examples, 215664 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:56,843 : INFO : EPOCH 4 - PROGRESS: at 87.71% examples, 215287 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:23:57,515 : INFO : EPOCH 4: training on 1788017 raw words (1242104 effective words) took 5.7s, 216408 effective words/s\n", "2025-03-27 14:23:57,515 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211134 effective words) took 28.5s, 218164 effective words/s', 'datetime': '2025-03-27T14:23:57.515810', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:23:57,516 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:23:57.516042', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:23:57,520 : INFO : collecting all words and their counts\n", "2025-03-27 14:23:57,584 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:23:57,762 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:23:57,763 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:23:57,808 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:23:57.808180', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:23:57,808 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:23:57.808609', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:23:57,853 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:23:57,856 : INFO : sample=0.001 downsamples 38 most-common words\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:23:57,856 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:23:57.856809', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:23:57,861 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:23:58,118 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:23:58,179 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:23:58,180 : INFO : resetting layer weights\n", "2025-03-27 14:23:58,186 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:23:58.186951', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:23:58,187 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n", "2025-03-27 14:23:58,187 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:23:58.187545', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:23:59,288 : INFO : EPOCH 0 - PROGRESS: at 15.64% examples, 191771 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:00,291 : INFO : EPOCH 0 - PROGRESS: at 32.40% examples, 200629 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:01,340 : INFO : EPOCH 0 - PROGRESS: at 49.16% examples, 199931 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:02,369 : INFO : EPOCH 0 - PROGRESS: at 65.92% examples, 199042 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:03,390 : INFO : EPOCH 0 - PROGRESS: at 82.68% examples, 200281 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:04,354 : INFO : EPOCH 0: training on 1788017 raw words (1242954 effective words) took 6.1s, 203718 effective words/s\n", "2025-03-27 14:24:05,385 : INFO : EPOCH 1 - PROGRESS: at 15.64% examples, 193874 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:06,393 : INFO : EPOCH 1 - PROGRESS: at 34.64% examples, 214739 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:07,456 : INFO : EPOCH 1 - PROGRESS: at 54.19% examples, 218728 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:08,464 : INFO : EPOCH 1 - PROGRESS: at 73.18% examples, 221753 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:09,464 : INFO : EPOCH 1 - PROGRESS: at 89.94% examples, 219393 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:10,014 : INFO : EPOCH 1: training on 1788017 raw words (1242313 effective words) took 5.7s, 219779 effective words/s\n", "2025-03-27 14:24:11,103 : INFO : EPOCH 2 - PROGRESS: at 17.32% examples, 214683 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:12,107 : INFO : EPOCH 2 - PROGRESS: at 36.31% examples, 225205 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:13,159 : INFO : EPOCH 2 - PROGRESS: at 55.87% examples, 226355 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:14,169 : INFO : EPOCH 2 - PROGRESS: at 75.42% examples, 229377 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:15,213 : INFO : EPOCH 2 - PROGRESS: at 94.41% examples, 228653 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:15,500 : INFO : EPOCH 2: training on 1788017 raw words (1241885 effective words) took 5.4s, 229095 effective words/s\n", "2025-03-27 14:24:16,594 : INFO : EPOCH 3 - PROGRESS: at 17.32% examples, 214048 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:17,605 : INFO : EPOCH 3 - PROGRESS: at 36.87% examples, 227656 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:18,605 : INFO : EPOCH 3 - PROGRESS: at 54.19% examples, 222850 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:19,631 : INFO : EPOCH 3 - PROGRESS: at 72.63% examples, 222214 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:20,632 : INFO : EPOCH 3 - PROGRESS: at 91.06% examples, 223718 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:21,105 : INFO : EPOCH 3: training on 1788017 raw words (1242427 effective words) took 5.5s, 224337 effective words/s\n", "2025-03-27 14:24:22,181 : INFO : EPOCH 4 - PROGRESS: at 17.32% examples, 205864 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:23,205 : INFO : EPOCH 4 - PROGRESS: at 36.31% examples, 218292 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:24,280 : INFO : EPOCH 4 - PROGRESS: at 54.19% examples, 213706 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:25,306 : INFO : EPOCH 4 - PROGRESS: at 73.18% examples, 216894 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:26,340 : INFO : EPOCH 4 - PROGRESS: at 91.06% examples, 216769 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:26,803 : INFO : EPOCH 4: training on 1788017 raw words (1242005 effective words) took 5.7s, 218309 effective words/s\n", "2025-03-27 14:24:26,803 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6211584 effective words) took 28.6s, 217065 effective words/s', 'datetime': '2025-03-27T14:24:26.803628', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:24:26,803 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:24:26.803883', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n", "2025-03-27 14:24:26,808 : INFO : collecting all words and their counts\n", "2025-03-27 14:24:26,873 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types\n", "2025-03-27 14:24:27,051 : INFO : collected 73167 word types from a corpus of 1788017 raw words and 179 sentences\n", "2025-03-27 14:24:27,051 : INFO : Creating a fresh vocabulary\n", "2025-03-27 14:24:27,095 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 retains 20167 unique words (27.56% of original 73167, drops 53000)', 'datetime': '2025-03-27T14:24:27.095541', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:24:27,096 : INFO : Word2Vec lifecycle event {'msg': 'effective_min_count=5 leaves 1703716 word corpus (95.29% of original 1788017, drops 84301)', 'datetime': '2025-03-27T14:24:27.096039', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:24:27,137 : INFO : deleting the raw counts dictionary of 73167 items\n", "2025-03-27 14:24:27,139 : INFO : sample=0.001 downsamples 38 most-common words\n", "2025-03-27 14:24:27,140 : INFO : Word2Vec lifecycle event {'msg': 'downsampling leaves estimated 1242287.3013176506 word corpus (72.9%% of prior 1703716)', 'datetime': '2025-03-27T14:24:27.140079', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'prepare_vocab'}\n", "2025-03-27 14:24:27,145 : INFO : constructing a huffman tree from 20167 words\n", "2025-03-27 14:24:27,476 : INFO : built huffman tree with maximum node depth 18\n", "2025-03-27 14:24:27,537 : INFO : estimated required memory for 20167 words and 100 dimensions: 38317300 bytes\n", "2025-03-27 14:24:27,538 : INFO : resetting layer weights\n", "2025-03-27 14:24:27,544 : INFO : Word2Vec lifecycle event {'update': False, 'trim_rule': 'None', 'datetime': '2025-03-27T14:24:27.544972', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'build_vocab'}\n", "2025-03-27 14:24:27,545 : WARNING : Both hierarchical softmax and negative sampling are activated. This is probably a mistake. You should set either 'hs=0' or 'negative=0' to disable one of them. \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-03-27 14:24:27,545 : INFO : Word2Vec lifecycle event {'msg': 'training model with 3 workers on 20167 vocabulary and 100 features, using sg=1 hs=1 sample=0.001 negative=5 window=5 shrink_windows=True', 'datetime': '2025-03-27T14:24:27.545476', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:24:28,685 : INFO : EPOCH 0 - PROGRESS: at 17.32% examples, 204337 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:29,732 : INFO : EPOCH 0 - PROGRESS: at 35.75% examples, 212112 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:30,802 : INFO : EPOCH 0 - PROGRESS: at 54.19% examples, 212146 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:31,847 : INFO : EPOCH 0 - PROGRESS: at 72.63% examples, 213075 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:32,888 : INFO : EPOCH 0 - PROGRESS: at 89.39% examples, 210613 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:33,460 : INFO : EPOCH 0: training on 1788017 raw words (1241447 effective words) took 5.9s, 212198 effective words/s\n", "2025-03-27 14:24:34,530 : INFO : EPOCH 1 - PROGRESS: at 15.64% examples, 197883 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:35,534 : INFO : EPOCH 1 - PROGRESS: at 33.52% examples, 210361 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:36,543 : INFO : EPOCH 1 - PROGRESS: at 49.72% examples, 206729 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:37,543 : INFO : EPOCH 1 - PROGRESS: at 68.16% examples, 210629 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:38,558 : INFO : EPOCH 1 - PROGRESS: at 85.47% examples, 211176 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:39,426 : INFO : EPOCH 1: training on 1788017 raw words (1242045 effective words) took 5.9s, 210499 effective words/s\n", "2025-03-27 14:24:40,515 : INFO : EPOCH 2 - PROGRESS: at 17.32% examples, 203589 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:41,521 : INFO : EPOCH 2 - PROGRESS: at 35.75% examples, 215809 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:42,585 : INFO : EPOCH 2 - PROGRESS: at 54.19% examples, 214991 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:43,588 : INFO : EPOCH 2 - PROGRESS: at 72.07% examples, 215764 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:44,597 : INFO : EPOCH 2 - PROGRESS: at 88.27% examples, 212761 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:45,250 : INFO : EPOCH 2: training on 1788017 raw words (1242434 effective words) took 5.8s, 213619 effective words/s\n", "2025-03-27 14:24:46,379 : INFO : EPOCH 3 - PROGRESS: at 17.32% examples, 207081 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:47,380 : INFO : EPOCH 3 - PROGRESS: at 35.75% examples, 217856 words/s, in_qsize 6, out_qsize 0\n", "2025-03-27 14:24:48,387 : INFO : EPOCH 3 - PROGRESS: at 54.19% examples, 220326 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:49,400 : INFO : EPOCH 3 - PROGRESS: at 70.95% examples, 215779 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:50,453 : INFO : EPOCH 3 - PROGRESS: at 89.39% examples, 216415 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:51,022 : INFO : EPOCH 3: training on 1788017 raw words (1241608 effective words) took 5.7s, 217640 effective words/s\n", "2025-03-27 14:24:52,126 : INFO : EPOCH 4 - PROGRESS: at 15.64% examples, 191154 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:53,142 : INFO : EPOCH 4 - PROGRESS: at 32.40% examples, 199016 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:54,143 : INFO : EPOCH 4 - PROGRESS: at 49.72% examples, 204345 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:55,150 : INFO : EPOCH 4 - PROGRESS: at 67.04% examples, 205138 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:56,197 : INFO : EPOCH 4 - PROGRESS: at 85.47% examples, 208219 words/s, in_qsize 5, out_qsize 0\n", "2025-03-27 14:24:57,031 : INFO : EPOCH 4: training on 1788017 raw words (1243257 effective words) took 5.9s, 209163 effective words/s\n", "2025-03-27 14:24:57,032 : INFO : Word2Vec lifecycle event {'msg': 'training on 8940085 raw words (6210791 effective words) took 29.5s, 210630 effective words/s', 'datetime': '2025-03-27T14:24:57.032068', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'train'}\n", "2025-03-27 14:24:57,032 : INFO : Word2Vec lifecycle event {'params': 'Word2Vec', 'datetime': '2025-03-27T14:24:57.032289', 'gensim': '4.3.3', 'python': '3.9.6 (default, Nov 11 2024, 03:15:38) \\n[Clang 16.0.0 (clang-1600.0.26.6)]', 'platform': 'macOS-14.7.4-arm64-arm-64bit', 'event': 'created'}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Word2vec model #23: {'train_data': '10MB', 'compute_loss': False, 'sg': 1, 'hs': 1, 'train_time_mean': 29.58455030123393, 'train_time_std': 0.45526659500085614}\n", " train_data compute_loss sg hs train_time_mean train_time_std\n", "4 25kB True 1 0 0.366939 0.011132\n", "5 25kB False 1 0 0.348893 0.003732\n", "6 25kB True 1 1 0.704012 0.008201\n", "7 25kB False 1 1 0.708051 0.013650\n", "0 25kB True 0 0 0.144582 0.004779\n", "1 25kB False 0 0 0.131805 0.002030\n", "2 25kB True 0 1 0.257878 0.028562\n", "3 25kB False 0 1 0.243136 0.004160\n", "12 1MB True 1 0 1.116595 0.018047\n", "13 1MB False 1 0 1.110381 0.016720\n", "14 1MB True 1 1 2.602241 0.074949\n", "15 1MB False 1 1 2.574062 0.083930\n", "8 1MB True 0 0 0.375568 0.005800\n", "9 1MB False 0 0 0.383377 0.008469\n", "10 1MB True 0 1 0.698642 0.011645\n", "11 1MB False 0 1 0.705466 0.001836\n", "20 10MB True 1 0 13.387713 0.232213\n", "21 10MB False 1 0 13.367362 0.213096\n", "22 10MB True 1 1 29.573921 0.092357\n", "23 10MB False 1 1 29.584550 0.455267\n", "16 10MB True 0 0 4.119073 0.012592\n", "17 10MB False 0 0 3.860674 0.060309\n", "18 10MB True 0 1 7.767792 0.105681\n", "19 10MB False 0 1 7.684871 0.046884\n" ] } ], "source": [ "# Temporarily reduce logging verbosity\n", "logging.root.level = logging.ERROR\n", "\n", "import time\n", "import numpy as np\n", "import pandas as pd\n", "\n", "train_time_values = []\n", "seed_val = 42\n", "sg_values = [0, 1]\n", "hs_values = [0, 1]\n", "\n", "fast = True\n", "if fast:\n", " input_data_subset = input_data[:3]\n", "else:\n", " input_data_subset = input_data\n", "\n", "\n", "for data in input_data_subset:\n", " for sg_val in sg_values:\n", " for hs_val in hs_values:\n", " for loss_flag in [True, False]:\n", " time_taken_list = []\n", " for i in range(3):\n", " start_time = time.time()\n", " w2v_model = gensim.models.Word2Vec(\n", " data,\n", " compute_loss=loss_flag,\n", " sg=sg_val,\n", " hs=hs_val,\n", " seed=seed_val,\n", " )\n", " time_taken_list.append(time.time() - start_time)\n", "\n", " time_taken_list = np.array(time_taken_list)\n", " time_mean = np.mean(time_taken_list)\n", " time_std = np.std(time_taken_list)\n", "\n", " model_result = {\n", " 'train_data': data.name,\n", " 'compute_loss': loss_flag,\n", " 'sg': sg_val,\n", " 'hs': hs_val,\n", " 'train_time_mean': time_mean,\n", " 'train_time_std': time_std,\n", " }\n", " print(\"Word2vec model #%i: %s\" % (len(train_time_values), model_result))\n", " train_time_values.append(model_result)\n", "\n", "train_times_table = pd.DataFrame(train_time_values)\n", "train_times_table = train_times_table.sort_values(\n", " by=['train_data', 'sg', 'hs', 'compute_loss'],\n", " ascending=[False, False, True, False],\n", ")\n", "print(train_times_table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualising Word Embeddings\n", "---------------------------\n", "\n", "The word embeddings made by the model can be visualised by reducing\n", "dimensionality of the words to 2 dimensions using tSNE.\n", "\n", "Visualisations can be used to notice semantic and syntactic trends in the data.\n", "\n", "Example:\n", "\n", "* Semantic: words like cat, dog, cow, etc. have a tendency to lie close by\n", "* Syntactic: words like run, running or cut, cutting lie close together.\n", "\n", "Vector relations like vKing - vMan = vQueen - vWoman can also be noticed.\n", "\n", ".. Important::\n", " The model used for the visualisation is trained on a small corpus. Thus\n", " some of the relations might not be so clear.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/8AAAPHCAYAAAB+K/mWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hTZRsG8Dtpk460TReQMFugjFq2IEsZgiJLQD8VcYCIsvwERXAhICqiHzJEhshSlpMhaNUypbJLwQIySstsge69knx/1BOSNuMkTaFJ7t91cV2QnHNyOjjnPO/7PM8r0el0OhARERERERGRy5Le7RMgIiIiIiIiourF4J+IiIiIiIjIxTH4JyIiIiIiInJxDP6JiIiIiIiIXByDfyIiIiIiIiIXx+CfiIiIiIiIyMUx+CciIiIiIiJycZ53+wSqSqvV4vr16/D394dEIrnbp0NEREREREQuTqfTITc3F3Xr1oVU6hxz6k4f/F+/fh0NGjS426dBREREREREbubKlSuoX7/+3T4NUZw++Pf39wdQ/k0PCAi4y2dDREREREREri4nJwcNGjTQx6POwOmDfyHVPyAggME/ERERERER3THOVHruHMUJRERERERERGQ3Bv9ERERERERELo7BPxEREREREZGLY/BPRERERERE5OIY/BMRERERERG5OAb/RERERERERC6OwT8RERERERGRi2PwT0REREREROTiGPwTERERERERuTgG/0REREREREQujsE/ERERERERkYtj8E9ERERERETk4hj8ExEREREREbk4Bv9ERERERERELo7BPxEREREREZGLY/BPRERERERE5OIY/BMRERERERG5OAb/RERERERERC6OwT8RERERERGRi2PwT0REREREROTiGPwTERERERERuTgG/0REREREREQujsE/ERERERERkYtj8E9ERERERETk4hj8ExEREREREbk4Bv9ERERERERELo7BPxEREREREZGLY/BPRERERERE5OIY/BMRERERERG5OAb/RERERERERC6OwT8RERERERGRi2PwT0REREREROTiGPwTERERERERuTgG/0REREREREQuzvNunwAREZG70mh1OJyUgZu5Rajt741O4cHwkEru9mkRERGRC2LwT0REdBdEJ6Rg1s+nkZJdpH9NrfTGjEGR6BelvotnRkRERK6I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XrQV+AP2MxiIiMj3CaJo7XbvH/xxfUUiIiIiiVTtH7A8or92eppZBoHBKNrtaMjKK2nRSaAQAHsF+5vvo5WZwUBE1Nb4YxzK4J+IiIjIyywF664G3k07CS5W1WLZ9h/tHwTg6Yl9EB+pciiDgYiorfHHOJRp/0RERERe5srUAWuCFALSk+IAAFtyi2UfFx+pwuQBnZx+XyIi8k0M/omIiIh8QNNg3Rm2pgM4UqmfVf2JiAITg38iIiIiP2dv2sDQxFhoolTQ2VnWT8uq/kREAUvh7QYQERERkfOkgoFNA38A0OlrMHtjDrLyShCkELDk9r52z8Wq/kREgYvBPxEREZGfMhhFLN2ab3lJv6v/Xbo1HwajiMxULdZNT0N0uLLFvjHhSqxrtqoAEREFFqb9ExEREfmpQ0VlLUb8mxIBlOhrcKioDOlJcabCggcLS5H980UAjXUGhnWP44g/EVGAY/BPRERE5KcuVFkP/K3tF6QQMDw5HsOT4z3VLCIi8kFM+yciIiLyU3Ir87OCPxERMfgnIiIi8lNDE2OhVYfCWsK+AFbwJyKiRgz+iYiIiPxUkELA4kkpANCiA0D6nhX8iYgIYPBPRERE5NcyU7VYOz0NGrV5ar9GHYq1rOBPRERXseAfERERkZ+TqvgfKirDhaoaJEQ2pvpzxJ+IiCQM/omIiIgCQJCicdk+IiIiS5j2T0RERERERBTgGPwTERERERERBTgG/0REREREREQBjsE/ERERERERUYBj8E9EREREREQU4Bj8ExEREREREQU4Bv9EREREREREAY7BPxEREREREVGAY/BPREREREREFOAY/BMREREREREFOAb/RERERERERAGOwT8RERERERFRgGPwT0RERERERBTgGPwTERERERERBTgG/0REREREREQBjsE/ERERERERUYBj8E9EREREREQU4Bj8ExEREREREQU4Bv9EREREREREAY7BPxEREREREVGAY/BPREREREREFOAY/BMREREREREFOAb/RERERERERAGOwT8RERERERFRgGPwT0RERERERBTgGPwTERERERERBTgG/0REREREREQBjsE/ERERERERUYBj8E9EREREREQU4Bj8ExEREREREQU4Bv9EREREREREAY7BPxEREREREVGAY/BPREREREREFOAY/BMREREREREFuGBvN8BVoigC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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "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", "\n", "def reduce_dimensions(model):\n", " num_dimensions = 2 # final num dimensions (2D, 3D, etc)\n", "\n", " # extract the words & their vectors, as numpy arrays\n", " vectors = np.asarray(model.wv.vectors)\n", " labels = np.asarray(model.wv.index_to_key) # fixed-width numpy strings\n", "\n", " # reduce using t-SNE\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)\n", "\n", "def plot_with_plotly(x_vals, y_vals, labels, plot_in_notebook=True):\n", " from plotly.offline import init_notebook_mode, iplot, plot\n", " import plotly.graph_objs as go\n", "\n", " trace = go.Scatter(x=x_vals, y=y_vals, mode='text', text=labels)\n", " data = [trace]\n", "\n", " if plot_in_notebook:\n", " init_notebook_mode(connected=True)\n", " iplot(data, filename='word-embedding-plot')\n", " else:\n", " plot(data, filename='word-embedding-plot.html')\n", "\n", "\n", "def plot_with_matplotlib(x_vals, y_vals, labels):\n", " import matplotlib.pyplot as plt\n", " import random\n", "\n", " random.seed(0)\n", "\n", " plt.figure(figsize=(12, 12))\n", " plt.scatter(x_vals, y_vals)\n", "\n", " #\n", " # Label randomly subsampled 50 data points\n", " #\n", " indices = list(range(len(labels)))\n", " selected_indices = random.sample(indices, 50)\n", " for i in selected_indices:\n", " plt.annotate(labels[i], (x_vals[i], y_vals[i]))\n", "\n", "try:\n", " get_ipython()\n", "except Exception:\n", " plot_function = plot_with_matplotlib\n", "else:\n", " plot_function = plot_with_matplotlib\n", "\n", "plot_function(x_vals, y_vals, labels)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Conclusion\n", "----------\n", "\n", "In this tutorial we learned how to train word2vec models on your custom data\n", "and also how to evaluate it. Hope that you too will find this popular tool\n", "useful in your Machine Learning tasks!\n", "\n", "Links\n", "-----\n", "\n", "- API docs: :py:mod:`gensim.models.word2vec`\n", "- `Original C toolkit and word2vec papers by Google `_.\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.6" } }, "nbformat": 4, "nbformat_minor": 1 }