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(); } }
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)); }
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); }