見出し画像

【AIに働かせて楽しよう! その2】Chat-GPTにプログラミングさせてみた..

AIを自分のコピーとして働かせよう!という野望。

もしAIにはたらいてもらったら楽だよな。。というわけで先日はJKローリングを超える小説を作ってもらおうと考えましたが。ある程度小説を知らないとサポートにはなりませんでした。

そこで今回はAIにプログラミングをしてもらおうと。。

【いきなりまとめ】
 AIにプログラミングさせてみた
 かんたんなWebからの単語集計。
 完成までにAIで15分。
    人作業ならベテランなら5分。
 初級者ならば45分ぐらいか?
 ただしベテランがAI使えば3分程度でこちらも効果ありそう。

要するにプログラミングでも楽できるツールでした。
(代替えまでではないけど効率UPするにはもってこいです。)

GPT-CHATでプログラミング


早速進めていきます。
お題入力。

数秒待つと早速以下の回答

以下のようなプログラムを作成しました。

このプログラムでは、まず、指定したURLからHTMLを取得し、それをパースするために BeautifulSoup を使用しています。次に、HTMLから本文を抽出し、単語の頻度を計算するために Counter を使用します。最後に、単語の頻度の上位30件を取得し、棒グラフを描画するために matplotlib を使用します。

chat-gpt
import requests
from bs4 import BeautifulSoup
from collections import Counter
import matplotlib.pyplot as plt

# 指定したURLからHTMLを取得する
url = "http://example.com"
response = requests.get(url)
html = response.text

# HTMLをパースする
soup = BeautifulSoup(html, "html.parser")

# 本文を抽出する
text = soup.get_text()

# 単語の頻度を計算する
word_counts = Counter(text.split())

# 単語の頻度の上位30件を取得する
most_common_words = word_counts.most_common(30)

# ラベルとデータを取得する
labels, data = zip(*most_common_words)

# 棒グラフを描画する
plt.bar(labels, data)
plt.show()

上記のプログラムを実行するには、以下のモジュールが必要です。
・requests
・bs4
・collections
・matplotlib
これらのモジュールは、それぞれ、以下のようにインストールすることができます。

chat-gpt
pip install requests
pip install bs4
pip install collections
pip install matplotlib


悪くない。

UrlをNY-TIMESのものに変更

the NY times ここからテキストを分析したい

日本語サイトを選ばないのは、単語がスペース区切りの言語でないと分解できないから。

早速、Google Colaboratoryで実行する。
(※Google Colaboratoryはブラウザだけで実行できるGoogleが提供する無料のプログラム環境。Google様感謝!)

colab実行中

プログラムそのものの基礎知識はある程度必要、実行環境についても知識をもっている前提で動かす。

何故順番が異なるのか?ーー先にモジュールを入れないと動かない。
何故!をつけるのか?ーーーcolab特有で、この環境をのためのもの一般的にはつけなくていい。

あれ?エラー?

そういえば、そもそもcollectionsモジュールは標準モジュールのためインポート不要だった。。(このあたりは精度が甘そう)

実行結果のグラフ
   あ、読めない。。

そういうところは教えてあげると直してくれる。

角度を確度とミスしても。。

以下のように、X軸のラベルを270度回転することで、重なりを防ぐことができます。

chat-gpt
import matplotlib.pyplot as plt

# X軸のラベルを270度回転する
plt.xticks(rotation=270)

# 以降は通常通りに棒グラフを描画する
plt.bar(labels, data)
plt.show()

また、以下のように、X軸のラベルを折り返すことでも、重なりを防ぐことができます。

chat-gpt
import matplotlib.pyplot as plt

# X軸のラベルを折り返す
plt.gcf().autofmt_xdate()

# 以降は通常通りに棒グラフを描画する
plt.bar(labels, data)
plt.show()

早速前者で実行

いらない単語ばっかり。
じゃあ削除する方法を聞く。

すぐに回答が来る。

以下のように、ストップワードを除去することができます。

chat-gpt
import requests
from bs4 import BeautifulSoup
from collections import Counter
import matplotlib.pyplot as plt

# ストップワードのリスト
stop_words = ["a", "an", "the"]

# 指定したURLからHTMLを取得する
url = "http://example.com"
response = requests.get(url)
html = response.text

# HTMLをパースする
soup = BeautifulSoup(html, "html.parser")

# 本文を抽出する
text = soup.get_text()

# ストップワードを除去する
filtered_words = [word for word in text.split() if word not in stop_words]

# 単語の頻度を計算する
word_counts = Counter(filtered_words)

# 単語の頻度の上位30件を取得する
most_common_words = word_counts.most_common(30)

# ラベルとデータを取得する
labels, data = zip(*most_common_words)

# 棒グラフを描画する
plt.bar(labels, data)
plt.show()

上記のプログラムでは、本文から単語を抽出し、ストップワードを除去するために、リスト内包表記を使用しています。また、単語の頻度を計算する前に、ストップワードを除去するようにしています。

このようにすることで、ストップワードを除去した単語の頻度を計算することができます。

chat-gpt

うーん肝心のストップワードも知りたい。

英語で一般的なストップワードとして、以下のような単語があります。
・a
・an
・and
・are
(省略)

上記の単語をすべて除去することで、より正確な単語の頻度を求めることができます。また、これらの単語だけでなく、特定のドメインやアプリケーションにおいて特に意味のない単語も、ストップワードとして扱うこともできます。

chat-gpt

ありがたい。
早速コピペ

(回答の書式だとプログラムにそのままならないので変換)

これでよいかと実行。

げっ。。これは記事じゃない。
よく見直すとURLをurl = "http://example.com"にしていた。。
もしかするとうまくいくかもしれない、でもせっかくなのでこの変な文字を除去したい。

早速回答

以下のように、HTMLから本文を抽出する際に、CSSを除去することができます。

chat-gpt
Copy codeimport requests
from bs4 import BeautifulSoup
from collections import Counter
import matplotlib.pyplot as plt

# ストップワードのリスト
stop_words = ["a", "an", "the"]

# 指定したURLからHTMLを取得する
url = "http://example.com"
response = requests.get(url)
html = response.text

# HTMLをパースする
soup = BeautifulSoup(html, "html.parser")

# styleタグを削除する
for tag in soup.find_all('style'):
    tag.decompose()

# scriptタグを削除する
for tag in soup.find_all('script'):
    tag.decompose()

# 本文を抽出する
text = soup.get_text()

# ストップワードを除去する
filtered_words = [word for word in text.split() if word not in stop_words]

# 単語の頻度を計算する
word_counts = Counter(filtered_words)

# 単語の頻度の上位30件を取得する
most_common_words = word_counts.most_common(30)

# ラベルとデータを取得する
labels, data = zip(*most_common_words)

# 棒グラフを描画する
plt.bar(labels, data)
plt.show()

上記のプログラムでは、本文を抽出する前に、HTMLからstyleタグとscriptタグを削除しています。これにより、CSSやJavaScriptが含まれている部分を除去することができます。

また、本文を抽出する方法としては、soup.get_text() の他に、以下のような方法もあります。

soup.stripped_strings: HTMLからタグを除去した文字列のリストを返す
soup.find(): HTMLから指定したタグを検索し、その中の文字列を返す

これらの方法も、HTMLから本文を抽出する際に使用することができます。

chat-gpt

上記だと、URLがサンプルになっている、表示が重なる、ストップワードが不足しているのでその部分は教えてもらったとおりになおして実行。

すると。。

単語を小文字にを統一したほうがよくなりそうとか色々要望出てきそうですがとりあえずここまで。

さて、ここからが所感です。

CHAT-GPTをプログラミングに活用することについて(所感)

ざっくりまとめると以下の感じ。

だいたい当たっている。
わからないコマンドは教えてくれる(例表示角度調整)
逆に指示以外の配慮はしない(ストップワードや小文字統一等)

要するに使えるかといえば使える。初心者ほど使える。なぜなら調べるのが楽。
ベテランレベルにはなっていない。なぜなら細かい配慮してくれないのであとから見直し必要。
うまく使うならば基本を出してあとはベテランならば追加していけば加速作業できる。(上記の例だとストップワード入力されていないなとか気がつくのでその時点で追加するだけでいい)

要するにプログラミングでも楽できるツールでした。
(代替えまでではないけど効率UPするにはもってこいです。)



いいなと思ったら応援しよう!