Skip to content
Snippets Groups Projects
Select Git revision
  • 000a7941dca90b341b479843c60974d8d1ba954b
  • master default protected
  • vertical_relations
  • lu_without_semantic_frames
  • hierarchy
  • additional-unification-filters
  • v0.1.1
  • v0.1.0
  • v0.0.9
  • v0.0.8
  • v0.0.7
  • v0.0.6
  • v0.0.5
  • v0.0.4
  • v0.0.3
  • v0.0.2
  • v0.0.1
17 results

forms.py

Blame
  • Semantics.py 2.29 KiB
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    
    from importer.Frame import Frame
    from importer.Realizations import FrameRealization
    
    
    class Semantics:
    
        def __init__(self, base, pos, frames, realizations):
            self._frames = frames
            self._base = base
            self._pos = pos
            self._realizations = realizations
    
        @classmethod
        def fromTree(cls, base, pos, frames_tree, all_frames, meanings, syntax, realizations_tree):
            arguments = {}
            
            frames = []
            for frame_subtree in frames_tree._children[0]._children[0]._children:
                frame = Frame.fromTree(base, pos, frame_subtree)
                #if frame._base is None:
                #    frame = all_frames[frame._id]
                # KKK: always take frame from all_frames to make sure same id == same object => same DB object
                frame = all_frames[frame._id]
                frames.append(frame)
                arguments.update(frame._arguments)
    
            realizations = [FrameRealization.fromTree(subtree, arguments, syntax._phrases) for subtree in realizations_tree._children[0]._children[0]._children]
            
            return cls(base, pos, frames, realizations)
    
        def store(self, entry, meanings):
            for frame in self._frames:
                frame.store(entry, meanings)
            for realization in self._realizations:
                realization.store(entry)
            entry.frames_count = len(self._frames)
        
        def getPhraseIds(self):
            return self._phrases
    
        def findFrame(self, meaning):
            for frame in self._frames:
                if meaning in frame._meanings:
                    realizations = []
                    for realization in self._realizations:
                        if realization._frame._id == frame._id:
                            realizations.append(realization)
                    return frame, realizations
            return None
        
        # def preferencesToUnicode(self):
        #     return '\n'.join([unicode(frame) for frame in self._frames])
    
        # def realizationsToUnicode(self):
        #     return '\n'.join([unicode(realization) for realization in self._realizations])
    
        # def prolog(self, meanings):
        #     return '\n\n'.join([frame.prolog(meanings, self._realizations) for frame in self._frames])
        
        # def __unicode__(self):
        #     return '\n'.join([unicode(frame) for frame in self._frames])