chatGPTを使ったコーディング

Feb 10 2023
OpenAI の言語モデルを使用して地理データ サイエンス用の Python コードを作成する
最近、OpenAI が開発した、非常に人間らしい対応ができる AI チャット ボットである ChatGPT について知りました。chatGPT はテキストを使用して応答するだけでなく、コードを書くように要求することもできます。

最近、 OpenAIが開発した、驚くほど人間らしい方法でユーザーに応答できるAI チャット ボットであるChatGPTについて知りました。chatGPT はテキストを使用して応答するだけでなく、コードを書くように要求することもできます。実際、知人は最近、都市データ サイエンスの修士課程の宿題の一部 (エッセイの執筆とコードの作成の両方) を行うために chatGPT を使用したと話してくれました。

データ サイエンスに chatGPT を使用する例。Medium の記事を参照してください。

勤務時間のほとんどをコーディングに費やしている私にとって、チャット ボットにコードを書いてもらうのは、信じられないほどエキサイティングに思えます(節約できるすべての時間を考えてみてください!)と同時に、少し怖く感じられます(これは、仕事がなくなることを意味しますか?)数年後には仕事になる?)私はチャット GPT のコーディング機能、特に Python による空間データ分析を試してみることにしました。この記事では、最初の結果と私の最初の考えをいくつか示します。

この記事では、Chat GPT に、頻繁に行う必要がある典型的なタスクを実行してもらいました。それは、ポリゴン (国、都市、自治体の形状など) を、統計を簡単に集計できるセルのグリッドに変換することです。

始める前に、チャット GPT とは実際何ですか? この質問をチャットボット自体に尋ねたところ、次のような応答が返されました。

GPT (Generative Pre-training Transformer の略) は、OpenAI によって開発された言語モデルの一種です。これは、例の大規模なデータセットが与えられた場合に、シーケンス内の次の単語を予測することで人間のようなテキストを生成するように訓練されたニューラル ネットワークです。チャット GPT は、チャット アプリケーションでのこのモデルの使用を指し、ユーザー メッセージに対する応答をリアルタイムで生成するために使用できます。会話の文脈を理解し、適切な応答を生成することで会話を続行できるように設計されています。

はじめましょう!

まず、Chat GPT に「ポリゴン内に geodataframe グリッドを作成してください」と質問したところ、次のような応答が返されました。

import geopandas as gpd

# create a polygon
polygon = gpd.GeoDataFrame({'geometry': gpd.GeoSeries([Polygon([(0,0), (0,1), (1,1), (1,0)])])})
# create a grid of geodataframe within the polygon
grid = gpd.gridify(polygon, cell_size=0.1, geometry='Polygon')
# plot the grid
grid.plot()

ただし、 という別の Python モジュールがあるためgridify、チャットボットがそれによって混乱した可能性があります。ここのリンクを参照してください。また、shapely属性Polygonを使用する前にインポートするのを忘れていましたが、それは単なる小さな問題でした。

チャット GPT の興味深い点は、継続的に会話を行うことができ、以前のやり取りを記憶していることです。そこで、機能するコードを取得するために追加の質問をしました。そこで私は、「このコードを試してみましたが、「モジュール 'geopandas' には属性 'gridify' がありません」というエラーが発生しました。これを直してもらえますか?」と尋ねると、次のような返事が返されました。

ボットはshapely属性があると主張していましたがgridify、コードを実行したときにそれが真実ではないことがわかりました。shapely属性gridifyもありません。

そこで私は別のフォローアップの質問をしました。「コードを試してみましたが、「'shapely.gridify' という名前のモジュールがありません」というエラー メッセージが表示されました。他に選択肢はありますか?」

その後、ボットは、これはライブラリの一部でgridify あるshapelyが、新しいバージョンでは削除されていると自信を持って私に伝え始めました。これも、私の知る限り真実ではありません。

作成されたコードは…四角いループを生成しましたが、これは私が探していたものとは程遠いものでした。正直、かなり面白いと思いました。

2 回目の試み: うまくいきました!

チャット GPT との最初の会話は明らかにあまりうまくいっていなかったので、もう一度やり直して、より明確に質問することにしました。「セルのグリッドをジオデータフレームとして生成するための Python コード」と尋ねたところ、その応答は次のとおりです。

import geopandas as gpd
from shapely.geometry import Polygon

# Define the bounds of the grid
min_x, min_y = 0, 0
max_x, max_y = 10, 10

# Define the size of the cells in the grid
cell_width, cell_height = 1, 1

# Define the projection to use
crs = "EPSG:4326"  # WGS84

# Initialize an empty list to store the grid cells
grid_cells = []

# Iterate over the bounds of the grid and create a Polygon object for each cell
for x in range(min_x, max_x, cell_width):
    for y in range(min_y, max_y, cell_height):
        # Define the coordinates of the cell
        cell_coords = [(x, y), (x+cell_width, y), (x+cell_width, y+cell_height), (x, y+cell_height)]
        
        # Create the Polygon object
        cell = Polygon(cell_coords)
        
        # Add the Polygon to the list
        grid_cells.append(cell)

# Create the GeoDataFrame
gdf = gpd.GeoDataFrame(geometry=grid_cells, crs=crs)

# Visualize the grid
gdf.plot()

セルのグリッドを作成するために chatGPT で生成された Python コードの結果

したがって、チャット GPT は、適切に書かれた明確な質問が与えられている限り、空間データ サイエンス用の Python で単純なコードを実際に書くことができます。

最終的な考え

chatGPT を使ったこの短い実験は、チャットボット、そしておそらく AI 全般について 2 つの興味深い点を浮き彫りにしています。

まず、AI は一見正当に見えるアーティファクトを、さらなる調査によって間違っていることが判明する可能性があることがわかります。一般的な例としては、 AI によって生成された顔の画像が挙げられます。この場合、顔は一見本物のように見えますが、よく見ると奇妙な異常があることがわかります。

AI が生成した顔の異常の例、中記事を参照

geopandas私たちのコードを書くとき、チャット GPT はというモジュールを作成することで同様のことを行いました。gpd.gridify()このモジュールは意味があるように見えますが、実際には存在しません。

第二に、chatGPT (およびおそらく他の AI ボット) の目的は、正確な情報を提示することではなく、正確な情報のように見えるものを提示することです。chatGPT の FAQ ページによると、モデルは人間の音声を可能な限り模倣するようにトレーニングされており、真実を提供するものではありません。

chatGPTのFAQページ

これが、これがライブラリgridifyの一部であると自信を持って主張しgeopandas、誤りであることが証明された場合には、代わりにそれがライブラリgridifyの一部であると主張する理由です。shapelyこれらの記述はどちらも真実ではありませんが、おそらくそれは chatGPT の要点ではありません。

次は何ですか?

私は chatGPT の機能にとても興奮しているので、将来的には他のより難しいコーディング タスクに取り組むためにそれを使用するつもりです。

また、アイデアを生み出すのに非常に便利であることもわかりました。サステナビリティと空間データ サイエンスに関するデータ サイエンス プロジェクトのアイデアを求めました。私にとって目新しいアイデアは得られませんでしたが、サステナビリティの非常に良い概要を提供してくれました。 / 空間データ サイエンスの世界。この分野に慣れていない人にとっては非常に便利だと思います。

プロジェクトのアイデアを尋ねたときの chatGPT の応答は次のとおりです。

  • 持続可能な交通計画: 計画立案者が公共交通ネットワークを最適化し、温室効果ガスの排出を削減し、アクセスを改善するのに役立つツールを開発します。これには、旅行需要のパターンの分析、公共交通機関のデータ ソースとの統合、ネットワーク設計とルーティングのためのアルゴリズムの実装などが含まれる可能性があります。
  • 持続可能な土地利用計画: 計画立案者が環境への影響を最小限に抑え、持続可能性を高めるために土地利用パターンを最適化するのに役立つツールを開発します。これには、土地利用と土地被覆のパターンの分析、土地利用データ ソースとの統合、土地利用の割り当てと最適化のためのアルゴリズムの実装が含まれる可能性があります。
  • 環境影響評価: 組織が業務やプロジェクトの環境への影響を評価するのに役立つツールを開発します。これには、大気や水質などの環境指標に関するデータ ソースとの統合や、影響評価と予測のためのアルゴリズムの実装が含まれる可能性があります。
  • 再生可能エネルギーのサイトの選択: 組織が太陽光発電や風力発電などの再生可能エネルギーの発電に適したサイトを特定するのに役立つツールを開発します。これには、日射量、風速、その他の関連要因のパターンを分析し、土地利用や地形に関するデータ ソースと統合することが含まれる可能性があります。
  • 持続可能なサプライ チェーンの最適化: 組織がサプライ チェーンを最適化し、環境への影響を最小限に抑え、持続可能性を高めるのに役立つツールを開発します。これには、物質とエネルギーの流れのパターンの分析、サプライチェーンのデータソースとの統合、最適化とリスク評価のためのアルゴリズムの実装が含まれる可能性があります。

謝辞

chatGPT と AI についての考えを私に共有してくれた友人の Alexey Ilyshkin と Alexis Oh に感謝します。私たちの議論は、この記事の「最終的な考え」セクションに統合されました。