Pocket

Rubyを用いた自然言語解析をできるWebサービスを簡単に作れる方法はないかということを考えました。
Yahoo!のサービスで自然言語解析のAPIが公開されているようなので、そちらを用いて簡単なプログラムを作ってみました。
今回作ったのは文を入力すると語に分解して分かち書きしてくれるものです。

文末にソースコードを載せておくので参考にしていただけると幸いです。
また作成にあたって、Yahooで形態素解析ができるを参考にさせていただきました。

[ruby]

#!/usr/bin/ruby

require ‘cgi’
require ‘net/http’
require ‘rexml/document’
require "kconv"

c = CGI.new
text = CGI.escapeHTML(c["text"])

print "Content-Type: text/htmlnn"

# ———HTML出力部分(プログラムとは関係なし)———
print <<EOF

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http;//www.w3c.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title>Yahoo!日本語形態素解析サンプル</title>
</head>
<div id="wrapper">
<body>
<h1>Yahoo!日本語形態素解析サンプル</h1>
<p>

EOF

print("<h2>分かち書きする文</h2>")
print(text.tosjis)
print( "<br><br><h2>分かち書きの結果</h2><br>")

# ———HTML出力部分(プログラムとは関係なし)おわり———

#***************************Yahoo!のAPIを使うところ***************************

host = ‘jlp.yahooapis.jp’
request = ‘/MAService/V1/parse?appid=[Yahoo!APIのID]’

http = Net::HTTP.new(host)
response = http.post(request, "sentence=#{text}")

#***************************Yahoo!のAPIを使うところおわり***************************

i = 1
xml = REXML::Document.new response.body
xml.elements.each("/ResultSet/ma_result/word_list/word/surface") { |e|
a = e.text.tosjis
print(i, ": ", a, "<br>n")
i = i + 1
}

# ———HTML出力部分(プログラムとは関係なし)———

print <<EOF

</p>
<br><br>
<address>
Copyright Purusawa. All rights reserved.
</address>
</body>
</div>
</html>

EOF

[/ruby]

Pocket