import logging import nltk import numpy as np from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer from nltk.tokenize import word_tokenize, sent_tokenize from nltk.tag import pos_tag from nltk.corpus import wordnet import random from typing import List, Dict, Any # Download required NLTK data nltk.download('punkt', quiet=True) nltk.download('averaged_perceptron_tagger', quiet=True) nltk.download('wordnet', quiet=True) class Codette: def __init__(self, user_name="User"): self.user_name = user_name self.memory = [] self.analyzer = SentimentIntensityAnalyzer() self.context_memory = [] self.audit_log("Codette initialized", system=True) def get_wordnet_pos(self, treebank_tag): if treebank_tag.startswith('J'): return wordnet.ADJ elif treebank_tag.startswith('V'): return wordnet.VERB elif treebank_tag.startswith('N'): return wordnet.NOUN elif treebank_tag.startswith('R'): return wordnet.ADV else: return None def generate_creative_sentence(self, seed_words): sentence_patterns = [ "The {noun} {verb} {adverb} through the {adjective} {noun2}", "In the realm of {noun}, we find {adjective} {noun2} that {verb} {adverb}", "Through {adjective} observation, the {noun} {verb} to {verb2} {adverb}", "Like a {adjective} {noun}, thoughts {verb} {adverb} in the {noun2}", "{Adverb}, the {adjective} {noun} {verb} beyond {noun2}", "As {noun} {verb}, the {adjective} {noun2} {verb2} {adverb}", "Within the {adjective} {noun}, {noun2} {verb} {adverb}", "The {noun} of {noun2} {verb} {adverb} in {adjective} harmony" ] words = { 'noun': ['pattern', 'system', 'concept', 'insight', 'knowledge', 'wisdom', 'understanding', 'perspective', 'framework', 'structure', 'mind', 'thought', 'connection', 'essence'], 'verb': ['emerges', 'flows', 'evolves', 'transforms', 'adapts', 'resonates', 'harmonizes', 'integrates', 'synthesizes', 'manifests', 'unfolds', 'develops', 'crystallizes'], 'adjective': ['dynamic', 'profound', 'intricate', 'harmonious', 'quantum', 'resonant', 'synergistic', 'emergent', 'holistic', 'integrated', 'luminous', 'transcendent'], 'adverb': ['naturally', 'seamlessly', 'elegantly', 'precisely', 'harmoniously', 'dynamically', 'quantum-mechanically', 'synergistically', 'infinitely'], 'noun2': ['consciousness', 'understanding', 'reality', 'dimension', 'paradigm', 'ecosystem', 'universe', 'matrix', 'field', 'infinity', 'harmony'] } # Add seed words to appropriate categories for word, pos in pos_tag(word_tokenize(' '.join(seed_words))): pos_type = self.get_wordnet_pos(pos) if pos_type == wordnet.NOUN: words['noun'].append(word) words['noun2'].append(word) elif pos_type == wordnet.VERB: words['verb'].append(word) elif pos_type == wordnet.ADJ: words['adjective'].append(word) elif pos_type == wordnet.ADV: words['adverb'].append(word) # Generate sentence pattern = random.choice(sentence_patterns) sentence = pattern.format( noun=random.choice(words['noun']), verb=random.choice(words['verb']), adjective=random.choice(words['adjective']), adverb=random.choice(words['adverb']), noun2=random.choice(words['noun2']), verb2=random.choice(words['verb']), Adverb=random.choice(words['adverb']).capitalize() ) return sentence def audit_log(self, message, system=False): source = "SYSTEM" if system else self.user_name logging.info(f"{source}: {message}") def analyze_sentiment(self, text): score = self.analyzer.polarity_scores(text) self.audit_log(f"Sentiment analysis: {score}") return score def extract_key_concepts(self, text): tokens = word_tokenize(text.lower()) tagged = pos_tag(tokens) concepts = [] for word, tag in tagged: if tag.startswith(('NN', 'VB', 'JJ', 'RB')): concepts.append(word) return concepts def respond(self, prompt): # Analyze sentiment and extract concepts sentiment = self.analyze_sentiment(prompt) key_concepts = self.extract_key_concepts(prompt) self.memory.append({"prompt": prompt, "sentiment": sentiment, "concepts": key_concepts}) # Generate creative responses using multiple perspectives responses = [] # Neural perspective with creative sentence neural_response = self.generate_creative_sentence(key_concepts) responses.append(f"[Neural] {neural_response}") # Logical perspective logical_patterns = [ "Analysis reveals that {concept} leads to {outcome}", "The relationship between {concept} and {outcome} suggests a systematic approach", "From a structural viewpoint, {concept} forms the foundation for {outcome}", "When we examine {concept}, we discover its connection to {outcome}", "The patterns within {concept} naturally evolve towards {outcome}" ] logical_response = random.choice(logical_patterns).format( concept=random.choice(key_concepts) if key_concepts else "this pattern", outcome="enhanced understanding" if sentiment['compound'] >= 0 else "areas needing attention" ) responses.append(f"[Logical] {logical_response}") # Creative perspective with another unique sentence creative_response = self.generate_creative_sentence(key_concepts) responses.append(f"[Creative] {creative_response}") # Add to context memory self.context_memory.append({ 'input': prompt, 'concepts': key_concepts, 'sentiment': sentiment['compound'] }) return "\n\n".join(responses)