NISHIO Hirokazu[Translate]
未知語の問題
2018-10-14
Xとnot Xを識別するNNを学習しようと思った
Xからvocabを作って、not Xのそのvocabに出てこない単語を未知語にすると「未知語が出てきたらnot X」っていう自明な抜け道ができてしまう
両方の語彙を合成すべきなのだろうか?
unionしたところで、結局「この単語が出てきたらnot X」を覚えるのが手っ取り早いってことにならないか?
intersectしてしまおうか?

:
>>> len(vocab) 37578 >>> len(c.keys()) 4891 >>> len(set(c.keys()).intersection(vocab)) 3592

Xの語彙の大部分が失われてしまうのではないか??
それでいいのか??
not Xの中のUNKの出現頻度を計算して、Xのvocabから同じ頻度でUNKになるように削るか?
:
>>> sum(c.values()) 354748 >>> sum(c[k] for k in c if k not in vocab) 16071 >>> 16071 / 354748 0.045302580987066875

:
>>> z = np.load("words.npz") >>> count = z["count"][:,1].astype(int) >>> count.sum() 1633886 >>> _ * 0.0453 74015.0358 >>> count[count < 10].sum() 73467 >>> count[count <= 10].sum() 77827

10回以下しか出現しない単語をUNKにすればだいたい比率は同じか
それはまあありな気がする

"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]