출력 포맷

MeCab-Ko는 다양한 출력 포맷을 지원합니다. 용도에 따라 적절한 포맷을 선택하세요.

포맷 비교

포맷용도파싱 용이성가독성
defaultMeCab 호환중간좋음
wakati분리된 텍스트쉬움좋음
json프로그래밍매우 쉬움보통
csv스프레드시트쉬움보통
pos간단한 태깅쉬움좋음
simple한 줄 요약쉬움좋음
dump디버깅어려움상세

Default 포맷

MeCab 원본과 호환되는 기본 포맷입니다.

사용법

mecab-ko "안녕하세요"
mecab-ko -O default "안녕하세요"

출력 형식

표면형\t품사정보
...
EOS

예시

$ mecab-ko "오늘 날씨가 좋습니다"
오늘    NNG
날씨    NNG
가      JKS
좋      VA
습니다  EF
EOS

파싱

# Python
for line in output.split('\n'):
    if line == 'EOS':
        break
    surface, pos = line.split('\t')
#![allow(unused)]
fn main() {
// Rust
for line in output.lines() {
    if line == "EOS" {
        break;
    }
    let parts: Vec<&str> = line.split('\t').collect();
    let surface = parts[0];
    let pos = parts[1];
}
}

Wakati 포맷

형태소를 공백으로 분리하여 출력합니다. 텍스트 전처리에 유용합니다.

사용법

mecab-ko -O wakati "안녕하세요"

출력 형식

형태소1 형태소2 형태소3 ...

예시

$ mecab-ko -O wakati "오늘 날씨가 좋습니다"
오늘 날씨 가 좋 습니다

커스텀 구분자

# Slash separator
mecab-ko -O wakati --separator "/" "테스트"
# Output: 테/스/트

# Newline separator
mecab-ko -O wakati --separator $'\n' "테스트"

활용 예시

# Word count
mecab-ko -O wakati "긴 문장" | tr ' ' '\n' | wc -l

# Unique morphemes
mecab-ko -O wakati "문장" | tr ' ' '\n' | sort | uniq

# TF-IDF input preparation
cat document.txt | mecab-ko -O wakati > tokenized.txt

JSON 포맷

프로그래밍에 가장 편리한 구조화된 형식입니다.

사용법

mecab-ko -O json "안녕하세요"

출력 형식

[
  {
    "surface": "표면형",
    "pos": "품사",
    "start": 시작바이트,
    "end": 끝바이트,
    "reading": "읽기",
    "lemma": "원형"
  },
  ...
]

예시

$ mecab-ko -O json "안녕"
[
  {
    "surface": "안녕",
    "pos": "NNG",
    "start": 0,
    "end": 6
  }
]

필드 설명

필드타입필수설명
surfacestringO표면형 (원문 그대로)
posstringO품사 태그
startnumberO시작 바이트 위치
endnumberO끝 바이트 위치 (exclusive)
readingstringX읽기/발음
lemmastringX원형/기본형

활용 예시

# Extract surfaces with jq
mecab-ko -O json "안녕하세요" | jq '.[].surface'

# Filter nouns
mecab-ko -O json "오늘 날씨" | jq '[.[] | select(.pos | startswith("NN"))]'

# Count by POS
mecab-ko -O json "문장" | jq 'group_by(.pos) | map({pos: .[0].pos, count: length})'
# Python
import json
import subprocess

result = subprocess.run(
    ["mecab-ko", "-O", "json", "안녕하세요"],
    capture_output=True, text=True
)
tokens = json.loads(result.stdout)

for token in tokens:
    print(f"{token['surface']}: {token['pos']}")

CSV 포맷

스프레드시트 애플리케이션에서 열기 좋은 형식입니다.

사용법

mecab-ko -O csv "안녕하세요"

출력 형식

surface,pos,start,end,reading,lemma
표면형1,품사1,시작1,끝1,읽기1,원형1
...

예시

$ mecab-ko -O csv "오늘 날씨"
surface,pos,start,end,reading,lemma
오늘,NNG,0,6,,
날씨,NNG,7,13,,

활용 예시

# Save to file
mecab-ko -O csv "문장" > output.csv

# Open with spreadsheet application
libreoffice --calc output.csv

# Extract column
mecab-ko -O csv "문장" | cut -d',' -f1,2

POS 포맷

표면형과 품사를 슬래시로 연결하여 출력합니다.

사용법

mecab-ko -O pos "안녕하세요"

출력 형식

표면형1/품사1
표면형2/품사2
...

예시

$ mecab-ko -O pos "오늘 날씨가 좋습니다"
오늘/NNG
날씨/NNG
가/JKS
좋/VA
습니다/EF

활용 예시

# Filter specific POS
mecab-ko -O pos "문장" | grep "/NNG"

# Count POS tags
mecab-ko -O pos "문장" | cut -d'/' -f2 | sort | uniq -c

Simple 포맷

한 줄에 모든 분석 결과를 출력합니다.

사용법

mecab-ko -O simple "안녕하세요"

출력 형식

표면형1/품사1 표면형2/품사2 ...

예시

$ mecab-ko -O simple "오늘 날씨가 좋습니다"
오늘/NNG 날씨/NNG 가/JKS 좋/VA 습니다/EF

활용 예시

간결한 로그 출력이나 비교에 유용:

# Compare two sentences
echo "문장1: $(mecab-ko -O simple '첫 번째 문장')"
echo "문장2: $(mecab-ko -O simple '두 번째 문장')"

Dump 포맷

디버깅을 위한 상세 정보를 출력합니다.

사용법

mecab-ko -O dump "안녕하세요"

출력 형식

[인덱스] surface="표면형" pos=품사 span=[시작,끝)

예시

$ mecab-ko -O dump "안녕"
[000] surface="안녕" pos=NNG span=[0,6)

활용

  • 바이트 위치 확인
  • 토큰 인덱스 추적
  • 분석 결과 디버깅

포맷 선택 가이드

상황별 추천

상황추천 포맷
기존 MeCab 스크립트와 호환default
텍스트 전처리/토큰화wakati
프로그래밍에서 파싱json
엑셀/스프레드시트 분석csv
간단한 태깅 확인pos, simple
문제 디버깅dump

성능 고려

출력 포맷에 따른 성능 차이는 미미합니다. 용도에 맞는 포맷을 선택하세요.

커스텀 출력

프로그래밍 방식으로 커스텀 출력을 만들 수 있습니다:

#![allow(unused)]
fn main() {
use mecab_ko::Tokenizer;

let tokenizer = Tokenizer::new()?;
let tokens = tokenizer.tokenize("안녕하세요");

// Custom format: SURFACE[POS]
for token in tokens {
    print!("{}[{}] ", token.surface, token.pos);
}
println!();
// Output: 안녕[NNG] 하[XSV] 세요[EP+EF]
}
# Using shell
mecab-ko -O json "안녕하세요" | jq -r '.[] | "\(.surface)[\(.pos)]"' | tr '\n' ' '