{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог Артёма Агасиева: заметки с тегом Word embedding",
    "_rss_description": "Telegram: @aagasiev",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/agasiev.com\/tags\/word-embedding\/",
    "feed_url": "https:\/\/agasiev.com\/tags\/word-embedding\/json\/",
    "icon": "https:\/\/agasiev.com\/user\/userpic@2x.jpg?1529202066",
    "author": {
        "name": "Артём Агасиев",
        "url": "https:\/\/agasiev.com\/",
        "avatar": "https:\/\/agasiev.com\/user\/userpic@2x.jpg?1529202066"
    },
    "items": [
        {
            "id": "53",
            "url": "https:\/\/agasiev.com\/all\/facebook-fasttext\/",
            "title": "fastText эмбеддинги",
            "content_html": "<p><a href=\"https:\/\/fasttext.cc\">fastText<\/a> — библиотека для векторного представления слов и классификации текстов от Facebook AI Research.<\/p>\n<p>Для её сборки, нам потребуется компилятор с поддержкой C++11 (gcc-4.6.3, clang-3.3 и новее):<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git clone https:\/\/github.com\/facebookresearch\/fastText.git\r\ncd fastText\r\nsudo python3 -m pip install .<\/code><\/pre><p>Если у вас установлено несколько компиляторов разных версий, то можно запустить установку, явно указав путь к нужной версии компилятора:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">sudo CC='\/usr\/bin\/gcc-4.9' python3 -m pip install .<\/code><\/pre><h2>Используем уже натренированную модель<\/h2>\n<p>Тренированную модель для русского языка можно скачать <a href=\"https:\/\/github.com\/facebookresearch\/fastText\/blob\/master\/docs\/crawl-vectors.md\">тут<\/a>. В архиве занимает 4.2 Гб, распакованная 6.8 Гб:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">wget https:\/\/dl.fbaipublicfiles.com\/fasttext\/vectors-crawl\/cc.ru.300.bin.gz\r\ngunzip cc.ru.300.bin.gz<\/code><\/pre><p>Использовать можно так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">from fasttext import load_model\r\n\r\nmodel = load_model(&quot;cc.ru.300.bin&quot;)<\/code><\/pre><h2>Тренируем свою модель<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">from fasttext import train_unsupervised\r\n\r\nmodel = train_unsupervised(\r\n    input=&quot;dataset.txt&quot;, \r\n    model='skipgram'\r\n)\r\n\r\nmodel.save_model(&quot;skipgram_model.bin&quot;)<\/code><\/pre><p>На Core i7-6700 с датасетом в 20 млн строк, модель обучилась в течении 5 эпох за 35 минут и весила ~1.1 Гб.<\/p>\n<h2>Используем<\/h2>\n<p>Для оценки похожести\/близости векторов будем использовать <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Векторная_модель\">косинусное сходство<\/a>:<\/p>\n<p>\r\n$$ \\mathrm{similarity} = \\mathrm{cos(}\\theta\\mathrm{)} = \\dfrac{A \\cdot B}{\\left\\lVert A \\right\\rVert \\cdot \\left\\lVert B \\right\\rVert}  $$\r\n<\/p>\n<p>В коде будет выглядеть так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">import numpy as np\r\n\r\ndef similarity(v1, v2):\r\n    n1 = np.linalg.norm(v1)\r\n    n2 = np.linalg.norm(v2)\r\n\r\n    if n1 &lt; 1e-6 or n2 &lt; 1e-6:\r\n        return 0.0\r\n    else:\r\n        return np.dot(v1, v2) \/ n1 \/ n2\r\n\r\ndef word_similarity(model, w1, w2):\r\n    return similarity(model.get_word_vector(w1), model.get_word_vector(w2))\r\n\r\ndef sentence_similarity(model, t1, t2):\r\n    return similarity(model.get_sentence_vector(t1), model.get_sentence_vector(t2))<\/code><\/pre><p>Проверяем:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">&gt;&gt;&gt; word_similarity(model, &quot;приветик&quot;, &quot;привет&quot;)\r\n0.7990662\r\n\r\n&gt;&gt;&gt; sentence_similarity(model, &quot;сколько тебе лет&quot;, &quot;а лет-то тебе сколько&quot;)\r\n0.85209394<\/code><\/pre><p>Про классификацию текста при помощи fastText напишу чуть позже.<\/p>\n",
            "date_published": "2019-09-23T14:56:38+03:00",
            "date_modified": "2019-09-23T14:56:08+03:00",
            "_date_published_rfc2822": "Mon, 23 Sep 2019 14:56:38 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "53",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3576,
    "_e2_ua_string": "E2 (v3576; Aegea)"
}