何为Word Hashing?
仅用于英文中。具体以book这个单词为例,分为三个步骤:
- 在book两端添加临界符#book#
- 采用n-gram的方式分成多个部分,如果是trigrams那么结果是[#bo, boo, ook, ok#]
- 最终book将会用[#bo, boo, ook, ok#]的向量来表示
上面的过程就是word hashing,不难发现,hashing后的结果[#bo, boo, ook, ok#] 每个letter长度都是3个字母,因此成为tri-letter。
这种方式还叫BPE (Byte Pair Encode)
作用
单词词表很大,很容易出现OOV。但是word hashing后,词表不再是单词,而是每个letter,也就是词根,这样词表规模就会小很多。即使单词没有收入,但是词根都有,可以有效避免OOV。
当然,随之而来的可能有副作用,会存在两个不同的单词也有可能具有相同的tri-grams,针对这个问题论文中做了统计,这个冲突的概率非常的低,500K个word可以降到30k维,冲突的概率为0.0044%。
在中文中,其实我们也效仿了这种做饭,会采用字向量的形式,而非词向量,词典包含了大部分的中文,能有效降低oov的可能性。