LQ-KBERT-Base: Crypto Market Korean Sentiment & Action Signal Classifier

가상자산 AI Agent 데이터 분석 플랫폼, LangQuant에서 공개한 한국어 금융 커뮤니티/뉴스 투자심리 분류 모델입니다.
klue/bert-base를 백본으로 하고, 가상자산 관련 한국어 데이터셋 10만 건 이상을 전처리하여 파인튜닝했습니다.
모델은 문장 단위 입력(≤200자)에 대해 투자 심리·행동·감정·확신도·관련성·유해성을 동시에 예측합니다.


모델은 아웃풋은 다음과 같습니다.

{
  "sentiment_strength": "strong_pos | weak_pos | neutral | weak_neg | strong_neg",
  "action_signal": "buy | hold | sell | avoid | info_only | ask_info",
  "emotions": ["greed","fear","confidence","doubt","anger","hope","sarcasm"],
  "certainty": 0.0 ~ 1.0,
  "relevance": 0.0 ~ 1.0,
  "toxicity": 0.0 ~ 1.0
}

Labeling Guidelines

Sentiment Strength

  • strong_pos: 급등 확신, "가즈아", "무조건 간다".
  • weak_pos: 조심스러운 낙관, "반등 가능", "괜찮을 듯".
  • neutral: 단순 정보/공지/잡담.
  • weak_neg: 완곡한 부정, "조정 올 듯", "관망".
  • strong_neg: 폭락·패닉, "나락", "망함", "해킹/제재".

Action Signal

  • buy: 매수/진입 지시, "지금 산다", "롱".
  • hold: 보유 유지/관망, "존버", "유지".
  • sell: 매도/청산, "익절", "손절", "정리".
  • avoid: 회피/위험 경고, "가지마", "스캠", "위험".
  • info_only: 단순 정보 전달 (뉴스/공지).
  • ask_info: 질문/탐색, "들어가도 돼?", "왜 떨어져?".

Emotions (다중 선택)

  • greed 탐욕
  • fear 두려움
  • confidence 확신
  • doubt 의심
  • anger 분노
  • hope 희망
  • sarcasm 풍자

Certainty

  • 0.2~0.4: 질문·탐색·밈 (낮음)
  • 0.4~0.6: 완곡한 의견 (중간)
  • 0.6~0.8: 수치·근거·공식성 (높음)
  • 0.8~1.0: 강한 단정·지시 (매우 높음)

Relevance

  • 0.7~1.0: 직접적인 투자/시장 관련
  • 0.4~0.7: 간접 관련 (업계/인물/기술)
  • 0.0~0.3: 무관/잡담/밈

Toxicity

  • 욕설·모욕·비하 강도에 따라 0~1.
  • 투자 의미와는 별도로 독립적으로 평가.

Sentiment Strength vs Action Signal

  • Sentiment Strength

    • 투자 심리의 강도 (긍정 ↔ 부정).
    • 가격 전망의 톤에 집중.
  • Action Signal

    • 실제 투자 행동 의도/지시.
    • 매수/매도/보유/회피/질문/정보.

How to use the model

import torch, json
from transformers import AutoTokenizer, AutoModel

repo_or_dir = "LangQuant/LQ-Kbert-base" 
texts = [
    "비트코인 조정 후 반등, 투자심리 개선",
    "환율 급등에 증시 변동성 확대",
    "비트 그만 좀 내려라 진짜..",
    "폭락ㅠㅠㅜㅠㅜ 다 팔아야할까요?"
]


tokenizer = AutoTokenizer.from_pretrained(repo_or_dir)
model = AutoModel.from_pretrained(repo_or_dir, trust_remote_code=True)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device).eval()


enc = tokenizer(texts, return_tensors="pt", padding=True, truncation=True, max_length=200).to(device)
with torch.inference_mode():
    out = model(**enc)

IDX2SENTI = {0:"strong_pos",1:"weak_pos",2:"neutral",3:"weak_neg",4:"strong_neg"}
IDX2ACT   = {0:"buy",1:"hold",2:"sell",3:"avoid",4:"info_only",5:"ask_info"}
EMO_LIST  = ["greed","fear","confidence","doubt","anger","hope","sarcasm"]


for i, t in enumerate(texts):
    senti = int(out["logits_senti"][i].argmax().item())
    act   = int(out["logits_act"][i].argmax().item())
    emo_p = torch.sigmoid(out["logits_emo"][i]).tolist()
    reg   = torch.clamp(out["pred_reg"][i], 0, 1).tolist()
    emos = [EMO_LIST[j] for j,p in enumerate(emo_p) if p >= 0.5]

    result = {
        "text": t,
        "pred_sentiment_strength": IDX2SENTI[senti],
        "pred_action_signal":      IDX2ACT[act],
        "pred_emotions":           emos,
        "pred_certainty":  float(reg[0]),
        "pred_relevance":  float(reg[1]),
        "pred_toxicity":   float(reg[2]),
    }
    print(json.dumps(result, ensure_ascii=False))

Examples

문장 sentiment_strength action_signal 해석
"개떡상이여 " strong_pos buy 강한 상승 확신 + 즉시 매수 의도
"여기선 관망이 맞다" weak_neg hold 부정적이지만 보유 유지 선택
"들어가도 될까?" weak_pos ask_info 조심스러운 낙관, 매수 탐색 질문
"해킹 터짐, 비상. 접근 금지" strong_neg avoid 강한 부정 + 회피 권고
"업데이트 공지 나왔습니다" neutral info_only 단순 정보 제공, 행동 없음

Citation

@misc{langquant2025lkbert,
  title  = {LQ-KBERT-Base: Crypto Market Korean Sentiment & Action Signal Classifier},
  author = {LangQuant},
  year   = {2025},
  url    = {https://huggingface.co/langquant/LQ-Kbert-base}
}

Disclaimer

이 모델은 학술 연구 및 실험용으로만 제공됩니다.
본 모델의 출력은 금융/투자 자문으로 간주될 수 없으며,
발생하는 모든 결과에 대해 LangQuant는 책임을 지지 않습니다.
Downloads last month
5,427
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for LangQuant/LQ-Kbert-base

Base model

klue/bert-base
Finetuned
(160)
this model