Sha256: cda14a4a0802b1eae88ef8cec786f155d2e2b402d923e8e7c9e9d942ec5c613e

Contents?: true

Size: 1.37 KB

Versions: 3

Compression:

Stored size: 1.37 KB

Contents

module OpenNlp
  class Parser::Parse
    include JavaClass

    attr_reader :j_instance

    self.java_class = Java::opennlp.tools.parser.Parse

    def initialize(java_instance)
      raise ArgumentError, "java_instance must be an instance of #{self.class.java_class.name}" unless java_instance.is_a?(self.class.java_class)

      @j_instance = java_instance
    end

    def tree_bank_string
      span = j_instance.getSpan
      text = j_instance.getText
      type = j_instance.getType
      start = span.getStart

      res = ''

      res << "(#{type} " unless type == Java::opennlp.tools.parser.AbstractBottomUpParser::TOK_NODE

      j_instance.getChildren.each do |c|
        s = c.span
        res << text[start..s.getStart-1] if start < s.getStart

        subtree = self.class.new(c).tree_bank_string
        res << subtree if subtree
        start = s.getEnd
      end

      res << text[start..span.getEnd-1] if start < span.getEnd

      res << ")" unless type == Java::opennlp.tools.parser.AbstractBottomUpParser::TOK_NODE

      res
    end

    def code_tree
      kids = j_instance.getChildren

      kids.inject([]) do |acc,kid|
        data = {type: kid.getType, parent_type: self.j_instance.getType, token: kid.toString}
        subtree = self.class.new(kid).code_tree
        data[:children] = subtree unless subtree.empty?
        acc << data

        acc
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
open_nlp-0.0.5-java lib/open_nlp/parser/parse.rb
open_nlp-0.0.4-java lib/open_nlp/parser/parse.rb
open_nlp-0.0.3-java lib/open_nlp/parser/parse.rb