5. ngram
def ngram(n, string):
result = []
for i in range(0, len(string) - n + 1):
substring = string[i:i+n]
result.append(substring)
return result
6. IoU
Intersection over Union
| A ⋂ B | / | A ⋃ B |
n(3, SPARCS) = SPA, PAR, ARC, RCS
n(3, SUPARCS) = SUP, UPA, PAR, ARC, RCS
⋂ = ARC, PAR, RCS
⋃ = ARC, PAR, RCS, SPA, SUP, UPA
IoU = 3 / 6 = 50%
8. 해시 함수
h: X → [0, 2^32)
x = y 이면 h(x) = h(y)
x ≠ y 이면 h(x) ≠ h(y) (확률: 1 – 1/2^32)
9. hash
def hash(string):
result = 0
for character in string:
number = ord(character)
result = result * 33 + number
return result % 256
10. MinHash
A와 B의 IoU를 구하는 대신
s(X) = X의 모든 원소의 hash 중 가장 작은 k개
s(X)는 X의 랜덤 샘플
C = s(s(A) ⋃ s(B))는 A ⋃ B의 랜덤 샘플
D = (A ⋂ B) ⋂ C = (s(A) ⋂ s(B)) ⋂ C
IoU ~ |D| / |C|
11. minhash
def minhash(k, seq):
hashed = (hash(item) for item in seq)
return nsmallest(k, hashed)