BotSharp/BotSharp.NLP.UnitTest/RegexTokenizerTest.cs

98 lines
3 KiB
C#
Raw Normal View History

using BotSharp.NLP.Tokenize;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace BotSharp.NLP.UnitTest
{
[TestClass]
2018-08-16 04:17:42 +00:00
public class RegexTokenizerTest
{
[TestMethod]
2018-08-16 03:08:17 +00:00
public void TokenizeInWhiteSpace()
{
2018-08-17 20:49:29 +00:00
var tokenizer = new TokenizerFactory<RegexTokenizer>(new TokenizationOptions
{
Pattern = RegexTokenizer.WHITE_SPACE
}, SupportedLanguage.English);
2018-08-17 20:49:29 +00:00
var tokens = tokenizer.Tokenize("Chop into pieces, isn't it?");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[0].Start == 0);
Assert.IsTrue(tokens[0].Text == "Chop");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[1].Start == 5);
Assert.IsTrue(tokens[1].Text == "into");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[2].Start == 10);
Assert.IsTrue(tokens[2].Text == "pieces,");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[3].Start == 18);
Assert.IsTrue(tokens[3].Text == "isn't");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[4].Start == 24);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[4].Text == "it?");
}
[TestMethod]
public void TokenizeInWordPunctuation()
{
2018-08-17 20:49:29 +00:00
var tokenizer = new TokenizerFactory<RegexTokenizer>(new TokenizationOptions
{
Pattern = RegexTokenizer.WORD_PUNC
}, SupportedLanguage.English);
2018-08-16 03:08:17 +00:00
2018-08-17 20:49:29 +00:00
var tokens = tokenizer.Tokenize("Chop into pieces, isn't it?");
2018-08-16 03:08:17 +00:00
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[0].Start == 0);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[0].Text == "Chop");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[1].Start == 5);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[1].Text == "into");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[2].Start == 10);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[2].Text == "pieces");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[3].Start == 16);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[3].Text == ",");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[4].Start == 18);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[4].Text == "isn");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[5].Start == 21);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[5].Text == "'");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[6].Start == 22);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[6].Text == "t");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[7].Start == 24);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[7].Text == "it");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[8].Start == 26);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[8].Text == "?");
}
[TestMethod]
public void TokenizeInBlankLine()
{
2018-08-17 20:49:29 +00:00
var tokenizer = new TokenizerFactory<RegexTokenizer>(new TokenizationOptions
{
Pattern = RegexTokenizer.BLANK_LINE
}, SupportedLanguage.English);
2018-08-16 03:08:17 +00:00
var tokens = tokenizer.Tokenize(@"Chop into pieces,
isn't
2018-08-17 20:49:29 +00:00
it?");
2018-08-16 03:08:17 +00:00
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[0].Start == 0);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[0].Text == "Chop into pieces,");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[1].Start == 18);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[1].Text == "isn't");
2018-08-16 22:27:50 +00:00
Assert.IsTrue(tokens[2].Start == 28);
2018-08-16 03:08:17 +00:00
Assert.IsTrue(tokens[2].Text == "it?");
}
}
}