def _set_lemma(self, generated_roots): for r in generated_roots: word, applied_suffix_form = Phonetics.apply( r.lexeme.root, r.phonetic_attributes, u'mAk', r.lexeme.attributes) assert word and applied_suffix_form r.lexeme.lemma = word + applied_suffix_form
def try_suffix_form(morpheme_container, suffix_form, to_state, word): state_before_suffix_form_application = morpheme_container.get_last_state() if not transition_allowed_for_suffix_form(morpheme_container, suffix_form): return None so_far = morpheme_container.get_surface_so_far() morpheme_container_lexeme_attributes = morpheme_container.get_lexeme_attributes() morpheme_container_phonetic_attributes = morpheme_container.get_phonetic_attributes() modified_word, fitting_suffix_form = Phonetics.apply(so_far, morpheme_container_phonetic_attributes, suffix_form.form, morpheme_container_lexeme_attributes) applied_str = modified_word + fitting_suffix_form if Phonetics.application_matches(word, applied_str, to_state.name!='VERB_ROOT'): actual_suffix_form_str = word[len(so_far):len(applied_str)] logger.debug(' Word "%s" starts with applied str "%s" (%s), adding to current morpheme container', word, applied_str, actual_suffix_form_str) clone = morpheme_container.clone() clone.add_transition(SuffixFormApplication(suffix_form, actual_suffix_form_str, fitting_suffix_form), to_state) if morpheme_container.has_transitions() and morpheme_container.get_last_transition().suffix_form_application.suffix_form.postcondition and not morpheme_container.get_last_transition().suffix_form_application.suffix_form.postcondition.is_satisfied_by(clone): if logger.isEnabledFor(logging.DEBUG): logger.debug(' Suffix does not satisfy the postcondition "%s" of last transition suffix form "%s", skipping.', morpheme_container.get_last_transition().suffix_form_application.suffix_form.postcondition, formatter.format_transition(clone.get_last_transition())) return None if morpheme_container.has_transitions() and state_before_suffix_form_application.type==State.DERIVATIONAL: logger.debug(' Suffix is derivative, checking the post derivation conditions of suffixes from previous derivation.') for transition in morpheme_container.get_transitions_from_derivation_suffix(): application_suffix_form = transition.suffix_form_application.suffix_form if application_suffix_form.post_derivation_condition: matches = application_suffix_form.post_derivation_condition.is_satisfied_by(clone) if not matches: logger.debug(' Post derivation condition "%s" of suffix "%s" is not satisfied, skipping.', application_suffix_form.post_derivation_condition, application_suffix_form.suffix) return None return clone else: logger.debug(' Word "%s" does not start with applied str "%s" (%s), skipping', word, applied_str, applied_str) return None
def try_suffix_form(morpheme_container, suffix_form, to_state, word): state_before_suffix_form_application = morpheme_container.get_last_state() if not transition_allowed_for_suffix_form(morpheme_container, suffix_form): return None so_far = morpheme_container.get_surface_so_far() morpheme_container_lexeme_attributes = morpheme_container.get_lexeme_attributes( ) morpheme_container_phonetic_attributes = morpheme_container.get_phonetic_attributes( ) modified_word, fitting_suffix_form = Phonetics.apply( so_far, morpheme_container_phonetic_attributes, suffix_form.form, morpheme_container_lexeme_attributes) applied_str = modified_word + fitting_suffix_form if Phonetics.application_matches(word, applied_str, to_state.name != 'VERB_ROOT'): actual_suffix_form_str = word[len(so_far):len(applied_str)] logger.debug( ' Word "%s" starts with applied str "%s" (%s), adding to current morpheme container', word, applied_str, actual_suffix_form_str) clone = morpheme_container.clone() clone.add_transition( SuffixFormApplication(suffix_form, actual_suffix_form_str, fitting_suffix_form), to_state) if morpheme_container.has_transitions( ) and morpheme_container.get_last_transition( ).suffix_form_application.suffix_form.postcondition and not morpheme_container.get_last_transition( ).suffix_form_application.suffix_form.postcondition.is_satisfied_by( clone): if logger.isEnabledFor(logging.DEBUG): logger.debug( ' Suffix does not satisfy the postcondition "%s" of last transition suffix form "%s", skipping.', morpheme_container.get_last_transition(). suffix_form_application.suffix_form.postcondition, formatter.format_transition(clone.get_last_transition())) return None if morpheme_container.has_transitions( ) and state_before_suffix_form_application.type == State.DERIVATIONAL: logger.debug( ' Suffix is derivative, checking the post derivation conditions of suffixes from previous derivation.' ) for transition in morpheme_container.get_transitions_from_derivation_suffix( ): application_suffix_form = transition.suffix_form_application.suffix_form if application_suffix_form.post_derivation_condition: matches = application_suffix_form.post_derivation_condition.is_satisfied_by( clone) if not matches: logger.debug( ' Post derivation condition "%s" of suffix "%s" is not satisfied, skipping.', application_suffix_form.post_derivation_condition, application_suffix_form.suffix) return None return clone else: logger.debug( ' Word "%s" does not start with applied str "%s" (%s), skipping', word, applied_str, applied_str) return None
def _set_lemma(self, generated_roots): for r in generated_roots: word, applied_suffix_form = Phonetics.apply(r.lexeme.root, r.phonetic_attributes, u'mAk', r.lexeme.attributes) assert word and applied_suffix_form r.lexeme.lemma = word + applied_suffix_form
def ap(word, form_str, lexeme_attributes=None): phonetic_attributes = Phonetics.calculate_phonetic_attributes( word, lexeme_attributes) word, application = Phonetics.apply(word, phonetic_attributes, form_str, lexeme_attributes) return word + application
def ap(word, form_str, lexeme_attributes=None): phonetic_attributes = Phonetics.calculate_phonetic_attributes(word, lexeme_attributes) word, application = Phonetics.apply(word, phonetic_attributes, form_str, lexeme_attributes) return word + application