Translation
Transformers
Safetensors
Chinese
Vietnamese
marian
text2text-generation
chinese-vietnamese
webnovel
xianxia
convert
nmt
machine-translation
Instructions to use ngocdang83/HachimiMT-60-QT with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ngocdang83/HachimiMT-60-QT with Transformers:
# Use a pipeline as a high-level helper # Warning: Pipeline type "translation" is no longer supported in transformers v5. # You must load the model directly (see below) or downgrade to v4.x with: # 'pip install "transformers<5.0.0' from transformers import pipeline pipe = pipeline("translation", model="ngocdang83/HachimiMT-60-QT")# Load model directly from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("ngocdang83/HachimiMT-60-QT") model = AutoModelForSeq2SeqLM.from_pretrained("ngocdang83/HachimiMT-60-QT", device_map="auto") - Notebooks
- Google Colab
- Kaggle
README: English default + README_vi.md (match family structure)
Browse files- README.md +64 -53
- README_vi.md +127 -0
README.md
CHANGED
|
@@ -19,71 +19,82 @@ datasets:
|
|
| 19 |
- chi-vi/hirashiba-mt-zh2vi-b-filtered
|
| 20 |
---
|
| 21 |
|
| 22 |
-
# HachimiMT-60-QT:
|
| 23 |
|
| 24 |
-
|
| 25 |
-
dịch tiếng Trung sang tiếng Việt theo **văn phong truyện convert** — *ta, ngươi, hắn,
|
| 26 |
-
nàng, tỷ tỷ, ca ca…* — và **giữ đúng một giọng từ đầu đến cuối chương**.
|
| 27 |
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
|
| 30 |
-
|
| 31 |
-
người đọc truyện: **đang dịch thì đổi cách xưng hô giữa chừng** — cùng một nhân vật,
|
| 32 |
-
câu trước gọi "ngươi", câu sau thành "cậu"; đoạn trước xưng "ta", đoạn sau thành "tôi".
|
| 33 |
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
(
|
|
|
|
|
|
|
| 37 |
|
| 38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|---|---|---|
|
| 40 |
| 你为什么要报考我们的学校? | Tại sao **ngươi** lại muốn thi vào trường của chúng ta? | Tại sao **ngươi** phải thi vào trường của chúng ta? |
|
| 41 |
-
| 你成绩没有问题…… (
|
| 42 |
-
| 我来给你介绍介绍这里的福利吧 | Để **tôi** giới thiệu
|
| 43 |
-
| 张羽……他感觉…… (
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
|
| 49 |
-
##
|
| 50 |
|
| 51 |
-
**
|
| 52 |
|
| 53 |
> 他说你不懂她的心思,我们都别插手了。
|
| 54 |
> → *Hắn nói ngươi không hiểu tâm tư của nàng, chúng ta đều đừng nhúng tay vào.*
|
|
|
|
| 55 |
|
| 56 |
-
**
|
|
|
|
| 57 |
|
| 58 |
> 张羽同学,我们了解到你的家庭情况恐怕不足以负担这边的学费。不过我们为贫困生提供了优惠的贷款服务,只要你愿意抵押一些不重要的器官就行……
|
| 59 |
|
| 60 |
-
| |
|
| 61 |
|---|---|
|
| 62 |
-
|
|
| 63 |
-
| **
|
| 64 |
|
| 65 |
-
##
|
| 66 |
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
|
|
|
| 72 |
|
| 73 |
-
|
| 74 |
|
| 75 |
-
-
|
| 76 |
-
|
| 77 |
-
- ⚠️ Truyện hiện đại cũng sẽ ra giọng convert ("Sao ngươi chưa nghỉ ngơi?") — đây là
|
| 78 |
-
**chủ đích** của bản này. Muốn giọng tự nhiên theo ngữ cảnh, dùng
|
| 79 |
-
[bản thường](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi).
|
| 80 |
|
| 81 |
-
|
| 82 |
|
| 83 |
-
|
| 84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
-
##
|
| 87 |
|
| 88 |
```python
|
| 89 |
from transformers import AutoTokenizer, MarianMTModel
|
|
@@ -102,14 +113,14 @@ print(tokenizer.decode(out[0], skip_special_tokens=True))
|
|
| 102 |
# Tung Dương, chỉ dựa vào điểm thi trong trường là còn xa mới đủ."
|
| 103 |
```
|
| 104 |
|
| 105 |
-
> 💡 **
|
| 106 |
-
>
|
| 107 |
-
>
|
| 108 |
|
| 109 |
-
##
|
| 110 |
|
| 111 |
-
|
| 112 |
-
|
| 113 |
|
| 114 |
```python
|
| 115 |
import ctranslate2
|
|
@@ -134,13 +145,13 @@ print(tokenizer.decode(tokenizer.convert_tokens_to_ids(res[0].hypotheses[0]),
|
|
| 134 |
# "Ngươi yên tâm đi, người ta là công ty lớn, sẽ không lừa người đâu."
|
| 135 |
```
|
| 136 |
|
| 137 |
-
##
|
| 138 |
|
| 139 |
-
| Model |
|
| 140 |
|---|---|
|
| 141 |
-
| [HachimiMT-60-zh-vi](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) |
|
| 142 |
-
| **HachimiMT-60-QT** (
|
| 143 |
-
| [Demo Space](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo) |
|
| 144 |
|
| 145 |
-
|
| 146 |
-
|
|
|
|
| 19 |
- chi-vi/hirashiba-mt-zh2vi-b-filtered
|
| 20 |
---
|
| 21 |
|
| 22 |
+
# HachimiMT-60-QT: Chinese→Vietnamese translation with a perfectly consistent "convert" voice
|
| 23 |
|
| 24 |
+
> 🇻🇳 [Đọc bản tiếng Việt](./README_vi.md)
|
|
|
|
|
|
|
| 25 |
|
| 26 |
+
The "classical register" edition of
|
| 27 |
+
[HachimiMT-60](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi): it translates
|
| 28 |
+
Chinese web novels into Vietnamese using the **truyện convert** pronoun register —
|
| 29 |
+
*ta, ngươi, hắn, nàng, tỷ tỷ, ca ca…* (the archaic Sino-Vietnamese address style
|
| 30 |
+
that Vietnamese web-novel readers know by heart) — and **keeps that voice perfectly
|
| 31 |
+
stable from the first line of a chapter to the last**.
|
| 32 |
|
| 33 |
+
## What's different from the base model?
|
|
|
|
|
|
|
| 34 |
|
| 35 |
+
Ordinary MT models (including base HachimiMT-60) have a habit that drives novel
|
| 36 |
+
readers crazy: **they switch address style mid-chapter**. The same character is
|
| 37 |
+
"ngươi" (archaic *you*) in one line and suddenly "cậu" (modern *you*) in the next;
|
| 38 |
+
the narrator says "ta" (*I*, archaic) in one paragraph and "tôi" (*I*, modern) in
|
| 39 |
+
another.
|
| 40 |
|
| 41 |
+
This QT edition was trained on data whose entire pronoun system was normalized, so
|
| 42 |
+
**the voice never flips**. Real output, same chapter, same interview scene
|
| 43 |
+
(base HachimiMT-60 vs this model):
|
| 44 |
+
|
| 45 |
+
| Source | Base model | **QT model** |
|
| 46 |
|---|---|---|
|
| 47 |
| 你为什么要报考我们的学校? | Tại sao **ngươi** lại muốn thi vào trường của chúng ta? | Tại sao **ngươi** phải thi vào trường của chúng ta? |
|
| 48 |
+
| 你成绩没有问题…… (very next line) | Thành tích của **cậu** không thành vấn đề… ← *voice flips!* | Thành tích của **ngươi** không có vấn đề gì… |
|
| 49 |
+
| 我来给你介绍介绍这里的福利吧 | Để **tôi** giới thiệu … cho **cậu** nhé, **chúng tôi**… | Để **ta** giới thiệu … cho **ngươi** nhé, **chúng ta**… |
|
| 50 |
+
| 张羽……他感觉…… (narration) | Trương Vũ… **cậu** cảm thấy… ← *modern "cậu" in narration* | Trương Vũ… **hắn** cảm thấy… |
|
| 51 |
|
| 52 |
+
Measured on 7 chapters across 7 genres (538 lines): in the *you*-register class the
|
| 53 |
+
base model **flips voice at ~24% of line transitions**; this model: **0%**. The
|
| 54 |
+
*I*, *we* and third-person classes also drop to zero.
|
| 55 |
|
| 56 |
+
## Stress tests
|
| 57 |
|
| 58 |
+
**Four pronouns in one sentence** — nothing gets mixed up:
|
| 59 |
|
| 60 |
> 他说你不懂她的心思,我们都别插手了。
|
| 61 |
> → *Hắn nói ngươi không hiểu tâm tư của nàng, chúng ta đều đừng nhúng tay vào.*
|
| 62 |
+
> (he→hắn, you→ngươi, she→nàng, we→chúng ta)
|
| 63 |
|
| 64 |
+
**A long multi-clause paragraph** — where the base model mixes two voices inside a
|
| 65 |
+
single paragraph:
|
| 66 |
|
| 67 |
> 张羽同学,我们了解到你的家庭情况恐怕不足以负担这边的学费。不过我们为贫困生提供了优惠的贷款服务,只要你愿意抵押一些不重要的器官就行……
|
| 68 |
|
| 69 |
+
| | Translation |
|
| 70 |
|---|---|
|
| 71 |
+
| Base | Bạn học Trương Vũ, **chúng tôi** hiểu được tình hình gia đình của **bạn**… Tuy nhiên, **chúng ta** đã cung cấp dịch vụ vay… chỉ cần **bạn**… ← *two registers in one paragraph* |
|
| 72 |
+
| **QT** | Bạn học Trương Vũ, **chúng ta** biết được tình hình gia đình của **ngươi**… Nhưng **chúng ta** đã cung cấp dịch vụ vay vốn ưu đãi… chỉ cần **ngươi** chịu thế chấp một số nội tạng không quan trọng là được... |
|
| 73 |
|
| 74 |
+
## When to use it
|
| 75 |
|
| 76 |
+
- ✅ Xianxia, xuanhuan, historical, danmei — or **any** genre where you want the
|
| 77 |
+
convert voice all the way through.
|
| 78 |
+
- ⚠️ Modern-setting stories also come out in the archaic voice ("Sao ngươi chưa
|
| 79 |
+
nghỉ ngơi?") — that is **by design**. If you want context-appropriate natural
|
| 80 |
+
register instead, use the
|
| 81 |
+
[base model](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi).
|
| 82 |
|
| 83 |
+
Deliberate trade-offs (documented so nothing surprises you):
|
| 84 |
|
| 85 |
+
- 我们/咱们 both become **"chúng ta"** (the inclusive/exclusive *we* distinction is dropped).
|
| 86 |
+
- Modern intimate address (anh/em between lovers) mostly becomes ta/ngươi.
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
+
## Known limitations (real example, not hidden)
|
| 89 |
|
| 90 |
+
Rare proper nouns and coined terms can come out with a shifted syllable or a
|
| 91 |
+
literal translation — a limitation of every model in this size class, not specific
|
| 92 |
+
to the QT edition. Example, the spirit-beast name 【异瞳金丝猴】 (reference:
|
| 93 |
+
*Dị Đồng Kim Ty Hầu*): the base model outputs "Kim **Ti** Hầu", this model outputs
|
| 94 |
+
"Kim **Tơ** Hầu" (literal reading of 丝). If your novel is full of first-time rare
|
| 95 |
+
names, spot-check them.
|
| 96 |
|
| 97 |
+
## Quick start (Python)
|
| 98 |
|
| 99 |
```python
|
| 100 |
from transformers import AutoTokenizer, MarianMTModel
|
|
|
|
| 113 |
# Tung Dương, chỉ dựa vào điểm thi trong trường là còn xa mới đủ."
|
| 114 |
```
|
| 115 |
|
| 116 |
+
> 💡 **Decoding tip**: do **not** set `no_repeat_ngram_size` with this model — it
|
| 117 |
+
> forces the decoder to avoid repeating n-grams and tends to mangle proper names
|
| 118 |
+
> (Lý Giáng Thiên → Lý Giáng Dương). The defaults above are what we ship with.
|
| 119 |
|
| 120 |
+
## Fast CPU inference (CTranslate2)
|
| 121 |
|
| 122 |
+
The repo ships an INT8 export under `ct2-int8_float32/` — several times faster on
|
| 123 |
+
machines without a GPU:
|
| 124 |
|
| 125 |
```python
|
| 126 |
import ctranslate2
|
|
|
|
| 145 |
# "Ngươi yên tâm đi, người ta là công ty lớn, sẽ không lừa người đâu."
|
| 146 |
```
|
| 147 |
|
| 148 |
+
## The Hachimi family
|
| 149 |
|
| 150 |
+
| Model | Use when |
|
| 151 |
|---|---|
|
| 152 |
+
| [HachimiMT-60-zh-vi](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) | Natural, context-dependent register |
|
| 153 |
+
| **HachimiMT-60-QT** (this) | One perfectly stable convert voice |
|
| 154 |
+
| [Demo Space](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo) | Try it in the browser |
|
| 155 |
|
| 156 |
+
Technical details (56.96M params, Marian encoder-decoder, runs fine on CPU or GPU)
|
| 157 |
+
are in `config.json`. License CC-BY-4.0 — use freely with attribution.
|
README_vi.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
> 🇬🇧 [English version](./README.md)
|
| 2 |
+
|
| 3 |
+
# HachimiMT-60-QT: dịch truyện Trung→Việt, văn phong convert thuần nhất
|
| 4 |
+
|
| 5 |
+
Bản "giọng cổ trang" của [HachimiMT-60](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi):
|
| 6 |
+
dịch tiếng Trung sang tiếng Việt theo **văn phong truyện convert** — *ta, ngươi, hắn,
|
| 7 |
+
nàng, tỷ tỷ, ca ca…* — và **giữ đúng một giọng từ đầu đến cuối chương**.
|
| 8 |
+
|
| 9 |
+
## Khác gì bản thường?
|
| 10 |
+
|
| 11 |
+
Model dịch máy bình thường (kể cả bản HachimiMT-60 gốc) có một tật khó chịu với
|
| 12 |
+
người đọc truyện: **đang dịch thì đổi cách xưng hô giữa chừng** — cùng một nhân vật,
|
| 13 |
+
câu trước gọi "ngươi", câu sau thành "cậu"; đoạn trước xưng "ta", đoạn sau thành "tôi".
|
| 14 |
+
|
| 15 |
+
Bản QT được huấn luyện trên dữ liệu đã chuẩn hóa toàn bộ hệ xưng hô, nên **không còn
|
| 16 |
+
đổi giọng nữa**. Ví dụ thật, cùng một chương truyện, cùng một cuộc phỏng vấn
|
| 17 |
+
(HachimiMT-60 thường vs bản QT này):
|
| 18 |
+
|
| 19 |
+
| Nguyên văn | Bản thường | **Bản QT** |
|
| 20 |
+
|---|---|---|
|
| 21 |
+
| 你为什么要报考我们的学校? | Tại sao **ngươi** lại muốn thi vào trường của chúng ta? | Tại sao **ngươi** phải thi vào trường của chúng ta? |
|
| 22 |
+
| 你成绩没有问题…… (câu ngay sau) | Thành tích của **cậu** không thành vấn đề… ← *đổi giọng!* | Thành tích của **ngươi** không có vấn đề gì… |
|
| 23 |
+
| 我来给你介绍介绍这里的福利吧 | Để **tôi** giới thiệu phúc lợi ở đây cho **cậu** nhé, **chúng tôi**… | Để **ta** giới thiệu phúc lợi ở đây cho **ngươi** nhé, **chúng ta**… |
|
| 24 |
+
| 张羽……他感觉…… (lời kể) | Trương Vũ… **cậu** cảm thấy… ← *"cậu" cho lời kể* | Trương Vũ… **hắn** cảm thấy… |
|
| 25 |
+
|
| 26 |
+
Đo trên 7 chương thuộc 7 thể loại khác nhau (538 câu): ở lớp xưng hô "ngươi/cậu",
|
| 27 |
+
bản thường **đổi giọng ở ~24% chỗ chuyển câu**; bản QT: **0%**. Các lớp
|
| 28 |
+
ta/tôi, chúng ta/chúng tôi, hắn/nàng cũng về 0 tương tự.
|
| 29 |
+
|
| 30 |
+
## Câu khó (stress test)
|
| 31 |
+
|
| 32 |
+
**Một câu chứa 4 ngôi** — không lẫn ai với ai:
|
| 33 |
+
|
| 34 |
+
> 他说你不懂她的心思,我们都别插手了。
|
| 35 |
+
> → *Hắn nói ngươi không hiểu tâm tư của nàng, chúng ta đều đừng nhúng tay vào.*
|
| 36 |
+
|
| 37 |
+
**Đoạn dài nhiều lượt xưng hô** — chỗ bản thường dễ "đổi giọng ngay giữa đoạn":
|
| 38 |
+
|
| 39 |
+
> 张羽同学,我们了解到你的家庭情况恐怕不足以负担这边的学费。不过我们为贫困生提供了优惠的贷款服务,只要你愿意抵押一些不重要的器官就行……
|
| 40 |
+
|
| 41 |
+
| | Dịch |
|
| 42 |
+
|---|---|
|
| 43 |
+
| Bản thường | Bạn học Trương Vũ, **chúng tôi** hiểu được tình hình gia đình của **bạn**… Tuy nhiên, **chúng ta** đã cung cấp dịch vụ vay… chỉ cần **bạn**… ← *trộn 2 giọng trong 1 đoạn* |
|
| 44 |
+
| **Bản QT** | Bạn học Trương Vũ, **chúng ta** biết được tình hình gia đình của **ngươi**… Nhưng **chúng ta** đã cung cấp dịch vụ vay vốn ưu đãi… chỉ cần **ngươi** chịu thế chấp một số nội tạng không quan trọng là được... |
|
| 45 |
+
|
| 46 |
+
## Giới hạn đã biết (ví dụ thật, không giấu)
|
| 47 |
+
|
| 48 |
+
Tên riêng/thuật ngữ hiếm thỉnh thoảng lệch âm hoặc bị dịch nghĩa — hạn chế chung của
|
| 49 |
+
cả họ model cỡ nhỏ, không riêng bản QT. Ví dụ tên linh thú 【异瞳金丝猴】
|
| 50 |
+
(chuẩn: *Dị Đồng Kim Ty Hầu*): bản thường ra "Kim **Ti** Hầu", bản QT ra
|
| 51 |
+
"Kim **Tơ** Hầu" (dịch nghĩa chữ 丝). Đọc truyện nhiều tên riêng lạ thì nên
|
| 52 |
+
soát lại các tên xuất hiện lần đầu.
|
| 53 |
+
|
| 54 |
+
## Dùng khi nào?
|
| 55 |
+
|
| 56 |
+
- ✅ Đọc/convert truyện tiên hiệp, huyền huyễn, cổ trang, đam mỹ cổ phong — hoặc bất
|
| 57 |
+
kỳ thể loại nào bạn muốn **giọng convert xuyên suốt**.
|
| 58 |
+
- ⚠️ Truyện hiện đại cũng sẽ ra giọng convert ("Sao ngươi chưa nghỉ ngơi?") — đây là
|
| 59 |
+
**chủ đích** của bản này. Muốn giọng tự nhiên theo ngữ cảnh, dùng
|
| 60 |
+
[bản thường](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi).
|
| 61 |
+
|
| 62 |
+
Vài điều đánh đổi (chủ đích, ghi rõ để khỏi bất ngờ):
|
| 63 |
+
|
| 64 |
+
- 我们/咱们 đều thành **"chúng ta"** (không còn phân biệt "chúng tôi").
|
| 65 |
+
- Xưng hô thân mật kiểu hiện đại (anh/em trong thoại yêu đương) phần lớn thành ta/ngươi.
|
| 66 |
+
|
| 67 |
+
## Dùng nhanh (Python)
|
| 68 |
+
|
| 69 |
+
```python
|
| 70 |
+
from transformers import AutoTokenizer, MarianMTModel
|
| 71 |
+
import torch
|
| 72 |
+
|
| 73 |
+
repo = "ngocdang83/HachimiMT-60-QT"
|
| 74 |
+
tokenizer = AutoTokenizer.from_pretrained(repo)
|
| 75 |
+
model = MarianMTModel.from_pretrained(repo).eval()
|
| 76 |
+
|
| 77 |
+
src = "你成绩没有问题,但想要进嵩阳高中,光靠校内考试成绩是远远不够的。"
|
| 78 |
+
inp = tokenizer(src, return_tensors="pt", truncation=True, max_length=256)
|
| 79 |
+
with torch.inference_mode():
|
| 80 |
+
out = model.generate(**inp, max_new_tokens=300, num_beams=4, early_stopping=True)
|
| 81 |
+
print(tokenizer.decode(out[0], skip_special_tokens=True))
|
| 82 |
+
# "Thành tích của ngươi không có vấn đề gì, nhưng muốn vào trường trung học
|
| 83 |
+
# Tung Dương, chỉ dựa vào điểm thi trong trường là còn xa mới đủ."
|
| 84 |
+
```
|
| 85 |
+
|
| 86 |
+
> 💡 **Mẹo decode**: đừng bật `no_repeat_ngram_size` với model này — nó ép máy
|
| 87 |
+
> "né chữ lặp" nên hay bóp méo tên riêng (Lý Giáng Thiên → Lý Giáng Dương).
|
| 88 |
+
> Cứ để mặc định như ví dụ trên.
|
| 89 |
+
|
| 90 |
+
## Chạy nhanh trên CPU (CTranslate2)
|
| 91 |
+
|
| 92 |
+
Repo kèm sẵn bản nén INT8 trong thư mục `ct2-int8_float32/` — dịch nhanh gấp nhiều
|
| 93 |
+
lần trên máy không có GPU:
|
| 94 |
+
|
| 95 |
+
```python
|
| 96 |
+
import ctranslate2
|
| 97 |
+
from pathlib import Path
|
| 98 |
+
from huggingface_hub import snapshot_download
|
| 99 |
+
from transformers import AutoTokenizer
|
| 100 |
+
|
| 101 |
+
repo = "ngocdang83/HachimiMT-60-QT"
|
| 102 |
+
path = Path(snapshot_download(repo, allow_patterns=[
|
| 103 |
+
"config.json", "source.spm", "target.spm", "vocab.json",
|
| 104 |
+
"tokenizer_config.json", "ct2-int8_float32/*",
|
| 105 |
+
]))
|
| 106 |
+
tokenizer = AutoTokenizer.from_pretrained(path)
|
| 107 |
+
translator = ctranslate2.Translator(str(path / "ct2-int8_float32"),
|
| 108 |
+
device="cpu", compute_type="int8_float32")
|
| 109 |
+
|
| 110 |
+
src = "你放心吧,人家是大公司,不会骗人的。"
|
| 111 |
+
toks = tokenizer.convert_ids_to_tokens(tokenizer(src).input_ids)
|
| 112 |
+
res = translator.translate_batch([toks], beam_size=1, max_decoding_length=256)
|
| 113 |
+
print(tokenizer.decode(tokenizer.convert_tokens_to_ids(res[0].hypotheses[0]),
|
| 114 |
+
skip_special_tokens=True))
|
| 115 |
+
# "Ngươi yên tâm đi, người ta là công ty lớn, sẽ không lừa người đâu."
|
| 116 |
+
```
|
| 117 |
+
|
| 118 |
+
## Gia đình Hachimi
|
| 119 |
+
|
| 120 |
+
| Model | Dùng khi |
|
| 121 |
+
|---|---|
|
| 122 |
+
| [HachimiMT-60-zh-vi](https://huggingface.co/ngocdang83/HachimiMT-60-zh-vi) | Giọng tự nhiên theo ngữ cảnh, đa thể loại |
|
| 123 |
+
| **HachimiMT-60-QT** (bản này) | Giọng convert thuần nhất, không đổi xưng hô |
|
| 124 |
+
| [Demo Space](https://huggingface.co/spaces/ngocdang83/HachimiMT-demo) | Dịch thử ngay trên trình duyệt |
|
| 125 |
+
|
| 126 |
+
Chi tiết kỹ thuật (56.96M tham số, Marian encoder-decoder, chạy tốt cả CPU lẫn GPU)
|
| 127 |
+
xem `config.json`. Giấy phép CC-BY-4.0 — dùng thoải mái, ghi nguồn là được.
|