WordPiece
網易一面的面試題,自己當時推了一下,現在看了下答案,發現自己推的是對的,再重新整理一下。
WordPiece原理
現在基本性能好一些的NLP模型,例如OpenAI GPT,google的BERT,在數據預處理的時候都會有WordPiece的過程。
WordPiece字面理解是把word拆成piece一片一片,其實就是這個意思。
WordPiece的一種主要的實現方式叫做BPE(Byte-Pair Encoding)雙字節編碼。
BPE的過程可以理解為把一個單詞再拆分,使得我們的詞表會變得精簡,并且寓意更加清晰。主要用于處理未登錄詞。
比如"loved",“loving”,"loves"這三個單詞。其實本身的語義都是“愛”的意思,但是如果我們以單詞為單位,那它們就算不一樣的詞,在英語中不同后綴的詞非常的多,就會使得詞表變的很大,訓練速度變慢,訓練的效果也不是太好。
BPE算法通過訓練,能夠把上面的3個單詞拆分成"lov",“ed”,“ing”,"es"幾部分,這樣可以把詞的本身的意思和時態分開,有效的減少了詞表的數量,個人覺得模型可能還能夠學習到一些時態信息。
與N-gram的關系
可以看下這里是如何使用N-gram的。
實際上,N-gram分割詞是分割成固定的大小,而Wordpiece分割出來的大小不是固定的,而是將詞本身與時態分割開;但兩者其實都能在一定程度上解決OOV的問題。
蕓蕓補
1、中文wordpiece是怎么做的?
- 中文沒有wordpiece
2、中文的N-gram是如何做的?
一種基于char,一種基于word的。
基于char:
- 比如一種最傳統的做法就是基于char的。如1-gram,“我來到北京清華大學”。即 我 來 到 北 京 清 華 大 學。比如2-gram, 我來 來到 到北 北京 京清 清華 華大 大學。
基于word:
- 先中文分詞(jieba分詞),我/ 來到/ 北京/ 清華大學。分開的每個都可以當做單獨的token。這么做中文詞表會非常大。所以需要對中文詞表設定最低詞頻和最大詞表大小。
3、oov如何解決?
- wordpiece和N-gram
4、中文oov如何解決?
- 中文如果是oov,不在詞表范圍,其實也不好解決。之前也有看過通過偏旁部首進行操作,具體效果也不太確定。
總結
- 上一篇: [haut] 1281: 邪能炸弹 d
- 下一篇: java lame_音视频编解码——LA