Practical Named Entity Recognition - beyondnlp/nlp GitHub Wiki

๋ฌธ์ œ์˜ ์ •์˜

Named-entity recognition (NER) (also known as entity identification, entity chunking and entity extraction) is a subtask of information extraction that seeks to locate and classify named entities in text into pre-defined categories such as the names of persons, organizations, locations, expressions of times, quantities, monetary values, percentages, etc.

์š”์•ฝํ•˜๋ฉด NER์€ ํ…์ŠคํŠธ์—์„œ ๊ธฐ ์ •์˜๋œ ์นดํ…Œ๊ณ ๋ฆฌ ์œ„์น˜์™€ ์–ด๋–ค Entitiy๋กœ ๋ถ„๋ฅ˜ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ์ธ๋ฌผ, ๊ธฐ๊ด€, ์ง€์—ญ, ์‹œ๊ฐ„ ํ‘œํ˜„, ์ˆ˜๋Ÿ‰, ํ†ตํ™”, ํผ์„ผํŠธ ๋“ฑ์„ ์˜๋ฏธํ•œ๋‹ค.

1. NE๋Š” ๊ณ„์† ๋ณ€ํ™”ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ง€์†์ ์ธ update๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. 
  - ์„œ๋น„์Šค ์ƒํ™ฉ์—์„œ ์ธ์‹ํ•ด์•ผ ๋  NE(์˜ํ™”๋ช…, ์ธ๋ช… ๋“ฑ )๊ฐ€ ๊ณ„์† ๋‚˜ํƒ€๋‚ฌ๋‹ค ์‚ฌ๋ผ์ง€๊ธฐ๋„ ํ•œ๋‹ค.
2. ๊ธฐ๊ณ„ํ•™์Šต์€ ์„œ๋น„์Šค์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งž์ถ”๋Š”๋ฐ๋Š” ๋‹จ๋…์œผ๋กœ๋Š” ๋ถˆ์ถฉ๋ถ„ํ•˜๋‹ค. ๋น ๋ฅธ ๋Œ€์‘ ์†์‰ฌ์šด ํŠœ๋‹์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
3. ๊ทœ์น™๊ธฐ๋ฐ˜ ์—ญ์‹œ ๋‹จ๋…์œผ๋กœ๋Š” ์„œ๋น„์Šค ์‚ฌ์šฉ์ด ์–ด๋ ต๋‹ค. ๊ทœ์น™๊ธฐ๋ฐ˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์žฌํ˜„์œจ์ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
  - ์žฌํ˜„์œจ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ์›์ธ ์ค‘ ํ•˜๋‚˜๋Š” ์„ฑ๋Šฅ ์ด์Šˆ ๋•Œ๋ฌธ์— ์งง์€ ์Œ์ ˆ์€ ๊ทœ์น™์—์„œ ๋ฐฐ์ œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ด๋‹ค. 
  - ๊ทœ์น™์„ ์ž์„ธํžˆ ๊ธฐ์ˆ ํ•˜๋ฉด ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ์ข์•„์ง€๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •ํ™•๋ฅ ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทœ์น™์€ ๊ฐ€๊ธ‰์  ์ •ํ™•๋ฅ ์ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š” ๋ฒ”์œ„์—์„œ ์ž์„ธํ•œ๊ฒŒ ์ข‹๋‹ค.
4. ํ”„๋กœ๊ทธ๋žจ์€ ์„œ๋น„์Šค์— ์‰ฝ๊ฒŒ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ˆ˜์ •์ด ์šฉ์ดํ•ด์•ผ ํ•œ๋‹ค.
# ๊ทธ๋ž˜์„œ ์„œ๋น„์Šค๋ฅผ ์—ผ๋‘ํ•ด ๋‘”๋‹ค๋ฉด ML๋กœ ํ•™์Šต์„ ํ•˜๋”๋ผ๋„ decoder๋ฅผ ์ง์ ‘ ๊ฐœ๋ฐœํ•˜๊ณ  ์†๋„ ํŠœ๋‹๋„ ๋ณ‘ํ–‰ํ•œ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด(optional)

์ƒํ™ฉ์— ๋”ฐ๋ผ ๋งŒ๋‚˜๋Š” ๋ฌธ์ œ๋“ค

์ด ๊ธ€์—์„œ๋Š” NER๊ฐœ๋ฐœ์‹œ ์‹ค๋ฌด์—์„œ ๊ณ ๋ คํ•ด์•ผ ๋  ๊ฒƒ๊ณผ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์„œ์ˆ ํ•œ๋‹ค.

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

์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๊ฐ€์ •ํ•œ๋‹ค.( ๋‚ด๊ฐ€ ๋งŒ๋‚œ ์ƒํ™ฉ )

์šฐ์„  ์ž„์˜์˜ ํ•™์Šต ์ฝ”ํผ์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํ•™์Šต ์ฝ”ํผ์Šค์˜ ์–‘์€ 10๋งŒ ์ •๋„์ด๋‹ค. ์ด 15๊ฐœ์˜ ๋Œ€ํ‘œ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ํƒœ๊น…์ด ๋ผ ์žˆ๋‹ค.( ์„ธ๋ถ€ ํƒœ๊ทธ๋Š” 50์—ฌ๊ฐœ ) ๊ทธ๋Ÿฐ๋ฐ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ• ๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๋Œ€ํ‘œํƒœ๊ทธ๊ฐ€ ์•„๋‹ˆ๊ณ  ์„ธ๋ถ€ ํƒœ๊ทธ์ด๊ณ  50์—ฌ๊ฐœ ์ค‘ 20์—ฌ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค. NER ์—ํŠธ๋ฆฌ ํƒœ๊ทธ์…‹

  • ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฑธ๋ฆผ๋Œ๋“ค

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋‚˜๋Š” ์ฒซ๋ฒˆ์งธ ๋‚œ๊ด€์€ alignment์ด๋‹ค. alignmnet๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๊ณ„๋ฒˆ์—ญ์— source language์™€ target langage๊ฐ„์— ๋งคํ•‘ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ธ๋ฐ NER์„ ํ•˜๊ฒŒ ๋˜๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค. NER ์ฝ”ํผ์Šค๋Š” <>๋กœ ๋‘˜์–ด์Œ“์ธ ํ˜•ํƒœ์˜ Entity๊ฐ€ ํฌํ•จ๋œ Plain txtํ˜•์‹์œผ๋กœ ๋ผ ์žˆ๋‹ค.

์˜ˆ์‹œ:

์˜ค๋Š˜ <๊น€์–ด์ค€์˜ ๋‰ด์Šค๊ณต์žฅ:ETC_PROGRAM>์„ ๋“ค์—ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ˜•ํƒœ์†Œ ๋‹จ์œ„๋กœ ์ •๋ ฌ(sort ์•„๋‹˜)์„ ํ•œ๋‹ค. ํ˜•ํƒœ์†Œ ๋ถ„์„์€ ์–ด์ ˆ์˜ ๊ฒฝ๊ณ„๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ํ•„์š”ํ•˜๊ณ  CRF ํ•™์Šต์šฉ CONLL Format ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋„ ํ•„์š”ํ•˜๋‹ค.

NER ์ฝ”ํผ์Šค๋ฅผ plain text(NE๊ฐ€ ํƒœ๊น…๋˜์ง€ ์•Š์€)๋กœ ๋งŒ๋“ค๊ณ  ํ˜•ํƒœ์†Œ ๋ถ„์„์„ ํ•œ๋‹ค.( ์–ด์ ˆ์˜ ํฌ์ง€์…˜์„ ์ž…๋ ฅ์–ด์ ˆ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ) ๊ทธ๋Ÿฌ๋ฉด ํ˜•ํƒœ์†Œ ๋ถ„์„๋œ ๋ฌธ์ž์—ด์ด ๋งŒ๋“ค์–ด์ง€๊ณ  NER ์›๋ณธ ์ฝ”ํผ์Šค์— alignmentํ•˜๋Š” ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. ์–ด๋ ค์šด ์ž‘์—…์€ ์•„๋‹ˆ์ง€๋งŒ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด๋‹ค.

  • gazette ์ถ”์ถœ ์ดํ›„์— ํ•™์Šต ๋ฐ์ดํ„ฐ์—์„œ gazette๋ฅผ ์ถ”์ถœํ•œ๋‹ค. gazette(์ดํ•˜ GA)๋Š” NER์˜ ๊ธฐ๋ถ„์„ ์‚ฌ์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. GA๋Š” ํ˜•ํƒœ์†Œ ๋‹จ์œ„๋กœ ์ถ”์ถœํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ํ˜•ํƒœ์†Œ์— n๊ฐœ์˜ ๋ ˆ์ด๋ธ”์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ƒ๊ธด๋‹ค. ์ „์ฒด๋ฅผ ๋‹ค ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ๋นˆ๋„์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด ์ƒ์œ„ 2,3๊ฐœ ์ •๋„ ๋ ˆ์ด๋ธ”๋งŒ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

โ€™โ€™โ€™ GA์˜ˆ์ œ โ€˜โ€™โ€™

  • ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ์ด์ œ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ํ•™์Šต ๋ฐ์ดํ„ฐ์— ์žˆ๋‹ค๊ณ  ํ•˜์ž
<๊น€์–ด์ค€์˜ ๋‰ด์Šค๊ณต์žฅ:ETC_PROGRAM>

์š”๊ตฌ์‚ฌํ•ญ์—๋Š” ETC_PROGRAM์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊น€์–ด์ค€์˜ ๋‰ด์Šค๊ณต์žฅ์€ Named Entity์—์„œ ํ•ด์ œ๊ฐ€ ๋œ๋‹ค ์ˆ˜์ž‘์—…์„ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ํ•œ ๊น€์–ด์ค€์€ PERSON์œผ๋กœ ํƒœ๊น…๋˜์ง€ ์•Š๋Š”๋‹ค.

์ฆ‰ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฌธ์„œ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๋‹ค.

๊น€์–ด์ค€์˜ ๋‰ด์Šค๊ณต์žฅ

ํ•™์Šต ๋ฐ์ดํ„ฐ์—์„œ '๊น€์–ด์ค€'์€ ํƒœ๊น…์ด ๋˜๊ธฐ๋„ ํ•˜๊ณ  ๋˜์ง€ ์•Š๊ธฐ๋„ ํ•˜๋Š” ์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ์•ผ๊ธฐ๋œ๋‹ค.

๊ทธ๋Ÿผ ์ฒ˜์Œ๋ถ€ํ„ฐ 50๊ฐœ์˜ ์„ธ๋ถ€ ํƒœ๊ทธ๋ฅผ ๋‹ค ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค๊ฐ€?๋ผ๊ณ  ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋‹ค. NER์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ ์„ฑ๋Šฅ์€ label์˜ ๊ฐœ์ˆ˜์— ๋ฐ˜ ๋น„๋ก€ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋˜๋„๋ก ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” ํ•„์š”ํ•œ label๋งŒ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ๋‘˜ ์‚ฌ์ด์˜ trade off๋Š” ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

  • ์ž๋™ ๊ทœ์น™ ์ถ”์ถœ ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์žˆ๋‹ค๋ฉด ์ˆ˜์ž‘์—…์œผ๋กœ ๊ทœ์น™์„ ๋ฝ‘์ง€ ์•Š๊ณ  ์ž๋™์œผ๋กœ ๊ทœ์น™์„ ์ถ”์ถœํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  1. ์กฐ๊ฑด <๋Œ€์ƒ> ex. ๊ต๊ฐ <ํ™๊ธธ๋™:person>
  2. <๋Œ€์ƒ> ์กฐ๊ฑด ex. <ํ™๊ธธ๋™ :person> ์”จ
  3. ์กฐ๊ฑด1 <๋Œ€์ƒ> ์กฐ๊ฑด2 ex. ( <19:age> )
  4. ์กฐ๊ฑด1 <> ์กฐ๊ฑด2 ex. ์‚ฌ๋‹จ์žฅ <: person> ์ค‘์žฅ
    • <๋Œ€์ƒ> * ex. * ๋ฌธ์žฌ์ธ *
  • ๋‹ค์–ด์ ˆ NE ๋งค์นญ ๋ฐฉ๋ฒ• ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–ด์ ˆ์˜ ๊ฒฝ์šฐ๋Š” Aho Corasick(์ดํ•˜ AC)์œผ๋กœ ๋งค์นญํ•œ๋‹ค. ๋‹ค๋งŒ ์ฃผ์˜ํ•  ์ ์€ ์–ด์ ˆ์˜ ๊ฒฝ๊ณ„์— ์žˆ๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”ํ•œ๋‹ค.(์–ด์ ˆ์˜ ์ค‘๊ฐ„์— ๋งค์นญ๋œ ๊ฒฝ์šฐ๋Š” ๋ฒ„๋ฆผ)

  • NE๋Š” ์งง์„์ˆ˜๋ก NE ์ค‘์˜์„ฑ์ด ๋†’์•„์ง€๊ณ  ๊ธธ์–ด์งˆ์ˆ˜๋ก ๋‚ฎ์•„์ง„๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ 5๊ฐ€์ง€ ์กฐ๊ฑด์€ ํ˜•ํƒœ์†Œ ๋‹จ์œ„( ์งง์€ NE )์ผ๋•Œ ์ ์šฉํ•˜๊ณ 

  • ๊ธด NE( category๊ฐ€ 1๊ฐœ ์ธ ๊ฒฝ์šฐ )๋Š” AC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•œ๋‹ค.

๊ธฐ๊ณ„ํ•™์Šต

CRF๋กœ ํ•™์Šต๋ฐฉ๋ฒ•์„ ์ •ํ–ˆ๋‹ค๋ฉด CRF++, CRFSUITE ์ •๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.( ์—ด๊ฑฐํ•œ ๊ฒƒ ์ด์™ธ์—๋„ CRF๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋งŽ์ด ์žˆ๋‹ค ) CRF++์€ ์ •ํ™•๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋†’๊ธดํ•˜์ง€๋งŒ 10๋งŒ ๊ฑด ์ด์ƒ์—์„œ๋Š” ํ•™์Šต ์†๋„๊ฐ€ ๋А๋ ค ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค.( ๋ฌผ๋ก  ์ ์€ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ์‚ฌ์šฉํ• ๋งŒํ•˜๋‹ค ) CRFSUITE๋Š” single thread์ž„์—๋„ ์ƒ๋‹นํžˆ ๋น ๋ฅด๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ 10๋งŒ ์ •๋„์—ฌ์„œ CRFSUITE๋ฅผ ์„ ํƒํ•œ๋‹ค. CRFSUITE๋Š” 3๊ฐ€์ง€ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•œ๋‹ค.

  • learn : ํ•™์Šต์šฉ
  • tag : ํ…Œ์ŠคํŠธ์šฉ
  • dump : ๋ชจ๋ธ์„ txt ํŒŒ์ผ๋กœ ๋ณ€ํ™˜

crfsuite๋ฅผ ํ†ตํ•ด model์„ dumpํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์˜ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

FILEHEADER = {
  magic: lCRF
  size: 28242501
  type: FOMC
  version: 100
  num_features: 0
  num_labels: 23
  num_attrs: 338547
  off_features: 0x30
  off_labels: 0x8B4EE4
  off_attrs: 0x8B5A0C
  off_labelrefs: 0x169C145
  off_attrrefs: 0x169C515
}

LABELS = {
      0: B-NP
      1: B-PP
      2: I-NP
      3: B-VP
      4: I-VP
      5: B-SBAR
      6: O
      7: B-ADJP
      8: B-ADVP
      9: I-ADVP
     10: I-ADJP
     11: I-SBAR
     12: I-PP
     13: B-PRT
     14: B-LST
     15: B-INTJ
     16: I-INTJ
     17: B-CONJP
     18: I-CONJP
     19: I-PRT
     20: B-UCP
     21: I-UCP
     22: I-LST
}

ATTRIBUTES = {
      0: U00=
      1: U01=
      2: U02=Confidence
      3: U03=in
      4: U04=the
      5: U05=/Confidence
      6: U06=Confidence/in
      7: U10=
... (snip) ...
}

TRANSITIONS = {
  (1) B-NP --> B-NP: 2.327985
  (1) B-NP --> B-PP: 4.391125
  (1) B-NP --> I-NP: 30.372649
  (1) B-NP --> B-VP: 7.725525
  (1) B-NP --> B-SBAR: 1.821388
  (1) B-NP --> O: 3.805715
  (1) B-NP --> B-ADJP: 4.801651
  (1) B-NP --> B-ADVP: 3.842473
... (snip) ...
}

TRANSITIONS_FROM_BOS = {
  (2) BOS --> B-NP: 17.875605
  (2) BOS --> B-PP: -0.318745
  (2) BOS --> I-NP: -4.387101
  (2) BOS --> B-VP: -0.383031
  (2) BOS --> I-VP: -1.163315
  (2) BOS --> B-SBAR: 1.368176
  (2) BOS --> O: 2.783132
... (snip) ...
}

TRANSITIONS_TO_EOS = {
  (3) B-NP --> EOS: 16.156051
  (3) B-PP --> EOS: -1.045312
  (3) I-NP --> EOS: -2.762051
  (3) B-VP --> EOS: -0.767247
  (3) I-VP --> EOS: -1.113502
  (3) B-SBAR --> EOS: -2.407145
  (3) O --> EOS: 4.131429
... (snip) ...
}

STATE_FEATURES = {
  (0) U00= --> B-NP: -2.622045
  (0) U00= --> B-PP: -1.562976
  (0) U00= --> I-NP: -2.555526
  (0) U00= --> B-VP: -1.329829
  (0) U00= --> I-VP: -1.152970
  (0) U00= --> B-SBAR: -2.590170
  (0) U00= --> O: -1.584688
  (0) U00= --> B-ADJP: -1.526879
... (snip) ...
}

crfsuite๋กœ ํ•™์Šตํ•˜๊ณ  dump๋ฅผ ์ด์šฉํ•ด ๋ชจ๋ธ์„ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋‚ด๋ฆฐ ์ดํ›„์— ํ•ด๋‹น ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ฒจ decoder๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค.

decoder๊ฐœ๋ฐœ์‹œ ์ฃผ์˜ํ•  ๋‚ด์šฉ

crfsuite์—์„œ BOS, __EOS__๋Š” ํ•™์Šต์‹œ feature์ค‘ ํ•˜๋‚˜๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ tutorial๋กœ ๋งŒ๋“ค์–ด ๋†“์€ chunking.py๋‚˜ ner.py๋ฅผ ๋ณด๋ฉด ๋ฌธ์žฅ์˜ ์‹œ์ž‘ ํ˜•ํƒœ์†Œ์™€ ๋งˆ์ง€๋ง‰ ํ˜•ํƒœ์„œ์— BOS, __EOS__๋ฅผ ๊ฐ๊ฐ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ์ˆ˜ ์žˆ๋‹ค.

crf++๋„ ํ…์ŠคํŠธ๋กœ ๋ชจ๋ธ์„ ๋ณ€ํ™˜ํ• ์ˆ˜ ์žˆ๋‹ค. ๋””์ฝ”๋”๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ์ค‘๊ฐ„์— ์ปจ๋ฒ„ํ„ฐ๋งŒ ์žˆ์œผ๋ฉด ์–ด๋””์—์„œ ํ•™์Šตํ•œ ๋ชจ๋ธ์ด๊ฑด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ž˜์„œ Node๋ฅผ ๊ตฌ์„ฑํ• ๋•Œ BOS๋‚œ EOS๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค. '๋ฏธ์…˜ ์ž„ํŒŒ์„œ๋ธ”' ์ด๋ผ๋Š” ๋‘ ์–ด์ ˆ(ํ˜•ํƒœ์†Œ)๋ฅผ decoder์—์„œ ๋ถ„์„ํ• ๋•Œ ๋ฏธ์…˜์— ํ•ด๋‹นํ•˜๋Š” feature์˜ ํ™•๋ฅ ๋“ค์˜ ๊ณฑ๊ณผ ์ž„ํŒŒ์„œ๋ธ”์— ํ•ด๋‹นํ•˜๋Š” feature์˜ ํ™•๋ฅ ๋“ค์˜ ๊ณฑ ๊ทธ๋ฆฌ๊ณ  ๋ฏธ์…˜์ด ๊ฐ€์งˆ์ˆ˜ ์žˆ๋Š” label๊ณผ ์ž„ํŒŒ์„œ๋ธ”์ด ๊ฐ€์งˆ์ˆ˜ ์žˆ๋Š” label์˜ ์ „์ด ํ™•๋ฅ ์ด ์žˆ์œผ๋ฉด decoder๋Š” ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ๋‹ค. ๊ฐœ๋ฐœํ•  ๋‹น์‹œ dump ๋ฐ์ดํ„ฐ์™€ crfsuite tag์˜ ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์ถœ๋ ค๋˜๋Š” ํ™•๋ฅ ๊ฐ’์„ ๋น„๊ตํ•ด๋ณด๋ฉด ๊ฐ„๊ฐ„ํžˆ ์†Œ์ˆ˜์  5์งธ ์ž๋ฆฌ์—์„œ 1์”ฉ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”๋ฐ ์•„๋งˆ๋„ ์ž๋ฆฟ์ˆ˜ ๋ฌธ์ œ๋กœ ๋ณด์ธ๋‹ค.

๊ฒฐ๊ณผ ํ™”๋ฉด

  • NER RESULT

reference

โš ๏ธ **GitHub.com Fallback** โš ๏ธ