業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【AI・機械学習】
AI

執筆者:Handbook編集部

OpenAI APIとGoogle APIを用いた記事作成のための関連キーワードの取得・生成方法

はじめに

Hakky では、AI による記事の自動生成の開発を進めています。AI に記事を生成させる際、メインとなるキーワードに加えて、それに関連するキーワード(以下、「関連キーワード」)も一緒に AI に渡すことで、記事がより深みのあるものになることが考えられます。 関連キーワードは執筆者が考えることもできますが、WEB 検索情報を利用したり、AI に生成させたりして取得することもできます。 本記事では、簡単な方法で、キーワードから関連キーワードを取得する方法を解説します。

関連キーワードについて

関連キーワードはいくつかの種類があると思いますが、ここでは以下の3つを取り上げて考えます。

  • google サジェスト:google 検索時に表示されるサジェスト
  • 類義語:メインとなるキーワードの類義語
  • 連想語:メインとなるキーワードや記事のターゲット情報から連想される単語

google サジェストについて

google サジェストは、以下のようなスクリプトで取得することが可能です。

import requests
import xml.etree.ElementTree as ET

def execute(value) -> list:
    suggestions = parseXML(executeGet(value))
    return suggestions

def executeGet(value) -> str:
    url = "http://www.google.com/complete/search"
    response = requests.get(
        url,
        params={"q": value, "ie": "utf_8", "oe": "utf_8", "output": "toolbar"},
    )
    return response.text

def parseXML(text) -> list:
    keyword_nodes = ET.fromstring(text).findall("CompleteSuggestion/suggestion")
    return list(map(lambda x: x.attrib["data"], keyword_nodes))

keywords = '記事 自動生成'
execute(keywords)

executeGet関数は、requests.get を使用して HTTP GET リクエストを送信し、Google のサジェストデータを XML データとして取得しています。paramsで 取得されたデータには、<CompleteSuggestion><suggestion data="記事 自動生成 無料"/>といった形式でサジェスト情報が含まれています。

parseXML関数は、XML データをxml.etree.ElementTreeを使って解析し、サジェスト情報をリストで返します。

execute関数は、キーワードを与えてこれらの処理をまとめて行う関数です。なお、今回は与えるキーワードが「記事 自動生成」の 2 つですが、キーワードの数が 3 つ 4 つと増えると、そのまま検索しても google サジェストが返ってこない場合があります。そのような場合には、2 つずつのキーワードを組にして順に execute に渡して処理するようなコードを追加することも考えられます。

このコードを実行すると、次のような結果が得られます。

類義語、連想語について

類義語や連想語の取得方法として、キーワード検索サイトの情報を使用する手法もありますが、ここでは GPT を利用する方法を考えてみます。

なお、GPT-API を使用するには、OpenAI Python ライブラリと API キーの設定が必要になります。 詳しくは、こちらの記事をご参考ください。

それでは、「記事,自動生成」の連想語を GPT を使用して取得してみましょう。 コード例は以下の通りです。モデルはgpt-3.5-turboを使用し、ひとまず出力を固定するためtemperature = 0に設定しています。

def get_prompt_peripheral_linked() -> str:
    return ("ユーザーが入力したキーワードの各単語について、その単語から連想される単語を日本語で5つリストアップする。\n"
        "ただし、入力された単語が助詞や助動詞の場合はスキップする。\n"
        "一般的すぎる単語は不要。\n"
        "## 出力する形式 ##\n"
        "keyword1:単語1,単語2,単語3,単語4,単語5\n"
        "keyword2:単語1,単語2,単語3,単語4,単語5\n"
    )

def generate_peripheral_linked(word: str) -> tuple[str, int]:
    messages = [{"role": "system", "content": get_prompt_peripheral_linked()}, {"role": "user", "content": word}]
    result = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=messages,
        temperature = 0,
    )
    search_phrase = result.choices[0].message.content
    return search_phrase

keywords = '記事,自動生成'
get_keywords = generate_peripheral_linked(keywords)
print(get_keywords)

出力結果は以下のようになりました。元のキーワードと関連していそうな単語が取得できています。

次に、プロンプトにもう少し情報を加えて、GPT の出力が変化するかどうかを確認してます。 例えば、想定する読者の情報として「自動生成ツールを、AI を利用して作成するためのネタ探し」を仮定します。このとき、「記事、自動生成」というキーワードからの連想語はどのようなものが出力されるでしょうか。

コードと出力結果は以下のようになりました。プロンプトを作成する関数に新たな引数targetを渡してプロンプトの中に含めるようにしています。

def get_prompt_peripheral_linked(target) -> str:
    return ("ユーザーが入力したキーワードの各単語について、その単語からターゲットが連想する単語を日本語で5つリストアップする。\n"
        "ただし、入力された単語が助詞や助動詞の場合はスキップする。\n"
        "一般的すぎる単語は不要。\n"
        "## ターゲットの情報 ##\n"
        "{target}"
        "## 出力する形式 ##\n"
        "keyword1:単語1,単語2,単語3,単語4,単語5\n"
        "keyword2:単語1,単語2,単語3,単語4,単語5\n"
    )

def generate_peripheral_linked(word: str, target:str) -> tuple[str, int]:
    messages = [{"role": "system", "content": get_prompt_peripheral_linked(target)}, {"role": "user", "content": word}]
    result = openai.ChatCompletion.create(
        model='gpt-3.5-turbo',
        messages=messages,
        temperature = 0,
    )
    search_phrase = result.choices[0].message.content
    return search_phrase

keywords = '記事,自動生成'
target = '自動生成ツールをAIを利用して作成するためのネタ探し'
get_keywords = generate_peripheral_linked(keywords, target)
print(get_keywords)

出力結果は以下のようになりました。少し出力が変化し、AI やデータが連想語として挙がっています。

今回は簡単なターゲット情報でしたが、例えばさらに詳細なターゲット情報や記事の種類などの情報を追加することで、出力がどのように変化するかを確認してみてください。

まとめ

この記事では、記事を生成する際に、メインとなるキーワードと関連するキーワードを取得する方法を扱いました。関連キーワードは記事の内容を深める役割を果たす可能性があります。 執筆者が自ら考えることに加えて、さまざまなツールを使用することで適切な単語を関連キーワードとして取得し、より良い記事の作成にお役立ていただければ幸いです。

参考

info
備考

ChatGPT を業務で活用したい場合、機密情報を入力することがセキュリティの観点から NG だったり、自社のシステムに組み込まないと効率が悪かったりする場合があります。Hakky では、ChatGPT を用いた企業独自のシステムを構築するご支援を行っています。 ソリューションサイト:https://www.about.st-hakky.com/chatgpt-solution

「どんなことが出来るのか」「いま考えているこのようなことは本当に実現可能か」など、ご検討段階でも構いませんので、ぜひお気軽にフォームよりお問い合わせくださいませ。

Hakkyへのお問い合わせ
2025年06月13日に最終更新
読み込み中...