JP2023152843A - コード説明可能性のためのコードの強化 - Google Patents

コード説明可能性のためのコードの強化 Download PDF

Info

Publication number
JP2023152843A
JP2023152843A JP2023045218A JP2023045218A JP2023152843A JP 2023152843 A JP2023152843 A JP 2023152843A JP 2023045218 A JP2023045218 A JP 2023045218A JP 2023045218 A JP2023045218 A JP 2023045218A JP 2023152843 A JP2023152843 A JP 2023152843A
Authority
JP
Japan
Prior art keywords
code
executable
computer
executable code
description
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023045218A
Other languages
English (en)
Inventor
バーラミ・メフディ
Mehdi Bahrami
チェン・ウェイ-ペン
Wei-Peng Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2023152843A publication Critical patent/JP2023152843A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 コード説明可能性のためのコードの強化を提供する。【解決手段】 一実施形態の態様によれば、動作は、コード生成ツールの出力として、コンピュータ実行可能コードと非実行可能記述とを含むファイルを受け取ることを含む。動作は、コンピュータ実行可能コードのブロックをモジュラーコードブロックに修正することと、修正されたコンピュータ実行可能コードと非実行可能記述からトリガ条件のセットを決定することをさらに含む。動作は、トリガ条件のセットを改訂ルールのセット内のテンプレート条件と照合することと、照合に基づいて、修正されたコンピュータ実行可能コード及び非実行可能記述の部分に適用可能な変更のセットを決定することをさらに含む。動作は、変更のセットに基づいて、修正されたコンピュータ実行可能コード及び非実行可能記述を更新することと、更新されたコンピュータ実行可能コードと更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成することをさらに含む。【選択図】 図1

Description

関連出願への相互参照
本出願は、2022年3月31日に出願された米国特許出願第17/657,601号に基づき、その優先権の利益を主張するものであり、該出願の内容全体が参照により本明細書に組み込まれる。
技術分野
本開示で論じられる実施形態は、コード説明可能性のためのコードの強化のためのシステム及び方法に関する。
自動化コード生成ツールは、様々なタイプの工学的及び科学的問題を解決するために、学生、研究者、及びエンジニアなどによりますます使用されるようになっている。自動化機械学習ツールは、現実世界の問題に機械学習を適用するタスクを自動化するために使用できるプロセスを提供するコード生成ツールの一形態である。例えば、自動化機械学習ツールは、機械学習プロジェクトの開発の異なる段階において、すなわち、生のデータセットで開始してから配備のために機械学習モデルを構築するまで、ユーザを容易にすることができる。初心者ユーザは、自動化機械学習ツールを使用して、データを処理し、機械学習モデルを訓練するための機械学習アプローチを学習することがある。一方、データサイエンティスト又は専門家ユーザは、自動化機械学習ツールを使用して、異なるアプローチ及び様々なパイプライン利用を適用することにより、機械学習モデルの精度を向上させることがある。自動化機械学習ツールは、通常、ツールのユーザにより提供される所与のタスク及びデータセットのためのコンピュータ実行可能コードを生成することができる。
本明細書で請求される対象事項は、いずれかの欠点を解決し又は上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景技術は、本明細書で説明されるいくつかの実施形態が実施され得る一例示的な技術分野を示すために単に提供されている。
一実施形態の態様によれば、動作は、自動化機械学習ツールなどのコード生成ツールの出力としてファイルを受け取ることを含むことができる。ファイルは、コンピュータ実行可能コードと、コンピュータ実行可能コードに関連づけられた非実行可能記述を含むことができる。動作は、コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、コンピュータ実行可能コードを修正することと、修正されたコンピュータ実行可能コード及び非実行可能記述からトリガ条件のセットを決定することをさらに含むことができる。動作は、トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合することと、マッチした条件のセットに基づいて変更のセットを決定することをさらに含むことができる。変更のセットは、修正されたコンピュータ実行可能コードの部分と非実行可能記述の部分に適用可能であり得る。動作は、変更のセットに基づいて、修正されたコンピュータ実行可能コード及び非実行可能記述を更新することと、更新されたコンピュータ実行可能コードと更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成することをさらに含むことができる。
実施形態の目的及び利点は、少なくとも特許請求の範囲で特に指し示される要素、特徴、及び組み合わせにより実現され、達成される。
前述の一般的な説明及び以下の詳細な説明の双方が例に過ぎず、説明的であり、請求される発明を制限するものではないことを理解すべきである。
例示的な実施形態について、添付の図面の使用を通じてさらなる特定性及び詳細とともに記載し、説明する。
コード説明可能性のためのコードの強化に関連する一例示的な環境を表す図である。 コード説明可能性のためにコードを強化するシステムを示すブロック図である。 コード説明可能性のためのコードの強化の一例示的な方法のフローチャートを示す。 コードを更新するために使用される改訂ルールのセットを含む一例示的なテンプレートファイルを示す。 コードを更新するために使用され得る改訂ルールのセットの自動生成のための一例示的な方法のフローチャートを示す。 コードを更新するために使用され得る改訂ルールのセットの自動生成のための一例示的なパイプラインを示す。 更新されたコードに含まれるテキスト説明の生成のための一例示的なパイプラインである。 図8A及び図8Bは集合的に、コード生成ツールから受け取ったファイルに基づくチュートリアルスタイルコードファイルの一例示的な生成を示す。 図8A及び図8Bは集合的に、コード生成ツールから受け取ったファイルに基づくチュートリアルスタイルコードファイルの一例示的な生成を示す。
全て、本開示に記載されている少なくとも1つの実施形態に従う。
本開示に記載されるいくつかの実施形態は、コード説明可能性(explainability)のためのコンピュータ実行可能コードの強化のための方法及び非一時的コンピュータ読取可能媒体に関する。本開示は、コード生成ツールから受け取ったコードファイルの強化に関する。強化は、受け取ったコードファイル内のコンピュータ実行可能コードを更新し、受け取ったコードファイル内の非実行可能記述を追加/更新し、更新されたコンピュータ実行可能コードの非実行可能記述(例えば、自然言語記述又はチュートリアルスタイル(tutorial-style)記述)を追加することにより達成することができる。最初、コンピュータ実行可能コードは、ブロックにセグメント化することができる。コンピュータ実行可能コードのブロックは、各ブロックをモジュラー(modular)コードブロックに変形する(transforming)ことにより、修正され(modified)得る。修正されたコンピュータ実行可能コードと非実行可能記述から、トリガ条件のセットを決定することができる。トリガ条件のセットは、改訂ルールのセットに含まれるテンプレート条件と照合され(matched)得る。照合に基づいて、変更のセットを決定することができる。このような変更は、修正されたコンピュータ実行可能コードの一部分と非実行可能記述の一部分に適用可能でもよい。修正されたコンピュータ実行可能コードと非実行可能記述は、変更のセットに基づいて更新することができる。さらに、チュートリアルスタイルコードファイルを生成することができ、これは、更新されたコンピュータ実行可能コードと更新された非実行可能記述を含む。
コード生成ツールは、様々なタイプの工学的及び科学的問題を解決するために、学生、研究者、及びエンジニアなどによりますます使用されるようになっている。自動化機械学習(ML)ツールは、現実世界の問題にMLを適用するタスクを自動化するために使用できるプロセスを提供するコード生成ツールの一形態である。例えば、自動化MLツールは、MLプロジェクトの開発の異なる段階において、すなわち、生のデータセットで開始してから配備のためにMLモデルを構築するまで、ユーザを容易にすることができる。AI/MLにおける様々なレベルの専門知識を有するユーザは、自動化されたMLツールを使用して、彼らのプロジェクトのコンピュータ実行可能コードを生成することがある。一例として、自動化機械学習ツールにより、初心者の人工知能(AI)ユーザは、AI/MLモデルを設計、構築、及び配備するための機械学習アプローチについて学習することができる場合がある。さらに、自動化機械学習ツールにより、AIの専門家又は研究者(データサイエンティストなど)は、アプローチの使用及び様々なパイプラインの利用により、既存のAI/MLモデルの精度を向上させることができる場合がある。こうしたアプローチは、生成されたコード、及び生成されたコードで言及されている命令の可読性を高める可能性がある。
自動化MLツールは、MLを(初心者ユーザにとって)アクセス可能にし、(専門家にとって)複雑な問題を解決するためのMLベースのソリューションを構築する際に通常必要とされる時間及びリソースを節約するが、MLツールの使用により生成されるコードは、様々なレベルで抽象的である可能性がある。例えば、自動化機械学習ツールのいくつかは、生成されたコードの行のための説明又は記述を含めることができる。この説明は、生成されたコードを理解するために必要な労力を最小限にする際に大きく役立つ場合がある。さもなければ、生成されたコードの抽象的な性質に起因して、生成されたコードを理解するための労力が必要とされる可能性がある。)しかしながら、大抵の場合、生成されたコードのための説明は、初心者及び専門家のユーザにとって限定的に見えることがある。例えば、説明は、初心者のAIユーザにとっては価値があっても、専門家のAIユーザにとっては自明に見える可能性がある。説明の限定性は、特に、説明が専門家の所見又は専門家のAIユーザにより意図された特徴を含まない場合、顕著に見える可能性がある。初心者のAIユーザにとって、説明は、生成されたコードの理解を発展させるために必要とされ得る詳細及び/又は明瞭さを欠いている可能性がある。
本開示の1つ以上の実施形態によれば、ソフトウェア開発及び機械学習の技術分野は、AIにおける様々なレベルの専門知識を有するユーザがコード生成ツールにより生成されたコードを利用することができるように、コード生成ツールにより生成されたコードを強化するようシステムを構成することにより、向上する可能性がある。生成されたコードは、コンピュータ実行可能コードと、コンピュータ実行可能コードに関連づけられた非実行可能記述を含むことができる。コンピュータ実行可能コードと非実行可能記述は、テンプレート条件及び機械学習モデルを用いて強化することができる。テンプレート条件は、ルールのセットを含むことができ、各ルールは、条件、アクション、及び値のうちの1つ以上を含むことができる。ルールのセットは、手動で、又は自動化ルール生成器を通じて作成されてもよい。システムは、コンピュータ実行可能コード内のトリガ条件のセットを検出することができ、トリガ条件のセットとコードファイルのセクションとの間のマッチ(match)を判断することができ、テンプレートに基づいてコードファイルを更新することができる。その後、システムは、マッチに基づいて、構造化されたフォーマットでコンピュータ実行可能コードを修正又は更新することができる。更新は、ルールセット内の1つ以上のルールの内容に従って実行することができる。機械学習モデルは、コンピュータ実行可能コードの所与の行のための非実行可能記述を生成してもよい。テキスト記述は、更新されたコンピュータ実行可能コードの説明可能性を高める場合がある。
強化されたコードは、ユーザが様々なデータセット上で、及びクロス機械学習プラットフォーム上で強化されたコードを実行することを可能にすることにより、コード生成ツールの拡張性を定義する場合がある。強化されたコードは、コードのユーザビリティと説明可能性の双方を高めるチュートリアルスタイルコードファイルを結果としてもたらすことができる。AI及び機械学習におけるユーザのスキル及び経験に依存する既存のコード生成ツールと比較して、本開示に記載されるシステムにより生成されるチュートリアルスタイルコードファイルは、定義されたルールに基づくコードの修正と修正されたコードの説明を通じてコードの説明可能性を保証する。チュートリアルスタイルコードファイルは、専門家ユーザと非専門家ユーザの双方により使用することができる。説明は、所与のデータセットに対する機械学習モデルの理解を広げ、機械学習モデルの使用における信頼を増大させる可能性がある。本開示は、チュートリアルスタイルコードファイルを、同様のチュートリアルスタイルコードファイルをホストするプラットフォームにエクスポートすることを可能にすることもできる。これらのプラットフォームのユーザは、チュートリアルスタイルコードファイルを閲覧し、実行することができる。
本開示の実施形態を、添付の図を参照して説明する。
図1は、本開示に記載される少なくとも1つの実施形態に従って配置された、コード説明可能性のためのコードの強化に関連する例示的な環境を表す図である。図1を参照し、例示的な環境100を示す。例示的な環境100には、システム102、ユーザデバイス104、データソース106、及び通信ネットワーク108が示されている。システム102とユーザデバイス104は、通信ネットワーク108を介して互いに通信上結合することができる。同様に、システム102とデータソース106は、通信ネットワーク108を介して互いに通信上結合することができる。さらに、ユーザデバイス104に関連づけられ得るユーザ112が示されている。
システム102は、コード生成ツールにより生成されたコンピュータ実行可能コード及び関連テキスト(すなわち、非実行可能記述)を強化するように構成され得る適切な論理、回路、及びインターフェースを含むことができる。システム102は、コード生成ツール110から例示的なファイル116を受け取ることができる。受け取られるファイル116は、例示的なコンピュータ実行可能コード118と、例示的なコンピュータ実行可能コード118に関連づけられた例示的な非実行可能記述120(例えば、注釈又は簡潔なコメントの形式における自然言語記述)を含むことができる。
コード生成ツール110は、リモートシステム(例えば、ファイル116を生成することができるサーバ)上で実行可能なソフトウェアでもよく、あるいは(システム102にインストールされたソフトウェアとして)システム102に含まれてもよい。システム102は、ユーザデバイス104上に電子ユーザインターフェース(UI)114をレンダリングするように構成することができる。例えば、電子UI114は、ウェブブラウザのUIでもよい。システム102は、さらに、例示的な更新されたコンピュータ実行可能コード124と例示的な更新された非実行可能記述126とを含む例示的なチュートリアルスタイルコードファイル122を生成するように構成することができる。生成すると、システム102は、チュートリアルスタイルコードファイル122をユーザデバイス104に送信することができ、チュートリアルスタイルコードファイル122は、ユーザデバイス104上の電子UI114にレンダリングすることができる。
システム102の例は、これらに限られないが、モバイルデバイス、デスクトップコンピュータ、ラップトップ、コンピューティングデバイス、メインフレームマシン、クラウドサーバなどのサーバ、及びサーバのグループを含んでもよい。1つ以上の実施形態において、システム102は、ユーザエンド端末デバイスと、ユーザエンド端末デバイスに通信上結合されたサーバを含むことができる。システム102は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し、又は該動作の実行を制御するため)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを使用して実装されてもよい。いくつかの他の例において、システム102は、ハードウェアとソフトウェアの組み合わせを使用して実装されてもよい。
ユーザデバイス104は、システム102から受信したコマンドに基づいてチュートリアルスタイルコードファイル122をレンダリングするように構成され得る適切な論理、回路、及びインターフェースを含むことができる。ユーザデバイス104の例は、これらに限られないが、コンピューティングデバイス、デスクトップ、パーソナルコンピュータ、ラップトップ、コンピュータワークステーション、ディスプレイモニタ又はコンピュータモニタ、タブレット、スマートフォン、セルラーフォン、モバイルフォン、又は家電(CE)デバイスを含んでもよい。
データソース106は、コンピュータ実行可能コード118及び非実行可能記述120を更新するためにシステム102により取り出され得る情報を記憶するように構成され得る適切な論理、回路、及びインターフェースを含む。情報は、例えば、アプリケーションプログラミングインターフェース(API)コールを含むコードパッケージ、1つ以上のオンラインコーディング競技会に関連づけられた複数のチュートリアルスタイルコードファイル、ベースラインのチュートリアルスタイルコードテンプレートなどを含むことができる。データソース106の例は、これらに限られないが、ウェブサーバ、データベースサーバ、ウェブベースのコードリポジトリ(例えば、GitHub(登録商標))、及びファイルサーバなどを含んでもよい。
動作において、システム102は、受け取ったファイル116を複数のブロックにセグメント化することができる。ブロックは、1行以上のコードを含むことができ、これは、コンピュータ実行可能コード、非実行可能記述、又はコンピュータ実行可能コードと非実行可能記述の双方の組み合わせを含んでもよい。図1に示すように、ファイル116は、コンピュータ実行可能コード118と、コメントの形式の非実行可能記述120を含むことができる。
システム102は、コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、コンピュータ実行可能コード118を修正することができる。限定でなく例として、変形は、ブロックの各々の内容を、関数コール、関数記述/コード、又は関数定義の1つ以上のパラメータのうちの1つ以上として表すことを含んでもよい。図1に示すように、関数「__replace_()」を、コンピュータ実行可能コード118のブロック内の内容(すなわち、コード)を変形するために使用することができる。変形されたブロックは、関数「__replace_()」の一部としての内容と、関数「__replace_()」へのコールを含むことができる。データセットは、関数「__replace_()」にパラメータとして渡すことができる。コンピュータ実行可能コード118の内容は、関数「__replace」、コンピュータ実行可能コード118内のデータセットの1つ以上の値を返す関数記述(「__dataset」)、及び関数パラメータ「__dataset」を使用して表すことができる。図1に示すように、システム102は、関数コールと関数記述を含むようにコンピュータ実行可能コード118を修正することができる。これは、コードの行「def __replace_(_dataset)」、「return __dataset」、及び「__dataset = __replace__(__dataset)」を含めることをもたらすことができる。さらに、テキスト記述“““replace null values with modes of columns(列のヌル値を最頻値に置き換える)”””を生成することができる。コンピュータ実行可能コード118の変形であるモジュラーコードブロックは、更新されたコンピュータ実行可能コード124を取得するために、変更のセットに基づいて更新することができる。
システム102は、修正されたコンピュータ実行可能コードと非実行可能記述からトリガ条件のセットを決定することができる。トリガ条件は、例えば、変数、キーワード、関数コール、関数パラメータ、デコレータ(decorators)、ユニコードテキスト、ソフトウェアパッケージ名などのうちの1つ以上を含むことができる。いくつかの実施形態において、トリガ条件のセットは、コンピュータ実行可能コード118から直接決定されてもよい。図1に示すように、システム102は、変数「STRING_CATG_COLM_HAS_MISSING」をトリガ条件として決定することができる。変数は、コンピュータ実行可能コード118において配列又はデータフレームとして表されるデータセットを参照することができる。データセットは、複数のパラメータ、すなわち、列の「alley」、「bsmtqual」、「bsmtcond」、「poolqc」、及び「fence」を含む場合がある。複数のパラメータの各々に対応する値が、欠損している可能性がある。
システム102は、トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合することができる。改訂ルールのセットは、テンプレートファイルに記憶されてもよい。改訂ルールのセットの各ルールは、テンプレート条件と、テンプレート条件に対応する値を含むことができる。システム102は、コンピュータ実行可能コード118内の第1のコード行で決定されたトリガ条件が、改訂ルールのセット内のテンプレート条件の1つとマッチするかどうかを検出することができる。いくつかの実施形態において、マッチしていることが見出だされた場合、テンプレート条件に対応する値が識別される。これら又は他の実施形態において、値は、第2のコード行、又は、第1のコード行の前又は第1のコード行の後に注入されるテキスト記述に対応することができる。
いくつかの実施形態において、値は、1つ以上の第2のコード行を使用して第1のコード行に対して実行される1つ以上の動作に対応することができる。第1のコード行に対するこのような動作は、例えば、第1のコード行の削除、第1のコード行の、1つ以上の第2のコード行への置き換え、1つ以上の第2のコード行を第1のコード行の前又は第1のコード行の後にアペンドする(append)動作、1つ以上の第2のコード行を第1のコード行の前又は第1のコード行の後に挿入する動作などを含んでもよい。
システム102は、修正されたコンピュータ実行可能コードの部分(コンピュータ実行可能コード118のブロックの変形を介して得られる)と非実行可能記述120の部分とに適用可能であり得る変更のセットを決定することができる。変更のセットは、トリガ条件のセットと改訂ルールのセットに含まれるテンプレート条件との間の1つ又は複数のマッチに基づいて決定することができる。一実施形態によれば、変更のセットは、トリガ条件のセットをテンプレート条件と照合することにより識別される値に対応する場合がある。
システム102は、変更のセットに基づいて、修正されたコンピュータ実行可能コード及び非実行可能記述120を更新することができる。変更のセットは、修正されたコンピュータ実行可能コード及び非実行可能記述120に適用することができる。いくつかのシナリオにおいて、システム102は、修正されたコンピュータ実行可能コードのみを更新する場合がある。
システム102は、更新されたコンピュータ実行可能コード124と更新された非実行可能記述126とを含むチュートリアルスタイルコードファイル122を生成することができる。限定でなく例として、チュートリアルスタイルコードファイル122は、複数のセルを有するノートブックインターフェース(又は、計算ノートブック)でもよい。各セルは、更新されたコンピュータ実行可能コード124の部分、又はマークダウン(markdown)としての更新されたコンピュータ実行可能コード124の部分を受け入れるようにフォーマットすることができる。図1に示すように、チュートリアルスタイルコードファイル122は、修正されたコンピュータ実行可能コード(更新されたコンピュータ実行可能コード124として表される)と、生成されたテキスト記述(更新された非実行可能記述126“““列のヌル値を最頻値に置き換える”””として表される)を含む。
ここで、システム102とユーザデバイス104との間、及びシステム102とデータソース106との間の通信は、通信ネットワーク108を介して行われてもよいことに留意されたい。通信ネットワーク108は、システム102がユーザデバイス104と通信し得るための通信媒体を含むことができる。通信ネットワーク108の例は、これらに限られないが、インターネット、クラウドネットワーク、ワイヤレスフィデリティ(Wi-Fi)ネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、及び/又はメトロポリタンエリアネットワーク(MAN)を含んでもよい。例示的な環境100内の様々なデバイスが、様々な有線及び無線通信プロトコルに従って通信ネットワーク108に接続するように構成されてもよい。そのような有線及び無線通信プロトコルの例は、これらに限られないが、伝送制御プロトコル及びインターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、ZigBee(登録商標)、EDGE、IEEE802.11、ライトフィデリティ(Li-Fi)、802.16、IEEE802.11s、IEEE802.11g、マルチホップ通信、無線アクセスポイント(AP)、デバイス間(device to device)通信、セルラー通信プロトコル、及び/又はBluetooth(登録商標)(BT)通信プロトコルのうちの少なくとも1つ、又はこれらの組み合わせを含んでもよい。
本開示の範囲から逸脱することなく、システム102に対して修正、追加、又は省略がなされ得る。
図2は、本開示に記載された少なくとも1つの実施形態に従って配置された、コード説明可能性のためにコードを強化するシステムを示すブロック図である。図2は、図1の要素と関連して説明される。図2を参照し、図1のシステム102のブロック図200を示す。システム102は、プロセッサ202、メモリ204、永続データストレージ206、入力/出力(I/O)デバイス208、ネットワークインターフェース210、及び機械学習モデル212を含むことができる。さらに、通信ネットワーク108を介してシステム102に通信上結合されたユーザデバイス104が示されている。
プロセッサ202は、システム102により実行される異なる動作に関連づけられたプログラム命令を実行するように構成され得る適切な論理、回路、及び/又はインターフェースを含むことができる。プロセッサ202は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む任意の適切な専用又は汎用コンピュータ、コンピューティングエンティティ、又は処理デバイスを含んでもよく、任意の適用可能なコンピュータ読取可能記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ202は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は、プログラム命令を解釈及び/又は実行し、及び/又はデータを処理するように構成された任意の他のデジタル又はアナログ回路を含んでもよい。図2では単一のプロセッサとして示されているが、プロセッサ202は、本開示に記載されるシステム102の任意の数の動作を個々に又は集合的に実行し又はその実行を指示するように構成された任意の数のプロセッサを含んでもよい。さらに、プロセッサの1つ以上が、異なるサーバなどの、1つ以上の異なる電子デバイス上に存在してもよい。
いくつかの実施形態において、プロセッサ202は、メモリ204及び/又は永続データストレージ206に記憶されたプログラム命令を解釈及び/又は実行し、及び/又はデータを処理するように構成されてもよい。いくつかの実施形態において、プロセッサ202は、永続データストレージ206からプログラム命令をフェッチし、プログラム命令をメモリ204にロードすることができる。プログラム命令がメモリ204にロードされた後、プロセッサ202は、プログラム命令を実行することができる。プロセッサ202の例の一部は、グラフィカル処理ユニット(GPU)、中央処理装置(CPU)、縮小命令セットコンピュータ(RISC)プロセッサ、特定用途向け集積回路プロセッサ、複合命令セットコンピュータ(CISC)プロセッサ、コプロセッサ、及び/又はこれらの組み合わせでもよい。
メモリ204は、プロセッサ202により実行可能なプログラム命令を記憶するように構成され得る適切な論理、回路、及び/又はインターフェースを含むことができる。特定の実施形態において、メモリ204は、コード生成ツール110から受け取ったファイル116、改訂ルールのセット、変更のセット、更新された修正されたコンピュータ実行可能コード及び非実行可能記述、並びに生成されたチュートリアルスタイルコードファイル122を記憶するように構成されてもよい。特定の実施形態において、メモリ204は、機械学習モデル212を含むことができる。メモリ204は、記憶されたコンピュータ実行可能命令又はデータ構造を運び又は有するコンピュータ読取可能記憶媒体を含んでもよい。そのようなコンピュータ読取可能記憶媒体には、プロセッサ202などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体を含んでもよい。
限定でなく例として、そのようなコンピュータ読取可能記憶媒体には、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、コンパクトディスク読取専用メモリ(CD-ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、又は、コンピュータ実行可能命令又はデータ構造の形式で特定のプログラムコードを運び又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、有形の又は非一時的なコンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲に含まれてもよい。コンピュータ実行可能命令は、例えば、システム102に関連づけられた特定の動作又は動作のグループをプロセッサ202に実行させるように構成された命令及びデータを含んでもよい。
永続データストレージ206は、プロセッサ202により実行可能なプログラム命令、及び改訂ルールのセットに含まれるテンプレート条件を記憶するように構成され得る適切な論理、回路、及び/又はインターフェースを含むことができる。永続データストレージ206は、記憶されたコンピュータ実行可能命令又はデータ構造を運び又は有するコンピュータ読取可能記憶媒体を含んでもよい。そのようなコンピュータ読取可能記憶媒体には、プロセッサ202などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体を含んでもよい。
限定でなく例として、そのようなコンピュータ読取可能記憶媒体には、コンパクトディスク読取専用メモリ(CD-ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス(例えば、ハードディスクドライブ(HDD))、フラッシュメモリデバイス(例えば、ソリッドステートドライブ(SSD)、セキュアデジタル(SD)カード、他のソリッドステートメモリデバイス)、又は、コンピュータ実行可能命令又はデータ構造の形で特定のプログラムコードを運び又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、有形の又は非一時的なコンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲に含まれてもよい。コンピュータ実行可能命令は、例えば、システム102に関連づけられた特定の動作又は動作のグループをプロセッサ202に実行させるように構成された命令及びデータを含んでもよい。
I/Oデバイス208は、ユーザ入力を受け取るように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含むことができる。I/Oデバイス208は、さらに、ユーザ入力に応答して出力を提供するように構成され得る。I/Oデバイス208は、プロセッサ202及び他のコンポーネント、例えばネットワークインターフェース210などと通信するように構成され得る様々な入力及び出力デバイスを含んでもよい。入力デバイスの例には、これらに限られないが、タッチスクリーン、キーボード、マウス、ジョイスティック、及び/又はマイクロフォンを含んでもよい。出力デバイスの例には、これらに限られないが、ディスプレイデバイス及びスピーカーを含んでもよい。
ネットワークインターフェース210は、通信ネットワーク108を介してシステム102及びユーザデバイス104の間の通信を確立するように構成され得る適切な論理、回路、インターフェース、及び/又はコードを含むことができる。ネットワークインターフェース210は、通信ネットワーク108を介したシステム102の有線又は無線通信をサポートするために、様々な既知の技術の使用により実装されてもよい。ネットワークインターフェース210は、これらに限られないが、アンテナ、無線周波数(RF)トランシーバ、1つ以上の増幅器、チューナ、1つ以上の発振器、デジタル信号プロセッサ、コーダ・デコーダ(CODEC)チップセット、加入者識別モジュール(SIM)カード、及び/又はローカルバッファを含んでもよい。
ネットワークインターフェース210は、インターネット、イントラネット、及び/又はセルラー電話ネットワークなどの無線ネットワーク、無線ローカルエリアネットワーク(LAN)、及び/又はメトロポリタンエリアネットワーク(MAN)などのネットワークと無線通信を介して通信することができる。無線通信は、GSM(Global System for Mobile Communications)、EDGE(Enhanced Data GSM Environment)、広帯域符号分割多元接続(W-CDMA)、ロングタームエボリューション(LTE)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth、ワイヤレスフィデリティ(Wi-Fi)(IEEE802.11a、IEEE802.11b、IEEE802.11g、及び/又はIEEE802.11nなど)、ボイスオーバーインターネットプロトコル(VoIP)、ライトフィデリティ(Li-Fi)、又はWi-MAXなどの複数の通信規格、プロトコル、及び技術のうちの任意のものを使用してもよい。
特定の実施形態において、システム102は、フロントエンドサブシステムとバックエンドサブシステムに分割されてもよい。フロントエンドサブシステムは、もっぱら、ユーザデバイス104と、サードパーティサーバ、ウェブサーバ、クライアントマシン、及びバックエンドサブシステムの1つ以上から要求/命令を受信するように構成することができる。これらの要求は、後方へバックエンドサブシステムに通信することができ、バックエンドサブシステムは、これらの要求に基づいて動作するように構成することができる。例えば、システム102が複数のサーバを含む場合に、サーバのいくつかが、バックエンドサブシステムに関連づけられた残りのサーバに要求/命令を中継するように構成されたフロントエンドサーバでもよい。
機械学習モデル212は、訓練データセットに基づいて、更新されたコンピュータ実行可能コードの非実行可能記述を生成し、又は、ファイル116内の非実行可能記述に適用可能な変更のセットの内容を更新するように訓練することができる。機械学習モデル212は、そのハイパーパラメータ、例えば、重みの数、コスト関数、入力サイズ、レイヤの数などにより定義されてもよい。機械学習モデル212のコスト関数の大域的な最小値に向かうように、機械学習モデル212のパラメータを調整することができ、重みを更新することができる。訓練データセット内の特徴情報に対する訓練のいくつかのエポックの後、機械学習モデル212は、修正されたコンピュータ実行可能コード内のコード行の予測結果(テキスト記述)を出力するように訓練されてもよい。
機械学習モデル212は、例えば、システム102上で実行可能なアプリケーションのソフトウェアコンポーネントとして実装され得る、電子データを含んでもよい。機械学習モデル212は、プロセッサ202などの処理デバイスによる実行のために、ライブラリ、外部スクリプト、又は他の論理/命令に依存する場合がある。機械学習モデル212は、プロセッサ202などのコンピューティングデバイスがテキスト記述を生成することを可能にするように構成されたコード及びルーチンを含むことができる。さらに又は代わりに、機械学習モデル212は、プロセッサ、マイクロプロセッサ(例えば、1つ以上の動作を実行し、又は該動作の実行を制御するため)、フィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含むハードウェアを使用して実装されてもよい。代替的に、いくつかの実施形態において、機械学習モデル212は、ハードウェアとソフトウェアの組み合わせを使用して実装されてもよい。
本開示の範囲から逸脱することなく、システム102に対して修正、追加、又は省略がなされ得る。例えば、いくつかの実施形態において、システム102は、明示的に例示又は記述されていない可能性のある任意の数の他のコンポーネントを含んでもよい。
図3は、本開示に記載された少なくとも1つの実施形態による、コード説明可能性のためのコードの強化の一例示的な方法のフローチャートを示す。図3は、図1及び図2の要素と関連して説明される。図3を参照し、フローチャート300を示す。フローチャート300に示す方法は302で開始でき、図1又は図2のシステム102などの任意の適切なシステム、装置、又はデバイスにより実行することができる。
304において、ファイルがコード生成ツールの出力として受け取られ得る。ファイルは、コンピュータ実行可能コードと、コンピュータ実行可能コードに関連づけられた非実行可能記述(例えば、自然言語記述)を含むことができる。一実施形態に従い、プロセッサ202は、コード生成ツール110からファイルを受け取るように構成されてもよい。
限定でなく例として、コード生成ツール110は、実行されたときにファイルを生成する機械学習コード生成ソフトウェアでもよい。ファイルの内容は、Python、Java(登録商標)、JavaScript(登録商標)、又はC/C++などの任意のプログラミング言語で記載されてもよい。ファイルのコンピュータ実行可能コードは、機械学習タスクに関連づけられてもよい。非実行可能記述は、コンピュータ実行可能コードのそれぞれの部分に関連づけられた静的コメント又は注釈に対応することができる。Pythonでのファイルの一例示的な部分を、以下のとおり提供する。
Figure 2023152843000002

簡潔さのために、例示的なファイルの9行のみに言及している。受け取ったファイルは、コンピュータ実行可能コード(行4、5、6、及び7)と非実行可能記述(行1、3、及び9)を含む。ファイルのコンピュータ実行可能コードは、訓練データセット及びテストデータセットを必要とする機械学習タスクに関連づけることができる。非実行可能記述(行1、3、及び9)は、コンピュータ実行可能コード(行4、5、6、及び7)に関連づけられた静的コメントである。
プロセッサ202は、さらに、コンピュータ実行可能コード118を複数のブロックにセグメント化するように構成することができる。以下は、ファイルのセグメント化を介して得られる例示的なブロックである。
Figure 2023152843000003
306において、コンピュータ実行可能コードが、コンピュータ実行可能コードの複数のブロックの各々をモジュラーコードブロックに変形することにより、修正され得る。一実施形態に従い、プロセッサ202は、コンピュータ実行可能コードの複数のブロックの各々をモジュラーコードブロックに変形することにより、コンピュータ実行可能コードを修正するように構成することができる。コンピュータ実行可能コードのブロックは、ユーザ112の要件に基づいてコンピュータ実行可能コードを屈折させ(refractor)又は改訂するために変形されてもよい。ブロックの変形は、モジュラーブロック構造を必要とする場合がある。例えば、コンピュータ実行可能コードのブロックは、ブロックの各々の内容を関数コール、関数記述/コード、又は関数定義の1つ以上のパラメータを通じて表すことにより、モジュラーコードブロックに変形されてもよい。例えば、コンピュータ実行可能コードに存在する異なるデータセットをモジュール(例えば、Python関数)にサブミットして、Python関数によるパラメータの処理と同様のアプローチでデータセットを前処理することができる。304で言及されているコンピュータ実行可能コードの部分を考慮すると、プロセッサ202は、「__load_data」モジュール(Python関数)をコールして、「__load_data」モジュールのとおりデータセット「__training_path」及び「__test_path」(コンピュータ実行可能コードに存在する)を前処理することができる。304で言及されている例示的な受け取ったファイルを考慮すると、コンピュータ実行可能コード(行4、5、及び6)及び非実行可能記述(行3)は、以下のとおりモジュラーブロックに変形することができる。
Figure 2023152843000004
上述したモジュールブロックにおいて、例示的な受け取ったファイル(行4、5、及び6)の内容は、「__load_data」モジュール(関数)のコードとして表されている。「__train_dataset」及び「__test_dataset」は、「__load_data」モジュール(関数)のパラメータとして表され得る。「__load_data」モジュールは、「__training path」、「__test_path」、「concat=true」などの、異なる入力パラメータを用いてコールすることができる。プロセッサ202は、他のPython関数から同様に「__load_data」モジュールをコールすることができる。
308において、トリガ条件のセットが、修正されたコンピュータ実行可能コード(モジュラーコードブロック)と非実行可能記述から決定され得る。一実施形態に従い、プロセッサ202は、修正されたコンピュータ実行可能コードと非実行可能記述からトリガ条件のセットを決定するように構成することができる。限定でなく例として、トリガ条件のセットは、変数、キーワード、関数コール、関数パラメータ、デコレータ、ユニコードテキスト、及びソフトウェアパッケージ名のうちの1つ以上を含んでもよい。例えば、修正されたコンピュータ実行可能コードにおける、「BEGIN」、「DETACH TARGET」、「LOAD DATA」、「MODEL」、「TRAIN TEST SPLIT」、又は「PREPROCESSING-number」などのキーワードの存在が、トリガ条件として判断されてもよい。同様に、修正されたコンピュータ実行可能コードにおける、「__y_pred」、「__STRING_CATG_COLM_HAS_MISSING」、「__feature」、「__target、「__NUM_COLM_HAS_MISSING」、「__num_of_training_instances」、又は「__lgbmregressor = LGBMRegressor()」などの変数の存在が、トリガ条件として判断されてもよい。修正されたコンピュータ実行可能コードにおける、「__model = RandomForestClassifier()」、又は「__model = CatBoostRegressor()」などの関数コールの存在が、トリガ条件として判断されてもよい。
一実施形態に従い、トリガ条件のセットは、修正されたコンピュータ実行可能コード及び非実行可能記述の抽象構文木(AST)に基づいて決定することができる。プロセッサ202は、修正されたコンピュータ実行可能コード及び非実行可能記述の行をパースする(parsing)ことによりASTを生成するように構成することができる。ASTのノードを処理することにより、プロセッサ202は、さらに、変数、キーワード、関数コール、関数パラメータ、デコレータ、ユニコードテキスト、及びソフトウェアパッケージ名のうちの1つ以上を決定するように構成されてもよい。トリガ条件のセットは、決定された変数、キーワード、関数コール、関数パラメータ、デコレータ、ユニコードテキスト、及びソフトウェアパッケージ名に基づいて決定することができる。
310において、トリガ条件のセットが、改訂ルールのセットに含まれるテンプレート条件と照合され得る。プロセッサ202は、決定されたトリガ条件のセットをテンプレート条件と照合するように構成することができる。一実施形態に従い、改訂ルールのセットは、キーワード又はテキスト記述としてのテンプレート条件と、キーワード及びテキスト記述に対応する値とを含むテンプレートファイルに対応することができる。一例示的なテンプレートファイルを以下のとおり示す。
Figure 2023152843000005
プロセッサ202は、トリガ条件のセットが例示的なテンプレートファイル内のキーワード又はテキスト記述とマッチするかどうかを判断するように構成することができる。
別の実施形態に従い、改訂ルールのセットは、テンプレート条件を変数、関数コール、又は関数パラメータとして含むテンプレートファイルに対応することができる。テンプレートファイルは、テンプレート条件に対応する値を含むこともでき、その値は、関数名、すなわちコールされる必要がある関数の名前でもよい。一例示的なテンプレートファイルを以下のとおり示す。
Figure 2023152843000006
プロセッサ202は、トリガ条件のセットが、例示的なテンプレートファイル内の変数、関数コール、又は関数パラメータとマッチするかどうかを判断するように構成することができる。プロセッサ202は、修正されたコンピュータ実行可能コードのブロックを処理し、各ブロックの目的を区別するように構成することができる。コード行が、マッチしたテンプレート条件で始まる場合、対応する関数を作動させてもよい。プロセッサ202は、トリガ条件のセットのうちのトリガ条件が、修正されたコンピュータ実行可能コード内のテンプレート条件(改訂ルールのセット内の変数、関数コール、又は関数パラメータとして表される)とマッチすると判断された場合に、関数をコールするように構成することができる。
一実施形態に従い、改訂ルールのセットは、キーとしてのテンプレート条件と、1つ以上の動作及び1つ以上のコード行としてのキー(テンプレート条件)に対応する値とを含むテンプレートファイルに対応することができる。プロセッサ202は、修正されたコンピュータ実行可能コード内の1つ以上のキーを、トリガ条件のセットのうちのトリガ条件として決定するように構成することができる。さらに、決定されたキーは、改訂ルールのセットにテンプレート条件として含まれるキーと照合され得る。決定されたキーの照合に関するさらなる詳細については、例えば図4で説明する。
312において、照合に基づいて変更のセットが決定され得る。プロセッサ202は、照合に基づいて、修正されたコンピュータ実行可能コードの部分と非実行可能記述の部分とに適用可能な変更のセットを決定するように構成することができる。一実施形態に従い、変更のセットは、トリガ条件のセットとマッチするテンプレート条件のサブセットの選択を含む。テンプレート条件のサブセットは、テンプレート条件を含むテンプレートファイルから選択されてもよい。
テンプレートファイルが、キーワードとして又はテキスト記述としてテンプレート条件を含む場合、テンプレート条件のサブセットに対応する値のサブセットを識別するために、検索動作が実行されてもよい。プロセッサ202は、テンプレートファイルにおいて検索動作を実行して、テンプレート条件のサブセットに対応する値のサブセットを識別するように構成することができる。検索動作は、テンプレート条件のサブセットとトリガ条件のセットとの間でマッチが決定された場合、実行されてもよい。値のサブセットは、修正されたコンピュータ実行可能コードのモジュラーコードブロックに対する1つ以上のコードフラグメント又は非実行可能記述を含むことができる。
表2のテンプレートファイル(すなわち、改訂ルール)を参照し、テンプレート条件の選択されたサブセットは、キーワード「BEGIN」と、テキスト記述***GENERATED PIPELINE***を含むことができる。キーワード「BEGIN」(修正されたコンピュータ実行可能コード内)及びテキスト記述***GENERATED PIPELINE***(非実行可能記述内)は、トリガ条件のセットとして決定されてもよい。その後、プロセッサ202は、決定されたトリガ条件のセットとマッチするテンプレート条件のサブセットとして、キーワード「BEGIN」及びテキスト記述***GENERATED PIPELINE***を選択することができる。検索動作は、値のサブセットとして「# Use a generic dataset path to start」(汎用データセットパスを使用して開始する)及び「# Generated pipeline by SML」(SMLにより生成されたパイプライン)の識別を結果としてもたらすことができる。「# Use a generic dataset path to start」は、テンプレート条件「BEGIN」に対応することができ、「# Generated pipeline by SML」は、テンプレート条件***GENERATED PIPELINE***に対応することができる。したがって、変更のセットは、行コメント、すなわち「# Use a generic dataset path to start」及び「# Generated pipeline by SML」の追加を含むことができる。
テンプレートファイルが、変数、関数コール、又は関数パラメータとしてテンプレート条件を含む場合、テンプレート条件に対応する関数を識別するために、検索動作が実行されてもよい。例えば、変数「__STRING_CATG_COLM_NO_MISSING」及び「__NUM_COLM_HAS_MISSING」を、修正されたコンピュータ実行可能コード内のトリガ条件のセットとして検出することができる。変数が、テンプレートファイル内のテンプレート条件「__STRING_CATG_COLM_NO_MISSING」及び「__NUM_COLM_HAS_MISSING」とマッチしたとき、プロセッサ202は、テンプレート条件のサブセットとして変数「__STRING_CATG_COLM_NO_MISSING」及び「__NUM_COLM_HAS_MISSING」を選択することができる。その後、プロセッサ202は、検索動作を実行してテンプレートファイル内のこれらの変数に対応する値を識別するように構成することができる。識別された値は、関数「__cat_missing__」(「__STRING_CATG_COLM_NO_MISSING」に対応する)及び関数「__num_missing__」(「__NUM_COLM_HAS_MISSING」に対応する)などの、値のサブセットとして参照することができる。プロセッサ202は、修正されたコンピュータ実行可能コード内のトリガ条件のセットを決定すると、関数「__cat_missing__」及び「__num_missing__」をコールすることができる。
一実施形態に従い、変更のセットは、修正されたコンピュータ実行可能コード内のコード行に対して実行される1つ以上の動作を含んでもよい。プロセッサ202は、コード行におけるトリガ条件を決定した後、コード行を選択するように構成することができる。トリガ条件は、選択されたコード行内のキーとして参照されてもよい。プロセッサ202は、テンプレートファイル内の、トリガ条件とマッチするキーを(すなわち、テンプレート条件として)決定することができ、マッチするテンプレート条件に対応する値を識別することができる。値は、選択されたコード行に対して実行される1つ以上の動作と、第1のコード行に挿入され、第1のコード行から置き換えられ、第1のコード行の前にアペンドされ、又は第1のコード行の後にアペンドされる1つ以上のコード行(選択されたコード行と異なる)を含むことができる。変更のセットの決定に関するさらなる詳細については、例えば図4で説明する。
314において、修正されたコンピュータ実行可能コード及び非実行可能記述が、変更のセットに基づいて更新され得る。プロセッサ202は、修正されたコンピュータ実行可能コード及び非実行可能記述を更新するように構成することができる。
一実施形態に従い、プロセッサ202は、キーワード及びテキスト記述に基づいて、修正されたコンピュータ実行可能コード及び非実行可能記述を更新することができる。例えば、変更のセットは、値「# Use a generic dataset path to start」及び「# Generated pipeline by SML」に対応する場合がある。値「# Use a generic dataset path to start」は、キーワード「BEGIN」に対応する場合がある(テンプレート条件のサブセットのうちのテンプレート条件)。プロセッサ202は、キーワード「BEGIN」が非実行可能記述におけるトリガ条件として検出された場合、非実行可能記述を更新することができる。更新では、トリガ条件は、テンプレートファイル内のテンプレート条件「#BEGIN」とマッチしなければならない。更新は、修正されたコンピュータ実行可能コードにおいてキーワード「BEGIN」の前に、値「# Use a generic dataset path to start」を注入することを含むことができる。値「# Use a generic dataset path to start」は、値がトリガ条件の前に追加されるため、ブロック前注入コンテンツである。表2に示される改訂ルールのセット(テンプレートファイル)を参照すると、テンプレート条件#BEGIN(コメント)は、値[[‘# Use a generic dataset path to start’], []]に対応している。
同様に、値「# Generated pipeline by SML」は、テキスト記述***GENERATED PIPELINE***に対応することができる(テンプレート条件のサブセットのうちのテンプレート条件)。プロセッサ202は、テキスト記述***GENERATED PIPELINE***が非実行可能記述におけるトリガ条件として検出された場合、非実行可能記述を更新することができる。このテキスト記述は、テンプレートファイル内のテンプレート条件***GENERATED PIPELINE***とマッチし得る。更新は、非実行可能記述内のテキスト記述***GENERATED PIPELINE***の前に、値「# Generated pipeline by SML」を注入することを含むことができる(表2に示される改訂ルールのセット(テンプレートファイル)を参照する)。
別の実施形態に従い、プロセッサ202は、関数記述に基づいて、修正されたコンピュータ実行可能コードの部分を更新することができる。変更のセットは、値「__cat_missing__」及び「__num_missing__」に対応する場合がある。例えば、値「__cat_missing__」は、テンプレートファイル内のテンプレート条件「__STRING_CATG_COLM_NO_MISSING」に対応する関数でもよい。プロセッサ202は、変数「__STRING_CATG_COLM_NO_MISSING」を修正されたコンピュータ実行可能コード内のトリガ条件として決定すると、関数「__cat_missing__」をコールするように構成することができる。このトリガ条件は、テンプレートファイル内のテンプレート条件「__STRING_CATG_COLM_NO_MISSING」とマッチし得る。変数「__STRING_CATG_COLM_NO_MISSING」を含む修正されたコンピュータ実行可能コードの部分は、関数「__cat_missing__」に対応する関数記述で更新することができる。
同様に、値「__num_missing__」は、テンプレートファイル内の別のテンプレート条件「__NUM_COLM_HAS_MISSING」に対応する関数でもよい。プロセッサ202は、変数「__NUM_COLM_HAS_MISSING」が修正されたコンピュータ実行可能コード内でトリガ条件として検出された場合に関数「__num_missing__」をコールするように構成することができる。このトリガ条件は、テンプレートファイル内のテンプレート条件「__NUM_COLM_HAS_MISSING」とマッチし得る。変数「__NUM_COLM_HAS_MISSING」を含む修正されたコンピュータ実行可能コードの部分は、関数「__num_missing__」に対応する関数記述で更新することができる。
別の実施形態に従い、プロセッサ202は、テンプレートファイルにテンプレート条件として含まれるキーに基づいて、修正されたコンピュータ実行可能コードから選択されたコード行を更新することができる。キーは、テンプレートファイルに値が存在する、条件であってよい。選択されたコード行内のトリガ条件が、テンプレートファイル内のテンプレート条件(キー)とマッチしていると判断された場合、選択されたコード行は、キーに対応する値に基づいて更新することができる。値は、1つ以上のコード行を使用して実行される1つ以上の動作を含むことができる。
プロセッサ202は、値に対応する変更のセットに基づいて、選択されたコード行を更新することができる。選択されたコード行は、値に含まれる1つ以上のコード行を使用して、選択されたコード行に対して実行される1つ以上の動作を介して更新することができる。選択されたコード行の更新に関するさらなる詳細については、例えば図4で説明する。
316において、チュートリアルスタイルコードファイルが生成され得る。プロセッサ202は、更新されたコンピュータ実行可能コードと更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成するように構成することができる。チュートリアルスタイルコードファイルの一例は、Jupyter(登録商標)ノートブックである。プロセッサ202は、更新されたコンピュータ実行可能コード及び更新された非実行可能記述をベースラインチュートリアルスタイルコードテンプレートに入れて(populate)、チュートリアルスタイルコードファイルを生成することができる。更新されたコンピュータ実行可能コードは、より抽象的でなく、初心者及び専門家のユーザによって容易に理解できるフォーマットでコンピュータ実行可能コードを表すことができる。更新された非実行可能記述は、更新されたコンピュータ実行可能コードの説明可能性を高めることができ、受け取ったファイルに非実行可能記述の形式で存在するドキュメンテーションの品質を向上させることができる。チュートリアルスタイルコードファイルの一例を、例えば図8Bで説明する。
318において、チュートリアルスタイルコードファイルが、ノートブックアプリケーションのUIでレンダリングされ得る。プロセッサ202は、チュートリアルスタイルコードファイルをノートブックアプリケーションのUI上にレンダリングするように構成することができる。一実施形態に従い、レンダリングされたチュートリアルスタイルコードファイルには、コンピュータ実行可能コード(例えば、自動化機械学習ツールを介して生成された機械学習コード)の説明を含むことができる。プロセッサ202は、ディスプレイデバイス(例えば、ユーザデバイス104)を制御して、生成されたチュートリアルスタイルコードファイルをレンダリングすることができる。ノートブックアプリケーションは、開発者(又は、ユーザ)がコンピュータ実行可能コードを閲覧、編集、ドキュメント化/コメント、コーディング、及び実行できるようにする対話型ウェブアプリケーションでもよい。
プロセッサ202は、カーネルラッパーを介してチュートリアルスタイルコードファイルをノートブックアプリケーションにエクスポートするように構成されてもよい。カーネルラッパーは、ノートブックアプリケーションが、ノートブックアプリケーションのカーネルの使用によるコンピュータ実行可能コードの実行を可能にしている場合、使用されてもよい。カーネルラッパーは、ノートブックアプリケーションのアプリケーションプログラミングインターフェース(API)をラップすることができる。
320において、チュートリアルスタイルコードファイルが、チュートリアルスタイルコードファイルに含まれる更新されたコンピュータ実行可能コードの実行を可能にするためにコンパイルされ得る。プロセッサ202は、チュートリアルスタイルコードファイルをコンパイルして、更新されたコンピュータ実行可能コードを実行するように構成することができる。一実施形態に従い、プロセッサ202は、ノートブックアプリケーションにより使用されるコンパイラを使用して、更新されたコンピュータ実行可能コードをコンパイルすることができる。一実施形態に従い、プロセッサ202は、チュートリアルスタイルコードファイルを、ノートブックアプリケーションのUIにレンダリングするのに適したフォーマット(例えば、コード及びマークダウンに対して別個の実行可能セル)に変換することができる。
制御は終了に進むことができる。フローチャート300は、302、304、306、308、310、312、314、316、318、及び320などの個別の動作として示されているが、しかしながら、特定の実施形態において、そのような個別の動作はさらに、開示される実施形態の本質を損なうことなく特定の実装に応じて、さらなる動作に分割されてもよく、より少ない動作に結合されてもよく、あるいは削除されてもよい。
図4は、コードを更新するために使用される改訂ルールのセットを含む例示的なテンプレートファイルを示す。図4は、図1、図2、及び図3の要素と関連して説明される。図4を参照し、改訂ルールのセットを含む一例示的なテンプレートファイル402を示す。改訂ルールのセットの各ルールは、テンプレート条件と、テンプレート条件に対応する値を含むことができる。テンプレート条件は、キーとして参照されてもよく、キーに対応する値は、1つ以上のコード行を使用して実行され得る動作(例えば、追加、削除、置き換え、アペンド)とすることができる。図4に示すように、改訂ルールセット(すなわち、例示的なテンプレートファイル402の一部)は、4つのテンプレート条件を含む。プロセッサ202は、本明細書で説明するように、修正されたコンピュータ実行可能コード内の選択されたコード行内のトリガ条件を決定し、トリガ条件を例示的なテンプレートファイル402内のテンプレート条件と照合するための動作のセットを実行することができる。
プロセッサ202は、修正されたコンピュータ実行可能コードからコード行を選択し、選択されたコード行においてトリガ条件のセットのうちのトリガ条件を決定するように構成することができる。プロセッサ202は、決定されたトリガ条件を、改訂ルールのセット内のテンプレート条件(キー)と照合することができる。例えば、決定されたトリガ条件は、以下のようなキー又はテンプレート条件と照合されてもよい。
Figure 2023152843000007
プロセッサ202は、照合に基づいて変更のセットのうちの変更を決定するように構成することができる。変更のセットは、修正されたコンピュータ実行可能コード内の選択されたコード行に対して実行される動作を含むことができる。一実施形態に従い、プロセッサ202は、決定されたトリガ条件がテンプレート条件とマッチしている場合、例示的なテンプレートファイル402内のマッチするテンプレート条件に対応する値を識別するように構成することができる。値には、選択されたコード行に対して実行される1つ以上の動作、及び/又は選択されたコード行に挿入される1つ以上のコード行を含むことができる。
プロセッサ202は、変更のセットに基づいて、選択されたコード行を更新することができる。例えば、選択されたコード行において決定されたトリガ条件が、‘__dataset = pd.concat ([__train_dataset,__test_dataset])’404とマッチした場合、対応する値は、
Figure 2023152843000008

として識別することができる。この値は、replace406及びinsert _start(始めに挿入)408動作が、選択されたコード行に対して実行される必要があることを示す。変更のセットのうちの対応する変更は、選択されたコード行から
Figure 2023152843000009

に置き換え、選択されたコード行の始めに
Figure 2023152843000010

を挿入する動作を含むことができる。
選択されたコード行内で決定されたトリガ条件が、‘__dataset.drop([‘Id’], axis=1, inplace=True)’410とマッチした場合、対応する値は、[(“append_prev”, [“submission = pd.DataFrame(__train_dataset[‘Id’]. copy(), columns = [‘Id’])”])]として識別することができる。この値は、append_prev(前にアペンド)412動作が、選択されたコード行に対して実行される必要があることを示すことができる。変更のセットのうちの対応する変更は、選択されたコード行の始めに[“submission = pd.DataFrame(__train_dataset[‘Id’].copy(), columns = [‘Id’])”]をアペンドする動作を含むことができる。
選択されたコード行内の決定されたトリガ条件が、‘__y_pred=’414とマッチした場合、対応する値は、[(‘append_next’, [‘submission[“Saleprice”] =__y_pred’, ‘submission’, ‘#generate submission CSV file’, “submission.to_csv(‘submission.csv’, index=False)”])]として識別することができる。この値は、append_next(次にアペンド)416動作が、選択されたコード行に対して実行される必要があることを示すことができる。変更のセットのうちの対応する変更は、選択されたコード行の後に[‘submission[“Saleprice”] =__y_pred’, ‘submission’, ‘#generate submission CSV file’, “submission.to_csv(‘submission.csv’, index=False)”]をアペンドする動作を含むことができる。
選択されたコード行内の決定されたトリガ条件が、‘__target_test=’418とマッチした場合、対応する値は、[(‘append_next’, [‘__feature_train’])]として識別することができる。この値は、append_next(次にアペンド)414動作が、選択されたコード行に対して実行される必要があることを示すことができる。変更のセットのうちの対応する変更は、選択されたコード行の後に[‘__feature_train’]をアペンドする動作を含むことができる。
図5は、本開示に記載される少なくとも1つの実施形態による、コードを更新するために使用され得る改訂ルールのセットの自動生成のための例示的な方法のフローチャートを示す。図5は、図1、図2、図3、及び図4の要素と関連して説明される。図5を参照し、フローチャート500を示す。フローチャート500に示される方法は502で開始でき、図1又は図2のシステム102などの任意の適切なシステム、装置、又はデバイスにより実行することができる。
504において、コードパッケージが、コードパッケージ内で使用されるAPIコールを識別するために検索され得る。1つ以上の実施形態において、プロセッサ202は、コードパッケージを検索して、コードパッケージ内で使用されるAPIコールを識別するように構成することができる。プロセッサ202は、言語ソースをチェックしてAPIコール情報にアクセスすることができる。言語ソースは、コードライブラリを含むことができる。コードライブラリは、検索されるコードパッケージを含むことができる。コードパッケージは、APIコール情報を含むことができる。例えば、PyTorrentTMなどのコードライブラリにアクセスして、APIコールの記述及びAPIコールに関連するパラメータを取り出してもよい。Pythonライブラリは、コーディング、セマンティック、及び自然言語のリソースを含む場合があり、これらを使用して、コードの理解可能性のためにコンピュータ実行可能コード及び非実行可能記述を更新することができる。
506において、APIコールに関連する情報がコードパッケージから抽出され得る。1つ以上の実施形態において、プロセッサ202は、コードパッケージからAPIコールに関連する情報を抽出するように構成することができる。抽出された情報は、API関数、ドックストリング(docstrings)、パラメータ記述、及びAPI関数に関連づけられたユニバーサルリソースロケータ(Universal Resource Locators、URL)のうちの1つ以上を含む場合がある。例えば、プロセッサ202は、APIコール「Random Forest Classifier」に関係する情報を抽出するように構成することができる。情報は、検索されたコードパッケージの1つに存在するドキュメンテーションから抽出される場合がある。ドキュメンテーションは、API関数「RandomForestClassifier(ForestClassifier)」を含む場合がある。
APIコールRandom Forest Classifierのドキュメンテーションは、さらに、ドックストリング「A random forest classifier is a meta estimator that fits a number of decision tree classifiers on various sub-samples of the dataset. The sub-sample size is controlled with the ‘max_samples’ parameter if ‘bootstrap=True’ (default), otherwise the whole dataset is used to build each tree(ランダムフォレスト分類器は、データセットの様々なサブサンプルに複数の決定木分類器を適合させるメタ推定器である。サブサンプルサイズは、‘bootstrap=True’(デフォルト)の場合、‘max_samples’パラメータで制御され、そうでない場合、各木を構築するためにデータセット全体が使用される)」を含む場合がある。APIコールRandom Forest Classifierのドキュメンテーションは、さらに、「n_estimators」及び「versionchanged」などのパラメータ記述を含む場合がある。ドキュメンテーションにおけるパラメータ記述は、「n_estimators: int, default = 100, the number of trees in the forest, __ versionchanged: 0.22, the default value of “n_estimators changed from 10 to 100 in 0.22(n_estimators: int, default = 100, フォレストにおけるツリーの数, __ versionchanged: 0.22, “n_estimatorsのデフォルト値は、0.22において10から100に変更されている)」を含む場合がある。APIコールRandom Forest Classifierのドキュメンテーションは、さらに、APIコールRandom Forest Classifierに関連づけられたURLを含む場合がある。記述に含まれるURLは、「https://github.com/scikit-learn/scikit-learn/blob/0d378913b/sklearn/ensemble/forest.py#L1065」である場合がある。
508において、抽出されたデータは、API関数に関連づけられた説明文字列のセットに要約され得る。1つ以上の実施形態において、プロセッサ202は、抽出されたデータを、API関数に関連づけられた説明文字列のセットに要約するように構成することができる。プロセッサ202は、言語モデルの使用により要約を生成してもよい。例えば、プロセッサ202は、APIコール「Random Forest Classifier」に関連づけられた説明文字列のセットを含む要約を生成することができる。生成された要約は、例えば、「ランダムフォレスト分類器は、データセットの様々なサブサンプルに複数の決定木分類器を適合させ、平均化を使用して予測精度を向上させ、過剰適合を制御するメタ推定器である。」、「サブサンプルサイズは、bootstrap=True(デフォルト)の場合、max_samplesパラメータで制御され、そうでない場合、各木を構築するためにデータセット全体が使用される。」を含むことができる。
510において、改訂ルールのセットのうちの改訂ルールが、説明文字列のセットに基づいて生成され得る。1つ以上の実施形態において、プロセッサ202は、説明文字列のセットに基づいて改訂ルールのセットのうちの改訂ルールを生成するように構成することができる。いくつかの実施形態において、プロセッサ202は、説明テキストと視覚化に基づいて、改訂ルールのセットのうちの改訂ルールを生成するように構成されてもよい。改訂ルールは、複数のテンプレート条件を含むテンプレートファイルに含めることができる。改訂ルール内のテンプレート条件は、値に対応するテンプレート関数として表されてもよい。値は、説明文字列のセットに基づいて実行される1つ以上の動作に対応することができる。例えば、RandomForestClassifierを使用する動作に対して生成された改訂ルールは、以下のように説明テキストのセットを使用して示される。
Figure 2023152843000011
生成された改訂ルールにおいて、テンプレート条件は、[‘__model = RandomForestClassifier()’ in prev:]である。プロセッサ202は、生成されたルールを適用して、修正されたコンピュータ実行可能コード内の選択されたコード行又は非実行可能記述を修正することができる。生成されたルールは、生成された改訂ルール内のテンプレート条件とマッチしている、修正されたコンピュータ実行可能コード又は非実行可能記述内のトリガ条件を決定すると、適用されてもよい。トリガ条件は、選択されたコード行における関数コール「Random Forest Classifier」である場合がある。
プロセッサ202は、テンプレート条件[‘__model = RandomForestClassifier()’ in prev:]に対応する値に基づいて変更のセットを決定するように構成することができる。例えば、値は、説明文字列のセットを含めるために選択されたコード行に対して実行される必要があり得るアペンド動作に対応する場合がある。したがって、プロセッサ202は、修正されたコンピュータ実行可能コード内の選択されたコード行の前に、“[‘## Random Forest Classifier’, “We will use ‘RandomForestClassifier’ which is a meta estimator that fits a number of decision tree classifiers on various sub-samples of the dataset.” “The sub-sample size is controlled with ‘max_samples’ parameter if ‘bootstrap=True’ (default), otherwise the whole dataset is used to build each tree.” “More detail can be found [here](https://lskit-learn.org/modules”], ‘markdown’]”をアペンドすることにより、選択されたコード行を更新するように構成することができる。
制御は終了に進むことができる。フローチャート500は、502、504、506、508、及び510などの個別の動作として示されているが、しかしながら、特定の実施形態において、そのような個別の動作はさらに、開示される実施形態の本質を損なうことなく特定の実装に応じて、さらなる動作に分割されてもよく、より少ない動作に結合されてもよく、あるいは削除されてもよい。
図6は、本開示に記載される少なくとも1つの実施形態による、コードを更新するために使用され得る改訂ルールのセットの自動生成のための例示的なパイプラインを示す。図6は、図1、図2、図3、図4、及び図5の要素と関連して説明される。図6を参照し、例示的なパイプライン600のブロック図を示す。例示的なパイプライン600は、ルールのセットを自動的に生成するために使用することができる。ルールのセットは、変更のセットに基づいて、修正されたコンピュータ実行可能コード又は非実行可能記述を更新するために使用することができる。
602において、APIコールがターゲットパッケージから識別され得る。プロセッサ202は、ターゲットパッケージからAPIコールを識別するように構成することができる。ターゲットパッケージは、言語ソース(コードライブラリ)に含まれるコードパッケージでもよい。例えば、コードパッケージには、APIコール「Random Forest Classifier」に関連するドキュメンテーション616を含む場合がある。ドキュメンテーション616は、API関数、ドックストリング、パラメータ記述、URLリンクなどに関連するデータを含む場合がある。
604において、API関数618が抽出され得る。プロセッサ202は、APIコール「RANDOM FOREST CLASSIFIER」に関連づけられたAPI関数618をドキュメンテーション616から抽出するように構成することができる。
606において、API関数618に関連づけられたドックストリング620が抽出され得る。プロセッサ202は、API関数618に関連づけられたドックストリング620をドキュメンテーション616から抽出するように構成することができる。
608において、API関数618のパラメータ622の記述が抽出され得る。プロセッサ202は、API関数618のパラメータ622の記述をドキュメンテーション616から抽出するように構成することができる。
610において、API関数618に関連づけられたURLが抽出され得る。プロセッサ202は、API関数Random Forest Classifierに関連づけられたURLをドキュメンテーション616から抽出するように構成することができる。
612において、抽出されたデータに基づいて説明が生成され得る。プロセッサ202は、ドキュメンテーション616から抽出されたデータに基づいて、APIコール「RANDOM FOREST CLASSIFIER」に関係する説明(要約)を生成するように構成することができる。抽出されたデータは、API関数618、ドックストリング620、API関数618のパラメータ622の記述、及びAPI関数618に関連づけられたURLを含む。
614において、修正されたコンピュータ実行可能コード内のトリガ条件を検出すると説明(要約)を含めるように、ルール624が生成され得る。プロセッサ202は、修正されたコンピュータ実行可能コード内のトリガ条件を検出すると要約を含めるように、ルール624を生成するよう構成することができる。生成されたルール624は、テンプレート条件[‘__model = RandomForestClassifier()’ in prev:]626を含むことができる。トリガ条件が、テンプレート条件[‘__model = RandomForestClassifier()’ in prev:]626とマッチした場合、APIコール「Random Forest Classifier」に関係する要約を、非実行可能記述に対する更新として含めることができる。生成されたルール624は、テンプレート条件626に対応する値628を含むことができる。値628は、説明文字列のセットとして非実行可能記述の前の行を更新するために実行される動作(append_prev)を含むことができる。要約は、抽出されたデータに基づいて生成される説明文字列のセットに対応することができる。
図7は、本開示に記載されている少なくとも1つの実施形態による、更新されたコードに含まれるテキスト説明の生成のための例示的なパイプラインである。図7は、図1、図2、図3、図4、図5、及び図6の要素と関連して説明される。図7を参照し、図2の機械学習モデル212を含む例示的なパイプライン700のブロック図を示す。機械学習モデル212は、非実行可能記述としてチュートリアルスタイルコードファイルに含まれ得るテキスト記述712を予測することができる。テキスト記述712は、チュートリアルスタイルコードファイルに含まれる更新された非実行可能記述の内容を更新するために使用することもできる。
702において、1つ以上のオンラインコーディング競技会に関連づけられた複数のチュートリアルスタイルコードファイルが受け取られ得る。プロセッサ202は、1つ以上のオンラインコーディング競技会に関連づけられた複数のチュートリアルスタイルコードファイルを受け取るように構成することができる。チュートリアルスタイルコードファイルは、オンラインディスカッションフォーラム、データセット、Wikipedia(登録商標)などのコンテキストフリーのリソースなどのリソースから受信することができる。リソースは、コードファイルに関連づけられたメタデータ、コードファイルを説明するチュートリアル、コードファイル内のコンピュータ実行可能コードを使用して達成されるサンプルソリューション、サンプルソリューションのパフォーマンスなどを含む場合がある。プロセッサ202は、オンラインコーディング競技会のリソースを利用して機械学習モデル212を訓練することができる。複数のチュートリアルスタイルコードファイルの各受け取ったチュートリアルスタイルコードファイルは、コンピュータ実行可能コード、視覚化(各チュートリアルスタイルコードファイルの入力及び出力)、コンピュータ実行可能コードの非実行可能記述(コンピュータ実行可能コードの行に対するコメント、及びコンピュータ実行可能コードの行の記述など)などを含む場合がある。
704において、複数のチュートリアルスタイルコードファイルで使用される関数のセットが決定され得る。プロセッサ202は、複数のチュートリアルスタイルコードファイルで使用される関数のセットを決定するように構成することができる。一実施形態に従い、関数のセットは、複数のチュートリアルスタイルコードファイルのASTに基づいて決定されてもよい。決定された関数のセットは、テンプレートファイルに存在しない可能性があるか、又はテンプレートファイルに対応する記述を有さない可能性のある、ユニークな(unique)関数である場合がある。プロセッサ202は、複数のチュートリアルスタイルコードファイルの各々におけるコンピュータ実行可能コードの行をパースすることによりASTを決定することができる。コンピュータ実行可能コードは、関数定義、ドックストリング、関数パラメータ、関数記述、変数、コードパッケージなどのコンポーネントを含む場合がある。チュートリアルスタイルコードファイル内のコード行のASTは、チュートリアルスタイルコードファイルで使用される1つ以上の関数を決定するために使用することができる。例えば、コード行「import seaborn as sns」に含まれる「seaborn」及び「sns」などの単語について、プロセッサ202は、ASTに基づいて、単語「seaborn」及び「sns」を含む他のコード行を決定することができる。一例示的なコード行を、「sns.heatmap(cm_mnb_tfidf, cmap=“Blues”, annot=True, fmt=‘’)」として決める。ASTは「True」を返す可能性があり、なぜならば、このコード行は単語「sns」を「seaborn」のエイリアスとして含むためである。別の例示的なコード行「import matplotlib.pyplot as plt」について、ASTは、
Figure 2023152843000012

としてパースされ得る。ASTは、「plt.figure」及び「plt.show」などの関数がコード行に存在する場合、「True」を返す可能性がある。
706において、関数のセットに関連する情報が抽出され得る。プロセッサ202は、関数のセットに関連する情報を抽出するように構成することができる。関数が決定されると、関数のセットに関連する情報を抽出することができる。抽出された情報は、コンピュータ実行可能コード、コンピュータ実行可能コードの記述、コンピュータ実行可能コードの行に対するコメントなどを含む場合がある。
708において、抽出された情報に基づいて訓練データセットが生成され得る。プロセッサ202は、関数のセットに関連する情報に基づいて訓練データセットを生成するように構成することができる。訓練データセットは、機械学習モデル212を訓練するために使用することができる。一実施形態に従い、訓練データセットは、抽出された情報に含まれるコード、コメント、記述、及び出力の数値表現でもよい。例示的な訓練データセットには、000_simple-text-classification、_starter-intel-ai-4c6f、_the distribution of-などの情報コンポーネントを含むことができる。情報コンポーネントの各々は、パラメータと、パラメータに関連づけられた値を含む場合がある。一例として、情報コンポーネント000_simple-text-classificationに関連づけられたパラメータと値には、「no_markdown: 0」、「no_markdown_header: 0」、「no_code: 152、「no_code_comment: 23」、「no_output: 19」、「output: []」、「user_name: mads2000」などが含まれる。
機械学習モデル212が訓練データセットの使用により訓練されると、プロセッサ202は、修正されたコンピュータ実行可能コード710の行を機械学習モデル212への入力として提供することができる。訓練された機械学習モデル212は、修正されたコンピュータ実行可能コード710の行を入力として受け取ることができる。訓練された機械学習モデル212に提供され得る修正されたコンピュータ実行可能コード710の例示的な行は、以下のとおりである。
Figure 2023152843000013
機械学習モデル212は、入力に対する出力としてテキスト記述712を予測するように構成することができる。修正されたコンピュータ実行可能コード710の例示的な入力行に対応する予測された出力(テキスト記述712)は、以下のとおりでもよい。
Figure 2023152843000014
716において、変更のセット714の内容が、テキスト記述712に基づいて更新され得る。プロセッサ202は、テキスト記述712に基づいて変更のセット714の内容を更新することができる。プロセッサ202は、変更のセット714を決定して、変更のセットに基づいて、修正されたコンピュータ実行可能コード及び非実行可能記述を更新することができる。いくつかの実施形態において、テキスト記述712は、非実行可能記述に適用可能であり得る変更のセット714のうちの1つとして含まれてもよい。いくつかの実施形態において、テキスト記述712は、非実行可能記述に適用可能であり得る変更のセット714のうちの1つ以上の変更の内容を更新するために使用されてもよい。1つ以上の変更は、非実行可能記述内のトリガ条件がルールのセット内のテンプレート条件とマッチすることに基づいて決定されてもよい。例えば、ルール624の生成された要約は、生成されたテキスト記述712に基づいて更新されてもよい。
図8A及び図8Bは集合的に、本開示に記載される少なくとも1つの実施形態による、コード生成ツールから受け取ったファイルに基づくチュートリアルスタイルコードファイルの例示的な生成を示す。図8A及び図8Bは、図1、図2、図3、図4、図5、図6、及び図7の要素と関連して説明される。図8Aを参照し、ファイル802を示す。ファイル802は、システム102により、コード生成ツール110の出力として受け取ることができる。図8Bを参照し、ファイル802に基づいてシステム102により生成されたチュートリアルスタイルコードファイル804を示す。ファイル802は、コンピュータ実行可能コードと、コンピュータ実行可能コードに関連づけられた非実行可能記述(静的コメント)を含むことができる。チュートリアルスタイルコードファイル804には、コンピュータ実行可能コード806と、非実行可能記述808が含まれる。コンピュータ実行可能コード806は、ファイル802に含まれるコンピュータ実行可能コードの更新された修正されたバージョンであってよい。プロセッサ202は、ファイル802に基づいてチュートリアルスタイルコードファイル804を生成する動作を実行するように構成することができる。
プロセッサ202は、コンピュータ実行可能コード806に非実行可能記述808を含めるように構成されてもよい。非実行可能記述808は、変更のセットに基づいて含まれてもよい。このような変更は、コンピュータ実行可能コード806内のトリガ条件とルールのセットに含まれるテンプレート条件との間のマッチに基づいて決定されてもよい。トリガ条件は、コンピュータ実行可能コード806のコード行に含まれる関数コールでもよい。コード行は、例えば、‘__model = RandomForestClassifier()である場合がある。テンプレート条件は、ルール624に含まれ、すなわち[‘__model = RandomForestClassifier()’ in prev:]626でもよい。トリガ条件がテンプレート条件とマッチしているとき、変更のセットを決定することができる。変更のセットは、テンプレート条件626に対応する値に基づいてもよい。この値には、ルール624内の値628の内容の一部が含まれる。この値は、動作とテキスト記述を含むことができる。変更のセットは、テキスト記述を使用して選択されたコード行に対して実行される必要があり得る動作「append_prev」に対応することができる。プロセッサ202は、ファイル802内の非実行可能記述(コメント# MODEL)に対する更新としてテキスト記述をアペンドすることにより、ファイル802を更新するように構成することができる。更新は、チュートリアルスタイルコードファイル804の生成を結果としてもたらし得る。
開示の様々な実施形態は、実行されることに応答してシステム(システム102など)に動作を実行させる命令を記憶するように構成された1つ以上の非一時的コンピュータ読取可能記憶媒体を提供することができる。動作は、コード生成ツールの出力として、コンピュータ実行可能コードと、コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取ることを含むことができる。動作は、コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、コンピュータ実行可能コードを修正することをさらに含むことができる。動作は、修正されたコンピュータ実行可能コード及び非実行可能記述からトリガ条件のセットを決定することがさらに含むことができる。動作は、トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合することをさらに含むことができる。動作は、照合に基づいて、修正されたコンピュータ実行可能コードの部分と非実行可能記述の部分とに適用可能である変更のセットを決定することをさらに含むことができる。動作は、変更のセットに基づいて、修正されたコンピュータ実行可能コードと非実行可能記述を更新することをさらに含むことができる。動作は、更新されたコンピュータ実行可能コードと更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成することをさらに含むことができる。
上述したように、本開示に記載される実施形態は、以下により詳細に論じられるように、様々なコンピュータハードウェア又はソフトウェアモジュールを含む専用又は汎用コンピュータ(例えば、図2のプロセッサ202)の使用を含むことができる。さらに、上述したように、本開示に記載される実施形態は、記憶されたコンピュータ実行可能命令又はデータ構造を運び又は有するコンピュータ読取可能媒体(例えば、図2のメモリ204又は永続データストレージ206)を使用して実装されてもよい
本開示で用いられるとき、用語「モジュール」又は「コンポーネント」は、モジュール又はコンポーネントのアクションを実行するように構成された特定のハードウェア実装、及び/又は、コンピューティングシステムの汎用ハードウェア(例えば、コンピュータ読取可能媒体、処理デバイス、又は何らかの他のハードウェア)に記憶され、及び/又は該汎用ハードウェアにより実行され得るソフトウェアオブジェクト又はソフトウェアルーチンを指す場合がある。いくつかの実施形態において、本開示に記載される異なるコンポーネント、モジュール、エンジン、及びサービスが、コンピューティングシステム上で実行するオブジェクト又はプロセスとして(例えば、別個のスレッドとして)実施されてもよい。本開示に記載されるシステム及び方法のいくつかは、(汎用ハードウェアに記憶され、及び/又は汎用ハードウェアにより実行される)ソフトウェアで実施されるものとして一般に記載されるが、特定のハードウェア実装、又はソフトウェアと特定のハードウェア実装との組み合わせもまた可能であり、考えられる。本説明において、「コンピューティングエンティティ」は、本開示において前に定義された任意のコンピューティングシステム、又はコンピューティングシステム上で動作する任意のモジュール又はモジュレートの組み合わせでもよい。
本開示において、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において用いられる用語は、一般に「開放的」な用語として意図されている(例えば、用語「含んでいる」は、「含んでいるがこれに限定されない」と解釈されるべきであり、用語「有する」は、「少なくとも有する」と解釈されるべきであり、用語「含む」は、「含むがこれに限定されない」と解釈されるべきである等)。
さらに、特定の数の導入された請求項の記載が意図されている場合、そのような意図は請求項において明示的に記載され、そのような記載がない場合、そのような意図は存在しない。例えば、理解の助けとして、以下の添付された請求項は、請求項の記載を導入するための導入句「少なくとも1つの」及び「1つ以上の」の使用を含むことがある。しかしながら、そのような句の使用は、同じ請求項が導入句「1つ以上の」又は「少なくとも1つの」と「a」又は「an」などの不定冠詞とを含むときでも、不定冠詞「a」又は「an」による請求項の記載の導入がそのような導入の請求項記載を含む特定の請求項を1つのそのような記載のみを含む実施形態に限定することを示すものと解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである)。請求項の記載を導入するために使用される定冠詞の使用についても同様である。
一般的な慣行に従い、図面に示されている様々な特徴は、縮尺どおりに描かれていない場合がある。本開示で提示される図示は、特定の装置(例えば、デバイス、システムなど)又は方法の実際の図であることを意図したものでなく、本開示の様々な実施形態を説明するために採用される単なる理想化された表現である。したがって、様々な特徴の寸法は、明確さのために任意に拡大又は縮小されている場合がある。さらに、図面のいくつかは、明確さのために簡素化されている場合がある。したがって、図面には、所与の装置(例えば、デバイス)のコンポーネントの全て、又は特定の方法の全ての動作を示していない場合がある。
さらに、特定の数の導入された請求項の記載が意図されている場合、そのような意図は請求項において明示的に記載され、そのような記載がない場合、そのような意図は存在しない。例えば、理解の助けとして、以下の添付された請求項は、請求項の記載を導入するための導入句「少なくとも1つの」及び「1つ以上の」の使用を含むことがある。
さらに、特定の数の導入の請求項記載が明示的に記載されている場合でも、当業者は、そのような記載が少なくとも記載された数を意味すると解釈されるべきであることを認識するであろう(例えば、他の修飾語のない「2つの記載」というただそれだけの記載は、少なくとも2つの記載、又は2つ以上の記載を意味する)。さらに、「A、B、及びC等のうちの少なくとも1つ」又は「A、B、及びC等のうちの1つ以上」に類似した規定が用いられる例においては、一般に、そのような構成は、A単独で、B単独で、C単独で、AとBを一緒に、AとCを一緒に、BとCを一緒に、又はAとBとCを一緒に、などを含むことを意図している。
さらに、2つ以上の代替的な用語を提示する選言的な単語又は句は、明細書か、特許請求の範囲か、又は図面かに関わらず、用語の1つ、用語のいずれか、又は双方の用語を含む可能性を考慮するものと理解されるべきである。例えば、句「A又はB」は、「A」又は「B」又は「AとB」の可能性を含むものと理解されるべきである。
しかしながら、そのような句の使用は、同じ請求項が導入句「1つ以上の」又は「少なくとも1つの」と「a」又は「an」などの不定冠詞とを含むときでも、不定冠詞「a」又は「an」による請求項の記載の導入がそのような導入の請求項記載を含む特定の請求項を1つのそのような記載のみを含む実施形態に限定することを示すものと解釈されるべきではない(例えば、「a」及び/又は「an」は、「少なくとも1つの」又は「1つ以上の」を意味すると解釈されるべきである)。請求項の記載を導入するために使用される定冠詞の使用についても同様である。
さらに、用語「第1の」、「第2の」、「第3の」等の使用は、本明細書において、必ずしも要素の特定の順序又は数を意味するために使用されるわけではない。一般に、用語「第1の」、「第2の」、「第3の」等は、汎用的な識別子として異なる要素間で区別するために使用される。用語「第1の」、「第2の」、「第3の」等が特定の順序を意味することを示すものがない場合、これらの用語は、特定の順序を意味するものとして理解されるべきではない。さらに、用語「第1の」、「第2の」、「第3の」等が特定の数の要素を意味することを示すものがない場合、これらの用語は、特定の数の要素を意味するものとして理解されるべきではない。例えば、第1のウィジェットが、第1の側部を有するものとして記載される場合があり、第2のウィジェットが、第2の側部を有するものとして記載される場合がある。第2のウィジェットに関する用語「第2の側部」の使用は、第2のウィジェットのそのような側部を第1のウィジェットの「第1の側部」と区別するためである場合があり、第2のウィジェットが2つの側部を有することを意味するわけではない場合がある。
本開示に記載されている全ての例及び条件付き言語は、本発明及び本発明者が当該分野を促進するために貢献した概念を理解する際に読者を助けるための教育的目的を意図しており、このような具体的に記載されている例及び条件に限定されないものとして解釈されるべきである。本開示の実施形態が詳細に説明されたが、本開示の主旨及び範囲から逸脱することなく様々な変更、置換、及び改変をこれらに行うことができることを理解されたい。
上記の実施形態につき以下の付記を残しておく。
(付記1)
プロセッサにより実行される方法であって、
コード生成ツールの出力として、コンピュータ実行可能コードと前記コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取るステップと、
前記コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、前記コンピュータ実行可能コードを修正するステップと、
前記修正されたコンピュータ実行可能コード及び前記非実行可能記述からトリガ条件のセットを決定するステップと、
前記トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合するステップと、
前記照合に基づいて、
前記修正されたコンピュータ実行可能コードの部分、及び
前記非実行可能記述の部分
に適用可能である変更のセットを決定するステップと、
前記変更のセットに基づいて、前記修正されたコンピュータ実行可能コード及び前記非実行可能記述を更新するステップと、
前記更新されたコンピュータ実行可能コードと前記更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成するステップと、
を含む方法。
(付記2)
前記コード生成ツールは、実行されたときに前記ファイルを生成する機械学習コード生成ソフトウェアであり、前記ファイルの前記コンピュータ実行可能コードは、機械学習タスクに関連づけられる、付記1に記載の方法。
(付記3)
前記非実行可能記述は、前記コンピュータ実行可能コードのそれぞれの部分に関連づけられた静的コメント又は注釈に対応する、付記1に記載の方法。
(付記4)
前記トリガ条件のセットは、変数、キーワード、関数コール、関数パラメータ、デコレータ、ユニコードテキスト、及びソフトウェアパッケージ名のうちの1つ以上を含む、付記1に記載の方法。
(付記5)
前記コンピュータ実行可能コードの前記ブロックは、前記ブロックの各々の内容を
関数コール、
関数記述、又は
関数定義の1つ以上のパラメータ
のうちの少なくとも1つとして表すことにより、前記モジュラーコードブロックに変形される、付記1に記載の方法。
(付記6)
前記改訂ルールのセットは、キーとしての前記テンプレート条件と前記キーに対応する値とを含むテンプレートファイルに対応する、付記1に記載の方法。
(付記7)
前記変更のセットの前記決定は、
前記トリガ条件のセットとマッチする前記テンプレート条件のサブセットの選択と、
前記テンプレート条件の前記サブセットに対応する前記値のサブセットを識別するための検索動作の実行であり、
前記変更のセットは、前記値の前記サブセットに対応し、前記値の前記サブセットは、前記修正されたコンピュータ実行可能コードの前記モジュラーコードブロックのコードフラグメント又は非実行可能記述のうちの1つ以上を含む、検索動作の実行と
を含む、付記6に記載の方法。
(付記8)
前記修正されたコンピュータ実行可能コードの行をパースして抽象構文木(AST)を生成するステップと、
前記ASTのノードを処理することにより、前記トリガ条件のセットの少なくともサブセットを決定するステップと、
前記ASTに基づいて、前記モジュラーコードブロック及び前記非実行可能記述に適用可能である前記変更のセットのサブセットを決定するステップであり、
前記変更のセットの前記サブセットは、前記モジュラーコードブロックの内部又は外部に注入されるべきコード行(LOC)と、前記LOCを説明又は記述するテキスト記述を含む、ステップと、
をさらに含む、付記1に記載の方法。
(付記9)
前記修正されたコンピュータ実行可能コードからコード行(LOC)を選択するステップと、
前記選択されたLOCに含まれる前記トリガ条件のセットのうちのトリガ条件を、前記テンプレート条件と照合するステップと、
前記照合に基づいて前記変更のセットのうちの変更を決定するステップであり、前記変更は、
前記選択されたLOCを、前記選択されたLOCと異なる1つ以上のLOCに置き換える第1の動作、
前記選択されたLOCを削除する第2の動作、
前記選択されたLOCの前に前記1つ以上のLOCを挿入する第3の動作、
前記選択されたLOCの後に前記1つ以上のLOCを挿入する第4の動作、及び
前記選択されたLOCの先頭又は末尾に前記1つ以上のLOCをアペンドする第5の動作
のうちの1つである、ステップと、
をさらに含む、付記1に記載の方法。
(付記10)
コードパッケージを検索して、前記コードパッケージで使用されるアプリケーションプログラミングインターフェース(API)コールを識別するステップと、
前記コードパッケージから前記APIコールに関連するデータを抽出するステップであり、前記抽出されたデータは、API関数、ドックストリング、パラメータ記述、及び前記API関数に関連づけられたURLのうちの1つ以上を含む、ステップと、
前記抽出されたデータを、前記API関数に関連づけられた説明文字列のセットに要約するステップと、
前記説明文字列のセットに基づいて、前記改訂ルールのセットのうちの改訂ルールを生成するステップと、
をさらに含む、付記1に記載の方法。
(付記11)
前記改訂ルールのセットは、人間により生成されたルールと機械により生成されたルールとのうちの1つ以上を含む、付記1に記載の方法。
(付記12)
1つ以上のオンラインコーディング競技会に関連づけられた複数のチュートリアルスタイルコードファイルを取り出すステップと、
前記複数のチュートリアルスタイルコードファイルのASTに基づいて、前記複数のチュートリアルスタイルコードファイルで使用される関数のセットを決定するステップと、
前記複数のチュートリアルスタイルコードファイルから前記関数のセットに関連する情報を抽出するステップであり、前記情報は、コンピュータ実行可能コード、説明、及びコメントを含む、ステップと、
前記抽出された情報に基づいて訓練データセットを生成するステップと、
前記訓練データセットに基づいて、シーケンス・ツー・シーケンス生成タスク(sequence-to-sequence generated task)に対して機械学習モデルを訓練するステップと、
をさらに含む、付記1に記載の方法。
(付記13)
前記訓練された機械学習モデルへの入力として、前記修正されたコンピュータ実行可能コードの1つ以上のコード行(LOC)を提供するステップと、
前記入力に対する前記訓練された機械学習モデルの出力としてテキスト記述を生成するステップと、
前記生成されたテキスト記述に基づいて、前記変更のセットの1つ以上の変更の内容を更新するステップと、
をさらに含む、付記12に記載の方法。
(付記14)
前記更新されたコンピュータ実行可能コード及び前記更新された非実行可能記述をベースラインのチュートリアルスタイルコードテンプレートに入れて、前記チュートリアルスタイルコードファイルを生成するステップと、
ディスプレイデバイスを制御して、前記生成されたチュートリアルスタイルコードファイルをレンダリングするステップと、
をさらに含む、付記1に記載の方法。
(付記15)
実行されることに応答してシステムに動作を実行させる命令を記憶するように構成された非一時的コンピュータ読取可能記憶媒体であって、前記動作は、
コード生成ツールの出力として、コンピュータ実行可能コードと前記コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取ることと、
前記コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、前記コンピュータ実行可能コードを修正することと、
前記修正されたコンピュータ実行可能コード及び前記非実行可能記述からトリガ条件のセットを決定することと、
前記トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合することと、
前記照合に基づいて、
前記修正されたコンピュータ実行可能コードの部分、及び
前記非実行可能記述の部分
に適用可能である変更のセットを決定することと、
前記変更のセットに基づいて、前記修正されたコンピュータ実行可能コード及び前記非実行可能記述を更新することと、
前記更新されたコンピュータ実行可能コードと前記更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成することと、
を含む、非一時的コンピュータ読取可能記憶媒体。
(付記16)
前記1つ以上の改訂ルールは、キーとしての前記テンプレート条件と前記キーに対応する値とを含むテンプレートファイルに対応する、付記15に記載の非一時的コンピュータ読取可能記憶媒体。
(付記17)
前記変更のセットの前記決定は、
前記トリガ条件のセットとマッチする前記テンプレート条件のサブセットの選択と、
前記テンプレート条件の前記サブセットに対応する前記値のサブセットを識別するための検索動作の実行であり、
前記変更のセットは、前記値の前記サブセットに対応し、前記値の前記サブセットは、前記修正されたコンピュータ実行可能コードの前記モジュラーコードブロックのコードフラグメント又は非実行可能記述のうちの1つ以上を含む、検索動作の実行と
を含む、付記16に記載の非一時的コンピュータ読取可能記憶媒体。
(付記18)
前記動作は、
前記修正されたコンピュータ実行可能コードの行をパースして抽象構文木(AST)を生成することと、
前記ASTのノードを処理することにより、前記トリガ条件のセットの少なくともサブセットを決定することと、
前記ASTに基づいて、前記モジュラーコードブロック及び前記非実行可能記述に適用可能である前記変更のセットのサブセットを決定することであり、
前記変更のセットの前記サブセットは、
前記モジュラーコードブロックの内部又は外部に注入されるべきコード行(LOC)、及び
前記LOCを説明又は記述するテキスト記述
を含む、ことと、
をさらに含む、付記15に記載の非一時的コンピュータ読取可能記憶媒体。
(付記19)
前記動作は、
前記修正されたコンピュータ実行可能コードからコード行(LOC)を選択することと、
前記選択されたLOCに含まれる前記トリガ条件のセットのうちのトリガ条件を、前記テンプレート条件と照合することと、
前記照合に基づいて前記変更のセットのうちの変更を決定することであり、前記変更は、
前記選択されたLOCを、前記選択されたLOCと異なる1つ以上のLOCに置き換える第1の動作、
前記選択されたLOCを削除する第2の動作、
前記選択されたLOCの前に前記1つ以上のLOCを挿入する第3の動作、
前記選択されたLOCの後に前記1つ以上のLOCを挿入する第4の動作、及び
前記選択されたLOCの先頭又は末尾に前記1つ以上のLOCをアペンドする第5の動作
のうちの1つである、ことと、
をさらに含む、付記15に記載の非一時的コンピュータ読取可能記憶媒体。
(付記20)
システムであって、
プロセッサを含み、前記プロセッサは、
コード生成ツールの出力として、コンピュータ実行可能コードと前記コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取り、
前記コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、前記コンピュータ実行可能コードを修正し、
前記修正されたコンピュータ実行可能コード及び前記非実行可能記述からトリガ条件のセットを決定し、
前記トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合し、
前記照合に基づいて、
前記修正されたコンピュータ実行可能コードの部分、及び
前記非実行可能記述の部分
に適用可能である変更のセットを決定し、
前記変更のセットに基づいて、前記修正されたコンピュータ実行可能コード及び前記非実行可能記述を更新し、
前記更新されたコンピュータ実行可能コードと前記更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成する
ように構成される、システム。

Claims (20)

  1. プロセッサにより実行される方法であって、
    コード生成ツールの出力として、コンピュータ実行可能コードと前記コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取るステップと、
    前記コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、前記コンピュータ実行可能コードを修正するステップと、
    前記修正されたコンピュータ実行可能コード及び前記非実行可能記述からトリガ条件のセットを決定するステップと、
    前記トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合するステップと、
    前記照合に基づいて、
    前記修正されたコンピュータ実行可能コードの部分、及び
    前記非実行可能記述の部分
    に適用可能である変更のセットを決定するステップと、
    前記変更のセットに基づいて、前記修正されたコンピュータ実行可能コード及び前記非実行可能記述を更新するステップと、
    前記更新されたコンピュータ実行可能コードと前記更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成するステップと、
    を含む方法。
  2. 前記コード生成ツールは、実行されたときに前記ファイルを生成する機械学習コード生成ソフトウェアであり、前記ファイルの前記コンピュータ実行可能コードは、機械学習タスクに関連づけられる、請求項1に記載の方法。
  3. 前記非実行可能記述は、前記コンピュータ実行可能コードのそれぞれの部分に関連づけられた静的コメント又は注釈に対応する、請求項1に記載の方法。
  4. 前記トリガ条件のセットは、変数、キーワード、関数コール、関数パラメータ、デコレータ、ユニコードテキスト、及びソフトウェアパッケージ名のうちの1つ以上を含む、請求項1に記載の方法。
  5. 前記コンピュータ実行可能コードの前記ブロックは、前記ブロックの各々の内容を
    関数コール、
    関数記述、又は
    関数定義の1つ以上のパラメータ
    のうちの少なくとも1つとして表すことにより、前記モジュラーコードブロックに変形される、請求項1に記載の方法。
  6. 前記改訂ルールのセットは、キーとしての前記テンプレート条件と前記キーに対応する値とを含むテンプレートファイルに対応する、請求項1に記載の方法。
  7. 前記変更のセットの前記決定は、
    前記トリガ条件のセットとマッチする前記テンプレート条件のサブセットの選択と、
    前記テンプレート条件の前記サブセットに対応する前記値のサブセットを識別するための検索動作の実行であり、
    前記変更のセットは、前記値の前記サブセットに対応し、前記値の前記サブセットは、前記修正されたコンピュータ実行可能コードの前記モジュラーコードブロックのコードフラグメント又は非実行可能記述のうちの1つ以上を含む、検索動作の実行と
    を含む、請求項6に記載の方法。
  8. 前記修正されたコンピュータ実行可能コードの行をパースして抽象構文木(AST)を生成するステップと、
    前記ASTのノードを処理することにより、前記トリガ条件のセットの少なくともサブセットを決定するステップと、
    前記ASTに基づいて、前記モジュラーコードブロック及び前記非実行可能記述に適用可能である前記変更のセットのサブセットを決定するステップであり、
    前記変更のセットの前記サブセットは、前記モジュラーコードブロックの内部又は外部に注入されるべきコード行(LOC)と、前記LOCを説明又は記述するテキスト記述を含む、ステップと、
    をさらに含む、請求項1に記載の方法。
  9. 前記修正されたコンピュータ実行可能コードからコード行(LOC)を選択するステップと、
    前記選択されたLOCに含まれる前記トリガ条件のセットのうちのトリガ条件を、前記テンプレート条件と照合するステップと、
    前記照合に基づいて前記変更のセットのうちの変更を決定するステップであり、前記変更は、
    前記選択されたLOCを、前記選択されたLOCと異なる1つ以上のLOCに置き換える第1の動作、
    前記選択されたLOCを削除する第2の動作、
    前記選択されたLOCの前に前記1つ以上のLOCを挿入する第3の動作、
    前記選択されたLOCの後に前記1つ以上のLOCを挿入する第4の動作、及び
    前記選択されたLOCの先頭又は末尾に前記1つ以上のLOCをアペンドする第5の動作
    のうちの1つである、ステップと、
    をさらに含む、請求項1に記載の方法。
  10. コードパッケージを検索して、前記コードパッケージで使用されるアプリケーションプログラミングインターフェース(API)コールを識別するステップと、
    前記コードパッケージから前記APIコールに関連するデータを抽出するステップであり、前記抽出されたデータは、API関数、ドックストリング、パラメータ記述、及び前記API関数に関連づけられたURLのうちの1つ以上を含む、ステップと、
    前記抽出されたデータを、前記API関数に関連づけられた説明文字列のセットに要約するステップと、
    前記説明文字列のセットに基づいて、前記改訂ルールのセットのうちの改訂ルールを生成するステップと、
    をさらに含む、請求項1に記載の方法。
  11. 前記改訂ルールのセットは、人間により生成されたルールと機械により生成されたルールとのうちの1つ以上を含む、請求項1に記載の方法。
  12. 1つ以上のオンラインコーディング競技会に関連づけられた複数のチュートリアルスタイルコードファイルを取り出すステップと、
    前記複数のチュートリアルスタイルコードファイルのASTに基づいて、前記複数のチュートリアルスタイルコードファイルで使用される関数のセットを決定するステップと、
    前記複数のチュートリアルスタイルコードファイルから前記関数のセットに関連する情報を抽出するステップであり、前記情報は、コンピュータ実行可能コード、説明、及びコメントを含む、ステップと、
    前記抽出された情報に基づいて訓練データセットを生成するステップと、
    前記訓練データセットに基づいて、シーケンス・ツー・シーケンス生成タスクに対して機械学習モデルを訓練するステップと、
    をさらに含む、請求項1に記載の方法。
  13. 前記訓練された機械学習モデルへの入力として、前記修正されたコンピュータ実行可能コードの1つ以上のコード行(LOC)を提供するステップと、
    前記入力に対する前記訓練された機械学習モデルの出力としてテキスト記述を生成するステップと、
    前記生成されたテキスト記述に基づいて、前記変更のセットの1つ以上の変更の内容を更新するステップと、
    をさらに含む、請求項12に記載の方法。
  14. 前記更新されたコンピュータ実行可能コード及び前記更新された非実行可能記述をベースラインのチュートリアルスタイルコードテンプレートに入れて、前記チュートリアルスタイルコードファイルを生成するステップと、
    ディスプレイデバイスを制御して、前記生成されたチュートリアルスタイルコードファイルをレンダリングするステップと、
    をさらに含む、請求項1に記載の方法。
  15. システムに動作を実行させるコンピュータプログラムであって、前記動作は、
    コード生成ツールの出力として、コンピュータ実行可能コードと前記コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取ることと、
    前記コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、前記コンピュータ実行可能コードを修正することと、
    前記修正されたコンピュータ実行可能コード及び前記非実行可能記述からトリガ条件のセットを決定することと、
    前記トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合することと、
    前記照合に基づいて、
    前記修正されたコンピュータ実行可能コードの部分、及び
    前記非実行可能記述の部分
    に適用可能である変更のセットを決定することと、
    前記変更のセットに基づいて、前記修正されたコンピュータ実行可能コード及び前記非実行可能記述を更新することと、
    前記更新されたコンピュータ実行可能コードと前記更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成することと、
    を含む、コンピュータプログラム。
  16. 1つ以上の改訂ルールは、キーとしての前記テンプレート条件と前記キーに対応する値とを含むテンプレートファイルに対応する、請求項15に記載のコンピュータプログラム。
  17. 前記変更のセットの前記決定は、
    前記トリガ条件のセットとマッチする前記テンプレート条件のサブセットの選択と、
    前記テンプレート条件の前記サブセットに対応する前記値のサブセットを識別するための検索動作の実行であり、
    前記変更のセットは、前記値の前記サブセットに対応し、前記値の前記サブセットは、前記修正されたコンピュータ実行可能コードの前記モジュラーコードブロックのコードフラグメント又は非実行可能記述のうちの1つ以上を含む、検索動作の実行と
    を含む、請求項16に記載のコンピュータプログラム。
  18. 前記動作は、
    前記修正されたコンピュータ実行可能コードの行をパースして抽象構文木(AST)を生成することと、
    前記ASTのノードを処理することにより、前記トリガ条件のセットの少なくともサブセットを決定することと、
    前記ASTに基づいて、前記モジュラーコードブロック及び前記非実行可能記述に適用可能である前記変更のセットのサブセットを決定することであり、
    前記変更のセットの前記サブセットは、
    前記モジュラーコードブロックの内部又は外部に注入されるべきコード行(LOC)、及び
    前記LOCを説明又は記述するテキスト記述
    を含む、ことと、
    をさらに含む、請求項15に記載のコンピュータプログラム。
  19. 前記動作は、
    前記修正されたコンピュータ実行可能コードからコード行(LOC)を選択することと、
    前記選択されたLOCに含まれる前記トリガ条件のセットのうちのトリガ条件を、前記テンプレート条件と照合することと、
    前記照合に基づいて前記変更のセットのうちの変更を決定することであり、前記変更は、
    前記選択されたLOCを、前記選択されたLOCと異なる1つ以上のLOCに置き換える第1の動作、
    前記選択されたLOCを削除する第2の動作、
    前記選択されたLOCの前に前記1つ以上のLOCを挿入する第3の動作、
    前記選択されたLOCの後に前記1つ以上のLOCを挿入する第4の動作、及び
    前記選択されたLOCの先頭又は末尾に前記1つ以上のLOCをアペンドする第5の動作
    のうちの1つである、ことと、
    をさらに含む、請求項15に記載のコンピュータプログラム。
  20. システムであって、
    プロセッサを含み、前記プロセッサは、
    コード生成ツールの出力として、コンピュータ実行可能コードと前記コンピュータ実行可能コードに関連づけられた非実行可能記述とを含むファイルを受け取り、
    前記コンピュータ実行可能コードのブロックをモジュラーコードブロックに変形することにより、前記コンピュータ実行可能コードを修正し、
    前記修正されたコンピュータ実行可能コード及び前記非実行可能記述からトリガ条件のセットを決定し、
    前記トリガ条件のセットを、改訂ルールのセットに含まれるテンプレート条件と照合し、
    前記照合に基づいて、
    前記修正されたコンピュータ実行可能コードの部分、及び
    前記非実行可能記述の部分
    に適用可能である変更のセットを決定し、
    前記変更のセットに基づいて、前記修正されたコンピュータ実行可能コード及び前記非実行可能記述を更新し、
    前記更新されたコンピュータ実行可能コードと前記更新された非実行可能記述とを含むチュートリアルスタイルコードファイルを生成する
    ように構成される、システム。
JP2023045218A 2022-03-31 2023-03-22 コード説明可能性のためのコードの強化 Pending JP2023152843A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/657,601 US20230315442A1 (en) 2022-03-31 2022-03-31 Enriching code for code explainability
US17/657601 2022-03-31

Publications (1)

Publication Number Publication Date
JP2023152843A true JP2023152843A (ja) 2023-10-17

Family

ID=85150677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023045218A Pending JP2023152843A (ja) 2022-03-31 2023-03-22 コード説明可能性のためのコードの強化

Country Status (4)

Country Link
US (1) US20230315442A1 (ja)
EP (1) EP4254175A1 (ja)
JP (1) JP2023152843A (ja)
CN (1) CN116893809A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573140B (zh) * 2024-01-16 2024-04-02 成都安世赛斯特软件技术有限公司 一种通过扫描代码生成文档的方法、系统及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7831608B2 (en) * 2008-02-28 2010-11-09 International Business Machines Corporation Service identification in legacy source code using structured and unstructured analyses
US9043758B2 (en) * 2013-03-15 2015-05-26 International Business Machines Corporation System for generating readable and meaningful descriptions of stream processing source code
US9436446B1 (en) * 2015-11-16 2016-09-06 International Business Machines Corporation System for automating calculation of a comprehensibility score for a software program
US10048945B1 (en) * 2017-05-25 2018-08-14 Devfactory Fz-Llc Library suggestion engine
US10732966B2 (en) * 2017-09-08 2020-08-04 Devfactory Innovations Fz-Llc Library model addition
US10114624B1 (en) * 2017-10-12 2018-10-30 Devfactory Fz-Llc Blackbox matching engine
US11238306B2 (en) * 2018-09-27 2022-02-01 International Business Machines Corporation Generating vector representations of code capturing semantic similarity
US11269601B2 (en) * 2019-06-27 2022-03-08 Intel Corporation Internet-based machine programming
US20210318865A1 (en) * 2020-04-09 2021-10-14 Capital One Services, Llc Methods and arrangements to process comments
US11327722B1 (en) * 2020-12-09 2022-05-10 Fujitsu Limited Programming language corpus generation
US12019992B2 (en) * 2021-09-24 2024-06-25 Fujitsu Limited Code enrichment for training language models relating to computer programming
US11726750B1 (en) * 2021-11-17 2023-08-15 Outsystems—Software Em Rede, S.A. Constrained decoding and ranking of language models for code generation

Also Published As

Publication number Publication date
US20230315442A1 (en) 2023-10-05
EP4254175A1 (en) 2023-10-04
CN116893809A (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
CN107924483B (zh) 通用假设排序模型的生成与应用
CN106547527B (zh) 一种JavaScript文件构建方法及装置
US8364696B2 (en) Efficient incremental parsing of context sensitive programming languages
US10747880B2 (en) System and method for identifying and comparing code by semantic abstractions
EP3008585B1 (en) Automatic source code generation
WO2022089188A1 (zh) 一种代码处理方法、装置、设备及介质
US11586839B2 (en) Code completion of method parameters with machine learning
CN109710220B (zh) 关系型数据库查询方法、装置、设备及存储介质
US12032941B2 (en) Method and system for updating legacy software
US20230096325A1 (en) Deep parameter learning for code synthesis
JP7409197B2 (ja) ソフトウェアプログラムにおける静的分析違反の修復パターンの精緻化
JP2023152843A (ja) コード説明可能性のためのコードの強化
US11775290B2 (en) Detection of API backward compatibility across software versions
CN104536769A (zh) 一种国际化文档实现方法
JP2022025013A (ja) 研究論文に関連付けられたマルチモーダルオンラインリソースの抽出
JP2024052547A (ja) ソフトウェア・パッケージのためのバージョン更新の推奨
US20230080439A1 (en) Augmentation of machine learning pipeline corpus for synthesizing new machine learning pipelines
CN111796832B (zh) 热补丁文件生成方法、装置、设备及存储介质
US20230075295A1 (en) Automatic denoising of machine learning projects
WO2024031983A1 (zh) 一种代码管理方法及相关设备
CN110879699A (zh) 领域专用语言dsl的图形化处理方法和设备
US20240248908A1 (en) Data parser with dialect prediction
CN117971308A (zh) 接口文档生成方法、装置、存储介质及计算机设备
CN117632224A (zh) 一种代码管理方法及相关设备
CN118012502A (zh) 一种基于知识库的少样本多步提示的llm前端框架迁移方法