見出し画像

Google ColabでPatentfieldAPIを使用した類義語抽出

はじめまして、Patentfieldの公式noteです。
この記事では、Patentfieldの類似キーワード検索をAPIで利用する方法について、解説します。

1.類似キーワード検索とは

入力したキーワードに対して、機械学習によって得られた類似度の高いキーワードを検索できるPatentfieldの機能です。日本語・英語に対応しています。
Patentfieldでは、数千万件の公開済み特許公報を学習しているので、特許検索シーンに最適な類義語や同義語を探すことができます。

類似キーワード検索

2.事前準備

・PatentfieldのAPIトークン(APIトークンがなくても、実行環境の構築までは可能です)
※PatentfieldのAPIサービスは有料オプションですが、無料トライアルも随時受付しています。ご興味あれば、APIトークンを発行しますので、下記URLからぜひお問合せください。
https://patentfield.com/apply#/

3.プログラミング言語、開発環境

・プログラム言語:Python
・開発環境:Google Colab

Google Colab(名称:Google Colaboratory)は、ブラウザベースの無料の開発環境で、Googleアカウントがあればインストール不要で、Pythonプログラミングを簡単に始めることができます。
https://colab.research.google.com/

4.作成したもの

今回作成したものを実行すると、以下のような出力が得られます。
キーワードを入力すると、指定した取得件数に応じて、右側に検索結果の類似キーワードと類似度スコアが表示される簡単なWEBアプリケーションです。

作成したもの(Gradio)

Google Colab環境でPythonを使用して、PatentfieldのAPIにアクセスし、Gradioを使ってWebアプリ化しています。
Gradioは、機械学習モデルのデモを行うWebアプリケーションを簡単に作ることができるPythonのライブラリです。
https://www.gradio.app/

5.実装

Google Colabでの実行手順は、次の通りです。

(1)ライブラリのインストール

# ライブラリインストール
!pip install requests
!pip install gradio

(2)ライブラリインポート

# ライブラリインポート
import os
import requests
import gradio as gr
import pandas as pd
from datetime import datetime, timedelta, timezone

(3)Googleドライブマウント
APIから取得したデータをCSVファイルとして取得するために、Googleドライブをマウントします。

# Googleドライブマウント
from google.colab import drive
drive.mount('/content/drive')

(4)CSVファイル保存関数

# CSVファイル保存関数
def save_csv_to_drive(df, prefix):
    # タイムゾーンの生成
    JST = timezone(timedelta(hours=+9), 'JST')
    timestamp = datetime.now(JST).strftime("%Y%m%d%H%M%S")
    # CSVファイル名を生成
    csv_filename = f"{prefix}_{timestamp}.csv"
    # Googleドライブの保存先パスを設定
    drive_path = "/content/drive/My Drive/"
    full_path = os.path.join(drive_path, csv_filename)
    # DataFrameをCSVファイルとして保存
    df.to_csv(full_path, index=False, encoding="cp932", errors="ignore")
    return full_path

(5)類似キーワード検索
ここでAPIに対してリクエストを送り、APIからのレスポンスデータを処理しています。

# 類似キーワード検索
def search_similar_keywords(query, access_token, limit):
    # Patentfield APIエンドポイント
    req_url = 'https://api.patentfield.com/api/v1/patents/search'
    # Patentfield APIリクエストヘッダー
    req_headers = {'Authorization': 'Token ' + access_token, 'Content-Type': 'application/json'}
    # APIパラメータ
    req_params = {
        'q': query,
        'search_type': 'similar_words',
        'limit': limit,
        'page': 1,
        'columns': ['_key', '_score']
    }
    # API呼出
    response = requests.post(url=req_url, headers=req_headers, json=req_params)
    # APIレスポンス処理
    if response.status_code == 200:
        data = response.json()
        records = data.get('records', [])
        # Pandas DataFrameに変換
        df = pd.DataFrame(records)
        # CSVファイル保存
        prefix = "SimilarKeywords"
        csv_filename = save_csv_to_drive(df, prefix)
        return str(response.status_code), df, csv_filename
    else:
        return str(response.status_code), pd.DataFrame(), None

(6)Webアプリ(Gradio)の定義

# Webアプリ(Gradio)定義
with gr.Blocks() as app:
    gr.Markdown("類似キーワード検索")
    with gr.Row():
        with gr.Column():
            query = gr.Textbox(label="検索したいキーワード",lines=1, placeholder="検索したいキーワードを入力してください (例:機械学習)")
            access_token = gr.Textbox(label="APIアクセストークン",lines=1, placeholder="APIのアクセストークンを入力してください")
            limit = gr.Number(30, label="類似キーワード取得件数")
            submit = gr.Button("APIリクエスト送信",variant="primary")
            reset = gr.Button("リセット")
        with gr.Column():
            status_code_output = gr.Textbox(label="APIステータスコード", lines=1, interactive=False)
            response_output = gr.Dataframe()
            download_fpath = gr.Text(label="ダウンロードファイルパス")
    submit.click(
        fn=search_similar_keywords,
        inputs=[query, access_token,limit],
        outputs=[status_code_output, response_output, download_fpath]
    )
    reset.click(
        fn=lambda: ["", pd.DataFrame(), ""],
        inputs=[],
        outputs=[query, response_output, download_fpath]
    )

(7)Webアプリ(Gradio)を起動
ここでWebアプリ(Gradio)を起動します。

# Webアプリ(Gradio)起動
app.launch(debug=True, height=1000)
Webアプリ(Gradio)実行画面

Gradioが起動したら、類似キーワードを検索したいキーワードとAPIアクセストークンを入力して、APIリクエスト送信をクリックしてください。

Webアプリ(Gradio)実行結果

取得した類似キーワードはGoogleドライブのMy Driveに「SimilarKeywords_{YYYYMMDDhhmmss}.csv」というファイル名で保存されています。

6.おわりに

Patentfieldとは

Patentfieldは、4つの機能(プロフェッショナル検索・データ可視化・AI類似検索・AI分類予測)を組み合わせて、ワンストップで総合的な検索・分析ができる『AI特許総合検索・分析プラットフォーム』です。
無料で検索もできるので、ご興味あればぜひアクセスください。
https://patentfield.com/

PatentfieldのAPIについて

PatentfieldのAPI連携サービスは、情報参照だけではなく、特許検索機能をはじめPatentfieldの各機能をAPI経由で連携することで、社内で運用しているグループウェアへの組み込みや、特許検索・分析の独自アプリケーションの開発が可能になります。
AIセマンティック検索やAI分類予測などのAI機能や、PFスコアや類似キーワードの取得などPatentfieldの多彩な機能を利用して、特許に関わる社内のニーズに合わせて最適なワークフローやアプリケーションを構築できます。
このようにPatentfield APIを使うと、ブラウザ版と同じ機能をAPIを使って実現することができ、社内の独自システムにも容易に組み込むことができます。

次回以降も、特許検索や分析実務で役立つ開発実装例を紹介していきます。
実践的なケーススタディを通じて、みなさまの知財業務変革のヒントになればと思います。

#Python
#GoogleColab
#AI
#Patentfield
#特許
#知財
#知的財産