File size: 5,398 Bytes
2beb751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
pipeline_tag: sentence-similarity
language: ja
license: apache-2.0
tags:
  - transformers
  - sentence-similarity
  - feature-extraction
  - sentence-transformers
inference: false
---

# GLuCoSE (General Luke-based COntrastive Sentence Embedding)-base-Japanese

GLuCoSE (General LUke-based COntrastive Sentence Embedding, "ぐるこーす")は[LUKE](https://github.com/studio-ousia/luke)をベースにした日本語のテキスト埋め込みモデルです。汎用的で気軽に使えるテキスト埋め込みモデルを目指して、Webデータと自然言語推論や検索などの複数のデータセットを組み合わせたデータで学習されています。文ベクトルの類似度タスクだけでなく意味検索タスクにもお使いいただけます。
- 最大トークン数: 512
- 出力次元数: 768
- pooling: mean pooling
- 対応言語: 日本語


## 使い方
[sentence-transformers](https://www.SBERT.net)を使って、このモデルを簡単に利用することができます。  

下記のように、pipでsentence-transformersをインストールしてください。  

```
pip install -U sentence-transformers
```

下記のようにモデルをロードして、文を密なベクトルに変換することができます。  

```python
from sentence_transformers import SentenceTransformer
sentences = [
    "PKSHA Technologyは機械学習/深層学習技術に関わるアルゴリズムソリューションを展開している。",
    "この深層学習モデルはPKSHA Technologyによって学習され、公開された。",
    "広目天は、仏教における四天王の一尊であり、サンスクリット語の「種々の眼をした者」を名前の由来とする。",
]

model = SentenceTransformer('pkshatech/GLuCoSE-base-ja')
embeddings = model.encode(sentences)
print(embeddings)
```

学習時の損失関数にcosine類似度を使っているため、下流のタスクでcosine類似度を類似度計算に使うことをおすすめします。  

LangChainでもこのテキスト埋め込みモデルを利用することができます。[こちらのページ](https://python.langchain.com/docs/modules/data_connection/text_embedding/integrations/sentence_transformers)を参考にしてください。

## 使用したリソース
このモデルの学習に下記の資源を使用しています。
### 事前学習モデル
- [studio-ousia/luke-japanese-base-lite](https://huggingface.co/studio-ousia/luke-japanese-base-lite)

### データセット
- [mC4](https://huggingface.co/datasets/mc4)
- [MQA](https://huggingface.co/datasets/clips/mqa)
- [JNLI](https://github.com/yahoojapan/JGLUE)
- [JSNLI](https://nlp.ist.i.kyoto-u.ac.jp/?%E6%97%A5%E6%9C%AC%E8%AA%9ESNLI%28JSNLI%29%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88)
- [JaNLI](https://github.com/verypluming/JaNLI)
- [PAWS-X](https://huggingface.co/datasets/paws-x)
- [JSeM](https://github.com/DaisukeBekki/JSeM)
- [MoritzLaurer/multilingual-NLI-26lang-2mil7](https://huggingface.co/datasets/MoritzLaurer/multilingual-NLI-26lang-2mil7)
    - [MultiNLI](https://huggingface.co/datasets/multi_nli)
    - [WANLI](https://huggingface.co/datasets/alisawuffles/WANLI)
    - [FeverNLI](https://github.com/easonnie/combine-FEVER-NSMN/blob/master/other_resources/nli_fever.md)
    - [LingNLI](https://arxiv.org/pdf/2104.07179.pdf)
- [JSICK](https://github.com/verypluming/JSICK)
- [Mr.Tidy](https://huggingface.co/datasets/castorini/mr-tydi)
- [JSTS](https://github.com/yahoojapan/JGLUE) (validasion用) [^1]

## ベンチマーク
### 意味的類似度計算 ([JSTS](https://github.com/yahoojapan/JGLUE) dev set)
Spearmanの相関係数、Pearsonの相関係数で評価
| モデル | Spearman |Pearson|
| --- | --- | --- |
| [text-embedding-ada-002](https://platform.openai.com/docs/guides/embeddings) | 0.837[^2] | 0.790[^2] |
| [pkshatech/simcse-ja-bert-base-clcmlp](https://huggingface.co/pkshatech/simcse-ja-bert-base-clcmlp)[^3] | 0.850 | 0.801 |
| pkshatech/GLuCoSE-base-ja | **0.865**  | **0.821** | 

### zero-shot 検索([第3回AI王](https://sites.google.com/view/project-aio/competition3?authuser=0) dev set)
top-k retrieval accuracy[^4] (検索された上位k個の文書に少なくとも1回は正解が含まれる問題の割合)で評価
| モデル | Top-1 | Top-5| Top-10| Top-50|
| --- | --- | --- |---|---|
| [text-embedding-ada-002](https://platform.openai.com/docs/guides/embeddings) |33.50 | **57.80** | 65.10| 76.60|
| [pkshatech/simcse-ja-bert-base-clcmlp](https://huggingface.co/pkshatech/simcse-ja-bert-base-clcmlp)[^3] | 30.60 | 54.50 | 62.50 | 76.70 | 
| pkshatech/GLuCoSE-base-ja | **34.20** | 57.50 | **65.20** | **77.60** |

## ライセンス
このモデルは [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)の下で公開されています。

[^1]: モデル学習時には、JGLUEのテストデータが公開されていなかったため、プライベートな評価データとしてJGLUEのdev setを使用していました。そのため、玉突き的にJGLUEのtrain setでcheckpointを選択しています。
[^2]: https://qiita.com/akeyhero/items/ce371bfed64399027c23 
[^3]: このモデルの前にPKSHA Technologyが公開したモデルです。  
[^4]: 詳しくは、https://arxiv.org/pdf/2004.04906.pdf を参照してください。