|
import re |
|
|
|
from openai import OpenAI |
|
|
|
REQUIREMENT_ = """以下の箇条書きのデータ群を分析し、「生データ」か「加工データ」かを推定してください。加工データである場合、スラッシュ(/)区切りで加工過程の説明も追記してください。 |
|
生データ: 収集されたままの加工されていないデータ |
|
加工データ: 処理・変換され理解しやすくされたデータ""" |
|
|
|
EXAMPLE_QUESTION_ = """1. 2024年1-8月の倒産は、ラーメン店が44件(前年同期比57.1%増) |
|
2. ラーメン店は2013年に29件を記録した |
|
3. 2009年からの統計では同期間で最多だった2020年の31件""" |
|
|
|
EXAMPLE_ANSWER_ = """1. 加工データ / 前年との比較を割合で示すことで理解しやすくされています。 |
|
2. 生データ |
|
3. 加工データ / 過去のデータと比べて数が最も多かったことを示すことで数値の理解を助けています。""" |
|
|
|
|
|
def get_raw_data_info(client: OpenAI, data_texts, model_name='gpt-4o-mini-2024-07-18'): |
|
message = "\n".join([f'{i+1}. {q}' for i, q in enumerate(data_texts)]) |
|
response = client.chat.completions.create( |
|
messages=[ |
|
{"role": "user","content": REQUIREMENT_}, |
|
{"role": "user","content": EXAMPLE_QUESTION_}, |
|
{"role": "assistant","content": EXAMPLE_ANSWER_}, |
|
{"role": "user","content": message} |
|
], |
|
model=model_name, |
|
temperature=0, |
|
) |
|
res_text = response.choices[0].message.content |
|
predicted_data = re.findall(r'\d{1,2}\. (.+)\n*', res_text) |
|
predicted_data = [[d_.strip() for d_ in d.split('/')] for d in predicted_data] |
|
return predicted_data |
|
|