From: Christopher Potts Date: July 18, 2011 11:42:06 MDT To: Class list Subject: Computational Pragmatics: missing WordNet inverses Computational Pragmaticists! I meant to follow up on this earlier but forgot: on Friday, Roger said that he assumed relations pairs like 'hypernym' and 'hyponym' were inverse pairs in WordNet (e.g., A hypernym B iff B hyponym A), and I said that this was not a safe assumption, but then I back-tracked, saying I wasn't sure. I've attached a script that seeks to check this exhaustively [direct link to file: http://compprag.christopherpotts.net/code-data/wordnet_inverses.py].  Assuming I've done the coding right, both Roger and I were basically correct, though Roger was righter than me.  The sole exceptions it finds are as follows (this is the print-out of identify_missing_inverses()): ====================================================================== Synset('inhibit.v.04') in Synset('restrain.v.01').hyponyms but Synset('restrain.v.01') not in Synset('inhibit.v.04').hypernyms ====================================================================== Synset('suppress.v.04') in Synset('inhibit.v.04').hypernyms but Synset('inhibit.v.04') not in Synset('suppress.v.04').hyponyms Roughly speaking, this says restrain > inhibit but not(inhibit < restrain) and inhibit < suppress but not(inhibit > suppress) The fact that there are just two exceptions suggests that the WordNet creators intended to have these relationships be inverses but made a mistake here.  This means that Roger was conceptually right, and the tiny number of exceptions means that you can act/code as though he was right. It's curious that the mistakes both involve Synset('inhibit.v.04').  As a result: wn.synset('suppress.v.04').hyponyms() does not include wn.synset('restrain.v.01') ---Chris