인공지능 term project 2 차 숙제

20
WordNet 과 과과과과과과과 과과과 과과 과 과과과 (Named Entity) 과과과 과과 2009.03.19 과과과과 Term Project 2 과 과과 1

Upload: alika

Post on 12-Jan-2016

198 views

Category:

Documents


0 download

DESCRIPTION

인공지능 Term Project 2 차 숙제. WordNet 과 의존구문분석기 사용법 숙지 및 개체명 (Named Entity) 인식기 구현 2009.03.19. 목표. WordNet 과 의존구문분석기 사용법 숙지 사용자 입력 질문 분석을 위한 도구의 사용법을 숙지한다 . 단어간의 관계를 표현하는 어휘 데이터베이스 , WordNet 의 사용법을 익힌다 . 품사 부착 및 문장 내의 단어간의 문법적 구조 를 분석할 수 있는 의존구문분석기 사용법을 익힌다 . 개체명 인식기 구현 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 인공지능  Term Project 2 차 숙제

WordNet 과 의존구문분석기 사용법 숙지 및

개체명 (Named Entity) 인식기 구현

2009.03.19

인공지능 Term Project 2 차 숙제

인공지능 Term Project 2 차 숙제

1

Page 2: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

목표

WordNet 과 의존구문분석기 사용법 숙지 사용자 입력 질문 분석을 위한 도구의 사용법을 숙지한다 .

단어간의 관계를 표현하는 어휘 데이터베이스 , WordNet 의 사용법을 익힌다 .

품사 부착 및 문장 내의 단어간의 문법적 구조를 분석할 수 있는 의존구문분석기 사용법을 익힌다 .

개체명 인식기 구현 사용자의 질문에서 인명 , 지명 , 기관 , 날짜 등 고유 명사를 인식할

수 있는 개체명 인식기를 구현한다 .

사전으로 WordNet 을 이용하고 , WordNet 을 이용하여 알아낼 수 없는 단어의 의미는 별도의 사전 및 패턴 규칙 등을 이용하여 알아낸다 .

개체명 인식 결과는 향후 DB 검색의 조회 조건으로 사용된다 .

2

Page 3: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

3

개체명 인식

개체명 인식 (Named Entity Recognition)

- 주어진 문장에서 모든 고유 명사를 찾아내고 그것을 미리 정해진 타입으로 분류한다 .

e.g. 인명 , 지명 , 기관명 , 시간 , 날짜 , 금전 표현 등

[ 개체명의 타입 및 예 ]

Type Example

People Turing is often considered to be the father of modern computer science

Organization The IPCC said it is likely that future tropical cyclones will become more intense.

Location The Mt.Sanitas loop hike beings at the base of Sunshine Canyon.

Geo-Political Entity

Palo Alto is looking at raising the fees for parking in the University Avenue district.

Facility Drivers were advised to consider either the Tappan Zee Bridge or the Lincoln Tunnel.

Vehicles The updated Mini Cooper retains its charm and agility

Page 4: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

4

개체명 인식

개체명 인식 (cont’d)

- 일반적으로 실제로 존재하는 형태를 갖는 개체뿐 아니라 시간 , 돈 , 사건 등 발생 자체가 중요한 의미를 갖는 것들에 대한 인식까지 포함된다 .

e.g. 날짜 , 시간 , 행사 등의 시간적 표현 (temporal expressions) 이나 개수 , 측량 ,

가격 등의 숫자 표현 (numerical expressions.)

[ 일반적으로 사용되는 개체명의 타입과 하위 부류 및 태그 ]

Type Tag Sample Categories

People PER Individuals, fictional, characters, small groups

Organization ORG Companies, agencies, political, parties, sports teams

Location LOC Physical extents, mountains, lakes, seas

Geo-Political Entity GPE Countries, states, provinces, counties

Facility FAC Bridges, buildings, airports

Vehicles VEH Planes, trains, and automobiles

Page 5: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

5

개체명 인식

개체명 인식에서의 모호성 (Ambiguities)

서로 다른 타입의 개체들이 동일한 이름을 갖는 경우

e.g.

[PERS Washington] was born into slavery on the farm of James Burroughs.

[ORG Washington] went up 2 games to 1 in the four-game series.

Blair arrived in [LOC Washington] for what may well be his last state visit.

같은 타입 , 같은 이름이지만 실제로는 다른 개체인 경우

e.g. JFK - 미국의 전 대통령을 가리키는 지 그의 아들을 가리키는 지 알 수 없다 .

Page 6: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

질문을 의미 틀 (Semantic Frame) 로 표현하기 위한 전처리 단계

개체명 인식기의 역할

natural language question

parser

named entity analyzer

semantic interpreter

database query generator

database management system

response generator

Domain DB

question processing

intermediate logical query

SQL retrieved results

response

Page 7: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

Semantic Frame 의 슬롯 값이 되며 , 향후 SQL query 에서 검색 조건으로 사용된다 .

개체명 인식기의 역할

parsing and named entity

analyzer

semantic interpretation

SQL generation

Q_TYPE: QF_ALL Q_DOMAIN: WEATHER

LOCATION: Boston DATE: 2009/03/19

SELECT feels_like, barometer, humidity, visibility, dewpoint, wind FROM weather_table, location_tableWHERE location_table.lid = weather_table.lid AND weather_table.date = to_date(‘20090319’,’yyyymmdd’)AND location_table.lname = ‘Boston’

Can you tell me what’s the weather like in Boston today?

Can you tell me what’s the weather like in [LOC Boston] [TIME today]?

natural language question

Page 8: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

개체명 인식기 구현

개체명 인식기 구현 방법 도메인에 적합하게 개체명 Type 및 Tag 를 정의

WordNet, 품사 정보와 문장 성분간 의존관계 ( 파서 이용 ),

수작업으로 구축한 사전과 규칙 , 패턴 등을 이용하여 개체명 인식 작업을 수행

품사 정보추출하려는 개체명의 품사 또는 품사열 패턴은 어떠한가 ? - N( 명사 ), V( 동사 )…

구문 구조 정보추출하려는 개체명이 문장내에서 어떤 패턴으로 수식 관계가 나타나는가 ?

WordNet 정보단어의 상위 , 하위 , 유사 개념은 무엇인가 ?

Ex) “ 서울” (Seoul) 의 상위 개념 -> 도시 (City)

그 외 도메인 별 사전을 구축하거나 개체명이 나타나는 패턴 등을 분석

Page 9: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

개체명 인식기 구현

개체명 인식기 구현의 예 ( 공연 정보 도메인 )

9

의존 파서 WordNet

[ 질문 ] Who goes on as Hamlet at this time?

1 Who/N/subj 2

2 goes/V E

3 on/U 2

4 as/Prep 2

5 Hamlet/N 4

6 at/Prep 5

7 this/Det 8

8 time/N 6

1 Who/N/subj 2

2 goes/V E

3 on/V 2

4 as/Prep 2

5 Hamlet/N 4

/CHARACTER

6 at/Prep 5

7 this/Det 8

8 time/N 6 /EVENT

<PERS>Who</PERS>

<EXE>goes on as</EXE>

<CHAR>Hamlet</CHAR>

at<TIME> this time</TIME>

사전 및 패턴 규칙 적용

Page 10: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

2 차 숙제

제공 WordNet 2.1 (http://wordnet.princeton.edu) MiniPar ( 의존 구문 분석기 및 품사 부착기 ) (EKU 에서 Download)

제출기한 및 방법 2009 년 4 월 2 일 목요일 EKU 에 조별로 제출 ( 보고서는 수업시간에 제출 )

제출물 1) 프로그램 실행 파일 , 2) 소스코드 , 3) 보고서 , 4) 출력 결과 파일 ( 양식 자유 )

보고서 내용 설계 및 구현 방법 기술 ( 개체명 Type and Tag list, 사용된 사전 및 알고리즘 ) 프로그램 설명서 , 출력 결과 캡쳐 화면

주의 사항 제공된 도구를 사용하기 위해서는 C/C++ 의 사용을 권장

Visual studio .net 2003 이상 버전의 개발툴 사용 권장 (ftp.korea.ac.kr 다운가능 ) 바이러스 검출 시 0 점 처리 컴파일 안 되는 소스코드 제출시 0 점 처리 제출 기한 어길 시 감점 처리

10

Page 11: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

WordNet

WordNet 소개 단어간의 관계를 표현하는 어휘 데이터베이스

사전에는 단어 중심으로 표현되어 있지만 , WordNet 은 의미 중심으로 표현되어 있다 .

WordNet 은 네트워크 형태로 되어 있다 노드는 synset 이며 , 링크는 synset 들 간의 의미적인 관계를

표현한다 . synset 은 비슷한 의미를 가지는 단어들의 집합이다 .

( 비슷한 의미를 가진다는 것은 문맥에서 단어들이 서로 대체되었을 때 ,

의미적으로 큰 차이가 없다는 것을 의미한다 . 예 > 부모 , 부모님 , 어버이 )

WordNet 으로 알 수 있는 단어 간의 의미 관계 Synonyms ( 동의어 관계 ) Antonym ( 반의어 관계 ) Hyper/Hypo-nyms ( 상 · 하위 관계 ) 등

단어 간의 동의어 관계와 상 · 하위 관계가 네트워크 형태를 이루는 기본 관계이다

11

Page 12: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

WordNet

WordNet 라이브러리 사용 방법 라이브러리 사용 목적

주어진 단어가 어떤 의미를 가지고 있는지 검색 주어진 단어의 의미와 의미적 관계 ( 상 - 하위 / 유사 /…) 를 가지는

단어들을 검색

라이브러리 설치 방법 http://wordnet.princeton.edu 에서 WordNet 2.1 을 다운받아 설치

라이브러리 사용 방법 WordNet 이 설치된 폴더 내에 있는 wn.h 를 include 한다 예 ) #include "C:\\Program Files\\Wordnet\\2.1\\Src\\Include\\wn.h" Link 시 , WordNet 이 설치된 폴더 내에 있는 wn.lib 를 추가해야

한다

12

Page 13: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

WordNet

WordNet 라이브러리 사용 방법 자료구조

13

/* Structure for data file synset */typedef struct ss {

long hereiam; /* synset 의 uniq-id */char *pos; /* 품사 */int wcount; /* synset 에 포함된 동의어 개수 */char **words; /* synset 에 포함된 동의어들 */int *wnsns; /* 각 단어의 의미 번호 */struct ss *nextss; /* 해당 단어의 다음 의미에 대한 synset 포인터 */struct ss *ptrlist; /* 현재 synset 과 ptr_type 관계를 가지는 synset 포인터 */

} Synset, *SynsetPtr;

Page 14: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

WordNet

WordNet 라이브러리 사용 방법 함수

1. int wninit()• WordNet 을 사용하기 위한 초기화 함수

2. SynsetPtr findtheinfo_ds( char *searchstr, int pos, int ptr_type, int sense_num)

• char *searchstr– 검색하고 싶은 단어 – ( 주의 : 대문자가 섞일 경우 에러 발생하므로 모두 소문자로 해야 함 )

• int pos– searchstr 에 대해서 검색하고 싶은 품사– NOUN(1), VERB(2), ADJECTIVE(3), ADVERB(4) 중 한가지 값

• int ptr_type – searchstr 의 synset 에 대해서 검색하고 싶은 “의미적 관계” 명시– ANTPTR(Antonyms, 반의어 ), HYPERPTR(Hypernyms, 상위관계 ),

HYPOPTR(Hyponyms, 하위관계 ) 등• int sense_num

– searchstr 의 여러가지 의미 중 , ptr_type 을 검색하고 싶은 의미 번호 . ALLSENESE 는 모든 의미

• return type– SynsetPtr 하나의 synset 을 표현하는 자료구조

14

Page 15: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

WordNet

WordNet 라이브러리 사용 방법 함수 (cont’d)

3. void free_syns(SynsetPtr synptr);• synptr 의 메모리 해제

예 )

findtheinfo_ds(“seoul”, NOUN, _HYPERPTR, ALLSENSES);

※ 자세한 설명은 WordNet 과 함께 설치된 pdf 중 wnsearch 문서를 참조하기 바람

15

Page 16: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

의존 구문 분석기

의존 구문 분석 단어 ( 어절 ) 간의 문법적 의존 ( 수식 ) 관계만을 고려하여 문장의

구조를 분석함 주어 , 목적어는 동사에 의존함 관사는 명사에 의존함 부사는 동사에 의존함

16

Page 17: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

의존 구문 분석기

의존 구문 분석기 - MiniPar Lindek 이 개발한 영어 의존 구문 분석기로서 정확률 88%, 재현율

80% 의 성능을 보임

MiniPar 를 통해 각 단어의 품사 정보도 얻을 수 있다 .

[ 구문 분석 예 –” I will fly to Florida tomorrow”] [MiniPar 의 품사 정보 ]

17

Det 관사NUM 수V 동사 , 동사구N 명사 , 명사구Prep 전치사A 형용사 , 부사Have Have ( 현재완료 등으로 쓰인 경우 )Aux 조동사Be Be 동사 ( 수동태 등으로 쓰인 경우 )VBE Be 동사

Page 18: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

의존 구문 분석기

Minipar 사용 방법 사용 목적

Minipar 는 의존 구문 분석기의 역할과 품사 부착기의 역할을 수행한다 .

Minipar 를 통해 , 문장 내의 단어 간의 의존 관계를 분석하여 문장의 구조를 분석할 수 있다 . 또한 각 단어의 품사를 알아낼 수도 있다 .

사용 방법 제공된 Minipar.exe 와 data 폴더를 같은 폴더에 넣는다 . 제공된 SimpleMinipar.cpp 와 SimpleMinipar.h 를 자신의

소스코드에 삽입한 후 헤더파일을 include 하여 사용한다 . CSimpleMinipar 클래스를 사용한다 .

18

Page 19: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

의존 구문 분석기

CSimpleMinipar 클래스 클래스 정의

19

class CSimpleMinipar {public:

/* 사용하게 될 함수들 */// 문장을 parameter 로 하여 구문 분석을 수행하는 함수bool Parse(char *pSentence);// 구문 분석된 결과에 단어의 개수가 몇 개인지 반환하는 함수int GetWordCount(void);// 구문 분석된 결과에서 주어진 인덱스의 단어의 품사 , 의존관계를 반환하는 함수CSimpleMiniparWord* GetAt(int nIdx);

};

Page 20: 인공지능  Term Project 2 차 숙제

KU NLPKU NLP

의존 구문 분석기

CSimpleMinipar 클래스 (2/2) 사용 예제

20

CSimpleMinipar MyPar;MyPar.Parse(“I am a boy.”);int nWord = MyPar.GetWordCount(); // 4 가 리턴된다 .// “I” 에 대한 구문분석 결과CSimpleMiniparWord* MyResult = MyPar.GetAt(0); MyResult->szWord; // 단어 : “I”MyResult->szPOS; // 품사 : “N”MyResult->szDependence; // 의존관계 : 2