Skip to content

Zio.Text

This is a bundle that does not look at the repository. It calculates based on the received characters only — if the database side (Zio.node · Zio.entity · Zio.code · Zio.mongo) answers “where to look”, this side answers “whether this character is the same as that one”.

The way people write is always shaky — 한화비젼, GS 더 프레시, 인사채용. Making these match the official notation of the base code happens in every industry, and each time skills have to rewrite the decomposition into jamo and similarity calculation. That’s why we need an SDK.

It calculates only from the received characters without looking at the repository. Zio.node·Zio.entity·Zio.code·Zio.mongo are places that answer “where to look”; the calculation helper is bundled under the topic name.

Method Description
Zio.text.similar(a, b) Returns how similar two characters are on a scale of 0.0 ~ 1.0. It removes case, whitespace, and punctuation, and expands Hangul into jamo before comparing.
Zio.text.suggest(value, pool, limit=3, threshold=0.55) Picks similar names. If pool is a list, those values are used directly as candidates; if it’s a dict, {notation: proposed name}use aliases as material but output only the official name in this form.
Zio.text.similar("하나비전", "한화비전") # 0.842
Zio.text.similar("엠코", "앰코") # 0.75
Zio.text.suggest("하나비전", ["한화비전", "하나시스", "쿠팡"])
# → ['한화비전', '하나시스']
# 별칭을 재료로, 정식명을 후보로
Zio.text.suggest("인사채용", {"채용": "경영관리", "인력": "경영관리",
"경영관리": "경영관리"})
# → ['경영관리']

Two things are looked at. The way they’re captured differs

Section titled “Two things are looked at. The way they’re captured differs”
Rule Example What is captured
Similarity 한화비젼 → 한화비전 Typos and shaky notation. Expanding into jamo shows the match — 한화비젼 and 한화비전 are 0.75 by characters but 0.9 by jamo.
Inclusion 채용 ⊂ 인사채용 Abbreviations and compound words. If one is wholly contained in the other, we ignore the threshold.

Inclusion comes first. A character being fully inside another is a more certain basis than overlapping jamo counts. We do not mix scores — their weights are evenly distributed according to the current table, and they break apart on different tables.

The act of querying itself isn’t costly. If there are no candidates, someone has to write it manually, which can introduce new typos (e.g., trying to fix 한화비젼 might result in 한화비젼(주)). If an odd one slips through and is not rejected, that’s fine. Conversely this does not interpret meaning — if there are no clues in the characters (출고, 정보통신공사) it returns nothing. From then on it’s up to people.