Skip to content

3. Class 개관

Bugeun Kim edited this page Dec 14, 2018 · 3 revisions

여기에 수록된 사용법(1~3절)은 모두 1.x 버전의 사용법입니다. 최신 버전의 사용법은 Usage를 참고하십시오.


Utilities

koalanlp.initialize(option)

분석기 초기화 함수입니다. (사용 전, 초기화 필수)

  • option: Object (필수). 아래와 같은 설정을 포함합니다.
    • option.packages: TYPES[] (기본값 [EUNJEON, KKMA]). 사용할 분석기 패키지목록.
    • option.version: String (기본값 1.9.0). 사용할 KoalaNLP 버전 지정. 최신 버전 확인
    • option.javaOptions: String[] (기본값 ["-Xmx4g"]). 자바 JVM Option.
    • option.debug: Boolean (기본값 false). Debug 기록 표시여부
  • Return: Promise

koalanlp.POS

품사 분석을 도와주는 도구입니다.

  • POS.Tags 모든 tag의 집합.
  • POS.NNB ~ POS.SS 품사 표기
  • POS.isNoun(obj) 주어진 객체가 체언(명사/대명사/수사)인지 확인함.
  • POS.isPredicate(obj) 주어진 객체가 용언(동사/형용사)인지 확인함.
  • POS.isModifier(obj) 주어진 객체가 수식언(관형사/부사)인지 확인함.
  • POS.isPostposition(obj) 주어진 객체가 관계언(조사)인지 확인함.
  • POS.isEnding(obj) 주어진 객체가 어미(어말어미/선어말어미/...)인지 확인함.
  • POS.isAffix(obj) 주어진 객체가 접사인지 확인함.
  • POS.isSuffix(obj) 주어진 객체가 접미사인지 확인함.
  • POS.isSymbol(obj) 주어진 객체가 기호(문장부호/화폐기호/...)인지 확인함.
  • POS.isUnknown(obj) 주어진 객체가 품사분석기가 분석하지 못한 내용인지 확인함.

위의 모든 static method가 취하는 argument obj는 다음 타입을 가져야 합니다.

  • string: 이 경우, obj는 품사표기(POS tag) 자체로 인식됩니다.
  • Morpheme: 이 경우, obj는 품사가 표기된 형태소 객체(Morpheme)로 인식됩니다.

koalanlp.SentenceSplitter 클래스 (품사표기 전 문장분리)

  • constructor(splitterType): 해당하는 문장분리기를 생성합니다.
    • splitterType: TYPES (필수) 문장분리에 사용될 API를 지정합니다.

아래의 두 method 모두, 결과값을 Promise로 반환합니다.

  • SentenceSplitter#sentences(text) 문단을 문장으로 분리.
  • SentenceSplitter.sentences(paragraph) KoalaNLP에서 구현한 방식에 따라, paragraph로 지정된 품사분석 결과를 문장으로 분리합니다.

위의 method가 취하는 argument는 다음과 같습니다.

  • text: string (필수). 분석할 문단.
  • paragraph: Sentence 객체로, 분리할 문단입니다. (문단을 1개 문장으로 간주하고 품사표기한 결과입니다.)

koalanlp.Tagger 클래스 (품사분석기)

  • constructor(taggerType) 품사분석기를 생성합니다.
    • taggerType: TYPES (필수). 사용할 품사분석기의 유형.

아래의 두 method 모두, 결과값을 Promise로 반환합니다.

  • Tagger#tag(text) 문단 단위의 분석.
  • Tagger#tagSentence(text) 1개 문장으로 강제하여 분석.

위의 method가 취하는 argument는 다음과 같습니다.

  • text: string (필수). 분석할 문단/문장.

koalanlp.Parser 클래스 (의존구문분석기)

  • constructor(parserType taggerType) 의존구문분석기를 생성합니다.
    • parserType: TYPES (필수). 사용할 의존구문분석기의 유형.
    • taggerType: TYPES (선택. 기본값 undefined). 사용할 품사분석기의 유형. undefined일 경우 의존구문분석기의 품사분석결과 사용.

아래의 두 method 모두, 결과값을 Promise로 반환합니다.

[참고] Parser가 사용하는 품사분석결과는, tagger로 지정된 분석기를 따릅니다.

  • Parser#parse(text) 문단 단위의 분석.
  • Parser#parseSentence(text) 1개 문장으로 강제하여 분석.

위의 method가 취하는 argument는 다음과 같습니다.

  • text: string (필수). 분석할 문단/문장.

koalanlp.Dictionary 클래스 (사용자정의 사전)

  • constructor(self, dictType): 해당하는 사전을 연결합니다.
    • dictType: TYPES (필수) 사용될 사용자 사전 API를 지정합니다.

아래의 method 모두, 결과값을 Promise로 반환합니다.

  • Dictionary#addUserDictionary(morph, tag): 새 형태소-품사를 등록합니다.
    • morph: string 또는 string[]. 형태소입니다.
    • tag: string 또는 string[]. 세종 품사표기입니다.
    • 둘 다 string이거나, 둘 다 같은 길이의 string 배열이어야 합니다.
  • Dictionary#contains(morph, ...tags): 사전에 형태소가 해당 품사로 등록되어있는지 확인합니다.
    • morph: string. 확인할 형태소입니다.
    • tags : string[]. 형태소가 존재하는지 확인할 품사입니다.
  • Dictionary#getNotExists(onlySystemDic, ...pairs): 사전에 등재되지 않은 품사만 남깁니다.
    • onlySystemDic: 분석기 내장 사전만 검색하려는 경우 true, 사용자사전을 포함하려는 경우 false.
    • pairs: {morph: string, tag: string}[]. (형태소, 품사)의 목록입니다.
  • Dictionary#baseEntriesOf(filter): 지정된 품사에 해당하는 형태소의 목록을 generator로 반환합니다.
    • filter: string -> boolean. 어떤 품사를 포함시킬지 지정합니다.
  • Dictionary#importFrom(dict, filter, fastAppend): 다른 사전에서, 지정된 품사에 해당하는 형태소를 불러와 현재 사전에 추가합니다.
    • dict: Dictionary. 불러올 다른 사전입니다.
    • filter: string -> boolean. 어떤 품사를 포함시킬지 지정합니다.
    • fastAppend: boolean. 현재 사전에 포함되어있는지를 확인하지 않고자 할 경우 true.

Data classes

결과값은, 다음과 같은 Data Class에 담겨 전송됩니다.

koalanlp.Morpheme 클래스 (형태소)

  • Morpheme#surface (string) 형태소 표면형입니다.
  • Morpheme#tag (string) 세종 품사 표기로 KoalaNLP가 변환한 결과입니다.
  • Morpheme#rawTag (string) 사용한 품사 분석기가 명명한 원본 품사입니다. (세종 품사보다 범위가 넓거나 좁을 수 있습니다)
  • Morpheme#id (number) 어절 내에서의 위치입니다.
  • Morpheme#hasTag(tag) 주어진 tag가 형태소와 일치하면 true.
    • tagstring타입일 때, Morpheme#tagtag로 시작하는지 확인합니다.
    • tagstring[]타입일 때, tag 중의 하나라도 Morpheme#tag의 시작과 일치하는지 확인합니다.
  • Morpheme#hasRawTag(tag) 주어진 tag가 원본 결과와 일치하면 true.
  • Morpheme#equals(morph) 형태소가 같은지 확인합니다.
  • Morpheme#equalsWithoutTag(morph) 형태소의 표면형이 같은지 확인합니다.
  • Morpheme#toString() 형태소를 string으로 변환합니다.
  • Morpheme#toJson() 형태소를 JSON 객체로 변환합니다.

koalanlp.Relationship 클래스 (의존관계)

  • Relationship#head (number) 이 관계의 지배소에 해당하는 어절의, 문장 내에서의 위치입니다.
  • Relationship#target (number) 이 관계의 피지배소에 해당하는 어절의, 문장 내에서의 위치입니다.
  • Relationship#relation (string) 두 어절 사이의 관계입니다.
  • Relationship#rawRel (string) 의존구문분석기가 출력한 원본 관계입니다.
  • Relationship#equals(rel) 의존관계가 같은지 확인합니다.
  • Relationship#toString() string으로 변환합니다.
  • Relationship#toJson() JSON 객체로 변환합니다.

koalanlp.Word 클래스 (어절)

  • Word#surface (string) 어절의 표면형입니다.
  • Word#morphemes (Morpheme[]) 어절을 구성하는 형태소의 목록입니다.
  • Word#id (number) 문장 내에서의 위치입니다.
  • Word#dependents (Relationship[]) 현재 어절에 의존하는 관계의 목록입니다.
  • Word#length() 형태소의 개수를 돌려줍니다.
  • Word#get(idx) 어절 내에서 idx번째에 위치한 형태소를 반환합니다.
  • Word#matches(tag) 주어진 tag 목록이 어절과 순서가 일치하면 true.
    • tagstring[] 타입일 때, 어절 내 형태소 품사 목록과 순서가 일치하면 true. (연속하지 않아도 됨)
  • Word#find(fn) 주어진 조건에 맞는 형태소를 찾습니다.
    • fnfunction 타입일 때, fn이 true인 첫 형태소를 반환.
    • fnMorpheme 타입일 때, fnMorpheme#equal()이 성립하는 첫 형태소를 반환.
  • Word#exists(fn) 주어진 조건에 맞는 형태소가 있는지 확인합니다. 있다면 true.
    • fnfunction 타입일 때, fn이 하나라도 만족되면 true.
    • fnMorpheme 타입일 때, fnMorpheme#equal()이 성립하는 형태소가 하나라도 있으면 true.
  • Word#equals(word) 두 어절이 위치와 형태소가 같은지 확인합니다.
  • Word#equalsWithoutTag(word) 두 어절의 표면형이 같은지 확인합니다.
  • Word#toString() string으로 변환합니다.
  • Word#toJson() JSON 객체로 변환합니다.
  • Word#singleLineString() 형태소 분석 결과를 한 줄로 반환합니다.

koalanlp.Sentence 클래스 (문장)

  • Sentence#words (Word[]) 문장을 구성하는 어절의 목록입니다.
  • Sentence#root (Word) 문장의 의존관계를 표시하기 위한, 허상의 최상위 노드입니다. root에 의존하는 단어가 핵심어가 됩니다.
  • Sentence#length() 어절의 개수를 돌려줍니다.
  • Sentence#get(idx) 문장 내에서 idx번째에 위치한 어절을 반환합니다.
  • Sentence#matches(tag) 주어진 tag 목록이 문장과 순서가 일치하면 true.
    • tagstring[][] 타입일 때, 문장 내 어절과 순서가 일치하면 true. (연속하지 않아도 됨)
  • Sentence#find(fn) 주어진 조건에 맞는 어절을 찾습니다.
    • fnfunction 타입일 때, fn이 true인 첫 어절을 반환.
    • fnWord 타입일 때, fnWord#equal()이 성립하는 첫 어절을 반환.
  • Sentence#exists(fn) 주어진 조건에 맞는 어절이 있는지 확인합니다. 있다면 true.
    • fnfunction 타입일 때, fn이 하나라도 만족되면 true.
    • fnWord 타입일 때, fnWord#equal()이 성립하는 형태소가 하나라도 있으면 true.
  • Sentence#nouns() 문장 내 체언을 포함한 어절의 목록을 반환합니다.
  • Sentence#verbs() 문장 내 용언을 포함한 어절의 목록을 반환합니다.
  • Sentence#modifiers() 문장 내 수식언을 포함한 어절의 목록을 반환합니다.
  • Sentence#toString() string으로 변환합니다.
  • Sentence#surfaceString(delimiter) 문장 내 어절의 표면형을 모아 원본 문장에 가깝게 구성합니다.
    • delimiter는 선택으로, 지정하지 않으면 빈칸으로 어절이 구분됩니다.
  • Sentence#toJson() JSON 객체로 변환합니다.
  • Sentence#singleLineString() 형태소 분석 결과를 한 줄로 반환합니다.

Clone this wiki locally