覚え書きブログ

ChatGPT

最近WBSやNHKでよく紹介されていて話題のChatGPTに自分のことを聞いたら山と勘違いされた。

bingでは、どのように検索機能としてChatGPTを活用するのか楽しみ。

次に、以下のようなtsvファイル(sentenceとscoreの列がある)を読み込み、scoreの値が1と0の割合を計算するpythonコードが書けるか試してみた。

sentence	score
So there is no way for me to plug it in here in the US unless I go by a converter.	0
Good case, Excellent value.	1
Great for the jawbone.	1
Tied to charger for conversations lasting more than 45 minutes.MAJOR PROBLEMS!!	0
The mic is great.	1
I have to jiggle the plug to get it to line up right to get decent volume.	0
If you have several dozen or several hundred contacts, then imagine the fun of sending each of them one by one.	0
If you are Razr owner...you must have this!	1
Needless to say, I wasted my money.	0

以下のようにあまり考えずに聞くと、pandasを用いない実装案が出てきて、ちょっと想定外だったが、これはこれで実装できていそう。

何がすごいって、1行目がカラムのラベルだから無視して、2列目がscoreを取るようにと教えてもいないのに、
「 if not line.startswith('sentence'):」で1行目を飛ばし、「 _, score = line.strip().split('\t')」でタブでsplitして2つ目を取ってきているところである。

def calculate_ratio(file_path):
    with open(file_path, 'r') as file:
        score_counts = {0: 0, 1: 0}
        for line in file:
            if not line.startswith('sentence'):
                _, score = line.strip().split('\t')
                score = int(score)
                score_counts[score] += 1
    total = sum(score_counts.values())
    ratio_1 = score_counts[1] / total
    ratio_0 = score_counts[0] / total
    return ratio_1, ratio_0

ratio_1, ratio_0 = calculate_ratio('file.tsv')
print(f"Ratio of score 1: {ratio_1}")
print(f"Ratio of score 0: {ratio_0}")

次にもう少し丁寧に聞いてみた。「以下のtsvファイルを読み込んでscore列の値が1と0時の割合を計算するpythonコードを、pandasを用いて書いてください。」
そうすると、pandasを使った想定していたコードが出てきた。

これはすごい。大学の授業のpythonの演習問題は、ChatGPTで簡単に解けてしまうし、場合によっては就活のコーディングテストでもカンニングできてしまうのではないだろうか。。。

import pandas as pd

def calculate_ratio(file_path):
    df = pd.read_csv(file_path, sep='\t')
    score_counts = df['score'].value_counts()
    total = score_counts.sum()
    ratio_1 = score_counts[1] / total
    ratio_0 = score_counts[0] / total
    return ratio_1, ratio_0

ratio_1, ratio_0 = calculate_ratio('file.tsv')
print(f"Ratio of score 1: {ratio_1}")
print(f"Ratio of score 0: {ratio_0}")

近いうちに、プログラマと記者の需要が減りそう。