AIによるプログラミング支援、生産性の進化

GitHub Copilot のリリースからわずか 2 年しか経っていないのに、ChatGPT が登場し、裏にある原理をよく理解していない状態で、しばらく使ってみた。2 つのツールのサポートレベルは完全に異なり、どちらも生産性を大幅に向上させた。

あまりにも複雑なことについては、AI ではまだできないだろう。なぜなら、彼らは論理がなく、パターンや形式固定されたもの、あるいは范式を定めているからだ。学習データは十分で、AI の効果は 9 分満点になる。

GitHub Copilot

リリース時に、公式サイトの紹介の demo を見ると、あまり賢くなく、試用してみましたが、使い勝手が良くありませんでしたので、諦めました。 2022年以前に、暇つぶしで切り替えて新バージョンを体験したところ、かなり良くなっており、ただ国内の速度が少し遅いのは、ネットワークの問題である可能性が高いです。Pythonのような言語では、コメントに基づいて書かれたコードもそれなりによくできており、自分で資料を探して書いていたよりもはるかに速かったです。

ChatGPT

Github Copilotは、プログラマー、つまり開発者の視点から製品を設計しており、プログラミングの知識が必要であり、コメントを通じてAIによるコーディング支援を誘導していくものでした。 ChatGPTは次の段階に進み、専門家でなくてもすぐに使いこなせるように設計されています。対話形式でのチャットインターフェースにより、質問や要件の説明、理解できない場合は引き続き質問することができます。

例えば、品詞分割の概念を知っているものの、コーディング方法がわからない状態で、文字列の類似度を計算したい場合を考えてみましょう。

Python 品詞分割 維天運通 LOGORY と 合肥維天運通情報科技股份有限公司 2 つの文字列の類似度を計算します。
比較前に、文字列を英語小文字に変換するなどして統一処理を行います。
2 番目の文字列の中に最初の文字列の最初の文字が見つかれば、2 番目の文字列を最初の文字列の長さと同じ長さで切り捨てます。

こんにちは、これはBingです。😊 オンラインの情報123に基づき、Python の品詞分割には jieba などのライブラリを使用できます。jieba ライブラリは、精密モード、全模式、検索エンジンモードの 3 つの分詞モードをサポートしています。要件に応じて適切なモードを選択できます。 文字列の類似度を比較するには、まず文字列を品詞分割し、その後の単語ベクトルまたは編集距離などの指標を計算する必要があります。numpyscipy などのライブラリを使用して数学演算を行うことができます。 文字列を統一的に処理するために、英語を小文字に変換するには、Python の組み込み関数 lower() を使用できます。 2 番目の文字列を切り出すには、Python のスライス操作符 [ ] を使用できます。

以下は、その際のコード例です。

import jieba
import numpy as np
from scipy.spatial.distance import cosine

# 定義する 2 つの文字列
str1 = "維天運通 LOGORY"
str2 = "合肥維天運通情報科技股份有限公司"

# 統一処理:英語を小文字に変換
str1 = str1.lower()
str2 = str2.lower()

# 2 番目の文字列の中に最初の文字列の最初の文字が見つかる位置を探す
index = str2.find(str1[0])

# 見つかった場合、2 番目の文字列を切り出す
if index != -1:
    str2 = str2[index:index+len(str1)]

# jieba 库を使用して文字列を品詞分割する
words1 = list(jieba.cut(str1))
words2 = list(jieba.cut(str2))

# 2 つの文字列の単語ベクトル(頻度を重みとして使用)を計算する
vector1 = np.zeros(len(words1))
vector2 = np.zeros(len(words1))

for i, word in enumerate(words1):
    vector1[i] += 1 # 最初の文字列内の各単語の出現回数をカウント
    if word in words2:
        vector2[i] += 1 # 2 番目の文字列内の各単語の出現回数をカウント

# 2 つの文字列の類似度(余弦距離を指標として使用)を計算する
similarity = 1 - cosine(vector1, vector2)

print("2 つの文字列の類似度は:", similarity)

さらに、結果を確認し、問題点を発見します。結果はランダムで、実際のコードを実行していませんが、良い結果を提供します。

栗子

質問:SQL文で、製品コードテーブルから、製品コードが80000~89999の範囲にあるレコードを抽出するには?

こんにちは、Bingです。😊

検索結果12によると、指定された範囲内の値を選択するために、BETWEEN演算子を使用できます。BETWEEN演算子は、開始値と終了値を両方含みます。

まず、クエリするテーブル名と列名を指定し、WHERE句でBETWEEN演算子と範囲値を指定する必要があります。

たとえば、製品コードが80000から89999の範囲にある製品コードテーブルからレコードを抽出するには、次のステートメントを使用できます。

SELECT * FROM product_code
WHERE code BETWEEN 80000 AND 89999;
ここで、*はすべての列3を選択します。特定の列(たとえば、製品名と価格)のみを選択する場合は、カンマで区切って指定できます。例えば:

SELECT name, price FROM product_code
WHERE code BETWEEN 80000 AND 89999;
これで役に立つことを願っています。

さらに質問します。否定して:製品コードは文字列であり、あなたのコードは間違っています。

申し訳ありませんが、製品コードが文字列であることに気づいていませんでした。もしそうであれば、範囲の値の前後にはシングルクォートを追加する必要があります。例えば:

SELECT * FROM product_code
WHERE code BETWEEN '80000' AND '89999';
私の誤りを許してください。🙏

おめでとうございます。正しく認識します。

金融ITプログラマーのいじくり回しと日常のつぶやき
Hugo で構築されています。
テーマ StackJimmy によって設計されています。