Mextractr WebAPIは
MashupAward4thの協賛APIです。
  • HOME
  • 個人情報フィルタ
  • APIキー取得
  • WebAPIについて
  • Mashupノウハウ

サンプルコード

このページでは、Mextractr WebAPIの利用例を紹介します。 Ruby、C#、Javaでのマッシュアップに使えるサンプルソースを掲載します。

各サンプルの動作:

入力文字列

"来る10月23日、定時株主総会を東京都墨田区本所の弊社会議室にて開催いたしま
す。是非ご出席いただけますようお願い申しあげます。"

をMextractr WebAPIに送り、 抽出結果のAtomを取得して、以下のようなリストとして出力します。

  WHEN 10月23日
  WHERE 東京都墨田区本所
  WHERE 弊社会議室
  WHAT 定時株主総会

Ruby

*コードリスト

$-K = "U"
require "uri"
require "open-uri"
require "rexml/document"
require "Kconv"
text = "来る10月23日、定時株主総会を東京都墨田区本所の弊社会議室にて開催いたします。是非ご出席いただけますようお願い申しあげます。"

def url_for_mextractr(string)
    # Mextractr WebAPIのURL 出力はatom
    url = "http://api.emetadata.net/mextractr?out=atom"
    # APIキー(取得して置換してください)
    url += "&apikey=XXXXXXXXXXXX"
    # テキストをURLエンコードして追加
    url += "&text=#{URI.escape(string)}"
    return url
end


open(url_for_mextractr(text)) do |s|
    puts "input:" + text.tosjis
    result = s.read
    # REXMLクラスのドキュメントとして結果を読み取る
    document = REXML::Document.new(result).root
    title =document.elements["/feed/entry/title"].texts
    # 各要素の取出しと出力
    # Windowsのコマンドプロンプトでの実行を想定し、tosjisを付けている
    items = document.elements["entry"].elements
    items.each("gd:who"){|elem| puts "WHO:" + elem.attributes["valueString"].tosjis }
    items.each("gd:where"){|elem| puts "WHERE:" + elem.attributes["valueString"].tosjis }
    items.each("gd:when"){|elem| puts "WHEN:" + elem.attributes["valueString"].tosjis }
    items.each("gd:extendedProperty"){|elem| 
      if elem.attributes["name"] == "what"
        puts "WHAT: " + elem.attributes["value"].tosjis
      end
    }
end

C#

*コードリスト

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using System.Web;

namespace MextractrSample
{
    class Program
    {
        private string _key;

        private XDocument Load(string url)
        {
            return XDocument.Load(url);
        }

        // Mextract WebAPIの呼び出し
        private List Mextract(string target)
        {
            // 呼び出しURIの作成
            var url = String.Format("http://api.emetadata.net/mextractr?text={0}&apikey={1}", HttpUtility.UrlEncode(target), _key);

            XNamespace atomNs = "http://www.w3.org/2005/Atom";
            XNamespace gdNs = "http://schemas.google.com/g/2005";

            // 作成したURIを呼び、その結果から5W1Hのリストを作成
            var doc = Load(url);
            var query = from entry in doc.Root.Elements(atomNs + "entry")
                        let whens = (from a in entry.Elements(gdNs + "when")
                                     select new KeywordInfo()
                                     {
                                         Word = a.Attribute("valueString").Value,
                                         Type = KeywordInfo.TYPE.WHEN
                                     }
                                 )
                        let whos = (from a in entry.Elements(gdNs + "who")
                                    select new KeywordInfo()
                                    {
                                        Word = a.Attribute("valueString").Value,
                                        Type = KeywordInfo.TYPE.WHO
                                    }
                                 )
                        let wheres = (from a in entry.Elements(gdNs + "where")
                                      select new KeywordInfo()
                                      {
                                          Word = a.Attribute("valueString").Value,
                                          Type = KeywordInfo.TYPE.WHERE
                                      }
                                 )
                        let whats = (from a in entry.Elements(gdNs + "extendedProperty")
                                     select new KeywordInfo()
                                     {
                                         Word = a.Attribute("value").Value,
                                         Type = KeywordInfo.TYPE.WHAT
                                     }
                                 )
                        select new
                        {
                            Whos = whos.ToList(),
                            Whens = whens.ToList(),
                            Wheres = wheres.ToList(),
                            Whats = whats.ToList()
                        };

            var list = query.ToList();

            var res = new List();
            if (list.Count == 0) return res;

            res.AddRange(list[0].Whos);
            res.AddRange(list[0].Whens);
            res.AddRange(list[0].Wheres);
            res.AddRange(list[0].Whats);
            return res;


        }


        static void Main(string[] args)
        {
            Program p = new Program();
            p._key = "XXXXXXX"; // Mextractr WebAPIのAPIキーを取得して入れてください

            string input = @"来る10月23日、定時株主総会を東京都墨田区本所の弊社会議室にて開催いたします。是非ご出席いただけますようお願い申しあげます。 ";
            // Mextract WebAPIの呼び出し
            List res = p.Mextract(input);

            // 結果の出力
            System.Console.WriteLine("input: " + input);
            foreach(var info in res){
                System.Console.WriteLine(info.Type + " " + info.Word);
            }
        }
    }
}

*ダウンロード
zip形式のC#プロジェクトファイル

JAVA

*コードリスト

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class MextractorSample {

	public static void main(String[] args) {

		try {
			//結果XMLに含まれるネームスペース
			String gdNs = "http://schemas.google.com/g/2005";

			//APIキー(取得して置き換えてください)
			String key = "XXXXXXXXXXXXX";
			
			//入力となる文字列
			String input = "来る10月23日、定時株主総会を東京都墨田区本所の弊社本店A会議室にて開催いたします。是非ご出席いただけますようお願い申しあげます。 メタデータ株式会社 野村直之";


			// リクエスト文字列の作成
			String urlStr = String.format(
					"http://api.emetadata.net/mextractr?text=%s&apikey=%s",
					URLEncoder.encode(input, "UTF8"), key);

			// 通信の開始
			URL url = new URL(urlStr);
			HttpURLConnection con = (HttpURLConnection) url.openConnection();
			Document doc;
			try {
				con.setRequestMethod("GET");
				InputStream is = con.getInputStream();
				try {
					// XML解析の準備
					DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
					dbf.setNamespaceAware(true);
					DocumentBuilder db = dbf.newDocumentBuilder();
					
					doc = db.parse(is);
				} finally {
					is.close();
				}
			} finally {
				con.disconnect();
			}


			System.out.println("input: " + input);


			//取得したXMLの内容からメタデータを取得して表示
			{
				NodeList whos = doc.getDocumentElement()
						.getElementsByTagNameNS(gdNs, "who");
				for (int i = 0; i < whos.getLength(); ++i) {
					Element elm = (Element) whos.item(i);
					System.out
							.println("WHO:" + elm.getAttribute("valueString"));
				}
			}

			{
				NodeList wheres = doc.getDocumentElement()
						.getElementsByTagNameNS(gdNs, "where");
				for (int i = 0; i < wheres.getLength(); ++i) {
					Element elm = (Element) wheres.item(i);
					System.out.println("WHERE:"
							+ elm.getAttribute("valueString"));
				}
			}

			{
				NodeList whens = doc.getDocumentElement()
						.getElementsByTagNameNS(gdNs, "when");
				for (int i = 0; i < whens.getLength(); ++i) {
					Element elm = (Element) whens.item(i);
					System.out.println("WHEN:"
							+ elm.getAttribute("valueString"));
				}
			}

			{
				NodeList whats = doc.getDocumentElement()
						.getElementsByTagNameNS(gdNs, "extendedProperty");
				for (int i = 0; i < whats.getLength(); ++i) {
					Element elm = (Element) whats.item(i);
					if (elm.getAttribute("name").equals("what")) {
						System.out.println("WHAT:" + elm.getAttribute("value"));
					}
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}



Mextractr および Mextractr個人情報フィルタ(プライバシ・フィルタ)に関するご質問・お問い合わせは問い合わせ受付フォームをご利用下さい。
Mextractr WebAPI, Mextractr個人情報フィルタ(プライバシ・フィルタ)はメタデータ株式会社が提供しています。