2
-
Syntactic Structure: Consistency and Dependency (30 mins) 언어, 구성 요소 및 종속성의 구문 구조에 사용괸 몇가지 아이디어를 살펴보고 이를 소개하려고 함
- Dependency Grammar and Treebanks (15 mins) 종속성 구조에 더 초점을 맞춤 종속성 문버과 종속성 크리 뱅크
- Transition-based dependency parsing (15 mins) 간단하고 매우 효과적
- Neural dependency parsing (20 mins)
3 사람들이 문장의 구조에 대해 어떻게 생각하는지 소개, 그 위에 구조를 두어 인간의 언어가 의미를 전달하는 방식을 설명하는 것
의미의 출발점과 본질적으로 지금 까지 단어 벡터를 다룬 것은 단어가 있다는 것ㅇ미
그리고 단어는 분명히 인간 언어의 의미에소 중요한 부분임
그러므로 무낮ㅇ을 구성하는 단어를 쉽게 차악하는 방법중 하나가 품사를 보는 것임 cat은 명사 by는 전치사 등등
한정자(DET)-> 많은 단어가 포함되어있다는 것
아래의 예시에서 이 단어들은 고양이를 선택하는 일종의 결정적 기능을 갖고 있음 ex) the , a, this, that, every
그러나 우리가 언어로 의사소통을 하고 싶을 떄 이 단어는 문맥에 따라 가리키는게 다름(빈도수와 상관없이 무낵임)
즉 아래와 같이 단어단위로 보면 문맥을 못봄
그럼 더 큰 단위임 구(phrases)단위로 보자.
명사구 (the cuddly cat) 그러나 우리는 구 내부에 무언가를 구축함으로서 구를 더 크게 만들 수 있음
[by [the door]] NP -> [the door] 구안에 또 다른 명사구가 있음 / 그리고 더 확장시켜 이를 전치사구[PP]로 만들 수 있음
두 문장을 합치면 더 큰 명사구 -> 중접된 구 아이디어
6
우리는 인간언어의 더 큰 구조를 구축할 수도 있음
어떤 사정에 의해 cat, dog은 명사이고 a, is는 한정사라는 것을 알 수 있다고 해보자.
그럼 이걸 이용해서 더 많은것 을 할 수 있다
-> large cat, barking dog같은 걸 말할 수 있음
-> 한정사 뒤에 명사구가 있을 수 있음을 시사함
-> 즉 이와 같이 구들의 결합에 대한 규칙을 알고있으면 그 문법에 따라 다양한 문장을 생성할 수 있음
-> 이렇게 문법과 어휘로 구문 분석, 문장 확장이 가능함
또한 아래와 같은 동사구도 존재함
7 Two views of linguistic structure: Dependency structure 이것이 바로 자연어 처리에서 구성요소문법이라고 하는것이다
구성요소문법의 의미 찾아 쓰기
Dependency Grammar and Dependency Structure
우리가 문장을 갖고있을때 단어게 대해 다른 단어가 그것을 수정하여고 하는것
머리에서 의존성 문법ㅂ에서 의족ㄴ성이라고하는 방향으로 화살표를 그려 수정, 의존성, 부착관계를 보여주고 있음 이것이 시작임
또 다른 종속성은 큰 상자를 살펴보는 것임
종속성 문법
nlp에서 가장 널리 쓰임
실제로 생성에 관여하는 프레임워크로 다양한 인간언어에 대해 공통된 종속성 문법을 시도하고 제공하기 위해 설정됨
그리고 보편적 종속성을 디자인하는 맥락에서 내여진 디자인 결정에서 우리가 결정한 것은 어떤 언어는 전치사를 많이 상ㅇ라고 다른 많은 언어에서는 대소문자 표시응 훨씬 도 많이 사용한다는 것임 따라서 독일어와 같은 것을 봤다면 genitive및 dative케이스와 같은 케이스 표시를 더 많이 보았을 것 이다.
다른언어로도 가능함 즉 언어마다 다름
그래서 보편적인 의존성 아에서 본질적으로 상자 안에는 명사로 표시된 케이스처럼 튀급된다
-> in또한 “create”의 종속이므로 자연스업게 “look”도 “creat”에 종속이다
-> 우리가 채택한 구조에서는 “create”에 종속된다
같은 맥락으로 in은 kitchen의 종속이다.
by은 door의 종속이다.
그리고 우리는 kitchen, door 옆에 이러한 전치사구를 가지고 있고 그들이 잘 수정하길 원함
부엌에서 create를 하기 때문에 그리고 door 옆에서 crate을 하기 때문에 아래와 같음
그러면 이 문장의 완전한 의존구조가 제공됨
9
구문구조를 알아야하는 이유는?
인간은 복잡한 의미를 전달하기 위해 단어를 더 큰 단위로 구성함으로써 복잡한 생각을 전달한다.
-> 정말 복잡한 생각은 한단어로 표현할 수 없기 때문
-> 언어의 구문을 사용하면 단어를 더 큰 단위로 결합하여 복잡한 의미를 구축하고 다른 사람들에게 전달할 수 있습니다.
청취자들은 무엇이 무엇을 수정하는지 이해할 필요가 있다.
모델은 언어를 올바르게 해석하기 위해 문장 구조를 이해할 필요가 있다.
10 언어의 구조를 구축하는 방법에 대한 이러한 선택이 언어의 해석을 변경한다는 것임
모델은 어떤단어가 수정되는지, 즉 어떤 단어가 다른 단어에 의존하는지에 대해 일종의 확률적 방식으로 선택하여 그들이 생삿하는 문장의 해석을 생각해내야 함
어려움의 예
자연어의 모호성(부착 모호성)attachment ambiguity
아래 신문 헤드라인에는 두가지 의미가 있다
-
사람을 죽이는 것은 산 호세 경찰이고 탈로 사람을 죽이고 있음 (산호게 경찰이 살해의 대상이 되고 남자가 살애의 대상이 되고 칼이 살인을 하는 도구가 되는 종속 구조에 해당 -> 올바르지 안흠ㅠㅠㅠ
-
칼을 든 사람이 있도 산호세 경찰이 그 사람을 죽였다. (그 칼은 남자의 명사 수식어인 칼에 해강함 살인은 남자는 여전히 살해의 대상 경찰은 살인의 주체
-> 전치사는 이와 같이 주체를 어떻게 잡느냐에 따라 해석이 전혀 다르게될 수 있음
11
과학자들은 우주에서 고래를 센다
우리는 우주에서 온 고래가 있고 과학자 들이 고래를 세고 있다
12 영어에는 전치사구가 곳곳에 있기 때문에 이 문제는 심각해짐
아래와 같이 전치사 구가 정말 많을 떄는 이러한 무네작 정말 심각함
이ㅓㄹㅎ게 여러곳에 붙여 문장을 해석 할 수 있기 때문에 인가느이 언어 문장은 실제로 매우 모호하다.
문장의 씉에 k개의 전치사구가 있는 문장의 경우(예시에서 k=4)
이 문장의 구문 분석 횟수는 Catalan number에 따라 증가함 -> 기하 급수적으로 증가하는 계열
-> 인간의 언어의 가능성은 기하급수적으로 증가함 -> 나쁜소식임 -> 모든 구문 분석의 경우의수를 세기 힘듦
-> 문장의 구조 측에서는 이러한 모호성을 해결할 방법이 없음
14
Coordination scope ambiguity 인간의 언어와 프로그래밍 언어는 매우 다름
(two people) 두 사람이 있고 거기에는 셔틀 베테랑이 있고NASA 의 Fred Gregory이사가 오랫동안 이사회에 임명되었음
(one people) 우주선 베테랑이자 NASA 의 오랜 임원인 Fred Gregory라는 사람이 있고 그 는 임명이 되었다는 것이다
15 같은 맥락이긴 함
신문 헤드라인은 다른 많은 텍스트보다 모호한 경향이 있음
내용을 축약했기 떄문
16
Adjectival/Adverbial Modifier Ambiguity
혀용사와 부사인 수식어가 있을 떄, 당신이 다른 것을 스정하게 할 수 있는 다른 방법이 있다는 것입니다.
사물이 다른 사물은 수정한다고 해석되어 구문적 모호성이 있다고 볼 수 있다.
이렇게 의미 자체의 모호성을 통해 안되는 해석을 제한하면 괜찮은 해석을 낼 수 있다
17 Verb Phrase (VP) attachment ambiguity
개병 형용사 또는 개별 부사가 함께 있는 것이 아니라 공사구와 같은 훨씬 더 큰 단위가 첨부 모호성을 갖을 수 있음
이렇게 모호하다.
ㅜ이와 같이 모호한 해석을 타파하려면 문장 구조를 잘 알아야 함
그런데 우리는 언어학 수준이 아니므로
그냥 단어와 구절에 대한 직관을 갖을 수 있는 수준으로만 알면 된다.
18
그렇게 되면 아래의 두가지 선택지 중에 무엇이 더 올바은지 선택할 수 있다.
즉 이러한 종류의 문장구조를 아는 것은 의미론적 해석에 조움이 될 수 있다는 것이다
-> 그냥 일반적으로 말하는 것 뿐만 아니라 의미 추출의 단순하고 실용적인 형태에 많은 경우에 사용되는 언어를 이해할 수 있다는 것이다.
아래의 예에서
일반적으로 사람들은 특정 동사와 의존 관꼐의 패턴을 살펴봄으로써 단어들 간의 관계를 얻을 수 있습니다.
따라서 상호작용하고 있는 동사의 경우 주제가 되는 패턴과 상호작용의 명사 수식어인 다른 패턴이 있는 경우 상호작용 관계임
그러나 접속사가 있어 더 복잡해지긴함
주어, 명사수식어, 접속사 간의 상호작용을 통해 새로운 관계도 찾을 수 있음
19,20
종속성구조에서 우리가 말하는 것은 문장의 구문 구조가 단어 쌍 의 관계로 구성된다는 것임
그리고 그것은 이진 비대칭 관계임 -> 의존성이라고 부르는 단어의 쌍에 화살표를 그림
이제 일반적으로 종속성 문법은 해당 문법적 관꼐를 입력하고 해당 화살표를 입력하여 관계의 종류를 표현함
문법적 관계 : nsubj:pass, aux, obl etc -> 우리는 문법적 관계에 대한 일종의 유형학을 갖고있음
종사의 두어는 동사의 종속
위에 있는것이 종속 되는 것
아래와 같이 종속적은 형식적으로 트리를 형성함
22 의존성 문법은 정말 오랜 역사를 갖고있음
최초의 언어학자는 산스크리스트어의 구조에 대해 쓴 Pāṇini이다.
소리체게ㅖ, 언어학자들이 음운론이라고 부르는 다양한 사오항에서 소리가 어떻게 변하는지에 대해 연구함
그리고 다양한 형태의 산스크리스트어 단어의 의존성을 제안함
23
그리고 대부분의 언어학에서는 사람들이 인간의 문장 위에 구조를 적용하려고 했을 때 그들이 사용한 덕은 의존성 문법이라고 밝힘
아래는 의존성에 대한 많은 연ㄱ임
문백이 없는 문법, 구성요소 문법(dependency grammar)을 갖는 아이디어는 은 정말 최근임-> 전에는 없었음 (20세기 중반_
다른언어들은 영어보다 훨씬 자유로운 문법 구조를 갖고 있음
그래서 의존성 문법(dependency grammar)은 종종 그러한 종류의 언어에 대해 훨씬 더 자연스러워 보일 수 있음
24
종속성 문법은 계산 언어학의 초기에도 두드러짐 (전산언어학)
25
의ㅣ존성 문법과 의존성 구조임
ㅇ제 자연어 처리로 돌아갈게!!!
그 전에 데이터 어디서 얻듸?
문장을 족속적으로 분석한것이 Treebank
80년대 후반에 시작해서 90년대 에 확장시킴
26
tree bank가 좋은 이유는?
사람이 하나하나 다 이렇게 만들면 너무 느리고 덜 유용하다.
-> 재사용 가능성이 높음
-> 많은 응용 가을성
But a treebank gives us many things • Reusability of the labor • Many parsers, part-of-speech taggers, etc. can be built on it • Valuable resource for linguistics • Broad coverage, not just a few intuitions • Frequencies and distributional information • A way to evaluate NLP systems
27
일단 의존성을 갖게되면 어떻게 파서를 만들 수 있을까??
28
어떻게 만드냐
이 특정 문자에서 볼 수 있는 교차 종속성이 있음
29
- Methods of Dependency Parsing
의존성 파서를 만드는 방법
…
23
루트: 시작점
B: 구문 분석하려는 문장이 있는 버퍼
이제 종속 화살표를 그릴건데
각 시점에 아래의 3가지 작업 중 하나를 선택할 수 있음
- Shift 다음 단어를 스택으로 이동 그런 다음 reduce 작업을 수행할 수 있습니다.
우리ㅡㄴ 의존성 문법을 만들기 위해 두개의 reduce action을 한다
왼쪽으로 감소와 오른쪽으로 감소이다.
우리가 그 중 하나를 할 때 스택의 맨 위 두 항목을 가져아ㅗ서 그 중 하나를 다른 항목에 종속시킨다.
w_i를 w_j에 종속시키자ㅏ 일반적으로 이를 수행할 떄 주어, 목적어, 명사수식어 와 같이 둘을 연결하는 문법적 관계도 지정합니다.
그래서 여기에고 관계가 있다
예를 들어서 설명해보겠다
33
Arc-standard transition-based parser
시작하려면 스택에 루트가 있고 버퍼에 문장이 있으며 종석성 화살표가 구성되어있지 않습니다.
따라서 우리는 세가지 행동중 하나를 선택해야 합니다
그리고 스택에 단 하나의 것이 있을 때
우리가 할 수 있는 유일한 것은 shift이다
그래서 아래와 같이 이동한다.
그럼 이제 스택은 다음과 같다
따라서 다른 조취를 해줘야 한다.
우리는 이 시점에서 선택을 할 수 있다 왜냐하면 줄일 수 있기 때문이다.
I를 루트 종속으로 만들면 스택크기가 다시 1이 된다,
하지만 내가 문장의 주인공이 아니기 때문에 그렇게 하는 것은 잘못된 일이다
따하서 우리가 해야할 일은 다시 이동하여 스택에 eat’를 추가하고 buffer에는 ‘fish’만 남아있다.
여기서 구문분석을 더 해보자
아래와 같이 분석하면 “I’는 ate의 종속이므로 왼쪽 화살표의 감소ㅇ를 수행할 수 있으므로 스택에서 사라진다
사라진 후 새로운 스택이 있다
여기서 우리가 사라지게한 일련의 종속 화살표에 “I:가 ate의 주체임을 추가한다.
그 후 스택에서 여전히 2개가 있기 때문에 다시 줄일 수 있지만 그렇게 하는것은 잘못된 것이다.
그러므로 다음에 해야할 올바른 일은
fish를 stack으로 옮기는 것이다.
그리고 그 시점에서 우리는 ate가 fish의 객체라고 말하고 의존성 세트에 새로운 의존성을 추가하는 오른쪽 종속 감소를 할 수 있다.
그리고 나서 우니는 ate가 전체 문장의 루트라고 말하기 위해 올다른 조속성 화살표를 통한 감소를 한번 더 수핼할 수 있고 우리의 의사 루트에 루트 관계를 추가할 수 있습니다.
그리고 이 시점에서 우리는 최종 조건에 도달했다.
짜라서 최종 조건은 버터가 비어있고 스택에 루트가 있는 것이다.
그리고 그 시점에서 우리는 끝낼 수 있다.
그레서 이 작은 기계가 문자을 파싱한다.
35 다음 작업을 선택하는 방법은 무엇입니까?
따라서 스태게는 두가지 이사의 항목이 있으면 이 다음에는 무엇을 합니까?
적어도 버퍼에 여전히 무언가가 있더나 왼쪽 종속성 그래프를 할 수 있거나 오른쪽 종속성 그래프를 할 수 있으면 계속 이동할 수 있다.
그리고 어떤 선택이 올바른지 어떻게 알 수 있습니까?
그리고 그것에 대한 한가지 대답은 잘이다ㅋㅋㅋ? 당신은 어떤 선택이 옳ㅁ은지 모른다는 것이다
그ㅓㅎ기 떄문에 구문 분석이 어렵고 문장이 모호하다.
그러므로 여러 경우를 생가갛고 해봐야 한다.
그리고 만약 당신이 그것들을 모두 순진하게 ㅌㅌ탐색한다면, 당신은 문장을 구문분삭하기위해 기하급수적인 양의 작업을 하게 된다
그래서 90년대 전에는 모든 사람들이 모근 경로를 탐색하게 하는 것을 기본으로 했습
그렇ㄴ데 2000년대 초반에 Nivre and Hall 가 본질적인 관찰을 한 이후 달라짐
그택과 버퍼 구성이 주어졌을 떄 내가 취해야 하 다음 조치를 예측하는 분류기를 훈련시키여고 하지 않는 이유는?
스택과 버퍼가 주어지면 거의 항상 저오학하게 다음 작업을 예측할 수 있는 기계 학습 분류기를 작성할 수 있있다면 정말 좋은 위치에 있기 떄문이다.
그러면 한번에 좋은 파싱을 내는 분류기를 만들 수 있다.
분류기를 실행하고 다음 작업을 선택
우리가 하는 작업의 양이 동적 프로그래밍을 사용하는 문장 길이의 3차 또는 동적프로그래밍을 사용하지 않는 경우문장 길이의 기하급수적인것이 아니라 문장의 길이에 따라 선형이 되도록
따라서 각 단계에서 판별 분류기를 사용하여 다음 작업을 예측한다.
그래서 처음에는 SVM과 같은것을 사용했지만 현재는 우리 신경망에 더 가까운 softmax 분류기와 같은 다양안 classifier사용가능
검생을 전혀하지 않는다.
단지 각 구성과 차례를 취하고 가장 가능성이 높은 다음 움직임을 결정하고 그것을 만듦
여기서 beam search 가능: 사당히 좋은 구문 분석된 접두어를 여러개 유지관리, 확장 가능
그리고 이것들중 어느것이 가장 좋은지 평가 가능
➡ 빕 검색은 많은 작업을 수행하여 종속성 구문 분석 기능을 개선하는 하나의 기술임