Class: LangExtract::Core::Extraction

Inherits:
Object
  • Object
show all
Defined in:
lib/langextract/core/data.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text:, extraction_class: nil, description: nil, attributes: {}, char_interval: nil, token_interval: nil, alignment_status: AlignmentStatus::UNGROUNDED, extraction_index: nil, group_id: nil, document_id: nil) ⇒ Extraction

Returns a new instance of Extraction.

Raises:

  • (ArgumentError)


103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/langextract/core/data.rb', line 103

def initialize(text:, extraction_class: nil, description: nil, attributes: {},
               char_interval: nil, token_interval: nil,
               alignment_status: AlignmentStatus::UNGROUNDED,
               extraction_index: nil, group_id: nil, document_id: nil)
  raise ArgumentError, "text is required" if text.nil?
  raise ArgumentError, "invalid alignment status" unless AlignmentStatus.valid?(alignment_status)

  @extraction_class = extraction_class
  @text = text
  @description = description
  @attributes = HashCoercion.stringify_keys(attributes).freeze
  @char_interval = char_interval
  @token_interval = token_interval
  @alignment_status = alignment_status
  @extraction_index = extraction_index
  @group_id = group_id
  @document_id = document_id
  freeze
end

Instance Attribute Details

#alignment_statusObject (readonly)

Returns the value of attribute alignment_status.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def alignment_status
  @alignment_status
end

#attributesObject (readonly)

Returns the value of attribute attributes.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def attributes
  @attributes
end

#char_intervalObject (readonly)

Returns the value of attribute char_interval.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def char_interval
  @char_interval
end

#descriptionObject (readonly)

Returns the value of attribute description.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def description
  @description
end

#document_idObject (readonly)

Returns the value of attribute document_id.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def document_id
  @document_id
end

#extraction_classObject (readonly)

Returns the value of attribute extraction_class.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def extraction_class
  @extraction_class
end

#extraction_indexObject (readonly)

Returns the value of attribute extraction_index.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def extraction_index
  @extraction_index
end

#group_idObject (readonly)

Returns the value of attribute group_id.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def group_id
  @group_id
end

#textObject (readonly)

Returns the value of attribute text.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def text
  @text
end

#token_intervalObject (readonly)

Returns the value of attribute token_interval.



99
100
101
# File 'lib/langextract/core/data.rb', line 99

def token_interval
  @token_interval
end

Class Method Details

.from_h(hash) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
154
155
# File 'lib/langextract/core/data.rb', line 142

def self.from_h(hash)
  new(
    extraction_class: HashCoercion.read(hash, :extraction_class, :class, :type),
    text: HashCoercion.read(hash, :text, :extraction_text).to_s,
    description: HashCoercion.read(hash, :description),
    attributes: HashCoercion.read(hash, :attributes) || {},
    char_interval: interval_from_hash(HashCoercion.read(hash, :char_interval), CharInterval),
    token_interval: interval_from_hash(HashCoercion.read(hash, :token_interval), TokenInterval),
    alignment_status: HashCoercion.read(hash, :alignment_status) || AlignmentStatus::UNGROUNDED,
    extraction_index: HashCoercion.read(hash, :extraction_index),
    group_id: HashCoercion.read(hash, :group_id),
    document_id: HashCoercion.read(hash, :document_id)
  )
end

.interval_from_hash(value, interval_class) ⇒ Object



157
158
159
160
161
162
# File 'lib/langextract/core/data.rb', line 157

def self.interval_from_hash(value, interval_class)
  return value if value.is_a?(interval_class)
  return nil if value.nil?

  interval_class.from_h(value)
end

Instance Method Details

#grounded?Boolean

Returns:

  • (Boolean)


123
124
125
# File 'lib/langextract/core/data.rb', line 123

def grounded?
  char_interval && ![AlignmentStatus::UNGROUNDED, AlignmentStatus::ERROR].include?(alignment_status)
end

#to_hObject



127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/langextract/core/data.rb', line 127

def to_h
  {
    "extraction_class" => extraction_class,
    "text" => text,
    "description" => description,
    "attributes" => attributes,
    "char_interval" => char_interval&.to_h,
    "token_interval" => token_interval&.to_h,
    "alignment_status" => alignment_status,
    "extraction_index" => extraction_index,
    "group_id" => group_id,
    "document_id" => document_id
  }
end