Files
p5js/sketches/MarkovChain.js
Jürg Hallenbarter f80711c391 add markovChain
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 11:50:46 +02:00

90 lines
2.1 KiB
JavaScript

let trainingText = "";
let wordList = [];
let wordListPlain = [];
let startWord = "";
let finalText = "";
let cleanedText = "";
async function setup() {
trainingText = await loadStrings('assets/text/cpdv_text_only.txt');
createCanvas(windowWidth, windowHeight)
background(255, 255, 230)
console.log(trainingText);
trainingText = splitText(trainingText);
console.log(trainingText);
for (i = 0; i < trainingText.length; i++) {
if (wordList.indexOf(trainingText[i]) == -1) {
if (i % 1000 == 0) {
console.log('i',i);
}
wordList.push([trainingText[i], []]);
wordListPlain.push(trainingText[i]);
for (j = i; j < trainingText.length; j++) {
if (trainingText[j] == wordList[wordList.length - 1][0]) {
if (trainingText[j + 1] != undefined){
wordList[wordList.length - 1][1].push(trainingText[j + 1]);
}
}
}
}
}
console.log(wordList);
startWord = wordList[round(random(0, wordList.length - 1))][0];
finalText = startWord;
for (i = 0; i < 100; i++) {
startWord = generateNextWord(startWord);
console.log(startWord)
finalText += " " + startWord;
}
textSize(19)
console.log(finalText)
text(finalText, 10, height / 2)
}
function splitText(text) {
for (i = 0; i < text.length; i++) {
cleanedText += " " + text[i];
}
cleanedText = cleanedText
.replaceAll(".", " . ")
.replaceAll("!", " ! ")
.replaceAll("?", " ? ")
.replaceAll(",", " , ")
.replaceAll(";", " ; ")
.replaceAll(":", " : ")
.replaceAll('"', ' " ')
.replaceAll("'", " ' ")
.replaceAll(" "," ")
.replaceAll(" "," ")
.split(" ");
return cleanedText;
}
function generateNextWord(currentWord) {
let currentWordIndex = getWordIndex(currentWord);
let nextWordIndex = round(
random(
0, wordList[currentWordIndex][1].length - 1
)
);
//retun . if end of text
if (wordList[currentWordIndex][1][nextWordIndex] == undefined){
return '.';
}
return wordList[currentWordIndex][1][nextWordIndex];
}
function getWordIndex(word) {
return wordListPlain.indexOf(word);
}
function draw() {
}
function mousePressed() {
}