CoolFace
Datasetpublic

kaihe/chinese_vietnamese_bilingual_wangwen

本数据集是一个中文到越南语的机器翻译数据集。数据集构造自较为受欢迎的网络小说,首先从越南语的小说站点根据排行榜看有哪些书比较受欢迎,看看哪些书是从对应的中文网文小说翻译而来的(大部分都是)。 拿到同一本书的中文版本和越南语版本后,就可以进行alignment。如果翻译是忠于原著的,那么 每个章节都能对上 同一个章节中的每个句子都能对上 实操过程中作者踩了很多坑,比如 作者的写作习惯不一样,无法把txt文本有效地切割成chapters 中文和越文版本的小说正文中有可能夹杂一些广告,要尽量过滤掉这些噪音 长篇网文有2000多chapter,中文版本和越文版本都可能丢失一些章节,要过滤掉无法对齐的章节 对齐算法是作者自己设计的,参考了transportation theory,以章节对齐为例。首先计算中文章节和越文章节两两之间的相似度,然后由动态规划算法寻找一条最优路径,给每一个中文章节asign一个越文章节。大致的过程如下图所示: 于是相似度计算就是其中的关键因素,对齐章节和对齐章节里的句子采取不同的相似度matric。 Chapter… See the full description on the dataset page: https://huggingface.co/datasets/kaihe/chinese_vietnamese_bilingual_wangwen.

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
9likes75downloads
Dataset Card

本数据集是一个中文到越南语的机器翻译数据集。数据集构造自较为受欢迎的网络小说,首先从越南语的小说站点根据排行榜看有哪些书比较受欢迎,看看哪些书是从对应的中文网文小说翻译而来的(大部分都是)。 拿到同一本书的中文版本和越南语版本后,就可以进行alignment。如果翻译是忠于原著的,那么

  1. 1.每个章节都能对上
  2. 2.同一个章节中的每个句子都能对上

实操过程中作者踩了很多坑,比如

  • —作者的写作习惯不一样,无法把txt文本有效地切割成chapters
  • —中文和越文版本的小说正文中有可能夹杂一些广告,要尽量过滤掉这些噪音
  • —长篇网文有2000多chapter,中文版本和越文版本都可能丢失一些章节,要过滤掉无法对齐的章节

对齐算法是作者自己设计的,参考了transportation theory,以章节对齐为例。首先计算中文章节和越文章节两两之间的相似度,然后由动态规划算法寻找一条最优路径,给每一个中文章节asign一个越文章节。大致的过程如下图所示: [image]

于是相似度计算就是其中的关键因素,对齐章节和对齐章节里的句子采取不同的相似度matric。

Chapter Similarity

作者观察到越语作为一种字母语言,词与词之间用空格间隔,实体词(尤其是人名,道具名和地名)首字母大写,并且与汉语拼音非常接近。举例如下:

越南语实体中文实体
Hàn Lập韩立
Nguyên Anh元婴
Ngân Nguyệt银月
Đại Thừa大乘
Hợp Thể合体
Kết Đan结丹
Nam Lũng Hầu南陇侯
Tử Linh紫灵
Bảo Hoa宝花
Trúc Cơ筑基
Phệ Kim Trùng噬金虫
Khúc Hồn曲魂
Nguyên Dao元瑶

因此可以先对整部小说进行中文的实体识别,再用规则提取越南语实体,再根据以下规则判定哪些实体能对应上:

  • —字数相同(中文数字符,越文数词数)
  • —实体在小说中出现的频次大体相同(词频数量上下偏差不超过10%)
  • —拼音大体能对上

实操中发现,基于前两点已经大概能对齐实体了。有了大概能对齐的实体,就可以将越南语的实体词和汉语拼音进行对齐。实操中可以多次重复这个步骤(类似EM算法)让实体词之间形成一个稳定的映射。

有了实体词映射后,就可以把中文chapter和越南语chapter分别encoding成one-hot的实体词向量,用向量间的余弦距离作为相似度matric。

Sentence Similarity

到了句子级别,就不能仅仅依靠实体对齐来计算相似度了(因为不一定所有句子都包含实体)。作者尝试过两种方法:

  1. 1.获取一个中越双语词典,count两个句子有多少个词能对上,作为相似度的依据
  2. 2.基于Siamese network训练一个打分模型,作为相似度依据

实操中发现由于作者自己设计的路径寻找算法需要计算两两句子的相似度,每次都跑神经网络的话开销太大。因此建议采用方案1 对齐后的句子还进行了一些过滤,去掉了少于5个越南字的句子。

数据结构

input是某本书的一个完整章节,output是对应的越南语完整章节。90本小说都打散成了章节,无法区分哪个章节来自哪本小说。

另附一些原始数据源: parallel_chapters.jsonl 篇章对齐数据每一行代表一本书,每本书的结构如下:

{
    'zh_name': 中文小说名,
    'vi_name': '',
    'chapters': [
        {
            'zh':{
                'chapter_name': 中文章节名,
                'chapter_id': 解析出的中文章节编号,
                'body': [句子一,句子二]
            },
            'vi':{
                'chapter_name': 越文章节名,
                'chapter_id': 解析出的越文章节编号,
                'body': [句子一,句子二]
            }
        },
        ...
    ]
}

parallel_sentences.jsonl 句子对齐数据每一行代表一本书,每本书的结构如下:

{
    'name':中文书名,
    'sentences': [
        [中文句子, 越文句子],
        ...
    ]
}

books.zip 作者收集的双语网文共90本(时间太久丢掉了一部分书,句子级别已经对齐的书有300+本),和从越南语版本中解析出的实体词