Splitting EUD Graphs into Trees: A Quick and Clatty Approach (2021)

Abstract: We present the system submission from the FASTPARSE team for the EUD Shared Task at IWPT 2021. We engaged in the task last year by focusing on efficiency. This year we have focused on experimenting with new ideas on a limited time budget. Our system is based on splitting the EUD graph into several trees, based on linguistic criteria. We predict these trees using a sequence-labelling parser and combine them into an EUD graph. The results were relatively poor, although not a total disaster and could probably be improved with some polishing of the system’s rough edges.

## introduction in our group's submission to the iwpt 2020 shared task on eud parsing @xcite , we focused on efficiency by applying distillation and training set reduction together with a rule-based approach to convert eud graphs to ud trees that could be processed by an off-the-shelf parser. here we describe our entry to the 2021 edition @xcite , where we keep the focus on algorithmic simplification of graphs, as well as a prioritisation of efficiency over raw accuracy, but we take the chance to explore different questions that we deem interesting in the context of a breadth-first exploration of the search space of parsing techniques, even if they are not (at least in their current form) competitive in terms of pushing speed or accuracy metrics. in particular, we wanted to experiment with the application of sequence labelling parsing @xcite to the problem, which we apply to graph parsing for the first time. and more in particular, with the use of a linguistics-oriented approach (à la @xcite ) to guide the parsing process by splitting the eud graphs into coherent components that can be then parsed by a multitask learning system. sequence labelling, the task of assigning one discrete label to each token of a sequence, has long been used for various natural language processing tasks whose output can naturally be represented in this form, such as pos tagging or named entity recognition. in the case of syntactic parsing, sequence labelling can be applied after defining an encoding that casts each possible syntactic tree for a sentence of length n as a sequence of n labels. while an early attempt to apply it to dependency parsing (spoustová and spousta, 2010) yielded subpar accuracy, the advances in machine learning architectures in the last decade have made this kind of approaches practically viable both for constituency @xcite and dependency parsing @xcite . however, to our knowledge, sequence labelling approaches have not previously been tried for any sort of graph parsing. one possible way of extending the search space of a parsing approach is to apply the approach to parse a constant amount of subgraphs (typically, two) whose union provides the final output. this has been applied to go beyond noncrossing dependency trees in transitionbased dependency parsing by splitting trees into two subsets of arcs (planes) such that there cannot be crossings within each of them, but their union (the final output) can have crossing arcs @xcite @xcite . in semantic parsing, it has also be used to extend the search space from noncrossing graphs to pagenumber-2 graphs by @xcite , who use graph-based parsing to obtain two noncrossing graphs that are combined by lagrangian relaxation. in the context of sequence labeling, this approach was recently applied by @xcite with similar goals and methods as the transition-based parsers above. while all these approaches split the output with the goal of relaxing noncrossing constraints, the same can be applied to relax single-head constraints, i.e., go from tree to graph parsing. for example, any graph with in-degree at most 2 can trivially be expressed as the union of two trees. here we apply that idea in the context of sequence labeling parsing, i.e., we try to generate several sequences of labels (via multitask learning), each of which represents a tree, and which together form an eud graph. however, all these splitting approaches share an underlying question: which of the (exponentially many) possible splits is more adequate for the model to adequately learn the parsing problem? the work cited above applies purely algorithmic criteria to choose a canonical split: lazy criteria to minimise the number of plane (subset) switches @xcite or the number of arcs assigned to the second plane @xcite , or systematic algorithms that assign crossing arcs to alternating planes @xcite . these provide splits that are related to the full parse by systemantic structural criteria, but not by linguistic criteria. since it has been repeatedly shown that it is possible to jointly learn different kinds of dependencies in such a way that they complement each other (e.g. with syntactic and semantic dependencies, as in @xcite ) and sequence labeling parsing can benefit from integrating several linguistic representations using multitask learning @xcite , what if we try to split parses in a linguistically meaningful way, yielding subsets of dependencies with a distinct meaning that can then be jointly learned? here we evaluate such an approach. ## splitting graphs the vast majority of nodes in a eud graph only has one incoming edge. if we were to only use one edge per node, we would cover 94.15% of the edges. only allowing a maximum of two incoming edges covers 99.53 % edges, three covers 99.88%, and four covers 99.95%. figure 2 shows how many nodes have different numbers of incoming edges. note the logarithmic scale used for the number of nodes. we believe that our graph splitting process results in covering a maximum of two edges, although we have not checked it formally. we attempted to split the trees in a linguistically grounded way. we first create what call the basic tree which most closely corresponds to the relative ud tree. we then create a relative, control, and conjunct tree. it is worth noting that, contrary to the work cited in the introduction where parses are split into two disjoint subgraphs, here we have four trees and all these trees can (and usually) overlap. we now describe the different trees into which we split the graph, as well as the collating procedure to combine output trees again into an eud graph. basic tree this tree is made up of the eud edges that correspond directly to the ud edges. with one exception for case marking. we add a relative position for the lemma (rather than the lemma itself). this means multi-word case marking is not covered. if no such edge exists we set the tape was a way to signal priorities the edge to (0, root). although there should be no way this introduces cycles, we check for them anywhere and if any are found we use the chu-liu-edmonds algorithm (cle) @xcite , setting scores for expected edges to a sufficiently high value so that they are prioritised, while the others are set very low. if the mst tree has a different edge than in the basic tree, we set that edge to (0, root). if the cle algorithm changes the ref edge, we change the incoming edge to its head to (0, root). an example is shown in figure 1 . relative clause tree we take the basic tree of a graph and replace incoming edges to nodes with ref edges. again we check for cycles. this tree type was based on an error. we thought that the relative pronoun had two incoming edges: one from the head of the relative clause and one from the referent. this meant we unnecessarily split the basic and relative trees. an example of this is shown in figure 3 . ## parser we use a bilstm network which has word and character embeddings as input. we use a sequence-labelling parser so the edges are predicted as separate labels for each token. similarly, the edge labels are predicted separetly. but both label predictions are jointly trained with a hard-sharing multi-task architecture with equal weighted loss contributions. udpipe 2.0 was used for tokenization, lemmatization, and tagging. fasttext word embeddings were used but limit vocab space to 50k tokens for memory constraints @xcite . we then train 4 parsers for each treebank which are trained on the data generated by splitting the graph, i.e. there is one parser for the basic trees, one for the relative trees, and so on. then the parsers are used to predict their respective tree type and these are all collated to create the predicted graphs for each treebank. sequence labelling parser (seqlab) is a parsing approach based on encoding trees as a se-they look like they were doberman pinchers who were shrunk quence of one label per token in a sentence, so parsing is reduced to a standard sequence labelling problem @xcite @xcite . 1 we choose to use the original bracketing encoding from @xcite , as it does not require upos tags on decoding (the other leading encoding does). while there is a more recent bracketing encoding that covers more non-projectivity @xcite , this also involves splitting trees which we assumed would add too much complexity on top of our linguistic-based splitting. our chosen encoding represents a tree as sequence of tags composed of left and right brackets representing each word's incoming and outgoing arcs. namely, the encoding for w i is based on: we repurposed a pytorch biaffine implementation and edit it to be a simple sequence-labelling system, i.e. embedding layers, followed by a number of bilstm layers, and one mlp for predicting bracket tags and another for edge labels. the hyperparameters are shown in ## results the results were rather underwhelming, but our system wasn't an abject failure. figure 7 shows the average performance of the parsers trained on each tree type. the performance is pretty stable across each type which is not surprising as the overall structure doesn't vary greatly. but the average performance on the collated trees is quite a bit less as shown in ## discussion and conclusion the relative tree split was based on a mistake. we should have left the ref edges in the basic tree and added the nsubj label variant to the referent in the relative tree. the way it is implemented, we lose those edges. despite this error, we can still reconstruct most of the edges in the graphs. beyond this, we can't capture higher-order edges with this method. we did try using a sweep tree, to capture certain 3rd degree edges. but it seemed as the parser struggled to make sensible predictions and subsequently time ran out before we could test this thoroughly. the collator is very naive. a major issue is introducing extra dummy root edges due to the nature of the split. another thing we could have tried would have been to collate edges from trees that are only associated with the specific phenomenon of a given tree (i.e. conjunct trees only propagating conjunct edges.) also, looking at the difference in performance between euas and elas, it seems the labelling is bad. and the difference between eulas and elas suggests this isn't just a matter of the case marking messing things up. however, the use of relative positional encoding of the case marking might make it harder to learn the labels. although, the las for each tree type isn't that low. so it could potentially be an issue about the way the trees are collated. perhaps a first step would be to separate the relative case marking from the relation labels and treat it as a separate task in the mtl system. we have presented a simple technique that can easily be extended (and implemented better) but manages to predict relatively accurate unlabelled graphs. it also isn't an utter failure when considering labelled edges, but it seems curious that the performance drops so much compared to the unlabelled performance.