1. A computer-implemented method of referring to entities in a discourse domain, the method comprising: receiving domain-specific training data of sentences describing a target entity in a context; extracting a speaker history and a visual context from the training data; selecting attributes of the target entity based on at least one of the speaker history, the visual context, and speaker preferences; generating a text expression referring to the target entity based on at least one of the selected attributes, the speaker history, and the context; and outputting the generated text expression.