001    package edu.upenn.cis.propbank_shen;
002    
003    /**
004       This class represents inflectional information as is found in the
005       english propbank.  Basically, inflectional information is stuff
006       like "third person plural singular", but we only represent a portion
007       of this information for a few reasons:  first, some of it is already
008       in the part of speech tags in the penn treebank, and second, 
009       only some of this information is really relevant to the primary aim
010       of this study -- to find out more about the relationship between 
011       syntax and semantics (as it appears in a million words of wall street
012       journal from the hot 90's...).
013    
014       <p>
015    
016       Anyway, we keep inflectional information in 5 slots:
017       <ol>
018       <li> Form
019       <li> Tense
020       <li> Aspect
021       <li> Person
022       <li> Voice
023       </ol>
024    
025       @author Scott Cotton
026       @see edu.upenn.cis.propbank_shen.InflForm
027       @see edu.upenn.cis.propbank_shen.InflTense      
028       @see edu.upenn.cis.propbank_shen.InflAspect
029       @see edu.upenn.cis.propbank_shen.InflPerson
030       @see edu.upenn.cis.propbank_shen.InflVoice
031     */
032    public class Inflection {
033    
034        public InflForm form;
035        public InflTense tense;
036        public InflAspect aspect;
037        public InflPerson person;
038        public InflVoice voice;
039    
040        public Inflection(InflForm f,
041                          InflTense it,
042                          InflAspect ia,
043                          InflPerson ip,
044                          InflVoice iv)
045        {
046            form = f;
047            tense = it;
048            aspect = ia;
049            person = ip;
050            voice = iv;
051        }
052    
053        /** 
054            construct an inflection instance from a string of the form
055            FORM . TENSE . ASPECT . PERSON . VOICE
056            (one character for each slot, the dots denote concatenation and
057            aren't to be taken literally).
058        */
059        public Inflection(String s) throws CorruptDataException
060        {
061            if (s.length() != 5) {
062                throw new CorruptDataException("invalid inflection string: " + s);
063            }
064            form = InflForm.ofString(s.substring(0, 1));
065            tense = InflTense.ofString(s.substring(1,2));
066            aspect = InflAspect.ofString(s.substring(2,3));
067            person = InflPerson.ofString(s.substring(3,4));
068            voice = InflVoice.ofString(s.substring(4,5));
069        }
070    
071        /**
072           construct a canonical string representing the inflectional information.
073         */
074        public String toString() 
075        {
076            return (form.toString() 
077                    + tense.toString()
078                    + aspect.toString()
079                    + person.toString()
080                    + voice.toString());
081        }
082    }
083    
084