未知語の問題
2018-10-14
Xとnot Xを識別するNNを学習しようと思った
Xからvocabを作って、not Xのそのvocabに出てこない単語を未知語にすると「未知語が出てきたらnot X」っていう自明な抜け道ができてしまう 両方の語彙を合成すべきなのだろうか?
unionしたところで、結局「この単語が出てきたらnot X」を覚えるのが手っ取り早いってことにならないか?
intersectしてしまおうか?
code::
>> len(vocab)
37578
>> len(c.keys())
4891
>> len(set(c.keys()).intersection(vocab))
3592
Xの語彙の大部分が失われてしまうのではないか??
それでいいのか??
not Xの中のUNKの出現頻度を計算して、Xのvocabから同じ頻度でUNKになるように削るか?
code::
>> sum(c.values())
354748
>> sum(ck for k in c if k not in vocab) 16071
>> 16071 / 354748
0.045302580987066875
code::
>> z = np.load("words.npz")
>> count.sum()
1633886
>> _ * 0.0453
74015.0358
73467
77827
10回以下しか出現しない単語をUNKにすればだいたい比率は同じか
それはまあありな気がする