子词分割技术全解析
1. 子词分割基础
子词分割在自然语言处理中是一项关键技术,对于处理大规模语料和多语言文本尤为重要。在进行子词分割时,为防止算术下溢,我们会用负对数似然(NLL)来替代概率乘积,即最小化 $-\sum_{i = 1}^{n} \log P(sw_i)$ 。
2. 一元分词器
2.1 初始类
可以创建初始的一元类,使用如下模式进行预分词:
import re
words = re.findall(r'\p{P}|[^\s\p{P}]+', text)
并像WordPiece那样,给单词添加 ' ' 前缀。以下是一元类的实现:
import re
class Unigram():
def __init__(self, uni_probs):
self.uni_probs = uni_probs
self.pattern = r'\p{P}|[^\s\p{P}]+'
def pretokenize(self, text):
words = re.findall(self.pattern, text)
words = list(map(lambda x: ' ' + x, words))
return words
不过,目前由于没有一元概率的估计,还无法创建 Un
超级会员免费看
订阅专栏 解锁全文
2734

被折叠的 条评论
为什么被折叠?



