๐ŸŽฏ

2๊ฐ• - ์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ๋ชจ๋ธ (์œ ์‚ฌ๋„ ํ•จ์ˆ˜, TF-IDF)

ย 
ย 
ย 

์‹ค์ œ ์‚ฐ์—…์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”, ์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ์ถ”์ฒœ์‹œ์Šคํ…œ

ย 

1) ์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ์ถ”์ฒœ์‹œ์Šคํ…œ์ด๋ž€? (feat. ์ •์˜, Represented Items)

์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ์ถ”์ฒœ์‹œ์Šคํ…œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ด์ „์— ๊ตฌ๋งคํ•œ ์ƒํ’ˆ ์ค‘์—์„œ ์ข‹์•„ํ•˜๋Š” ์ƒํ’ˆ๋“ค์ด๋‚˜ ์œ ์‚ฌํ•œ ์ƒํ’ˆ๋“ค์„ ์ถ”์ฒœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์œ ์‚ฌํ•œ ์ƒํ’ˆ๋“ค์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์—๋Š” Items๋ฅผ ๋ฒกํ„ฐ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ๋’ค, ์œ ์‚ฌํ•œ ๋ฒกํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. ์ด๋•Œ Represented Items๋ž€ Items๋ฅผ ๋ฒกํ„ฐ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์œผ๋กœ, ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์ ์šฉ๋œ๋‹ค.
ย 
Items๋Š” ํฌ๊ฒŒ Text์™€ Image, ๋‘ ๊ฐ€์ง€ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๋‹ค. ๋จผ์ € Text๋Š” ํ”ํžˆ ์•Œ๋ ค์ ธ ์žˆ๋Š” Bert, Word2Vec, TF-IDF, Countervectorizer ๋“ฑ์˜ ์ž์—ฐ์–ด์ฒ˜๋ฆฌ ๋ชจ๋ธ์„ ํ†ตํ•ด์„œ ๋ฒกํ„ฐ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋ฉฐ Image๋Š” CNN, ๋ ˆ์ฆˆ๋„ท, VGG ๋“ฑ์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ํ‘œ๋กœ ๋งŒ๋“ค์–ด ๋ฒกํ„ฐ ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ํ†ตํ•ด ์ž์‹ ๊ณผ ์œ ์‚ฌํ•œ ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ง€๋ฉด, ์ด๋ฅผ ํ†ตํ•ด ์œ ์‚ฌํ•œ ๋ฒกํ„ฐ๋ฅผ ์ถ”์ถœํ•œ ๋’ค ์ด๊ฒƒ์„ ์ถ”์ฒœํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๊ฒƒ์ด ๋ฐ”๋กœ Represented Items์ด๋‹ค.
ย 

2) ์œ ์‚ฌ๋„ ํ•จ์ˆ˜, ์œ ์‚ฌ๋„๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„
    • ๋ฌธ์„œ ๊ฐ„์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹์œผ๋กœ, ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„๋Š” ์œ ํด๋ฆฌ๋””์•ˆ ๊ฑฐ๋ฆฌ์— ์—ญ์ˆ˜๋ฅผ ์ทจํ•œ ๊ฐ’์ด๋‹ค. ์ด๋•Œ, ๋ถ„๋ชจ๊ฐ€ 0์ด ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ ์•„์ฃผ ์ž‘์€ ์ˆ˜์ธ โ€˜1e-5โ€™๋ฅผ ๋”ํ•ด์ค€๋‹ค. ์ฆ‰, ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„๋Š” [ 1 / (์œ ํด๋ฆฌ๋””์•ˆ ๊ฑฐ๋ฆฌ + 1e - 5) ] ์ด๋‹ค.
๊ณ„์‚ฐํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ , ๋ฒกํ„ฐ ์ปฌ๋Ÿผ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ํฌ๊ธฐ์— ๋ฏผ๊ฐํ•˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•  ๋•Œ ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ p์™€ q์˜ ๋ถ„ํฌ ๋ฐ ์Šค์ผ€์ผ์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ƒ๊ด€์„ฑ์„ ๋†“์น˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
ย 
  • ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„
    • ๋ฌธ์„œ ๊ฐ„์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ์‹์œผ๋กœ, A์™€ B์˜ ํฌ๊ธฐ ๋ฐ ๋‚ด์ ๊ฐ’์„ ํ†ตํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋‘ ๋ฌธ์„œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น„์Šทํ•œ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๊ฐ’์ธ ฮธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์–ผ๋งˆ๋งŒํผ์˜ cos (ฮธ)๋ฅผ ๊ฐ€์ง€๋Š”์ง€๋ฅผ ์ฐพ์œผ๋ฉด ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ์œ ์‚ฌ๋„์ด๋‹ค. ์œ ์‚ฌ๋„์˜ ํฌ๊ธฐ๋Š” -1์—์„œ 1๊นŒ์ง€๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ cos (ฮธ)๊ฐ€ ๋™์ผํ•œ ๋ฐฉํ–ฅ์ด๋ผ๋ฉด 1, 90ยฐ ๋ฐฉํ–ฅ์ด๋ผ๋ฉด 0, ์ •๋ฐ˜๋Œ€์˜ ๋ฐฉํ–ฅ์ด๋ผ๋ฉด -1์„ ๊ฐ€์ง„๋‹ค.
      notion image
      ย 
      ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๋Š” ์ฃผ๋กœ ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”ํŠธ๋ฆญ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ฆ‰, ๋นˆ๋„์ˆ˜ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฌธ์„œ ๋‚ด์˜ ๋น„์œจ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„์˜ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์€ ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ์— ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
      ย 
      โžก ์—ฌ๊ธฐ์„œ ์ž ๊น! ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„์™€ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋น„๊ตํ•ด๋ณด์ž.
      ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„๋Š” ์•ž์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์œ ํด๋ฆฌ๋””์•ˆ ๊ฑฐ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฒกํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด์™€ ๋‹ฌ๋ฆฌ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๋Š” cos (ฮธ)์˜ ๋ฐฉํ–ฅ, ์ฆ‰ ๋ฒกํ„ฐ ๊ฐ„์˜ ๋ฐฉํ–ฅ์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” A์™€ B๊ฐ€ ์ˆ˜์ง์„ ์— ๊ฐ€๊น๊ฒŒ ์œ„์น˜ํ•ด ์žˆ๋‹ค๋ฉด ์œ ํด๋ฆฌ๋””์•ˆ ์œ ์‚ฌ๋„์™€ ๋‹ฌ๋ฆฌ ์œ ์‚ฌ๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
ย 
ย 
  • ์œ ํด๋ฆฌ๋””์•ˆ, ์ฝ”์‚ฌ์ธ, ํ”ผ์–ด์Šจ, ์ž์นด๋“œ ์œ ์‚ฌ๋„ ์™ธ์— Divergence, Dice, Sorensen ์œ ์‚ฌ๋„ ๋“ฑ๋„ ํ˜„์—…์—์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ์œ ์‚ฌ๋„์ด๋‹ค. ์ถ”์ฒœ์‹œ์Šคํ…œ, ๊ณ ๊ฐ ์ง‘๋‹จ์ด๋‚˜ ๋„๋ฉ”์ธ ๋“ฑ์— ๋”ฐ๋ผ์„œ ์œ ์‚ฌ๋„๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๊ตฌํ•˜๋ฉฐ ์„ ํƒํ•˜๋Š” ๊ธฐ์ค€ ์—ญ์‹œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ƒ์ดํ•˜๋‹ค. ์ •ํ™•๋„๋‚˜ ํ‰๊ฐ€์ง€ํ‘œ๊ฐ€ ์ข‹์€ ์ˆœ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ฝœ๋“œ์Šคํƒ€ํŠธ๋‚˜ ๊ตฌ๋งค์œจ๊ณผ ๊ฐ™์ด ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ€์ค‘์น˜๋ฅผ ์ ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
ย 

3) TF-IDF์˜ ์ •์˜์™€, ๊ฐ๊ฐ์˜ ์˜๋ฏธ

TF-IDF๋Š” ๋‹จ์–ด ๋นˆ๋„ TF, ์—ญ๋ฌธ์„œ ๋นˆ๋„ DF, ๋‹จ์–ด์˜ ๊ฐ€์ค‘์น˜ IDF ์„ธ ๊ฐ€์ง€ ์ง€ํ‘œ๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์„œ ๋‚ด ๋‹จ์–ด์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฆ‰, ์ด๋Š” ๋‹ค๋ฅธ ๋ฌธ์„œ์—์„œ๋Š” ๊ฑฐ์˜ ๋“ฑ์žฅํ•˜์ง€ ์•Š์ง€๋งŒ ํŠน์ • ๋ฌธ์„œ ๋‚ด์—์„œ๋งŒ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. TF-IDF๋Š” ์ฃผ๋กœ ๋ฌธ์„œ์˜ ํ•ต์‹ฌ์–ด ์ถ”์ถœ, ๋ฌธ์„œ ๊ฐ„์˜ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ค‘์š”๋„ ์ธก์ • ์ž‘์—… ๋“ฑ์—์„œ ํ™œ์šฉ๋œ๋‹ค.
ย 
๋จผ์ € TF(d, t)๋Š” ํŠน์ • ๋ฌธ์„œ d์—์„œ ํŠน์ • ๋‹จ์–ด t๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ธฐ๋กํ•œ ๊ฒƒ์ด๊ณ , DF(t)๋Š” ํŠน์ • ๋‹จ์–ด t๊ฐ€ ๋“ฑ์žฅํ•œ ๋ฌธ์„œ๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์ „์ฒด ๋ฌธ์„œ ์ค‘์—์„œ ํŠน์ • ๋‹จ์–ด๊ฐ€ ๋“ฑ์žฅํ•œ ๋ฌธ์„œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ IDF(d, t)๋Š” DF(t)์— ๋ฐ˜๋น„๋ก€ํ•˜๋Š” ์ˆ˜๋กœ ๋„ˆ๋ฌด ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด๋Š” ์˜คํžˆ๋ ค ๋œ ์ค‘์š”ํ•œ ๋‹จ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ฒ˜๋Ÿผ ๋„ˆ๋ฌด ๋งŽ์ด ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด๋“ค์—๋Š” log๋ฅผ ์ทจํ•œ ๋’ค DF(t) ๊ฐ’์„ ๋ถ„๋ชจ๋กœ ๋‚ด๋ฆฌ๋Š” ๋“ฑ ํŒจ๋„ํ‹ฐ๋ฅผ ์ค˜์„œ ์ค‘์š”ํ•œ ๋‹จ์–ด๋ฅผ ์ ์ ˆํ•œ ๋ฐฉ์‹์„ ํ†ตํ•ด ์žก์•„๋‚ด๊ณ ์ž ํ•œ๋‹ค. IDF(d, t)์˜ ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, TF-IDF(d, t)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
ย 
ย 
์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ ๋‚ด ๋‹จ์–ด์˜ TF-IDF ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ ๋ฌธ์„œ ๊ฐ„์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ญ์‹œ ์กด์žฌํ•˜๋Š”๋ฐ, ์ง๊ด€์ ์ธ ํ•ด์„์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์•ž์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŠน์ • ๋ฌธ์„œ ๋‚ด์—์„œ๋งŒ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด์— ๊ฐ€์ค‘์น˜๋ฅผ ๋‘์–ด ๊ณ„์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋Š” ๊ฒƒ์ด ๋งค์šฐ ํŽธ๋ฆฌํ•˜๋‹ค. ๋‹ค๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ค์›Œ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ํฌ๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์–ด ๋ฌธ์„œ์˜ ํฌ๊ธฐ๋‚˜ ๊ฐœ์ˆ˜๊ฐ€ ์กฐ๊ธˆ๋งŒ ์ปค์ง€๋”๋ผ๋„ ํ™œ์šฉํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๋‹ค.
ย 

ย 

TF-IDF ์ฝ”๋“œ

docs = [ '๋จน๊ณ  ์‹ถ์€ ์‚ฌ๊ณผ', # ๋ฌธ์„œ0 '๋จน๊ณ  ์‹ถ์€ ๋ฐ”๋‚˜๋‚˜', # ๋ฌธ์„œ1 '๊ธธ๊ณ  ๋…ธ๋ž€ ๋ฐ”๋‚˜๋‚˜ ๋ฐ”๋‚˜๋‚˜', # ๋ฌธ์„œ2 '์ €๋Š” ๊ณผ์ผ์ด ์ข‹์•„์š”' # ๋ฌธ์„œ3 ]
# Counter Vectorizer ๊ฐ์ฒด ์ƒ์„ฑ(TF๊นŒ์ง€์˜ ๊ณผ์ •๋งŒ ๋‹ด๊ธด) from sklearn.feature_extraction.text import CountVectorizer vect = CountVectorizer()
# ๋ฌธ์žฅ์„ Counter Vectorizer ํ˜•ํƒœ๋กœ ๋ณ€ํ˜• countvect = vect.fit_transform(docs) countvect # 4x9 : 4๊ฐœ์˜ ๋ฌธ์„œ์— 9๊ฐœ์˜ ๋‹จ์–ด
# toarray()๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์žฅ์ด Vector ํ˜•ํƒœ์˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์Œ # ํ•˜์ง€๋งŒ, ๊ฐ ์ธ๋ฑ์Šค์™€ ์ปฌ๋Ÿผ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ ์ˆ˜๊ฐ€ ์—†์Œ # sparse matrix -> numpy countvect.toarray()
# ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ vect.vocabulary_
# sorted ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋‹จ์–ด ์ •๋ ฌ sorted(vect.vocabulary_)
# Dataframe ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ import pandas as pd countvect_df = pd.DataFrame(countvect.toarray(), columns = sorted(vect.vocabulary_)) countvect_df.index = ['๋ฌธ์„œ1', '๋ฌธ์„œ2', '๋ฌธ์„œ3', '๋ฌธ์„œ4'] countvect_df
# ์œ„์˜ Data Frame ํ˜•ํƒœ์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐ from sklearn.metrics.pairwise import cosine_similarity cosine_similarity(countvect_df, countvect_df)
# ์˜๋ฏธ ์—†๋Š” ๋‹จ์–ด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด TFfidVectorizer ์‚ฌ์šฉ from sklearn.feature_extraction.text import TfidfVectorizer vect = TfidfVectorizer() tfvect = vect.fit(docs)
tfidv_df = pd.DataFrame(tfvect.transform(docs).toarray(), columns = sorted(vect.vocabulary_)) tfidv_df.index = ['๋ฌธ์„œ1', '๋ฌธ์„œ2', '๋ฌธ์„œ3', '๋ฌธ์„œ4'] tfidv_df
from sklearn.metrics.pairwise import cosine_similarity cosine_similarity(tfidv_df, tfidv_df)
from sklearn.feature_extraction.text import TfidfVectorizer vect = TfidfVectorizer(max_features=4) tfvect = vect.fit(docs)
tfidv_df = pd.DataFrame(tfvect.transform(docs).toarray(), columns = sorted(vect.vocabulary_)) tfidv_df.index = ['๋ฌธ์„œ1', '๋ฌธ์„œ2', '๋ฌธ์„œ3', '๋ฌธ์„œ4'] tfidv_df