슬라이드 1

Download Report

Transcript 슬라이드 1

인공지능 Term Project 2차 숙제
WordNet과 의존구문분석기 사용법 숙지 및
개체명(Named Entity) 인식기 구현
2009.03.19
1
목표
KU NLP
q WordNet과 의존구문분석기 사용법 숙지
 사용자 입력 질문 분석을 위한 도구의 사용법을 숙지한다.
 단어간의 관계를 표현하는 어휘 데이터베이스, WordNet의 사용법을
익힌다.
 품사 부착 및 문장 내의 단어간의 문법적 구조를 분석할 수 있는 의존
구문분석기 사용법을 익힌다.
q 개체명 인식기 구현
 사용자의 질문에서 인명, 지명, 기관, 날짜 등 고유 명사를 인식할 수
있는 개체명 인식기를 구현한다.
 사전으로 WordNet을 이용하고, WordNet을 이용하여 알아낼 수 없는
단어의 의미는 별도의 사전 및 패턴 규칙 등을 이용하여 알아낸다.
 개체명 인식 결과는 향후 DB 검색의 조회 조건으로 사용된다.
2
개체명 인식
KU NLP
개체명 인식(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
[개체명의 타입 및 예 ]
3
개체명 인식
KU NLP
개체명 인식(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
[일반적으로 사용되는 개체명의 타입과 하위 부류 및 태그]
4
개체명 인식
KU NLP
개체명 인식에서의 모호성(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 - 미국의 전 대통령을 가리키는 지 그의 아들을 가리키는
지 알 수 없다.
5
개체명 인식기의 역할
KU NLP
질문을 의미 틀(Semantic Frame)로 표현하기 위한 전처리 단계
natural language question
question processing
parser
named entity
analyzer
semantic
interpreter
intermediate
logical query
database query
generator
SQL
database management
system
Domain DB
response generator
retrieved results
response
개체명 인식기의 역할
KU NLP
Semantic Frame의 슬롯 값이 되며, 향후 SQL query에서 검색 조건
으로 사용된다.
natural language
question
parsing and named
entity analyzer
semantic
interpretation
SQL generation
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]?
Q_TYPE: QF_ALL
LOCATION: Boston
Q_DOMAIN: WEATHER
DATE: 2009/03/19
SELECT feels_like, barometer, humidity, visibility, dewpoint, wind
FROM weather_table, location_table
WHERE location_table.lid = weather_table.lid
AND
weather_table.date = to_date(‘20090319’,’yyyymmdd’)
AND
location_table.lname = ‘Boston’
개체명 인식기 구현
KU NLP
개체명 인식기 구현 방법
도메인에 적합하게 개체명 Type 및 Tag를 정의
WordNet, 품사 정보와 문장 성분간 의존관계(파서 이용), 수작업으로
구축한 사전과 규칙, 패턴 등을 이용하여 개체명 인식 작업을 수행
 품사 정보
추출하려는 개체명의 품사 또는 품사열 패턴은 어떠한가? - N(명사), V(동사)…
 구문 구조 정보
추출하려는 개체명이 문장내에서 어떤 패턴으로 수식 관계가 나타나는가?
 WordNet 정보
단어의 상위, 하위,유사 개념은 무엇인가?
Ex) “서울”(Seoul) 의 상위 개념 -> 도시(City)
 그 외 도메인 별 사전을 구축하거나 개체명이 나타나는 패턴 등을 분
석
개체명 인식기 구현
KU NLP
개체명 인식기 구현의 예(공연 정보 도메인)
[질문] Who goes on as Hamlet at this time?
의존 파서
WordNet
사전 및 패턴 규칙 적용
1 Who/N/subj 2
1 Who/N/subj 2
<PERS>Who</PERS>
2 goes/V E
2 goes/V E
<EXE>goes on as</EXE>
3 on/U 2
3 on/V 2
<CHAR>Hamlet</CHAR>
4 as/Prep 2
4 as/Prep 2
at<TIME> this time</TIME>
5 Hamlet/N 4
5 Hamlet/N 4 /CHARACTER
6 at/Prep 5
6 at/Prep 5
7 this/Det 8
7 this/Det 8
8 time/N 6
8 time/N 6 /EVENT
9
2차 숙제
KU NLP
제공
 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
WordNet
KU NLP
WordNet 소개
 단어간의 관계를 표현하는 어휘 데이터베이스
 사전에는 단어 중심으로 표현되어 있지만, WordNet은 의미 중심으로
표현되어 있다.
 WordNet은 네트워크 형태로 되어 있다
 노드는 synset이며, 링크는 synset들 간의 의미적인 관계를 표현한다.
 synset은 비슷한 의미를 가지는 단어들의 집합이다.
(비슷한 의미를 가진다는 것은 문맥에서 단어들이 서로 대체되었을 때, 의미적으로
큰 차이가 없다는 것을 의미한다. 예> 부모, 부모님, 어버이)
 WordNet 으로 알 수 있는 단어 간의 의미 관계
Synonyms (동의어 관계)
 Antonym (반의어 관계)
 Hyper/Hypo-nyms (상·하위 관계) 등

 단어 간의 동의어 관계와 상 · 하위 관계가 네트워크 형태를 이
루는 기본 관계이다
11
WordNet
KU NLP
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
WordNet
KU NLP
WordNet 라이브러리 사용 방법
 자료구조
/* 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;
13
WordNet
KU NLP
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을 검색하고 싶은 의미 번호. ALLSENE
SE는 모든 의미
• return type
– SynsetPtr 하나의 synset을 표현하는 자료구조
14
WordNet
KU NLP
WordNet 라이브러리 사용 방법
 함수 (cont’d)
3. void free_syns(SynsetPtr synptr);
• synptr의 메모리 해제
예)
findtheinfo_ds(“seoul”, NOUN, _HYPERPTR, ALLSENSES);
※ 자세한 설명은 WordNet과 함께 설치된 pdf 중 wnsearch 문서를
참조하기 바람
15
의존 구문 분석기
KU NLP
의존 구문 분석
 단어(어절) 간의 문법적 의존(수식) 관계만을 고려하여 문장의 구조
를 분석함
주어, 목적어는 동사에 의존함
 관사는 명사에 의존함
 부사는 동사에 의존함

16
의존 구문 분석기
KU NLP
 의존 구문 분석기 - MiniPar
 Lindek이 개발한 영어 의존 구문 분석기로서 정확률 88%, 재현율
80%의 성능을 보임
 MiniPar를 통해 각 단어의 품사 정보도 얻을 수 있다.
Det
NUM
V
N
Prep
A
Have
Aux
Be
VBE
[구문 분석 예 –”I will fly to Florida tomorrow”]
관사
수
동사, 동사구
명사, 명사구
전치사
형용사, 부사
Have (현재완료 등으로 쓰인 경우)
조동사
Be 동사 (수동태 등으로 쓰인 경우)
Be 동사
[MiniPar의 품사 정보]
17
의존 구문 분석기
KU NLP
q Minipar 사용 방법
 사용 목적
 Minipar는 의존 구문 분석기의 역할과 품사 부착기의 역할을 수
행한다.
 Minipar를 통해, 문장 내의 단어 간의 의존 관계를 분석하여 문장
의 구조를 분석할 수 있다. 또한 각 단어의 품사를 알아낼 수도 있
다.
 사용 방법
 제공된 Minipar.exe와 data폴더를 같은 폴더에 넣는다.
 제공된 SimpleMinipar.cpp와 SimpleMinipar.h를 자신의 소스코드
에 삽입한 후 헤더파일을 include하여 사용한다.
 CSimpleMinipar 클래스를 사용한다.
18
의존 구문 분석기
KU NLP
q CSimpleMinipar 클래스
 클래스 정의
class CSimpleMinipar {
public:
/* 사용하게 될 함수들 */
// 문장을 parameter로 하여 구문 분석을 수행하는 함수
bool Parse(char *pSentence);
// 구문 분석된 결과에 단어의 개수가 몇 개인지 반환하는 함수
int GetWordCount(void);
// 구문 분석된 결과에서 주어진 인덱스의 단어의 품사, 의존관계를
반환하는 함수
CSimpleMiniparWord* GetAt(int nIdx);
};
19
의존 구문 분석기
KU NLP
q CSimpleMinipar 클래스 (2/2)
 사용 예제
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
20