ChatGPTのアドベントカレンダーの13日目の投稿です。
虎の穴ラボ所属のH.Hです。
今回はChatGPTを出しているOpenAIが提供しているEmbeddingのAPIについてまとめていきたいと思います。
※今回の内容は2024/12/1時点のtext-embedding-3-smallのモデルを使用した検証結果となります。
別のモデルになった場合には結果が変わる可能性もある点はご容赦ください。
そもそもEmbeddingってなに?
今回取り扱うEmbeddingについてOpenAIの公式のページから引用します。
OpenAI’s text embeddings measure the relatedness of text strings. Embeddings are commonly used for:
Search (where results are ranked by relevance to a query string)
Clustering (where text strings are grouped by similarity)
Recommendations (where items with related text strings are recommended)
Anomaly detection (where outliers with little relatedness are identified)
Diversity measurement (where similarity distributions are analyzed)
Classification (where text strings are classified by their most similar label)
An embedding is a vector (list) of floating point numbers. The distance between two vectors measures their relatedness. Small distances suggest high relatedness and large distances suggest low relatedness.
[日本語訳]
OpenAIのtext embeddingsは、テキスト文字列の関連性を測定します。Embeddingは一般的に以下の用途で使用されます:
検索(結果がクエリ文字列への関連性でランク付けされる)
クラスタリング(テキスト文字列が類似性でグループ化される)
レコメンデーション(関連するテキスト文字列を持つ項目が推奨される)
異常検出(関連性の低い外れ値が特定される)
多様性の測定(類似性の分布が分析される)
分類(テキスト文字列が最も類似したラベルで分類される)
Embeddingは浮動小数点数のベクトル(リスト)です。2つのベクトル間の距離は、それらの関連性を測定します。小さな距離は高い関連性を示し、大きな距離は低い関連性を示します。
引用元
https://platform.openai.com/docs/guides/embeddings
まとめると文章の特徴を数値化した値の集合(ベクトル)にしたもので、同じような文章は同じような値になり、異なる文章は値が変わるのでそれぞれの数値の集合の距離が離れるものであるとなっています。
特徴が似ているからこそテキストの文字列の関係性を読み解くことができ、同じ内容を特定する検索や分類ができるとなっています。
テキストの文字列の関係性ってどう扱われる?
今回の検証のテーマはこの文字列の関係性が実際どのように扱われているのかを確かめたいと思います。
先ほども書いた通りEmbeddingは処理されると数値の集合(ベクトル)なので、数値のまとまりを見ても人間には理解できないものではありません。
しかも数値の集合であるベクトルなので、一つの文章だけではどのような数値化されているかわからないので複数の文章の比較が必要になります。
関係性は単純にどう扱われているかはわからないので今回検証してみました。
検証方法
今回は複数の似たような文章を複数準備し解析を行い、それぞれのベクトルのコサイン類似度を比較していきます。
コサイン類似度については以下のページを参照してみてください。
検証パターン
今回色の好みを説明する文章を準備して検証します。
他のAPIは英語の方がOpenAIのAPIは回答性能が良いとのことで、今回一部を除いて文章は英語で準備します。
パターン1 好みの色の種類を変化させた場合の比較
以下の文章を準備し検証します。
一つずつ好きな色を減らしていた場合の差分を確認します。
(1) I like blue,red,yellow,black and white.
(2) I like blue,red,yellow and black.
(3) I like blue,red and yellow.
(4) I like blue and red.
(5) I like blue.
パターン2 好きな色を減らして、減らした色を嫌いな色とした場合の比較
以下の文章を準備し検証します。
パターン1と違い、減らした色は好みではないとしています。
(1) I like blue,red,yellow,black and white.
(2) I like blue,red,yellow and black.I don't like white
(3) I like blue,red and yellow.I don't like black and white
(4) I like blue and red.I don't like yellow,black and white
(5) I like blue.I don't like red,yellow,black and white
(6) I don't like blue,red,yellow,black and white
パターン3 言語が異なる場合の比較
英語と日本語で同じ意味の文章を準備して検証します。
(1) I like blue,red,yellow,black and white.
(2) I like 青,赤,黄色,黒 and 白.
(3) 私は青と赤と黄色と黒と白が好きです
パターン4 似た色に変えた場合の比較
blueをmediumblueやdodgerblueに変更した場合などを検証します。
青(blue)・赤(red)・黄色(yellow)のカラーコードを少しずらした色に変えた場合を比較します。
(1) I like blue,red and yellow.
(2) I like mediumblue,red and yellow.
(3) I like dodgerblue,red and yellow.
(4) I like blue,crimson and yellow.
(5) I like mediumblue,crimson and yellow.
(6) I like dodgerblue,crimson and yellow.
(7) I like blue,orangered and yellow.
(8) I like mediumblue,orangered and yellow.
(9) I like dodgerblue,orangered and yellow.
(10) I like blue,red and gold.
(11) I like mediumblue,red and gold.
(12) I like dodgerblue,red and gold.
(13) I like blue,crimson and gold.
(14) I like mediumblue,crimson and gold.
(15) I like dodgerblue,crimson and gold.
(16) I like blue,orangered and gold.
(17) I like mediumblue,orangered and gold.
(18) I like dodgerblue,orangered and gold.
(19) I like blue,red and khaki.
(20) I like mediumblue,red and khaki.
(21) I like dodgerblue,red and khaki.
(22) I like blue,crimson and khaki.
(23) I like mediumblue,crimson and khaki.
(24) I like dodgerblue,crimson and khaki.
(25) I like blue,orangered and khaki.
(26) I like mediumblue,orangered and khaki.
(27) I like dodgerblue,orangered and khaki.
パターン5 順序を結果に反映されるのかの検証
これまでは好みの色の順序は決めていなかったが、文章の中に好きな色の順序を示す語句を入れた結果を検証する。
(1) I like blue,red and yellow in that order.
(2) I like blue,yellow and red in that order.
(3) I like red,blue and yellow in that order.
(4) I like red,yellow and blue in that order.
(5) I like yellow,blue and red in that order.
(6) I like yellow,red and blue in that order.
検証コード
OpenAIのAPI呼び出しにはSpringAIを使用し検証します。
Javaのライブラリで様々なAIのAPIへの連携Javaのコードから簡単に呼び出せるようにするものとなります。
SpringAIについては以下の公式ページを参照してください。
過去にChatモデルを利用する方法をまとめているので、ライブラリの読み込み方法については下記のページを参照してください。
testListに検証する文字列のリストになっています。
----------------------------抜粋----------------------------
OpenAiApi openAiApi = new OpenAiApi(APIキー);
EmbeddingModel embeddingModel = new OpenAiEmbeddingModel(openAiApi);
EmbeddingResponse embeddingResponse = embeddingModel.call(
new EmbeddingRequest(Arrays.stream(testList).toList(),
OpenAiEmbeddingOptions.builder()
.withModel("text-embedding-3-small")//モデルの指定
.build()));
for(int i=0;i<testList.length;i++) {
System.out.println(testList[i]);//文字列の出力
}
for(int i=0;i<embeddingResponse.getResults().size();i++) {
for(int j=0;j<embeddingResponse.getResults().size();j++) {
if(i!=j) {
List<BigDecimal> aList = new ArrayList<>();
List<BigDecimal> bList = new ArrayList<>();
for(int k=0;k<embeddingResponse.getResults().get(i).getOutput().length;k++){
aList.add(BigDecimal.valueOf(embeddingResponse.getResults().get(i).getOutput()[k]));
}
for(int k=0;k<embeddingResponse.getResults().get(j).getOutput().length;k++){
bList.add(BigDecimal.valueOf(embeddingResponse.getResults().get(j).getOutput()[k]));
}
System.out.println(i+","+j+","+cosineSimilarity(aList,bList));//コサイン類似度を計算
}
}
}
----------------------------抜粋----------------------------
//コサイン類似度の計算用のメソッド
private BigDecimal cosineSimilarity(List<BigDecimal> a,List<BigDecimal> b){
BigDecimal answer=new BigDecimal(0);
BigDecimal avalue=new BigDecimal(0),bvalue=new BigDecimal(0),abvalue=new BigDecimal(0);
for(BigDecimal value:a){
avalue=avalue.add(value.multiply(value));
}
for(BigDecimal value:b){
bvalue=bvalue.add(value.multiply(value));
}
for(int i=0;i<a.size();i++){
abvalue=abvalue.add(a.get(i).multiply(b.get(i)));
}
answer=abvalue.divide(
BigDecimal.valueOf(
Math.sqrt(
abvalue.doubleValue()
)).multiply(
BigDecimal.valueOf(
Math.sqrt(bvalue.doubleValue())
)
),20,BigDecimal.ROUND_HALF_UP);
return answer;
}
結果
0.95以上をかなり相関がある、0.9以上を相関があると今回判断しました。
パターン1
結果
比較元 | 比較先 | コサイン類似度 |
---|---|---|
1 | 2 | 0.978979839451631 |
1 | 3 | 0.948125694731735 |
1 | 4 | 0.887691006052696 |
1 | 5 | 0.826107630559425 |
2 | 3 | 0.951856645248675 |
2 | 4 | 0.904140719681315 |
2 | 5 | 0.837290899484275 |
3 | 4 | 0.92333839037122 |
3 | 5 | 0.855166276513974 |
4 | 5 | 0.906273542019577 |
かなり相関がある組み合わせ
(1) I like blue,red,yellow,black and white.
(2) I like blue,red,yellow and black.
(2) I like blue,red,yellow and black.
(3) I like blue,red and yellow.
相関がある
(1) I like blue,red,yellow,black and white.
(3) I like blue,red and yellow.
(2) I like blue,red,yellow and black.
(4) I like blue and red.
(3) I like blue,red and yellow.
(4) I like blue and red.
(4) I like blue and red.
(5) I like blue.
要素が4個以上あれば要素が1個要素を減らしても相関がかなり強く、要素を2個減らしても相関はあると判断はできる。要素が4個より少なくなると徐々に相関の度合いが小さくなる。
パターン2
結果
比較元 | 比較先 | コサイン類似度 |
---|---|---|
1 | 2 | 0.93248650539291 |
1 | 3 | 0.93825526463869 |
1 | 4 | 0.921300174907635 |
1 | 5 | 0.91793691586534 |
1 | 6 | 0.890003171112561 |
2 | 3 | 0.976477723985217 |
2 | 4 | 0.963119932531142 |
2 | 5 | 0.956903972501076 |
2 | 6 | 0.937696942167902 |
3 | 4 | 0.985890356228887 |
3 | 5 | 0.966481404485423 |
3 | 6 | 0.943799135329929 |
4 | 5 | 0.971994224385257 |
4 | 6 | 0.943535001877281 |
5 | 6 | 0.942163520974473 |
かなり相関がある組み合わせ
(2) I like blue,red,yellow and black.I don't like white
(3) I like blue,red and yellow.I don't like black and white
(2) I like blue,red,yellow and black.I don't like white
(4) I like blue and red.I don't like yellow,black and white
(2) I like blue,red,yellow and black.I don't like white
(5) I like blue.I don't like red,yellow,black and white
(3) I like blue,red and yellow.I don't like black and white
(4) I like blue and red.I don't like yellow,black and white
(3) I like blue,red and yellow.I don't like black and white
(5) I like blue.I don't like red,yellow,black and white
(4) I like blue and red.I don't like yellow,black and white
(5) I like blue.I don't like red,yellow,black and white
相関がある
ほぼ残りの組み合わせはコサイン類似度が0.9以上でした。
(1)(6)の組み合わせだけが0.9を下回りました。
結果を見る限り、反対の意味の単語があったとしても中の単語が類似していると意味が違っていても相関があると判断になると思います。
パターン3
結果
比較元 | 比較先 | コサイン類似度 |
---|---|---|
1 | 2 | 0.881132999607579 |
1 | 3 | 0.826387724046584 |
2 | 3 | 0.844673182841843 |
全ての組み合わせで0.9を下回る結果となりました。
パターン4
結果
比較元 | 比較先 | コサイン類似度 | 比較元 | 比較先 | コサイン類似度 |
---|---|---|---|---|---|
1 | 2 | 0.939219354541853 | 1 | 3 | 0.891026539173884 |
1 | 4 | 0.933068536251334 | 1 | 5 | 0.901823909906668 |
1 | 6 | 0.86328534847454 | 1 | 7 | 0.933744455464122 |
1 | 8 | 0.897950238515677 | 1 | 9 | 0.839219312829321 |
1 | 10 | 0.929311812468498 | 1 | 11 | 0.883769165063646 |
1 | 12 | 0.825824502794964 | 1 | 13 | 0.871712708248538 |
1 | 14 | 0.845334092298531 | 1 | 15 | 0.798165499509393 |
1 | 16 | 0.887935616105655 | 1 | 17 | 0.85138245378816 |
1 | 18 | 0.783264028287473 | 1 | 19 | 0.880658471676029 |
1 | 20 | 0.857714916707866 | 1 | 21 | 0.80733470541887 |
1 | 22 | 0.840067190566285 | 1 | 23 | 0.82160852588774 |
1 | 24 | 0.783996626390762 | 1 | 25 | 0.86332594069167 |
1 | 26 | 0.841989734761978 | 1 | 27 | 0.782779687631992 |
2 | 3 | 0.870162678205395 | 2 | 4 | 0.888272196059175 |
2 | 5 | 0.955817160940033 | 2 | 6 | 0.848803120486147 |
2 | 7 | 0.904399661162206 | 2 | 8 | 0.963038002219937 |
2 | 9 | 0.844056791984793 | 2 | 10 | 0.861415854955188 |
2 | 11 | 0.940825761545671 | 2 | 12 | 0.796307161322209 |
2 | 13 | 0.815500633430941 | 2 | 14 | 0.898088587997917 |
2 | 15 | 0.779197939336188 | 2 | 16 | 0.853150398296136 |
2 | 17 | 0.920160828626093 | 2 | 18 | 0.789086785920943 |
2 | 19 | 0.831579686948793 | 2 | 20 | 0.912811536958008 |
2 | 21 | 0.79379740700513 | 2 | 22 | 0.801297402528842 |
2 | 23 | 0.877486937055076 | 2 | 24 | 0.781523685597513 |
2 | 25 | 0.834237807140985 | 2 | 26 | 0.907791211496909 |
2 | 27 | 0.791950280619059 | 3 | 4 | 0.849513724572126 |
3 | 5 | 0.850164302794657 | 3 | 6 | 0.97917642706121 |
3 | 7 | 0.866328091852949 | 3 | 8 | 0.857182421468681 |
3 | 9 | 0.957128440195503 | 3 | 10 | 0.836368586697289 |
3 | 11 | 0.819415643197632 | 3 | 12 | 0.957425252156275 |
3 | 13 | 0.795989429272626 | 3 | 14 | 0.798348342050748 |
3 | 15 | 0.933525559996781 | 3 | 16 | 0.826024251463845 |
3 | 17 | 0.817351534335109 | 3 | 18 | 0.922478335738063 |
3 | 19 | 0.795813897669136 | 3 | 20 | 0.803881737076212 |
3 | 21 | 0.920126825322321 | 3 | 22 | 0.769813278171519 |
3 | 23 | 0.779157620420475 | 3 | 24 | 0.905651812350137 |
3 | 25 | 0.805972170581638 | 3 | 26 | 0.808182684547585 |
3 | 27 | 0.915452161004719 | 4 | 5 | 0.954247336067063 |
4 | 6 | 0.887810828743445 | 4 | 7 | 0.887742437413305 |
4 | 8 | 0.858555614067526 | 4 | 9 | 0.810487978220287 |
4 | 10 | 0.877052401008207 | 4 | 11 | 0.840913994733511 |
4 | 12 | 0.79260393970791 | 4 | 13 | 0.940228567590783 |
4 | 14 | 0.901762079573722 | 4 | 15 | 0.833730333957799 |
4 | 16 | 0.844340688327965 | 4 | 17 | 0.815160730370596 |
4 | 18 | 0.755537283593641 | 4 | 19 | 0.833462412440697 |
4 | 20 | 0.818708946400976 | 4 | 21 | 0.776241182124786 |
4 | 22 | 0.9084364561637 | 4 | 23 | 0.879345573570094 |
4 | 24 | 0.822783039360731 | 4 | 25 | 0.826035787818593 |
4 | 26 | 0.810494877831321 | 4 | 27 | 0.759783045839888 |
5 | 6 | 0.885245704499662 | 5 | 7 | 0.874295254020115 |
5 | 8 | 0.927825988124807 | 5 | 9 | 0.827875419614375 |
5 | 10 | 0.838864165291627 | 5 | 11 | 0.906401691377352 |
5 | 12 | 0.786782186815412 | 5 | 13 | 0.889082285578716 |
5 | 14 | 0.947141173730417 | 5 | 15 | 0.827683928067092 |
5 | 16 | 0.827687685976614 | 5 | 17 | 0.887911973437888 |
5 | 18 | 0.774569462751008 | 5 | 19 | 0.806885960696822 |
5 | 20 | 0.880625545692384 | 5 | 21 | 0.780690181732005 |
5 | 22 | 0.870394327196608 | 5 | 23 | 0.925589655161309 |
5 | 24 | 0.827007770655839 | 5 | 25 | 0.811991412321358 |
5 | 26 | 0.879842026054786 | 5 | 27 | 0.780760815280821 |
6 | 7 | 0.851651852244173 | 6 | 8 | 0.847108346549291 |
6 | 9 | 0.949795989121543 | 6 | 10 | 0.812606416354891 |
6 | 11 | 0.799307343148895 | 6 | 12 | 0.93965706353163 |
6 | 13 | 0.833540694332727 | 6 | 14 | 0.833006643792862 |
6 | 15 | 0.95828407637816 | 6 | 16 | 0.810271212791737 |
6 | 17 | 0.805983338981772 | 6 | 18 | 0.913811399617136 |
6 | 19 | 0.773958403268366 | 6 | 20 | 0.787978130894609 |
6 | 21 | 0.903310793186395 | 6 | 22 | 0.808774979304578 |
6 | 23 | 0.816543582546302 | 6 | 24 | 0.931245750314598 |
6 | 25 | 0.792120649501968 | 6 | 26 | 0.800139260590935 |
6 | 27 | 0.909445658459466 | 7 | 8 | 0.954739168215271 |
7 | 9 | 0.907391891684244 | 7 | 10 | 0.878477247558699 |
7 | 11 | 0.859318351875347 | 7 | 12 | 0.814025218922579 |
7 | 13 | 0.833573080046243 | 7 | 14 | 0.827834507417791 |
7 | 15 | 0.798785150355801 | 7 | 16 | 0.961100597838149 |
7 | 17 | 0.919458858361692 | 7 | 18 | 0.86739148255934 |
7 | 19 | 0.836470028294212 | 7 | 20 | 0.836708767045224 |
7 | 21 | 0.790353161082986 | 7 | 22 | 0.808889503845822 |
7 | 23 | 0.805608012792843 | 7 | 24 | 0.782119655230676 |
7 | 25 | 0.928681148117898 | 7 | 26 | 0.901330132679985 |
7 | 27 | 0.855281976796408 | 8 | 9 | 0.899912166211357 |
8 | 10 | 0.831655278429532 | 8 | 11 | 0.912546125816204 |
8 | 12 | 0.795114811023792 | 8 | 13 | 0.793552946815817 |
8 | 14 | 0.878580418150836 | 8 | 15 | 0.788187886150909 |
8 | 16 | 0.910317398642678 | 8 | 17 | 0.963637426551769 |
8 | 18 | 0.855528444242114 | 8 | 19 | 0.804434865793443 |
8 | 20 | 0.88926634176527 | 8 | 21 | 0.785228080108624 |
8 | 22 | 0.782765272354536 | 8 | 23 | 0.859318651173313 |
8 | 24 | 0.783869012665636 | 8 | 25 | 0.884962676441611 |
8 | 26 | 0.945675135812012 | 8 | 27 | 0.849802220678112 |
9 | 10 | 0.783084021473821 | 9 | 11 | 0.793629780018295 |
9 | 12 | 0.918048311671179 | 9 | 13 | 0.75174443831014 |
9 | 14 | 0.777123038065433 | 9 | 15 | 0.908388127830817 |
9 | 16 | 0.865943963444558 | 9 | 17 | 0.862879806860717 |
9 | 18 | 0.969417031838132 | 9 | 19 | 0.751581301849983 |
9 | 20 | 0.781405521235848 | 9 | 21 | 0.880508429450523 |
9 | 22 | 0.733827860980201 | 9 | 23 | 0.76065014629884 |
9 | 24 | 0.881090617811904 | 9 | 25 | 0.839084062043121 |
9 | 26 | 0.847675983315267 | 9 | 27 | 0.954611807895515 |
10 | 11 | 0.93234692797262 | 10 | 12 | 0.880119173542077 |
10 | 13 | 0.943542853361175 | 10 | 14 | 0.902893838850251 |
10 | 15 | 0.855264981847871 | 10 | 16 | 0.932753992076065 |
10 | 17 | 0.882282180041849 | 10 | 18 | 0.814947155854707 |
10 | 19 | 0.857957614616067 | 10 | 20 | 0.826505997526745 |
10 | 21 | 0.794883456317915 | 10 | 22 | 0.828820483642666 |
10 | 23 | 0.801894335374555 | 10 | 24 | 0.773642351453491 |
10 | 25 | 0.846475683406914 | 10 | 26 | 0.813268000098877 |
10 | 27 | 0.765392150347858 | 11 | 12 | 0.851305058878527 |
11 | 13 | 0.8900273829242 | 11 | 14 | 0.961472335977047 |
11 | 15 | 0.836045458199196 | 11 | 16 | 0.906825996974565 |
11 | 17 | 0.960458127311109 | 11 | 18 | 0.825926719095439 |
11 | 19 | 0.813902836452884 | 11 | 20 | 0.890659188365852 |
11 | 21 | 0.781249048112821 | 11 | 22 | 0.793098269347082 |
11 | 23 | 0.864316149464685 | 11 | 24 | 0.770118387710096 |
11 | 25 | 0.822268238144741 | 11 | 26 | 0.888496329260283 |
11 | 27 | 0.776750930940157 | 12 | 13 | 0.84202242582297 |
12 | 14 | 0.835446419097595 | 12 | 15 | 0.976207237255188 |
12 | 16 | 0.857038885607306 | 12 | 17 | 0.837870968299803 |
12 | 18 | 0.950162155494565 | 12 | 19 | 0.768471049832445 |
12 | 20 | 0.768597199541727 | 12 | 21 | 0.909430344668642 |
12 | 22 | 0.750200630570622 | 12 | 23 | 0.751894228540045 |
12 | 24 | 0.897046394836986 | 12 | 25 | 0.785534186432905 |
12 | 26 | 0.777782381883629 | 12 | 27 | 0.905341151099466 |
13 | 14 | 0.947951392703648 | 13 | 15 | 0.879320222460299 |
13 | 16 | 0.889822215054967 | 13 | 17 | 0.845792828476349 |
13 | 18 | 0.78482666407553 | 13 | 19 | 0.824172096071124 |
13 | 20 | 0.800578626811161 | 13 | 21 | 0.770919684258391 |
13 | 22 | 0.900975222382227 | 13 | 23 | 0.865378922907095 |
13 | 24 | 0.815601251035204 | 13 | 25 | 0.817915601534569 |
13 | 26 | 0.790958697091489 | 13 | 27 | 0.746966475885876 |
14 | 15 | 0.874040572019935 | 14 | 16 | 0.877916717191655 |
14 | 17 | 0.927875967220779 | 14 | 18 | 0.80978801733983 |
14 | 19 | 0.792746761531498 | 14 | 20 | 0.863635665385192 |
14 | 21 | 0.770426976727055 | 14 | 22 | 0.861143756964476 |
14 | 23 | 0.913271186411782 | 14 | 24 | 0.815842721784264 |
14 | 25 | 0.803098185354097 | 14 | 26 | 0.86598423602756 |
14 | 27 | 0.769081775067253 | 15 | 16 | 0.842884777642275 |
15 | 17 | 0.831806236820682 | 15 | 18 | 0.942121629239407 |
15 | 19 | 0.749848359584716 | 15 | 20 | 0.75986169895421 |
15 | 21 | 0.891828422679117 | 15 | 22 | 0.795362280831174 |
15 | 23 | 0.79889088856731 | 15 | 24 | 0.925423959876259 |
15 | 25 | 0.773710498595132 | 15 | 26 | 0.776041211331342 |
15 | 27 | 0.901225174128099 | 16 | 17 | 0.950988175746023 |
16 | 18 | 0.894263451263384 | 16 | 19 | 0.819741213528766 |
16 | 20 | 0.815078424493299 | 16 | 21 | 0.778710562874375 |
16 | 22 | 0.797792106577597 | 16 | 23 | 0.78985897785486 |
16 | 24 | 0.77081808925339 | 16 | 25 | 0.915561132283413 |
16 | 26 | 0.882091997577097 | 16 | 27 | 0.840666295867562 |
17 | 18 | 0.887821185465665 | 17 | 19 | 0.783612106309276 |
17 | 20 | 0.870497713766213 | 17 | 21 | 0.772182806170854 |
17 | 22 | 0.76822992245176 | 17 | 23 | 0.845677815248565 |
17 | 24 | 0.771692564581358 | 17 | 25 | 0.872368589455892 |
17 | 26 | 0.93155768304384 | 17 | 27 | 0.838212645463532 |
18 | 19 | 0.726530085624392 | 18 | 20 | 0.75671343420853 |
18 | 21 | 0.871624289650451 | 18 | 22 | 0.713398959961107 |
18 | 23 | 0.740460993415416 | 18 | 24 | 0.87412259891714 |
18 | 25 | 0.823656229470765 | 18 | 26 | 0.828594242025936 |
18 | 27 | 0.950258231612203 | 19 | 20 | 0.955855173778078 |
19 | 21 | 0.908155078306568 | 19 | 22 | 0.948084464246463 |
19 | 23 | 0.916073395636242 | 19 | 24 | 0.877305335549328 |
19 | 25 | 0.950119366178441 | 19 | 26 | 0.911983344124648 |
19 | 27 | 0.84177189462911 | 20 | 21 | 0.899099589637603 |
20 | 22 | 0.915861171283932 | 20 | 23 | 0.96242678799258 |
20 | 24 | 0.879870011156851 | 20 | 25 | 0.926906977838563 |
20 | 26 | 0.969114223386081 | 20 | 27 | 0.856305951248133 |
21 | 22 | 0.872767735029174 | 21 | 23 | 0.870553318960148 |
21 | 24 | 0.974369888630562 | 21 | 25 | 0.885016098221048 |
21 | 26 | 0.874204330975315 | 21 | 27 | 0.948705704328491 |
22 | 23 | 0.962119094763811 | 22 | 24 | 0.904666369936643 |
22 | 25 | 0.912568850463006 | 22 | 26 | 0.88177154787197 |
22 | 27 | 0.816680935660578 | 23 | 24 | 0.906125021596158 |
23 | 25 | 0.893099178421269 | 23 | 26 | 0.937623843222202 |
23 | 27 | 0.833495187835417 | 24 | 25 | 0.867478020056096 |
24 | 26 | 0.866124923336045 | 24 | 27 | 0.94677960143756 |
25 | 26 | 0.95747089013735 | 25 | 27 | 0.899801628526624 |
26 | 27 | 0.899740863587443 |
全体として一つぐらい名称をずらすとある程度相関があると判断できるが、色の名称によってかなりズレが出ると判断できる。逆に0.95以上の値があまり出ない結果となった。
パターン5
結果
比較元 | 比較先 | コサイン類似度 |
---|---|---|
1 | 2 | 0.985652333918244 |
1 | 3 | 0.991034467639437 |
1 | 4 | 0.984366137234821 |
1 | 5 | 0.985988138124172 |
1 | 6 | 0.987968583781377 |
2 | 3 | 0.980775136639645 |
2 | 4 | 0.990039090702445 |
2 | 5 | 0.979752338937624 |
2 | 6 | 0.97886518413078 |
3 | 4 | 0.987219846090609 |
3 | 5 | 0.987403343680172 |
3 | 6 | 0.986558190508577 |
4 | 5 | 0.97777000008095 |
4 | 6 | 0.981062030807067 |
5 | 6 | 0.993692919208658 |
パターン5は全て相関がかなり強い結果となりましたが、逆に順序の意味合いが結果には現れなかったという結果になりました。
まとめ
今回はEmbdddingの値の検証を行いました。
結果は以下のとおりです。
1.文章の意味というより単語の影響がかなり大きい
また単語も意味ではなく文字列を判断材料にしているような結果のため、似た意味の文章の判断を行うためには工夫が必要になることもわかりました
2.一つの文章に複数の意味を持たせても正しく判断されない
肯定と否定を混ぜても正しく判断されないので、文章を分けて解析する必要があると考えられます
3.順序などの要素を入れたとしてもベクトルに影響はかなり小さい
上記の通り文章としての理解というより、文字を数値化している傾向が強いです。
そのため大きな文章を渡して類似性を検証することは難しいので、ベクトル化するとしても事前の前処理として整理を行う必要があるとわかりました。