+++ README.md
... | ... | @@ -0,0 +1,1 @@ |
1 | +# 생성형AI를-활용한-비정형-데이터-정제-테스트 |
+++ classifier_using_llm.py
... | ... | @@ -0,0 +1,64 @@ |
1 | +from enum import Enum | |
2 | +from pydantic import BaseModel, constr | |
3 | + | |
4 | +import pandas as pd | |
5 | +import outlines | |
6 | +import torch | |
7 | + | |
8 | + | |
9 | +examples = [ | |
10 | + ("대학로 복현오거리에서 경대교방향 원활.", "|대학로 복현오거리|, |경대교방향|, |원할|◉"), | |
11 | + ("<긴급>구마로 본리네거리에서 동본리네거리방향 동본리네거리 130m 못간 지점 가장자리차로 택시, 승용차 사고", "|구미로 본리네거리|, |동본리네거리|, |사고|◉"), | |
12 | + ("국채보상로 청구삼거리에서 MBC네거리방향 교통량은 많으나 원활.", "|국체보상로 청구 삼거리|, |MBC네거리방향|, |원할|◉"), | |
13 | + ("서대구로 북부정류장에서 평리네거리방향 평리지하차도 오르막 지점 가장자리차로 지프차 고장으로 정차중.", "|서대구로 북부정류장|, |평리네거리|, |기타|◉"), | |
14 | + ("달구벌대로 수성구청역네거리에서 만촌네거리방향 신호 주기에 따라 밀림, 풀림 반복.", "|달구벌대로 수성구청역네거리|, |만촌네거리|, |정체|◉"), | |
15 | + ("동부로 동대구역네거리에서 경북수협네거리방향 경북수협네거리 80m 못간 지점 가장자리차로 크레인 동원한 작업중.", "|동부역 동대구역네거리|, |경북수협네거리|, |공사|◉"), | |
16 | + ("국도 5호선 영주에서 안동구간 영주시 이산면 송리원주유소 부근 양방향 원활.", "|국도 5호선 영주|, |영주시 이산면 송리원 주유소|, |원할|◉"), | |
17 | + ("<긴급>구마로 본리네거리에서 성당네거리방향 동본리네거리 지나자마자 가장자리차로 사고로 보이는 승용차, 승합차 정차중.", "|구마로 본리네거리|, |성당네거리방향 동본리네거리|, |정체|◉"), | |
18 | + ("대학로 경북대학교 북문에서 복현오거리방향 복현오거리 신호 3,4번.", "|경북대학교 북문|, |복현오거리방향|, |정체|◉"), | |
19 | + ("안들림", "|알수 없음|◉"), | |
20 | +] | |
21 | + | |
22 | +# schema = """{ | |
23 | +# "$defs": { | |
24 | +# "상태": { | |
25 | +# "enum": ["원할", "사고", "정체", "공사", "기타"], | |
26 | +# "title": "상태", | |
27 | +# "type": "string" | |
28 | +# } | |
29 | +# }, | |
30 | +# "properties": { | |
31 | +# "location_from": {"maxLength": 10, "title": "Name", "type": "string"}, | |
32 | +# "location_to": {"title": "Age", "type": "integer"}, | |
33 | +# "상태": {"$ref": "#/$defs/상태"}, | |
34 | +# "strength": {"title": "Strength", "type": "integer"}\ | |
35 | +# }, | |
36 | +# "required": ["name", "age", "armor", "strength"], | |
37 | +# "title": "Character", | |
38 | +# "type": "object" | |
39 | +# }""" | |
40 | + | |
41 | + | |
42 | [email protected] | |
43 | +def labelling(to_label, examples): | |
44 | + """You are a sentiment-labelling assistant. | |
45 | + 신호 1번 == 원할 | |
46 | + 신호 1,2번 == 원할 | |
47 | + 신호 2번 == 정체 | |
48 | + 신호 3번 == 정체 | |
49 | + 신호 4번 == 정체 | |
50 | + {% for example in examples %} | |
51 | + {{ example[0] }} // {{ example[1] }} | |
52 | + {% endfor %} | |
53 | + {{ to_label }} // | |
54 | + """ | |
55 | + | |
56 | +model = outlines.models.transformers("mistralai/Mistral-7B-instruct-v0.2", device="cuda") | |
57 | + | |
58 | +df = pd.read_csv("data/최종데이터.csv") | |
59 | + | |
60 | +for row in df["내용"]: | |
61 | + print(f"input : {row}") | |
62 | + prompt = labelling(row, examples) | |
63 | + answer = outlines.generate.text(model)(prompt, max_tokens=80, stop_at="◉") | |
64 | + print(f"output : {answer}")(파일 끝에 줄바꿈 문자 없음) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?