论文笔记--Exploring Word Alignment Towards an Efficient Sentence Aligner for Filipino Languages

1. 文章简介

  • 标题:Exploring Word Alignment Towards an Efficient Sentence Aligner for Filipino and Cebuano Languages
  • 作者:Jenn Leana Fernandez and Kristine Mae Adlaon
  • 日期:2022/09/05
  • 期刊:ACL

2. 文章背景

  对于小语种来说,文本的收集以及平行语料库的构建是很困难的,从而造成这些语言的文本对齐和单词对齐任务面临很多难题。本文针对菲律宾的两种语言Filipino和Cebuano进行文本对齐的探索,希望对这两种语言未来的NLP发展有所贡献。

3. 文章导读

3.1 概括

  文章借助已有的预训练词嵌入模型,分别论证了使用BPE和不使用BPE的情况下模型在词对齐任务上的表现。

3.2 文章重点技术

3.2.1 Byte Pair Encoding (BPE)

  字节对编码BPE指将数据中最公共的连续子字符串用文本中未出现的单个字节替换的方法。具体算法为1) 首先将单词分割成字符,用空格分割字符 2) 然后找到频率最高的连续两个字符a和b,用ab替换 a+" " + b,得到新的词表 3) 循环步骤2)若干次(文章设置的是3500次),得到合适的分词词表。文章[2]给出了BPE的代码,读者可自行试验:

import re, collections

def get_stats(vocab):
    pairs = collections.defaultdict(int)
    for word, freq in vocab.items():
        symbols = word.split()
        for i in range(len(symbols)-1):
            pairs[symbols[i],symbols[i+1]] += freq 
    return pairs
    
def merge_vocab(pair, v_in):
    v_out = {}
    bigram = re.escape(' '.join(pair))
    p = re.compile(r'(?<!\S)' + bigram + r'(?!\S)') 
    for word in v_in:
        w_out = p.sub(''.join(pair), word)
        v_out[w_out] = v_in[word] 
    return v_out

num_merges = 20
vocab = {'l o w </w>' : 5, 'l o w e r </w>' : 2, 'n e w e s t </w>':6, 'w i d e s t </w>':3}
for i in range(num_merges):
    pairs = get_stats(vocab)
    best = max(pairs, key=pairs.get)
    vocab = merge_vocab(best, vocab)

读者可以通过下面的函数将单个句子转化为词表:

from collections import Counter

def build_vocab(sentence):
    cc = Counter(sentence.split())
    vocab = {}
    for w, v in cc.items():
        vocab[" ".join(w) + ' </w>'] = v
    return vocab

如下面示例,右边为作者在语料库上merge 35K次之后的结果。这里没有完整的语料库无法还原。
BPE
  通过BPE,可以将一些常用的单词提取为一个连续的字符串,不常用的单词分割成多个小的子分词。在应用BPE之后,文章的词表个数从167K和171K分别下降到了84K和83K,这是因为语料库中包含很多科学术语,长的单词被拆分成短的子单词,且子单词也作为单独的单词在语料库中出现过,从而总的唯一分词个数降低。

3.2.2 SimAlign算法

  SimAlign的中心思想是应用多语言预训练词嵌入进行单词对齐。文章采用fastText的但语言词向量嵌入,所有的语言都通过VecMap被嵌入到一个高维的共享空间;另一方面,文章采用多语言Bert嵌入表示上下文嵌入,该预训练模型给出的是每个sub-word的嵌入,单词的嵌入需要由单词的所有sub-word嵌入取均值得到。

4. 数值实验

4.1 数据集

  文章选用 Adlaon和Marcos[1]在2019年收集的菲律宾语数据集,共计使用来自维基百科、圣经、新闻和其它开源数据的500个对齐的句子对。

4.2 数据清洗

  对语料库中的句子,首先将其转换为小写字母,然后移除标点符号等特殊字符,即只保留字母进行学习。

4.3 数值实验结果

  文章首先测试了不使用BPE方法的模型性能,如下表所示。文章分别在Open Domain、Bible、Wiki和News四个数据集上进行测试,可以看到,在Open Domain上模型取得了最好的效果(F1=0.858),可能原因是该数据集上的句子长度普遍较短;在News上取得了最差的效果(F1=0.761),这是因为该语料库中包含了大量的数字、日期、连字符等,在经过预处理之后可能会损失掉一部分分词信息。
without-BPE
  使用了BPE方法的结果如下表所示,出了Open Domain之外,整体表现低于不使用BPE的方法。这可能是由于一些BPE分词结果并不正确导致的。
with-BPE

5. 原文传送门

Exploring Word Alignment towards an Efficient Sentence Aligner for Filipino and Cebuano Languages

6. References

[1] Building the Language Resource for a Cebuano-Filipino Neural Machine Translation System
[2] Neural Machine Translation of Rare Words with Subword Units

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值