Example #1
0
        public void BagOfWordsConverterConvertErrorCase()
        {
            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1));

            var sentences = new[]
            {
                "私はラーメンが好きです。",
                "私は餃子が好きです。",
                "私はラーメンが嫌いです。"
            };

            MorphAnalyzerClient.Init();
            var vocabulary = Task.Run(async() => await Vocabulary.Create(sentences, cts.Token)).Result;
            var converter  = new BagOfWordsConverter(vocabulary);

            try
            {
                var bowVec = Task.Run(async() => await converter.ConvertAsync(null, cts.Token)).Result;
                Assert.Fail();
            }
            catch (AggregateException)
            {
                Assert.Pass();
            }
        }
Example #2
0
    private async void Start()
    {
        // テキストデータセット
        string[] sentences = new[]
        {
            "私はラーメンが好きです。",
            "私は餃子が好きです。",
            "私はラーメンが嫌いです。"
        };

        // Vocabulary.Create もしくは BagOfWordsConverter もくしは MorphAnalyzerClient.AnalyzeAsync を初回時別スレッドで呼ぶ場合
        // メインスレッドにてMirphAnalyzerClient.Initを呼んでください (静的コンストラクタで設定ファイルをResources.Loadするため)
        MorphAnalyzerClient.Init();

        int[] bowVec = await Task.Run(async() =>
        {
            // 自身で形態素解析を行い,その結果を用いてVacabularyを生成することもできます。
            Morpheme[] morphemes  = await MorphAnalyzerClient.AnalyzeAsync(string.Join("", sentences));
            Vocabulary vocabulary = new Vocabulary(morphemes);

            BagOfWordsConverter converter = new BagOfWordsConverter(vocabulary);
            return(await converter.ConvertAsync("私はラーメンが嫌いです。"));
        });

        // 1,1,1,1,0,1,1,0,1
        Debug.Log(string.Join(",", bowVec));
    }
Example #3
0
        public void BagOfWordsConverterTestSimplePasses()
        {
            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1));

            var sentences = new[]
            {
                "私はラーメンが好きです。",
                "私は餃子が好きです。",
                "私はラーメンが嫌いです。"
            };

            MorphAnalyzerClient.Init();
            var vocabulary = Task.Run(async() => await Vocabulary.Create(sentences, cts.Token)).Result;

            var expectedWords = new[] { "私", "は", "ラーメン", "が", "好き", "です", "。", "餃子", "嫌い" };

            Assert.AreEqual(vocabulary.Count, 9);
            CollectionAssert.AreEqual(vocabulary.Words, expectedWords);

            var converter = new BagOfWordsConverter(vocabulary);

            var sentence = "私は餃子が好きです。私は。";

            var bowVec = Task.Run(async() => await converter.ConvertAsync(sentence, cts.Token)).Result;

            var expectedVec = new int[] { 2, 2, 0, 1, 1, 1, 2, 1, 0 };

            CollectionAssert.AreEqual(bowVec, expectedVec);
        }