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.

Phrase Tagger, 구문 태거

구문 분석은 (한국어) 자연어 처리 과정 중 한 단계로,
구문 분석 과정은 구문 태깅과 의존 구문 분석 과정으로 나눌 수 있다.

해당 자료에서는 구문 태거에 대한 간단한 자료와 실제 구축 과정, 테스트 결과를 정리했다.

이찬희, lunalcni@gmail.com

  • Login to see the comments

Phrase Tagger, 구문 태거

  1. 1. Phrase Tagger 모델 학습부터 태그 부착까지 이찬희
  2. 2. 자연어 처리 과정 형태소 분석 Morpheme analysis 구문 분석 Syntax analysis 의미 분석 semantic analysis 화용 분석 Pragmatic analysis 형태소 단위의 분절 및 POS 태그 부착 구문 태그 부착 문장구조 파악 단어의 중의성 해소 정보 추출 (대명사가 가리키는 의미부터...)
  3. 3. 구문 분석 • 어절 단위로 '구문 태그' 부착하고 '문장 구조' 파악 구(Phrase)를 기본 단위로 사용하며, 한국어 자연어 처리에서는 어절을 구로 하여, 문장 구조를 표현하고 있다. (형태소 단위로 문장 구조를 분석하기엔 문장 내 형태소가 많아 복잡도가 높아진다고 본 것 같음..) (그냥 통사론 이론을 바탕으로 제일 적합한 단위가 어절이어서 사용하는 것 같다)
  4. 4. 구문 태그 구문 태그 = 구문 표지 + 기능 표지 Phrase tag Functional tag 용어가 자료마다 혼재되어 있음.. 태그 = Tag 표지 = Tag 구문 태그 = 구문 표지 ?? NP_OBJ = NP + OBJ 목적격 체언구 체언구 목적어
  5. 5. 구문 태그 구문 표지 기능 표지 기타 표지 • 오진영, 지배소 후위 언어를 위한 효율적 분석 • 홍정하, 구문분석 말뭉치의 이해와 활용
  6. 6. 구문 표지와 형태소 품사 태그 • mecab-ko-dic 품사 태그 설명, https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=589544265 세종 품사 태그 총 42개 구문 표지 보통 총 8개 안팎
  7. 7. 기능 표지와 문장 성분 기능 표지 한국어 문장 성분 비슷 ≈ • https:// https://ko.wikipedia.org/wiki/한국어의_문장_성분
  8. 8. 구문 태깅은... (제 생각에) 문장 구조 분석을 위해 적절한 개수의 구 단위 품사와 문장 성분을 붙인다.
  9. 9. 문장 구조 • 구 구조 문법(Phrase structure grammar): 구를 구성하는 구조를 중심으로 • 의존 문법(Dependency grammar): 의존관계에 의해 구조를 정의 • 통사론, https://ko.wikipedia.org/wiki/통사론 • Dependency Grammar, http://taweb.aichi-u.ac.jp/tmgross/DG.html
  10. 10. 문장 구조 • 안광모, 지배소 후보 집합을 이용한 한국어 의존 구문 분석 알고리즘 찾아본 대부분의 자료는 '의존 문법'을 통한 문장 구조 해석을 진행 "한국어와 같이 비교적 어순이 자유로운 언어에서는 주로 의존 구문 분석 방법이 연구되어 왔으며 ... (후략)" 문장 구조에 대한 자세한 내용은 다음에...
  11. 11. 구문 태거 구현 과정 1. 말뭉치 전처리 2. 구문 태깅 모델 학습: 기본 자질 학습, 1차/2차 추가 자질 학습 3. 구문 태거 구현 • 구현 과정은 아래 논문 2편을 따라서 진행 오진영, "엔트로피 지도 CRF를 이용한 한국어 어절 구문 태그 예측", 2009 오진영, "지배소 후위 언어를 위한 효율적 구문분석", 2013
  12. 12. 1. 말뭉치 전처리 • 세종계획 21 구문분석 말뭉치를 사용 • 구 구조 문법의 말뭉치: 의존구조 학습을 위해서는 형태 변경이 필요 • 433,839어절, 43,828문장 • 전처리 과정 1. 말뭉치 파서 생성 2. 오류 문장 수정
  13. 13. 세종계획 21 구문분석 말뭉치 • 현대문어 – 구문분석 말뭉치, https://ithub.korean.go.kr/user/total/referenceManager.do
  14. 14. 세종계획 21 구문분석 말뭉치 말뭉치 파일 목록 말뭉치 파일 내용 문장 구조 문장 구조
  15. 15. 1-1. 말뭉치 파서 생성 • pyparsing 패키지를 이용하여 파서 생성 • pyparsing, https://github.com/pyparsing/pyparsing/
  16. 16. 1-2. 오류 문장 수정 • 구 구조의 규칙이 명확하게 설명되어 있지 않아 직접 확인하면서 만듦 • 말뭉치 내에 오류로 보이는 구조가 있어 수정 • 미진한 부분 • 개별 어절이나 형태소의 문제가 아닌 '인용절에 대한 처리'는 수정에 시간이 많이 걸릴 것 같았고, 어떤 방식으로 수정하는게 적절한지 몰라 이번 과정에서는 제외
  17. 17. 말뭉치 내 인용절 등장 상위에 인용절을 포함한 문장이 나오고 하위에 인용절이 Q와 같은 기호를 달고 존재하는데 Q=2라는 문장을 복구하게 위해 Q1절과 Q2절을 어떻게 합쳐야 할지 모르겠음 Q=2가 형태소 분석이 되어있는 것도 이상함... 상위 문장 하위 문장 1 하위 문장 2
  18. 18. 2. 구문 태깅 모델 학습 • CRF(Continuous Random Field) 알고리즘을 사용하여 학습 • sklearn-crfsuite 패키지를 사용 • 학습 과정 1. Feature를 정의 2. 모델 학습: 기본, 1차, 2차 학습, Feature를 누적하여 학습, 이후 결과 비교 • 참고 1: 구문 태깅과 같은 문제를 'Sequence labeling problem'이라고 부름 • 참고 2: HMM -> CRF -> RNN -> LSTM로 알고리즘 사용 트랜드가 이어짐 • 이창기, 딥러닝 기반의 자연어 처리 기술, https://spri.kr/posts/view/21854?code=speech • Conditional Random Field (CRF) 기반 품사 판별기의 원리와 HMM 기반 품사 판별기와의 차이점, https://lovit.github.io/nlp/2018/09/13/crf_based_tagger/
  19. 19. 2-1. 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와 같이 통합되는 경우에는 문자열을 통합하여 지정 • 예시: 침실과 식당, 욕실에서 사용하는 (후략) = 침실/NNG+과/JC 식당/NNG+,/SP 욕실/NNG+에서/JKB 사용/NNG+하/XSV+는/ETM 어절 H_POS T_POS t_POS h_POS n_POS n_surface 침실/NNG+과/JC NNG JC NNG 식당 식당/NNG+,/SP NNG SP NNG 욕실 욕실/NNG+에서/JKB NNG JKB VV 사용하 사용/NNG+하/XSV+는/ETM NNG ETM XSV XSV (후략) (후략)
  20. 20. 2-2. 모델 학습 • Feature를 추가하며 학습 • 기본 학습: [H_POS, T_POS, t_POS] • 1차 학습: [H_POS, T_POS, t_POS, h_POS, n_POS] • 2차 학습: [H_POS, T_POS, t_POS, h_POS, n_POS, n_surface] • L-BFGS 알고리즘, 10-fold cross validation, 50회 진행 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와 같이 통합되는 경우에는 문자열을 통합하여 지정 Feature 정의
  21. 21. 2-3. 학습 결과: 기본 평가 best_params {'c1': 1.1139, 'c2': 0.0183} best CV score 0.9297 model size 0.14M mean_train_score mean_test_score count 50 50 mean 0.9363 0.9295 std 0.0006 0.0001 max 0.9371 0.9297
  22. 22. 2-3. 학습 결과: 1차 평가 best_params {'c1': 0.7351, 'c2': 0.0027} best CV score 0.9359 model size 0.22M mean_train_score mean_test_score count 50 50 mean 0.9422 0.9355 std 0.0007 0.0001 max 0.9431 0.9359
  23. 23. 2-3. 학습 결과: 2차 평가 best_params {'c1': 0.9273, 'c2': 0.0725} best CV score 0.9586 model size 1.01M mean_train_score mean_test_score count 50 50 mean 0.9842 0.9570 std 0.0109 0.0017 max 0.9969 0.9586
  24. 24. 2-3. 학습 결과: 종합 기본 1차 2차 사용 Feature 집합 H_POS(첫 번째 품사) T_POS(마지막 품사) t_POS(마지막 전 품사) H_POS T_POS t_POS h_POS(파생 접미사, 긍정 지정사) n_POS(다음 어절 첫 번째 품사) H_POS T_POS t_POS h_POS n_POS n_surface (다음 어절 첫 번째 문자열) 최고 성능 Hyperparameter c1: 1.1139 c2: 0.0183 c1: 0.7351 c2: 0.0027 c1: 0.9273 c2: 0.0725 최고 Train 정확도 0.9371 0.9431 0.9969 최고 Test 정확도 0.9297 0.9359 0.9586 모델 사이즈 0.14M 0.22M 1.01M
  25. 25. 3. 구문 태거 구현 • MeCab와 연결 작업 • MeCab와 세종 POS 태그 구조가 달라 호환을 위한 작업 진행 • MeCab의 형태소 분석 이후 구문 태깅이 이루어지도록 연결
  26. 26. 3. 구문 태거 구현: 실행 예시
  27. 27. 3. 구문 태거 구현: 실행 예시 직접 실행
  28. 28. 끝다음 작업은 의존구조 학습

×