Yahoo!の形態素解析APIを利用してケブンリッジ ジェレネータを作ってみた

XMLElement等の使い方がいまいちわからなかったので、汚いソースコードになってしまったが、Yahoo!形態素解析APIを利用してケブンリッジ ジェネレータを作ってみた。
ケンブリッジ ジェネレータともいう。


Yahoo!の日本語形態素解析については↓
http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html


あなたのアプリケーションIDの場所を取得したアプリケーションIDに置き換えれば、使えます。
先頭と末尾を維持したままスペルをランダムに変えるメソッドを呼ぶだけでよいです。

取り急ぎ。

XElementの使い方が分かったので書き直し。

        private string  単語ランダム化(string 変換前単語)
        {
            //なんで、三桁までの単語は何もしないのかって、三文字じゃ順番を変えようがないからだ。
            if (変換前単語.Length <= 3)
            {
                return 変換前単語;
            }

            string 変換後単語 = 変換前単語;

            変換後単語 = "";

            var キャラクタリスト = 変換前単語.ToCharArray(1, 変換前単語.Length - 2).ToList();
            変換後単語 = 変換前単語.Substring(0, 1);
            var ランダム番号生成オブジェクト = new Random();

            while (キャラクタリスト.Count() >= 1)
            {
                var 対象Index = ランダム番号生成オブジェクト.Next(キャラクタリスト.Count());
                変換後単語 += キャラクタリスト[対象Index];
                キャラクタリスト.RemoveAt(対象Index);
            }

            変換後単語 += 変換前単語.Substring(変換前単語.Length - 1);

            return 変換後単語;
        }


        private List<string> 形態素解析の結果(string value)
        {
            string requestUrl = 
                   string.Format("http://jlp.yahooapis.jp/MAService/V1/parse?appid=あなたのアプリケーションID&results=ma&sentence={0}", 
                   System.Web.HttpUtility.UrlEncode(value));

            byte[] responseData = null;
            using (System.Net.WebClient client = new System.Net.WebClient())
            {
                responseData = client.DownloadData(requestUrl);
            }

            List<string> result = new List<string>();

            XElement Root = XElement.Parse(System.Text.Encoding.UTF8.GetString(responseData), LoadOptions.None);
            IEnumerable<System.Xml.Linq.XElement> elements = Root.Descendants(Root.Name.Namespace + "reading");

            foreach (XElement element in elements)
            {
                result.Add(element.Value);
            }

            return result;
        }


        public string 先頭と末尾を維持したままスペルをランダムに変える(string 変更前)
        {

            var 単語リスト = 形態素解析の結果(変更前);

            StringBuilder 変更後 = new StringBuilder();
            
            foreach (var 単語 in 単語リスト)
            {
                変更後.AppendFormat("{0} ", 単語ランダム化(単語));
            }

            return 変更後.ToString();
        }

サンプル画像