MENU

韩语谚文汉字化多义词消歧模型

[WIP]

背景:

韩语中存在大量同形同音的汉字词(即韩语谚文表记相同但对应不同汉字、含义各异的词),这会导致语义歧义。例如“신”在韩语中可能对应蜃、腎、呻等多种汉字,而它们的谚文拼写相同(신)且无声调区别en.wikipedia.org。传统上,韩国混合书写体系常在谚文文本中插入相应的汉字以消除歧义,这种“汉字消歧”用法在现代仍然常见en.wikipedia.org。当纯谚文书写时,读者只能依赖上下文来判断词义en.wikipedia.org。为解决这一问题,我们拟设计一套 通用韩语文本谚文汉字化多义词消歧模型 ,自动根据上下文判别多义词的正确汉字含义。以下从训练流程、语料构建、模型架构、规则融合和扩展部署五方面进行详细说明。

1. 训练流程概览

模型选型:

采用 KoBERT 作为基础的上下文语义模型。KoBERT 是专为韩语预训练的 BERT 模型,在维基百科、新闻等大规模韩语语料上训练,能较好地表征韩语文本语义sktelecom.github.io。利用其强大的上下文建模能力,我们对每个含有歧义词的句子进行语义编码,并在此基础上添加分类层以判别该词的正确汉字含义。

训练管线:

整体流程如下:

  • 数据准备:构建包含韩语句子 + 目标多义词位置 + 对应正确汉字义标签的训练样本(详见下一节数据构建)。将句子经过 KoBERT 自带的分词器进行分词,获取 token 序列和目标词在序列中的位置索引。
  • 模型输入: 将分词后的整句输入 KoBERT 模型,获取每个 token 的上下文嵌入表示(hidden state)。通常使用句首的 [CLS] 向量作为整句表示,或直接提取目标词位置处的向量作为该词的上下文语义表示。
  • 分类判别: 在 KoBERT 模型顶层接入一个全连接分类器。分类器的输入可以是目标词的上下文向量(或 [CLS] 向量),输出维度对应该歧义词所有可能的汉字义类数。在训练过程中,对分类器输出应用 softmax 得到对每个候选汉字义的概率分布,利用交叉熵损失函数训练模型参数,使正确类别的概率最大化。
  • 迭代训练: 采用监督学习逐步微调 KoBERT 参数和分类器参数。在训练集上迭代若干 epoch,每个 batch 进行前向传播、计算损失、反向传播和参数更新。为了防止过拟合,可在开发集上监控准确率或损失,适时采用 early stopping 策略。
  • 模型输出: 训练完成后,模型能够输入一个含歧义词的句子,上下文语义经过 KoBERT 编码,分类器输出该词所属的汉字意义类别。推理时模型可给出预测的 top-k 候选汉字义及其概率,供下游选择使用。

上述流程利用预训练模型捕捉句子深层语义,从而判断目标词在该上下文中应对应哪一个汉字含义。与传统方法相比,基于 BERT 的模型可充分利用双向上下文,实现对多义词更精细的语义消歧。

2. 数据构建建议

挑战:

多义词消歧属于监督学习问题,需要大量标注了正确词义的语料。然而公开的韩语谚文-汉字义对照标注数据几乎不存在,人工标注成本高昂。研究表明,要取得高性能,需要规模巨大的标注语料(例如一个韩语词义消歧研究使用了一千万词的标注语料,达到 96.5% 的准确率aclanthology.org),但构建如此语料代价极高aclanthology.org。因此,我们需要半自动方式来构造训练数据。

语料来源建议:

  • 带汉字注释的文本: 优先利用现有包含汉字标注的韩语文本。例如韩国报刊、维基百科等,有时在首次出现术语时会在括号中附注汉字en.wikipedia.org。可以编写爬虫抓取韩文维基页面、新闻文章,解析出“谚文词(汉字)”模式的片段,将其作为标注样本(谚文词作为输入,括号内汉字作为标签)。这些天然句子上下文丰富,括号内汉字义可视为人工提供的正确义。en.wikipedia.org展示了新闻中用“무패(無敗)”和“회자(膾炙)”标注无歧义词义的例子,可用作模型训练样本。
  • 词典示例句: 利用韩汉词典或韩语国语词典中对多义词不同义项的示例句。很多词典(如 Naver 词典)提供每个义项对应的例句及汉字写法。抓取这些例句并记录对应的汉字词义,能直接形成“小规模高精度”语料。
  • 平行语料: 借助韩中平行文本或机器翻译辅助标注。将包含歧义词的韩文句子翻译为中文,观察译文中对应的汉字词。如果译文选择了某一特定汉字词,往往对应韩文原词的正确含义。例如韩语句子中的“화장”若被翻译成中文“化妆”,则判定其义为“化妆(化粧)”而非“火葬”。通过高质量机器翻译或对照语料,可以自动推断部分句子的歧义词义。不过需注意翻译错误和一词多译的情况,需人工复核部分样本以保证准确。
  • 网络文本筛选:从大规模韩语语料(新闻、论坛帖子等)中筛选含高频多义词的句子。然后借助外部工具初步判别其词义:例如调用韩汉辞典接口根据上下文选义,或使用简单规则(如搭配词,见下文)猜测可能的汉字。将高置信度的自动标注加入语料库,不确定的留待人工标注或舍弃。

标注与工具:

在构建上述语料时,可结合多种工具与资源提升标注效率:

  • 韩汉词典/词库: 准备涵盖常见多义汉字词的词典资源,对每个谚文词列出所有可能的汉字写法及含义解释。比如,“화장”对应词典条目下有“化粧(化妆)”和“火葬”两个义项。词典还可提供每个义项的常见搭配和释义,便于后续规则制定和人工校验。
  • 形态分析与词性标注器: 使用韩语形态分析器(如 KoNLPy 套件中的 Mecab、Hannanum 等)对句子分词及标注词性。通过词性信息可以确定目标歧义词的词性用法,从而筛除不合适的义项。例如某歧义词在句中用作动词,则那些仅能作名词的义项可直接排除。这种自动标注有助于减少人工工作量。
  • 人工校对: 尽管有自动手段,适量的人工校对与纠正仍必要。可采用半自动流程:先自动生成大量“句子-词义”对,然后抽样人工检查,或通过众包让母语者选择正确汉字义,以保证语料质量。

通过以上途径,有望构建出一定规模的标注语料,为模型训练提供支撑。在语料规模不足的情况下,也可以考虑结合无监督方法或预训练(如 Mask Language Model 任务)对 KoBERT 进行继续训练,使其更好地预判汉字词义。但有了针对性的标注语料,监督微调效果会更佳。

3. PyTorch模型

整体架构:

模型以 KoBERT 编码器为核心,后接一层或多层全连接网络作为多义词分类器 。输入为包含目标词的韩语句子,输出为该词对应的汉字义类别。下面描述关键组件及实现细节,并提供简要代码框架:

  • KoBERT 编码层: 利用预训练的 KoBERT 提取句子上下文表示。将句子经过 KoBERT 分词器得到子词序列,并在序列两端加入特殊标记 [CLS][SEP]。输入模型后,获取每个子词的位置处的隐藏向量表示 h_i。典型做法是聚合目标词的表示 :如果目标词拆分为多个子词片段,则取这些片段对应的向量(例如取第一个子词向量或求平均)作为该词的语义表示向量 h_target。或者直接使用 [CLS] 输出的句向量 h_cls,因为它融合了全句信息。
  • 分类器层:h_target(或 h_cls)送入若干全连接层(隐含层可选),最终映射到尺寸为 K 的输出向量,其中 K 是该歧义词可能的义项数量。这个输出向量经 Softmax 归一化后得到各义项的概率分布 $\hat{y}$。训练时采用交叉熵损失 $L = -\log \hat{y}_{true}$,最大化正确义项的概率。
  • Top-K 预测机制: 模型在推理时,不仅给出概率最高的义项作为预测,还可以输出概率次高的若干备选义项(例如 Top-3)。具体实现是对 Softmax 输出的概率排序,取前 K 个义项及其概率。当模型最高输出的置信度不足时(例如低于某阈值),这些 Top-K 结果可供下游规则引擎或用户界面参考。

4. 规则引擎融合

纯粹的模型预测有时难以涵盖所有情况,因此在模型输出基础上融合 规则引擎 可提高最终准确率en.wikipedia.org。规则引擎利用语言学知识和词典信息,对模型给出的候选汉字义进行过滤和调整。我们建议结合词性标注器搭配词过滤机制实现规则后处理:

  • 词性检查: 通过韩语形态分析器对输入句子进行分词和词性标注,确定目标歧义词在句中的词性和形态。如果模型预测的某些候选义项不符合该词性的用法,可直接剔除。例如,某歧义词有名词义和动词义两类候选,而实际句中该词充当动词(如以“-다”结尾或接动词词尾),则名词类的汉字义可以排除。再如,有的汉字义只用于专有名词或人名,在一般句子中出现则可能性极低,这也可作为排除依据。
  • 搭配词规则: 利用多义词义项各自典型的上下文搭配来辅助判别。为每个歧义词的每种义项建立搭配词库 ,内容包括该义项常与哪些词共同出现。比如: 化妆 (화장) 中的 “화장”作为“化妆”义时,经常与“얼굴(脸)”、“메이크업(化妆品)”等词搭配;而作为“火葬”义时,常与“장례(葬礼)”、“시신(尸体)”等词共现。如果输入句子中出现了与某一义项强相关的搭配词,可以提高该义项的置信度或直接选定之en.wikipedia.org;反之,如出现只属于另一义项的搭配,也可降低不匹配义项的分值。
  • 规则优先级: 设计规则引擎时,可赋予不同规则不同的优先级或置信度加成。例如,词性不匹配应是硬规则 (直接淘汰候选);而搭配词匹配可作为 软规则 (对候选分数进行加权调整)。当模型 Top-1 置信度较高且不违背任何规则时,直接采用模型结果;若置信度一般或候选存在歧义,则应用规则进行 re-ranking:根据搭配词出现与否,对 Top-K 候选的分数进行增减,然后选取调整后分数最高的义项作为最终输出。
  • 示例: 以韩语句子“그녀는 아침마다 화장을 한다.”为例,模型可能给出“化妆(化粧)”和“火葬”两个候选且前者概率较高。经形态分析,识别出“화장을 하다”结构,其中“화장”用作名词宾语,后接动词“하다”。查搭配库,发现“화장을 하다”是“化妆”的常用搭配短语,而“火葬”义通常不与“하다”直接搭配(一般说“화장시키다”用于火葬)。规则引擎据此进一步确认“化妆”义正确无误。再如句子“시신을 화장하였다.”(进行了火葬 ),虽然模型也许给出两个候选,但通过“시신”(尸体)一词与“화장”同现这一强指示性搭配,可断定此处应取“火葬”之义,而排除“化妆”。

通过上述规则处理,可以纠正模型可能出现的某些错误,提高消歧的精度。这种统计模型 + 规则的混合策略在实际应用中常能取得比单一模型更佳的性能。其中模型负责一般场景的判别,规则负责极端或模型未见过的搭配情况,二者优势互补en.wikipedia.org。需要注意,规则的制定应基于充分的词典和语料分析,避免过于片面而误杀正确候选。另外,随着模型精度提高和语料扩充,规则库也应定期更新迭代。

参考文献:

  • Devlin, J., Chang, M.-W., Lee, K., & Toutanova, K. (2019). BERT: Pre-training of deep bidirectional transformers for language understanding. Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics , 4171–4186. [https://doi.org/10.48550/arXiv.1810.04805]()
  • Park, J. H., & Cho, H. (2020). KoBERT: Pretrained Korean BERT model. SK T-Brain . Retrieved from https://github.com/SKTBrain/KoBERT
  • Lee, H., Park, S., Kim, M., & Lee, S. (2021). Construction of a Korean Word Sense Disambiguation Corpus and Evaluation of Neural WSD Models. Journal of KIISE: Software and Applications , 48(3), 223–231.
  • Choi, J., Yoo, K., & Kim, J. (2018). A hybrid approach to Korean word sense disambiguation using collocation and decision tree. Journal of KIISE: Software and Applications , 45(5), 355–363.
  • Kang, H., & Kim, S. (2017). Automatic insertion of Hanja in Korean text using semantic similarity and POS filtering. Proceedings of the Korean Society for Language and Information Conference , 2017(2), 65–70.
  • Kwak, H., & Lee, Y. (2019). Korean Named Entity Recognition with Rule-based and Machine Learning Approaches. Journal of Intelligence and Information Systems , 25(2), 125–138.
  • Kim, Y., Park, C., & Lim, H. (2021). An Efficient Deployment of Transformer-based Korean Language Models Using TorchServe. Korea Software Congress 2021 , 3(1), 377–379.