class
WordMage::Analysis
- WordMage::Analysis
- Reference
- Object
Overview
Represents aggregate analysis of multiple words.
Analysis combines data from multiple WordAnalysis instances to provide statistical insights into phonological patterns, frequencies, and structural tendencies. This data can be used to configure generators to produce words with similar characteristics.
This class is JSON-serializable for easy storage and transmission.
Example
analysis = Analysis.new(
phoneme_frequencies: {"n" => 0.15, "a" => 0.25, "θ" => 0.08},
syllable_count_distribution: {2 => 0.3, 3 => 0.5, 4 => 0.2},
average_complexity: 6.2,
recommended_budget: 6
)
Included Modules
- JSON::Serializable
Defined in:
analysis.crConstructors
- .new(pull : JSON::PullParser)
-
.new(phoneme_frequencies : Hash(String, Float32) = Hash(String, Float32).new, positional_frequencies : Hash(String, Hash(String, Float32)) = Hash(String, Hash(String, Float32)).new, syllable_count_distribution : Hash(Int32, Float32) = Hash(Int32, Float32).new, syllable_pattern_distribution : Hash(String, Float32) = Hash(String, Float32).new, cluster_patterns : Hash(String, Float32) = Hash(String, Float32).new, hiatus_patterns : Hash(String, Float32) = Hash(String, Float32).new, complexity_distribution : Hash(Int32, Float32) = Hash(Int32, Float32).new, average_complexity : Float32 = 0.0_f32, average_syllable_count : Float32 = 0.0_f32, consonant_vowel_ratio : Float32 = 0.0_f32, recommended_budget : Int32 = 6, recommended_templates : Array(String) = [] of String, recommended_hiatus_probability : Float32 = 0.2_f32, dominant_patterns : Array(String) = [] of String, vowel_transitions : Hash(String, Hash(String, Float32)) = Hash(String, Hash(String, Float32)).new)
Creates a new Analysis with specified parameters.
Instance Method Summary
-
#average_complexity : Float32
Average complexity score across all words
-
#average_complexity=(average_complexity : Float32)
Average complexity score across all words
-
#average_syllable_count : Float32
Average syllable count across all words
-
#average_syllable_count=(average_syllable_count : Float32)
Average syllable count across all words
-
#cluster_patterns : Hash(String, Float32)
Frequency of consonant clusters
-
#cluster_patterns=(cluster_patterns : Hash(String, Float32))
Frequency of consonant clusters
-
#complexity_distribution : Hash(Int32, Float32)
Distribution of complexity scores
-
#complexity_distribution=(complexity_distribution : Hash(Int32, Float32))
Distribution of complexity scores
-
#complexity_preference : Symbol
Determines if the analyzed language prefers simple or complex structures.
-
#consonant_vowel_ratio : Float32
Consonant to vowel ratio
-
#consonant_vowel_ratio=(consonant_vowel_ratio : Float32)
Consonant to vowel ratio
-
#dominant_patterns : Array(String)
Most common syllable patterns
-
#dominant_patterns=(dominant_patterns : Array(String))
Most common syllable patterns
-
#final_phonemes(threshold : Float32 = 0.1_f32) : Array(String)
Returns phonemes that commonly appear in final position.
-
#generate_vowel_harmony(strength : Float32 = 0.7_f32, threshold : Float32 = 0.1_f32) : VowelHarmony
Generates a VowelHarmony configuration from the transition data.
-
#hiatus_patterns : Hash(String, Float32)
Frequency of hiatus sequences
-
#hiatus_patterns=(hiatus_patterns : Hash(String, Float32))
Frequency of hiatus sequences
-
#initial_phonemes(threshold : Float32 = 0.1_f32) : Array(String)
Returns phonemes that commonly appear in initial position.
-
#most_frequent_clusters(count : Int32 = 10) : Array(String)
Returns the most frequent clusters.
-
#most_frequent_patterns(count : Int32 = 5) : Array(String)
Returns the most frequent syllable patterns.
-
#most_frequent_phonemes(count : Int32 = 10) : Array(String)
Returns the most frequent phonemes in order.
-
#optimal_syllable_weights : Hash(Int32, Float32)
Calculates the optimal syllable count weights for generation.
-
#phoneme_diversity : Float32
Calculates the diversity of phoneme usage.
-
#phoneme_frequencies : Hash(String, Float32)
Frequency of each phoneme across all analyzed words
-
#phoneme_frequencies=(phoneme_frequencies : Hash(String, Float32))
Frequency of each phoneme across all analyzed words
-
#positional_frequencies : Hash(String, Hash(String, Float32))
Positional frequencies: phoneme -> {position -> frequency}
-
#positional_frequencies=(positional_frequencies : Hash(String, Hash(String, Float32)))
Positional frequencies: phoneme -> {position -> frequency}
-
#preferred_transitions(from_vowel : String, count : Int32 = 3) : Array(Tuple(String, Float32))
Returns the most preferred vowel transitions.
-
#recommended_budget : Int32
Recommended complexity budget for generator
-
#recommended_budget=(recommended_budget : Int32)
Recommended complexity budget for generator
-
#recommended_hiatus_probability : Float32
Recommended hiatus probability
-
#recommended_hiatus_probability=(recommended_hiatus_probability : Float32)
Recommended hiatus probability
-
#recommended_templates : Array(String)
Recommended syllable templates based on patterns
-
#recommended_templates=(recommended_templates : Array(String))
Recommended syllable templates based on patterns
-
#structural_complexity : Float32
Calculates the structural complexity index.
-
#summary : String
Generates a summary report of the analysis.
-
#syllable_count_distribution : Hash(Int32, Float32)
Distribution of syllable counts
-
#syllable_count_distribution=(syllable_count_distribution : Hash(Int32, Float32))
Distribution of syllable counts
-
#syllable_pattern_distribution : Hash(String, Float32)
Distribution of syllable patterns (CV, CVC, etc.)
-
#syllable_pattern_distribution=(syllable_pattern_distribution : Hash(String, Float32))
Distribution of syllable patterns (CV, CVC, etc.)
-
#valid? : Bool
Validates the analysis data for consistency.
-
#vowel_harmony_strength : Symbol
Checks if the language shows strong vowel harmony patterns.
-
#vowel_transition_diversity : Float32
Calculates vowel transition diversity.
-
#vowel_transitions : Hash(String, Hash(String, Float32))
Vowel transition frequencies: vowel -> {next_vowel -> frequency}
-
#vowel_transitions=(vowel_transitions : Hash(String, Hash(String, Float32)))
Vowel transition frequencies: vowel -> {next_vowel -> frequency}
Constructor Detail
Creates a new Analysis with specified parameters.
Instance Method Detail
Average syllable count across all words
Distribution of complexity scores
Determines if the analyzed language prefers simple or complex structures.
Returns
Symbol indicating complexity preference (:simple
, :moderate
, :complex
)
Returns phonemes that commonly appear in final position.
Parameters
threshold
: Minimum frequency threshold (default: 0.1)
Returns
Array of phoneme strings that commonly end words
Generates a VowelHarmony configuration from the transition data.
Parameters
strength
: Harmony strength (0.0-1.0)threshold
: Minimum frequency to include in rules (default: 0.1)
Returns
VowelHarmony instance configured from analysis
Returns phonemes that commonly appear in initial position.
Parameters
threshold
: Minimum frequency threshold (default: 0.1)
Returns
Array of phoneme strings that commonly start words
Returns the most frequent clusters.
Parameters
count
: Number of top clusters to return (default: 10)
Returns
Array of cluster strings ordered by frequency
Returns the most frequent syllable patterns.
Parameters
count
: Number of top patterns to return (default: 5)
Returns
Array of pattern strings ordered by frequency
Returns the most frequent phonemes in order.
Parameters
count
: Number of top phonemes to return (default: 10)
Returns
Array of phoneme strings ordered by frequency
Calculates the optimal syllable count weights for generation.
Returns
Hash mapping syllable counts to their optimal weights
Calculates the diversity of phoneme usage.
Returns
Float32 representing phoneme diversity (higher = more diverse)
Frequency of each phoneme across all analyzed words
Frequency of each phoneme across all analyzed words
Positional frequencies: phoneme -> {position -> frequency}
Positional frequencies: phoneme -> {position -> frequency}
Returns the most preferred vowel transitions.
Parameters
from_vowel
: The source vowelcount
: Number of top transitions to return (default: 3)
Returns
Array of {vowel, frequency} tuples ordered by frequency
Recommended hiatus probability
Recommended syllable templates based on patterns
Calculates the structural complexity index.
Returns
Float32 representing overall structural complexity
Distribution of syllable counts
Distribution of syllable patterns (CV, CVC, etc.)
Distribution of syllable patterns (CV, CVC, etc.)
Validates the analysis data for consistency.
Returns
true
if the analysis data is valid, false
otherwise
Checks if the language shows strong vowel harmony patterns.
Returns
Symbol indicating harmony strength (:none
, :weak
, :moderate
, :strong
)
Calculates vowel transition diversity.
Returns
Float32 representing how diverse vowel transitions are
Vowel transition frequencies: vowel -> {next_vowel -> frequency}
Vowel transition frequencies: vowel -> {next_vowel -> frequency}