家賃二万円のブログ

プログラミングできる彼女募集してます。

yahooのテキスト解析キーフレーズ抽出の使い方

ittokuのお題抽出システムとしても使われている奴。
テキスト解析:キーフレーズ抽出 - Yahoo!デベロッパーネットワーク

こんな手軽に言語解析できるんだー!ってちょっと感動して自分でも使って見たくなっちゃった。
色々調べてコードパクリつつ作成した。

やったことは、yahooのデベロッパーネットワークに登録して、アプリID取得して、webにある言語解析してくれる所にテキストをぶん投げると言うアレ
そのあと整形した。

コード

#coding:utf-8

import requests
from bs4 import BeautifulSoup

#取得したアプリケーションIDを指定
appid = "***"

#キーフレーズ抽出APIのURL
pageurl = "https://jlp.yahooapis.jp/KeyphraseService/V1/extract"

#入力文
sentence = "おはようございます。今日はとてもいい天気ですね。明日は晴れです。"

url = (pageurl+"?appid="+appid+"&sentence="+sentence+"&output=xml")

#取得
with requests.get(url) as fin:
    body = fin.text

#整形
soup = BeautifulSoup(body, "html.parser")
body2 = soup.find_all("keyphrase")
body= [i.text for i in body2]

print(body)

xmlでデータを取得できる。

<?xml version="1.0" encoding="UTF-8"?>
<ResultSet xmlns="urn:yahoo:jp:jlp:KeyphraseService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:yahoo:jp:jlp:KeyphraseService https://jlp.yahooapis.jp/KeyphraseService/V1/extract.xsd">
  <Result>
    <Keyphrase>晴れ</Keyphrase>
    <Score>100</Score>
  </Result>
  <Result>
    <Keyphrase>いい天気</Keyphrase>
    <Score>87</Score>
  </Result>
</ResultSet>

そして欲しい情報だけ抜き出す。
['晴れ', 'いい天気']
ittokuのお題システムでは、このスコアの高いものを採用してるんだと思う。

出典: PythonからYahooキーフレーズ抽出WebAPIを使う - hikm's blog

出典の記事は8年前で、python2。自分は日本語をそのままURLに使わなければならないのでurllibも使えない。そしてjsonファイルだと不思議な力でゴミになってしまったので、utf-8?かASCIIか何かで出してる。

どうでもいいけど、マークダウン方式でシンタックスハイライト使うのはすごくやりやすい
だけど、pythonPythonって書いただけで使えなくなるのってどうなんだろう。もうちょっとそこらへん想定してシステム作ってもいいんじゃないか...