Пример #1
0
    public void FindNN(WordEmbedding[] neighbours, int k)
    {
        nearestNeighbours = new WordEmbeddingDistance[k];
        for (int i = 0; i < neighbours.Length; i++)
        {
            if (word != neighbours[i].GetWord())
            {
                double   distance    = Distance(neighbours[i]);
                double[] pcadistance = new double[3];

                for (int j = 0; j < 3; j++)
                {
                    pcadistance[j] = pca[j] - neighbours[i].GetPCAVectors()[j];
                }

                WordEmbeddingDistance wed = new WordEmbeddingDistance(neighbours[i], distance, pcadistance);

                for (int j = 0; j < k; j++)
                {
                    if (nearestNeighbours[j] == null)
                    {
                        nearestNeighbours[j] = wed;
                        j = k;
                    }
                    else if (nearestNeighbours[j].GetDistance() > wed.GetDistance())
                    {
                        WordEmbeddingDistance holder = nearestNeighbours[j];
                        nearestNeighbours[j] = wed;
                        wed = holder;
                    }
                }
            }
        }
    }
Пример #2
0
    private void CreateGameObjects()
    {
        // Setup Initial state based on sample word
        preview = false;

        // Create game options
        options = new GameObject[k + 1];

        //No longer display initial option
        MeshRenderer meshRenderer = GetComponent <MeshRenderer>();

        meshRenderer.enabled = false;
        meshRenderer         = text.GetComponent <MeshRenderer>();
        meshRenderer.enabled = false;
        BoxCollider boxCollider = GetComponent <BoxCollider>();

        boxCollider.enabled = false;

        WordEmbeddingDistance[] NN = Target.GetNN();

        // Create target option
        GameObject targetOption = Instantiate(optionPrefab);
        Option     to           = targetOption.GetComponent <Option>();

        to.cam = cam;
        to.SetParent(this);
        to.SetWordEmbedding(Target);
        to.transform.localScale         = new Vector3(scale, scale, scale);
        targetOption.transform.position = transform.position;
        options[0] = targetOption;

        // Create k Nearest Neighbour Objects
        for (int i = 0; i < k; i++)
        {
            WordEmbeddingDistance neighbour = NN[i];

            GameObject option = Instantiate(optionPrefab);
            Option     o      = option.GetComponent <Option>();
            o.cam = cam;
            o.SetParent(this);
            o.SetWordEmbedding(neighbour.getWordEmbedding());
            o.transform.localScale = new Vector3(scale, scale, scale);

            option.transform.position = transform.position + new Vector3(
                (float)(zoom * (Math.Cos(angle) * neighbour.getPCADistance()[0] - Math.Sin(angle) * neighbour.getPCADistance()[2])),
                (float)(zoom * neighbour.getPCADistance()[1]),
                (float)(zoom * (Math.Sin(angle) * neighbour.getPCADistance()[0] + Math.Cos(angle) * neighbour.getPCADistance()[2])));

            options[i + 1] = option;
        }
    }