Nasty.Language.English.TemplateExtractor (Nasty v0.3.0)

View Source

Template-based information extraction with customizable patterns and slot filling.

Allows defining extraction templates with typed slots that are filled by matching entities and patterns in text.

Examples

# Define a template
template = %{
  name: "employment",
  pattern: "[PERSON] works at [ORG]",
  slots: [
    %{name: :employee, type: :PERSON, required: true},
    %{name: :employer, type: :ORG, required: true}
  ]
}

# Extract using template
{:ok, results} = TemplateExtractor.extract(document, [template])
# => [%{employee: "John Smith", employer: "Google", confidence: 0.85}]

Summary

Functions

Creates a template for acquisition events.

Creates a template for educational affiliations.

Creates a template for employment relations.

Extracts information using provided templates.

Creates a template for founding events.

Creates a template for location relations.

Creates a template for product launch events.

Creates a template for parent-subsidiary relations.

Types

extraction_result()

@type extraction_result() :: %{
  template: String.t(),
  slots: map(),
  confidence: float(),
  evidence: String.t()
}

slot()

@type slot() :: %{
  name: atom(),
  type: atom(),
  required: boolean(),
  multiple: boolean()
}

template()

@type template() :: %{
  name: String.t(),
  pattern: String.t(),
  slots: [slot()],
  metadata: map()
}

Functions

acquisition_template()

@spec acquisition_template() :: template()

Creates a template for acquisition events.

education_template()

@spec education_template() :: template()

Creates a template for educational affiliations.

employment_template()

@spec employment_template() :: template()

Creates a template for employment relations.

Examples

iex> TemplateExtractor.employment_template()
%{name: "employment", pattern: "[PERSON] works at [ORG]", ...}

extract(document, templates, opts \\ [])

@spec extract(Nasty.AST.Document.t(), [template()], keyword()) ::
  {:ok, [extraction_result()]}

Extracts information using provided templates.

Arguments

  • document - Document to extract from
  • templates - List of template definitions
  • opts - Options

Options

  • :min_confidence - Minimum confidence threshold (default: 0.5)
  • :max_results - Maximum results to return (default: unlimited)

Examples

iex> templates = [employment_template(), acquisition_template()]
iex> TemplateExtractor.extract(document, templates)
{:ok, [%{template: "employment", slots: %{...}, ...}]}

founding_template()

@spec founding_template() :: template()

Creates a template for founding events.

location_template()

@spec location_template() :: template()

Creates a template for location relations.

product_launch_template()

@spec product_launch_template() :: template()

Creates a template for product launch events.

subsidiary_template()

@spec subsidiary_template() :: template()

Creates a template for parent-subsidiary relations.