Selecting most relevant word from lists of candidate words
There are many ways you could approach this problem


Word embeddings


If you have word embeddings at hand, you can look at the distance between the tags and the bucket and pick the one with the smallest distance.


Frequentist approach


You could simply look at the frequency of a bucket/tag pair and choose this. Likely not the best model, but might already go a long way.


Recommender system


Given a bucket, your goal is to recommend the best tag. You can use collaborative filtering or neural approaches to train a recommender. I feel this could work well especially if the data is sparse (i.e. lots of different tags, lots of buckets).

The caveat I would see with this approach is that you would technically always compare all tags, which only works if tag A is always better than tag B regardless of which tags are proposed to the user.


Ranking problem


You could look at it as a ranking problem, I recommend reading this blog to have a better idea of how you can train such model.


Classification problem


This becomes a classification problem if you turn your problem into the following: given a bucket, and two tags (A &amp; B), return 0 if tag A is preferred, 1 if tag B is preferred. You can create your training data as every combination of two tags from your data, times 2 (swap A and B).

The caveat is that given N tags, you might need to do a round-robin or tournament approach to know which tag is the winner, due to the pairwise nature.


Recurrent/Convolutional network


If you want to implicitly deal with the variable-length nature of the problem, you could pass your tags as a sequence. Since your tags have no particular order, this creates a different input for each permutation of the tags. During training, this provides more data points, and during inference, this could be used to create an ensemble (i.e. predict a tag for each permutation and do majority voting).

If you believe that it matters in which order the tags are presented to the user, then deal with the sequence in the order it is in your data.

Your LSTM/CNN would essentially learn to output a single score for each item, such that the item with the highest score is the desired one.