s t u d y . . ๐Ÿง/AI ์•ค ML ์•ค DL

[SBERT] ํ‚ค์›Œ๋“œ ์ถ”์ถœ ๊ธฐ๋ฐ˜ ์œ ์‚ฌ ๋ฉ”๋‰ด ๊ฒ€์ƒ‰ ์„œ๋น„์Šค

H J 2023. 5. 6. 18:18

์บก์Šคํ†ค์„ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์ผ๋ฐ˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ์นดํ…Œ๊ณ ๋ฆฌ, ๋ฉ”๋‰ด๋ช…์— ๋Œ€ํ•ด์„œ๋งŒ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ์„ ํ•˜๋‹ค๊ฐ€ ์Œ์‹ ์„ค๋ช…์— ๋Œ€ํ•œ ๋ฌธ์žฅ ์œ ์‚ฌ๋„์— ๋”ฐ๋ผ ์ถ”์ฒœ์„ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฌธ์žฅ ์œ ์‚ฌ๋„๋ฅผ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” NLP ๋ชจ๋ธ์„ ์ฐพ์•„๋ดค๋‹ค

 

SBERT์™€ ๋Œ€ํ•ด ๋‚ด๊ฐ€ ์ •๋ฆฌํ•œ ๊ธ€๋“ค !!

๋”๋ณด๊ธฐ

 


[๋ฉ”๋‰ด๋ช… + ์นดํ…Œ๊ณ ๋ฆฌ + ์Œ์‹ ์„ค๋ช…]์— ๋Œ€ํ•œ ํ›„๋ณด ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•œ ํ›„, bi-encoder๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•œ๋‹ค ! (sbert๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ›„๋ณด ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์™€ ๋ฌธ์žฅ์— ๋Œ€ํ•œ ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น ์ž„๋ฒ ๋”ฉ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ์„ ํ•˜์—ฌ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ์ถ”์ถœ )

 

๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋‰ดํŒ ๋ฉ”๋‰ด ์ค‘ ์ž…๋ ฅ๋œ ๋ฉ”๋‰ด์˜ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ€์žฅ ์œ ์‚ฌ๋„๊ฐ€ ๋†’์€ ๋ฉ”๋‰ด ์ˆœ์œผ๋กœ ์ถ”์ฒœํ•ด ์ค€๋‹ค !

 

 

bi-encoder๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ์ถ”์ถœ !! (ํ›„๋ณด ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ → ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ)

์šฐ์„  ๊ฐ€์ƒ์˜ (๊น€๋ฐฅ์ฒœ๊ตญ) ๊ฐ€๊ฒŒ ๋ฉ”๋‰ด๋ฅผ cvs ํŒŒ์ผ๋กœ ๋งŒ๋“ค๊ณ  ์ฝ์–ด์คฌ๋‹ค

 

[์•ผ์ฑ„๊น€๋ฐฅ]์„ ์˜ˆ์‹œ๋กœ ๋“ค์ž๋ฉด

 

1. food_name + food_category + food_description์ด ํ•œ ๋ฌธ์žฅ์œผ๋กœ ํ•ฉ์นœ ํ›„, ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

['์•ผ์ฑ„๊น€๋ฐฅ', '๊น€๋ฐฅ', '๊น€์—', '๋ฐฅ๊ณผ', '๋‹ค์–‘ํ•œ', '์•ผ์ฑ„๋ฅผ', '๋„ฃ์–ด์„œ', '๋งŒ๋“ ', 'ํ•œ๊ตญ์˜', '์ „ํ†ต์ ์ธ', '๊ฐ„๋‹จํ•œ', '๊น€๋ฐฅ']

 

2. ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ํ†ตํ•ด ๋ช…์‚ฌ๋งŒ ์ถ”์ถœ

['์•ผ์ฑ„', '๊น€๋ฐฅ', '๊น€๋ฐฅ', '๊น€', '๋ฐฅ', '๋‹ค์–‘', '์•ผ์ฑ„', 'ํ•œ๊ตญ', '์ „ํ†ต', '๊น€๋ฐฅ'].... 

 

3. ์˜์–ด๋ฅผ ํ•œ๊ธ€๋กœ ๋ณ€ํ™˜ (๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฐ์ดํ„ฐ์…‹์˜ ๊ฒฝ์šฐ, ๋ชจ๋‘ ํ•œ๊ธ€๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Œ)

['์•ผ์ฑ„', '๊น€๋ฐฅ', '๊น€๋ฐฅ', '๊น€', '๋ฐฅ', '๋‹ค์–‘', '์•ผ์ฑ„', 'ํ•œ๊ตญ', '์ „ํ†ต', '๊น€๋ฐฅ'].... 

 

4. 2๋ฒˆ ์ด์ƒ ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด๋งŒ ์ถ”์ถœ

['์•ผ์ฑ„', '๊น€๋ฐฅ'].... 

 

5. ๋‹จ์–ด ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ์ธ ๋‹จ์–ด๋งŒ ์ถ”์ถœ (๋‚˜๋Š” ๊ตญ, ๋ฉด, ๋ฐฅ ๋“ฑ ํ•œ ๊ธ€์ž์ธ ๊ฒฝ์šฐ์—๋„ ํ•„์š”ํ•ด์„œ 1๊ธ€์ž ์ด์ƒ์œผ๋กœ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค)

['์•ผ์ฑ„', '๊น€๋ฐฅ'].... 

ใ„ด ์ด ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ€ ํ‚ค์›Œ๋“œ ํ›„๋ณด

 

6. bi-encoder : sbert๋ฅผ ํ†ตํ•ด ๋ฉ”๋‰ด์™€ ์ถ”์ถœ๋œ ํ›„๋ณด ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด ์ž„๋ฒ ๋”ฉ์„ ์ƒ์„ฑ → ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ

[('์•ผ์ฑ„', 0.85827744), ('๊น€๋ฐฅ', 0.8466986)]

 

 

์ด๋Ÿฐ ์—ญํ• ๋“ค์„ ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํ•จ์ˆ˜๋“ค์„ ์ˆœ์„œ์— ๋งž๊ฒŒ ํ˜ธ์ถœํ•ด ์ฃผ๊ณ  ์ถ”์ถœ๋œ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋„ ๋งŒ๋“ค์—ˆ๋‹ค !


๊ฒ€์ƒ‰ ์„œ๋น„์Šค

์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋Š” ์ผ์น˜ํ•˜๋Š” ๋ฉ”๋‰ด๊ฐ€ ์ž…๋ ฅ๋œ ๊ฒฝ์šฐ์—๋Š” ๋ฐ”๋กœ ์ฃผ๋ฌธ์„ ํ•ด์ฃผ๊ณ  ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ๋ฉ”๋‰ด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ๋ฉ”๋‰ด๋ฅผ ์ถ”์ฒœํ•ด ์ค€๋‹ค

ใ„ด ํ•ด๋‹น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ

 

์ด์ œ ์ž…๋ ฅ๋œ ๋ฉ”๋‰ด์™€ ์œ ์‚ฌํ•œ ๋ฉ”๋‰ด๋ฅผ ์ถ”์ฒœํ•ด ์ฃผ๋Š” ๊ณผ์ •์ด๋‹ค 

 

0. ๋จผ์ € ๋ฉ”๋‰ดํŒ์˜ ๋ชจ๋“  ๋ฉ”๋‰ด์— ๋Œ€ํ•œ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ๋ฅผ ๋ฝ‘์•„ ์ €์žฅํ•œ ํ›„, ๋ณธ๊ฒฉ์ ์ธ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋œ๋‹ค

→ ๋ฉ”๋‰ดํŒ์˜ ์ „์ฒด ๋ฉ”๋‰ด๋“ค์˜ ๋ฉ”๋‰ด๋ช…๊ณผ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ ํ•จ์ˆ˜, ์ธ๋ฑ์Šค๋ณ„ ํ‚ค์›Œ๋“œ ์ถ”์ถœ ํ•จ์ˆ˜

 

1. ์ƒˆ๋กญ๊ฒŒ ์ž…๋ ฅ๋˜์–ด ๋ฉ”๋‰ด ์ถ”์ฒœ์„ ๋ฐ›๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ์…‹์— ์ •๋ณด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์— chatGPT API๋ฅผ ์ด์šฉํ•ด์„œ ์นดํ…Œ๊ณ ๋ฆฌ, ๋ฉ”๋‰ด์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์–ป์–ด์˜จ๋‹ค → chatGPT API ์‚ฌ์šฉ ํ•จ์ˆ˜, ์งˆ๋ฌธ + ๋‹ต๋ณ€ ์ „์ฒ˜๋ฆฌ ํ›„ ์ €์žฅ ํ•จ์ˆ˜

 

2. ์œ„์™€ ๊ฐ™์€ ํ‚ค์›Œ๋“œ ์ถ”์ถœ ๊ณผ์ •์„ ํ†ตํ•ด ์ƒˆ๋กœ ์ž…๋ ฅ๋œ ์Œ์‹์˜ ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•œ๋‹ค → ๋ฉ”๋‰ด๋ช…์ด ์ž…๋ ฅ ์‹œ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ ํ•จ์ˆ˜

 

3. ๋ฉ”๋‰ดํŒ(๋ฐ์ดํ„ฐ์…‹)์˜ ๋ฉ”๋‰ด๋“ค์˜ ๊ฐ ํ‚ค์›Œ๋“œ ๋ฆฌ์ŠคํŠธ์™€ ์ผ์น˜ํ•˜๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์œ ์‚ฌ๋„๊ฐ€ ๋†’๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ  ์œ ์‚ฌ๋„์ˆœ์œผ๋กœ ๋ฉ”๋‰ด๋ฅผ ์ถ”์ฒœํ•ด ์ค€๋‹ค → ๋ฉ”๋‰ด ๊ฒ€์ƒ‰ ํ•จ์ˆ˜

 

 

[์•ผ์ฑ„๊น€๋ฐฅ]์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ถ”์ฒœํ•ด ์ฃผ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

ํ‚ค์›Œ๋“œ์— ๋”ฐ๋ฅธ ์ƒ์œ„ 20๊ฐœ ์Œ์‹ ์ถ”์ฒœ ๊ฒฐ๊ณผ
['์•ผ์ฑ„๊น€๋ฐฅ', '์ฐธ์น˜์™€์‚ฌ๋น„๊น€๋ฐฅ', '์•ผ์ฑ„๋น„๋น”๋ฐฅ', '์น˜์ฆˆ๊น€๋ฐฅ', '์–ด๋ฆฐ์ด๊น€๋ฐฅ', '์ƒˆ์šฐ๋‚ ์น˜์•Œ๊น€๋ฐฅ', 'ํ–„์•ผ์ฑ„๋ณถ์Œ๋ฐฅ', '์ฐธ์น˜๋งˆ์š”๊น€๋ฐฅ', '๋งค์ฝค๋•ก+A1์ดˆ๊น€๋ฐฅ', '๋งค์ฝค์˜ค์ง•์–ด๊น€๋ฐฅ', '์†Œ๊ณ ๊ธฐ๊น€๋ฐฅ', '๋œ์žฅ์ฐŒ๊ฐœ', '์ฐธ์น˜๊น€์น˜์ฐŒ๊ฐœ', '๊ณ ๋“ฑ์–ด๊น€์น˜์ฐŒ๊ฐœ', '๊ฝ์น˜๊น€์น˜์ฐŒ๊ฐœ', '์œก๊ฐœ์žฅ', '๋š๋ฐฐ๊ธฐ๋ถˆ๊ณ ๊ธฐ', '๊น€์น˜๋ณถ์Œ๋ฐฅ', '์นด๋ ˆ๋ฎ๋ฐฅ', '์ˆœ๋‘๋ถ€์ฐŒ๊ฐœ']

ใ„ด ์›๋ž˜ ๋ฉ”๋‰ดํŒ์— ๋ฉ”๋‰ด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๋ฉ”๋‰ด ๊ฒ€์ƒ‰ ํ•จ์ˆ˜๊ฐ€ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ผ์น˜ํ•˜๋Š” ๋ฉ”๋‰ด๋Š” ์—†์ง€๋งŒ, ํ•จ์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๊ธฐ์กด ๋ฉ”๋‰ดํŒ์— ์žˆ๋Š” [์•ผ์ฑ„๊น€๋ฐฅ]์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๋Š” ์ด์™€ ๊ฐ™๋‹ค

 


๋ ~~

 

์•„๋ž˜๋Š” ๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ํ”„๋กœ์ ํŠธ !!

๋”๋ณด๊ธฐ

์ง„์งœ ์ •๋ง................ ๋งŽ~~~~~~~~์ด ๋„์›€์„ ๋ฐ›์•„์„œ..ใ…œใ…œ ๊ฐ์‚ฌ์ธ์‚ฌ๋ผ๋„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์€ ์‹ฌ์ •..

 

๋‹น์—ฐํžˆ ๋ชป ๋ณด์‹ค ํ…Œ์ง€๋งŒ... ์ง„์งœ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.. ^_ใ… 

 

GitHub - yangoos57/Sentence_bert_from_scratch: Sbert ๋…ผ๋ฌธ ๊ตฌํ˜„ ๋ฐ ์ด๋ฅผ ํ™œ์šฉํ•œ ํ‚ค์›Œ๋“œ ์ถ”์ถœ ๋ชจ๋ธ ๊ฐœ๋ฐœ

Sbert ๋…ผ๋ฌธ ๊ตฌํ˜„ ๋ฐ ์ด๋ฅผ ํ™œ์šฉํ•œ ํ‚ค์›Œ๋“œ ์ถ”์ถœ ๋ชจ๋ธ ๊ฐœ๋ฐœ. Contribute to yangoos57/Sentence_bert_from_scratch development by creating an account on GitHub.

github.com