2017-03-26 3 views
3

Kann mir jemand erklären, was der Tensorflow BoW Encoder macht/zurückgibt? Ich würde erwarten, einen Vektor von Wortzählungen pro Dokument zu erhalten (wie in Sklearn), aber anscheinend macht es etwas mehr Phantasie.Tensorflow Bow Encoder Erklärung

In diesem Beispiel:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/learn/text_classification.py

features = encoders.bow_encoder(
    features, vocab_size=n_words, embed_dim=EMBEDDING_SIZE) 

A 'embed_dim' ist vergangen und ich verstehe auch nicht, was dies im Zusammenhang mit einer Verbeugung Codierung tut. Die Dokumentation ist leider nicht sehr hilfreich. Ich könnte versuchen, den Tensorflow-Code sicher durchzuarbeiten, aber ich würde mich über eine Erklärung auf hoher Ebene freuen.

Antwort

0

Im klassischen BOW-Modell wird jedes Wort durch eine ID (Sparse-Vektoren) repräsentiert. Der bow_encoder bildet diese dünnen Vektoren auf eine andere Ebene mit der durch "embed_dim" angegebenen Größe ab. bow_encoder wird verwendet, um eine dichte Vektordarstellung für Wort oder Text zu lernen (wie z. B. im word2vec-Modell).

Aus der Tensorflow-Dokumentation über bow_encoder: "Ordnet eine Sequenz von Symbolen pro Vektor durch Mittelung von Einbettungen zu."

Also: Wenn der Eingang zum bow_encoder ein einzelnes Wort ist, wird es nur auf die eingebettete Ebene abgebildet. Während ein Satz (oder Text) wortweise gemappt wird und der letzte eingebettete Vektor gemittelt wird.