最近、ステミングなどのテキスト処理を行うアプリケーションに取り組んでいましたが、このリンクの c# コードでポーターのステミングを見つけました: http://snowball.tartarus.org/otherlangs/english_cpp.txt
実行しようとしましたが、テキストで何かが変わります。次のように、ステミング クラスを呼び出そうとします。
string inputstem = File.ReadAllText(textBox21.Text);
Porter2 stemmer = new Porter2();
string outputstem = stemmer.stem(inputstem);
textBoxfile.Text = outputstem;
結果を正しく取得できません..出力には、入力とまったく同じ内容が含まれています..ここでは、input.txtの例を示します。
"Nice terrain no MAtter seeing from near or afar morning missing matting cats caresses ponies ties agreed"
ポーターステムコードのメインは次のとおりです。
public string stem(string word)
{
if (word.Length < 3) return word;
StringBuilder sb = new StringBuilder(word.ToLower());
if (sb[0] == '\'') sb.Remove(0, 1);
for (int i = 0; i < exceptions.Length / 2; ++i)
if (word == exceptions[i, 0])
return exceptions[i, 1];
int r1 = 0, r2 = 0;
changeY(sb);
computeR1R2(sb, ref r1, ref r2);
step0(sb);
step1a(sb);
for (int i = 0; i < exceptions2.Length; ++i)
if (sb.ToString() == exceptions2[i])
return exceptions2[i];
step1b(sb, r1);
step1c(sb);
step2(sb, r1);
step3(sb, r1, r2);
step4(sb, r2);
step5(sb, r1, r2);
return sb.ToString().ToLower();
}
そのコードを完成させる方法を知っている人はいますか? だから私は私の最終的なプロジェクトでそれを使用することができます. ありがとうございました。