【发布时间】:2017-06-14 13:24:26
【问题描述】:
是否有任何算法可以执行任何 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));
}
}
}
【问题讨论】:
-
"我们已经尝试了如下代码:"...但是?你有什么问题?代码有效吗?
-
是的,这段代码是有效的......但我的问题是“如何找到所有带有词干“require”的单词?”
标签: c# algorithm stemming porter-stemmer