//output data public String OutputDataFromNetwork(String data) { List <String> returnMessage = new List <String>(); //parse words String wordToAddToList = ""; List <String> wordList = new List <String>(); for (int index = 0; index < data.Length; index++) { String c = data.Substring(index, 1); if (c.Equals(" ")) { wordList.Add(wordToAddToList); wordToAddToList = ""; } else { wordToAddToList += c; } } wordList.Add(wordToAddToList); //add words that to database that aren't in it foreach (String word in wordList) { if (!ChatbotCore.loadedDataBase.ContainsKey(word)) { ChatbotCore.AddWordToDataBase(word); } if (returnMessage.Count > 0) { returnMessage.Add(forwardPropagateData(ChatbotCore.WordToNumber(word), ChatbotCore.WordToNumber(returnMessage[returnMessage.Count - 1]))); } else { returnMessage.Add(forwardPropagateData(ChatbotCore.WordToNumber(word), -1)); } } //return text String r = ""; foreach (String word in returnMessage) { r += word + " "; } //return text return(r); }
//train perceptrons public void trainPerceptrons(String user1Words, String user2Words) { //iterate over words List <String> inputWords = new List <String>(); List <String> targetWords = new List <String>(); String currentWord = ""; for (int index = 0; index < user1Words.Length; index++) { String c = user1Words.Substring(index, 1); if (c.Equals(" ")) { inputWords.Add(currentWord); currentWord = ""; } else { currentWord += c; } } for (int index = 0; index < user2Words.Length; index++) { String c = user2Words.Substring(index, 1); if (c.Equals(" ")) { targetWords.Add(currentWord); currentWord = ""; } else { currentWord += c; } } //iterate over longer list of words for training for (int index = 0; index < (inputWords.Count > targetWords.Count ? targetWords.Count : inputWords.Count); index++) { float inputWord = ChatbotCore.WordToNumber(inputWords[index]); float targetWord = ChatbotCore.WordToNumber(targetWords[index]); backPropagateData(inputWord, targetWord); } }