地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

codeembed-modernbert-owl-previewをcolabで試してみる。

コード検索やコード理解を目的とした事前学習済みモデルをXで見かけたので試してみました。こういう特化型モデルは興味深いです。いろいろと作って使えるときっと楽しいでしょう。モデル有難く動かしてみました。

 

企業の文章だと似たような文章ばかりのものがあります。うまくデータセットを整えることが出来たら、微妙な文章でも差異を求められるモデルができるのでしょうか。

 

試してみたので、メモとして残します。

 

 

huggingface.co

 

Cosine類似度

code_snippet_1 = """
def add(a, b):
    return a + b
"""

code_snippet_2 = """
def sum_numbers(x, y):
    return x + y
"""

Cosine Similarity: 0.6156

 

code_snippet_1 = """
func (v *View) Render(m ...string) trees.Markup {
if len(m) <= 0 {
m = []string{"."}
}
"""

code_snippet_2 = """
def sum_numbers(x, y):
    return x + y
"""

Cosine Similarity: 0.0063

 

検索

# サンプルのコードスニペットとそのコメント(要約)のデータセット
dataset = [
    {
        "code": """
def add(a, b):
    return a + b
""",
        "comment": "2つの数値を加算して結果を返す関数です。"
    },
    {
        "code": """
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)
""",
        "comment": "再帰的にnの階乗を計算する関数です。"
    },
    {
        "code": """
def is_even(n):
    return n % 2 == 0
""",
        "comment": "与えられた数が偶数かどうかを判定する関数です。"
    }
]


テスト対象

def sum_numbers(x, y):
    return x + y

 

 

生成されたコメント: 2つの数値を加算して結果を返す関数です。
類似度スコア: 0.6156468987464905

 

今回使ったコード

gist.github.com