是否有任何算法可以执行任何 Stemmers 算法的逆运算。也就是说,给定一个词干“ require ”,如何找到词干“require”的所有词?
我们总是会发现相同单词的变体,例如要求、要求、要求、要求。都有“要求”的共同点。如果我们可以合并一个功能来识别所有带有“require”的词,那就太好了。
我们尝试了 Stemmers 算法,它给出的结果如下:
- 例外 - 除了
- 没有 - 没有
- 防止 - 防止
- 临床 - 诊所
- 披露,- 披露
- 收集,-收集,
我们已经尝试了如下代码:
class Program
{
static void Main(string[] args)
{
string strStemPhrase = @"generate generates generated generating generously";
string result = Regex.Replace(strStemPhrase, @"[\W_]+", " ");
string[] strStemmedWords = result.Split(new[] { " " }, StringSplitOptions.None);
TestStemmer(new EnglishStemmer(), strStemmedWords);
Console.ReadKey();
return;
}
private static void TestStemmer(IStemmer stemmer, params string[] words)
{
Console.WriteLine("Stemmer: " + stemmer);
foreach (string word in words)
{
Console.WriteLine(word + " --> " + stemmer.Stem(word));
}
}
}