0

私は、thesaurus.com を使用して単語の同義語を見つける方法を作成しました。それに対するコメントとフィードバックを探しています。速度、セキュリティ、信頼性(ルックアップのためにサードパーティのWebサイトに依存することがどれほど「信頼できる」かに関係なく)などに関して、どのように改善できますか.

    /// <summary>
    /// This method relies heavily on thesaurus.com for synonym lookups. It is not completely reliable, but is deemed reliable enough in instances where you dont have your own thesaurus
    /// </summary>
    public static string[] GetSynonyms(string word)
    {
        string url = string.Format("http://thesaurus.com/search?q={0}", word);

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        if (response.StatusCode == HttpStatusCode.OK)
        {
            List<string> synonyms = new List<string>();
            StringBuilder data = new StringBuilder();
            string line;

            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {

                //we know that the synonyms is in the upper-part of the html stream so we do not want to read the entire stream.
                while((line = reader.ReadLine()) != null) {
                    var index = line.IndexOf("<span class=\"text\">");

                    if(index > 0) 
                    {
                        index = index + "<span class=\"text\">".Length;
                        synonyms.Add(line.Substring(index).Replace("</span>", ""));
                    }

                    //break when we come to the Antonyms section of the page
                    if (line.Contains("container-info antonyms"))
                    {
                        break;
                    }
                }
            }
            return synonyms.ToArray<string>();
        }
        else
        {
            return null;
        }
    }

編集: 例として、「old」という単語の同義語を見つけるのに約 3.5 秒かかります。

4

1 に答える 1

1

改善する最善の方法は、HTML を解析するのではなく、仕事に適したものを使用することです。つまり、次のようなローカル API または Web サービス API

于 2013-10-16T12:33:34.527 に答える