\documentclass[japanese]{jnlp_3.8}
\usepackage{jnlpbbl_2.2}
\usepackage[dvipdfmx]{graphicx}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{url}
\usepackage{array}
\usepackage{hangcaption_jnlp}
\allowdisplaybreaks


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% author's definition
\usepackage{booktabs}
\usepackage{multirow}
%%%%\usepackage{tabularx}
%%%%\usepackage{appendix}
%%%%\usepackage{lscape}
\usepackage{pifont}
\newcommand{\xmark}{\ding{55}}
%%%%\usepackage{color}
%%%%\usepackage{jumoline}
%%%%\usepackage{cancel}
%%%%\usepackage{colortbl}
%%%%\renewcommand{\CancelColor}{\color{blue}}
%%%%\newcommand{\add}[1]{\textcolor[rgb]{0.9,0.1,0.1}{#1}}
%%%%\newcommand{\del}[1]{\textcolor{blue}{{\Midline{#1}}}}
%%%%\newcommand{\delx}[1]{\textcolor{blue}{\bcancel{#1}}}
%%%%\newcommand{\addbegin}{\color[rgb]{0.9,0.1,0.1}}
%%%%\newcommand{\addend}{\color{black}}
%%%%\newcommand{\delbegin}{\color[rgb]{0.1,0.1,0.9}}
%%%%\newcommand{\delend}{\color{black}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\Volume{32}
\Number{3}
\Month{September}
\Year{2025}
%%%%\Issuetitle{「　　　　」特集号}

\received{2025}{2}{1}
\revised{2025}{5}{12}
\accepted{2025}{6}{20}

\setcounter{page}{918}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\jsubject{応用システム論文}
\jtitle{LLM を用いたリランキングによる ERP ソフトウェア部品\\推薦システム}
\jauthor{出内　将夫\affiref{Author_1}\affiref{Author_2}\affiref{Author_3} \and 笈田　佳彰\affiref{Author_1}\affiref{Author_4} \and 東山　翔平\affiref{Author_2} \and 田中　英輝\affiref{Author_2} \and \\
	内山　将夫\affiref{Author_2} \and 渡辺　太郎\affiref{Author_3}}
\jabstract{%
本稿では，コンポーネント型 ERP パッケージを用いて業務システムを構築するシステム開発者の支援を目的とした，大規模言語モデルを用いたリランキングによるソフトウェア部品推薦システムについて報告する．提案システムでは，リランキングを行うために，外部データを組み合わせた多肢選択問題を作成し，類似検索により訓練データから類似事例を取得して文脈内学習に用いた．これにより，提案システムは従来システムより適合率を 5\% 以上向上し，システム開発者にとって有用であることを確認した．また，高精度を達成した大規模言語モデルは，より多くのタスクに関連したテキストで事前訓練され，タスク関連知識を獲得していることが分析から示唆された．
}
\jkeywords{ERP，ソフトウェア部品，推薦システム，LLM，リランキング}

\etitle{Component Recommend System for Enterprise Resource Planning Package by Reranking using Large Language Models}
\eauthor{Masao Ideuchi\affiref{Author_1}\affiref{Author_2}\affiref{Author_3} \and Yoshiaki Oida\affiref{Author_1}\affiref{Author_4} \and Shohei Higashiyama\affiref{Author_2} \and Hideki Tanaka\affiref{Author_2} \and\\
	 Masao Utiyama\affiref{Author_2} \and Taro Watanabe\affiref{Author_3}} 
\eabstract{%
This paper reports on a software component recommendation system using large language models to support system developers who build business systems using component-based Enterprise Resource Planning (ERP) packages. The proposed system leveradges external data and few-shot examples retrieved from training data using neighborhood search, and solves multiple-choice questions in a manner of in-context learning. As a result, the proposed system improved its precision by over 5\% compared to the baseline system, which is valuable for system developers. Furthermore, \pagebreak our analysis suggests that large language models achieving high precision have acquired task-related knowledge through pre-training with a larger amount of task-relevant text than those that do not.
}
\ekeywords{ERP, Software Component, Recommendation System, LLM, Reranking}

\headauthor{出内，笈田，東山，田中，内山，渡辺}
\headtitle{LLMを用いたリランキングによるERPソフトウェア部品推薦システム}

\affilabel{Author_1}{富士通株式会社}{FUJITSU LIMITED}
\affilabel{Author_2}{情報通信研究機構}{National Institute of Information and Communications Technology}
\affilabel{Author_3}{奈良先端科学技術大学院大学}{Nara Institute of Science and Technology}
\affilabel{Author_4}{東京大学}{The University of Tokyo}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\maketitle


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{はじめに}

ERPパッケージ (Enterprise Resource Planning package) とは，人事や会計などの共通業務を中心に，企業などの法人における様々な業種や業務に対応する機能を持つソフトウェアである．
その中でも，組織ごとの要件に合わせて必要となるコンポーネントを組み合わせて利用するERPパッケージは，コンポーネント型ERPパッケージ（以下単にコンポーネント型ERPと呼ぶ）と呼ばれている．
コンポーネント型ERPを用いた業務システム構築は，自由度が高く組織ごとの要件に合わせた導入が可能であり，個別のシステム構築に比べてコストや利用実績の観点で優れているため，ITベンダー・コンサルタントが顧客の要件に応じて必要機能選定やカスタマイズを行う形で，様々な組織での導入が進んでいる．

顧客組織へのコンポーネント型ERP導入を支援するITベンダー・コンサルタントでは，顧客ごとに記述が異なる要件が満たせるよう，ERPパッケージから必要な機能を選んで提供するソフトウェア部品選択と呼ばれる作業を行うが，この作業の効率化や作業支援が求められている．
例えば，コンポーネント型ERPであるSAP社のERPが提供する機能数は万を超え，また，その機能もパラメーターを変更することで動作が変わるため，業種・業務の知識に加え，ERPパッケージの知識，過去案件でのERP導入で得た調査知見などを備えた経験豊富なエンジニアが必要となる．
適切なソフトウェア部品選択ができれば，コンポーネント型ERPの利点を享受でき，パッケージベンダーが提供する追加機能や拡張機能の恩恵が受けられるが，それができない場合は，アドオンの独自開発による対応となり，追加開発や保守，パッケージエンハンス時の再対応が必要となる．
したがって，プロジェクトの成功にとって重要な指標であるQCD\footnote{QCDは，それぞれ，品質：Quality，コスト：Cost，納期：Deliveryの頭文字}が悪化してしまう．
また，ITベンダー・コンサルタントにおいて，コンポーネント型ERPに熟練した人材は不足することが多いため，支援システムを介した半自動的な作業支援の実現により，より多くのエンジニアがソフトウェア部品選択に携われることが望ましい．

コンポーネント型ERPにおけるソフトウェア部品選択を対象としたこれまでの研究として，システム開発者向けに，オントロジーや機械学習を用いたソフトウェア部品選択の支援システムが開発されている\cite{Fujitsu_ERP_Ontology,Fujitsu_intra_AI,Fujitsu_ERP_LSTM,ERP_BERT}．
これらのシステムは，顧客の要件が記述された機能要件テキストを入力とし，要件を満たす機能を持つソフトウェア部品を予測し，順位付けしてシステム開発者に推薦する．
一連の研究により，次第に適合率が向上し，コンポーネント型ERPを用いたシステム開発者の支援は発展したが，システム開発者の業務効率化のため，適合率の更なる向上が求められていた．
適合率向上が困難な要因として，要件に関連した法制度や商習慣などの関連知識を踏まえて，必要な機能を判断しなければならない点や，機能要件テキストに記載された表現が顧客ごとに異なるため，似た要件であっても過去事例との対応が非自明な点が挙げられる．

本研究では，高度な言語理解能力や幅広いドメインの知識を持ち，多肢選択問題を含む様々な分類・生成タスクで高い性能を示している大規模言語モデル (LLM: Large Language Model) \cite{ChatGPT_3_35_capability,GPT4_tech_report,Llama3Family_arXiv,Mixtral_arXiv,Qwen2_arXiv}に注目し，LLMを用いた高精度なソフトウェア部品選択システムを構築する．
LLMには，処理可能なコンテキスト長の限界や，推論コストの高さなどの課題があるため，LLMのみで数百を超えるような多数のクラスに対する分類問題を解くことは難しい．
そこで，ソフトウェア部品推薦タスクを候補生成とリランキングの2ステップに分割し，後者のステップでLLMを用いてリランキングを行うシステムを提案する．

具体的には，提案手法は次の処理を行う．
\begin{enumerate}
  \item 候補生成ステップでは，BERTを用いた従来手法EMMRT \cite{ERP_BERT}を採用し，数百クラス規模の全クラスから，同手法による予測結果上位3クラスを抽出する．
  \item リランキングステップでは，多肢選択問題形式を採用し，解の例示（以降，few-shotと呼ぶ）を含むプロンプトをLLMに入力し，候補3クラスを並べ替える．
  \item (2)において，few-shotに用いる事例を，k-近傍法に基づく類似事例検索により訓練データから選出し，類似度順に並べたプロンプトを用いる．
  \item (2)において，リランキング対象のソフトウェア部品を補足する情報として，訓練データに加えて，Webから収集したERPソフトウェア部品の機能説明テキストや分類情報を利用し，これらもプロンプトに含める．
\end{enumerate}

本研究の貢献は，提案手法についての3つのリサーチクエスチョン (RQ) を設定し，その検証結果を示したことである．本研究のRQは次の3つである．
\begin{enumerate}
  \item[RQ1] コンポーネント型ERPのソフトウェア部品推薦タスクにおいて，LLMを用いたリランキングは有効か．
  \item[RQ2] LLMを用いたコンポーネント型ERPのソフトウェア部品リランキングにおいて，プロンプトにどのような要素を含めることが精度向上に有効か．
  \item[RQ3] コンポーネント型ERPのソフトウェア部品リランキング精度が高いLLMが持つ特徴は何か．
\end{enumerate}
各RQに対する検証結果は，次のようにまとめられる．
(1)提案手法により，BERTを用いた従来手法の予測結果のリランキングを行い，ERPソフトウェア部品選択の予測結果最上位の適合率を従来手法EMMRTの68.6\%から73.9\%に向上し，推薦システムの誤り率が約17\%減少した．
(2)また，Ablation Studyにより，選択肢の一部に部品説明テキストを含めること，類似検索を用いて過去事例から類似事例を取得しfew-shotとして用いることが，精度向上に有効であることを示した．
(3)そして，リランキング精度が高かったLLMが備える特徴について分析し，リランキング精度が高かったLLMが，より多くのタスクに関連したテキストで事前訓練され，タスクの関連知識を獲得していることを示した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{関連研究}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{ソフトウェア部品の推薦システム}

ソフトウェア開発において，利用実績のある既存ソフトウェア部品を再利用することで，高品質かつ短期間での開発を行うという考え方は，オープンソースソフトウェア (OSS) の増加とともに一般的となっており，目的に合うソフトウェア部品の推薦システムが提案されてきた\cite{Software_Recommendation,ThirdParty_Libraries_Recommendation,ThirdParty_Libraries_Recommendation2,TestDriven_Software_Reuse,TestDriven_Software_Reuse2}．
開発中のソースコード情報を基に，有用なソフトウェア部品を推薦するシステム\cite{Software_Recommendation,ThirdParty_Libraries_Recommendation,ThirdParty_Libraries_Recommendation2}では，OSSのソースコード解析結果やQAシステム，バグレポートのテキスト解析結果などから，ソフトウェアの知識ベースを構築し，類似プロジェクトや利用可能なライブラリ，利用方法などをソフトウェア開発者に推薦する．
ソフトウェアに期待する動作をテストケースとしてソースコードより先に記述するテスト駆動開発において，テストケースの情報を基に有用なソフトウェア部品を推薦するシステム\cite{TestDriven_Software_Reuse,TestDriven_Software_Reuse2}が提案されている．
このシステムでは，用意したテストケースに記載された要件に合うソフトウェア部品の検索を行い，要件をどの程度満たしているかに応じてソフトウェア部品をランキング形式でソフトウェア開発者に推薦する．
これらの研究では，基本的にソースコードが入手可能なOSSを検索することを前提としているため，ソースコードが公開されていないコンポーネント型ERPにおけるソフトウェア部品推薦システムに適用することは難しい．

また，LLMを応用して，ソフトウェアのソースコードを生成するソースコードLLMと呼ばれる試み\cite{CodeT5,StarCoder}も行われている．
\citeauthor{CodeT5} \citeyear{CodeT5}は，9つのプログラミング言語を対象に，500億トークンのOSSのソースコードを用いて事前訓練を行い，説明文とそれに対応するソースコードで追加事前訓練を行うことで，ソフトウェア開発者が自然言語で入力した機能を持つソースコードの生成が可能な，パラメータ数770Mのエンコーダデコーダ型モデルを提案した．
また，\citeauthor{StarCoder} \citeyear{StarCoder}は，80超のプログラミング言語を対象に，OSSとして公開されている1兆トークンのソースコードを用いて事前訓練を行った，パラメータ数15.5Bのデコーダ型モデルを提案し，Pythonを中心に様々な観点でソースコード生成に関する評価を行った．
ソースコードLLMは，自然言語のテキストとソースコードの一部を入力とし，ソースコードの生成を行うため，生成結果には参照するライブラリや機能呼出などが含まれる．
そのため，生成されたソースコードの一部として，ライブラリや機能呼出という単位で，ソフトウェア部品を推薦していると捉えられる．
これらのLLMが有する自然言語で記述された機能に対応したソースコードの生成能力は，コンポーネント型ERPにおけるソフトウェア部品推薦にも有用だと考えられる．
しかし，これらの研究ではソフトウェア開発者がソースコードを記述することを前提としているため，コンポーネント型ERPにおけるソフトウェア部品推薦システムに適用することは難しい．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{コンポーネント型ERPにおけるソフトウェア部品選択}

オントロジーを用いた推薦システム\cite{Fujitsu_ERP_Ontology}では，過去プロジェクトの文書からコンポーネント型ERPが担う業務の階層関係を定義し，ソフトウェア部品の機能説明文を解析して対象と処理に分けることで，ソフトウェア部品間の関係をオントロジーとして構造化した．
このシステムは，システム開発者支援のためにソフトウェア部品間の関係可視化に焦点をおいており，機能要件テキストに含まれる特徴語をキーとして，コンポーネントERPパッケージ内の関連性が高いソフトウェア部品を中心に，関連するソフトウェア部品も併せて推薦する機能を実現した．
特定の機能要件のみに対して限定的に評価し，機能要件に関連したソフトウェア部品の推薦について，適合率43\%，再現率89\%を達成したが，適合率に課題があった．

\citeauthor{Fujitsu_ERP_LSTM} \citeyear{Fujitsu_ERP_LSTM}では，折り返し翻訳を用いてデータを拡張し，LSTM \cite{LSTM}を用いて機能要件テキストに対応したソフトウェア部品を予測する推薦システムを提案した．
機能要件テキストの多クラス分類問題としてタスクを定式化し，顧客ごとに表現が変わることが多い機能要件テキストに，折り返し翻訳を適用することにより，機能要件テキストの表現を多様化することで，\citeauthor{Fujitsu_ERP_Ontology} \citeyear{Fujitsu_ERP_Ontology}と比べて，適合率を向上した．
約500件の異なる機能要件テキストに対し，正解のソフトウェア部品が推薦結果の上位1位，3位，20位以内に含まれた場合を予測正解とし，予測上位N位以内の適合率をP@Nと表し\footnote{P@Nは，Precision@Nの略称であり，@Nは予測上位N位以内を示す．}，それぞれP@1，P@3，P@20として評価した．
評価結果は，P@1で54.9\%，P@3で69.6\%，P@20で86.4\%であった．

折り返し翻訳によるデータ拡張とBERT \cite{BERT}を用いた推薦システム\cite{ERP_BERT}では，オリジナルの訓練データと折り返し翻訳で拡張した訓練データとを分けて日本語事前訓練BERT \cite{Japanese_BERT,Japanese_BERT_paper}をファインチューニングし，それぞれの予測結果をアンサンブルすることで，\citeA{Fujitsu_ERP_LSTM}から適合率をさらに向上した．
\citeauthor{Fujitsu_ERP_LSTM}と同様の評価を実施し，P@1で68.6\%，P@3で83.4\%，P@20で90.7\%を達成し，ランキング結果全体の精度を示すMRR (Mean Reciprocal Rank) 値は0.763であった．

これらの研究では，適合率が向上し，P@3が80\%を超えたことで実用的との評価を受けていたが，予測結果上位1位が正解できていない場合には，推薦システムの予測結果を基に，システム開発者が行うソフトウェア部品の機能操作等の確認作業で手戻りが発生するため，P@1のさらなる向上が求められていた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{LLMとICLを用いた多クラス分類問題の精度向上}

近年，主にTransformerアーキテクチャ\cite{Transformer}のデコーダーのみで構成された大規模な言語モデルは，一定の規模，一定の訓練量を超えると，創発的な能力を備える\cite{LLM_EmergentAbility}とされ，様々なLLMが提案，公開されている\cite{LLM_Survey}．
公開されているLLMの多くでは，大量のコーパスによって次単語予測で事前訓練を行ったベースモデルと，ベースモデルを多種の教師ありタスクや報酬モデルを用いて追加訓練した，指示への応答やチャット用に特化したモデルが用意されている．

目的タスクでの精度を向上させるためのLLM学習・推論方法の1つに，モデルのパラメーター更新は行わず，プロンプトとしてLLMのコンテキストに入力する指示内容等を工夫する文脈内学習 (ICL: In-Context Learning) という方法がある\cite{ICL_fewshot}．
ICLにおいて，どのような情報をプロンプトとして与えるかについては様々な選択肢がある．
特に，LLMに解かせる問題と同様の形式の解答付き問題を，例題として数事例分例示するfew-shot ICLは多く採用されており，効果的な例示方法の研究も行われている\cite{ICL_Survey}．
例題事例を選ぶ際には，回答対象の問題との類似度や例題間の多様性が考慮されることが多い．
また，例題事例の並び順については，回答対象の問題に近い位置に類似度がより高い事例を配置されることが多く，有効性が確認されている．
類似度の判断基準はタスクに応じて様々であり，自然言語で記述した質問文からのSQL文生成や自然言語の意味解析では，問題を解くために必要な観点を一度LLMに生成させ，その観点に合う事例を探す方法も提案されている\cite{SkillBased_fewshot_ICL}．

LLMを用いて，推薦システム，情報検索システム，情報抽出システムなどの多クラス分類問題を，従来手法に比べ高精度に解く手法が提案されている\cite{LLM_in_RecSys,LLM_in_InfRet,LLM_in_InfExt,LLM_in_InfExt2}．
LLMの活用方法は様々あるが，別の手法を用いて一定数に絞り込んだ候補のリランキングやフィルタリングにLLMを用いる方法が存在する\cite{LLM_as_ranker_in_RecSys,LLM_as_ranker_in_InfRet,LLM_as_ranker_in_InfExt}．
\citeauthor{LLM_as_ranker_in_InfRet} \citeyear{LLM_as_ranker_in_InfRet}は，BM25で100候補抽出し，GPT-3.5とGPT-4で候補をより良い順に並べ替えるリランキングを行うことで，様々な分野，言語において情報検索の精度を向上できることを示した．
情報抽出システムにおけるエンティティリンキングタスクでは，情報抽出対象となるテキストの部分文字列に対して，知識ベースに存在するエンティティから候補を抽出し，エンティティ候補を周辺文脈やエンティティの属性を用いて正解を絞り込む2段階のタスクとして解かれることが多い．
\citeauthor{LLM_as_ranker_in_InfExt} \citeyear{LLM_as_ranker_in_InfExt}は，2段階目のタスクとして，候補の中から一番良い候補を選択するフィルタリングにGPT-4を用い，情報抽出の精度を向上できることを示した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{LLMを用いたstep-by-step生成による多クラス分類問題の精度向上}

LLMに思考の連鎖 (CoT: Chain of Thought) を明記したプロンプトを与えると精度が向上するという報告\cite{CoT}があることから，LLMの指示や回答の冒頭に``think step-by-step''というテキストを含めて，LLMに根拠や分析の言及を含む自由回答を生成させ，予測精度を向上する試みがある\cite{LLMzeroshotReasoner}．
本研究ではこの試みを``step-by-step生成''と呼ぶ．
多クラス分類問題におけるstep-by-step生成では，多肢選択問題形式で質問を与え，上述の条件で自由回答テキストを生成させた後に，自由回答テキストからの回答抽出を行う2段階が採用されている\cite{LLMzeroshotReasoner,MMLUpro}．
\citeauthor{LLMzeroshotReasoner} \citeyear{LLMzeroshotReasoner}では，CoTを含むfew-shot事例を準備できない0-shotの場合にも，LLMが生成するCoTにより精度が向上し，CoTのfew-shot事例が準備できれば更に精度が向上すると報告されており，推論が重要となる様々な専門分野のベンチマーク\cite{MMLUpro}でもfew-shotのCoT評価が行われ，精度の向上が報告されている．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{LLMを用いたERPソフトウェア部品推薦}

本研究では，LLMを用いてリランキングすることにより，推薦システムの最上位予測結果の適合率を向上するSCRARK (Software Component Reranking with ARranged Knn-few-shot) を提案する．
SCRARKでは，リランキング対象を従来研究\cite{ERP_BERT}の予測結果上位3位とし，リランキングに用いるプロンプトにおいて，few-shotに用いる事例を，k-近傍法に基づく類似事例検索により\ref{SCRARK_labeled_data}節に述べる訓練データから選出し類似度順に並べ替えを行った．
また，リランキングのためのプロンプトに，\ref{SCRARK_webdata}節に述べるソフトウェア部品の解説情報を利用した．
SCRARKの概要を図\ref{figure:SCRARK_concept}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 1
\begin{figure}[t]
\begin{center}
\includegraphics{32-3ia6f01.eps}
\end{center}
\caption{SCRARKの処理の概要}
\label{figure:SCRARK_concept}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SCRARKの入力は，図\ref{figure:SCRARK_concept}の左下に記した，機能要件テキストと従来研究\cite{ERP_BERT}の予測結果上位3位までである．
SCRARKは入力された内容に応じ，\ref{SCRARK_detail}節に述べる方法で，類似検索結果やWebデータを組み合わせてLLMに入力するプロンプトを作成する．
SCRARKは，作成したプロンプトをLLMに入力し，LLMの生成結果を参照しリランキングを行う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{タスク定義}

本研究では，ソフトウェア部品推薦タスクを候補生成とリランキングの2ステップに分割し，後者のステップでLLMを用いてリランキングを行うタスクを扱う．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 1
\begin{table}[t]
\input{06table01.tex}%
\caption{ラベル付きデータの例}
\label{table:examples_of_training_data}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{候補生成}

候補生成は，$N$件の機能要件テキスト集合$x = \{x_1, x_2, x_3, ... , x_N\}$に含まれるそれぞれの機能要件テキスト（表\ref{table:examples_of_training_data}に例を示す）に対し，解候補となる$M$個のクラスラベル集合$y = \{y_1, y_2, y_3, ..., y_M\}$の順位付けを行うタスクである．
予測に必要な訓練データやモデルなどが別途存在するが，ここではまず，入出力に着目して説明する．
ある機能要件テキスト$x_i$に対する，予測ラベル$y_i$がM個の解候補のうち，あるクラスラベル$j$となるスコアを$s(y_i=j|x_i)$と表すと，一つの事例に対する全ての予測結果は式\eqref{candidate_all}に示すベクトルで表せる．
\begin{align}
\label{candidate_all}
S_i = 
\begin{bmatrix}
s(y_i = 1 \mid x_i) & s(y_i = 2 \mid x_i) & \cdots & s(y_i = M \mid x_i)
\end{bmatrix}
\tag{1}
\end{align}

上記ベクトルをスコア順に並べ替え，上位から$m$件を抜き出した結果は式\eqref{candidate_topM}となり，これが候補生成の結果となる．
ただし，並べ替え後のスコアを$\hat{s}$とし，上位$n$番目のスコアを$\hat{s}_{i,n}$と表す．
\pagebreak
\begin{align}
\label{candidate_topM}
\hat{S}_{i,m} = 
\begin{bmatrix}
\hat{s}_{i,1} & \hat{s}_{i,2} & \cdots & \hat{s}_{i,m}
\end{bmatrix}
\tag{2}
\end{align}

従来研究\cite{ERP_BERT}では，\ref{SCRARK_labeled_data}節に述べる訓練データとドメイン適用済翻訳エンジンで折返し翻訳したデータそれぞれを用いて，日本語BERTをファインチューニングしたモデルの予測結果をアンサンブルし，式\eqref{candidate_all}を算出し，$m = \{1, 3, 20\}$それぞれの場合の式\eqref{candidate_topM}において，候補生成結果に正解が含まれるかを評価した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{リランキングとフィルタリング}

リランキングは，候補生成の予測結果を入力として，予測結果上位の適合率をさらに改善することを目的として，スコアベクトルを再計算し，候補の並べ替えを行うタスクである．
具体的には，式(2)を入力として，式(3)を出力するタスクである．
ただし，再計算後のスコアを$s^{\ast}$とし，${l}\leqq{m}$とする．
\begin{align}
\label{reranking_topL}
S^{\ast}_{i,m} = 
\begin{bmatrix} 
s^{\ast}_{i,1} & s^{\ast}_{i,2} & \cdots & s^{\ast}_{i,l}
\end{bmatrix}
\tag{3}
\end{align}

本研究では，予備実験の結果や関連研究を参考に，多肢選択問題を用いて従来研究\cite{ERP_BERT}の予測結果上位3位をリランキングし，予測結果の改善を行う．
従来研究\cite{ERP_BERT}における予測結果上位の適合率は，P@1で68.6\%，P@3で83.4\%であったため，リランキングを全事例について正解できたとしても，P@k (k≦3) の上限は83.4\%となる．
リランキングにはLLMを用い，プロンプトは多肢選択問題形式とし，機能要件テキストに加え，\ref{SCRARK_detail}節で説明する類似検索を用いたfew-shot事例，\ref{SCRARK_webdata}節で説明するWebから取得したソフトウェア部品の分類情報およびソフトウェア部品の機能説明テキストを与えた．
予備実験では，機能要件テキストのうち，公開情報\cite{Skill_Standard}を用いて，GPT-4を含めた予備実験を行い，機能要件テキストのみからソフトウェア部品IDを回答できるか確認した．
その結果，機能要件テキストのみからソフトウェア部品IDを回答させる設定では，LLMから正しい回答が得られず，選択肢形式として回答候補を与えることや，機能説明テキストや分類情報などを与えることで，正しい回答が得られたため，多肢選択問題形式を採用し，\ref{SCRARK_webdata}節で述べるWebから取得した情報を併用することが適切と判断した．
ただし，タスクの全ての回答候補として500以上のクラスが存在するため，候補数を絞り込む必要があると判断し，LLMを用いて多クラス分類を行った研究\cite{LLM_in_RecSys,LLM_in_InfRet,LLM_in_InfExt,LLM_in_InfExt2}で採用している選択肢数や，従来研究\cite{ERP_BERT}との比較の観点から，予測結果上位3位までのリランキングとした．

本研究のリランキングの評価指標としては，P@1およびMRRを用いる．P@1は，リランキング結果のうち上位1位の正確さを示す指標であり，候補生成の予測結果の中から最良の候補を選択するフィルタリングタスク\footnote{具体的には，式\eqref{reranking_topL}の先頭の要素を求めるタスク．}の指標ともみなせる．MRRは，リランキング結果全体の良さを示す指標である．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{データ}

本研究では，\cite{Fujitsu_ERP_LSTM,ERP_BERT}で使用していたラベル付きデータに加え，Web上に公開されているソフトウェア部品の解説情報を用いる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{ラベル付きデータ}
\label{SCRARK_labeled_data}

本研究の実験で用いるラベル付きデータについて，内容や入手方法について説明する．
ラベル付きデータは，従来研究\cite{Fujitsu_ERP_LSTM,ERP_BERT}において，訓練データとテストデータとして用いていたデータと同じである．
訓練データは5,150事例，テストデータは506事例存在し，テストデータは従来研究\cite{Fujitsu_ERP_LSTM,ERP_BERT}と同様に，本研究でも評価に用いる．
テストデータ506事例のラベルは全て異なるクラスであり，1クラスあたりの訓練事例数は平均で約10事例である．
また，訓練データのラベル分布には偏りがあり，3事例以下のクラスが約半数を占め，1事例のみしか存在しないクラスが100クラス以上存在する．

ラベル付きデータは，標準的な業務に関する公開情報，実際のプロジェクトにおける要件文書，運用ワークフローに記述された機能説明などから作成されている．
ラベル付きデータは，ラベルとテキストの組で構成されている．
ラベルには機能要件に対応するソフトウェア部品のIDが記述されており，テキストには機能要件が日本語の自然言語で記述されている．
ラベル付きデータの例を，表\ref{table:examples_of_training_data}に示す．

本研究のリランキングタスクでは，テストデータの事例ごとに機能要件テキストとラベル候補が3つ入力され，リランキング対象の類似事例を訓練データから取得する処理を行う際に，ラベル付きデータを扱う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{ソフトウェア部品の解説情報}
\label{SCRARK_webdata}

LLMにコンテキストとして与える多肢選択問題を作成する上で，Web上に公開されていたSAP社のコンポーネント型ERPに含まれるソフトウェア部品の解説情報を利用した\cite{SAP_Tcodes}．
解説情報は，ソフトウェア部品IDとその機能説明テキストのほか，パッケージやモジュールなどのソフトウェア部品の分類情報から構成されており，英語で機能や分類の説明が記述されている．
ソフトウェア部品の解説情報の例を表\ref{table:example_of_function_explanation}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 2
\begin{table}[t]
\input{06table02.tex}%
\caption{ソフトウェア部品の解説情報の例}
\label{table:example_of_function_explanation}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

表\ref{table:example_of_function_explanation}は上下に分かれており，上部と下部で同じソフトウェア部品の解説情報を例示している．
1列目と2列目のT-codeとT-code desc.は，それぞれソフトウェア部品IDとその機能説明テキストであり，表\ref{table:example_of_function_explanation}の上部と下部の共通項目である．
表\ref{table:example_of_function_explanation}の上部と下部の3列目以降にソフトウェア部品の分類情報を示している．
ソフトウェア部品の分類情報としてPackage，Module，Module Top，ComponentのIDと，それらの分類についての説明テキストが存在する．
Module Topは最上位のModuleを表し，Componentはコンポーネント型ERPインストール時のインストールコンポーネントを示しているが，Module TopにはModuleと重複が多く見られ，Componentの説明テキストにはComponentのIDと同じテキストが多かったことから，表\ref{table:example_of_function_explanation}の上部に示したT-code，Package，Moduleとそれらの説明テキストの6列のみを利用した．

本研究のリランキングタスクでは，リランキング対象のソフトウェア部品IDをキーとして，リランキングに必要なソフトウェア部品の機能説明と分類情報を取得し，LLMに与えるプロンプトを作成する処理を行う際に，ソフトウェア部品の解説情報を扱う．
リランキング対象の機能要件テキストは日本語で記述されており，ソフトウェア部品の解説情報は英語で記述されているため，記述言語が異なるが，機械翻訳による言語統一はせずにそのままのテキストを扱う．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{SCRARKの詳細}
\label{SCRARK_detail}

SCRARKの構成要素について，多肢選択問題の作成方法，few-shot選定方法，few-shot並べ替え方法の順に説明する．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{多肢選択問題の作成方法}
SCRARKでは，図\ref{figure:SCRARK_concept}のように，リランキング対象とWeb情報を組み合わせて多肢選択問題を作成し，推薦システムにおける最上位予測結果の適合率を向上を図る．
リランキング対象は，折り返し翻訳によるデータ拡張と日本語BERTを用いた従来手法EMMRT \cite{ERP_BERT}の予測結果上位3位とした．
また，LLMに与えるプロンプトは多肢選択問題とし，候補抽出結果と候補中に解が無い場合を加え，4つの選択肢から最適な選択肢を選ぶ形式とした．
近年開発公開されているLLMには，多言語のテキストやソースコードを含むテキストを用いて事前訓練されたものが多く，自然言語で記述された機能要件テキストに対応するソフトウェア部品の予測を行う能力を有すると考えた．
しかし，予測対象のソフトウェア部品IDと，機能要件テキストの対応は非自明なため，ソフトウェア部品の機能説明テキストや分類情報をWebから入手し，補足情報として用いた．
そして，LLMを用いた多クラス分類問題におけるリランキングおよびフィルタリングの手法\cite{LLM_as_ranker_in_RecSys,LLM_as_ranker_in_InfRet,LLM_as_ranker_in_InfExt}を参考に，LLMに入力する多肢選択問題形式のプロンプトを，リランキング対象のソフトウェア部品の機能説明と分類情報を組み合わせて作成した．
ソフトウェア部品の機能説明は選択肢の一部とし，分類情報は表の構造を持つJSON形式の構造化テキストとしてプロンプトに含めた．
選択肢の並び順として，既存手法\cite{ERP_BERT}の予測結果順のままだと，選択肢の位置でバイアスが生じてしまうため，リランキングの趣旨を踏まえ，順序をランダム化して用いた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{few-shot事例選定方法}
LLMに与えるfew-shot事例として，問題文と選択肢の双方に関連がある事例を与えるために，ラベル付きデータの中から選択肢のソフトウェア部品を解に持つ事例，かつ，機能要件テキストが類似する事例を，類似検索を用いて取得した．
4つ目の選択肢に対応するfew-shot事例には，選択肢に挙がっていないソフトウェア部品を解に持つ，機能要件が類似する事例を取得した．
類似事例の検索には，機能要件テキストをベクトル化し\cite{SentenceRepresentation_survey}，近似最近傍検索\cite{ANN_survey,FAISS}を用いた．

具体的には，検索を行う前に訓練事例の機能要件テキストを事例ごとにベクトル化してクラス単位および全事例のデータストアに格納しておき，検索時にはテスト事例における候補生成結果を基に検索対象のデータストアを決め，ベクトル化した要件テキストで検索を行った．
LLMを用いたICLのfew-shot事例選択において重視すべき観点として，質問との関連性と事例の多様性が挙げられる\cite{LLM_Survey}．
そこで，類似検索で取得する事例数について，選択肢ごとに偏りが生じないよう，各選択肢ごとに同数ずつ事例を選択した．
ただし，選択肢のソフトウェア部品を解とする事例が訓練データ中に少なく，事例数が不足した場合には，4つ目の選択肢に対応するfew-shot事例とした選択肢以外のソフトウェア部品を解に持つ事例数を調整することで，全体の事例数を統一した．
多肢選択問題の評価は，4番目の選択肢の正解を含めた精度となるため，1～3番目の選択肢の正解のみに絞り込み，推薦システムにおけるP@1を測定した．
また，各選択肢の対数尤度で順位づけを行いMRRを測定した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{Few-shot事例並べ替え方法}
few-shot事例の取得や並べ替えでは，LLMに与えるコンテキストが長い場合に位置による影響を受けるという報告\cite{LostInTheMiddle}や既存の手法\cite{LLM_Survey}を参考に，選択肢により関連するfew-shot事例が最後に来るように並べ替えた．
具体的には，まず選択肢のソフトウェア部品を解に持たない選択肢4つ目のfew-shot事例を類似度の低い順に並べ替えた後に，選択肢1番目から3番目までのfew-shot事例を同様に並べ替えることで，回答対象と類似する事例が回答対象の直前に与えられるように，並べ替えを行った．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{実験}

RQ1として設定した，「コンポーネント型ERPのソフトウェア部品推薦タスクにおいて，BERTを用いた従来手法EMMRT \cite{ERP_BERT}の予測結果を候補とし，LLMを用いたリランキングによって精度が向上できるか．」を確認する．
そのために，メイン実験として，\ref{used_LLMs_and_libraries}節に挙げる各LLMを用いて，提案手法により，推薦システムにおけるP@1の精度が向上するかを確認した．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 3
\begin{table}[b]
\input{06table03.tex}%
\caption{実験で用いたLLM}
\label{table:used_LLMs_in_experiment}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{実験で用いたLLMとライブラリ}
\label{used_LLMs_and_libraries}

実験では，表\ref{table:used_LLMs_in_experiment}に示す10のLLMを用いた．
公開元/モデル名は，Hugging Face \cite{huggingface_URL}上の公開URLと対応し，公開元IDとモデルIDを連結したテキストとなっている．
実験に用いるLLMを選定するにあたり，コンポーネント型ERPを導入する顧客や業務の内容次第では，導入先組織の機密情報が機能要件テキストに含まれることがあるため，クラウドサービスが利用できない点を考慮した．
そのため，2024年9月時点で商用利用が可能なライセンスでモデルが公開されており，オフライン実行できるLLMのうち，比較的大きなサイズである70B相当の性能を持ち，日本語と英語の双方について動作したと報告されており，ソースコードを含めた事前訓練を行っているモデルを中心に選出した．
また，指示学習 (Instruction Tuning) 済みのモデルが使用可能な場合は，指示学習済のモデルを使用した．

それぞれのLLMは，以下に挙げる特徴を持つ．
\begin{itemize}
\item Swallow-70b-instruct-hf，Swallow-MX-8x7b-NVE-v0.1，Llama-3-Swallow-70B-Instruct-{\linebreak}v0.1，Llama-3.1-70B-Japanese-Instruct-2407は，それぞれ英語中心に事前訓練された，Llama 2，Mixtral 8x7B，Meta-Llama-3-70B，Meta-Llama-3.1-70Bに日本語中心のコーパスで追加事前訓練を施したモデルである\cite{Swallow70B_1,Swallow70B_2,Swallow_URL,SwallowMX_URL,Swallow3_URL,cyberagentLlama31_70B_Jinst_2407}．
\item Swallow-MX-8x7b-NVE-v0.1，Mixtral-8x22B-Instruct-v0.1は，Sparse Mixture of Experts (SMoE) のモデルであるため，表\ref{table:used_LLMs_in_experiment}に記載したサイズは訓練済モデルが持つパラメーターサイズ総数であり，推論時にはそれぞれ13B，39Bのパラメーターが利用され，推論が訓練に対して軽量で高速であるという特徴を持つ\cite{SwallowMX_URL,Mixtral_arXiv,Mixtral_URL,Mixtral_8x22B_URL}．Mixtralで事前訓練に用いたコーパスは非公開であり，公式には日本語に対応していないが，予備実験で日本語の入出力が確認できたため，実験対象に加えた．
\item Meta-Llama-3-70B-Instruct，Meta-Llama-3.1-70B-Instruct，Meta-Llama-3.1-405B-Instruct-GPTQ-INT4は，主に英語で事前訓練されたモデルであり，公式には日本語に対応していないが，予備実験で日本語の入出力が確認できたため，実験対象に加えた\cite{Llama3Family_arXiv}．
\item Qwen2-72B-Instructは，日本語を含む27言語で事前訓練されたモデルであるQwen 2をインストラクションチューニングしたモデルであり，数学やコーディングに関するタスクに強みを持つモデルである\cite{Qwen2_arXiv}．
\item RYS-XLargeは，Qwen2 72Bに対して，追加のfine-tuningや，レイヤー複製とマージを行うことで，Open LLM Leaderboad \cite{OpenLLM_Leaderboard_URL}のベンチマークにおける性能向上を実現したモデルである\cite{RYS_XLarge_URL}．
\end{itemize}

各LLMでの多肢選択問題精度評価は，lm-evaluation-harness \cite{lmeval,lmeval2,lmeval_URL}を用いて実施した．
lm-evaluation-harnessは，ローカルの実験環境で実行できるLLMと，商用サービス等API経由で利用できるLLMの双方を対象とした，横断的なLLM評価フレームワークである．
LLMを用いて多肢選択問題を解く方法として，プロンプトに続いてLLMに生成させるテキストを選択肢いずれかに固定し，選択肢ごとの対数尤度を比較する方法のほか，選択肢のテキストが実際に生成されたかを判定する方法がある．
前者の方法は，LLMをローカル実行できる場合に採用される場合が多く，選択肢の長さによる正規化を行える．
後者の方法は，商用サービス等で提供されるLLMなどで対数尤度が取得できない場合に採用される場合が多い．
本研究の実験では，LLMに生成させるテキストを選択肢いずれかに固定し，選択肢長で正規化した選択肢ごとの対数尤度を比較する方法を採用した．

機能要件テキストの類似検索には，SEMSIS \cite{Semsis_github}を用いた．
SEMSISは，FAISS \cite{FAISS}をバックエンドに用いる近似最近傍検索ライブラリであり，ベクトル化の処理順や格納方法，インデックス手法の工夫などにより，既存のライブラリより高速かつ大規模なk近傍検索を可能にするライブラリである．
本研究では，テキストのベクトル化にはLaBSE \cite{LaBSE}を用い，コマンドラインインターフェースからSEMSISを利用した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{メイン実験設定}

メイン実験では，図\ref{figure:SCRARK_main_prompt}に示すプロンプトを用いた．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 2
\begin{figure}[b]
\begin{center}
\includegraphics{32-3ia6f02.eps}
\end{center}
\caption{SCRARKで用いたプロンプト}
\label{figure:SCRARK_main_prompt}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

機能要件テキストは日本語で記述されているため，指示文は日本語とした．
\{\{fewshot\}\}の部分は，選択肢のソフトウェア部品IDをラベルに持つ訓練事例から，機能要件テキストに類似した順に$n$事例 ($n \in \{1,2,3\}$) を取得し，shot数が$4n$となる設定とした．
その他の選択肢に対応するfew-shotとしては，選択肢に挙がったソフトウェア部品IDをラベルに持たない訓練事例から，機能要件テキストに類似した事例を取得した．
また，選択肢のソフトウェア部品IDをラベルに持つ訓練事例が不足した場合は，その他の選択肢に対応するfew-shot数を増やし，全体のshot数を統一した．

\{\{requirement\}\}には，機能要件テキストを与え，\{\{table\}\}には，表\ref{table:example_of_function_explanation}の上半分に示した情報を与えた．
表情報の表現形式については，予備実験でHTML，JSON，CSV，TSV，LaTeX，Markdown，S式の形式を比較し，各LLMにおいて予測精度平均が最も高かったJSON形式を用いた．
また予備実験にて，ソフトウェア部品IDを含む表情報を与えた場合にも，機能説明テキストなしの場合の精度を確認したが，多くのLLMで予測精度が低下する傾向が見られたため，選択肢はソフトウェア部品IDとソフトウェア部品機能説明テキストを用いた．
具体的には，\{\{cand1\}\}から\{\{cand3\}\}には，ソフトウェア部品IDとソフトウェア部品機能説明テキストを``, with the function of ''というテキストで連結し，選択肢全体を英語のテキストとした．
\{\{cand4\}\}は「この中には適切なものはない」とした．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{メイン実験結果}

訓練事例のクラス分布に偏りがあり，開発事例を設けることが難しかったため，各モデルでのテスト精度を一度に評価し，ベースラインとの比較を行った．
4，8，12-shotの各設定において，推薦システムにおけるP@1を測定し，各設定でP@1が最良の3モデルの結果，および，全モデルで4，8，12-shot各設定のP@1平均と標準偏差，MRRの平均と標準偏差，その他の選択肢を含む多肢選択問題の正解率を，メイン実験の結果として表\ref{table:main_result}に示す．
すべてのLLMにおける実験結果は付録に記載する．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 4
\begin{table}[b]
\input{06table04.tex}%
\caption{メイン実験結果}
\label{table:main_result}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

最良の結果を収めたのは，Meta-Llama-3.1-405B-Instruct-GPTQ-INT4に類似度順に並べ替えたfew-shotを12-shot与えた場合であり，折り返し翻訳によるデータ拡張と日本語BERTを用いたベースライン推薦システム\cite{ERP_BERT}のP@1である68.6を上回り，73.9となった．
したがって，ベースラインと比べて提案手法によるソフトウェア部品推薦の誤り率は，31.4\% $(100-68.6)$ から26.1\% $(100-73.9)$ へ，約17\%減少した．また，MRRでもベースライン推薦システムの0.763が，0.795に向上した．

他のLLMを用いた場合では次のような結果となった．
Mixtral-8x22B-Instruct-v0.1とMeta-Llama-3.1-70B-Instructでは，それぞれfew-shotを8shotと4shot与えた場合にP@1とMRRが，それぞれ73.3と0.790，73.1と0.784だった．
また，10 LLMの平均でもP@1とMRRがベースライン推薦システムを上回った．
LLMごとに見た場合，Swallow-70b-instruct-hfとSwallow-MX-8x7b-NVE-v0.1を除いた8つのLLMにおいて，4，8，12-shotすべての設定で，ベースライン推薦システムのP@1とMRRを上回った．
このことから，RQ1について，BERTによるテキスト分類問題のランキング結果をLLMによる多肢選択問題でリランキングすることで精度向上できることが確認できた．

コンポーネント型ERPを用いたシステム開発者が，顧客要求分析および顧客システム設計の業務において行う作業プロセスは大きく分けて，要求文書の理解，ソフトウェア部品選択，顧客説明資料作成，顧客との打合せの4つから構成される．
システム開発者は，顧客との打合せで顧客からの合意が得られるまで，ソフトウェア部品選択の作業を繰り返し行う．
つまり，ソフトウェア部品選択で適切なソフトウェア部品選択が行えない場合，顧客からの合意が得られず，後続の作業も含めたやり直しが必要となる．
本研究で支援対象としたソフトウェア部品選択は，富士通の社内調査によると，推薦システム導入前で顧客要求分析および顧客システム設計の業務全体に対して作業時間の約47\%を占めていた主要な作業である．
本研究による予測精度改善の顧客要求分析および顧客システム設計の業務への影響について，想定効果を熟練者にヒアリングしたところ，後続の作業にも影響するため定量的な試算は難しいが，予測システムの誤り率が17\%改善された意義は大きい，との回答が得られた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\paragraph{正解なし事例を含めた精度}
前述のように，本実験設定におけるP@1は，ベースラインの予測精度 (P@3) が上限となる評価指標である．
そこで，正解がない時に正しく判定できたかを測るため，LLMの多肢選択問題の正解率についても報告する．
多肢選択問題の正解率とは，ベースラインによる予測上位3位に正解がある事例については正解選択肢，正解がない事例についてはその他の選択肢を，LLMが選択できた場合に正解とみなす指標である．
表\ref{table:main_result}に示した4，8，12-shotの各実験設定においてP@1が最も高かったLLMでは，同じshot数の他LLMに比べて多肢選択問題の正解率も高かったが，P@1と正解率との精度差\footnote{P@1は，全事例のうち，選択肢に正解があり，なおかつLLMが正解選択肢を予測上位1位で予測できた割合である．多肢選択問題の正解率は，全事例のうち，選択肢に正解があるかないかにかかわらず，適切な選択肢（正解選択肢またはその他の選択肢）を予測できた割合である．したがって，「正解率$-$P@1」は，全事例のうち，選択肢に正解がなく，なおかつその他の選択肢を正答できた割合となり，この差分の値の上限は100$-$83.4$=$16.6である．差分が1.2の場合，その他の選択肢の正解率は約7.2\%となる．}は0.2から1.2\%ポイントであった．これは，その他の選択肢のみの正解率が10\%に達していないこととなるため，LLMが正解なしの事例を正しく正解できている事例は少なかったことがわかる．
shot数ごとの傾向として，shot数が増えるに従い，多肢選択問題の正解率とP@1の精度差が小さくなる傾向が見られ，全LLMにおける精度差の平均は，4，8，12-shotでそれぞれ1.0，0.7，0.3\%ポイントだった．
これは，その他の選択肢を正解とするfew-shotを与えていないことによる影響があると考えられる．
また，多肢選択問題の正解率とP@1の精度差は，LLMごとに傾向が異なり，Qwen系のモデルは他のモデルに比べ精度差が大きく，Swallow系のモデルは他のモデルに比べ精度差が小さい傾向がみられた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{分析と考察}

RQ2として設定した「LLMを用いたコンポーネント型ERPのソフトウェア部品リランキングにおいて，プロンプトにどのような要素を含めることが精度向上に有効か．」確認するためにAblation Studyの実験とstep-by-step生成の実験を，RQ3として設定した「コンポーネント型ERPのソフトウェア部品リランキング精度が高いLLMが持つ特徴は何か．」を確認するためにLLMが持つ特徴の分析を行った．

RQ2を確認するために，Ablation Studyおよびstep-by-step生成の実験として，表\ref{table:used_LLMs_in_experiment}の各LLMで，
\begin{itemize}
    \item 並べ替えなし：ICLにおいて訓練事例から類似検索を用いて取得したfew-shot事例の並べ替えを行わない場合，
    \item 表情報なし：ソフトウェア部品の分類情報を表形式で与えない場合，
    \item 類似検索なし：類似検索を行わない場合，
    \item 機能説明テキストなし：選択肢に機能説明テキストを与えない場合，
    \item step-by-step生成：多肢選択問題の比較実験として，ベースモデルが異なるLLMに対し，メイン実験と同等のプロンプトを与えた上で，LLMに生成させるテキストを選択肢いずれかに固定せず，step-by-step生成により解を導出した場合
\end{itemize}
について，リランキングの指標であるMRRに大きく影響するフィルタリング指標であるP@1を計測し，それぞれの効果を検証した．

RQ3の確認に際し，まず，リランキング精度が良いLLMは，より多くのコンポーネント型ERPに関連したテキストで事前訓練されており，タスクに関連した知識を獲得している，と想定した．
そして，想定が正しいかを確認するために，実験に用いた表\ref{table:used_LLMs_in_experiment}の各LLMで，
\begin{itemize}
    \item 選択肢テキストのword-level perplexity
    \item ソフトウェア部品IDをLLMに与えて生成させたソフトウェア部品機能説明テキストと正解テキストとの類似度
\end{itemize}
を算出し，算出した指標と，リランキング精度に相関があるかを確認した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Ablation Study}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Ablation Studyの実験設定}

Ablation Studyの実験では，提案手法の効果を確認するため，提案手法から表\ref{table:ablation_study_setting}に示す要素を除いた実験を行った．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 5
\begin{table}[t]
\input{06table05.tex}%
\caption{Ablation Studyの実験設定}
\label{table:ablation_study_setting}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step-by-step生成以外のAblation Studyの実験で用いたプロンプトは，図\ref{figure:SCRARK_main_prompt}と同様の形式である．
few-shotに関する要素を除いた，並べ替えなし，類似検索なしの設定では，図\ref{figure:SCRARK_main_prompt}に記載されている``\{\{fewshot\}\}''の部分を変更した．
few-shot並べ替えなしの設定では，選択肢順に類似検索を用いて取得したfew-shot事例を並べ，類似検索なしの設定では，すべての予測時に固定の事例5-shotを使用した．
表情報なしの設定では，図\ref{figure:SCRARK_main_prompt}に記載されている``表：\{\{table\}\}''の部分を削除し，機能説明テキストなしの設定では，選択肢テキストをソフトウェア部品IDのみとした．

step-by-step生成の実験では，メイン実験で用いたLLMのうち，ベースモデルが異なるLLMである，Mixtral-8x22B-Instruct-v0.1，Meta-Llama-3.1-405B-Instruct-GPTQ-INT4，Qwen2-72B-Instructの3つを用いた．
CoTの事例作成には専門家の知見が必要なことから，LLMに生成させるテキストを選択肢いずれかに固定し対数尤度評価を行った多肢選択問題と同じプロンプトを与えた上で，step-by-step生成により解を導出した場合に，精度が向上するかを確認した．

step-by-step生成の実験では，``think step-by-step''という表現を含めるために，\cite{en_ICL_prompt_principle}を参考にプロンプト全体を英語で記述し，日本語で記述される部分についての補足説明を加えた．
またCoTを含まないfew-shotを与えたため，その旨をプロンプトに記載した．

\citeauthor{LLMzeroshotReasoner} \citeyear{LLMzeroshotReasoner}と同様に，回答の抽出にもLLMを用いた．
予備実験にて，Mixtral-8x22B-Instruct-v0.1とQwen2-72B-Instructでは，テキスト抽出時に，ハルシネーションや指定フォーマット不適合が見られたため，すべてMeta-Llama-3.1-405B-Instruct-GPTQ-INT4を用いて回答を抽出した．

対数尤度評価時には選択肢に識別子を付与していなかったが，step-by-step生成では，生成結果から選択肢を特定する必要があるため，各選択肢に識別子を付与した．
識別子による影響を確認するため，予備実験でA～D，1～4の2パターンを試したが，同等の精度であったため，A～Dの識別子を用いて実験を進めた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{Ablation Studyの実験結果}

RQ2については，few-shotに用いる事例を訓練データから類似検索で取得し，選択肢にソフトウェア部品の機能説明テキストを追加したことが精度向上に大きく寄与し，few-shotの並べ替えとソフトウェア部品の分類情報追加についても若干の精度向上効果があることが分かった．
また，step-by-step生成の実験では，LLMに生成させるテキストを選択肢いずれかに固定して対数尤度評価を行った場合と比較して，全体的に精度が低下する傾向が見られた．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 6
\begin{table}[b]
\input{06table06.tex}%
\caption{Ablation Studyの実験結果}
\label{table:ablation_study_LLM_prompts}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Ablation Studyの実験では，メイン実験と同様に，各実験設定における各モデルでのテスト精度を一度に評価した．
Ablation Studyの実験結果として表\ref{table:ablation_study_LLM_prompts}に，類似検索ありの設定ではP@1平均が良い3モデルの結果を，固定5-shotの設定においてはP@1上位3モデルの結果を，また，全モデルのP@1平均と標準偏差を示す．

並べ替えなしの設定ではP@1平均は提案手法より1.1ポイント低く，さらに表情報なしの設定ではP@1平均は提案手法より0.8ポイント低かった．
類似検索$n$-shotの設定でも固定5-shotの設定でも，大半のモデルでは表情報ありの設定の方が表情報なしの設定よりP@1が高く，一部のモデルにおいて表情報ありの場合に大きく精度が下がったことにより，P@1平均は表情報ありで下がった．
特に，Swallow-70b-instruct-hfで表情報ありの場合で，表情報なしの場合と比べてP@1が約4～5ポイント低下する傾向が見られた．
固定5-shotの設定では，他の条件が同じでも，類似検索$n$-shotの設定と比べて，最高精度およびP@1平均が約4～5ポイント低下する結果となった．
そして，選択肢テキストからソフトウェア部品の機能説明テキストを除き，ソフトウェア部品IDのみとした場合，大きくP@1が低下した．
SCRARKで与えたプロンプトと同等の情報を与え，step-by-step生成を行った設定では，提案手法に比べ，最高精度が約1.6ポイント低かった．

これらの結果から，類似検索を用いたfew-shotの選定と類似度によるfew-shot並べ替えは精度向上に有効であり，本実験のデータに対して有効なプロンプトを作成できたと考えられる．
また，ソフトウェア部品の機能説明テキストを選択肢に加えた点は，LLMが大量の自然言語テキストで事前訓練されていることから，生成確率や機能要件とソフトウェア部品機能の対応関係などの要因から，LLMの予測能力を引き出せたと考えられる．
さらに，ソフトウェア部品に関する分類情報を表形式でプロンプトに与えることも，予測精度の向上に寄与した．

step-by-step生成では，few-shotの各事例をCoT形式で与えられていないことから，4，8，12-shotの設定のみではなく，few-shotを与えない0-shotの設定を含めて，LLMに生成させるテキストを選択肢いずれかに固定して対数尤度評価を行った場合と比較した．
比較結果を，表\ref{table:LLM_step_by_step}に，提案手法におけるP@1と併せて示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 7
\begin{table}[b]
\input{06table07.tex}%
\caption{提案手法におけるP@1とstep-by-step生成におけるP@1の比較}
\label{table:LLM_step_by_step}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

各shot数におけるstep-by-step生成と提案手法の精度と比べると，同等か最大で5.1ポイント精度が低下しており，全体的に精度が低下する傾向が見られた．
CoTを含むfew-shot用データを用いていないため，shot数を増やした場合は同形式の問題を扱う提案手法が有利となる可能性があるが，0-shotの設定でも提案手法の方が高精度であったため，本研究で扱ったタスクでは提案手法の方が適していたと考えられる．
また，熟練者の思考過程などの情報が入手可能であり，CoTを含むfew-shotが設定可能な場合には，step-by-step生成でさらに精度が向上できる可能性がある．

step-by-step生成結果を確認したところ，選択肢への言及が様々な形で現れていた．
例えば，機能要件テキストを参照しつつ，ソフトウェア部品が持つ機能との対応関係を説明したり，すべての選択肢について説明した後に要求と共通する点を説明したりする形式が見られた．
step-by-step生成結果の例を表\ref{table:examples_of_step_by_step_generation}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 8
\begin{table}[b]
\input{06table08.tex}%
\caption{step-by-step生成結果の例}
\label{table:examples_of_step_by_step_generation}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step-by-step生成結果の例のうち，1つ目は予測結果が正しく，2つ目は予測結果が誤っていた．
1つ目の生成結果では，3つの選択肢それぞれへの言及が見られ，選択肢のうち1つ以外は機能要件テキストに対応するソフトウェア部品では無いと記載した上で，解を選定していた．
2つ目の生成結果では，3つの選択肢のいずれも機能要件テキストに対応するソフトウェア部品であることが記載されており，3つの選択肢のうち2つが同じ機能説明テキストであることに触れた上で，残る1つの分類に着目して解を選定していた．
これらの事例の比較からは，LLMは機能要件テキストと選択肢テキストを基に，リランキングが困難な事例を判別できているようにも見受けられた．
また，機能説明テキストが同じ文字列となっていた点など，データの改善に繋げられる可能性もある．

業務における推薦システムの活用においても，予測結果のソフトウェア部品IDのみを利用するのではなく，予測の根拠情報を参照することで，step-by-step生成結果が説明性という価値を持つ可能性はあるが，LLMの生成結果にはハルシネーションが含まれる懸念があるため，利用者が一定以上のスキルを有する必要がある．
過去の知見の蓄積，という観点では，業務において根拠情報を含めたデータ蓄積を行うことは，今後ますます重要な意味を持つと考えられる．
しかし，step-by-step生成は回答を1つに絞るために使われることが多いため，リランキングに適用するには，多肢選択問題を組み合わせることや，訓練データにstep-by-step生成結果を付与するなどの追加検討が必要となる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{LLM分析}

RQ3に関して，メイン実験で良い成績を収めたLLMがどのような特徴を持つか，次の2点の確認を行った．
まず，LLMごとにタスクに関連したテキストで事前訓練されていたかどうかの確認として，テスト事例に含まれるラベルごとに，ソフトウェア部品IDとソフトウェア部品説明テキストを組み合わせて作成した選択肢テキストのword-level perplexityを計測した．
次に，タスクに関連する知識を獲得しているかどうかの確認として，ソフトウェア部品IDの文字列からソフトウェア部品の機能説明テキストをLLMに生成させ，正解のソフトウェア部品機能説明テキストとの類似度を計測した．
その結果としては，後述するように，実験に用いたLLMにおいて，LLMの選択肢テキスト生成におけるword-level perplexityとタスク精度，ソフトウェア部品機能説明テキストの正解テキスト・LLM生成テキスト間の類似度とタスク精度が，それぞれ中程度の負の相関，正の相関を持つことが分かった．
タスク精度にはP@1とMRRを用いた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{選択肢テキストごとのword-level perplexityとタスク精度の関係}

word-level perplexityの算出のために，表\ref{table:used_LLMs_in_experiment}に示す各LLMにおける選択肢ごとの対数尤度と，LLMに依存しない方法で選択肢ごとの語数を求めた．
選択肢ごとの対数尤度は，予測時と同様にlm-evaluation-harnessを用いた．
選択肢ごとの語数は，NLTK (Natural Language Toolkit) \cite{nltk}のword\_tokenizeを用いて各選択肢を語単位に区切って算出した．

LLMごとの選択肢テキストのword-level perplexityと，タスク精度（P@1またはMRR），それらの間の相関係数を，word-level perplexityの昇順に並べ，表\ref{table:LLM_candidate_coef}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 9
\begin{table}[t]
\input{06table09.tex}%
\caption{選択肢テキストのword-level perplexityとタスク精度の一覧と相関}
\label{table:LLM_candidate_coef}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

選択肢のword-level perplexityとタスク精度の相関係数は，P@1では$-0.527$，MRRでは$-0.499$となり，中程度の負の相関が見られ，タスク精度が良いLLMは選択肢のword-level perplexityが低い傾向が見られた．
選択肢のword-level perplexityは，より多くのタスクに関連したテキストを用いてLLMを事前訓練することで下がると考えられるため，タスクに関するテキストにおいて，word-level perplexityがより低いモデルの方が，タスク精度が高いことが見込めることを示唆している．
ただし，モデルの構造や，事前訓練で扱った言語などに影響を受けると考えられ，複数のモデルを組み合わせて次単語予測するSMoEを用いたMixtral系のモデルが，word-level perplexityの最大と最小となった．
また，選択肢のテキストが英語であったため，日本語で追加事前訓練をしたモデルでは，ベースモデルに比べてword-level perplexityが大きくなっていた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{LLMを用いて生成したソフトウェア部品機能説明テキストとタスク精度の関係}

まず，LLMがタスクに関連した知識を獲得しているかどうかを明らかにするために，LLMにソフトウェア部品IDの文字列を与えて，ソフトウェア部品機能説明テキストを生成させる実験を行った．
\ref{SCRARK_webdata}節のWebから取得したソフトウェア部品の解説情報のうち，テストデータに含まれるソフトウェア部品IDすべてに対し，LLMを用いて機能説明テキストを生成させ，ソフトウェア部品の解説情報に含まれる機能説明テキストとの類似度を測定した．
Webから取得したソフトウェア部品の解説情報に含まれる機能説明テキストを正解とみなすことで，上記で算出した類似度が高いほど，LLMがソフトウェア部品IDからソフトウェア部品の機能説明テキストを正しく生成できたと解釈できる．
そして，ソフトウェア部品ごとの類似度の平均を計算し，類似度平均をLLMがタスクに関連した知識を獲得していることを示す指標とした．
さらに，上記で算出した類似度とタスク精度の相関を確認することで，LLMがタスクに関連した知識を獲得していることと，タスク精度の関係を調べた．

ソフトウェア部品IDの文字列からソフトウェア部品機能説明テキストをLLMに生成させる際に用いたプロンプトを図\ref{figure:LLM_analysis_generation_prompt}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 3
\begin{figure}[b]
\begin{center}
\includegraphics{32-3ia6f03.eps}
\end{center}
\caption{ソフトウェア部品IDからの機能説明テキスト生成に用いたプロンプト}
\label{figure:LLM_analysis_generation_prompt}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

メイン実験では機能要件テキストが日本語で記述されていたため，指示を日本語で記載したが，ソフトウェア部品IDとソフトウェア部品機能説明テキストの双方が英語で記述可能であるため，\cite{en_ICL_prompt_principle}を参考に指示を英語で記述した．
また，予備実験で生成結果に多くの繰り返しやハルシネーションが見られたことや，生成結果が長くなると内容が正しくても類似度のスコアが下がる傾向が見られたため，指示中に短い表現で生成するよう，5語から10語で説明せよ，との指示を加えた．
LLMからの出力に多かった書き出しが``The t-code \{\{tcode\}\} is used for''であったため，\ref{figure:LLM_analysis_generation_prompt}の出力例として記載した．
実際の出力では\{\{tcode\}\}に，プロンプトで指定した\{\{tcode\}\}と同じソフトウェア部品IDが入る．
LLMを用いて生成したソフトウェア部品機能説明テキストと正解の機能説明テキストとの類似度算出には，BERTScore \cite{BERTScore}を用いた．

LLMごとの類似度平均の結果を，類似度平均の降順に並べ，類似度平均とタスク精度との相関を併記して表\ref{table:LLM_generation_coef}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 10
\begin{table}[t]
\input{06table10.tex}%
\caption{LLMごとの類似度平均とタスク精度の一覧と相関}
\label{table:LLM_generation_coef}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

類似度とタスク精度の相関係数は，P@1では0.552，MRRでは0.506となり，中程度の正の相関が見られ，LLMがソフトウェア部品の機能説明を正しく生成できるほど，タスク精度が良くなる傾向を持つことが分かった．
つまり，RQ3「コンポーネント型ERPのソフトウェア部品リランキング精度が高いLLMが持つ特徴は何か」に対して，高精度なLLMはタスクの関連知識を獲得していることが示唆される．

なお，タスク精度が最も高いMeta-Llama-3.1-405B-Instruct-GPTQ-INT4を用いて生成したソフトウェア部品の機能説明テキストを確認したところ，機能説明テキストの正解が``SAP Business Workplace''であるソフトウェア部品の機能説明を，``SBWP is used for SAP Business Workplace inbox management.''のように部分文字列として含む形で生成していた事例が複数存在し，生成された周辺文字列が類似度を下げる要因となっていた．
一方，タスク精度が最も低いSwallow-70b-instruct-hfでは，全モデルの中で中程度となる類似度0.6を示したものの，機能説明テキストの正解を部分文字列に含む事例はなく，生成されたテキストに曖昧な表現が多く見られた．

このように，タスク精度が高いLLMでは，適切なソフトウェア部品の機能説明テキストを実際に多く生成しており，機能説明テキスト生成の品質を評価することで，予めモデルの性能を予想できる可能性もある．
ただし，今回用いたBERTScoreによる類似度の指標は，より妥当な機能説明テキストに必ずしも高い値を与えていない場合があり，LLMが生成したテキストの品質評価指標の改善については検討の余地がある．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{エラー分析}
\label{error_analysis}

エラー分析として，BERTを用いた従来手法とLLMを用いた提案手法それぞれで，
\pagebreak
予測結果の正解と不正解の事例数を集計し，LLMを用いた予測がどのような条件の場合に誤りやすいかについて分析を行った．
LLMを用いた予測は，メイン実験結果で最も高精度だったMeta-Llama-3.1-405B-Instruct-GPTQ-INT4の12-shotにおける予測結果を用いた． 
事例数の集計結果を表\ref{table:BERT_LLM_comparison}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 11
\begin{table}[b]
\input{06table11.tex}%
\caption{従来手法および提案手法による予測上位1位の正解・不正解事例数集計結果}
\label{table:BERT_LLM_comparison}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

LLMを用いた予測はBERTを用いた予測の上位3位からのフィルタリング結果である．
そのため，BERTを用いた予測で上位3位に正解が含まれない84件の事例は，LLMでは正解できない事例であった．
残る事例のうち，BERTを用いた予測で上位1位が不正解かつ上位3位以内に正解を含む事例は計75件あり，LLMを用いた予測ではそのうち41件（約55\%）でフィルタリングに成功していた．
一方，BERTを用いた予測で上位1位が正解だった事例347件のうち，333件（約96\%）はLLMを用いた予測でも上位1位で正解であった．
つまり，BERTを用いた予測における上位1位正解事例と上位1位不正解かつ上位3位正解事例に対し，LLMを用いた予測では，それぞれ約96\%，約55\%を正解したことで，全事例に対する精度が向上できていたことが分かる．

続いて，LLMを用いた予測が不正解だった事例について，目視確認を行ったところ，LLMのプロンプトとして与えた選択肢テキストのうち，機能説明が同一であったり類似していたりする事例が見られた．
そこで，選択肢中に正解が存在した422事例について，正解の選択肢テキストと不正解の各選択肢テキストとの間の編集距離（Levenshtein距離）を算出して編集距離の最小値を求め\footnote{正解選択肢テキストと不正解選択肢テキストのペアの編集距離について，全事例・全ペアにおける平均と標準偏差はそれぞれ約22.0と約12.0であった．事例内での正解・不正解選択肢テキストペアの編集距離最小値について，全事例における平均と標準偏差はそれぞれ約17.2と約10.7であった．}，(i) LLMを用いた予測が不正解となる場合に正解選択肢とテキストが類似する不正解選択肢がどの程度存在したか，(ii)正解選択肢とテキストが類似した不正解選択肢が存在する場合にLLMを用いた予測がどうなるか，という2点を確認した．

(i)について，選択肢中に正解が存在した422事例全体では，編集距離最小値が5以下の事例は約15\%（63事例），3以下の事例は約7\%（29事例）であるのに対し，LLMを用いた予測の上位1位不正解事例48事例では，編集距離最小値が5以下の事例は約21\%（10事例），3以下の事例は約19\%（9事例）であったことから，LLMを用いた予測の上位1位不正解事例では，正解選択肢とテキストが類似する不正解選択肢の割合がやや高かった．
(ii)について，編集距離最小値が小さかった事例におけるLLMを用いた予測結果を確認したところ，編集距離最小値が5以下の63事例中では，正解が53事例，正解と類似した選択肢を選んで不正解となった事例が9事例，それ以外の不正解が1事例であった．
編集距離最小値が3以下の48事例中では，正解が20事例，正解と類似した選択肢を選んで不正解となった事例が8事例，それ以外の不正解が1事例であった．

これらのことから，LLMに多肢選択問題の形式で選択肢テキストを組み立ててフィルタリングやリランキングを行う際，複数の選択肢テキストが類似する場合にそれらを区別できないエラーが生じやすい可能性が示唆される．したがって，選択肢テキストに，各選択肢を十分に区別できるような情報を含めることが有効と考えられる．
現場へのヒアリングでは，開発者から見て要件を満たせそうなソフトウェア部品が複数存在した場合にも，更新や参照するデータ，他ソフトウェア部品への影響など，詳細な機能が異なる場合があるとのことだったため，熟練者が留意しているソフトウェア部品選択における観点の情報を機能説明テキストに補えば，さらに精度を向上できる可能性がある．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{実用的なリランキング候補数の範囲}

本論文のメイン実験では，従来システムとの比較を考慮し，従来システムの予測結果上位3位までをリランキング対象としたが，予測精度を落とさずにより多くの候補数をリランキング対象とできるかについては，検討する余地がある．
そこで，リランキング候補数を増やした場合について，プロンプト長の制約による候補数の上限と，メイン実験の4-shotと同様の実験設定で選択肢数を増やした場合のリランキング精度を調べた．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{プロンプト長の制約によるリランキング候補数上限}

プロンプト長の制約については，表\ref{table:used_LLMs_in_experiment}に記載したそれぞれのLLMのコンテキスト長に依存する．
最もコンテキスト長が短いLLMは，tokyotech-llm/Swallow-70b-instruct-hfの4kである．
SCRARKの4-shotおよび8-shotの実験設定において，当該LLMのテスト事例におけるプロンプト長（トークン数）平均と標準偏差を確認したところ，それぞれ$1981.9 \pm 190.4$と$3529.4 \pm 298.2$であり，多くの事例でプロンプト全体がコンテキストに収まっていた．
しかし，12-shotの実験設定では，プロンプト長平均と標準偏差が$5293.6\pm 668.6$であったため，多くの事例でプロンプト全体がコンテキストに収まっていなかったことになる．
tokyotech-llm/Swallow-70b-instruct-hf以外のLLMではコンテキスト長が8k以上あり，LLMごとにプロンプト長平均が変動するもののその差は約2割程度であることから，プロンプト長は十分だったと考えられる．

リランキング候補数を$m$とした場合，選択肢数は$m+1$となり，各選択肢について訓練事例から$k$個ずつ取得するfew-shot事例数は$k(m+1)$となり，回答対象の事例自身も加えると．プロンプトに含まれる事例数はそれに1を加えた数$k(m+1)+1$となる．
各事例が$m+1$個の選択肢情報テキスト（選択肢テキストおよび表情報）を持つため，$m^2$に比例した個数の選択肢情報テキストを含むことになる．
最も長いコンテキスト長を持つLLMはLlama 3.1系やQwen2系で，コンテキスト長が128kあったため，理論上は最大で20肢60-shotのプロンプトが収まる計算となった．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsubsection{リランキング候補数を増やした場合の予測精度}

リランキング候補数を3から増やした場合のリランキング精度を計測した．
従来手法の予測結果上位から，リランキング候補数を4，5，7，10と増やし，リランキング候補数が3の場合であるSCRARKの4-shotと同様に，各選択肢ごとに類似事例を取得し，それぞれ5，6，8，11-shotの設定で実験を行った．
各実験設定でP@1とMRRに加え，推薦システムで実用上重視しているP@3をそれぞれ評価した．
各実験設定で最良のP@1を達成したLLMと，全LLMの平均および標準偏差を表\ref{table:changed_N_result}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 12
\begin{table}[b]
\input{06table12.tex}%
\caption{従来手法およびリランキング候補数を増やした場合の提案手法の予測精度}
\label{table:changed_N_result}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

P@1とMRRの最高精度がベースラインの精度を超えたのはリランキング候補数4までで，リランキング候補数が5以上ではベースラインの精度を下回った．
リランキング候補数が3の場合には8つのLLMでP@1とMRRがベースラインを超えていたが，リランキング候補数が4の場合にベースラインを超えていたのはMeta-Llama-3.1-405B-Instruct-GPTQ-INT4のみだった．
P@3については，ベースラインの精度を超えることはなかった．
また，リランキング候補数を増やすにつれ精度は悪化し，LLMごとのばらつきが大きくなる傾向がみられた．
リランキング候補数を増やした際の精度低下の要因として，\ref{error_analysis}節で述べたように正解と類似した選択肢の数が増えたことや，与えられるコンテキスト長が長くなったことの影響が考えられる．
ただし，リランキング候補数7とリランキング候補数10を比較した場合，最高精度はほぼ同等となり，半数のLLMではリランキング候補数10の場合にリランキング候補数7と同等以上の精度が得られていた．
LLMに対して行われたInstruction Tuningの内容によっては，精度が出やすい選択肢数が存在する可能性もある．
これらの結果から，コンポーネント型ERPにおけるソフトウェア部品選択タスクについては，現時点ではリランキング候補数3が実用的と言える．今後のLLMの性能向上や，本タスクに特化した追加のInstruction Tuningの実施によって，より大きなリランキング候補数で高い性能が達成可能になることも考えられる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{おわりに}

本研究では，コンポーネント型ERPを用いたシステム開発者を支援するために，既存の推薦システムの結果を，LLMを用いてリランキングすることで予測精度を向上した．
SAP社のコンポーネント型ERPを用いて業務システムを構築した実案件における機能要件テキストと，対応するソフトウェア部品を用いて実験を行い，実ビジネスにおけるデータに適用可能なことを示した．
精度向上のために，多肢選択問題の形でリランキングタスクを定式化し，タスクに関連した外部データや類似事例をLLMのプロンプトとして与え，有効性を検証した．

過去の推薦システムを用いて実施した実験の結果や，今回の精度向上を考慮し，どの程度の効果が想定されるかについて，ユーザにヒアリングを行った．
その結果，開発者が推薦システムを用いずに部品選定作業を行う場合に比べ，今回の結果を用いた推薦システムを用いて部品選定作業を行うことで，作業コストは半分以下となり，妥当な部品を選択できる割合も，2倍以上になると見込まれる，との回答が得られた．
また副次効果として，推薦システムの精度が向上することで，開発者がより多くの時間を顧客とのコミュニケーションに割けるようになるとともに，推薦システムは開発者の育成期間短縮にも役立つと考えており，従来8カ月を要していた育成期間を4カ月程度に短縮できると想定している，という期待のコメントも得られた．

以下に，本研究のRQ確認結果をまとめる．
RQ1については，BERTによる予測結果上位3位までを候補抽出結果としてLLMによるリランキングでP@1とMRRの精度を向上できることが分かった．
RQ2については，few-shotを訓練データから類似検索したこと，選択肢にソフトウェア部品の機能説明テキストを追加したことが精度向上に大きく寄与し，few-shotの並べ替えとソフトウェア部品の分類情報を与えたことも，精度向上に繋がった．
また，step-by-step生成については，CoTを含まないfew-shotを用いた場合は，対数尤度評価と比較して精度が低下する結果となったが，データ整備や生成結果活用により，今後有効性が向上する可能性がある．
RQ3については，高いタスク精度を達成したLLMにおいて，より多くのタスクに関連したテキストで事前訓練され，関連知識を得ていたことが示唆された．

本研究における，多肢選択問題の作成方法や，few-shotの選択方法，並べ替え方法は，他のシステムにも応用できる可能性がある．
本研究では上位3位のリランキングを行ったが，より多くの候補抽出結果をリランキングするには，\citeA{LLM_as_ranker_in_InfRet}のように，候補抽出結果にスライディングウィンドウ方式を適用し，1度に評価する選択肢数は少ないが，複数回評価することで，全候補をリランキングする方法も考えられる．
ただし，上記のスライディングウィンドウ方式の考え方と本研究で提案した表やfew-shotを組み合わせた場合，複数回の評価においてLLMに与えるコンテキストが大きく変わるため，\citeA{LLM_as_ranker_in_InfRet}でリランキング終了基準としていた，順位の変動が起きない状態に至るか確認など，検証が必要である．

何らかの要求や要件に対応するために，既存のソフトウェアを組み合わせて利用することは，ERPに関わらず様々な分野で行われている．
LLMが自然言語だけでなくソフトウェアに関するソースコードやデータフォーマットなどを含む様々な事前訓練を経てソフトウェア関連知識を獲得していくことで，システム開発におけるLLMの重要度は今後も向上していくと考えられる．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\acknowledgment

本研究の実験に用いたデータの収集やラベル付与，実験データの継続利用許可，推薦システムへのニーズや有用性評価について，富士通株式会社の瑞慶覧圭一様に協力いただきました．
御礼申し上げます．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\bibliographystyle{jnlpbbl_1.7}
\bibliography{06refs}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\appendix

\vspace{-1\Cvs}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{メイン実験とAblation Study実験で行ったすべての設定における実験結果}

本研究で行ったメイン実験におけるすべてのLLMのP@1，MRR，多肢選択問題正解率，および，Ablation Study実験におけるすべてのLLMおよび設定のP@1を表\ref{table:all_result}に示す．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% table 13
\begin{table}[p]
\input{06table13.tex}%
\caption{メイン実験とAblation  Study実験におけるすべてのLLMの精度}
\label{table:all_result}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{表情報の表現形式および選択肢テキストを決めるための予備実験結果}

本研究の予備実験として行った表情報の表現形式と選択肢テキストを決めるための実験結果を表\ref{table:table_comparison}に示す．
プロンプトに含まれる表情報と選択肢テキスト以外の変化を最小限にするため，固定 5-shotの設定と組み合わせて実験を行った．

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%  table 14
\begin{table}[t]
\input{06table14.tex}%
\caption{表情報の表現形式および選択肢テキストを決めるための予備実験におけるP@1}
\label{table:table_comparison}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

機能説明テキストありと，機能説明テキストなしを比べたところ，表情報にソフトウェア部品IDが含まれるため，Ablation Studyの実験結果で報告したほどは悪化しなかったものの，すべての表情報の表現形式において，機能説明テキストを組み合わせた選択肢テキストの方がP@1が高かった．
また，表情報の表現形式のそれぞれを比べたところ，機能説明テキストありの設定でも機能説明テキストなしの設定でも，JSON形式のP@1が高かった．
これらのことから，選択肢テキストにはソフトウェア部品の機能説明テキストを組み合わせることとし，表情報の表現形式にはJSON形式を採用した．



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{SCRARKが用いるプロンプトの例}

SCRARKがLLMに入力するプロンプトの例を表\ref{table:examples_of_prompt}に示す．
ただし，\{\{fewshot\}\}の部分は，\{\{fewshot\}\}以降のテキストと同様の形式で，few-shotの取得方法や，shot数に応じて，
\pagebreak
訓練データから取得した事例に置き換えられる．
ラベル付きデータのうちテストデータは公開許可が得られていないため，実験でLLMに入力した例ではないが，訓練データのうち公開情報\cite{Skill_Standard}を基にしたデータから，実験の手順と同様にプロンプトを作成した．


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{step-by-step生成の実験に用いたプロンプト}

step-by-step生成で用いたプロンプトを図\ref{figure:LLM_stepbystep_generation_prompt}に示す．

step-by-step生成の結果からの回答抽出に用いたプロンプトを図\ref{figure:LLM_stepbystep_extraction_prompt}に示す．

\clearpage

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%  table 15
\begin{table}[p]
\input{06table15.tex}%
\caption{SCRARKが用いるプロンプトの例}
\label{table:examples_of_prompt}
\end{table}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 4
\begin{figure}[p]
\begin{center}
\includegraphics{32-3ia6f04.eps}
\end{center}
\caption{step-by-step生成に用いたプロンプト}
\label{figure:LLM_stepbystep_generation_prompt}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\clearpage

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% fig. 5
\begin{figure}[t]
\begin{center}
\includegraphics{32-3ia6f05.eps}
\end{center}
\caption{step-by-stepによる回答抽出に用いたプロンプト}
\label{figure:LLM_stepbystep_extraction_prompt}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{biography}

\bioauthor{出内　将夫}{%
2004年，慶應義塾大学環境情報学部卒業．2006年，同大学院政策・メディア研究科修士課程修了．同年4月より2020年まで，富士通株式会社にて自然言語処理に関する製品およびサービスの開発に従事．2020年より，国立研究開発法人情報通信研究機構に出向するとともに，奈良先端科学技術大学院大学博士後期課程に在籍．現在に至る．言語処理学会会員．
}

\bioauthor{笈田　佳彰}{%
2010年東京大学工学部システム創成学科卒業．2012年同大学院新領域創成科学研究科修士課程修了．2019年同大学院新領域創成科学研究科博士後期課程修了．博士（環境学）．2012年富士通株式会社入社，データサイエンティストとして社内システム開発や先端技術コンサルティングに従事．2025年よりAI戦略・ビジネス開発本部シニアディレクターとしてデータサイエンティストチームを統括．2020年より東京大学工学部非常勤講師を兼務．言語処理学会会員．
}

\bioauthor{東山　翔平}{%
2014年神戸大学大学院システム情報学研究科博士課程前期課程修了．2022年奈良先端科学技術大学院大学先端科学技術研究科博士後期課程修了．博士（工学）．日本電気株式会社を経て，現在，情報通信研究機構研究員，奈良先端科学技術大学院大学客員助教，国立国語研究所共同研究員．自然言語処理の研究に従事．言語処理学会会員．
}

\bioauthor{田中　英輝}{%
1982年九州大学工学部電子工学科卒業．1984年同大学院修士課程修了．同年NHK入局，1987年放送技術研究所研究員．同主任研究員，（株）ATR出向，同音声翻訳通信研究所主任研究員，音声言語コミュニケーション研究所室長を経て，現在，国立研究開発法人情報通信研究機構先進的翻訳技術研究室研究統括．テキストの平易化，機械翻訳などの自然言語処理の研究に従事．博士（工学）．
}

\bioauthor{内山　将夫}{%
1992年筑波大学卒業．1997年同大学院工学研究科修了．博士（工学）．現在，国立研究開発法人情報通信研究機構先進的翻訳技術研究室室長．主な研究分野は機械翻訳．言語処理学会会員．
}

\bioauthor{渡辺　太郎}{%
1994年京都大学工学部情報工学科卒業．1997年京都大学大学院工学研究科情報工学専攻修士課程修了．2000年Language and Information Technologies, School of Computer Science, Carnegie Mellon University, Master of Science取得．
2004年京都大学博士（情報学）．ATRおよびNTT，NICTにて研究員，また，グーグルでソフトウェアエンジニアとして勤めた後，2020年より奈良先端科学技術大学院大学教授．自然言語処理や機械学習，言語モデル，機械翻訳の研究に従事．
}

\end{biography}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\biodate




\end{document}

