Types.h

Kiwi C++ API에 쓰이는 주요 타입들을 모아놓은 헤더 파일

Author

bab2min (bab2min@gmail.com)

Version

0.20.0

Date

2024-07-01

Defines

KIWI_DEFINE_ENUM_FLAG_OPERATORS(Type)

Functions

KIWI_DEFINE_ENUM_FLAG_OPERATORS(kiwi::BuildOption)
namespace nonstd

Typedefs

using string_view = sv_lite::basic_string_view<char, std::char_traits<char>>
using u16string_view = sv_lite::basic_string_view<char16_t, std::char_traits<char16_t>>
namespace sv_lite
namespace kiwi

Typedefs

typedef char16_t kchar_t
template<typename _Ty>
using Vector = std::vector<_Ty>

std::vector의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다.

Note

Vector는 std::vector와 동일한 역할을 수행하지만, mimalloc 사용시 Vector가 좀 더 빠른 속도로 메모리를 할당 받을 수 있음. Vector와 std::vector는 섞어 쓸 수 없다. Kiwi 내부에서만 사용할 것이라면 Vector를, 외부로 반환해야할 값이라면 std::vector를 사용할 것.

template<typename _Ty>
using Deque = std::deque<_Ty>
template<typename _K, typename _V>
using Map = std::map<_K, _V>
template<typename _K, typename _V, typename _Hash = Hash<_K>>
using UnorderedMap = std::unordered_map<_K, _V, _Hash>

std::unordered_map의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다.

See also

Vector

Note

UnorderMap은 std::unordered_map과 동일한 역할을 수행하지만, mimalloc 사용시 UnorderMap이 좀 더 빠른 속도로 메모리를 할당 받을 수 있음.

template<typename _K, typename _Hash = Hash<_K>>
using UnorderedSet = std::unordered_set<_K, _Hash>
using KString = std::basic_string<kchar_t>

std::u16string의 내부용 타입. mimalloc 옵션에 따라 mi_stl_allocator로부터 메모리를 할당받는다.

See also

Vector

Note

KString은 std::u16string과 동일한 역할을 수행하지만, mimalloc 사용시 KString이 좀 더 빠른 속도로 메모리를 할당 받을 수 있음.

using KStringStream = std::basic_stringstream<kchar_t>
using KcVector = Vector<kchar_t>
using KcScores = Vector<std::pair<KcVector, float>>
using U16StringView = nonstd::u16string_view
using TokenResult = std::pair<std::vector<TokenInfo>, float>

분석 완료된 형태소의 목록(std::vector<TokenInfo>)과 점수(float)의 pair 타입

using U16Reader = std::function<std::u16string()>
using U16MultipleReader = std::function<U16Reader()>

Enums

enum class POSTag : uint8_t

형태소 품사 태그와 관련된 열거형

Note

나머지 품사 태그에 대한 정보는 README.md 를 참조할 것.

Values:

enumerator unknown

미설정

enumerator nng
enumerator nnp
enumerator nnb
enumerator vv
enumerator va
enumerator mag
enumerator nr
enumerator np
enumerator vx
enumerator mm
enumerator maj
enumerator ic
enumerator xpn
enumerator xsn
enumerator xsv
enumerator xsa
enumerator xsm
enumerator xr
enumerator vcp
enumerator vcn
enumerator sf
enumerator sp
enumerator ss
enumerator sso
enumerator ssc
enumerator se
enumerator so
enumerator sw
enumerator sb
enumerator sl
enumerator sh
enumerator sn
enumerator w_url
enumerator w_email
enumerator w_mention
enumerator w_hashtag
enumerator w_serial
enumerator w_emoji
enumerator jks
enumerator jkc
enumerator jkg
enumerator jko
enumerator jkb
enumerator jkv
enumerator jkq
enumerator jx
enumerator jc
enumerator ep
enumerator ef
enumerator ec
enumerator etn
enumerator etm
enumerator z_coda
enumerator z_siot
enumerator user0
enumerator user1
enumerator user2
enumerator user3
enumerator user4
enumerator p

분할된 동사/형용사를 나타내는데 사용됨

enumerator max

POSTag의 총 개수를 나타내는 용도

enumerator pv
enumerator pa
enumerator irregular

불규칙 활용을 하는 동/형용사를 나타내는데 사용됨

enumerator vvi
enumerator vai
enumerator vxi
enumerator xsai
enumerator pvi
enumerator pai
enum class CondVowel : uint8_t

선행 형태소의 종성 여부 조건과 관련된 열거형

Values:

enumerator none

조건이 설정되지 않음

enumerator any

자음, 모음 여부와 상관 없이 등장 가능

enumerator vowel

선행 형태소가 받침이 없는 경우만 등장 가능

enumerator vocalic

선행 형태소가 받침이 없거나 ㄹ받침인 경우만 등장 가능

enumerator vocalic_h

선행 형태소가 받침이 없거나 ㄹ, ㅎ 받침인 경우만 등장 가능

enumerator non_vowel

vowel의 부정

enumerator non_vocalic

vocalic의 부정

enumerator non_vocalic_h

vocalic_h의 부정

enumerator applosive

불파음 받침(ㄴㄹㅁㅇ을 제외한 모든 받침)

enum class CondPolarity : uint8_t

선행 형태소의 양/음성 조건(모음 조화)과 관련된 열거형

Values:

enumerator none

조건이 설정되지 않음

enumerator positive

선행 형태소가 양성(ㅏ,ㅑ,ㅗ)인 경우만 등장 가능

enumerator negative

선행 형태소가 음성(그 외)인 경우만 등장 가능

enumerator non_adj

선행 형태소가 형용사가 아닌 경우만 등장 가능 (모음조화와 관련없지만 효율성을 위해 여기에 삽입)

enum class BuildOption

KiwiBuilder 생성시 사용되는 비트 플래그

Values:

enumerator none
enumerator integrateAllomorph

이형태 통합 여부를 설정한다. 이 옵션을 사용시 아/EC, 어/EC, 여/EC 와 같은 형태소들이 어/EC로 통합되어 출력된다.

enumerator loadDefaultDict

기본 사전(default.dict)의 로딩 여부를 설정한다. 기본 사전은 위키백과 및 나무위키의 표제어로 구성되어 있다.

enumerator loadTypoDict

오타 사전(typo.dict)의 로딩 여부를 설정한다.

enumerator loadMultiDict

복합명사 사전(multi.dict)의 로딩 여부를 설정한다. 복합명사 사전은 복합명사의 구성 형태소를 저장하고 있다.

enumerator default_

Functions

inline constexpr bool isIrregular(POSTag tag)
inline constexpr POSTag setIrregular(POSTag tag)
inline constexpr POSTag clearIrregular(POSTag tag)
inline constexpr POSTag setIrregular(POSTag tag, bool irregular)
inline constexpr bool areTagsEqual(POSTag a, POSTag b, bool ignoreRegularity = false)

Variables

constexpr size_t defaultTagSize = (size_t)POSTag::p
struct BasicToken

Public Functions

inline BasicToken(const std::u16string &_form = {}, uint32_t _begin = -1, uint32_t _end = -1, POSTag _tag = POSTag::unknown, uint8_t _inferRegularity = 1)

Public Members

std::u16string form
uint32_t begin = -1
uint32_t end = -1
POSTag tag = POSTag::unknown
uint8_t inferRegularity = 1
class Exception : public std::runtime_error

Subclassed by kiwi::FormatException, kiwi::IOException, kiwi::SwTokenizerException, kiwi::UnicodeException, kiwi::UnknownMorphemeException

class FormatException : public kiwi::Exception
template<class Ty>
struct Hash

Public Functions

template<class V>
inline size_t operator()(V &&v) const
template<>
struct Hash<CondPolarity>

Public Functions

inline size_t operator()(CondPolarity v) const
template<>
struct Hash<CondVowel>

Public Functions

inline size_t operator()(CondVowel v) const
template<>
struct Hash<POSTag>

Public Functions

inline size_t operator()(POSTag v) const
class IOException : public kiwi::Exception
struct PretokenizedSpan

Public Functions

inline PretokenizedSpan(uint32_t _begin = 0, uint32_t _end = 0, const std::vector<BasicToken> &_tokenization = {})

Public Members

uint32_t begin = 0
uint32_t end = 0
std::vector<BasicToken> tokenization
class SwTokenizerException : public kiwi::Exception
struct TokenInfo
#include <Types.h>

분석 완료된 각 형태소들의 정보를 담는 구조체

Public Functions

TokenInfo() = default
inline TokenInfo(const std::u16string &_str, POSTag _tag = POSTag::unknown, uint16_t _length = 0, uint32_t _position = 0, uint32_t _wordPosition = 0, float _score = 0)
inline bool operator==(const TokenInfo &o) const
inline bool operator!=(const TokenInfo &o) const
inline uint32_t endPos() const

Public Members

std::u16string str

형태

uint32_t position = 0

시작 위치(UTF16 문자 기준)

uint32_t wordPosition = 0

어절 번호(공백 기준)

uint32_t sentPosition = 0

문장 번호

uint32_t lineNumber = 0

줄 번호

uint16_t length = 0

길이(UTF16 문자 기준)

POSTag tag = POSTag::unknown

품사 태그

uint8_t senseId = 0

의미 번호

ScriptType script

유니코드 영역에 기반한 문자 타입

union kiwi::TokenInfo
float score = 0

해당 형태소의 언어모델 점수

float typoCost = 0

오타가 교정된 경우 오타 비용. 그렇지 않은 경우 0

uint32_t typoFormId = 0

교정 전 오타의 형태에 대한 정보 (typoCost가 0인 경우 PreTokenizedSpan의 ID값)

uint32_t pairedToken = -1

SSO, SSC 태그에 속하는 형태소의 경우 쌍을 이루는 반대쪽 형태소의 위치(-1인 경우 해당하는 형태소가 없는 것을 뜻함)

uint32_t subSentPosition = 0

인용부호나 괄호로 둘러싸인 하위 문장의 번호. 1부터 시작. 0인 경우 하위 문장이 아님을 뜻함

const Morpheme *morph = nullptr

기타 형태소 정보에 대한 포인터 (OOV인 경우 nullptr)

class UnicodeException : public kiwi::Exception
class UnknownMorphemeException : public kiwi::Exception