WANTONAN / algorithm.js
wednors's picture
Upload 9 files
e65c526 verified
class SimpleGPT {
constructor() {
this.knowledgeBase = [];
this.logicChain = [];
this.markovChains = {};
this.letterChains = {};
this.syntacticChains = {};
this.sentimentKeywords = ['счастлив', 'грустно', 'зло', 'взволнован', 'скука', 'радость', 'гнев', 'удивление', 'страх'];
this.wordAssociations = {};
this.semanticNetwork = {};
this.questionWords = ['как', 'что', 'почему', 'когда', 'где', 'кто', 'чей', 'сколько', 'зачем', 'какой'];
this.contextMemory = [];
this.deepMemory = [];
this.attentionWeights = {};
this.hierarchicalChains = {};
this.transformerLayers = [];
this.quantumStates = {};
this.neuroplasticWeights = {};
this.holographicMemory = {};
this.fractalPatterns = {};
this.temporalNets = {};
this.chaosFields = {};
this.entropicMatrices = {};
this.adaptiveFilters = {};
this.cognitiveMaps = {};
this.synapticPaths = {};
this.neuralOscillators = {};
this.memeticFields = {};
this.geneticOperators = {};
this.hyperdimensionalVectors = {};
this.topologicalManifolds = {};
this.morphogeneticFields = {};
this.quantumEntanglement = {};
this.holographicProjection = {};
this.fractalEncoding = {};
this.temporalFolding = {};
this.chaosSynchronization = {};
this.entropicBalancing = {};
this.adaptiveResonance = {};
this.cognitiveDissonance = {};
this.synapticPruning = {};
this.neuralHarmonics = {};
this.memeticReplication = {};
this.geneticDrift = {};
this.hyperdimensionalProjection = {};
this.topologicalCompression = {};
this.morphogeneticResonance = {};
this.conceptCorrelations = {};
this.narrativeStructures = {};
this.emotionalGradients = {};
this.symbolicMaps = {};
this.linguisticPatterns = {};
this.causalChains = {};
this.abstractionLevels = {};
this.contextualFrames = {};
this.eigenVectors = {};
this.stateMachines = {};
this.bayesianNetworks = {};
this.fuzzyLogicSets = {};
this.feedbackLoops = {};
this.resonanceChambers = {};
this.informationFlows = {};
this.phaseSpace = {};
this.attractorBasins = {};
this.semanticGradients = {};
this.conceptualKernels = {};
this.rhetoricalDevices = {};
this.stylisticMatrices = {};
this.dialogueActs = {};
this.pragmaticContext = {};
this.buildTransformerLayers();
}
loadTrainingData(data) {
this.knowledgeBase = data.split('\n').filter(line => line.trim() !== '');
const buildFunctions = [
this.buildMarkovChains, this.buildLetterChains, this.buildWordAssociations, this.buildSemanticNetwork,
this.buildSyntacticChains, this.buildHierarchicalChains, this.buildQuantumStates, this.buildNeuroplasticWeights,
this.buildHolographicMemory, this.buildFractalPatterns, this.buildTemporalNets, this.buildChaosFields,
this.buildEntropicMatrices, this.buildAdaptiveFilters, this.buildCognitiveMaps, this.buildSynapticPaths,
this.buildNeuralOscillators, this.buildMemeticFields, this.buildGeneticOperators, this.buildHyperdimensionalVectors,
this.buildTopologicalManifolds, this.buildMorphogeneticFields, this.buildQuantumEntanglement, this.buildHolographicProjection,
this.buildFractalEncoding, this.buildTemporalFolding, this.buildChaosSynchronization, this.buildEntropicBalancing,
this.buildAdaptiveResonance, this.buildCognitiveDissonance, this.buildSynapticPruning, this.buildNeuralHarmonics,
this.buildMemeticReplication, this.buildGeneticDrift, this.buildHyperdimensionalProjection, this.buildTopologicalCompression,
this.buildMorphogeneticResonance, this.buildAnswerTemplates, this.buildDeepMemory, this.buildConceptCorrelations,
this.buildNarrativeStructures, this.buildEmotionalGradients, this.buildSymbolicMaps, this.buildLinguisticPatterns,
this.buildCausalChains, this.buildAbstractionLevels, this.buildContextualFrames, this.buildEigenVectors,
this.buildStateMachines, this.buildBayesianNetworks, this.buildFuzzyLogicSets, this.buildFeedbackLoops,
this.buildResonanceChambers, this.buildInformationFlows, this.buildPhaseSpace, this.buildAttractorBasins,
this.buildSemanticGradients, this.buildConceptualKernels, this.buildRhetoricalDevices, this.buildStylisticMatrices,
this.buildDialogueActs, this.buildPragmaticContext
];
buildFunctions.forEach(fn => fn.call(this, this.knowledgeBase));
}
buildTransformerLayers() {
const transformerFunctions = [
text => this.applyQuantumSuperposition(text), text => this.applyHolographicReduction(text), text => this.applyFractalCompression(text),
text => this.applyTemporalConvolution(text), text => this.applyChaosEntanglement(text), text => this.applyEntropicFiltering(text),
text => this.applyAdaptiveResonanceTransform(text), text => this.applyCognitiveMapping(text), text => this.applySynapticWeights(text),
text => this.applyNeuralHarmonicsTransform(text), text => this.applyMemeticEvolution(text), text => this.applyGeneticOperations(text),
text => this.applyHyperdimensionalRotation(text), text => this.applyTopologicalFolding(text), text => this.applyMorphogeneticField(text),
text => this.applyConceptCorrelation(text), text => this.applyNarrativeShift(text), text => this.applyEmotionalGradient(text),
text => this.applySymbolicSubstitution(text), text => this.applyLinguisticPattern(text), text => this.applyCausalInference(text),
text => this.applyAbstractionChange(text), text => this.applyContextualFraming(text), text => this.applyEigenVector(text),
text => this.applyStateMachine(text), text => this.applyBayesianUpdate(text), text => this.applyFuzzyLogic(text),
text => this.applyFeedback(text), text => this.applyResonance(text), text => this.applyInformationFlow(text),
text => this.applyPhaseSpaceJump(text), text => this.applyAttractorBasin(text), text => this.applySemanticGradientShift(text),
text => this.applyConceptualKernel(text), text => this.applyRhetoricalDevice(text), text => this.applyStylisticMatrix(text),
text => this.applyDialogueAct(text), text => this.applyPragmaticContext(text)
];
this.transformerLayers = [];
for (let i = 0; i < 7000; i++) {
const method = transformerFunctions[Math.floor(Math.random() * transformerFunctions.length)];
this.transformerLayers.push(text => {
try {
const result = method(text);
return (typeof result === 'string' && result.trim() !== '') ? result : this.generateFallbackResponse(text);
} catch (e) {
return this.generateFallbackResponse(text);
}
});
}
}
applyQuantumSuperposition(text) {
const words = text.split(' ');
return words.map(word => {
const states = this.quantumStates[word] || [word, this.generateWordByLetters(word[0] || 'a')];
return states[Math.floor(Math.random() * states.length)];
}).join(' ');
}
applyHolographicReduction(text) {
const words = text.split(' ');
if (words.length === 0) return '';
const key = words.slice(0, 2).join(' ');
const memory = this.holographicMemory[key] || [text];
return memory[Math.floor(Math.random() * memory.length)];
}
applyFractalCompression(text) {
if (!text) return '';
const pattern = this.fractalPatterns[text.substring(0, 3)] || text.substring(0, 5);
if (!pattern) return text;
return (pattern + text).substring(0, Math.max(text.length, 5));
}
applyTemporalConvolution(text) {
const words = text.split(' ');
if (words.length === 0) return '';
const temporalNet = this.temporalNets[words[0]] || {};
const next = Object.keys(temporalNet);
if (next.length > 0) {
return next[Math.floor(Math.random() * next.length)] + ' ' + words.slice(1).join(' ');
}
return text;
}
applyChaosEntanglement(text) {
const words = text.split(' ');
const entangled = words.map(word => {
const chaos = this.chaosFields[word] || [word];
return chaos[Math.floor(Math.random() * chaos.length)];
});
return entangled.join(' ');
}
applyEntropicFiltering(text) {
const entropyMap = this.calculateEntropy(text);
return text.split('').filter(char => entropyMap[char] > 0.1).join('');
}
calculateEntropy(text) {
const freq = {};
if (!text) return {};
text.split('').forEach(char => {
freq[char] = (freq[char] || 0) + 1;
});
const total = text.length;
const entropy = {};
if (total === 0) return {};
Object.keys(freq).forEach(char => {
const p = freq[char] / total;
entropy[char] = -p * Math.log2(p);
});
return entropy;
}
applyAdaptiveResonanceTransform(text) {
if (!text) return '';
const resonance = this.adaptiveResonance[text.substring(0, 5)] || text;
return resonance.split('').reverse().join('');
}
applyCognitiveMapping(text) {
if (!text) return '';
const map = this.cognitiveMaps[text.substring(0, 2)] || [text];
return map[Math.floor(Math.random() * map.length)];
}
applySynapticWeights(text) {
const words = text.split(' ');
return words.map(word => {
const weights = this.synapticPaths[word] || { [word]: 1 };
const choices = Object.keys(weights);
return choices[Math.floor(Math.random() * choices.length)];
}).join(' ');
}
applyNeuralHarmonicsTransform(text) {
if (!text) return '';
const harmonic = this.neuralHarmonics[text.length % 5] || [text];
return harmonic[Math.floor(Math.random() * harmonic.length)];
}
applyMemeticEvolution(text) {
const memes = this.memeticFields[text] || [text];
return memes[Math.floor(Math.random() * memes.length)];
}
applyGeneticOperations(text) {
const words = text.split(' ');
return words.map(word => {
if (this.geneticOperators[word] && Math.random() < 0.5) {
return this.geneticOperators[word][Math.floor(Math.random() * this.geneticOperators[word].length)];
}
return word;
}).join(' ');
}
applyHyperdimensionalRotation(text) {
if (!text) return '';
const dims = this.hyperdimensionalVectors[text.split(' ')[0]] || [text];
return dims[Math.floor(Math.random() * dims.length)];
}
applyTopologicalFolding(text) {
if (!text) return '';
const key = text.replace(/\s+/g, '').length % 10;
const folded = this.topologicalCompression[key] || [text];
return folded[Math.floor(Math.random() * folded.length)].split('').reverse().join('');
}
applyMorphogeneticField(text) {
if (!text) return '';
const key = text.substring(text.length - 3);
const morph = this.morphogeneticFields[key] || [text];
return morph[Math.floor(Math.random() * morph.length)];
}
applyConceptCorrelation(text) {
const words = text.split(' ');
if (words.length === 0) return '';
const concept = words[Math.floor(Math.random() * words.length)];
const correlated = this.conceptCorrelations[concept] || { [concept]: 1 };
const choices = Object.keys(correlated);
const newWord = choices[Math.floor(Math.random() * choices.length)];
words.splice(Math.floor(Math.random() * words.length), 1, newWord);
return words.join(' ');
}
applyNarrativeShift(text) {
if (!text) return '';
const structure = this.narrativeStructures[text.length % 10] || [text];
return structure[Math.floor(Math.random() * structure.length)];
}
applyEmotionalGradient(text) {
const words = text.split(' ');
return words.map(word => {
const gradient = this.emotionalGradients[word];
if (gradient && Math.random() < 0.3) {
return gradient;
}
return word;
}).join(' ');
}
applySymbolicSubstitution(text) {
if (!text) return '';
const key = text[0];
const symbols = this.symbolicMaps[key] || [text];
return symbols[Math.floor(Math.random() * symbols.length)];
}
applyLinguisticPattern(text) {
if (!text) return '';
const patternKey = text.split(' ').length % 5;
const pattern = this.linguisticPatterns[patternKey] || [text];
return pattern[Math.floor(Math.random() * pattern.length)];
}
applyCausalInference(text) {
const words = text.split(' ');
const lastWord = words[words.length - 1];
const cause = this.causalChains[lastWord] || {};
const effects = Object.keys(cause);
if (effects.length > 0) {
return text + ' потому что ' + effects[Math.floor(Math.random() * effects.length)];
}
return text;
}
applyAbstractionChange(text) {
const words = text.split(' ');
return words.map(word => {
const level = this.abstractionLevels[word];
if (level && Math.random() < 0.2) {
return level[Math.floor(Math.random() * level.length)];
}
return word;
}).join(' ');
}
applyContextualFraming(text) {
if (!text) return '';
const frame = this.contextualFrames[text.substring(0, 4)] || [text];
return frame[Math.floor(Math.random() * frame.length)];
}
applyEigenVector(text) {
const words = text.split(' ');
if (words.length === 0) return '';
const vector = this.eigenVectors[words[0]] || [text];
return vector[Math.floor(Math.random() * vector.length)];
}
applyStateMachine(text) {
const words = text.split(' ');
if (words.length === 0) return '';
const state = this.stateMachines[words[0]] || { [words.slice(1).join(' ')]: 1 };
const nextStates = Object.keys(state);
return words[0] + ' ' + nextStates[Math.floor(Math.random() * nextStates.length)];
}
applyBayesianUpdate(text) {
const words = text.split(' ');
if (words.length < 2) return text;
const prior = words[0];
const evidence = words[1];
const posterior = this.bayesianNetworks[prior]?.[evidence];
if (posterior) {
const choices = Object.keys(posterior);
words.splice(0, 2, choices[Math.floor(Math.random() * choices.length)]);
return words.join(' ');
}
return text;
}
applyFuzzyLogic(text) {
const words = text.split(' ');
return words.map(word => {
const fuzzySet = this.fuzzyLogicSets[word];
if (fuzzySet && Math.random() < 0.4) {
return fuzzySet[Math.floor(Math.random() * fuzzySet.length)];
}
return word;
}).join(' ');
}
applyFeedback(text) {
if (!text) return '';
const loop = this.feedbackLoops[text.length % 10] || [text];
return loop[Math.floor(Math.random() * loop.length)];
}
applyResonance(text) {
const words = text.split(' ');
if (words.length === 0) return '';
const chamber = this.resonanceChambers[words[0]] || [text];
return chamber[Math.floor(Math.random() * chamber.length)];
}
applyInformationFlow(text) {
const words = text.split(' ');
if (words.length < 2) return text;
const from = words[0];
const flow = this.informationFlows[from];
if (flow) {
const to = flow[Math.floor(Math.random() * flow.length)];
words[1] = to;
return words.join(' ');
}
return text;
}
applyPhaseSpaceJump(text) {
if (!text) return '';
const key = text.split('').sort().join('').substring(0, 5);
const newState = this.phaseSpace[key] || [text];
return newState[Math.floor(Math.random() * newState.length)];
}
applyAttractorBasin(text) {
if (!text) return '';
const basin = this.attractorBasins[text.substring(0, 2)] || [text];
return basin[Math.floor(Math.random() * basin.length)];
}
applySemanticGradientShift(text) {
const words = text.split(' ');
return words.map(word => {
const gradient = this.semanticGradients[word];
if (gradient && Math.random() < 0.3) {
return gradient[Math.floor(Math.random() * gradient.length)];
}
return word;
}).join(' ');
}
applyConceptualKernel(text) {
const words = text.split(' ');
if (words.length === 0) return text;
const kernelKey = words[Math.floor(Math.random() * words.length)];
const kernel = this.conceptualKernels[kernelKey];
if (kernel) {
return kernel.replace('%s', text);
}
return text;
}
applyRhetoricalDevice(text) {
const devices = Object.keys(this.rhetoricalDevices);
if (devices.length === 0) return text;
const device = devices[Math.floor(Math.random() * devices.length)];
return this.rhetoricalDevices[device](text);
}
applyStylisticMatrix(text) {
const styles = Object.keys(this.stylisticMatrices);
if (styles.length === 0) return text;
const style = styles[Math.floor(Math.random() * styles.length)];
const matrix = this.stylisticMatrices[style];
return text.split(' ').map(word => matrix[word] || word).join(' ');
}
applyDialogueAct(text) {
const acts = Object.keys(this.dialogueActs);
if (acts.length === 0) return text;
const act = acts[Math.floor(Math.random() * acts.length)];
return this.dialogueActs[act] + ' ' + text;
}
applyPragmaticContext(text) {
const contexts = Object.keys(this.pragmaticContext);
if (contexts.length === 0) return text;
const context = contexts[Math.floor(Math.random() * contexts.length)];
const modification = this.pragmaticContext[context];
return text + ' ' + modification;
}
loadLogicData(data) {
this.logicChain = data.split('\n').filter(line => line.trim() !== '');
}
buildDeepMemory(data) {
this.deepMemory = data.map(line => {
const words = line.split(' ').filter(w => w.trim());
return {
raw: line,
tokens: words,
vector: this.createSemanticVector(words)
};
});
}
createSemanticVector(words) {
const vector = {};
words.forEach(word => {
const cleanWord = word.toLowerCase().replace(/[^а-яё]/g, '');
if (!cleanWord) return;
vector[cleanWord] = (vector[cleanWord] || 0) + 1;
const similar = this.getSemanticSimilarWords(cleanWord, 3);
similar.forEach(w => {
vector[w] = (vector[w] || 0) + 0.7;
});
});
return vector;
}
semanticSimilarity(vecA, vecB) {
const keys = new Set([...Object.keys(vecA), ...Object.keys(vecB)]);
let dotProduct = 0;
let magA = 0;
let magB = 0;
for (const key of keys) {
const a = vecA[key] || 0;
const b = vecB[key] || 0;
dotProduct += a * b;
magA += a * a;
magB += b * b;
}
magA = Math.sqrt(magA);
magB = Math.sqrt(magB);
return magA && magB ? dotProduct / (magA * magB) : 0;
}
findInDeepMemory(query, threshold = 0.65) {
const queryVector = this.createSemanticVector(query.split(' '));
const results = [];
this.deepMemory.forEach(memory => {
const similarity = this.semanticSimilarity(queryVector, memory.vector);
if (similarity > threshold) {
results.push({
text: memory.raw,
score: similarity
});
}
});
return results.sort((a, b) => b.score - a.score)
.slice(0, 7)
.map(item => item.text);
}
buildMarkovChains(data) {
const maxOrder = 9;
for (let order = 1; order <= maxOrder; order++) {
this.markovChains[order] = this.buildMarkovChainForOrder(data, order);
}
}
buildMarkovChainForOrder(data, order) {
const chain = {};
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
for (let i = 0; i <= words.length - order; i++) {
const key = words.slice(i, i + order - 1).join(' ');
const value = words[i + order - 1];
if (!chain[key]) {
chain[key] = [];
}
chain[key].push(value);
}
});
return chain;
}
buildLetterChains(data) {
const chain = {};
data.join(' ').split(/\s+/).forEach(word => {
for (let i = 0; i < word.length - 1; i++) {
const key = word[i];
const next = word[i + 1];
if (!chain[key]) chain[key] = [];
chain[key].push(next);
}
});
this.letterChains = chain;
}
buildWordAssociations(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim()).map(w => w.toLowerCase().replace(/[^а-яё]/g, ''));
words.forEach((word, index) => {
if (!this.wordAssociations[word]) {
this.wordAssociations[word] = {};
}
for (let j = Math.max(0, index - 7); j < Math.min(words.length, index + 8); j++) {
if (index !== j) {
const assocWord = words[j];
const weight = 1 / (Math.abs(index - j) + 1);
this.wordAssociations[word][assocWord] = (this.wordAssociations[word][assocWord] || 0) + weight;
}
}
});
});
}
buildSemanticNetwork(data) {
const contextWindow = 15;
data.forEach(line => {
const sentences = line.split(/[.!?]+/).filter(s => s.trim());
sentences.forEach(sentence => {
const words = sentence.toLowerCase().split(' ').filter(w => w.trim() && w.match(/[а-яё]/g));
words.forEach((word, i) => {
if (!this.semanticNetwork[word]) this.semanticNetwork[word] = {};
for (let j = Math.max(0, i - contextWindow); j < Math.min(words.length, i + contextWindow); j++) {
if (i !== j) {
const contextWord = words[j];
const weight = 1 / (Math.abs(i - j) + 1);
this.semanticNetwork[word][contextWord] = (this.semanticNetwork[word][contextWord] || 0) + weight;
}
}
});
});
});
}
buildSyntacticChains(data) {
data.forEach(line => {
const sentences = line.split(/[.!?]+/).filter(s => s.trim());
sentences.forEach(sentence => {
const words = sentence.split(' ').filter(w => w.trim()).map(w => w.toLowerCase().replace(/[^а-яё]/g, ''));
words.forEach((word, i) => {
if (!this.syntacticChains[word]) this.syntacticChains[word] = {};
if (i < words.length - 1) {
const nextWord = words[i + 1];
this.syntacticChains[word][nextWord] = (this.syntacticChains[word][nextWord] || 0) + 1;
}
});
});
});
}
buildHierarchicalChains(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach((word, i) => {
if (!this.hierarchicalChains[word]) this.hierarchicalChains[word] = [];
if (i < words.length - 2) {
this.hierarchicalChains[word].push(words[i + 1] + ' ' + words[i + 2]);
}
});
});
}
buildQuantumStates(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach((word, i) => {
if (!this.quantumStates[word]) this.quantumStates[word] = [];
if (i > 0) this.quantumStates[word].push(words[i - 1]);
if (i < words.length - 1) this.quantumStates[word].push(words[i + 1]);
});
});
}
buildNeuroplasticWeights(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach((word, i) => {
if (!this.neuroplasticWeights[word]) this.neuroplasticWeights[word] = {};
words.forEach(other => {
if (word !== other) {
this.neuroplasticWeights[word][other] = (this.neuroplasticWeights[word][other] || 0) + 1;
}
});
});
});
}
buildHolographicMemory(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length < 2) return;
const key = words.slice(0, 2).join(' ');
if (!this.holographicMemory[key]) this.holographicMemory[key] = [];
this.holographicMemory[key].push(line);
});
}
buildFractalPatterns(data) {
data.forEach(line => {
if (line.length > 10) {
const pattern = line.substring(0, 5);
this.fractalPatterns[pattern] = line;
}
});
}
buildTemporalNets(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach((word, i) => {
if (!this.temporalNets[word]) this.temporalNets[word] = {};
if (i < words.length - 1) {
const next = words[i + 1];
this.temporalNets[word][next] = (this.temporalNets[word][next] || 0) + 1;
}
});
});
}
buildChaosFields(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.chaosFields[word]) this.chaosFields[word] = [];
this.chaosFields[word] = [...new Set([...this.chaosFields[word], ...words])];
});
});
}
buildEntropicMatrices(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.entropicMatrices[word]) this.entropicMatrices[word] = {};
words.forEach(other => {
if (word !== other) {
this.entropicMatrices[word][other] = (this.entropicMatrices[word][other] || 0) + 1;
}
});
});
});
}
buildAdaptiveFilters(data) {
data.forEach(line => {
const key = line.length % 10;
if (!this.adaptiveFilters[key]) this.adaptiveFilters[key] = [];
this.adaptiveFilters[key].push(line);
});
}
buildCognitiveMaps(data) {
data.forEach(line => {
const key = line.substring(0, 2);
if (!this.cognitiveMaps[key]) this.cognitiveMaps[key] = [];
this.cognitiveMaps[key].push(line);
});
}
buildSynapticPaths(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.synapticPaths[word]) this.synapticPaths[word] = {};
words.forEach(otherWord => {
if (word !== otherWord) {
this.synapticPaths[word][otherWord] = (this.synapticPaths[word][otherWord] || 0) + 1;
}
});
});
});
}
buildNeuralOscillators(data) {
data.forEach(line => {
const key = line.length % 5;
if (!this.neuralOscillators[key]) this.neuralOscillators[key] = [];
this.neuralOscillators[key].push(line);
});
}
buildMemeticFields(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.memeticFields[word]) this.memeticFields[word] = [];
this.memeticFields[word] = [...new Set([...this.memeticFields[word], ...words.filter(w => w !== word)])];
});
});
}
buildGeneticOperators(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach((word, i) => {
if (!this.geneticOperators[word]) this.geneticOperators[word] = [];
if (i > 0) this.geneticOperators[word].push(words[i - 1]);
if (i < words.length - 1) this.geneticOperators[word].push(words[i + 1]);
});
});
}
buildHyperdimensionalVectors(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length === 0) return;
const key = words[0];
if (!this.hyperdimensionalVectors[key]) this.hyperdimensionalVectors[key] = [];
this.hyperdimensionalVectors[key].push(line);
});
}
buildTopologicalManifolds(data) {
data.forEach(line => {
const key = line.split(' ').length;
if (!this.topologicalManifolds[key]) this.topologicalManifolds[key] = [];
this.topologicalManifolds[key].push(line);
});
}
buildMorphogeneticFields(data) {
data.forEach(line => {
if (line.length < 3) return;
const key = line.substring(line.length - 3);
if (!this.morphogeneticFields[key]) this.morphogeneticFields[key] = [];
this.morphogeneticFields[key].push(line);
});
}
buildQuantumEntanglement(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.quantumEntanglement[word]) this.quantumEntanglement[word] = [];
words.forEach(other => {
if (word !== other && !this.quantumEntanglement[word].includes(other)) {
this.quantumEntanglement[word].push(other);
}
});
});
});
}
buildHolographicProjection(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length === 0) return;
const key = words[0] + '_' + words.length;
if (!this.holographicProjection[key]) this.holographicProjection[key] = [];
this.holographicProjection[key].push(line);
});
}
buildFractalEncoding(data) {
data.forEach(line => {
const key = line.replace(/\s+/g, '').substring(0, 4);
if (!this.fractalEncoding[key]) this.fractalEncoding[key] = [];
this.fractalEncoding[key].push(line);
});
}
buildTemporalFolding(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.temporalFolding[word]) this.temporalFolding[word] = [];
this.temporalFolding[word].push(words.join(' '));
});
});
}
buildChaosSynchronization(data) {
data.forEach(line => {
const key = line.split('').filter(c => c.match(/[а-яё]/)).length % 10;
if (!this.chaosSynchronization[key]) this.chaosSynchronization[key] = [];
this.chaosSynchronization[key].push(line);
});
}
buildEntropicBalancing(data) {
data.forEach(line => {
const key = line.length % 8;
if (!this.entropicBalancing[key]) this.entropicBalancing[key] = [];
this.entropicBalancing[key].push(line);
});
}
buildAdaptiveResonance(data) {
data.forEach(line => {
if (line.length < 5) return;
const key = line.substring(0, 5);
if (!this.adaptiveResonance[key]) this.adaptiveResonance[key] = '';
this.adaptiveResonance[key] = line;
});
}
buildCognitiveDissonance(data) {
data.forEach(line => {
const key = line.split(' ').filter(w => w.length > 3).join('_');
if (!key) return;
if (!this.cognitiveDissonance[key]) this.cognitiveDissonance[key] = [];
this.cognitiveDissonance[key].push(line);
});
}
buildSynapticPruning(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.synapticPruning[word]) this.synapticPruning[word] = [];
this.synapticPruning[word] = words.filter(w => w !== word);
});
});
}
buildNeuralHarmonics(data) {
data.forEach(line => {
const key = line.length % 5;
if (!this.neuralHarmonics[key]) this.neuralHarmonics[key] = [];
this.neuralHarmonics[key].push(line);
});
}
buildMemeticReplication(data) {
data.forEach(line => {
const key = line.substring(0, 4);
if (!this.memeticReplication[key]) this.memeticReplication[key] = [];
this.memeticReplication[key].push(line);
});
}
buildGeneticDrift(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length === 0) return;
words.forEach(word => {
if (!this.geneticDrift[word]) this.geneticDrift[word] = [];
this.geneticDrift[word].push(words[Math.floor(Math.random() * words.length)]);
});
});
}
buildHyperdimensionalProjection(data) {
data.forEach(line => {
if (!line) return;
const key = line[0];
if (!this.hyperdimensionalProjection[key]) this.hyperdimensionalProjection[key] = [];
this.hyperdimensionalProjection[key].push(line);
});
}
buildTopologicalCompression(data) {
data.forEach(line => {
const key = line.replace(/\s+/g, '').length % 10;
if (!this.topologicalCompression[key]) this.topologicalCompression[key] = [];
this.topologicalCompression[key].push(line);
});
}
buildMorphogeneticResonance(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length < 1) return;
const key = words[0] + (words[words.length - 1] || '');
if (!this.morphogeneticResonance[key]) this.morphogeneticResonance[key] = [];
this.morphogeneticResonance[key].push(line);
});
}
buildConceptCorrelations(data) {
data.forEach(line => {
const words = line.toLowerCase().replace(/[^а-яё\s]/g, '').split(' ').filter(w => w.trim());
words.forEach((word, index) => {
if (!this.conceptCorrelations[word]) this.conceptCorrelations[word] = {};
for (let i = 0; i < words.length; i++) {
if (i !== index) {
this.conceptCorrelations[word][words[i]] = (this.conceptCorrelations[word][words[i]] || 0) + 1;
}
}
});
});
}
buildNarrativeStructures(data) {
data.forEach(line => {
const key = line.length % 10;
if (!this.narrativeStructures[key]) this.narrativeStructures[key] = [];
this.narrativeStructures[key].push(line);
});
}
buildEmotionalGradients(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
this.sentimentKeywords.forEach(sentiment => {
if (line.includes(sentiment)) {
this.emotionalGradients[word] = sentiment;
}
});
});
});
}
buildSymbolicMaps(data) {
data.forEach(line => {
if (!line) return;
const key = line[0];
if (!this.symbolicMaps[key]) this.symbolicMaps[key] = [];
this.symbolicMaps[key].push(line);
});
}
buildLinguisticPatterns(data) {
data.forEach(line => {
const key = line.split(' ').length % 5;
if (!this.linguisticPatterns[key]) this.linguisticPatterns[key] = [];
this.linguisticPatterns[key].push(line);
});
}
buildCausalChains(data) {
data.forEach(line => {
const parts = line.split('потому что');
if (parts.length > 1) {
const cause = parts[1].trim().split(' ')[0].toLowerCase().replace(/[^а-яё]/g, '');
const effect = parts[0].trim().split(' ').pop().toLowerCase().replace(/[^а-яё]/g, '');
if (cause && effect) {
if (!this.causalChains[effect]) this.causalChains[effect] = {};
this.causalChains[effect][cause] = (this.causalChains[effect][cause] || 0) + 1;
}
}
});
}
buildAbstractionLevels(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length > 2) {
const specific = words[0];
const general = words.slice(1).join(' ');
if (!this.abstractionLevels[specific]) this.abstractionLevels[specific] = [];
this.abstractionLevels[specific].push(general);
}
});
}
buildContextualFrames(data) {
data.forEach(line => {
if (line.length < 4) return;
const key = line.substring(0, 4);
if (!this.contextualFrames[key]) this.contextualFrames[key] = [];
this.contextualFrames[key].push(line);
});
}
buildEigenVectors(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length === 0) return;
const key = words[0];
if (!this.eigenVectors[key]) this.eigenVectors[key] = [];
this.eigenVectors[key].push(line);
});
}
buildStateMachines(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length < 2) return;
const fromState = words[0];
const toState = words.slice(1).join(' ');
if (!this.stateMachines[fromState]) this.stateMachines[fromState] = {};
this.stateMachines[fromState][toState] = (this.stateMachines[fromState][toState] || 0) + 1;
});
}
buildBayesianNetworks(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length < 3) return;
const cause = words[0];
const evidence = words[1];
const effect = words[2];
if (!this.bayesianNetworks[cause]) this.bayesianNetworks[cause] = {};
if (!this.bayesianNetworks[cause][evidence]) this.bayesianNetworks[cause][evidence] = {};
this.bayesianNetworks[cause][evidence][effect] = (this.bayesianNetworks[cause][evidence][effect] || 0) + 1;
});
}
buildFuzzyLogicSets(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
words.forEach(word => {
if (!this.fuzzyLogicSets[word]) this.fuzzyLogicSets[word] = [];
this.fuzzyLogicSets[word] = [...new Set([...this.fuzzyLogicSets[word], ...words])];
});
});
}
buildFeedbackLoops(data) {
data.forEach(line => {
const key = line.length % 10;
if (!this.feedbackLoops[key]) this.feedbackLoops[key] = [];
this.feedbackLoops[key].push(line);
});
}
buildResonanceChambers(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length === 0) return;
const key = words[0];
if (!this.resonanceChambers[key]) this.resonanceChambers[key] = [];
this.resonanceChambers[key].push(line);
});
}
buildInformationFlows(data) {
data.forEach(line => {
const words = line.split(' ').filter(w => w.trim());
if (words.length < 2) return;
const from = words[0];
const to = words[1];
if (!this.informationFlows[from]) this.informationFlows[from] = [];
this.informationFlows[from].push(to);
});
}
buildPhaseSpace(data) {
data.forEach(line => {
const key = line.split('').sort().join('').substring(0, 5);
if (!this.phaseSpace[key]) this.phaseSpace[key] = [];
this.phaseSpace[key].push(line);
});
}
buildAttractorBasins(data) {
data.forEach(line => {
const key = line.substring(0, 2);
if (!this.attractorBasins[key]) this.attractorBasins[key] = [];
this.attractorBasins[key].push(line);
});
}
buildSemanticGradients(data) {
data.forEach(line => {
const words = line.toLowerCase().replace(/[^а-яё\s]/g, '').split(' ').filter(w => w.trim());
words.forEach((word, i) => {
if (i < words.length - 1) {
const nextWord = words[i + 1];
if (!this.semanticGradients[word]) this.semanticGradients[word] = [];
this.semanticGradients[word].push(nextWord);
}
});
});
}
buildConceptualKernels(data) {
data.forEach(line => {
if (line.includes('%s')) {
const [key, value] = line.split('%s');
if (key && value) {
const kernelKey = key.trim().split(' ').pop();
if (kernelKey) {
this.conceptualKernels[kernelKey] = line;
}
}
}
});
}
buildRhetoricalDevices(data) {
this.rhetoricalDevices = {
metaphor: (text) => {
const words = text.split(' ');
if (words.length < 2) return text;
const subject = words[0];
const vehicle = this.getSemanticSimilarWords(words[words.length - 1], 1)[0] || 'мир';
return `${subject} это ${vehicle}`;
},
simile: (text) => {
const words = text.split(' ');
if (words.length < 2) return text;
const subject = words[0];
const vehicle = this.getSemanticSimilarWords(words[words.length - 1], 1)[0] || 'сон';
return `${subject} как ${vehicle}`;
},
anaphora: (text) => {
const words = text.split(' ');
if (words.length < 2) return text;
const phrase = words.slice(0, 2).join(' ');
return `${phrase}, ${phrase.toLowerCase()}`;
}
};
}
buildStylisticMatrices(data) {
this.stylisticMatrices = {
formal: { 'привет': 'здравствуйте', 'пока': 'до свидания' },
poetic: { 'ветер': 'дыхание небес', 'река': 'зеркало времени' }
};
}
buildDialogueActs(data) {
this.dialogueActs = {
greeting: 'Привет,',
question: 'Скажи,',
statement: 'Я думаю, что',
farewell: 'До встречи,'
};
}
buildPragmaticContext(data) {
this.pragmaticContext = {
formal: 'с уважением',
informal: 'кстати',
uncertain: 'возможно'
};
}
buildAnswerTemplates(data) {
this.answerTemplates = data.filter(line => line.length > 15 && line.length < 100);
}
getSemanticSimilarWords(word, count = 10) {
const cleanWord = word.toLowerCase().replace(/[^а-яё]/g, '');
if (!this.semanticNetwork[cleanWord]) return [];
return Object.entries(this.semanticNetwork[cleanWord])
.sort((a, b) => b[1] - a[1])
.slice(0, count)
.map(entry => entry[0]);
}
findSimilarWordsByLetters(word, threshold = 0.4) {
const cleanWord = word.toLowerCase().replace(/[^а-яё]/g, '');
const words = Object.keys(this.wordAssociations);
let similar = words.filter(w => {
const minLen = Math.min(cleanWord.length, w.length);
let distance = 0;
for (let i = 0; i < minLen; i++) {
if (cleanWord[i] !== w[i]) distance++;
}
distance += Math.abs(cleanWord.length - w.length);
return distance / Math.max(cleanWord.length, w.length) <= (1 - threshold);
});
if (!similar.length) {
similar = words.slice(0, 5);
}
return similar;
}
ensureCoherence(words) {
if (!words || words.length === 0) return [this.generateWordByLetters('а')];
return words.filter((word, i) => {
if (i === 0) return true;
const prevWord = words[i - 1]?.toLowerCase().replace(/[^а-яё]/g, '');
const currentWord = word?.toLowerCase().replace(/[^а-яё]/g, '');
if (!prevWord || !currentWord) return false;
if (this.syntacticChains[prevWord]?.[currentWord] || this.semanticNetwork[prevWord]?.[currentWord]) {
return true;
}
return Math.random() > 0.6;
});
}
generateWordByLetters(seed = '') {
let result = seed?.[0] || ['а', 'б', 'в', 'г', 'д', 'е', 'ё'][Math.floor(Math.random() * 7)];
for (let i = 0; i < 4 + Math.floor(Math.random() * 6); i++) {
const lastChar = result[result.length - 1];
const next = this.letterChains[lastChar] || ['а', 'о', 'и', 'е', 'у', 'н', 'т'];
result += next[Math.floor(Math.random() * next.length)];
}
return result;
}
generateFallbackResponse(topic = 'что') {
const randomWords = Object.keys(this.wordAssociations);
if (randomWords.length === 0) return this.generateWordByLetters('а');
const fallback = this.generateMarkovResponse(topic || randomWords[Math.floor(Math.random() * randomWords.length)]);
return fallback || this.generateWordByLetters('а');
}
analyzeTopic(input) {
const words = input.toLowerCase().split(' ').filter(w => w.trim() && w.match(/[а-яё]/));
let topicScore = {};
words.forEach(word => {
const similarWords = this.getSemanticSimilarWords(word, 5);
similarWords.forEach(w => {
const associates = this.getSemanticSimilarWords(w, 5);
associates.forEach(assoc => {
topicScore[assoc] = (topicScore[assoc] || 0) + (this.semanticNetwork[w]?.[assoc] || 1);
});
});
});
const topic = Object.entries(topicScore)
.sort((a, b) => b[1] - a[1])
.slice(0, 5)
.map(entry => entry[0])
.join(' ');
return {
isQuestion: input.endsWith('?') || words.some(w => this.questionWords.includes(w)),
questionWord: words.find(w => this.questionWords.includes(w)) || null,
topic: topic || input
};
}
transformPhrase(phrase) {
const words = phrase.split(' ').filter(w => w.trim());
const transformedWords = this.ensureCoherence(words.map(word => this.transformWord(word)));
return transformedWords.join(' ') || this.generateWordByLetters('а');
}
transformWord(word) {
const clean = word.toLowerCase().replace(/[^а-яё]/g, '');
if (Math.random() < 0.5) {
const associates = this.getSemanticSimilarWords(clean, 5);
if (associates.length > 0) {
return associates[Math.floor(Math.random() * associates.length)];
}
}
if (this.wordAssociations[clean]) {
const associates = Object.entries(this.wordAssociations[clean]);
if (associates.length > 0) {
const weights = associates.map(entry => entry[1]);
const total = weights.reduce((sum, w) => sum + w, 0);
if (total > 0) {
const rand = Math.random() * total;
let sum = 0;
for (const [assocWord, weight] of associates) {
sum += weight;
if (rand <= sum) return assocWord;
}
}
}
}
return clean || this.generateWordByLetters(clean);
}
composeNewAnswer(topic) {
const templates = this.answerTemplates
.filter(t => t.toLowerCase().includes(topic.toLowerCase().slice(0, 3)))
.slice(0, 5);
if (templates.length > 0) {
const template = templates[Math.floor(Math.random() * templates.length)];
const words = template.split(' ').filter(w => w.trim());
const topicWords = topic.split(' ').filter(w => w.trim());
words.splice(Math.floor(Math.random() * words.length), 0, ...topicWords);
return this.ensureCoherence(words).join(' ') || this.generateFallbackResponse(topic);
}
return this.generateMarkovResponse(topic) || this.generateFallbackResponse(topic);
}
reformulateResponse(text, isQuestion = false) {
let words = text.split(' ').filter(w => w.trim()).map(w => this.transformWord(w));
words = this.ensureCoherence(words);
if (isQuestion && Math.random() > 0.7) {
const addition = this.generateMarkovResponse(words[0] || 'что', 2) || this.generateWordByLetters('а');
return words.join(' ') + ' ' + addition;
}
return words.join(' ') || this.generateWordByLetters('а');
}
generateMarkovResponse(input, order = 4) {
const words = input.split(' ').filter(w => w.trim());
if (words.length === 0) return this.generateFallbackResponse();
let response = [];
const validOrder = Math.min(order, 9);
let currentKey = words.slice(0, validOrder - 1).join(' ');
for (let i = 0; i < 50; i++) {
const chain = this.markovChains[validOrder] || this.syntacticChains;
const nextWords = chain[currentKey] || this.syntacticChains[currentKey.split(' ').pop()] || [];
if (!nextWords.length) break;
const nextWord = this.getNextWordByProbability(nextWords);
response.push(nextWord);
const keyParts = currentKey.split(' ');
keyParts.push(nextWord);
if (keyParts.length >= validOrder) {
keyParts.shift();
}
currentKey = keyParts.join(' ');
}
return this.ensureCoherence(response).join(' ') || this.generateFallbackResponse(input);
}
getNextWordByProbability(words) {
if (!words || words.length === 0) return 'что';
return words[Math.floor(Math.random() * words.length)];
}
processMultipleInputs(inputs) {
const responses = inputs.map(input => {
const { isQuestion, topic } = this.analyzeTopic(input);
let response;
const deepMemoryResults = this.findInDeepMemory(topic);
if (deepMemoryResults.length > 0 && Math.random() < 0.7) {
response = deepMemoryResults[Math.floor(Math.random() * deepMemoryResults.length)];
} else if (isQuestion) {
const knowledgeResults = this.findInKnowledgeBase(topic);
if (knowledgeResults.length > 0) {
response = knowledgeResults[Math.floor(Math.random() * knowledgeResults.length)];
} else {
response = this.composeNewAnswer(topic);
}
} else {
const markovResponse = this.generateMarkovResponse(input);
const similarFromKB = this.findByPartialMatch(input);
response = similarFromKB.length > 0 && Math.random() < 0.5 ? similarFromKB[0] : markovResponse;
}
this.contextMemory.push({ input, response });
return this.reformulateResponse(response, isQuestion);
});
return responses.join('. ') || this.generateFallbackResponse();
}
generateResponse(input) {
const inputs = input.split(/[.,!?;]+/).filter(i => i.trim() !== '');
if (inputs.length > 1) {
return this.processMultipleInputs(inputs);
}
const { isQuestion, topic } = this.analyzeTopic(input);
let source;
const deepMemoryResults = this.findInDeepMemory(topic, 0.7);
if (deepMemoryResults.length > 0 && Math.random() < 0.8) {
source = deepMemoryResults[Math.floor(Math.random() * deepMemoryResults.length)];
} else if (isQuestion) {
const knowledgeResults = this.findInKnowledgeBase(topic);
const logicResults = this.findInLogicChain(topic);
if (knowledgeResults.length > 0 && Math.random() < 0.6) {
source = knowledgeResults[Math.floor(Math.random() * knowledgeResults.length)];
} else if (logicResults.length > 0 && Math.random() < 0.4) {
source = logicResults[Math.floor(Math.random() * logicResults.length)];
} else {
source = this.composeNewAnswer(topic);
}
} else {
const knowledgeResults = this.findInKnowledgeBase(input);
if (knowledgeResults.length > 0 && Math.random() < 0.5) {
source = knowledgeResults[Math.floor(Math.random() * knowledgeResults.length)];
} else {
source = this.generateMarkovResponse(input, 5);
}
}
let processedResponse = source;
for (const layer of this.transformerLayers) {
processedResponse = layer(processedResponse);
}
this.contextMemory.push({ input, response: processedResponse });
if (this.contextMemory.length > 10) this.contextMemory.shift();
return this.reformulateResponse(processedResponse, isQuestion) || this.generateFallbackResponse(topic);
}
findByPartialMatch(input) {
const partialMatches = [];
const lowerInput = input.toLowerCase();
this.knowledgeBase.forEach(line => {
if (line.toLowerCase().startsWith(lowerInput.slice(0, 3))) {
partialMatches.push(line);
}
});
return partialMatches.slice(0, 5);
}
findInKnowledgeBase(query) {
return this.knowledgeBase.filter(line => line.toLowerCase().includes(query.toLowerCase())).slice(0, 5);
}
findInLogicChain(query) {
return this.logicChain.filter(line => line.toLowerCase().includes(query.toLowerCase())).slice(0, 5);
}
}
module.exports = SimpleGPT;