# 自然言語処理領域で重要なDoc2Vecの仕組みとPython実装についてわかりやすく解説！

> 当サイト【スタビジ】の本記事では、Doc2Vecについて解説していきます！Doc2Vecは文書をベクトル化するアプローチでWord2Vecの派生型です。Pythonでの実装と合わせて理解しておきましょう！

- URL: https://toukei-lab.com/doc2vec
- 公開: 2023.09.16 / 更新: 2025.07.14
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、Doc2Vecについて解説していきます！Doc2Vecは文書をベクトル化するアプローチでWord2Vecの派生型です。Pythonでの実装と合わせて理解しておきましょう！
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です！

この記事では[自然言語処理領域](/natural-language-python)の中で非常に重要なDoc2Vecについて簡単に解説していきます。

文書をベクトル化する技術には古典的な手法で[tf-idf](/python-mecab)などがあり、最近では[大規模言語モデル](/llm)の台頭で自然言語処理領域に様々なアプローチが生み出されています。

Doc2Vecは少し枯れた技術と思われがちですが<mark>理解しておくことは最新の技術を理解する上でも非常に大事</mark>。

ここでしっかり理解しておきましょう！

以下のYoutube動画でも詳しく解説していますので合わせてチェックしてみてください！

::youtube{#aOhcIe-_cJk}

## Doc2Vecとは？

Doc2Vecとはその名の通り

「**ドキュメント（文書）をベクトルに変換する**」アプローチです。

提案論文は以下です。

:::box
[Distributed Representations of Sentences and Documents](https://arxiv.org/pdf/1405.4053.pdf)
:::

Doc2Vecの論文は2014年に発表されていて、[Word2Vec](/word2vec)の発表から1年後にあたります。

<mark>Word2Vecは「ワード（単語）をベクトルに変換する」アプローチですので、Doc2VecはWord2Vecの応用版と考えることができます。</mark>

ちなみにWord2VecもDoc2VecもGoogleの研究員らによって発表され、そのうちの1人はTomas Mikolov氏でどちらの論文にも名前を連ねています。

:::talk{who="umatan"}
Google強し！
:::

文書をベクトル化するのはどういうことかというと以下のようにいくつかの文書があった時にそれをベクトル化して可視化できるということです。

![doc2vec](/wp-content/uploads/2023/09/81.jpg)

<mark>これにより特定の文書は近い意味合いを持っていて、特定の文書は遠い意味合いを持っているというのが分かるのです。</mark>

これにより、トピックの近い文書を探すこともできたり文書のコピペ判定などに使うこともできたりします。

## Doc2Vecの仕組み

それでは簡単にDoc2Vecの仕組みを見ていきましょう！

Doc2Vecには2つのアプローチがあります。

:::box
**・PV-DM**\
**・PV-DBOW**
:::

### PV-DM

まずはPV-DM！

PV-DMはWord2Vecの**CBOW**に対応するようなアルゴリズムです。

以下のように文書IDのone-hotベクトルと単語のone-hotベクトルをインプットとして投入して、それらを重みベクトルで圧縮したものを平均化して、重み行列で変換して次の単語を予測するニューラルネットワーク構造を構築します。

![doc2vec](/wp-content/uploads/2023/09/82.jpg)

<mark>続いて、この予測問題を解くべく学習を進めます。</mark>

<mark>そして最終的に学習が進んだあとの文書IDのOne-hot ベクトルに対応する重み行列のベクトルがDoc2Vecで取得したい文書のベクトルになるんです。</mark>

この図で言うところの以下の部分のベクトルです。

![Doc2Vec](/wp-content/uploads/2023/09/212.jpg)

例えば、文書ID「1」の場合は以下のようになります。

![](/wp-content/uploads/2023/09/213.jpg)

文書ID「1」のベクトルと「この」のベクトルと「DX」のベクトルを投入して「時代」のベクトルを予測するようなイメージになります。

ここらへんの話はWord2Vecと合わせて学ぶと分かりやすいと思うのでぜひWord2Vecも合わせて見てみてください。

<https://toukei-lab.com/word2vec>

### PV-DBOW

続いてPV-DBOW！

こちらは、Word2Vecの**skip-gram**に対応するようなアルゴリズム。

文書IDのOne-hot ベクトルから特定の単語を予測するようなニューラルネットワークを構築してそれを解きます。

![doc2vec](/wp-content/uploads/2023/09/83.jpg)

<mark>同様に、この予測問題を解くべく学習を進めた後の文書IDのOne-hot ベクトルに対応する重み行列のベクトルがDoc2Vecで取得したい文書のベクトルになるんです。</mark>

以下の部分ですね。

![Doc2Vec](/wp-content/uploads/2023/09/215.jpg)

そして文書IDが1の場合は以下のようになり、最終的な出力ベクトルの単語は文書からピックアップした任意の単語になります。

![](/wp-content/uploads/2023/09/216.jpg)

一般的にPV-DBOWの方が学習速度は速いのですが、PV-DMの方が精度が高いと言われています。

## Doc2VecをPythonで実装してみよう！

それでは続いてDoc2Vecを実際にPythonで簡単に実装していきましょう！

gensimというライブラリを使ってDoc2Vecを実装していきます。

```python
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
import nltk
from nltk.tokenize import word_tokenize
nltk.download('punkt')

# サンプルデータ
data = ["I love machine learning",
        "I love coding in Python",
        "Machine learning is an exciting field",
        "Python is a versatile programming language"]

# データをトークン化してTaggedDocument形式に変換
tagged_data = [TaggedDocument(words=word_tokenize(_d.lower()), tags=[str(i)]) for i, _d in enumerate(data)]

# モデルのパラメータを設定
max_epochs = 100
vec_size = 20
alpha = 0.025

model = Doc2Vec(vector_size=vec_size,
                alpha=alpha, 
                min_alpha=0.00025,
                min_count=1,
                dm =1)
  
model.build_vocab(tagged_data)

# モデルの学習
for epoch in range(max_epochs):
    print(f"Iteration {epoch}")
    model.train(tagged_data,
                total_examples=model.corpus_count,
                epochs=model.epochs)
    # 学習率の減少
    model.alpha -= 0.0002
    model.min_alpha = model.alpha

# 保存と読み込み
model.save("d2v.model")

# 保存したモデルをロード
model = Doc2Vec.load("d2v.model")

# 新しい文書に対するベクトルを推測
test_data = word_tokenize("I love coding with Python".lower())
v1 = model.infer_vector(test_data)
print(v1)
```

これで以下のようにベクトルが出力されたはず！

:::box
\[-0.02893877 0.0092387 -0.01232865 -0.02127847 0.00525628 -0.016203 0.0165593 0.00745648 0.02004363 0.00751371 0.00826285 -0.01215482 -0.00552002 -0.01216448 -0.02003857 -0.00662984 -0.02081434 0.00908031 -0.02296249 -0.00416257]
:::

ちなみにライブラリgensimのDoc2Vecのパラメータdmに1を指定するとアルゴリズムとしてPV-DMを指定します。

<mark>今回はサンプルの文章を作成して簡易的に実装をおこなったのでベクトル化の精度は低いことが見込まれますので、本格的に実装する際は大規模の文書データセットを用いて学習を行うもしくは学習済みモデルを使用するとよいでしょう！</mark>

当メディアが運営する教育サービス「スタビジアカデミー」の自然言語処理コースでは、livedoorニュースのテキストを利用してDoc2Vecで学習していますので参考にしてみてください。

:::box
[スタアカ：自然言語処理コース](https://toukei-lab.com/achademy/courses/nlp/)

[![スタアカ「自然言語処理」コース](/wp-content/uploads/2026/10/achademy-course-nlp.jpg)](https://toukei-lab.com/achademy/courses/nlp/)
:::

## Doc2Vecまとめ

ここまでご覧いただきありがとうございました！

本記事では**Doc2Vec**について簡単に解説してきました！

Doc2Vecは2014年に登場したアプローチで、枯れた技術と思われがちですが理解しておくことは非常に大事です。

Doc2Vecを理解した上で他の自然言語処理アプローチもしっかりおさえておきましょう！

先ほどもお伝えしましたが、自然言語処理についてもっと詳しく知りたいという方は当メディアが運営する教育サービス[「スタアカ（スタビジアカデミー）」](https://toukei-lab.com/achademy/)の自然言語処理講座をチェックしてみてください。

:::box
[スタアカ：自然言語処理コース](https://toukei-lab.com/achademy/courses/nlp/)

[![スタアカ「自然言語処理」コース](/wp-content/uploads/2026/10/achademy-course-nlp.jpg)](https://toukei-lab.com/achademy/courses/nlp/)
:::

:::box
**AIデータサイエンス特化スクール「スタアカ」**

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)
:::

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}