LSA ์ฃผ์ ๋ชจํ์ด ๊ณ ์ฐจ์ TF-IDF ๋ฒกํฐ ๋ชจํ๊ณผ ์ด๋ ์ ๋๋ ์ผ์นํ๋์ง๋ฅผ ์ ์ฌ๋ ์ ์๋ฅผ ์ด์ฉํด์ ๋น๊ต
LSA๋ฅผ ๊ฑฐ์น ๋ชจํ(๋ค์ฐจ์์ ์ถ์)์ด ๊ณ ์ฐจ์ ๋ฒกํฐ๋ค๊ณผ ๋น์ทํ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค๋ฉด ์ข์ ๋ชจํ์ด๋ผ๊ณ ํ ์ ์๋ค. ๋ ์ฃผ์ ๋ฒกํฐ ์ฌ์ด ๊ฑฐ๋ฆฌ์ ๊ฐ๋์ ๋ฐ๋ผ ์ฃผ์ ์ ์๋ฏธ๊ฐ ์ผ๋ง๋ ๋น์ทํ์ง ์๋ ค์ค๋ค. ์ข์ ์ฃผ์ ๋ชจํ์ด๋ผ๋ฉด ๋น์ทํ ์ฃผ์ ์ ๋ฌธ์๋ค์ ๋ํ ๋ฒกํฐ ๊ณต๊ฐ ์์์ ์๋ก ๊ฐ๊น์ด ์์ด์ผํ๋ค.
LSA๋ ๋ฒกํฐ๋ค ์ฌ์ด์ ํฐ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์งํ์ง๋ง, ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ๋ฅผ ํญ์ ์ ์งํ์ง๋ ์๋๋ค. ๊ทธ๋ง์ LSA๋ ๋ฌธ์๋ค ์ฌ์ด์ ๊ด๊ณ์ ๋ํ ์ฑ๋ถ์ด ์์ค ๋ ์์๋ค. LSA์ SVD ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฃผ์ ๋ฒกํฐ ๊ณต๊ฐ์์ ๋ชจ๋ ๋ฌธ์์ ๋ถ์ฐ์ ์ต๋ํํ๋ ๊ฒ์ ์ด์ ์ ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
ํน์ง ๋ฒกํฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ NLP ํ์ดํ๋ผ์ธ์ ์ฑ๊ณผ์ ํฐ ์ํฅ์ ์ค๋ค. ๊ณ ์ฐจ์ ๊ณต๊ฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค. ๋ฐ๋ผ์ NLP ์ฑ์ง์ ๋ฐ๋ผ ๊ณ ๋ฅผ ์ ์์ด์ผ ํ๋ค.
- ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ ๋๋ ํ๊ท ์ ๊ณฑ๊ทผ ์ค์ฐจ (root mean square error, RMSE: 2-norm(L2))
- ์ ๊ณฑ ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ ๋๋ ์ ๊ณฑํฉ ๊ฑฐ๋ฆฌ (sum of squares distance, SSD: $L_{2}^{2}$)
- ์ฝ์ฌ์ธ ๊ฑฐ๋ฆฌ ๋๋ ๊ฐ ๊ฑฐ๋ฆฌ (angular distance) ๋๋ ํฌ์ ๊ฑฐ๋ฆฌ: ์ ๊ทํ๋ ๋ด์
- ๋ฏผ์ฝํ์คํค ๊ฑฐ๋ฆฌ (Minkowski distance): p-norm($L_p$)
- ๋ถ์ ๊ฑฐ๋ฆฌ (fractional distance) ๋๋ ๋ถ์ ๋ ธ๋ฆ: 0 < p < 1์ธ p-๋ ธ๋ฆ($L_p$)
- ์๊ฐ์ง ๊ฑฐ๋ฆฌ, ๋งจํดํผ ๊ฑฐ๋ฆฌ, ํ์ ๊ฑฐ๋ฆฌ, ์ ๋ ๊ฑฐ๋ฆฌ ํฉ (sum of absolute distance, SAD): 1-norm(L_1)
- ์์นด๋ฅด ๊ฑฐ๋ฆฌ (Jaccard distance), ์ญ ์งํฉ ์ ์ฌ๋(inverse set similarity)
- ๋งํ ๋ผ๋ ธ๋น์ค ๊ฑฐ๋ฆฌ (Mahalanobis distance)
- ๋ ๋ฒค์ํ
์ธ ๊ฑฐ๋ฆฌ ๋๋ ํธ์ง ๊ฑฐ๋ฆฌ (edit distance)
๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋ง๊ณ ์ ์ฌ์ ์์ ๋ง๋ operation์ ์ฌ์ํด์ผํ๋ค. ์ด๋ฌํ ์ฌ๋ฌ ์๋ณ ๊ฑฐ๋ฆฌ(pairwise distance)๋ค์ scikit-learn์๋ ์ ๊ตฌํ๋์ด ์๋ค.
(sklearn.metrics.pairwis)
๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฌ๋ ์ ์๋ก ๋ถํฐ ๊ณ์ฐํ ๋๋ ์๊ณ ์ ์ฌ๋ ์ ์๋ก ๋ถํฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ๋๋ ๋ง๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฑฐ๋ฆฌ๋ ์ ์ฌ๋ ์ ์์ ๋ฐ๋น๋กํ๋ค. ์ ์ฌ๋ ์ ์๋ ์ต์0, ์ต๋1 ๋ณดํต 0~1 ์ฌ์ด์ ๋ฒ์์ผ ๋๊ฐ ๋ง๋ค.
similarity = 1 / (1 + distance)
distance = (1 / similarity) - 1
์ ์ฌ๋ ์ ์๋ฟ๋ง ์๋๋ผ ๊ฑฐ๋ฆฌ๋ 0~1์ฌ์ด ๊ฐ์ ๊ฐ์ง ๋ ๋บ์
์ ์ด์ฉํด์ ๋ณํํ๋ ๊ฒ์ด ์ผ๋ฐ ์ ์ด๋ค.
similarity = 1 - distance
distance = 1 - similarity
์ฝ์ฌ์ธ ๊ฑฐ๋ฆฌ๋ ๋ฒ์๊ฐ ์ด์ ๋ค๋ฅด๋ค. ๋ ๋ฒกํฐ์ ๊ฐ ๊ฑฐ๋ฆฌ(angular distance)๋ ๋ ๋ฒกํฐ์ ์ต๋ ๊ฐ๋(180๋, ๋ผ๋์$\pi$)๋ฅผ ๋ถ๋ชจ๋ก ํ๋ ๋ถ์๋ก ํํ๋ ๊ฒ์ด ๊ด๋ก์ด๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ ์ฝ์ฌ์ธ ์ ์ฌ๋์ ์ฝ์ฌ์ธ ๊ฑฐ๋ฆฌ๋ ์๋ก ์ญ์์ด๋ค.
import math
angular_distance = math.acos(cosine_similarity) / math.pi
distance = 1 / similarity - 1
similarity = 1 - distance
'๐ฃ๏ธ Natural Language Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฏธ ๊ธฐ๋ฐ ๊ฒ์(semantic search) (0) | 2021.02.23 |
---|---|
์ ํ ํ๋ณ ๋ถ์ ( LDA ) (0) | 2021.02.23 |
[Transformer] Multi-Head Attention (1) (0) | 2021.02.20 |
์ ์ฌ ๋ํด๋ ํ ๋น (LDiA, Latent Dirichlet Allocation) (0) | 2021.02.17 |
[Kaggle] ๋ค์ด๋ฒ ์ํ ๋ฆฌ๋ทฐ ๋ถ๋ฅ(2) (0) | 2021.02.17 |