コード例 #1
0
 public DefaultWord(string value, DefaultGram gram, int id, string classType = null)
 {
     m_value = value;
     m_gram  = gram;
     m_id    = id;
     m_class = classType;
 }
コード例 #2
0
		public DefaultWord (string value, DefaultGram gram, int id, string classType = null )
		{
			m_value = value;
			m_gram = gram;
			m_id = id;
			m_class = classType;
		}
コード例 #3
0
    private void GenerateNGram()
    {
        if (blackBoard.ConfigUI.Config.HeiarchalEnabled)
        {
            grammar = NGramFactory.InitHierarchicalNGram(
                blackBoard.ConfigUI.Config.N,
                blackBoard.ConfigUI.Config.HeiarchalMemory);

            simpleGrammar = NGramFactory.InitHierarchicalNGram(
                blackBoard.ConfigUI.Config.N,
                blackBoard.ConfigUI.Config.HeiarchalMemory);
        }
        else if (blackBoard.ConfigUI.Config.BackOffEnabled)
        {
            grammar = NGramFactory.InitHierarchicalNGram(
                blackBoard.ConfigUI.Config.N,
                blackBoard.ConfigUI.Config.BackOffMemory);

            simpleGrammar = NGramFactory.InitHierarchicalNGram(
                blackBoard.ConfigUI.Config.N,
                blackBoard.ConfigUI.Config.BackOffMemory);
        }
        else
        {
            grammar       = NGramFactory.InitGrammar(blackBoard.ConfigUI.Config.N);
            simpleGrammar = NGramFactory.InitGrammar(blackBoard.ConfigUI.Config.N);
        }

        for (int i = 0; i <= blackBoard.ProgressIndex; ++i)
        {
            if (blackBoard.ConfigUI.Config.UsingTieredGeneration || blackBoard.ProgressIndex == i)
            {
                JsonObject tierInfo   = blackBoard.GameFlow[i].AsJsonObject;
                JsonArray  tierLevels = tierInfo[FlowKeys.LevelNames].AsJsonArray;
                foreach (string levelName in tierLevels)
                {
                    List <string> columns = LevelParser.BreakMapIntoColumns(levelName);
                    columns.RemoveAt(columns.Count - 1); // remove flag at the end
                    List <string> simpleColumns = LevelParser.BreakColumnsIntoSimplifiedTokens(
                        columns,
                        blackBoard.ConfigUI.Config.Game);

                    levelColumns.Add(columns);
                    simplifiedLevelColumns.Add(simpleColumns);

                    NGramTrainer.Train(grammar, columns, skipFirst: true);
                    NGramTrainer.Train(simpleGrammar, simpleColumns, skipFirst: true);

                    if (blackBoard.ProgressIndex != i)
                    {
                        grammar.UpdateMemory(blackBoard.ConfigUI.Config.TieredGenerationMemoryUpdate);
                        levelColumns.Clear();
                        simplifiedLevelColumns.Clear();
                    }
                }
            }
        }
    }
コード例 #4
0
ファイル: ProfileTest.cs プロジェクト: bi3mer/PCGPlatformer
        private List <SimulationThread> GetSimulationThreads(string levelFlowPath, string name, Games game)
        {
            // We first get all the levels from the flow and then get the start
            // input from the first level in the sequence. Note that the first
            // we use the same start input but we don't want that to scew
            // results. To get around this, we use a flag in the ngram generator
            // which will not include the start output in the end result.
            List <List <string> >   levels     = BuildSimulator.GetLevels(levelFlowPath);
            List <string>           startInput = levels[0].GetRange(0, 10);
            List <SimulationThread> threads    = new List <SimulationThread>();

            for (int i = 1; i <= 6; ++i)
            {
                IGram gram = NGramFactory.InitGrammar(i);
                foreach (List <string> level in levels)
                {
                    NGramTrainer.Train(gram, level, skipFirst: true);
                }

                //threads.Add(BuildThread(gram, null, startInput, game, $"{name}_{Size}_ngram"));

                if (i != 1)
                {
                    gram = NGramFactory.InitHierarchicalNGram(i, 0.6f);
                    IGram simpleGram = NGramFactory.InitHierarchicalNGram(i, 0.6f);

                    IGram bgram = NGramFactory.InitBackOffNGram(i, 0.6f);
                    foreach (List <string> level in levels)
                    {
                        NGramTrainer.Train(gram, level, skipFirst: true);
                        NGramTrainer.Train(bgram, level, skipFirst: true);
                        NGramTrainer.Train(
                            simpleGram,
                            LevelParser.BreakColumnsIntoSimplifiedTokens(
                                level,
                                game),
                            skipFirst: true);
                    }

                    //threads.Add(BuildThread(gram, null, startInput, game, $"{name}_{Size}_heirarchical"));
                    threads.Add(BuildThread(gram, simpleGram, startInput, game, $"{name}_{Size}_simple_heirarchical"));

                    //threads.Add(BuildThread(bgram, null, startInput, game, $"{name}_{Size}_backoff"));
                    // threads.Add(BuildThread(bgram, simpleGram, startInput, game, $"{name}_{Size}_simple_backoff"));
                }
            }

            return(threads);
        }
コード例 #5
0
ファイル: NGram.cs プロジェクト: bi3mer/Tools
        public void AddGrammar(IGram gram)
        {
            Assert.IsTrue(gram.GetN() == N);
            NGram ngram = (NGram)gram;

            foreach (string key in ngram.Grammar.Keys)
            {
                if (Grammar.ContainsKey(key) == false)
                {
                    Grammar[key] = new UniGram();
                }

                Grammar[key].AddGrammar(ngram.Grammar[key]);
            }
        }
コード例 #6
0
        public HierarchicalNGram(int n, float compiledMemoryUpdate)
        {
            Assert.IsTrue(compiledMemoryUpdate > 0);
            Assert.IsTrue(compiledMemoryUpdate < 1);
            Assert.IsTrue(n > 1);

            CompiledMemoryUpdate = compiledMemoryUpdate;
            N = n;

            Grammars    = new IGram[n];
            Grammars[0] = new UniGram();
            for (int grammarSize = 2; grammarSize <= n; ++grammarSize)
            {
                Grammars[grammarSize - 1] = new NGram(grammarSize);
            }
        }
コード例 #7
0
ファイル: ProfileTest.cs プロジェクト: bi3mer/PCGPlatformer
 private SimulationThread BuildThread(
     IGram gram,
     IGram simplifiedGram,
     List <string> startInput,
     Games game,
     string extension)
 {
     return(new SimulationThread(
                NumSimulations,
                Size,
                game,
                basePath,
                extension,
                gram,
                simplifiedGram,
                startInput));
 }
コード例 #8
0
        public void AddGrammar(IGram gram)
        {
            Assert.IsTrue(gram.GetN() == 1);
            UniGram unigram = (UniGram)gram;

            foreach (KeyValuePair <string, float> keyValue in unigram.Grammar)
            {
                if (Grammar.ContainsKey(keyValue.Key) == false)
                {
                    Grammar[keyValue.Key] = keyValue.Value;
                }
                else
                {
                    Grammar[keyValue.Key] += keyValue.Value;
                }
            }
        }
コード例 #9
0
        public void AddGrammar(IGram gram)
        {
            HierarchicalNGram grammar = gram as HierarchicalNGram;

            if (grammar != null)
            {
                Assert.AreEqual(N, grammar.N);
                for (int grammarSize = 0; grammarSize < N; ++grammarSize)
                {
                    Grammars[grammarSize].AddGrammar(grammar.Grammars[grammarSize]);
                }
            }
            else
            {
                int n = gram.GetN();
                Assert.IsTrue(n <= N);
                Grammars[n - 1].AddGrammar(gram);
            }
        }
コード例 #10
0
        private Thread BuildThread(
            IGram gram,
            IGram simplifiedGram,
            List <string> startInput,
            Games game,
            string extension)
        {
            SimulationThread simulation = new SimulationThread(
                numSimulations,
                size,
                game,
                basePath,
                extension,
                gram,
                simplifiedGram,
                startInput);

            return(new Thread(new ThreadStart(simulation.Execute)));
        }
コード例 #11
0
 public SimulationThread(
     int numSimulations,
     int size,
     Games game,
     string basePath,
     string extension,
     IGram gram,
     IGram simplifiedGram,
     List <string> startInput)
 {
     this.numSimulations = numSimulations;
     this.size           = size;
     this.game           = game;
     this.basePath       = basePath;
     this.extension      = extension;
     this.gram           = gram;
     this.simplifiedGram = simplifiedGram;
     this.startInput     = startInput;
 }
コード例 #12
0
 public GramController(IGram g)
 {
     grams = g;
 }
コード例 #13
0
        /// <summary>
        /// configures model and blob
        /// </summary>
        /// <param name="netGram"></param>
        /// <param name="configuration"></param>
        public ManageModel(IGram netGram, IConfiguration configuration)
        {
            _netGram = netGram;

            BlobImage = new Blob(configuration);
        }
コード例 #14
0
 public ManageModel(IGram gram, IConfiguration configuration)
 {
     _gram = gram;
     //Blob Storage Account Reference
     BlobImage = new Models.Util.Blob(configuration);
 }
コード例 #15
0
 public IndexModel(IGram gram)
 {
     _gram = gram;
 }
コード例 #16
0
 public IndexModel(IGram post)
 {
     _post = post;
 }
コード例 #17
0
 public static void Initialize(IGram grams)
 {
コード例 #18
0
 public ManageModel(IGram post, IConfiguration configuration)
 {
     _post = post;
     //Blob Storage Account to be referenced
     BlobImage = new Blob(configuration);
 }
コード例 #19
0
 public IndexModel(IGram netGram)
 {
     _netGram = netGram;
 }