naokimatui commited on
Commit
563fb84
·
verified ·
1 Parent(s): 2d2e91c

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +16 -7
  2. requirements.txt +2 -1
app.py CHANGED
@@ -29,10 +29,10 @@ st.markdown("""
29
  """, unsafe_allow_html=True)
30
 
31
  # タイトルと説明
32
- st.title("💃 お嬢様語変換アプリ")
33
  st.markdown("""
34
  ごきげんよう!このアプリは、皆様の入力したテキストをエレガントなお嬢様語に変換いたしますわ!
35
- テキストを入力して「変換するわ!」ボタンを押してくださいませ。おほほほほ!
36
  """)
37
 
38
  # サイドバーでエレガント度を設定
@@ -43,15 +43,20 @@ elegance_level = st.sidebar.slider("エレガント度", min_value=1, max_value=
43
  # プロンプトをエレガント度に応じて設定(日本語特化)
44
  prompt_templates = {
45
  1: "以下のテキストを丁寧で上品な日本語に変換してください。自然でエレガントな表現を使ってください:\n{}",
46
- 2: "以下のテキストをお嬢様風のエレガントな日本語に変換してください。「~ですわ」「おほほ」などを適度に使い、華やかで優雅な口調にしてください:\n{}",
47
- 3: "以下のテキストを非常に誇張されたお嬢様風の日本語に変換してください。「~ですわよ!」「おほほほほ!」を多用し、華麗でドラマチックな表現にしてください:\n{}"
48
  }
49
 
50
  # LLMのロード(初回起動時にモデルをキャッシュ)
51
  @st.cache_resource
52
  def load_model():
53
  try:
54
- return pipeline("text-generation", model="rinna/japanese-gpt2-small", device=-1) # CPU使用
 
 
 
 
 
55
  except Exception as e:
56
  st.error(f"モデルロードに失敗しましたわ!: {str(e)}")
57
  return None
@@ -59,7 +64,7 @@ def load_model():
59
  generator = load_model()
60
 
61
  # ユーザー入力
62
- input_text = st.text_input("テキストを入力してくださいませ(例: こんにちは、元気?)", "なんでや、阪神関係ないやろ!")
63
 
64
  # 変換ボタン
65
  if st.button("変換するわ!"):
@@ -74,12 +79,16 @@ if st.button("変換するわ!"):
74
  # LLMでテキスト生成
75
  try:
76
  output = generator(prompt, max_length=150, num_return_sequences=1,
77
- do_sample=True, temperature=0.7, top_p=0.9,
78
  pad_token_id=generator.tokenizer.pad_token_id,
79
  bos_token_id=generator.tokenizer.bos_token_id,
80
  eos_token_id=generator.tokenizer.eos_token_id)
81
  converted_text = output[0]["generated_text"].split(prompt)[-1].strip()
82
 
 
 
 
 
83
  # 結果表示
84
  st.subheader("変換結果")
85
  st.markdown(f"**入力**: {input_text}")
 
29
  """, unsafe_allow_html=True)
30
 
31
  # タイトルと説明
32
+ st.title("💃 お嬢様語変換アプリ💃 ")
33
  st.markdown("""
34
  ごきげんよう!このアプリは、皆様の入力したテキストをエレガントなお嬢様語に変換いたしますわ!
35
+ テキストを入力して「変換するわ!」ボタンを押してくださいませ。どんな言葉もお嬢様語に変換いたしますわ。おほほほほ!
36
  """)
37
 
38
  # サイドバーでエレガント度を設定
 
43
  # プロンプトをエレガント度に応じて設定(日本語特化)
44
  prompt_templates = {
45
  1: "以下のテキストを丁寧で上品な日本語に変換してください。自然でエレガントな表現を使ってください:\n{}",
46
+ 2: "以下のテキストをお嬢様風のエレガントな日本語に変換してください。「~ですわ」「おほほ」などを適度に使い、華やかで優雅な口調にしてください。例: 「こんにちは」→「ごきげんよう、お元気ですわ?」:\n{}",
47
+ 3: "以下のテキストを非常に誇張されたお嬢様風の日本語に変換してください。「~ですわよ!」「おほほほほ!」を多用し、華麗でドラマチックな表現にしてください。例: 「こんにちは」→「ごきげんようでございますわ!なんともお元気でいらっしゃいますの?おほほほほ!」:\n{}"
48
  }
49
 
50
  # LLMのロード(初回起動時にモデルをキャッシュ)
51
  @st.cache_resource
52
  def load_model():
53
  try:
54
+ # rinna/japanese-gpt2-small をロード
55
+ pipe = pipeline("text-generation", model="rinna/japanese-gpt2-small", device=-1) # CPU使用
56
+ # トークナイザーのパディング設定
57
+ if pipe.tokenizer.pad_token_id is None:
58
+ pipe.tokenizer.pad_token_id = pipe.tokenizer.eos_token_id
59
+ return pipe
60
  except Exception as e:
61
  st.error(f"モデルロードに失敗しましたわ!: {str(e)}")
62
  return None
 
64
  generator = load_model()
65
 
66
  # ユーザー入力
67
+ input_text = st.text_input("テキストを入力してくださいませ(例: こんにちは、元気?)", "なんでや、阪神関係ないやろ - 入力: なんでや、阪神関係ないやろ!")
68
 
69
  # 変換ボタン
70
  if st.button("変換するわ!"):
 
79
  # LLMでテキスト生成
80
  try:
81
  output = generator(prompt, max_length=150, num_return_sequences=1,
82
+ do_sample=True, temperature=0.9, top_p=0.95,
83
  pad_token_id=generator.tokenizer.pad_token_id,
84
  bos_token_id=generator.tokenizer.bos_token_id,
85
  eos_token_id=generator.tokenizer.eos_token_id)
86
  converted_text = output[0]["generated_text"].split(prompt)[-1].strip()
87
 
88
+ # 後処理:お嬢様らしさを強調
89
+ if elegance_level >= 2 and not converted_text.endswith("おほほ"):
90
+ converted_text += " おほほ!" if elegance_level == 2 else " おほほほほ!"
91
+
92
  # 結果表示
93
  st.subheader("変換結果")
94
  st.markdown(f"**入力**: {input_text}")
requirements.txt CHANGED
@@ -1,3 +1,4 @@
1
  streamlit==1.24.0
2
  transformers==4.44.2
3
- torch==2.0.1
 
 
1
  streamlit==1.24.0
2
  transformers==4.44.2
3
+ torch==2.0.1
4
+ sentencepiece==0.2.0