metadata
license: cc-by-nc-sa-4.0
language:
- zh
- vi
基于Qwen2.5-14B-Instruct,在5本网文(惊悚乐园、恐怖屋等)的官方越南语翻译数据上微调
Dựa trên Qwen2.5-14B-Instruct, đã được finetune trên dữ liệu dịch chính thức sang tiếng Việt của 5 truyện Trung (như Khu Vui Chơi Đáng Sợ, Hệ Thống Nhà Ma, ...)
模型支持中文↔越南语的双向翻译
Mô hình hỗ trợ dịch song ngữ Trung ↔ Việt
- 中翻越
- Dịch Trung Việt
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
model_path = 'CjangCjengh/WN-VN-14B-v0.1'
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map='auto', trust_remote_code=True).eval()
model.generation_config = GenerationConfig.from_pretrained(model_path, trust_remote_code=True)
# 段落之间用\n分隔
# Giữa các đoạn văn dùng \n để phân tách
text = '''“痛!太痛了!”
“不要砍我啊,我真没想开后宫!我只是想给你们所有人一个家而已!我有什么错?”
温柔的雨夜,竹叶漱漱落下。
伴随着一阵头疼,许源从睡梦之中惊醒过来,睁开眼睛。
“我……我这是在哪里?”
当他从痛苦之中清醒,瞳孔彻底聚焦,看清周围的环境之后,却是忍不住地愣在了原地。
无外乎他惊讶。
毕竟眼前的一切对于他来说的确是过于陌生了。
由造价不菲的温润青玉饰以精致雕花而成的墙壁映入眼帘,布在天山雪蚕吐出的宝丝所编制成的窗户上的阵法将落入屋中的微薄月华炼化成丝丝缕缕的白色絮状灵气,石桌上摆放着一盏千年紫沉木灯,焰光于风中轻轻摇曳,让人仿佛置身于仙境之中。'''
# 文本长度控制在1024以内
# Đảm bảo độ dài văn bản dưới 1024 ký tự
assert len(text) < 1024
messages = [
{'role': 'user', 'content': f'翻译成越南语:\n{text}'}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors='pt').to('cuda')
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=1024
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
- 越翻中
- Dịch Việt Trung
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig
model_path = 'CjangCjengh/WN-VN-14B-v0.1'
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map='auto', trust_remote_code=True).eval()
model.generation_config = GenerationConfig.from_pretrained(model_path, trust_remote_code=True)
# 段落之间用\n分隔
# Giữa các đoạn văn dùng \n để phân tách
text = '''Chương đầu xin phép các bạn cho tôi lan man chút, từ cái thời tôi còn nhỏ tụt quần đá banh ấy, thú thật là tôi mê con gái từ lúc ấy rồi chứ chẳng đợi đến cấp 3 hay đại học gì cả, nhờ vậy mà ít nhiều gì sau này tôi mới gặp được người yêu bây giờ, nên các bác chịu khó theo dõi nhé!
Trời sinh người ta học giỏi, thể thao giỏi, hát hay, đàn hay, nhiều tính hay lắm…tôi thì trời sinh tôi cái tính mê con gái, thế nên từ lớp 2 tôi đã động lòng phàm rồi, cơ mà lúc ấy chưa có gì bậy bạ đâu, cái sự đen tối nó chỉ tăng dần theo thời gian. Để tôi tóm gọn vài dòng về cái thời tuyệt vời ấy cho các bạn biết, lúc nhỏ vui lắm!
Lớp 1: Chưa có gì cả đâu, đi học mấy ngày đầu còn sợ vãi linh hồn ra, gái đâu mà để ý.
Lớp 2: Đây, vào lớp 2, được xếp ngồi gần nhỏ bạn lớp trưởng, lúc đầu tôi cũng chả có ý gì sất. Chỉ là em ấy hay đem kẹo mời tôi ăn, hình như nhà em ấy là tiệm bánh kẹo. Sướng, ngày nào cũng có bánh kẹo ăn, thế là tôi thấy thinh thích em này, mà lại là lớp trưởng nữa, có gì tôi nói chuyện trong lớp thì em ấy cũng không mách cô. Đấy, cái tình cảm này gọi là tình cảm chân thành, không vụ lợi, hề hề! Cơ mà hết học kỳ 1 thì xảy ra chuyện động trời, rồi tôi bị chuyển chỗ, và em cũng làm mặt lạnh với tôi luôn!'''
# 单词数控制在768以内
# Đảm bảo số từ dưới 768
assert len(text.split()) < 768
messages = [
{'role': 'user', 'content': f'翻译成中文:\n{text}'}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors='pt').to('cuda')
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=1024
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)