## 3 Enabling the Enhancements of Language Features and Domain Knowledge
### Integrating Domain Information  
The essential information of a Maven dependency library includes the identification, multiple domain tags, and the description. Among them, the identification of the dependency library is the unique coordinates consisting of groupId, artifactId, and version. The groupId represents the organization to which the developers of the library belong, the artifactId represents a specific library, and version represents the specific version of the library. As an example, for the prevalent unit test dependency library JUnit, its identifications of (groupId, artifactId, version) are (junit, junit, and 4.13.1), respectively. The domain tags of a dependency library reflect the domain, functional attributes and categories to which the library belongs. For example, the tags of JUnit include 'testing', 'junit'. The description of the dependency library uses short text to describe the implemented functions, features, developers, etc. For example, the description of the JUnit dependency library is \"JUnit is a unit testing framework for Java, created by [PERSON] and [PERSON]\". To sum up, in addition to the coordinates of dependency library identification, the accessible and relatively reliable information are tags and description, which both carry a certain amount of domain information. The tags is relatively concise, while description carries more general information. Classic models [4; 6] utilized models based on association rule mining, collaborative filtering, deep learning, etc. The adopted technical approaches indicate a continuous  
Figure 3: The structure of LibRepLayer. Figure 2: EMGSCC model overview. Where * is specially used to indicate the output state of different time steps when this LSTM evolves. improvement trend. However, the scope of training samples is limited to the library's coordinates. The proposed data-driven models discover potential relations via the generation target itself. Therefore, following the enhancement path, EMGSCC designs the LibRepLayer, trying to learn the usage pattern of dependency code and obtain practical and outperforming results. EMGSCC is a domain knowledge awareness model, which integrates the library tags and description that carry a certain amount of domain information purposefully. We design the LibRepLayer module to obtain the representation that integrates various essential information of the dependency library, and the detailed structure of LibRepLayer is shown in Figure 3. The LibRepLayer consists of three main components: the Embedding Layer for the identification coordinates _id_, the multiple-hot transformer for the domain _tags_, and the LSTM for the functional description _desc_. After obtaining the vectors of essential information \(v_{id}\), \(v_{tag}\), \(v_{desc}\), we concatenate three different vectors and finally feed them into the input processing layer. The Introduction of Domain Tags of a Dependency Library. There are \(n_{t}\) types of domain tags in the dataset; a dependency library may be associated with multiple domain tags. Accordingly, multiple-hot encoding is particularly suitable for converting several domain tags into \(n_{t}\) dimensional multi-hot vectors. Different from one-hot encoding, multiple-hot encoding enables the binary vector to have multiple elements of 1. For the case of having several domain tags in \(n_{t}\), each tag is numbered from 1 to \(n_{t}\), and a \(n_{t}\)-dimensional vector \(v_{tag}\) can be used to represent the multiple domain tags of a dependency library. Among them, the \(i\)-th element of the vector \(v_{tag}\) corresponds to the domain tag \(tag_{i}\) numbered \(i\). When a dependency library is associated with the \(i\)-th domain tag, then the \(i\)-th element of \(v_{tag}\) is equal to 1; otherwise it is 0:  
\[v_{tag}=[v_{tag_{1}},v_{tag_{2}},v_{tag_{3}}\ldots v_{tag_{t}}],\quad v_{ tag_{i}}= \begin{cases}1&\text{if }tag_{i}\in tag_{s}\\ 0&\text{otherwise}\end{cases}  \tag{1}\]  
where \(tag_{s}\) represents the domain tags of a dependency library.