Text Classification
Transformers
Safetensors
Chinese
Yue Chinese
modernbert
zhlid
text-embeddings-inference
Instructions to use MusubiAI/ZHLID with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use MusubiAI/ZHLID with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="MusubiAI/ZHLID")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("MusubiAI/ZHLID") model = AutoModelForSequenceClassification.from_pretrained("MusubiAI/ZHLID", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| library_name: transformers | |
| license: apache-2.0 | |
| language: | |
| - zh | |
| - yue | |
| tags: | |
| - text-classification | |
| - zhlid | |
| - modernbert | |
| pipeline_tag: text-classification | |
| # ZHLID model card | |
| **Authors**: Lung-Chuan Chen | |
| **GitHub page**: https://github.com/Musubi-ai/ZHLID | |
| ## Model information | |
| ZHLID is a classification model specialized in fine-grained Chinese varieties. It adopts [ModernBERT](https://huggingface.co/answerdotai/ModernBERT-base) architecture and is trained with in-house dataset composed by Traditional Chinese and Simplified Chinese data. | |
| Unlike general-purpose LID tools, ZHLID focuses on distinguishing between closely related Chinese varieties, including: | |
| **Traditional Chinese (繁體中文)** – written in the traditional character set, used in formal and classical texts. | |
| **Simplified Chinese (簡體中文)** – written in the simplified character set, designed for easier reading and writing. | |
| **Cantonese (粵語)** – written form reflecting spoken Cantonese with unique vocabulary and grammar. | |
| **Classical Chinese (Traditional) (繁體文言文)** – literary Chinese in traditional characters with concise, classical syntax. | |
| **Classical Chinese (Simplified) (簡體文言文)** – literary Chinese in simplified characters, used in modern reprints and education. | |
| This makes ZHLID useful for linguistic research, corpus analysis, preprocessing for NLP tasks, or any application requiring accurate recognition of Chinese textual forms. | |
| The following table compares ZHLID with other popular LID tools supporting Chinese detection: | |
| | Identification | General Chinese | Traditional Chinese | Simplified Chinese | Classical Chinese | Cantonese | | |
| |------|:----:|:----:|:----:|:----:|:----:| | |
| | ZHLID (ours) | ✅ | ✅ | ✅ | ✅ | ✅ | | |
| | [langdetect](https://github.com/Mimino666/langdetect) | ✅ | ✅ | ✅ | ❌ | ❌ | | |
| | [GlotLID](https://github.com/cisnlp/GlotLID/tree/main) | ✅ | ❌ |❌ |❌ | ✅ | | |
| | [langid.py](https://github.com/saffsd/langid.py) | ✅ | ❌ | ❌ | ❌ | ❌ | | |
| | [CLD3](https://github.com/google/cld3?tab=readme-ov-file#supported-languages) | ✅ | ❌ | ❌ | ❌ | ❌ | | |
| | [Lingua](https://github.com/pemistahl/lingua-py) | ✅ | ❌ | ❌ | ❌ | ❌ | | |
| ## Installation | |
| To use ZHLID model, install `transformers` with version higher than v4.48.0: | |
| ```bash | |
| pip install -U transformers>=4.48.0 | |
| ``` | |
| Optionally, you can install [flash-attention](https://github.com/Dao-AILab/flash-attention) to improve inference efficiency: | |
| ```bash | |
| pip install flash-attn --no-build-isolation | |
| ``` | |
| ## Usage | |
| With `pipeline` function in `transformers`: | |
| ```python | |
| from transformers import pipeline | |
| pipe = pipeline("text-classification", model="MusubiAI/ZHLID") | |
| text = "孔子\n大成至圣先师孔丘,字仲尼,子姓,孔氏,敬称孔子、孔夫子,生于鲁昌平乡陬邑。" | |
| res = pipe(text) | |
| print(res) | |
| # [{'label': 'zhcn_classical', 'score': 0.9998414516448975}] | |
| ``` | |
| With `AutoModelForSequenceClassification`: | |
| ```python | |
| import torch | |
| import torch.nn as nn | |
| from transformers import AutoModelForSequenceClassification, AutoTokenizer | |
| model_id = "MusubiAI/ZHLID" | |
| model = AutoModelForSequenceClassification.from_pretrained(model_id) | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| id2label = model.config.id2label | |
| text = "孔子\n大成至圣先师孔丘,字仲尼,子姓,孔氏,敬称孔子、孔夫子,生于鲁昌平乡陬邑。" | |
| inputs = tokenizer(text, return_tensors="pt") | |
| outputs = model(**inputs) | |
| with torch.no_grad(): | |
| logits = model(**inputs)["logits"] | |
| scores = nn.functional.softmax(logits, dim=-1) | |
| pred_score, pred_index = torch.max(scores, dim=-1) | |
| pred_score = pred_score.item() | |
| pred_index = pred_index.item() | |
| label = id2label[pred_index] | |
| prediction = {"label": label, "confidence_score": pred_score} | |
| print(prediction) | |
| # {'label': 'zhcn_classical', 'confidence_score': 0.99983811378479} | |
| ``` | |
| Using `vllm` is also available: | |
| ```python | |
| from vllm import LLM | |
| import torch | |
| import torch.nn.functional as F | |
| llm = LLM(model="MusubiAI/ZHLID", task="classify") | |
| text = "孔子\n大成至圣先师孔丘,字仲尼,子姓,孔氏,敬称孔子、孔夫子,生于鲁昌平乡陬邑。" | |
| output = llm.classify(text)[0] | |
| probs = output.outputs.probs | |
| probabilities = torch.tensor(output.outputs.probs) | |
| # Get the top predicted class | |
| top_idx = torch.argmax(probabilities).item() | |
| top_prob = probabilities[top_idx].item() | |
| print(f"Confidence: {top_prob:.4f}") | |
| id2label = { | |
| "0": "yue", | |
| "1": "zhcn_classical", | |
| "2": "zhtw_classical", | |
| "3": "zhcn", | |
| "4": "zhtw" | |
| } | |
| label = id2label[str(top_idx)] | |
| print(label) | |
| ``` | |
| ## Evaluation | |
| We compare our top-1 accuracy result with [GlotLID](https://github.com/cisnlp/GlotLID/tree/main) and [langdetect](https://github.com/Mimino666/langdetect). Note that since GlotLID only provides a general "cmn_Hani" label for Chinese, its performance on Traditional and Simplified Chinese is measured by whether it outputs this label for both categories. | |
| | Top-1 accuracy | Traditional Chinese | Simplified Chinese | Classical Chinese (Traditional) | Classical Chinese (Simplified) | Cantonese | | |
| |------|:----:|:----:|:----:|:----:|:----:| | |
| | ZHLID (ours) | 1.0 | 1.0 | 0.9 | 1.0 | 0.96 | | |
| | [GlotLID](https://github.com/cisnlp/GlotLID/tree/main) | 0.98 | 0.98 | - | - | 0.9 | | |
| | [langdetect](https://github.com/Mimino666/langdetect) | 0.3 | 0.9 | - | - | - | | |
| ## License | |
| ZHLID model is released under the Apache 2.0 license. | |
| ## Citation | |
| If you use ZHLID in your research, please cite this repository: | |
| ```bibtex | |
| @misc{zhlid2025 , | |
| title = {ZHLID: Fine-grained Chinese Language Identification Package}, | |
| author = {Lung-Chuan Chen}, | |
| year = {2025}, | |
| howpublished = {\url{https://github.com/Musubi-ai/ZHLID}} | |
| } | |
| ``` |