Loading...

Python dict indexing보다는 list indexing을 사용해야하는 이유

dict에서 key에 접근하는 시간과 list에서 index로 접근하는 시간은 O(1)인데, dict의 경우 hash로 구현되어 있어서 key,value가 많은 경우 hash collision으로 인해 list indexing보다 시간이 더 걸릴 수 있다. 만약 시간초과 판정을 받는다면 dict indexing을 list indexing으로 바꿀 수 있는지 체크해보자. https://deepdata.tistory.com/960 문자열 해싱(hashing) 기본 개념 배우기 String Hashing - Algorithms for Competitive Programming (cp-algorithms.com) String Hashing - Algorithms for Competitive Programming..

2024. 3. 21. 23:20

passage의 indexing을 도와주는 FAISS 라이브러리 소개

1. introduction facebook에서 만든 fast approximation open source library 효과적인 similarity search와 dense vector의 clustering을 지원함 사용이 편하고 어떤 size에도 가능하지만 large scale에 특화되어 있다고함 C++가 backbone이지만 python으로 wrapping되어 있어서 python으로도 쉽게 사용가능 passage vector의 indexing과정을 도와준다고함 2. 사용방법 train data로 passage vector를 준비하고 index train을 해야함 단순히 random하게 clustering을 하는 것이 아니라 데이터의 분포를 보고 적절하게 clustering을 해야함 이런 적절한 c..

2024. 3. 20. 03:07

질문과 관련있는 지문을 찾는 Maximum Inner Product Search

1. Motivation dense embedding을 이용한 retrieve의 원리는 굉장히 간단한데 passage를 미리 embedding해놓고 question이 들어오면 embedding을 한 뒤 미리 embedding한 passage들과 similarity score를 전부 계산한 다음 가장 높은 score를 가진 passage를 출력 similarity score는 nearest neighbor에서 distance가 가까울수록 높은 점수를 부여하는 방식을 생각해볼 수 있고 inner product가 높을수록 높은 점수를 부여하는 방식을 생각해볼 수 있다. 사람이 이해하기에 nearest search가 위치 거리측면에서 생각하면서 이해하기 쉽다 근데 학습이나 효율성측면에서는 nearest neig..

2023. 5. 28. 00:09

SQL 코딩테스트 복기 -문자열 부분수정(마스킹)하는 방법(concat + substr)-

1. 문자열 바꾸기 문자열의 앞 두글자를 **로 대체해서 출력하라고 하면 어떻게 해야할까? 구체적으로 위와 같이 주어졌을때, 각 문자열 값들의 앞 두글자를 **로 바꾸고 싶다. select concat('**',substr(name,3)) as user_id from test; concat과 substr 함수를 이용해서 바꿀 수 있다 아니 모르면 못풀잖아 2. concat concat(str1,str2,str3,...) 연결할 문자열들을 나열해서, 하나의 문자열로 만들어준다 3. substr substr(str,pos,len) str을 pos부터 시작해서 len만큼 추출 pos는 추출할 문자열 str의 시작 위치 index index는 1부터 시작하며 다음과 같이 음수 인덱스도 가능하다. len은 생략가..

반드시 기억해야하는 파이썬 indexing 특징

a[3:-3]? a = [1,2,3,4,5,6] result = [a[i:j] for i in range(1,4) for j in range(-3,-1)] cnt = 0 for element in result: if len(element)

2021. 11. 27. 21:28

Numpy 기초 2편

1. reshape 원소 개수는 바꾸지 않고 array의 shape를 변경함 원소 개수는 shape의 모든 축의 곱 np.array().reshape() dim에 -1을 포함시키면 그 부분은 파이썬이 데이터 수에 맞게 알아서 잡아준다 2. flatten 다차원 array를 1차원 array로 만들어준다 (2,2,4)의 3차원 array를 (16,)의 1차원 array로 flatten 시킴 원소의 수인 모든 shape의 곱이 16으로 일정해야함 3. indexing 리스트와는 다르게 [a,b]의 직관적인 indexing을 제공함 indexing으로 값 변경도 가능 0행 2열의 원소를 test_exampe[0,2]로 불러올 수 있음 0,0의 원소인 1을 test_example[0,0]=10으로 변경 가능 4..