• 現代ファンタジー
  • 現代ドラマ

実験頑張っています

みなさんこんばんは功琉偉つばさです。 前回、ランダム生成が無理だと思ったって話をしたんですけど、AIをつかってパソコンに無理やりやってもらうことにしました。そうして組み立てたプロンプトがこちら

import random
import re
import requests
from bs4 import BeautifulSoup
from janome.tokenizer import Tokenizer

# Wikipediaから日本語の単語を収集する関数(小説用の単語を優先的に収集)
def fetch_novel_related_words_from_wikipedia():
# WikipediaのランダムなページURL
url = "https://ja.wikipedia.org/wiki/Special:Random"

words = []
while len(words) < 20:
try:
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
paragraphs = soup.find_all('p')
for paragraph in paragraphs:
text = paragraph.get_text()
# 文字列をひらがなに変換して単語として抽出
hiragana_words = re.findall(r'[\u3041-\u3096ぁ-ゖァ-ヶ]+', text)
words.extend(hiragana_words)
if len(words) >= 20:
break
if len(words) >= 20:
break
except Exception as e:
print(f"Error fetching Wikipedia page: {e}")

return words[:20] # 最大20単語を取得する

# 収集した単語をひらがなに変換して追加
def convert_to_hiragana(words):
t = Tokenizer()
hiragana_words = []
for word in words:
tokens = t.tokenize(word)
hiragana_word = ''.join([token.reading or token.surface for token in tokens])
hiragana_words.append(hiragana_word)
return hiragana_words

# 生成したひらがな文字列が意味のある文かどうかを判定する関数
def is_meaningful(sentence, novel_words):
# 簡単な判定ロジック(本来はより厳密な方法が必要です)
if len(sentence) < 4:
return False
tokens = tokenizer.tokenize(sentence)
for token in tokens:
if token.base_form in novel_words:
return True
return False

# ひらがな文字列を生成する関数
def generate_random_hiragana_string(length):
hiragana_chars = [chr(i) for i in range(0x3041, 0x3097)] # ひらがなのUnicode範囲
return ''.join(random.choices(hiragana_chars, k=length))

# メインの実行部分
if __name__ == '__main__':
# Wikipediaから小説用の単語を取得
wikipedia_novel_words = fetch_novel_related_words_from_wikipedia()
# 取得した単語をひらがなに変換してリストに追加
hiragana_novel_words = convert_to_hiragana(wikipedia_novel_words)

# 既存の小説用単語リスト(サンプル)
existing_novel_words = [
'小説', '物語', '主人公', '登場人物', '情景', '展開', 'ドラマ', '感動', '緊張', '秘密',
'想像', '悩み', '絆', '愛情', '切ない', '微笑む', '涙', '喜び', '哀しみ', '記憶'
]

# 小説用単語リストに追加
existing_novel_words.extend(hiragana_novel_words)

# 形態素解析器の準備
tokenizer = Tokenizer()

# novel_words を定義する
novel_words = set(existing_novel_words)

# 処理回数のカウンター
trials = 0
# 生成した意味のある文の数
meaningful_sentences_count = 0

try:
while trials < 10000:
random_string = generate_random_hiragana_string(random.randint(5, 20))
if is_meaningful(random_string, novel_words):
print(f"意味のある文が生成されました: {random_string}")
meaningful_sentences_count += 1
trials += 1
except KeyboardInterrupt:
pass

print(f"試行回数: {trials}")
print(f"意味のある文の数: {meaningful_sentences_count}")

これはChat GPTにも手伝ってもらって…ほぼやってもらって作ったやつなんですけど、100000回くらい演算しても意味のある文章にはなりませんでした…

これからもトライアンドエラーの精神で頑張ってみます! コンピューターで自動化して頑張ります!

1件のコメント

  • 面白そうですね!!

    若者には(多分)「無限の時間」がありますので、(コンピュータさん)頑張ってください♪♪♪
コメントの投稿にはユーザー登録(無料)が必要です。もしくは、ログイン
投稿する