๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ์ตœ์ข…ํ”„๋กœ์ ํŠธ/๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] N-gram๊ณผ Edge-Ngram์„ ํ•จ๊ป˜ ์ผ๋”๋‹ˆ? ๊ฒ€์ƒ‰ ์ •ํ™•๋„ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๊ณผ์ •

by carrot0911 2025. 4. 3.

๐Ÿ’ฅ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ? N-gram + Edge-Ngram์ด ๋งŒ๋“  ๋ฌธ์ œ

 

๐Ÿ” ๋ฐœ์ƒํ•œ ๋ฌธ์ œ

์ฒ˜์Œ์—๋Š” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€๋ถ„ ๊ฒ€์ƒ‰(N-gram)๊ณผ ์ž๋™ ์™„์„ฑ(Edge-Ngram) ๋‘ ๊ธฐ๋Šฅ์„ ๋™์‹œ์— Elasticsearch์— ์ ์šฉํ–ˆ๋‹ค.
๊ฒ€์ƒ‰์–ด๊ฐ€ ์ค‘๊ฐ„์— ํฌํ•จ๋œ ๋‹จ์–ด๋„ ์ฐพ๊ณ , ๋™์‹œ์— ์ž…๋ ฅํ•œ ๊ธ€์ž์˜ ์•ž๋ถ€๋ถ„์œผ๋กœ ์ž๋™ ์™„์„ฑ๊นŒ์ง€ ๋˜๋„๋ก ํ•œ ๊ฒƒ์ด์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ... ์‹ค์ œ ๊ฒ€์ƒ‰์—์„œ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์‹œ 1) ๊ฒ€์ƒ‰์–ด: ๋ฏธ๋…ธ

๋ฏธ๋…ธ๊ฐ€ ํฌํ•จ๋œ ์ •ํ™•ํ•œ ๋‹จ์–ด๋ฅผ ์ฐพ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ,
N-gram๊ณผ Edge-Ngram์ด ํ•จ๊ป˜ ์ ์šฉ๋œ ํ•„๋“œ๊ฐ€ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋ƒˆ๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ด€๋ จ ์—†๋Š” ํ‚ค์›Œ๋“œ๊นŒ์ง€ ํฌํ•จ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋…ธ์ถœ๋˜์—ˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์‹œ 2) ๊ฒ€์ƒ‰์–ด: ์นด๋“œ

์นด๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ, ์นด๋“œ์™€ ๋ฌด๊ด€ํ•œ ์นด๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‹จ์–ด๊นŒ์ง€ ํฌํ•จ๋œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ํ•จ๊ป˜ ์กฐํšŒ๋˜์—ˆ๋‹ค.
Edge-Ngram์ด ๋‹จ์–ด์˜ ์•ž๋ถ€๋ถ„์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋™์™„์„ฑ์„ ์ƒ์„ฑํ•˜๋ฉด์„œ, ์ž…๋ ฅํ•œ ๋‹จ์–ด์˜ ์ผ๋ถ€๋งŒ ์ผ์น˜ํ•ด๋„ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๐Ÿ“Œ๊ฒฐ๊ณผ์ ์œผ๋กœ, ๋‘ ๋ถ„์„๊ธฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์—์„œ๋Š” ๊ฒ€์ƒ‰์–ด์˜ ์•ž๋ถ€๋ถ„๋งŒ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ๋ถˆํ•„์š”ํ•œ ํ† ํฐ์ด ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ์—๋„ ์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋…ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์กŒ๋‹ค.

 

 

โ— ์›์ธ ๋ถ„์„

N-gram์€ ๋ฌธ์ž์—ด์„ n๊ธ€์ž ๋‹จ์œ„๋กœ ์ž˜๋ผ์„œ ๋ถ€๋ถ„ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜๋Š” ๋ถ„์„๊ธฐ๋‹ค.
์˜ˆ์‹œ: "์นด๋“œ" → ["์นด๋“œ", "์นด", "๋“œ"]

Edge-Ngram์€ ์ž…๋ ฅ์˜ ์•ž๋ถ€๋ถ„๋ถ€ํ„ฐ ์ผ์ • ๊ธธ์ด๋งŒํผ ๋ถ„ํ• ํ•ด ์ž๋™ ์™„์„ฑ ํ›„๋ณด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
→ "์นด๋“œ" → ["์นด", "์นด๋“œ"]

์ด ๋‘ ๋ถ„์„๊ธฐ๋ฅผ ํ•˜๋‚˜์˜ ํ•„๋“œ์— ๋™์‹œ์— ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด Elasticsearch๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.
โœ… ๊ฒ€์ƒ‰์–ด๊ฐ€ ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์™€๋Š” ๊ด€๊ณ„์—†์ด ์•ž๊ธ€์ž๋งŒ ์ผ์น˜ํ•˜๊ฑฐ๋‚˜ ํ˜•ํƒœ์ ์œผ๋กœ ๋น„์Šทํ•œ ํ† ํฐ์ด ์ƒ์„ฑ๋˜๋ฉด ํ•ด๋‹น ๋ฌธ์„œ๋„ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํฌํ•จ๋œ๋‹ค.
๊ฒฐ๊ตญ, ๊ฒ€์ƒ‰์–ด "์นด๋“œ"๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์นดํŽ˜, ์นด์นด์˜ค, ์นด๋“œ์‚ฌ์ฒ˜๋Ÿผ ์˜๋„ํ•˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๊นŒ์ง€ ๋ชจ๋‘ ๋…ธ์ถœ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

 

 

๐Ÿค” ๊ณ ๋ฏผํ•œ ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

โœ… ๋ถ€๋ถ„ ๊ฒ€์ƒ‰๊ณผ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ ๋ถ„๋ฆฌ ์ ์šฉ
     ๐Ÿ‘‰
ํ•˜๋‚˜์˜ ํ•„๋“œ์—์„œ N-gram๊ณผ Edge N-gram์„ ํ•จ๊ป˜ ์ ์šฉํ•˜์ง€ ์•Š๊ณ , ๊ฒ€์ƒ‰ ๋ชฉ์ ์— ๋”ฐ๋ผ ํ•„๋“œ์™€ API๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
     ๐Ÿ‘‰ ๋ถ€๋ถ„ ๊ฒ€์ƒ‰์€ ์ •ํ™•ํ•œ ํ‚ค์›Œ๋“œ ๋งค์นญ์— ์ง‘์ค‘
     ๐Ÿ‘‰ ์ž๋™ ์™„์„ฑ์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ดˆ๋ฐ˜์—๋งŒ ๋ฐ˜์‘ํ•˜๋„๋ก ๋ถ„๋ฆฌ ์ฒ˜๋ฆฌ
     ๐Ÿ‘‰ ๋‘ ๊ธฐ๋Šฅ์ด ์„œ๋กœ์˜ ๊ฒ€์ƒ‰ ์ •ํ™•๋„๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„

โœ… Nori ๋ถ„์„๊ธฐ๋ฅผ ํ™œ์šฉํ•œ ํ•œ๊ธ€ ํ˜•ํƒœ์†Œ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๋„์ž…
     ๐Ÿ‘‰
ํ•œ๊ตญ์–ด์˜ ์˜๋ฏธ ๋‹จ์œ„(ํ˜•ํƒœ์†Œ)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๋ถˆํ•„์š”ํ•œ ํ† ํฐ ์ƒ์„ฑ์„ ์ค„์—ฌ ์ •ํ™•๋„๋ฅผ ๋†’์ธ๋‹ค.
     ๐Ÿ‘‰ "๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž" → [๋ฐฑ์—”๋“œ, ๊ฐœ๋ฐœ, ์ž] ํ˜•ํƒœ์†Œ๋กœ ๋ถ„๋ฆฌ
     ๐Ÿ‘‰ "๊ฐœ๋ฐœ์ž๊ฐ€" → ์กฐ์‚ฌ/์–ด๋ฏธ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ [๊ฐœ๋ฐœ, ์ž]๋กœ ์ •์ œ
     ๐Ÿ‘‰ ์‚ฌ์šฉ์ž ์‚ฌ์ „ ๋“ฑ๋ก๋„ ๊ฐ€๋Šฅํ•ด ์ง๋ฌด ์šฉ์–ด ์ตœ์ ํ™”์— ์œ ๋ฆฌ

์ด๋Ÿฌํ•œ ๋ฐฉํ–ฅ ์„ค์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ์„ค๊ณ„ํ•˜๊ณ , ๊ฒ€์ƒ‰ API๋ฅผ ๋ชฉ์ ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.