Skip to content

Commit 24d6a7f

Browse files
committed
✨ Use comments to sort translations as well
1 parent 85dcb04 commit 24d6a7f

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

scripts/rank_translations_llm.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,16 @@
5959
* 쉽게쉽게 도란도란, 통쾌하게 시끌벅적, 차근차근 왁자글, 신나게 재미있게.
6060
"""
6161

62-
def build_prompt(jargon_name: str, translations: List[str]) -> str:
62+
def build_prompt(jargon_name: str, translations: List[str], comments: List[str]) -> str:
6363
lines = [
64-
"다음 용어의 쉬운 전문용어 번역 후보들을 취지에 맞게 좋은 것부터 순서를 정해봐. 순서는 첫 줄에 쉼표로 구분해서 0부터 시작해서 출력해. 용어들을 누락하면 안되고, 모든 단어들을 정렬해야 해.",
64+
"너는 컴퓨터 분야의 모든 개념을 완벽하게 파악하고 있는 전문가야. 영문 전문용어를 한국어 쉬운전문용어로 제안한 것들이 다음과 같아. 해당 개념을 가장 잘 전달하는 쉽고 직관적인 순서대로 나열해줘. 기존의 일상적이지 않은 한문투 전문용어는 바람직하지 않아. 대신에 누구나 쉽게 그 개념을 직감할 수 있는 용어들이 바람직한 쉬운전문용어야. 한국어 특성(풍부한 의태어, 의성어, 형용사, 부사)을 활용한 용어나 시적인 표현도 해당 개념을 잘 전달한다면 아무 문제 없어","순서는 첫 줄에 쉼표로 구분해서 0부터 시작해서 출력해. 용어들을 누락하면 안되고, 모든 단어들을 정렬해야 해.",
6565
"- 예시 출력: 2,0,1",
6666
f"- 전문용어: {jargon_name}",
6767
"- 쉬운 전문용어 번역 목록:",
6868
]
6969
for idx, t in enumerate(translations):
7070
lines.append(f" {idx}. {t}")
71+
lines.append("- 댓글 목록:")
7172
return "\n".join(lines)
7273

7374

@@ -98,6 +99,7 @@ def main():
9899
parser = argparse.ArgumentParser(description="Rank translations per jargon with OpenRouter")
99100
parser.add_argument("--jargon_csv", default=os.path.join("jargon.csv"))
100101
parser.add_argument("--translation_csv", default=os.path.join("translation.csv"))
102+
parser.add_argument("--comment_csv", default=os.path.join("comment.csv"))
101103
parser.add_argument("--output_csv", default=os.path.join("llm_ranks.csv"))
102104
parser.add_argument("--rate_limit_sec", type=float, default=0.5, help="sleep between LLM calls")
103105
args = parser.parse_args()
@@ -113,6 +115,7 @@ def main():
113115
# Load CSVs
114116
jargons = pd.read_csv(args.jargon_csv)
115117
translations = pd.read_csv(args.translation_csv)
118+
comments_df = pd.read_csv(args.comment_csv)
116119

117120
# minimal columns validation
118121
for col in ["id", "name"]:
@@ -125,6 +128,8 @@ def main():
125128
# Group translations by jargon_id
126129
grouped = translations.groupby("jargon_id")
127130

131+
grouped_comments = comments_df.groupby("jargon_id") if "jargon_id" in comments_df.columns else None
132+
128133
# Load existing progress if present
129134
existing_map: Dict[str, int] = {}
130135
if os.path.exists(args.output_csv):
@@ -154,6 +159,12 @@ def write_progress() -> None:
154159
names = group["name"].fillna("").astype(str).tolist()
155160
tids = group["id"].astype(str).tolist()
156161

162+
comments_list: List[str] = []
163+
if grouped_comments is not None and "content" in comments_df.columns:
164+
if jargon_id in grouped_comments.groups:
165+
comment_rows = grouped_comments.get_group(jargon_id)
166+
comments_list = comment_rows["content"].fillna("").astype(str).tolist()
167+
157168
# Skip GPT if every translation in this group already ranked
158169
if all(tid in existing_map for tid in tids):
159170
continue
@@ -169,9 +180,9 @@ def write_progress() -> None:
169180
continue
170181

171182
jargon_name = jargon_name_by_id.get(jargon_id, "")
172-
prompt = build_prompt(jargon_name, names)
183+
prompt = build_prompt(jargon_name, names, comments_list)
173184

174-
tqdm.write(f"Jargon: {jargon_name}, Translations: {names}")
185+
tqdm.write(f"Jargon: {jargon_name}, Translations: {names}, Comments: {comments_list}")
175186
try:
176187
response = chat.invoke([SystemMessage(content=SYSTEM_PROMPT), HumanMessage(content=prompt)])
177188
text = getattr(response, "content", "") or str(response)

0 commit comments

Comments
 (0)