論文の概要: Refactoring to Pythonic Idioms: A Hybrid Knowledge-Driven Approach Leveraging Large Language Models
- arxiv url: http://arxiv.org/abs/2406.03660v1
- Date: Thu, 6 Jun 2024 00:22:46 GMT
- ステータス: 処理完了
- システム内更新日: 2024-06-07 18:55:13.480800
- Title: Refactoring to Pythonic Idioms: A Hybrid Knowledge-Driven Approach Leveraging Large Language Models
- Title(参考訳): Pythonic Idiomsへのリファクタリング - 大規模言語モデルを活用したハイブリッドな知識駆動アプローチ
- Authors: Zejun Zhang, Zhenchang Xing, Xiaoxue Ren, Qinghua Lu, Xiwei Xu,
- Abstract要約: 多くのPythonユーザは、Pythonのイディオムを使うのが難しいと感じている。
規則の決定とLLMの適応性に動機付けられ,我々はハイブリッドアプローチを提案する。
- 参考スコア(独自算出の注目度): 23.181371435793494
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Pythonic idioms are highly valued and widely used in the Python programming community. However, many Python users find it challenging to use Pythonic idioms. Adopting a rule-based approach or LLM-only approach is not sufficient to overcome three persistent challenges of code idiomatization including code miss, wrong detection and wrong refactoring. Motivated by the determinism of rules and adaptability of LLMs, we propose a hybrid approach consisting of three modules. We not only write prompts to instruct LLMs to complete tasks, but we also invoke Analytic Rule Interfaces (ARIs) to accomplish tasks. The ARIs are Python code generated by prompting LLMs to generate code. We first construct a knowledge module with three elements including ASTscenario, ASTcomponent and Condition, and prompt LLMs to generate Python code for incorporation into an ARI library for subsequent use. After that, for any syntax-error-free Python code, we invoke ARIs from the ARI library to extract ASTcomponent from the ASTscenario, and then filter out ASTcomponent that does not meet the condition. Finally, we design prompts to instruct LLMs to abstract and idiomatize code, and then invoke ARIs from the ARI library to rewrite non-idiomatic code into the idiomatic code. Next, we conduct a comprehensive evaluation of our approach, RIdiom, and Prompt-LLM on nine established Pythonic idioms in RIdiom. Our approach exhibits superior accuracy, F1-score, and recall, while maintaining precision levels comparable to RIdiom, all of which consistently exceed or come close to 90% for each metric of each idiom. Lastly, we extend our evaluation to encompass four new Pythonic idioms. Our approach consistently outperforms Prompt-LLM, achieving metrics with values consistently exceeding 90% for accuracy, F1-score, precision, and recall.
- Abstract(参考訳): Pythonのイディオムは高く評価されており、Pythonプログラミングコミュニティで広く使われている。
しかし、多くのPythonユーザはPythonのイディオムを使うのが難しいと感じている。
ルールベースのアプローチやLLMのみのアプローチを採用するだけでは、コードミス、間違った検出、誤ったリファクタリングを含む、コードの慣用化に関する3つの難題を克服するには不十分だ。
3つのモジュールからなるハイブリッドアプローチを提案する。
LLMにタスクを完了するように指示するプロンプトを書くだけでなく、タスクを達成するためにARI(Analytic Rule Interfaces)を呼び出す。
ARIはLLMにコードを生成するよう促したPythonコードである。
まず,ASTscenario,ASTcomponent,Conditionの3要素からなるナレッジモジュールを構築し,LLMにARIライブラリに組み込むPythonコードを生成するように促した。
その後、構文エラーのないPythonコードに対して、ARIライブラリからARIを呼び出し、ASTscenarioからASTcomponentを抽出し、条件を満たしないASTcomponentをフィルタリングします。
最後に、ALIライブラリからALIを呼び出し、非慣用的なコードをイディオマティックコードに書き直すようにLCMに指示するプロンプトを設計する。
次に, RIdiom と Prompt-LLM のアプローチを, RIdiom で確立された Python のイディオム9つに対して総合的に評価する。
提案手法は精度,F1スコア,リコールに優れ,精度はリディオムに匹敵する。
最後に、評価を4つの新しいPythonイディオムに拡張する。
提案手法はPrompt-LLMを常に上回り,精度,F1スコア,精度,リコールの90%を超えている。
関連論文リスト
- Raiders of the Lost Dependency: Fixing Dependency Conflicts in Python using LLMs [10.559292676550319]
Python開発者は、サードパーティモジュールとPythonインタプリタの環境依存性とバージョン制約を手動で識別し、解決する必要がある。
従来のアプローチでは、さまざまな依存性エラータイプ、可能なモジュールバージョンの大規模なセット、コンフリクトによる制限に直面していました。
本研究では,Pythonプログラムの依存性問題を自動的に修正するために,大規模言語モデル(LLM)を使用する可能性について検討する。
論文 参考訳(メタデータ) (2025-01-27T16:45:34Z) - Effective LLM-Driven Code Generation with Pythoness [0.0]
Pythonessは、大きな言語モデル(LLM)を使用したコード生成のための組み込みドメイン固有言語である。
Pythonessでは、関数やクラス、プログラム全体を記述する際に、開発者は振る舞い仕様のレベルで動作します。
Pythonessは、テストとコード生成の組み合わせをうまく利用して、仕様のみよりも高品質なコードを生成することができることを示す。
論文 参考訳(メタデータ) (2025-01-03T23:14:46Z) - Crystal: Illuminating LLM Abilities on Language and Code [58.5467653736537]
本稿では,自然言語と符号化機能の統合性を高めるための事前学習戦略を提案する。
結果のモデルであるCrystalは、両方のドメインで顕著な能力を示します。
論文 参考訳(メタデータ) (2024-11-06T10:28:46Z) - CRUXEval-X: A Benchmark for Multilingual Code Reasoning, Understanding and Execution [50.7413285637879]
CRUXEVAL-Xコード推論ベンチマークには19のプログラミング言語が含まれている。
各言語に対して少なくとも600人の被験者で構成され、合計19Kのコンテンツ一貫性テストがある。
Pythonでのみトレーニングされたモデルでさえ、他の言語で34.4%のPass@1を達成することができる。
論文 参考訳(メタデータ) (2024-08-23T11:43:00Z) - PromptReps: Prompting Large Language Models to Generate Dense and Sparse Representations for Zero-Shot Document Retrieval [76.50690734636477]
本稿では,PmptRepsを提案する。このPmptRepsは,トレーニングを必要とせず,コーパス全体から検索できる機能である。
検索システムは、高密度テキスト埋め込みとスパースバッグ・オブ・ワード表現の両方を利用する。
論文 参考訳(メタデータ) (2024-04-29T04:51:30Z) - If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code
Empowers Large Language Models to Serve as Intelligent Agents [81.60906807941188]
大型言語モデル(LLM)は、自然言語と形式言語(コード)の組み合わせに基づいて訓練される
コードは、標準構文、論理一貫性、抽象化、モジュール性を備えた高レベルの目標を実行可能なステップに変換する。
論文 参考訳(メタデータ) (2024-01-01T16:51:20Z) - LPML: LLM-Prompting Markup Language for Mathematical Reasoning [8.995617701116142]
外部ツール(Python REPL)とChain-of-Thought(CoT)メソッドを統合する新しいフレームワークを提案する。
提案手法は,ゼロショットプロンプトのみを用いて,LLMがマークアップ言語を記述し,高度な数学的推論を行うことを可能にする。
論文 参考訳(メタデータ) (2023-09-21T02:46:20Z) - Large Language Models are Strong Zero-Shot Retriever [89.16756291653371]
ゼロショットシナリオにおける大規模検索に大規模言語モデル(LLM)を適用するための簡単な手法を提案する。
我々の手法であるRetriever(LameR)は,LLM以外のニューラルモデルに基づいて構築された言語モデルである。
論文 参考訳(メタデータ) (2023-04-27T14:45:55Z) - PAL: Program-aided Language Models [112.94785609781503]
自然言語問題を理解するために,プログラム支援言語モデル(PaL)を提案する。
PaLはソリューションステップをPythonインタプリタのようなプログラムランタイムにオフロードする。
私たちは12のベンチマークで新しい最先端の結果を設定しました。
論文 参考訳(メタデータ) (2022-11-18T18:56:13Z) - GAP-Gen: Guided Automatic Python Code Generation [3.574838772430975]
本稿では,Pythonの構文的制約と意味的制約に基づくガイド付き自動Pythonコード生成手法を提案する。
GAP-Genは、Code-to-Docstringデータセットを使用して、トランスフォーマーベースの言語モデルT5とCodeT5を微調整する。
実験の結果,GAP-GenはPythonの自動コード生成タスクにおいて,従来の作業よりも優れた結果が得られることがわかった。
論文 参考訳(メタデータ) (2022-01-19T06:32:47Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。