コサイン類似度を求める処理【基本情報技術者試験 科目B 公開問題】

令和5年度 基本情報技術者試験 公開問題 科目B 問5のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bの公開問題を題材に,コサイン類似度を求める処理について学習します。この問題では,二つのベクトルの内積と大きさを利用して,コサイン類似度を計算する処理を確認します。

広告

令和5年度 基本情報技術者試験 公開問題 科目B 問5

 次のプログラム中の   a    b   に入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 コサイン類似度は,二つのベクトルの向きの類似性を測る尺度である。関数 calcCosineSimilarity は,いずれも要素数が n(n≧1)である実数型の配列 vector1 と vector2 を受け取り,二つの配列のコサイン類似度を返す。配列 vector1 が {a1,a2,…,an} ,配列 vector2 が {b1,b2,…,bn} のとき,コサイン類似度は次の数式で計算される。ここで,配列 vector1 と配列 vector2 のいずれも,全ての要素に0が格納されていることはないものとする。

「令和5年度 基本情報技術者試験 公開問題 科目B 問5」の問題_画像

〔プログラム〕

○実数型: calcCosineSimilarity(実数型の配列: vector1,

               実数型の配列: vector2)

 実数型: similarity,numerator,denominator,temp ← 0

 整数型: i

 numerator ← 0

 for (i を 1 から vector1の要素数 まで 1 ずつ増やす)

  numerator ← numerator +   a  

 endfor

 for (i を 1 から vector1の要素数 まで 1ずつ増やす)

  temp ← temp + vector1[i]の2乗

 endfor

 denominator ← tempの正の平方根

 temp ← 0

 for (i を 1 から vector2の要素数 まで 1 ずつ増やす)

  temp ← temp + vector2[i]の2乗

 endfor

 denominator ←   b  

 similarity ← numerator ÷ denominator

 return similarity

解答群

a

b

(vector1[i] × vector2[i])の正の平方根denominator × (tempの正の平方根)
(vector1[i] × vector2[i])の正の平方根denominator + (tempの正の平方根)
(vector1[i] × vector2[i])の正の平方根tempの正の平方根
vector1[i] × vector2[i]denominator × (tempの正の平方根)
vector1[i] × vector2[i]denominator + (tempの正の平方根)
vector1[i] × vector2[i]tempの正の平方根
vector1[i]の2乗denominator × (tempの正の平方根)
vector1[i]の2乗denominator + (tempの正の平方根)
vector1[i]の2乗tempの正の平方根

【解答】

【解説】

このプログラムは,2つのベクトルのコサイン類似度を計算する。コサイン類似度は,「2つのベクトルの内積 ÷ 2つのベクトルの大きさの積」で求める。まず,分子は各要素の積の合計で求めるため,numerator には vector1[i] × vector2[i] を加算する。そのため,a には vector1[i] × vector2[i] が入る。次に,vector1の各要素を2乗して合計し,その正の平方根をdenominatorに格納する。その後,vector2についても同様に各要素の2乗の合計の正の平方根を求め,denominatorに掛け合わせる。そのため,bには denominator × (tempの正の平方根) が入る。

【参考】

「令和5年度 基本情報技術者試験 公開問題 科目B 問5」の解答_画像

この問題のポイント

 この問題から学べることは,

  • コサイン類似度の基本的な計算方法
  • 2つのベクトルの内積を求める方法
  • ベクトルの大きさを求める方法
  • for文で配列の各要素を順番に計算する方法

です。特に,コサイン類似度が「2つのベクトルの内積 ÷ 2つのベクトルの大きさの積」で求められることと,その計算をプログラムでどのように分けて処理しているかを理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告