Fine Tuned E5 Small Drugproduct
๐งฌ Fine-tuned E5-small for Korean Drug Product Semantic Embedding
๐ Model Overview ์ด ๋ชจ๋ธ์ intfloat/multilingual-e5-small ๊ธฐ๋ฐ์ผ๋ก, ์์ฝํ ์์ฝยท์์ธ ๋ฐ์ดํฐ(`drugsummary`, `drugdetails`) ๋ฐ ์ ํ ์ ํ ์ ์(`drugtypedefinition`), DUR ๊ท์ ์ ์(`drugdurtypedefinition`)๋ฅผ ํ์ฉํ์ฌ ํ๊ตญ์ด ์์ฝํ ๋๋ฉ์ธ์ ๋ง๊ฒ 3๋จ๊ณ ํ์ธํ๋(fine-tuning) ๋ SentenceTransformer ๋ชจ๋ธ์
๋๋ค.
- GitHub Repository: https://github.com/ryukato/fine-tuned-e5-drugmodel
์ด ํ๋ก์ ํธ๋ ๋ค๊ตญ์ด ํ๊ฒฝ์์๋ ์์ฝํ ๋ช
์นญ, ํจ๋ฅ, DUR ๊ท์ ์ ๋ณต์กํ ์๋ฏธ ๊ด๊ณ๋ฅผ ์ ํํ ์๋ฒ ๋ฉํ๊ธฐ ์ํด E5(multilingual-E5) ๊ณ์ด ๋ชจ๋ธ ์ค `intfloat/multilingual-e5-small`์ ์ ํํ์ต๋๋ค.
1. ๋ค๊ตญ์ด ๋ฌธ์ฅ ํํ๋ ฅ - ์์ด๋ฟ ์๋๋ผ ํ๊ตญ์ด, ์ผ๋ณธ์ด, ์ค๊ตญ์ด, ๋
์ผ์ด ๋ฑ ๋ค์ํ ์ธ์ด์์ ๊ท ํ ์กํ ์๋ฏธ ํํ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. - ์์ฝํ ๋ฐ์ดํฐ๋ ์ธ๋์ดยทํ์ ์ฉ์ด๊ฐ ํผํฉ๋ ํํ๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ multilingual encoder๊ฐ ์ ๋ฆฌํฉ๋๋ค.
2. ํจ์จ์ ์ฑ๋ฅ ๋๋น ํ๋ผ๋ฏธํฐ ํฌ๊ธฐ (Small Variant) - `small` ๋ชจ๋ธ์ ์ฝ 33M ํ๋ผ๋ฏธํฐ๋ก, M1/M2 ๋งฅ๋ถ ๋ฑ ๋ก์ปฌ ํ๊ฒฝ์์๋ ์์ ์ ์ผ๋ก fine-tuning ๊ฐ๋ฅํ์ต๋๋ค. - FP16 ๋๋ bfloat16 ์ง์์ผ๋ก GPUยทMPS ํ๊ฒฝ์์๋ ํจ์จ์ ์ธ ์ฐ์ฐ์ ์ ๊ณตํฉ๋๋ค.
3. ๋ฌธ์ฅ ๋จ์ ์๋ฏธ ๊ฒ์(semantic retrieval)์ ์ต์ ํ - E5 ๋ชจ๋ธ์ โ๋ฌธ์ฅ ๋จ์ ์๋ฏธ ์๋ฒ ๋ฉ(Sentence Embedding)โ์ ์ํด ํ์ต๋์ด ์์ด, ๋จ์ ์ง์(`"๊ธฐ์นจ์ฝ"`, `"์ด ๋ด๋ฆฌ๋ ์ฝ"`)์ ์ ํ๋ช
(`"ํ์ฝ์์ด"`, `"ํ์ด๋ ๋"`) ๊ฐ ์๋ฏธ ๋งค์นญ์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์
๋๋ค.
4. Sentence-Transformers์ ์๋ฒฝํ ํธํ์ฑ - `SentenceTransformer` ์ธํฐํ์ด์ค์ 100% ํธํ๋์ด, PyTorch ๊ธฐ๋ฐ pipeline ํตํฉ์ด ์ฉ์ดํ์ต๋๋ค.
๐น Step 1: Drug Type Semantic Alignment - ๋ฐ์ดํฐ์
: `drugtypedeflist.csv` - ๋ชฉํ: `"ํด์ด์ " โ "์ฒด์จ์ ๋ฎ์ถ๋ ์ฝ"` ๊ณผ ๊ฐ์ ๊ฐ๋
๋งคํ ํ์ต - ๋ชจ๋ธ ๊ฒฐ๊ณผ: `/model/finetunede5smalldrugtype`
๐น Step 2: DUR Type Semantic Alignment - ๋ฐ์ดํฐ์
: `drugdurtypesimilaritytrain.csv` - ๋ชฉํ: `"์๋ถ๊ธ๊ธฐ"`, `"๋
ธ์ธ์ฃผ์"`, `"๋ณ์ฉ๊ธ๊ธฐ"` ๋ฑ DUR ํ์
๊ณผ ์ ๋ฌธ์ ์ค๋ช
๊ฐ ์๋ฏธ ๋งคํ ํ์ต - ๋ชจ๋ธ ๊ฒฐ๊ณผ: `/model/finetunede5smalldrugdurtype`
๐น Step 3: Drug Product Semantic Alignment - ๋ฐ์ดํฐ์
: `drugproductsimilaritytrain.csv` (์ฝ 3,000๊ฑด ์ํ) - ๋ชฉํ: `"ํ์ฝ์์ด๋ด๋ณต์ก"` ๊ฐ์ ์ค์ ์ ํ๊ณผ `"์ด์ ๋ด๋ฆฌ๋ ์ฝ"` ๊ฐ์ ์ง์ ๊ฐ ์๋ฏธ ๋งค์นญ ๊ฐํ - ๋ชจ๋ธ ๊ฒฐ๊ณผ: `/model/finetunede5smalldrugproductaccum`
๐น Experimental: Drug Ingredient + Product Type Fine-tuning
`finetunede5smalldrugdurtype` ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก, ์์ฝํ ์ฑ๋ถ(`ingredientname`)๊ณผ ์ ํ ์ ํ(`producttype`)์ ๊ฒฐํฉํ ์๋ฒ ๋ฉ ํ์ต(`finetunede5smalldrugptypeingredients`)์ ์ถ๊ฐ๋ก ์ํํ์์ต๋๋ค.
โ๏ธ ์ ์ฉ ๋ด์ฉ | ํญ๋ชฉ | ๊ฐ | |------|----| | ํ์ต ๋ฐ์ดํฐ | `"์ฑ๋ถ๋ช
์(๋) ์ ํ์ ํ ์ ์ ์์ ์ฌ์ฉ๋๋ ์์ฝ ์ฑ๋ถ์ด๋ค."` | | ์ํ ์ฌ์ด์ฆ | 1,289 | | ํ๊ท ์์ค | 0.0012 | | ์ ์ฌ๋ ํ๊ฐ | ์๋ฏธ์ ๊ตฌ๋ถ์ด ์ถฉ๋ถํ ์ด๋ฃจ์ด์ง์ง ์์ | | ๊ด์ฐฐ ์์ | โ์์ผยท์งํต์ โ ๊ณ์ด์ `์ด๋ถํ๋กํ`๊ณผ ๋น๊ด๋ จ ์ฑ๋ถ์ธ `์ผํ๋ํธ๋ฅจ`, `์ธํฐ๋ฆฌ์ง`์ด ๋ชจ๋ 0.91~0.94 ์์ค์ ์ ์ฌ๋๋ฅผ ๋ณด์ |
๐ ๊ด์ฐฐ ๋ด์ฉ - ๋ชจ๋ธ์ ์์ ์ ์ผ๋ก ์๋ ดํ์์ผ๋, ๋ฌธ์ฅ ํจํด์ ๋ฐ๋ณต์ฑ๊ณผ Positive-only ๋ฐ์ดํฐ ๊ตฌ์ฑ์ผ๋ก ์ธํด ํจ๋ฅ๊ตฐ ๊ฐ ์๋ฏธ์ ๊ฒฝ๊ณ๊ฐ ์ ๋๋ก ํ์ฑ๋์ง ์์์. - ์ ์ฒด ์ ์ฌ๋ ๋ถํฌ๊ฐ ๊ณผ๋ํ๊ฒ ๋๊ฒ ์๋ ดํ์ฌ, ์๋ฏธ๋ณด๋ค ๋ฌธ์ฒด ํจํด์ ์ค์ฌ์ผ๋ก ํ์ต๋ ๊ฒ์ผ๋ก ๊ด์ฐฐ๋จ. - ๊ฒฐ๋ก ์ ์ผ๋ก ๋ณธ ๋ชจ๋ธ์ ์ฑ๋ถ-์ ํ์ ํ ๊ฒฐํฉ ํ์ต์ด ์๋ฏธ ๊ฒ์ ํ์ง ๊ฐ์ ์ ์ค์ง์ ์ด์ ์ ์ ๊ณตํ์ง ์์์ ํ์ธํ์์ผ๋ฉฐ, ํ์ฌ ํ์ดํ๋ผ์ธ์๋ ์ ์ฉํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํจ.
| ํญ๋ชฉ | ๋ฒ์ | |------|------| | Python | 3.12.4 | | torch | 2.4.1 | | transformers | 4.44.2 | | sentence-transformers | 3.0.1 | | accelerate | 0.27.0 | | pandas | 2.2.3 |
๐
Release Info - Author: @Yoonyoul - Base Model: `intfloat/multilingual-e5-small` - Fine-tuned Model: `Yoonyoul/fine-tuned-e5-small-drugproduct` - Repository: https://github.com/ryukato/fine-tuned-e5-drugmodel - Last Updated: 2025-10-27