Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dependency Parser, 의존 구조 분석기

1,754 views

Published on

자연어 처리는 형태소 분석, 구문 분석, 의미 분석, 화용 분석의 단계로 진행된다.
본 자료에서는 구문 분석 중 구문 태깅 이후 의존 구조 분석에 대한 이론과 학습, 개발 결과를 정리했다.

이찬희, lunalcni@gmail.com

Published in: Data & Analytics
  • Login to see the comments

Dependency Parser, 의존 구조 분석기

  1. 1. Dependency Parser 구문 태깅부터 의존 구조 분석까지 이찬희 2019. 04. 04.
  2. 2. 자연어 처리 과정 형태소 분석 Morpheme analysis 구문 분석 Syntax analysis 의미 분석 semantic analysis 화용 분석 Pragmatic analysis 형태소 단위의 분절 및 POS 태그 부착 구문 태그 부착 문장구조 파악 단어의 중의성 해소 정보 추출 (대명사가 가리키는 의미부터...)
  3. 3. 구문 분석 • 어절 단위로 '구문 태그' 부착하고 '문장 구조' 파악 구(Phrase)를 기본 단위로 사용하며, 한국어 자연어 처리에서는 어절을 구로 하여, 문장 구조를 표현하고 있다. (형태소 단위로 문장 구조를 분석하기엔 문장 내 형태소가 많아 복잡도가 높아진다고 본 것 같음..) (그냥 통사론 이론을 바탕으로 제일 적합한 단위가 어절이어서 사용하는 것 같다)
  4. 4. 구문 분석 일반적으로 일컫는 구문 분석은 문장 구조 파악의 의미가 더 강한 것 같다. 그리고 구문 태깅보다 더 어렵다. • 공공 인공지능 오픈 API·DATA 서비스 포탈, http://aiopen.etri.re.kr/demo_nlu.php
  5. 5. 문장 구조를 위한 문법 문장 구조를 표현하기 위해서는 구조를 표현할 문법이 필요 "문법 모형은 문장 구조적 측면에서 계층적 구조가 강조되는 문법 모형과 계층적 관계를 최소한으로 하려는 문법 모형 두 가지로 크게 나누어 볼 수 있다." • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. (한국어 구문 분석 문법 모형)
  6. 6. 계층적 구조가 강조 → 구 구조 문법 Phrase structure grammar 계층적 관계를 최소 → 의존 문법 Dependency grammar 문장 구조를 위한 문법 • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. (한국어 구문 분석 문법 모형)
  7. 7. 문장 구조 (remind) • 구 구조 문법(Phrase structure grammar): 구를 구성하는 구조를 중심으로 • 의존 문법(Dependency grammar): 의존관계에 의해 구조를 정의 • 통사론, https://ko.wikipedia.org/wiki/통사론 • Dependency Grammar, http://taweb.aichi-u.ac.jp/tmgross/DG.html
  8. 8. 문장 구조 (remind) • 안광모, 지배소 후보 집합을 이용한 한국어 의존 구문 분석 알고리즘 찾아본 대부분의 자료는 '의존 문법'을 통한 문장 구조 해석을 진행 "한국어와 같이 비교적 어순이 자유로운 언어에서는 주로 의존 구문 분석 방법이 연구되어 왔으며 ... (후략)" 문장 구조에 대한 자세한 내용은 다음에... 오늘 진행 중
  9. 9. 의존 문법 • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. "의존 문법의 체계는 구문분석의 복잡도를 줄이고 효율적인 분석을 위해 제시된 문법 모형으로 문장 내의 성분들을 지배 의존 관계로 파악한 구문분석 모형이라고 할 수 있다."
  10. 10. 의존 문법 • 다양한 표현방식이 존재하며, 한국어 자연어 처리 전산분야 자료에서는 오른쪽이 좀 더 선호되는 것 같다. • Wikipedia - Dependency Grammar, https://en.wikipedia.org/wiki/Dependency_grammar 트리 방식 문장 자체에 굽은 화살표로 표현하는 방식
  11. 11. • 구 구조 문법은 언어에서 발생하는 어순을 규칙으로 정의하는 것부터 시작 • 언어학적인 가치는 높으나, 모든 상황을 고려하는 규칙 집합을 만드는 것은 현실적으로 불가 • 특히, 한국어의 생략과 자유로운 어순을 모두 표현하는 것은 어렵고 • 자연어 처리의 대상 중 하나인 인터넷 상의 비문을 포함하면 더욱 어렵다 의존 문법 - 복잡도 감소 구 구조 규칙(Phrase structure rule) 좌에서 우로 전이 첫 번째 규칙 = 문장(S)은 명사구와 동사구 순서로 구성된다.
  12. 12. • 실제 말뭉치에서 표현하는 정보량에서도 구 구조 문법과 의존 문법은 차이가 난다 • 예문: 경심이는 금년 나이 스물 다섯이다. 의존 문법 - 복잡도 감소 • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. 구 구조 문법 의존 문법 (S (NP_SBJ 경심이/NNP + 는/JX) (S (NP_AJT 금년/NNG) (S (NP_SBJ 나이/NNG) (VNP (NP 스물/NR) (VNP 다섯/NR + 이/VCP + 다/EF + ./SF))))) 1 5 경심/NNP+이/NP+는/JX 2 3 금년/NNG 3 4 나이/NNG 4 5 스물/NR 5 5 다섯/NR+이/VCP+다/EF+./SF
  13. 13. 의존 문법 – 지배 의존 관계 • NLP/의존 파서, https://nnoco.tistory.com/category/NLP/의존 파서 • 지배소(Governor): 의미의 중심이 되는 요소 • 의존소(Dependent): 지배소가 갖는 의미를 보완해주는 요소 • 수식 관계에서 수식의 대상과 수식 내용 정도의 의미를 가지는 것으로 보인다 • 예문에 대한 의존 문법의 해석 • 2번 어절 '금년'은 '나이'를 수식한다 • '금년'은 의존소가 되고 • '나이'는 지배소가 된다 의존 문법 1 5 경심/NNP+이/NP+는/JX 2 3 금년/NNG 3 4 나이/NNG 4 5 스물/NR 5 5 다섯/NR+이/VCP+다/EF+./SF
  14. 14. 한국어 구문 분석에서 사용하는 기본 규칙 • 1. 한국어는 지배소 후위 언어이다. 즉, 지배소는 피지배소보다 항상 뒤에 위치한다. • 2. 교차 의존 구조는 없다. • 3. 각 어절의 머리는 유일하다. (= 각 어절의 지배소는 하나이다.)
  15. 15. 의존 구조 분석기 구현 과정 1. 말뭉치 선정 2. 의존 구조 학습 3. 의존 구조 분석기 구현 • 구현 과정은 아래 논문을 따라서 진행 오진영, "지배소 후위 언어를 위한 효율적 구문분석", 2013
  16. 16. 1. 말뭉치 선정 • 주로 의존 구조 말뭉치 준비하는 과정이 3가지로 나뉜다. • 세종 말뭉치를 수기로 변경 • 세종 말뭉치를 자동으로 변경 • UCorpus와 같은 의존 구조로 작성된 말뭉치를 사용
  17. 17. 1. 말뭉치 선정 - Ucorpus • 울산대학교 한국어처리 연구실에서 구축한 세종 말뭉치 수기 변환 말뭉치 http://nlplab.ulsan.ac.kr/doku.php?id=ucorpus • 연구용은 무상, 연구 목적 이외에는 유상 기술 이전이 필요
  18. 18. 2. 의존 구조 학습 • CRFs(Continuous Random Fields) 알고리즘을 사용하여 학습 • sklearn-crfsuite 패키지를 사용 • 다단계 구단위화 알고리즘 적용 • 학습 과정 1. Feature를 정의 2. 모델 학습: Feature를 학습, 이후 정확도 확인
  19. 19. 2. 의존 구조 학습 - CRFs • Continuous Random Fields, 조건부 무작위장 • Sequence Labeling 문제를 해결할 수 있음
  20. 20. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 Sequence Labeling 문제는 주어진 입력 유닛 열(Sequence)에서 각 유닛마다 할당되야 할 Label을 예측하는 문제로, 여러 언어 처리 문제들을 포함하는 문제 형태이다. • Sequential Labeling with Deep Learning, https://sites.google.com/site/sighclt/haengsasogae/jayeon-eon-eocheoli-tyutolieol/2015tutorial/program/balpyo3-1
  21. 21. 구문 태깅 2-1. Feature 정의 (remind) Feature 설명 H_POS 어절의 첫 번째 형태소 품사 T_POS 어절의 마지막 형태소 품사, 하나의 형태소로 구성된 어절인 경우 H_POS와 같음 t_POS 어절의 마지막 전 형태소 품사, 어절의 길이가 3보다 작으면 사용 안함 h_POS 어절 첫 번째 형태소부터 마지막 전 형태소 사이에 XSA(형용사 파생 접미사), XSV(동사 파생 접미사), VCP(긍정 지정사)가 존재하면 해당 품사 지정 n_POS 다음 어절의 첫 번째 형태소 품사, 해당 형태소 뒤의 형태소 품사가 XSA, XSV면 통합 후 VA(형용사), VV(동사) 품사 지정 n_surface 다음 어절의 첫 번째 형태소 문자열, n_POS와 같이 통합되는 경우에는 문자열을 통합하여 지정 • 예시: 침실과 식당, 욕실에서 사용하는 갖가지 (후략) = 침실/NNG+과/JC 식당/NNG+,/SP 욕실/NNG+에서/JKB 사용/NNG+하/XSV+는/ETM 갖가지/NNG 어절 H_POS T_POS t_POS h_POS n_POS n_surface Label 침실/NNG+과/JC NNG JC NNG 식당 NP_AJT 식당/NNG+,/SP NNG SP NNG 욕실 NP_AJT 욕실/NNG+에서/JKB NNG JKB VV 사용하 NP_AJT 사용/NNG+하/XSV+는/ETM NNG ETM XSV XSV NNG 갖가지 VP_MOD 갖가지/NNG NNG NNG (후략) (후략) NP_OBJ
  22. 22. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시 시퀀스 Features Label 침실과 { "H_POS": "NNG", "T_POS": "SP", … "n_surface": "욕실" } NP_AJT 식당 { "H_POS": "NNG", "T_POS": "JKB", … "n_surface": "사용하" } NP_AJT 욕실에서 { "H_POS": "NNG", "T_POS": "ETM", … "n_surface": "갖가지" } NP_AJT 사용하는 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": "직물" } VP_MOD 갖가지 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": (후략) } NP_OBJ window size = ±1 학습 대상 학습 포함 주변 데이터 CRFs
  23. 23. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시 시퀀스 Features Label 침실과 { "H_POS": "NNG", "T_POS": "SP", … "n_surface": "욕실" } NP_AJT 식당 { "H_POS": "NNG", "T_POS": "JKB", … "n_surface": "사용하" } NP_AJT 욕실에서 { "H_POS": "NNG", "T_POS": "ETM", … "n_surface": "갖가지" } NP_AJT 사용하는 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": "직물" } VP_MOD 갖가지 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": (후략) } NP_OBJ window size = ±1 CRFs 학습 대상 학습 포함 주변 데이터
  24. 24. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시 시퀀스 Features Label 침실과 { "H_POS": "NNG", "T_POS": "SP", … "n_surface": "욕실" } NP_AJT 식당 { "H_POS": "NNG", "T_POS": "JKB", … "n_surface": "사용하" } NP_AJT 욕실에서 { "H_POS": "NNG", "T_POS": "ETM", … "n_surface": "갖가지" } NP_AJT 사용하는 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": "직물" } VP_MOD 갖가지 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": (후략) } NP_OBJ window size = ±1 CRFs 학습 대상 학습 포함 주변 데이터
  25. 25. 2. 의존 구조 학습 – CRF 적용 • 적절한 윈도우 사이즈가 존재하는가 • 첫 번째 어절의 지배소는 마지막 어절이 될 수도 있다. • 문장에 따라 적절한 윈도우의 범위는 달라질 수 있으며 일괄적인 적용이 불가 경심이는 금년 나이 스물 다섯이다. 1 5 경심/NNP+이/NP+는/JX 2 3 금년/NNG 3 4 나이/NNG 4 5 스물/NR 5 5 다섯/NR+이/VCP+다/EF+./SF 매일 욕실에서 1시간 반 이상 보낸다는 그는 체조와 텔레비전 시청, 식사까지 할 수 있는 욕실이 나와야 한다고 주장할 정도이다. 1 6 매일/NNG 2 6 욕실/NNG+에서/JKB 3 4 1/SN+시간/NNG 4 5 반/NNG 5 6 이상/NNG+을/JKO 6 7 보내/VV+ㄴ다는/ETM 7 19 그/NP+는/JX 8 11 체조/NNG+와/JC 9 10 텔레비전/NNG 10 11 시청/NNG+,/SP 11 14 식사/NNG+까지/JX _ 12 13 하/VV+ㄹ/ETM 13 14 수/NNG 14 15 있/VV+는/ETM 15 17 욕실/NNG+이/JKS 16 17 나오/VV+아야/EC 17 19 하/VX+ㄴ다고/EC 18 19 주장/NNG+하/XSV+ㄹ/ETM _ N+ 19 19 정도/NNG+이/VCP+다/EF+./SF 짧은 문장 긴 문장
  26. 26. 2. 의존 구조 학습 – 다단계 구단위화 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. (Cascade Chunking)
  27. 27. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 초기 상태 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  28. 28. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  29. 29. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  30. 30. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  31. 31. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 - 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  32. 32. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 - 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석" 앞의 어절이 현 어절의 의존소라서 대상이 아니다.
  33. 33. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 - 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석" 삭제됨 삭제됨 삭제됨
  34. 34. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  35. 35. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  36. 36. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 3단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  37. 37. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 4단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  38. 38. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 종료 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 -
  39. 39. 2. 의존 구조 학습 - 다단계 구단위화 – 학습 방법 • 학습을 위한 입력 데이터를 정확하게 생성하는 과정은 논문을 통해 확인하지 못함 • 단계별로 새롭게 검사하는 어절을 학습 데이터에 추가한다. • 윈도우는 단계에 존재하는 현재 어절과 다음 어절로 한다.
  40. 40. 2. 의존 구조 학습 - 다단계 구단위화 – 학습 방법 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 1단계 의존여부 의존 - 의존 - 의존 의존 - 삭제여부 삭제 삭제 삭제 어절 달걀의 것이 자리에 모였다. 2단계 의존여부 의존 의존 의존 - 삭제여부 삭제 어절 것이 자리에 모였다. 3단계 의존여부 의존 의존 - 삭제여부 삭제 이후 단계 더 이상 새로 검사할 어절이 없음 해당 문장에서 학습할 (의존소, 지배소, 의존여부) 목록 1단계 (닭과, 달걀의, 의존), (달걀의, 모든, -), (모든, 것이, 의존), (것이, 한, -), (한, 자리에, 의존), (자리에, 모였다., 의존) 2단계 (달걀의, 것이, 의존), (것이, 자리에, 의존) 새로 검사하는 어절 이미 검사한 어절
  41. 41. 2-1. 의존 구조 학습 – Feature 정의 • (의존소, 지배소) 검사대상마다 아래의 Feature를 정의 Feature 설명 H_POS 의존소 어절의 첫 번째 형태소 품사 T_POS 의존소 어절의 마지막 형태소 품사, 하나의 형태소로 구성된 어절인 경우 H_POS와 같음 t_POS 의존소 어절의 마지막 전 형태소 품사, 어절의 길이가 3보다 작으면 사용 안함 h_POS 의존소 어절 첫 번째 형태소부터 마지막 전 형태소 사이에 XSA(형용사 파생 접미사), XSV(동사 파생 접미사), VCP(긍정 지정사)가 존재하면 해당 품사 지정 n_POS 지배소 어절의 첫 번째 형태소 품사, 해당 형태소 뒤의 형태소 품사가 XSA, XSV면 통합 후 VA(형용사), VV(동사) 품사 지정 n_surface 지배소 어절의 첫 번째 형태소 문자열, n_POS와 같이 통합되는 경우에는 문자열을 통합하여 지정 H_PTAG 의존소 어절의 구문 태그 H_FTAG 의존소 어절의 기능 태그 n_PTAG 지배소 어절의 구문 태그 n_FTAG 지배소 어절의 기능 태그
  42. 42. 2-1. 의존 구조 학습 – Feature 정의 예시 Features = { "H_POS": "NNG", "T_POS": "JC" "t_POS": None, "h_POS": None, "n_POS": "NNG", "n_surface": "달걀", "H_PTAG": "NP", "H_FTAG": "CNJ" "n_PTAG": "NP", "n_FTAG": "MOD" } Label = "D" 형태소 분석 결과 구문 태깅 결과 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 1단계 의존여부 의존 - 의존 - 의존 의존 - 삭제여부 삭제 삭제 삭제 다단계 구단위화 결과 Features = { "H_POS": "NNG", "T_POS": "JKG" "t_POS": None, "h_POS": None, "n_POS": "MM", "n_surface": "모든", "H_PTAG": "NP", "H_FTAG": "CNJ" "n_PTAG": "DP", "n_FTAG": None } Label = "-"
  43. 43. 2. 의존 구조 학습 – 학습 결과
  44. 44. 2-2. 학습 결과 best_params {'c1': 2.2336, 'c2': 0.0662} best CV score 0.9441 model size 1.19M mean_train_score mean_test_score count 50 50 mean 0.9498 0.9431 std 0.0004 0.0004 max 0.9503 0.9441
  45. 45. 3. 의존 구문 분석기 구현 • MeCab와 연결 • MeCab와 세종 POS 태그 구조가 달라 호환을 위한 작업 진행 • MeCab의 형태소 분석 이후 구문 태깅이 이루어지도록 연결 • 구문 태거 연결 • 의존 구조 분석 모델 연결 • 시각화
  46. 46. 3. 의존 구문 분석기 구현 - 시각화 • Text Annotation Tools • TextAE, http://textae.pubannotation.org/ • 문장에 태그, 관계를 부착할 수 있도록 지원해준다.
  47. 47. 3. 의존 구문 분석기 구현: 실행 예시
  48. 48. 3. 의존 구문 분석기 구현: 실행 예시
  49. 49. 3. 의존 구문 분석기 구현: 실행 예시 직접 실행
  50. 50.

×