// Update is called once per frame void Update() { DateTime aDate = DateTime.Now; WordEmbedding Target = wem.getTarget(); GameObject[] options = wem.getOptions(); String outputString = ""; if (options != null) { for (int i = 0; i < options.Length; i++) { GameObject option = options[i]; outputString += "(" + option.GetComponent <Option>().getWord() + "-" + option.transform.position + ")"; } } InsertRecord(run_id, aDate.ToString("yyyy/MM/ddTHH:mm:ss.fffffff"), cam.transform.position.ToString(), cam.transform.rotation.ToString(), leftcontrollerPose.transform.position.ToString(), leftcontrollerPose.transform.rotation.ToString(), rightcontrollerPose.transform.position.ToString(), rightcontrollerPose.transform.rotation.ToString(), teleportAction.GetState(LefthandType), teleportAction.GetState(RighthandType), grabAction.GetState(LefthandType), grabAction.GetState(RighthandType), zoomInAction.GetState(LefthandType), zoomInAction.GetState(RighthandType), zoomOutAction.GetState(LefthandType), zoomOutAction.GetState(RighthandType), wem.word, wem.number_of_neighbours, outputString, wem.getZoom()); }
// Update is called once per frame void Update() { float currentTime = Time.time; if (rotationEnabled && !pause && (currentTime > (startTimer + moveWindow))) { angle += (Time.deltaTime * (2 * Math.PI / secsPerRotation)); angle %= (2 * Math.PI); } // Update the scoreboard to rotate to face the user scoreboard.transform.rotation = Quaternion.LookRotation(scoreboard.GetComponent <Renderer>().bounds.center - cam.transform.position); // If still in preview mode update the target word every ten frames. if (preview && (counter % 10 == 0)) { SelectNextTarget(); // Word has been updated from console // Update the target and hard reset positons } else if (!preview && word != Target.GetWord()) { WordEmbedding we = GetWordEmbedding(word); if (we != null) { SetTarget(we); ResetPosition(); } // Number of Neighbours has been updated from console // Destory all current option game objects and rebuild } else if (!preview && k != number_of_neighbours) { for (int i = 0; i < k + 1; i++) { GameObject option = options[i]; UnityEngine.Object.Destroy(option); } k = number_of_neighbours; SetTarget(Target); //adjustZoomFromNeighbours(); // Create game options options = new GameObject[k + 1]; CreateGameObjects(); // Hard Reset ResetPosition(); } counter++; if (rotationEnabled && !pause && (currentTime > (startTimer + moveWindow))) { refreshPosition(); } }
// Update the focused target word for the model public void SetTarget(WordEmbedding we) { OldTarget = Target; Target = we; word = Target.GetWord(); Target.FindNN(embeddings, k); text.text = Target.GetWord(); }
public double Distance(WordEmbedding target) { if (target.vectors.Length != vectors.Length) { throw new ArgumentOutOfRangeException("Both WordEmbeddings must be of same dimensionality."); } double sum = 0; for (int i = 0; i < vectors.Length; i++) { sum += ((vectors[i] - target.vectors[i]) * (vectors[i] - target.vectors[i])); } return(Math.Sqrt(sum)); }
public void SetWordEmbedding(WordEmbedding e) { we = e; text.text = we.GetWord(); }
// Start is called before the first frame update void Start() { counter = 0; string line; preview = true; number_of_neighbours = k; // Read the file and display it line by line. System.IO.StreamReader file = new System.IO.StreamReader(inputfile); line = file.ReadLine(); string[] subStrings = line.Split(' '); count = System.Convert.ToInt32(subStrings[0]); dimensionality = System.Convert.ToInt32(subStrings[1]); //count = 10000; number_of_neighbours = count - 1; embeddings = new WordEmbedding[count]; double[][] data = new double[count][]; for (int j = 0; j < count; j++) { line = file.ReadLine(); subStrings = line.Split(' '); string currentword = subStrings[0]; double[] currentVectors = new double[dimensionality]; for (int i = 0; i < dimensionality; i++) { currentVectors[i] = System.Convert.ToDouble(subStrings[(i + 1)]); } data[counter] = currentVectors; WordEmbedding Target = new WordEmbedding(currentword, currentVectors); embeddings[counter] = Target; counter++; } file.Close(); TSNE tSNE = new TSNE() { NumberOfOutputs = 3, Perplexity = 5 }; double[][] finalData = tSNE.Transform(data); counter = 0; double[] maxs = { 0, 0, 0 }; double[] mins = { 0, 0, 0 }; for (int j = 0; j < count; j++) { WordEmbedding Target = embeddings[j]; double[] pcavectors = new double[3]; for (int k = 0; k < 3; k++) { pcavectors[k] = finalData[j][k]; if (pcavectors[k] > maxs[k]) { maxs[k] = pcavectors[k]; } else if (pcavectors[k] < mins[k]) { mins[k] = pcavectors[k]; } } Target.SetPCAVectors(pcavectors); embeddings[j] = Target; } // Set intial sample word SetTarget(embeddings[0]); adjustZoomFromNeighbours(); CreateGameObjects(); }
// Select the next sample target word private void SelectNextTarget() { Target = embeddings[(counter / 10) % count]; Target.FindNN(embeddings, k); text.text = Target.GetWord(); }
// Constructor public WordEmbeddingDistance(WordEmbedding w, double d, double[] p) { word = w; distance = d; pcadistance = p; }