October 16, 2008

SilverlightでYahoo日本語形態素解析API

Silverlight 2リリースされた。とりあえず適当に。

ソース ダウンロード SilverlightYahooParse.zip (7.4K)

使い方

メモ
・Page.xaml.cssの24行目hogehogeはアプリケーションIDを取得して適当に変える。(hogehogeではできません)
var appid = "hogehoge";
リクエストパラメータはParser.csの60行目
var url = CreateUrl(_appid, sentence, "ma", "surface,reading,pos,baseform", "", "", "", "", "", "");
というところで何とかする。
・リクエストURLをつくるとき、sentenceはURLEncodeしないといけない。Silverlightでは、System.Windows.Browser.HttpUtility.UrlEncode(sentence)とする。WPFではHttpUtilityはSystem.Webにある。
・結果の取得はWebClientを利用する。
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
client.DownloadStringCompleted += (s, e) =>
{
var result = e.Result;
XDocument xdoc = XDocument.Parse(result);
XNamespace ns = xdoc.Root.GetDefaultNamespace();
var word_list =
from element in xdoc.Descendants(ns + "word_list").Descendants(ns + "word")
select new word
{
surface = (string)element.Element(ns + "surface"),
reading = (string)element.Element(ns + "reading"),
pos = (string)element.Element(ns + "pos"),
baseform = (string)element.Element(ns + "baseform"),
};

_Result = new List(word_list);
if (ParseCompleted != null)
ParseCompleted(this, EventArgs.Empty);
};
Uri uri = new Uri(url);
client.DownloadStringAsync(new Uri(url));

・DataGridのつかいかたはこっち