Intertwining CP and NLP: The Generation of Unreasonably Constrained Sentences
<|reference_start|>Intertwining CP and NLP: The Generation of Unreasonably Constrained Sentences: Constrained text generation remains a challenging task, particularly when dealing with hard constraints. Traditional Natural Language Processing (NLP) approaches prioritize generating meaningful and coherent output. Also, the current state-of-the-art methods often lack the expressiveness and constraint satisfaction capabilities to handle such tasks effectively. This paper presents the Constraints First Framework to remedy this issue. This framework considers a constrained text generation problem as a discrete combinatorial optimization problem. It is solved by a constraint programming method that combines linguistic properties (e.g., n-grams or language level) with other more classical constraints (e.g., the number of characters, syllables, or words). Eventually, a curation phase allows for selecting the best-generated sentences according to perplexity using a large language model. The effectiveness of this approach is demonstrated by tackling a new more tediously constrained text generation problem: the iconic RADNER sentences problem. This problem aims to generate sentences respecting a set of quite strict rules defined by their use in vision and clinical research. Thanks to our CP-based approach, many new strongly constrained sentences have been successfully generated in an automatic manner. This highlights the potential of our approach to handle unreasonably constrained text generation scenarios.<|reference_end|>
@article{bonlarron2024intertwining,
    title={Intertwining CP and NLP: The Generation of Unreasonably Constrained
  Sentences},
    author={Alexandre Bonlarron, Jean-Charles R'egin},
    journal={Proceedings of the Thirty-Third International Joint Conference on
  Artificial Intelligence AI, Arts & Creativity. Pages 7600-7608. Year 2024},
    year={2024},
    doi={10.24963/ijcai.2024/841},
    archivePrefix={arXiv},
    eprint={2406.15473},
    primaryClass={cs.CL cs.AI}
}