Giter Club home page Giter Club logo

rome's Introduction

RoMe: A Robust Metric for Evaluating Natural Language Generation

Python 3.8 PyTorch MIT License

PyTorch code for ACL 2022 paper: RoMe: A Robust Metric for Evaluating Natural Language Generation [PDF].

⚙️Installation (anaconda)

conda create -n rome -y python=3.8 && source activate rome
pip install -r requirements.txt
chmod +x setup.sh
./setup.sh

🎯 Run

python rome.py

NB: The components of RoMe are highly parameter sensitive. We recommend users to try different parameters when adapting the code for different domain or dataset.

📝 Citation

If you use the code, please cite the following paper.

@inproceedings{rony-etal-2022-rome,
    title = "{R}o{M}e: A Robust Metric for Evaluating Natural Language Generation",
    author = "Rony, Md Rashad Al Hasan  and
      Kovriguina, Liubov  and
      Chaudhuri, Debanjan  and
      Usbeck, Ricardo  and
      Lehmann, Jens",
    booktitle = "Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
    month = may,
    year = "2022",
    address = "Dublin, Ireland",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2022.acl-long.387",
    pages = "5645--5657",
    abstract = "Evaluating Natural Language Generation (NLG) systems is a challenging task. Firstly, the metric should ensure that the generated hypothesis reflects the reference{'}s semantics. Secondly, it should consider the grammatical quality of the generated sentence. Thirdly, it should be robust enough to handle various surface forms of the generated sentence. Thus, an effective evaluation metric has to be multifaceted. In this paper, we propose an automatic evaluation metric incorporating several core aspects of natural language understanding (language competence, syntactic and semantic variation). Our proposed metric, RoMe, is trained on language features such as semantic similarity combined with tree edit distance and grammatical acceptability, using a self-supervised neural network to assess the overall quality of the generated sentence. Moreover, we perform an extensive robustness analysis of the state-of-the-art methods and RoMe. Empirical results suggest that RoMe has a stronger correlation to human judgment over state-of-the-art metrics in evaluating system-generated sentences across several NLG tasks.",
}

📜 License

MIT

📪 Contact

For further information, contact the corresponding author Md Rashad Al Hasan Rony (email).

rome's People

Contributors

rashad101 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

rome's Issues

RoMe got aborted by the system when evalauting some specific texts

Hello,

thank you very much for releasing the code for this work!

using the default setting of RoMe, the program got aborted due to some memory allocation issues like “*** Error in python': corrupted size vs. prev_size: 0x000055ee10091dd0 ***” or “python *** Error in python': free(): invalid next size (fast)”.

I noticed that it occurs only when evaluating some specific texts, for example:

hyp = "Cheb's neighbors from the German side of the border gave performances including some with reconstructed Jak 18T aircraft and three-member formations using Bücker Jungmann biplanes"
ref = "Germany's neighbors in Chisinau demonstrated with reconstructed aircraft How 18t or three formations dvouplošníků Bücker Jungmann." (for this one, when removing the word "dvouplošníků", RoMe could work.)

hyp = "Since then, the physicists have referred to the possibility of additional small spatial dimensions as the Kaluza-Klein Theory."
ref = "Since then physicists call the possibility of additional small spatial dimensions Kaluzovou-Kleinovou theories."

I recreated exactly the same environment as required, but it still doesn't work.

Could you please help me out? Thanks a lot!

Kind regards,

Readme missing some installation steps

While trying to install RoMe, I came across a few more things I needed to do to get it to work on my machine:

  1. Download stanza model, by opening up a python interpreter, and:
import stanza
stanza.download('en')
stanza_nlp = stanza.Pipeline('en')
  1. Download pretrained fasttext bin and vec files

Maybe worthwhile putting this into the README file. :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.