info.ephyra.questionanalysis
Class PredicateExtractor

java.lang.Object
  extended by info.ephyra.questionanalysis.PredicateExtractor

public class PredicateExtractor
extends java.lang.Object

Extracts predicate-argument structures from a question. At first, the question string is transformed into a statement with a dummy argument, then the predicates are extracted and finally the dummy argument is dropped.

Version:
2007-04-25
Author:
Nico Schlaefer

Field Summary
private static java.lang.String BE_P
          Pattern that matches any form of 'to be'.
private static java.lang.String DATE_TIME_P
          Pattern for questions seeking a date/time.
private static java.lang.String DATE_TIME_R
          Replacement if question is seeking a date/time.
private static java.lang.String DO_P
          Pattern that matches any form of 'to do'.
private static java.lang.String DURATION_R
          Replacement if question is seeking a location.
private static java.lang.String HAVE_P
          Pattern that matches any form of 'to have'.
private static java.lang.String IGNORE_P
          Pattern that matches other verb forms which should not be considered as predicates.
private static java.lang.String INTERROGATIVE_P
          Pattern that matches any interrogative or 'that'.
private static java.lang.String LOCATION_P
          Pattern for questions seeking a location.
private static java.lang.String LOCATION_R
          Replacement if question is seeking a location.
private static java.lang.String MANNER_P
          Pattern for questions seeking a manner.
private static java.lang.String MANNER_R
          Replacement if question is seeking a manner.
private static java.lang.String PERSON_P
          Pattern for questions seeking a person.
private static java.lang.String PERSON_R
          Replacement if question is seeking a person.
private static java.lang.String PURPOSE_P
          Pattern for questions seeking a purpose.
private static java.lang.String PURPOSE_R
          Replacement if question is seeking a purpose.
private static java.lang.String QUANTIFICATION_R
          Replacement if question is seeking a quantification.
private static java.lang.String THING_P
          Pattern for questions seeking a thing.
private static java.lang.String THING_R
          Replacement if question is seeking a thing.
private static java.lang.String UNKNOWN_R
          Replacement if question is seeking an entity of an unknown type.
 
Constructor Summary
PredicateExtractor()
           
 
Method Summary
private static boolean containsPredicate(java.lang.String qn)
          Checks if the question contains a predicate that can be labeled.
static Predicate[] getPredicates(java.lang.String qn, java.lang.String verbMod, java.lang.String[] ats, Term[] terms)
          Extracts the predicates from a question string.
private static java.lang.String handleDateTime(java.lang.String verbMod)
           
private static java.lang.String handleIgnore(java.lang.String qn, java.lang.String verbMod, java.lang.String[] tokens, java.lang.String[] pos, java.lang.String[] chunks, int i)
           
private static java.lang.String handleLocation(java.lang.String verbMod)
           
private static java.lang.String handleManner(java.lang.String qn, java.lang.String verbMod, java.lang.String[] ats, java.lang.String[] tokens, java.lang.String[] pos, java.lang.String[] chunks, int i)
           
private static java.lang.String handlePerson(java.lang.String verbMod)
           
private static java.lang.String handlePurpose(java.lang.String verbMod)
           
private static java.lang.String handleThing(java.lang.String qn, java.lang.String verbMod, java.lang.String[] ats, java.lang.String[] tokens, java.lang.String[] pos, java.lang.String[] chunks, int i)
           
private static java.lang.String phraseToRegex(java.lang.String phrase)
          Transforms a phrase into a regular expression that matches the phrase, allowing differences regarding whitespaces and punctuation and quotation marks.
private static java.lang.String questionToStatement(java.lang.String qn, java.lang.String verbMod, java.lang.String[] ats)
          Transforms a question into a statement by replacing phrases with interrogatives.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BE_P

private static final java.lang.String BE_P
Pattern that matches any form of 'to be'.

See Also:
Constant Field Values

DO_P

private static final java.lang.String DO_P
Pattern that matches any form of 'to do'.

See Also:
Constant Field Values

HAVE_P

private static final java.lang.String HAVE_P
Pattern that matches any form of 'to have'.

See Also:
Constant Field Values

IGNORE_P

private static final java.lang.String IGNORE_P
Pattern that matches other verb forms which should not be considered as predicates.

See Also:
Constant Field Values

INTERROGATIVE_P

private static final java.lang.String INTERROGATIVE_P
Pattern that matches any interrogative or 'that'.

See Also:
Constant Field Values

PERSON_P

private static final java.lang.String PERSON_P
Pattern for questions seeking a person.

See Also:
Constant Field Values

THING_P

private static final java.lang.String THING_P
Pattern for questions seeking a thing.

See Also:
Constant Field Values

DATE_TIME_P

private static final java.lang.String DATE_TIME_P
Pattern for questions seeking a date/time.

See Also:
Constant Field Values

LOCATION_P

private static final java.lang.String LOCATION_P
Pattern for questions seeking a location.

See Also:
Constant Field Values

PURPOSE_P

private static final java.lang.String PURPOSE_P
Pattern for questions seeking a purpose.

See Also:
Constant Field Values

MANNER_P

private static final java.lang.String MANNER_P
Pattern for questions seeking a manner.

See Also:
Constant Field Values

PERSON_R

private static final java.lang.String PERSON_R
Replacement if question is seeking a person.

See Also:
Constant Field Values

THING_R

private static final java.lang.String THING_R
Replacement if question is seeking a thing.

See Also:
Constant Field Values

DATE_TIME_R

private static final java.lang.String DATE_TIME_R
Replacement if question is seeking a date/time.

See Also:
Constant Field Values

DURATION_R

private static final java.lang.String DURATION_R
Replacement if question is seeking a location.

See Also:
Constant Field Values

LOCATION_R

private static final java.lang.String LOCATION_R
Replacement if question is seeking a location.

See Also:
Constant Field Values

PURPOSE_R

private static final java.lang.String PURPOSE_R
Replacement if question is seeking a purpose.

See Also:
Constant Field Values

MANNER_R

private static final java.lang.String MANNER_R
Replacement if question is seeking a manner.

See Also:
Constant Field Values

QUANTIFICATION_R

private static final java.lang.String QUANTIFICATION_R
Replacement if question is seeking a quantification.

See Also:
Constant Field Values

UNKNOWN_R

private static final java.lang.String UNKNOWN_R
Replacement if question is seeking an entity of an unknown type.

See Also:
Constant Field Values
Constructor Detail

PredicateExtractor

public PredicateExtractor()
Method Detail

containsPredicate

private static boolean containsPredicate(java.lang.String qn)
Checks if the question contains a predicate that can be labeled.

Parameters:
qn - normalized question string
Returns:
true iff the question contains a predicate

phraseToRegex

private static java.lang.String phraseToRegex(java.lang.String phrase)
Transforms a phrase into a regular expression that matches the phrase, allowing differences regarding whitespaces and punctuation and quotation marks.

Parameters:
phrase - phrase to transform
Returns:
regular expression

handleIgnore

private static java.lang.String handleIgnore(java.lang.String qn,
                                             java.lang.String verbMod,
                                             java.lang.String[] tokens,
                                             java.lang.String[] pos,
                                             java.lang.String[] chunks,
                                             int i)

handlePerson

private static java.lang.String handlePerson(java.lang.String verbMod)

handleThing

private static java.lang.String handleThing(java.lang.String qn,
                                            java.lang.String verbMod,
                                            java.lang.String[] ats,
                                            java.lang.String[] tokens,
                                            java.lang.String[] pos,
                                            java.lang.String[] chunks,
                                            int i)

handleDateTime

private static java.lang.String handleDateTime(java.lang.String verbMod)

handleLocation

private static java.lang.String handleLocation(java.lang.String verbMod)

handlePurpose

private static java.lang.String handlePurpose(java.lang.String verbMod)

handleManner

private static java.lang.String handleManner(java.lang.String qn,
                                             java.lang.String verbMod,
                                             java.lang.String[] ats,
                                             java.lang.String[] tokens,
                                             java.lang.String[] pos,
                                             java.lang.String[] chunks,
                                             int i)

questionToStatement

private static java.lang.String questionToStatement(java.lang.String qn,
                                                    java.lang.String verbMod,
                                                    java.lang.String[] ats)
Transforms a question into a statement by replacing phrases with interrogatives.

Parameters:
qn - normalized question string
verbMod - question string with modified verbs
ats - expected answer types
Returns:
statement

getPredicates

public static Predicate[] getPredicates(java.lang.String qn,
                                        java.lang.String verbMod,
                                        java.lang.String[] ats,
                                        Term[] terms)
Extracts the predicates from a question string.

Parameters:
qn - normalized question string
verbMod - question string with modified verbs
ats - expected answer types
terms - question terms
Returns:
predicate-argument structures