Apitore blog

Apitoreを運営していた元起業家のブログ

【API】URLの自動タグ付けAPI(Word2Vec版)を公開しました

はじめに

URLの自動タグ付けAPIのword2vec版を公開しました。こちらのAPIはURL2TEXT APIでスクレイピングし、TEXT2LABEL by word2vec APIで代表語を計算します。気になるURL2LABEL by tfidf APIとの違いを見てみましょう。 amarec (20161225-071031)

API

サンプルコード

使ってみた

アルゴリズムはTEXT2LABEL by word vectorURL2LABEL by tfidfの加算になります。基本アルゴリズムは、スクレイピングして、形態素解析→TFIDF→word2vec→kmeansクラスタリング、からの各クラスタの中心に一番近い単語を代表語として出力します。h1などの見出しタグやtitleタグで囲まれた文章は重みを挙げてあります。 せっかくなので、URL2LABEL by tfidfと比較していきましょう。

"input": "https://ja.wikipedia.org/wiki/%E3%83%9F%E3%83%BC%E3%82%A2%E3%82%AD%E3%83%A3%E3%83%83%E3%83%88",
"num": "10",
"labels": [
  {
    "label": "体毛",
    "score": 5.891517225484347
  },
  {
    "label": "毛",
    "score": 8.272037820828292
  },
  {
    "label": "褐色",
    "score": 9.100539792010892
  },
  {
    "label": "オス",
    "score": 4.746433202660457
  },
  {
    "label": "灰白色",
    "score": 6.988390560903168
  },
  {
    "label": "背面",
    "score": 4.840784725955923
  },
  {
    "label": "爪",
    "score": 4.6227714301979494
  },
  {
    "label": "幼",
    "score": 5.053870786903691
  },
  {
    "label": "繁殖",
    "score": 6.464093920394586
  },
  {
    "label": "肛門",
    "score": 5.853794790765668
  }
]

残念ながら「ミーアキャット」は代表語に含まれていませんね。他の代表語は「ミーアキャット」に関連しそうですが、これだけだとミーアキャットなのかどうかわかりませんね。タグ付けという意味だと「ミーアキャット」が含まれていなくても「体毛」がある動物とかで探すときには便利そうです。続いてyahooニュース。

"input": "http://headlines.yahoo.co.jp/hl?a=20161225-00000004-mai-pol",
"num": "10",
"labels": [
  {
    "label": "訪れる",
    "score": 11.771821523906032
  },
  {
    "label": "安倍首相",
    "score": 38.755255636038754
  },
  {
    "label": "ハワイ",
    "score": 19.933282444681712
  },
  {
    "label": "Yahoo!ニュース",
    "score": 12.012157282860917
  },
  {
    "label": "真珠湾",
    "score": 35.11842760833063
  },
  {
    "label": "J-CASTニュース",
    "score": 24.024314565721834
  },
  {
    "label": "毎日新聞",
    "score": 10.95549478834851
  },
  {
    "label": "意識調査",
    "score": 14.198850433205662
  },
  {
    "label": "出発",
    "score": 13.360534512403516
  },
  {
    "label": "JavaScript",
    "score": 30.030393207152294
  }
]

こちらは「安倍首相」「真珠湾」など、ちゃんとURLの特徴を捉えていますね。TFIDFのときにあった「Facebook」「Twitter」は代表語になっていないのは良い点ですね。最後はTechCrunch。

"input": "http://jp.techcrunch.com/2016/12/23/20161222autonomous-cars-seen-as-smarter-than-human-drivers/",
"num": "10",
"labels": [
  {
    "label": "オートパイロット",
    "score": 15.650627825072894
  },
  {
    "label": "自動運転車",
    "score": 73.19543803634357
  },
  {
    "label": "Google",
    "score": 24.024314565721834
  },
  {
    "label": "Twitter",
    "score": 30.030393207152294
  },
  {
    "label": "MORE",
    "score": 30.030393207152294
  },
  {
    "label": "自動運転",
    "score": 14.467650228263704
  },
  {
    "label": "12月22日",
    "score": 12.020365970644376
  },
  {
    "label": "遵守",
    "score": 13.8313941149168
  },
  {
    "label": "運転者",
    "score": 28.57940975470783
  },
  {
    "label": "iOS",
    "score": 12.012157282860917
  }
]

タイトルが アメリカの一般消費者の見解: 「自動運転車は人間運転者よりも優秀」 なので、「自動運転」に関する単語が多く選ばれていますね。「運転者」「自動運転」「自動運転車」「オートパイロット」は意味的に近い気がしますが、それぞれヒト、コト、モノ、コトなので違っていても良さそうで・・・いや、一つにまとまって欲しいですね笑

おわりに

Word2Vecを活用した文書解析からの代表語抽出を試みました。なかなかおもしろい結果が出ています。ただし、こちらもTFIDFのときと同様、SEO対策、SNS対策、サイト構成の影響はあります。まだまだ改善の余地がありそうです。