単語の意味をベクトルで表現する手法であるword2vec。検索するといろんな方の解説が見つかります。その解説とソースコードを見比べながら、自分なりに勉強してみました。 今回はword2vecのC#実装であるWord2Vec.Netのソースで勉強しました。ロジックは元々のC言語による実装とほとんど同じなので、このソースで勉強しても問題ありません。また、この方がVisualStudioのデバッガが使えるので追いやすいです。 word2vecには学習アルゴリズムとして「C-BOW」と「Skip-gram」の2種類の手法が紹介されていますが、今回は「Skip-gram」について勉強しました。計算量を抑えるやり方としては「階層的ソフトマックス」と「Negative Sampling」の2種類がword2vecのプログラム中に実装されていますが、今回は「Negative Sampling」を勉強しまし
![word2vecのソースを読んでみた - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/8ec89bb1698c3661daab55f6d81f7a312e3a4437/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9d29yZDJ2ZWMlRTMlODElQUUlRTMlODIlQkQlRTMlODMlQkMlRTMlODIlQjklRTMlODIlOTIlRTglQUElQUQlRTMlODIlOTMlRTMlODElQTclRTMlODElQkYlRTMlODElOUYmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTJiMDQzMjY2MTVjYjE4ZWM0MGQyNTVhY2ZjZjNiYjlh%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBtYXNoMDUxMCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YjI3MGU5ODFmNmVlNzA0NWE4MDA3ODc0MDM3MDVlMWI%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Df464167e86fb70a78209142f78818307)