Exemple #1
0
    async void Start()
    {
        // テキストデータセット
        string[] sentences = new[]
        {
            "私はラーメンが好きです。",
            "私は餃子が好きです。",
            "私はラーメンが嫌いです。"
        };

        // 1. まずは単語辞書を作る必要があります
        Vocabulary vocabulary = await Vocabulary.Create(sentences);

        // 2. 先程生成した単語辞書を使ったBoWベクトル変換器を作ります
        BagOfWordsConverter converter = new BagOfWordsConverter(vocabulary);

        // 3. 好きな文章をBoW変換します
        int[] bowVec = await converter.ConvertAsync("私はラーメンが嫌いです。");

        // BoWベクトル(テキスト中に単語が出現した回数を並べたもの)
        // 1,1,1,1,0,1,1,0,1
        Debug.Log(string.Join(",", bowVec));

        // 単語辞書の単語と順番
        // 私,は,ラーメン,が,好き,です,。,餃子,嫌い
        Debug.Log(string.Join(",", vocabulary.Words));
    }
Exemple #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));
    }
Exemple #3
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();
            }
        }
Exemple #4
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);
        }
Exemple #5
0
        public void BagOfWordsConverterCreateErrorCase()
        {
            var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1));

            try
            {
                var converter = new BagOfWordsConverter(null);
                Assert.Fail();
            }
            catch (ArgumentException)
            {
                Assert.Pass();
            }
        }
Exemple #6
0
    private async void Start()
    {
        // テキストデータセット
        string[] sentences = new[]
        {
            "私はラーメンが好きです。",
            "私は餃子が好きです。",
            "私はラーメンが嫌いです。"
        };

        // 1. 単語辞書を作成
        Vocabulary vocabraryu = await Vocabulary.Create(sentences);

        // 2. 生成した単語辞書を使ったBoWベクトル変換器を作成
        _converter = new BagOfWordsConverter(vocabraryu);
    }