package linguistics // Registry holds all the text analysis services type Registry struct { Lang LanguageDetector Tok *Tokenizer Pos *POSTagger Lem *Lemmatizer Phon *PhoneticEncoder Key *KeywordExtractor Poet *PoeticAnalyzer } // DefaultRegistry creates a new Registry with default implementations func DefaultRegistry() *Registry { return &Registry{ Lang: NewLanguageDetector(), Tok: NewTokenizer(), Pos: NewPOSTagger(), Lem: NewLemmatizer(), Phon: NewPhoneticEncoder(), Key: NewKeywordExtractor(), Poet: NewPoeticAnalyzer(), } } // Text represents a text to be analyzed type Text struct { ID uint Body string Language string } // Token represents a token in a text type Token struct { Text string Position int Offset int Length int } // PoeticMetrics represents metrics from poetic analysis type PoeticMetrics struct { RhymeScheme string MeterType string StanzaCount int LineCount int Structure string }