We create a single vocabulary \(V\)  consisting of the source sentence tokens, relation names from relation set \(R\) , special separator tokens (`;', `\(\vert \) '), start-of-target-sequence token (SOS), end-of-target-sequence token (EOS), and unknown word token (UNK). Word-level embeddings are formed by two components: (1) pre-trained word vectors (2) character embedding-based feature vectors. We use a word embedding layer \(\mathbf {E}_w \in \mathbb {R}^{\vert V \vert \times d_w}\)  and a character embedding layer \(\mathbf {E}_c \in \mathbb {R}^{\vert A \vert \times d_c}\) , where \(d_w\)  is the dimension of word vectors, \(A\)  is the character alphabet of input sentence tokens, and \(d_c\)  is the dimension of character embedding vectors. Following [1]}, we use a convolutional neural network with max-pooling to extract a feature vector of size \(d_f\)  for every word. Word embeddings and character embedding-based feature vectors are concatenated (\(\Vert \) ) to obtain the representation of the input tokens.
