목록전체 글 (62)
언어 전공자의 NLP 로그
1. 기획 의도 처음에는 챗봇과 감성 분석 기능을 합쳐 구현해보자는 흔한 기획에서 출발하였으나, 시장 조사를 거치면서 이 아이디어가 굉장히 흔한 프로젝트 주제라는 걸 알게 됐다. 심지어 사용하려고 했던 aihub의 감성 대화 말뭉치나 감정이 태깅된 여러 데이터셋을 바탕으로 multi-class classification을 구현한 블로그 글도 쉽게 찾을 수 있었던 걸 보고 적잖은 충격을 받았다. 그러나 이미 제안서는 넘어간 상태이고, 앞으로 2달 동안 프로젝트를 진행해나가야 하는 입장에서 반드시 차별점을 두어야 했다. 그나마 다행으로 우리는 비교적 최근 fine-tuning이 풀린 (무려 지난주!) gpt 3.5 turbo를 사용할 수가 있다. 그래서 gpt fine-tuning 혹은 prompt engi..

Beyond Goldfish Memory: Long-Term Open-Domain Conversation 이전 대화를 요약하고 불러올 수 있는 기법을 도입했더니 SOTA를 기록한 표준 인코더-디코더 구조보다 뛰어난 성능을 보였다. SOTA 모델이라 할지라도 (당시 Meena, BlenderBot) 128 토큰 수 제한으로 장기 기억 능력이 부족 Multi-Session Chat (MSC) -> 5 세션에 걸친 사람과 사람 사이 대화로, 14번의 발화로 구성되며, 세션마다 며칠/몇 시간 (1-7시간 혹은 1-7일)의 텀이 주어진다. 세션이 진행됨에 따라 화자들은 앞선 세션에서 다뤘던 내용들을 공유하며 대화를 이어간다. 이전 대화 내역을 raw한 형태로 저장하는 방식에는 2가지 단점이 있다. 맥락 정보가 주..
https://level.goorm.io/exam/195689/%EA%B5%AC%EB%A6%84-%EC%B0%BE%EA%B8%B0-%EA%B9%83%EB%B0%9C/quiz/1 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io n, k = map(int, input().split()) m = [] dic = {} # 매트릭스 받아오기 for i in range(n): m.append(list(map(int, input().split()))) # k값과 그 개수를 담을 딕셔너리 for i in range(0, 9): dic[i]=0 # 매트릭스 m을 0으로 한 겹 둘러싼다. padded_m = [[0]*(n+2)] for i in m: padd..
https://level.goorm.io/exam/195687/%EC%9D%B4%EC%A7%84%EC%88%98-%EC%A0%95%EB%A0%AC/quiz/1 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io n, k = map(int, input().split()) ns = list(map(int, input().split())) ns = sorted(ns, reverse=True) ns_bin = [] ns_count = [] for i in ns: ns_bin.append(format(i, 'b')) for i in ns_bin: ns_count.append(i.count('1')) stack = [] for i in range(max(..
Disclaimer : 본 문서는 "Linear Algebra and Its Applications, 3rd Ed., D. C. Lay"를 기반으로 inflearn에서 '조범희' 강사님이 강의하신 선형대수학개론을 바탕으로 작성하였습니다. 1-3. Vector Equations Algebraic properties of $Rn$ u+v = v+u (u+v)+w = u+(v+w) u+0 = 0+u = u u+(-u) = -u+u = 0 c(u+v) = cu+cv (c+d)u = cu+du c(du) = (cd)u 1u = u Linear Combinations \y=c1v1+c2v2+...+cpvp\ where $vp$ is vector and $cp$ is weight Whether certain vect..
https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(priorities, location): q = deque(priorities) target_value=q[location] target_count=0 while q: # 길이가 음수가 되면 다시 오른쪽 끝으로 보낸다. if location < 0 : location += len(q) # 가장 왼쪽의 값이 최대가 나올 때..
https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(s): answer = True stack = [] # 개수 비교 if s.count(')') != s.count('('): return False # 쉬운 쌍 전처리 s = s.replace('()', '') # 간단한 케이스 거르기 if len(s) == 0: return True # 시작과 끝 먼저 점검 if s.startswith(')') or s.endswith('..
https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import math def solution(progresses, speeds): answer = [] stack = [] days_remaining = [0] * len(progresses) # 남은 날짜 수 계산 for i in range(len(progresses)): days_remaining[i] = math.ceil((100-progresses[i]) / speeds[i]) # 스택 구..