Bareun vs KoNLPy (Okt/Komoran/Hannanum/Kkma): differences
KoNLPy is a wrapper library that bundles several Korean morphological analyzers behind one Python interface.
It lets you pick among different engines such as Okt (formerly Twitter), Komoran, Hannanum, Kkma, and Mecab.
Bareun, on the other hand, is an integrated morphological analysis server that provides a transformer-based analysis engine together with a server.
The biggest difference is that KoNLPy is "a tool that bundles several analyzers," while Bareun is "one consistent analysis service."
Comparison at a glance
| Item | Bareun | KoNLPy |
|---|---|---|
| Nature | A single integrated analysis server | A wrapper around several engines (Okt/Komoran/Hannanum/Kkma, etc.) |
| Analysis method | Transformer-trained model (segmentation → tagging) | Differs by engine (dictionary, statistics, rules) |
| POS system | Unified on 47 parts of speech per the National Institute of Korean Language | Tag set differs by engine |
| Result consistency | Identical, with no engine swapping | Results and tags change when you change engines |
| Environment | Server (gRPC/REST/connect-web), various clients | Python-centered |
| Custom dictionary | Live updates with no downtime | Support and method differ by engine |
| Word spacing correction | auto_spacing and auto_jointing built in | Generally handled separately |
KoNLPy has clear strengths too
With KoNLPy you can switch between analyzers in a single line of Python, which is good for comparison and experiments. It suits research,
learning, and quick prototyping. However, each engine has its own tag set, performance, and dictionary management,
so keeping results consistent at the production stage can be tricky.
Is the tag set unified?
When you change analyzers in KoNLPy, the POS tags for the same sentence change. The tags of Okt and Kkma differ,
and so do the criteria for splitting morphemes. Each time you swap analyzers, you may have to rework the code that handles the response too.
Bareun unifies its results on 47 parts of speech per the National Institute of Korean Language and 8 major morphological units (substantives, particles, predicates, endings, adverbials, determiners, interjections, and symbols).
Because it does not swap engines, the structure of the analysis result stays consistent.
This 47-POS tagging recorded 99.6% accuracy on a 150,000-sentence evaluation of the Modu Corpus (a sentence counts as wrong if even one morpheme is wrong).
You can see how the tag set is organized in the POS tag table and the measurement criteria in How accuracy is measured.
Result structure and extra information
Bareun returns results in a hierarchy of sentence → eojeol (space-delimited word unit, Token) → morpheme (Morpheme),
and each morpheme carries probability (tagging confidence) and out_of_vocab (dictionary source).
Positions are expressed as TextSpan (begin_offset, length), so they map exactly onto the original text.
The full structure of the response and each field are explained in detail in the Morphological analysis API.
Measure performance numbers yourself
Bareun's accuracy (POS tagging 99.6%, eojeol splitting/restoration 99.7%) is based on our own evaluation set.
The accuracy and speed of each engine that KoNLPy wraps vary greatly with engine, version, evaluation set, and hardware,
so if you need a comparison, it is more accurate to measure again with the same input in the same environment.
Related documents
- Bareun vs Mecab-ko: comparison with Mecab, which KoNLPy wraps
- What is morphological analysis: concepts and terms
- Exploring the custom dictionary: zero-downtime dictionary updates
Frequently asked questions
Q. KoNLPy is enough, so why use Bareun?
KoNLPy is convenient for research and experiments. In a production service, though, Bareun has the advantage in result consistency, zero-downtime dictionary updates,
server-based multi-language clients, and built-in word spacing correction. A big difference is that the tag set does not waver even if you change engines.
Q. Can I use Bareun from Python too?
Yes. Bareun provides Python (bareunpy), Java, JavaScript, and R clients, and you can call it through gRPC, REST, or connect-web.
Q. Is KoNLPy's Mecab the same as Bareun?
No. KoNLPy's Mecab is a dictionary- and statistics-based analyzer, while Bareun is a transformer-trained model.
They differ greatly in how they handle out-of-vocabulary words and colloquial speech, and in how the dictionary is updated.
Q. How accurate is Bareun's tagging?
Bareun scored all 47 parts of speech on 150,000 sentences of the Modu Corpus (a sentence counts as wrong if even one morpheme is wrong)
and recorded 99.6% for POS tagging and 99.7% for eojeol splitting/restoration. The numbers for the engines KoNLPy wraps vary with engine and evaluation set,
so for a fair comparison you need to measure with the same input in the same environment.