AI・データを題材にしたプログラム|知らない言葉は問題文の定義を式に写す【基本情報技術者試験 科目B】

基本情報技術者試験

現行FE シラバス Ver9.2 準拠擬似言語の記述形式は2022年から変更なし最終更新 2026-10-17

科目Bには、AI やデータ分析の言葉を題材にしたプログラムが出ます。コサイン類似度、理論度数、One-Hot 表現といった言葉です。その言葉を前もって知っている必要はありません。意味は問題文に書いてあります。読む手順は3つです。

期間限定クーポンPR|Udemy の講座科目B オリジナル模試 3回分・60問42%OFF 1,500円2,600円中身を見る ›

知らない言葉が出たときの読み方

  1. 言葉の定義を、問題文から探す。「〜という」「次の式で計算する」と書かれた文です。
  2. 定義の語句を、式に1つずつ写す。語句の1つ1つが、プログラムのどこかに当たります。
  3. 問題文の例で、くり返しの終わりと答えを確かめる。くり返しがなぜそこで終わるのかは、例の数字が教えてくれます。

この3つを、短い問題1つで順に確かめます。

この回で読む問題 ── 2-gram を数える countPair

題材は 2-gram という言葉です。文章をコンピュータで扱う分野の言葉で、基本情報技術者試験のシラバスにも、自然言語処理の用語例として n-gram が載っています(n が 2 のものが 2-gram です)。聞いたことがなくても、そのまま読み進めてください。

問題文

文字型の配列から、隣り合う2文字を先頭から順に取り出したものを、本問では 2-gram という。例えば、配列 {“t”, “o”, “m”, “a”, “t”, “o”} の 2-gram は、順に {“t”, “o”}、{“o”, “m”}、{“m”, “a”}、{“a”, “t”}、{“t”, “o”} の5個である。

関数 countPair は、要素数2以上の文字型の配列 s と、要素数2の文字型の配列 pair を受け取り、s の 2-gram のうち、pair と同じ並びのものの個数を返す。例えば、s が {“t”, “o”, “m”, “a”, “t”, “o”}、pair が {“t”, “o”} のとき、戻り値は 2 である。ここで、配列の要素番号は1から始まる。

○整数型: countPair(文字型の配列: s, 文字型の配列: pair)
  整数型: i, cnt ← 0
  for (i を 1 から (sの要素数 - 1) まで 1 ずつ増やす)
    if ((s[i] = pair[1]) and (s[i + 1] = pair[2]))
      cnt ← cnt + 1
    endif
  endfor
  return cnt

当サイトで作った例題です。

プログラムは8行で、くり返しと条件分岐が1つずつあるだけです。それでも「2-gram」の意味が分からないままでは、s[i + 1] が何のためにあるのかも、なぜ sの要素数 - 1 で止まるのかも読み取れません。プログラムより先に、問題文を読みます。

手順1 言葉の定義を探す ──「〜という」の文と例

問題文の1文目が、言葉の定義です。

定義の文

文字型の配列から、隣り合う2文字を先頭から順に取り出したものを、本問では 2-gram という。

2-gram についてこの問題で使う知識は、この1文で全部です。定義のすぐあとには、例が付いています。その例を枡に並べると、こうなります。

問題文の例を、枡に並べたところ

枡の上の数字=要素番号 / 色の付いた2枡=その段で取り出す 2-gram

隣り合う2文字を、先頭から1つずつ右へずらして取り出す

1個目 t, o

1t

2o

3m

4a

5t

6o

2個目 o, m

1t

2o

3m

4a

5t

6o

3個目 m, a

1t

2o

3m

4a

5t

6o

4個目 a, t

1t

2o

3m

4a

5t

6o

5個目 t, o

1t

2o

3m

4a

5t

6o

取り出せるのは5個。6文字より1つ少ない。

IPA が公開している科目Bの問題も、同じ書き方をしています。

本物もこう書かれる

「一つの要素だけが1 で他の要素が0 であるような整数型の配列による表現を,本問ではOne-Hot 表現という。」(令和8年度 科目B 公開問題 問5)

「注文データから,商品x と商品y とが同一の注文で購入されやすい傾向を示す関連度Lxy を,次の式で計算する。」(令和6年度 科目B 公開問題 問5)

知らない言葉を見たら、その言葉の前後から「〜という」「次の式で計算する」の文と、例を探します。見つけた文と例が、このあとの材料になります。

手順2 定義の語句を、式に写す

定義の文と、関数の説明「pair と同じ並びのものの個数を返す」を、語句ごとに区切ります。区切った語句は、それぞれプログラムのどこかに当たります。

問題文の語句が、プログラムのどこに当たるか

上の2段が問題文、下の3段がプログラムの行

定義の文隣り合う2文字を、先頭から順に取り出したもの

関数の説明pair と同じ並びのものの個数を返す

3行目for (i を 1 から (sの要素数 - 1) まで 1 ずつ増やす)

4行目if ((s[i] = pair[1]) and (s[i + 1] = pair[2]))

5行目と8行目cnt ← cnt + 1 … return cnt

同じ色どうしが、同じことを言っています。3行目の (sの要素数 - 1) には、色が付いていません。

語句が式になるときの読み方を、1つずつ書きます。

隣り合う2文字。配列で隣り合うのは、要素番号が1つちがいの2つです。s[i] の隣は s[i + 1]。i は「いま見ている 2-gram の、1文字目の要素番号」です。

先頭から順に。i を 1 から始めて、1 ずつ増やします。for のかっこの中は、変数をどこからどこまで動かすかを書いたものです(G6-1)。

pair と同じ並び。1文字目どうし、2文字目どうしが両方とも等しいことです。A and B は、A と B が両方とも真のときだけ真になります(G8-2)。

個数。数を入れる変数 cnt を2行目で 0 にして始め(i の値は3行目の for が入れます)、同じ並びを見つけるたびに 1 増やし、最後に return で返します。

プログラムの行を見て「これは問題文のどの語句か」を言えれば、その行は読めています。言えない部分が残ったら、そこが次に調べる場所です。この問題では、くり返しの終わりの (sの要素数 - 1) が残りました。定義の文にも関数の説明にも、これに当たる語句がありません。

手順3 問題文の例で、くり返しの終わりと答えを確かめる

残った (sの要素数 - 1) がなぜこの式になるのかは、問題文の例の数字から分かります。

くり返しの終わりを、例から出す

例の配列は 6文字で、2-gram は 5個です。

最後の 2-gram の2文字目は、配列の最後の文字、つまり 6番目です。1文字目はその隣なので、1つ前の 5番目です。

i は 2-gram の1文字目の番号なので、最後の i は 5。要素数の 6 より 1 小さい値です。

だから、くり返しの終わりは sの要素数 - 1。

ほかの値では、うまくいきません。

終わりを変えると

sの要素数 まで回す i が 6 のとき、条件の中の s[i + 1] は s[7] を指します。要素は6番目までしかなく、7番目はありません。無い要素とは比べられないので、この終わり方は誤りです。

sの要素数 - 2 まで回す i は 4 で終わり、5個目の {“t”, “o”} を見ません。戻り値は 1 になり、問題文の例の 2 と合いません。

最後に、問題文の例をプログラムに通します。countPair({"t", "o", "m", "a", "t", "o"}, {"t", "o"}) を呼び出して、戻り値が例のとおり 2 になるかを見ます。

countPair に、問題文の例を通す

当サイトオリジナルの例題


ループ開始前

配列

▲ いま読んでいる▲ いま書いた

いま計算していること

まだ計算していません

変数の状態

トレース表(進めると1行ずつ積み上がります)

条件が真になったのは i が 1 のときと 5 のときの2回で、戻り値は 2。問題文の例と一致しました。問題文の例は、自分の読み方が合っているかを確かめる答え合わせに使えます。空欄を埋める問題なら、選んだ式を入れて例を通し、例の戻り値と同じになるかを見ます。

確かめる

同じ読み方を、形を少し変えた問題で試します。

当サイトで作った問題です

次の問題文とプログラムを読んで、空欄に入る式を選んでください。

問題文

文字型の配列から、隣り合う2文字ではなく、1つおいた2文字(s[i] と s[i + 2])の組を先頭から順に取り出したものを、本問ではスキップペアという。例えば、配列 {“b”, “a”, “n”, “a”, “n”, “a”} のスキップペアは、順に {“b”, “n”}、{“a”, “a”}、{“n”, “n”}、{“a”, “a”} の4個である。

関数 countSame は、要素数3以上の文字型の配列 s を受け取り、s のスキップペアのうち、2文字が同じものの個数を返す。例えば、s が {“b”, “a”, “n”, “a”, “n”, “a”} のとき、戻り値は 3 である。ここで、配列の要素番号は1から始まる。

○整数型: countSame(文字型の配列: s)
  整数型: i, cnt ← 0
  for (i を 1 から (  ) まで 1 ずつ増やす)
    if (s[i] = s[i + 2])
      cnt ← cnt + 1
    endif
  endfor
  return cnt

当サイトで作った問題です

次の問題文とプログラムを読んで、空欄に入る式を選んでください。

問題文

予測の結果と正解とを1件ずつ比べ、一致した件数 ÷ 全体の件数 で求めた値を、本問では正解率という。例えば、予測が {“A”, “B”, “A”, “A”}、正解が {“A”, “B”, “B”, “A”} のとき、正解率は 0.75 である。

関数 seikairitsu は、要素数が等しい二つの文字型の配列 yosoku と seikai を受け取り、正解率を返す。ここで、配列の要素番号は1から始まり、割り算は実数として計算する。

○実数型: seikairitsu(文字型の配列: yosoku, 文字型の配列: seikai)
  整数型: i, cnt ← 0
  for (i を 1 から yosokuの要素数 まで 1 ずつ増やす)
    if (yosoku[i] = seikai[i])
      cnt ← cnt + 1
    endif
  endfor
  return 

公開問題では、こう出ている

試験要綱は、科目Bの出題範囲に「数理・データサイエンス・AI などの分野を題材としたプログラム」を挙げています。IPA が公開している科目Bの問題から、分野の言葉を題材にしたものを5問並べます。どの問題も、言葉の意味・式・例のどれかを問題文に書いています。

言葉と解説 問題文に書いてあること
One-Hot 表現
令和8年度 問5
言葉の定義の1文と、変換の例の図
理論度数
令和7年度 問5
何の人数を指す言葉かの説明と、集計結果の例の表。計算のしかたはプログラムに書いてある
関連度
令和6年度 問5
計算の式、式の中の記号の意味、表の例を式に入れた計算
コサイン類似度
令和5年度 問5
何を測る尺度かの1文と、計算の数式
配列の並びがどの程度似ているかの指標
サンプル問題 問12
指標の計算式と、関数に渡す値と戻り値の例の表

読み方は、どれもこの回と同じです。問題文から定義と例を探し、語句を式に写し、例で確かめます。

次に読む

A15 コントロールブレーク処理 ─ キーが変わったら小計を出す
A4-2 文字列照合 ─ 重ねて、ずらして、また重ねる
解説一覧 科目B 全44問の解説 ─ 公開問題とサンプル問題
目次 基本情報技術者試験 科目B 攻略ガイド

この記事で引用した資料

いずれも独立行政法人情報処理推進機構(IPA)が公表したものです。IPAは公表済みの試験問題について、教育目的での使用に許諾および使用料を不要としていますが、著作権は放棄していません。本記事では、引用した箇所の文言を改変していません(省略や補いがある場合は、その場に明記しています)。

本文の例題と設問は当サイトのオリジナルです。

タイトルとURLをコピーしました