Exemplo n.º 1
0
 /// <summary>
 /// 使用Porter stemmer做stemming。
 /// </summary>
 /// <param name="token">需要做stemming的字。</param>
 /// <returns>stemming後的結果。</returns>
 public string Stem(string token)
 {
     return(Stemmer.go(token));
 }
Exemplo n.º 2
0
        /** Test program for demonstrating the Stemmer.  It reads text from a
         * a list of files, stems each word, and writes the result to standard
         * output. Note that the word stemmed is expected to be in lower case:
         * forcing lower case must be done outside the Stemmer class.
         * Usage: Stemmer file-name file-name ...
         */
        public static string go(String str)
        {
            string result = "";

            char[]  w = new char[501];
            Stemmer s = new Stemmer();

            for (int i = 0; i < 1; i++)
            {
                try
                {
                    //FileStream _in = new FileStream(args[i], FileMode.Open, FileAccess.Read);
                    StringReader _in = new StringReader(str);
                    try
                    {
                        while (true)
                        {
                            int ch = _in.Read();
                            if (Char.IsLetter((char)ch))
                            {
                                int j = 0;
                                while (true)
                                {
                                    ch   = Char.ToLower((char)ch);
                                    w[j] = (char)ch;
                                    if (j < 500)
                                    {
                                        j++;
                                    }
                                    ch = _in.Read();
                                    if (!Char.IsLetter((char)ch))
                                    {
                                        /* to test add(char ch) */
                                        for (int c = 0; c < j; c++)
                                        {
                                            s.add(w[c]);
                                        }
                                        /* or, to test add(char[] w, int j) */
                                        /* s.add(w, j); */
                                        s.stem();

                                        String u;

                                        /* and now, to test toString() : */
                                        u = s.ToString();

                                        /* to test getResultBuffer(), getResultLength() : */
                                        /* u = new String(s.getResultBuffer(), 0, s.getResultLength()); */
                                        //Console.Write(u);

                                        result += u;
                                        break;
                                    }
                                }
                            }
                            if (ch < 0)
                            {
                                break;
                            }
                            result += (char)ch;
                            //Console.Write((char)ch);
                        }
                    }
                    catch (IOException)
                    {
                        //Console.WriteLine("error reading " + args[i]);
                        break;
                    }
                }
                catch (FileNotFoundException)
                {
                    //Console.WriteLine("file " + args[i] + " not found");
                    break;
                }
            }

            return(result);
        }