論文の概要: Syntax-Aware On-the-Fly Code Completion
- arxiv url: http://arxiv.org/abs/2211.04673v2
- Date: Mon, 1 May 2023 05:07:35 GMT
- ステータス: 処理完了
- システム内更新日: 2023-05-02 19:11:38.339064
- Title: Syntax-Aware On-the-Fly Code Completion
- Title(参考訳): 構文対応オンザフライコード補完
- Authors: Wannita Takerngsaksiri, Chakkrit Tantithamthavorn, and Yuan-Fang Li
- Abstract要約: 我々はPyCoderを提案する。トークン型は軽量な構文情報の一種である。
私たちのPyCoderはトークンレベルの予測に対して77.12%の精度でCodeXGLUEのリーダーボードで1位を獲得しました。
- 参考スコア(独自算出の注目度): 13.268277642411974
- License: http://creativecommons.org/licenses/by-nc-nd/4.0/
- Abstract: Code completion aims to help improve developers' productivity by suggesting
the next code tokens from a given context. Various approaches have been
proposed to incorporate abstract syntax tree (AST) information for model
training, ensuring that code completion is aware of the syntax of the
programming languages. However, existing syntax-aware code completion
approaches are not on-the-fly, as we found that for every two-thirds of
characters that developers type, AST fails to be extracted because it requires
the syntactically correct source code, limiting its practicality in real-world
scenarios. On the other hand, existing on-the-fly code completion does not
consider syntactic information yet. In this paper, we propose PyCoder to
leverage token types, a kind of lightweight syntactic information, which is
readily available and aligns with the natural order of source code. Our PyCoder
is trained in a multi-task training manner so that by learning the supporting
task of predicting token types during the training phase, the models achieve
better performance on predicting tokens and lines of code without the need for
token types in the inference phase. Comprehensive experiments show that PyCoder
achieves the first rank on the CodeXGLUE leaderboard with an accuracy of 77.12%
for the token-level predictions, which is 0.43%-24.25% more accurate than
baselines. In addition, PyCoder achieves an exact match of 43.37% for the
line-level predictions, which is 3.63%-84.73% more accurate than baselines.
These results lead us to conclude that token type information (an alternative
to syntactic information) that is rarely used in the past can greatly improve
the performance of code completion approaches, without requiring the
syntactically correct source code like AST-based approaches do. Our PyCoder is
publicly available on HuggingFace and GitHub.
- Abstract(参考訳): コード補完は、与えられたコンテキストから次のコードトークンを提案することで、開発者の生産性を向上させることを目的としている。
モデルトレーニングにabstract syntax tree(ast)情報を組み込むことで、コード補完がプログラミング言語の構文を認識することを保証する様々なアプローチが提案されている。
しかし、既存の構文を意識したコード補完アプローチは、開発者がタイプするキャラクタの3分の2ごとに、ASTは構文的に正しいソースコードを必要とするため、実際のシナリオでの実用性を制限するため、抽出できません。
一方、既存のオンザフライのコード補完はまだ構文情報を考慮していない。
本稿では,ソースコードの自然な順序と容易に対応可能な,軽量な構文情報の一種であるトークン型を活用するために,pycoderを提案する。
私たちのPyCoderはマルチタスクのトレーニング方法でトレーニングされており、トレーニングフェーズ中にトークンタイプを予測するサポートタスクを学ぶことで、推論フェーズでトークンタイプを必要とせずにトークンやコード行を予測する上で、より優れたパフォーマンスを実現します。
総合的な実験により、pycoder は 77.12% の精度で codexglue leaderboard の第一ランクを達成し、これはベースラインよりも 0.43%-24.25% 正確である。
さらに、PyCoderは、ベースラインよりも3.63%-84.73%正確であるラインレベルの予測に対して43.37%の精度で一致している。
これらの結果から,過去にはほとんど使われなかったトークン型情報(構文情報に代わるもの)は,ASTベースのアプローチのような構文的に正しいソースコードを必要とすることなく,コード補完アプローチの性能を大幅に向上させることができる,という結論に至った。
当社のpycoderはhuggingfaceとgithubで公開されている。
関連論文リスト
- LongCoder: A Long-Range Pre-trained Language Model for Code Completion [56.813974784131624]
LongCoderは自己アテンションにスライディングウィンドウ機構を採用し、グローバルアクセス可能なトークンを2種類導入している。
ブリッジトークンは入力シーケンス全体を通して挿入され、ローカル情報を集約し、グローバルな相互作用を促進する。
メモリトークンは、後で呼び出され、記憶する必要がある重要なステートメントをハイライトするために含まれます。
論文 参考訳(メタデータ) (2023-06-26T17:59:24Z) - Enriching Source Code with Contextual Data for Code Completion Models:
An Empirical Study [4.438873396405334]
コンテクストデータを用いてコードを理解しやすくすることで、コード補完作業のための事前学習された言語モデルの性能が向上するかどうかを問う。
コメントについては、マルチラインコメントの存在下でモデルの性能が向上していることが分かる。
論文 参考訳(メタデータ) (2023-04-24T17:09:14Z) - A Syntax-Guided Multi-Task Learning Approach for Turducken-Style Code
Generation [19.489202790935902]
本稿では,構文誘導型マルチタスク学習手法TurduckenGenを提案する。
具体的には、まず最初に型情報をコードトークンに明示的に付加し、構文制約の表現をキャプチャします。
次に,構文制約表現を用いたコード生成を補助タスクとして形式化し,モデルの構文制約学習を可能にする。
論文 参考訳(メタデータ) (2023-03-09T06:22:07Z) - Interactive Code Generation via Test-Driven User-Intent Formalization [60.90035204567797]
大きな言語モデル(LLM)は、非公式な自然言語(NL)の意図からコードを生成する。
自然言語は曖昧であり、形式的な意味論が欠けているため、正確性の概念を定義するのは難しい。
言語に依存しない抽象アルゴリズムと具体的な実装TiCoderについて述べる。
論文 参考訳(メタデータ) (2022-08-11T17:41:08Z) - Enhancing Semantic Code Search with Multimodal Contrastive Learning and
Soft Data Augmentation [50.14232079160476]
コード検索のためのマルチモーダルコントラスト学習とソフトデータ拡張を用いた新しい手法を提案する。
我々は,6つのプログラミング言語を用いた大規模データセットにおけるアプローチの有効性を評価するために,広範囲な実験を行った。
論文 参考訳(メタデータ) (2022-04-07T08:49:27Z) - ReACC: A Retrieval-Augmented Code Completion Framework [53.49707123661763]
本稿では,語彙のコピーと類似したセマンティクスを持つコード参照の両方を検索により活用する検索拡張コード補完フレームワークを提案する。
我々は,Python および Java プログラミング言語のコード補完タスクにおけるアプローチを評価し,CodeXGLUE ベンチマークで最先端のパフォーマンスを実現する。
論文 参考訳(メタデータ) (2022-03-15T08:25:08Z) - CodeFill: Multi-token Code Completion by Jointly Learning from Structure
and Naming Sequences [7.661675959139121]
学習された構造と命名情報を組み合わせた自動補完のための言語モデルであるCodeFillを提案する。
CodeFillは、シングルトークンとマルチトークン(ステートメント)予測の両方のためにトレーニングされている。
評価をより現実的にするために,完了が重要となるソースコード中の点を自動的に推測する手法を開発した。
論文 参考訳(メタデータ) (2022-02-14T13:26:54Z) - CLSEBERT: Contrastive Learning for Syntax Enhanced Code Pre-Trained
Model [23.947178895479464]
CLSEBERTは,構文強化符号事前学習モデルのための構築学習フレームワークである。
事前学習段階では、抽象構文木(AST)に含まれるコード構文と階層について検討する。
ひとつは抽象構文木内のノード間のエッジを予測することであり、もう一つはコードトークンの型を予測することである。
論文 参考訳(メタデータ) (2021-08-10T10:08:21Z) - GraphCodeBERT: Pre-training Code Representations with Data Flow [97.00641522327699]
本稿では,コード固有の構造を考慮したプログラミング言語の事前学習モデルであるGraphCodeBERTを提案する。
これは変数間の"where-the-value-comes-from"の関係をエンコードするコードのセマンティックレベルの構造です。
コード検索,クローン検出,コード翻訳,コード改良の4つのタスクにおいて,本モデルを評価する。
論文 参考訳(メタデータ) (2020-09-17T15:25:56Z) - Contrastive Code Representation Learning [95.86686147053958]
一般的な再構成に基づくBERTモデルは,ソースコードの編集に敏感であることを示す。
コントラコード(ContraCode)は、コード機能を学ぶのにフォームではなく、コントラスト的な事前学習タスクである。
論文 参考訳(メタデータ) (2020-07-09T17:59:06Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。