We first introduce our way to encode heterogeneous inputs into vector representations.
As shown in Fig. REF , the input to our model is a sequence, consisting of user ID \(u\) , item ID \(i\) , features \(F_{u, i}\) , and explanation \(E_{u, i}\) .
The user and the item serve for the purpose of personalization, i.e., aiming to make the generated explanation reflect both the user's interests and the item's attributes.
The features can guide the model to talk about certain topics.
For instance, a conversational recommender system may explain a recommendation's specialty to the user with the goal of knowing more about his/her preference [1]}.
Since the features are not always available, in our experiments we test both cases (with and without them).
When they are available, the input sequence can be represented as \(S = [u, i, f_1, \cdots , f_{\left| F_{u, i} \right|}, e_1, \cdots , e_{\left| E_{u, i} \right|}]\) , where \(f_1, \cdots , f_{\left| F_{u, i} \right|}\)  are the features and \(e_1, \cdots , e_{\left| E_{u, i} \right|}\)  are the explanation's word sequence. \(\left| F_{u, i} \right|\)  denotes the number of features and \(\left| E_{u, i} \right|\)  is the number of words in the explanation.
<FIGURE>