soynlp
Unsupervised Korean Natural Language Processing Toolkits
What it is and what it does
soynlp is an unsupervised Korean NLP toolkit designed to extract linguistic structure from text without pre-trained models or labeled training data. It uses statistical patterns—cohesion scores, branching entropy, and accessor variety—to identify word boundaries, extract nouns, and tokenize sentences. The package includes WordExtractor for discovering new words in a corpus, multiple noun extractors (LRNounExtractor versions 1 and 2, NewsNounExtractor), and tokenizers that split sentences into word sequences based on learned word scores.
The toolkit works by analyzing how characters and substrings co-occur and branch within a corpus, learning left-right (L-R) structure patterns typical of Korean morphology. It is intended for processing document collections from a single domain or genre (news articles, movie reviews, social media) where homogeneous vocabulary and writing style yield better statistical signals. Dependencies are standard scientific Python libraries: numpy, scipy, scikit-learn, and psutil for memory monitoring during training.
Use it for:
- Extract new or domain-specific Korean words from a corpus of news articles or social media posts without a pre-trained dictionary.
- Tokenize Korean sentences into word sequences using learned word boundaries from a corpus of similar documents.
- Identify nouns in Korean text by analyzing right-side character patterns (e.g., particles following noun candidates).
- Build a custom Korean tokenizer by combining noun scores with word cohesion scores for domain-specific text.
- Analyze L-R graph structure of Korean words to understand morphological patterns in a specific corpus.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Unsupervised Korean natural language processing toolkit that extracts words and nouns from text, tokenizes sentences, and performs part-of-speech analysis without requiring training data.
Yes, if you are processing Korean text and need unsupervised word/noun extraction or tokenization without external models. The low install friction and active maintenance make it accessible. However, GPLv3 licensing restricts proprietary use, and the package requires a reasonably large, homogeneous corpus to work well—single documents or mixed-domain text will produce poor results. Not suitable for production systems requiring copyleft-incompatible licensing.
Install
soynlp on PyPI
pip
pip install soynlpuv
uv add soynlppoetry
poetry add soynlpInstalling soynlp
Before you install
Low friction install with four well-established scientific dependencies (numpy, scipy, scikit-learn, psutil). Package is actively maintained with recent commits and no known vulnerabilities.
License in practice
Licensed under GPLv3 (copyleft). Any derivative work or distribution must also be open-source under GPLv3; proprietary use is not permitted.
Quickstart
from soynlp.noun import LRNounExtractor_v2
from soynlp.word import WordExtractor
noun_extractor = LRNounExtractor_v2()
nouns = noun_extractor.train_extract(sentences)
word_extractor = WordExtractor(min_frequency=100)
word_extractor.train(sentences)
words = word_extractor.extract()
Requires a corpus of Korean text documents (homogeneous document collection works best); single sentences or heterogeneous document sets produce poor results.
Verify before relying
- Whether the package is actively maintained beyond the 2019-08-25 latest release date despite recent repository commits.
- Compatibility with Python versions beyond 3.6 given the classifier listing only 3.6 support.
Package facts
| License | not declared (copyleft) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — numpy, psutil, scipy, scikit-learn |
| Maintenance | actively maintained — 2,546 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 757,471/month — #5,135 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: soynlp-0.0.493-py3-none-any.whl
Keywords: korean-nlp, korean-text-processing, nlp, tokenizer, postagging, word-extraction
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
textblobTextBlob provides a simple API for common…
permissive · top 5,000 on PyPI
jieba3kPerforms Chinese word segmentation, breaking…
unclear · top 15,000 on PyPI
nagisaNagisa performs Japanese word segmentation and…
permissive · top 5,000 on PyPI
mecab-ko-dicProvides a Korean dictionary for MeCab…
unclear · top 15,000 on PyPI
konlpyKoNLPy provides Korean natural language…
copyleft · top 15,000 on PyPI
rake-nltkExtracts keywords and key phrases from text…
permissive · top 15,000 on PyPI
pyviProvides Vietnamese language processing tools…
permissive · top 15,000 on PyPI
segtokSplits Indo-European text into sentences and…
permissive · top 15,000 on PyPI
mecab-koPython wrapper for MeCab-ko, a morphological…
permissive · top 15,000 on PyPI
python-mecab-koProvides Python bindings for MeCab-ko, a…
permissive · top 15,000 on PyPI