Architecture pour la régression linéaire avec entrée variable où chaque entrée est codée à un hot de taille n

datascience.stackexchange https://datascience.stackexchange.com/questions/43517

Question

Je suis relativement nouveau à l'apprentissage en profondeur (j'ai une certaine expérience avec CNNS à Pytorch), et je ne sais pas comment aborder l'idée suivante. Je veux analyser une phrase, par exemple J'aime les arbres., un hot a codé la sortie d'analyse de chaque mot et alimenter cela dans un système ML. La sortie de chaque phrase est un numéro de point flottant. Par exemple, la phrase J'aime les arbres. pourrait être prétraité et codé sous forme de vecteurs de caractéristiques de taille fixe par jeton:

[[0 1 0 0 1] [1 0 0 0 0] [1 0 1 1 0] [0 0 0 0 1]]

ou aplati

[0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1]

Cependant, la durée des phrases peut différer bien sûr. D'après ce que je sais, il y a des correctifs à cela. En utilisant un rembourrage (lorsqu'il est plus court que votre coupure définie) ou couper la longueur de cette coupure (lorsque plus). Une autre solution que je vois souvent mentionnée est l'utilisation d'un RNN / LSTM mais je n'ai aucune expérience avec eux (seulement la notion théorique de base).

La sortie attendue (étiquette) de cette phrase pourrait être quelque chose comme 50.2378.

Ma question est donc quelle architecture convient le mieux à cette tâche? Les RNN sont populaires dans la PNL, donc je me penche vers eux, mais je ne sais pas si une tâche de régression correspond bien (ou comment elle s'intègre) avec l'architecture d'un RNN. J'ai recherché des RNN et de la régression, mais je ne trouve que des cas d'utilisation impliquant des séries chronologiques, pas des fonctionnalités NLP ou en un seul.

Essentiellement, ce que j'ai, c'est un ensemble de données de phrases qui sont prétraitées pour obtenir des fonctionnalités par jeton. Supposons que pour des raisons de brièveté que ces fonctionnalités sont syntaxiques, par exemple la balise POS du mot et ses informations de dépendance (par exemple Subj, OBJ, etc.). Ces fonctionnalités obtiendraient alors un coché un hot (je suppose) d'obtenir un ensemble de données facile à utiliser. La saisir, ainsi, des phrases sont codées de manière à ce que les informations des jetons soient montrées, telles que l'exemple aplati ci-dessus.

La sortie de chaque phrase est un nombre de points flottants, représentant une valeur qui a été calculée au préalable en théorie, elles indiqueront l'équivalence de la phrase avec sa traduction, mais ce n'est pas du tout important pour le système. La partie importante est que chaque entrée est une phrase mappée à un nombre.

Quelques données factices. La phrase réelle, c'est la représentation vectorielle et la sortie.

I like trees.                   [0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 1]                           50.2378
What is that thing?             [1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1]               20.1237
Who are you?                    [0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1]                           1.6589
The cookies smell good today.   [0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 1]     18.6295
I do!                           [0 1 0 0 1 1 0 1 1 0 0 0 1 0 1]                                     24.5489   

L'objectif est donc qu'une phrase invisible donnée peut être prétraitée et encodée à un hot et donné en entrée, et qu'une sortie (numéro de point flottant) est prévue sur la base du modèle / fonction formé.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top