トカマクラブで学ぶGemini APIを用いたQAデータベースの自動生成

## はじめに

Gemini APIを使用して、東方のWikiからQAペアを自動生成し、それらをCSVファイルに保存する方法を説明します。

---

こちらの記事もおすすめ

https://hamaruki.com/explanatory-article-on-gemini-embedding-learned-at-the-tokama-club/

https://hamaruki.com/building-a-chatbot-geminowl-that-combines-gemini-api-and-line-bot-api/

https://hamaruki.com/gemini-api_python-quickstart-japanese-version/


## 手順の概要

1. 環境のセットアップ : 必要なライブラリのインストールとAPIキーの設定。 
2. QAペアの生成 : テキストデータからQAペアを生成。 
3. CSVへの保存 : 生成されたQAペアをCSVファイルに保存。 
4. CSVの結合 : 複数のCSVファイルを結合して最終的なQAデータベースを形成。



## コードの解説

### 環境のセットアップ

```python

!pip install -U -q google.generativeai

import textwrap
import numpy as np
import pandas as pd

import google.generativeai as genai
import google.ai.generativelanguage as glm

from google.colab import userdata
```



この部分では、必要なライブラリをインストールし、インポートしています。`google.generativeai`ライブラリはGemini APIを使用するために必要です。

### APIキーの設定

```python

API_KEY=userdata.get('GEMINI_API_KEY')
genai.configure(api_key=API_KEY)
```

Gemini APIを利用するためには、APIキーが必要です。このキーはGoogleのAPIキー管理サービスを通じて取得し、設定します。

### QAペアの生成

```python

import pandas as pd  # pandasライブラリをインポートします。データ操作に便利です！

class QAGenerator:
    def __init__(self, model_name, info_title):
        self.model = genai.GenerativeModel(model_name)  # Gemini APIのモデルを初期化します。
        self.info_title = info_title  # 情報のタイトルを設定します。

    def generate_qa_pairs(self, raw_segment):
        # Gemini APIを使って、与えられたテキストからQAペアを生成します。
        response = self.model.generate_content(f"""

        下記の{self.info_title}の情報からQAを作成してCSVにしてください
        網羅的にQAを作成してください
        情報の取りこぼしがないようにQAを作成してください
        質問の列名はQ、回答の列名はAにしてデータフレームを作成してください
        質問と回答で列を分離して
        処理中にタイムアウトしないで
        文中の「, 」は「、」に変換して

        下記のように1列目に質問、2列目に回答が並ぶように、下記のCSVのフォーマットで出力して
        下記のようにQAのセットは同じ行になるようにして
        列挙する場合は横に「、」区切りで並べて
        「・」で列挙する場合は横に「、」区切りで並べて

        ```
        Q,A
        質問1,回答1
        質問2,回答2
        質問3,回答3

        ...
        ```

        注意：質問と回答のセットが複数行に跨らないようにして。

        段階的に正確に処理を行って


        # {self.info_title}の情報

        {raw_segment}

        """)
        response_text = response.text.strip('`\n')  # レスポンステキストを整形します。
        qa_pairs = [line.split(',') for line in response_text.split('\n')]  # QAペアをリストに変換します。
        return qa_pairs  # 変換したQAペアを返します。

    def save_to_csv(self, qa_pairs, filename):
        df = pd.DataFrame(qa_pairs)  # QAペアをデータフレームに変換します。
        df.to_csv(filename, index=False, encoding='utf-8-sig', header=False)  # CSVファイルに保存します。

    def process_raw_data(self, raw_data_file, output_prefix):
        # 生のテキストデータからQAペアを生成し、CSVに保存するメソッドです。
        with open(raw_data_file, 'r', encoding='utf-8') as file:
            raw_data = file.read()

        raw_data_segments = raw_data.strip().split('\n#')
        print(f"Number of segments: {len(raw_data_segments)}")  # セグメントの数を表示します。

        for i, segment in enumerate(raw_data_segments):
            qa_pairs = self.generate_qa_pairs(segment)  # 各セグメントからQAペアを生成します。
            csv_filename = f'{output_prefix}_{i:05d}.csv'  # CSVファイルの名前を設定します。
            self.save_to_csv(qa_pairs, csv_filename)  # CSVに保存します。
            print(f"CSV file saved at: {csv_filename}")  # 保存したファイル名を表示します。

    def process_specific_segment(self, raw_data_file, segment_index, output_prefix):
        # 生のテキストデータの特定のセグメントからQAペアを生成し、CSVに保存するメソッドです。
        with open(raw_data_file, 'r', encoding='utf-8') as file:
            raw_data = file.read()

        raw_data_segments = raw_data.strip().split('\n#')
        if segment_index < 0 or segment_index >= len(raw_data_segments):
            print(f"Invalid segment index: {segment_index}. Please choose a valid index.")  # 無効なインデックスの場合は警告します。
            return

        segment = raw_data_segments[segment_index]
        qa_pairs = self.generate_qa_pairs(segment)  # 特定のセグメントからQAペアを生成します。
        csv_filename = f'{output_prefix}_{segment_index:05d}.csv'  # CSVファイルの名前を設定します。
        self.save_to_csv(qa_pairs, csv_filename)  # CSVに保存します。
        print(f"Specific segment CSV file saved at: {csv_filename}")  # 保存したファイル名を表示します。

# 使用例
#generator = QAGenerator(model_name='gemini-pro', info_title="火焔猫燐")
generator = QAGenerator(model_name='gemini-pro', info_title="霊烏路空")

#raw_data_file = '/content/Orin_RAW.txtt'  # RAW_DATAが保存されているファイルのパス
raw_data_file = '/content/Oku_RAW.txt'  # RAW_DATAが保存されているファイルのパス

#output_prefix = 'Orin'  # 出力ファイルの接頭辞
output_prefix = 'Oku'  # 出力ファイルの接頭辞

# ここまで、頑張ってくださいね！😉🌟

```



`QAGenerator`クラスは、与えられたテキストデータからQAペアを生成するためのメソッドを持っています。Gemini APIのモデルを使用してQAペアを生成し、これらをリストとして返します。

### CSVへの保存

```python

    def save_to_csv(self, qa_pairs, filename):
        df = pd.DataFrame(qa_pairs)  # QAペアをデータフレームに変換します。
        df.to_csv(filename, index=False, encoding='utf-8-sig', header=False)  # CSVファイルに保存します。

```



このメソッドは、生成されたQAペアをCSVファイルに保存します。これにより、後でデータを簡単に参照できるようになります。

### CSVの結合

```python

import glob  # globモジュールはファイルのパターンマッチングに使用されます
import pandas as pd  # pandasライブラリはデータ操作と分析に便利です

class CSVConcatenator:
    def __init__(self, pattern, output_file):
        self.pattern = pattern  # 検索するCSVファイルのパターン
        self.output_file = output_file  # 結合されたCSVの出力ファイル名

    def find_csv_files(self):
        # globを使用して指定されたパターンにマッチするCSVファイルを検索します
        return glob.glob(self.pattern)

    def read_and_process_csv(self, file):
        # 指定されたCSVファイルを読み込み、処理します
        df = pd.read_csv(file, header=None, skiprows=1)  # ヘッダーなしでCSVを読み込みます
        # 最初の行が列名の行('Q', 'A')であれば削除します
        df = df[~((df[0] == 'Q') & (df[1] == 'A'))]
        # 2列以上のデータがある場合、2列目以降を結合します
        if df.shape[1] > 2:
            df.iloc[:, 1] = df.iloc[:, 1:].apply(lambda x: '、'.join(x.dropna().astype(str)), axis=1)
            df = df.iloc[:, :2]
        return df

    def concatenate_csvs(self, csv_files):
        # 複数のCSVファイルを結合します
        dfs = [self.read_and_process_csv(file) for file in csv_files]
        # pandasのconcatメソッドを使用してデータフレームを結合します
        return pd.concat(dfs, ignore_index=True)

    def process(self):
        # CSVファイルの検索と結合の全プロセスを実行します
        csv_files = self.find_csv_files()  # CSVファイルを検索
        concatenated_df = self.concatenate_csvs(csv_files)  # CSVを結合
        concatenated_df.columns = ['Q', 'A']  # 列名を設定
        concatenated_df.to_csv(self.output_file, index=False, encoding='utf-8-sig')  # CSVファイルに保存
        return concatenated_df  # 結合されたデータフレームを返します

# 使用例
pattern = './*.csv'  # 現在のディレクトリ内のすべてのCSVファイルを検索
output_file = 'final_concatenated_qa.csv'  # 結合されたCSVの出力ファイル名
concatenator = CSVConcatenator(pattern, output_file)  # CSVConcatenatorインスタンスを作成
final_df = concatenator.process()  # 結合プロセスを実行
print(final_df.head())  # 結合されたデータの先頭を表示

```



`CSVConcatenator`クラスは、複数のCSVファイルを1つのファイルに結合する機能を持っています。これにより、複数のデータソースからのQAペアを統合し、一つの大きなデータベースを作成することができます。

### 生成データ

```bash

               Q             A
0      霊烏路空の別名は？        うつほ、お空
1  霊烏路空が登場した作品は？         東方地霊殿
2  霊烏路空のイラストタグは？        うつほ、お空
3   霊烏路空は何をする人物？   核融合を操る程度の人物
4      霊烏路空の種族は？  地獄鴉 with 八咫烏

...

```

## データセットの修正

データの生成に満足しない場合は下記のコードで個別に実行してください。

```python

# 特定のセグメントのみを再度処理する場合
specific_segment_index = 3
generator.process_specific_segment(raw_data_file, specific_segment_index, output_prefix)
```

## まとめ

この記事では、Gemini APIを使用してQAデータベースを自動生成する方法を紹介しました。このプロセスは、テキストデータから有用な情報を引き出し、アクセスしやすい形式で保存するのに役立ちます。特に大量のデータを処理する場合や、迅速な情報抽出が必要な場合に有効です。


## ノートブック

https://colab.research.google.com/drive/1CG0K7saX0vaoMLg9V53ajeWyJoQEdXc8?usp=sharing

## データセットの作成

### お空データセット

```python

#@title お空データセット
%%writefile Oku_RAW.txt

## メタデータ

神々を喰らう核熱（ほのお）の顎門
霊烏路空
れいうじうつほ

東方Projectに登場するキャラクター。初登場は第11弾『東方地霊殿』Stage 6（最終Stage）のボス。イラストタグとしては「うつほ」「お空」のタグも使われる。

pixivで「霊烏路空」のイラストを見る

pixivで「霊烏路空」の小説を読む

pixivで「霊烏路空」のイラストを投稿する

pixivで「霊烏路空」の小説を投稿する

目次[非表示]
1 概要
2 種族
2.1 地獄鴉 with 八咫烏
3 容姿
4 性格
5 能力
5.1 核融合を操る程度の能力
6 スペルカード
7 スキルカード
8 備考
9 二次創作
10 関連イラスト
11 関連イベント
12 関連タグ
12.1 二次創作・イラスト関連
12.2 カップリング・グループ関連
12.3 記事のある二次創作キャラ
12.4 二次創作声優
13 関連ページ
13.1 6面ボスの系譜
「究極の核融合で身も心も幽霊も妖精もフュージョンし尽くすがいい！」

「でも、私は再び灼熱地獄を生み出したいの　地上を溶かし尽くしてね！」

## 概要
種族	妖怪(地獄鴉 with 八咫烏)
登場作品	『地霊殿』6面ボス、『非想天則』自機、『DS』LV8、『秘封ND』悪夢水曜、『グリウサ』弾幕大会、『剛欲異聞』ボスキャラクター
二つ名	熱かい悩む神の火(地・非・口授)、地底の太陽(ダ)
能力	核融合を操る程度の能力
危険度	不明
人間友好度	不明
主な活動場所	旧地獄の灼熱地獄跡（間欠泉センターの最深部）
テーマ曲	霊知の太陽信仰　～ Nuclear Fusion
※ただし危険度や人間友好度等の評価は作中登場人物の稗田阿求による。

親友のお燐（火焔猫燐）と同じく古明地さとりのペット。通称はおくうもしくはお空。
地霊殿に住まい、灼熱地獄跡の温度調節を仕事として平和に暮らしていた。
（ちなみに温度上昇のための燃料はお燐の運んできた死体）

しかし、ある日突然訪問してきた山の神（八坂神奈子と洩矢諏訪子）によりもたらされた八咫烏の力を取り込み、急激に力をつけた。そして、地上を破壊すれば新たな灼熱地獄が生まれると愚かにも考え、異変が起きることとなった。もっとも神奈子たちも侵略の可能性を予感していたようだ。
異変の後は、守矢神社に請われて間欠泉地下センターでも何らかの仕事をしている。

『地霊殿』配布から一年後、『非想天則』にプレイヤーキャラクターとして出演。 多数いる東方のキャラクターの中から『地霊殿』からの早速の出演ということで人気の高さが窺える。

そして旧地獄が舞台となっている『東方剛欲異聞』にもボスとして参戦。核融合炉内の灼熱地獄に入り込んだ不純物を排除する仕事をしていたのだが、プレイアブルキャラ達の事も不純物と勘違いして攻撃を仕掛けてくる。「不純物が喋った！」は中々のパワーワードである。
地霊殿以来、再びボスとして立ちはだかってくるのだが、ステージの灼熱地獄は足場が悪く、画面の両端がダメージゾーンとなっており、非常に戦いにくい。さらにおくう自身は常に空を飛んでいて、スペルカード発動の要である水もあまり出ない為、ゲームに慣れていないプレイヤーにとってかなりの鬼門と化している。

## 種族
地獄鴉 with 八咫烏
元々の種族は「地獄鴉」である。地獄鴉は地獄の闇から生まれ、地獄の亡者の肉を啄む鴉の姿の妖怪である。最近になって旧地獄が廃棄される前から棲んでいた先住民だと確認された。灼熱地獄の高熱に耐えられる他は、これといって特徴は知られていない（求聞口授、つまり里の人間の認識）。しかし実際は鴉の姿で火球状の弾幕を放つ事が出来る（地霊殿6面）。
お空は、そんな地獄鴉の一羽が神の火の力=八咫烏の分霊を宿した存在である。

なお、神をその身に宿すのは普通の人間や妖怪には容易なことではない。無個性で無名ゆえに自我に執着せず、神格を受け入れる包容力と努力が必要となる(空虚であると簡単らしい)。現在のお空の状態はいわば「動く分社」であり、霊夢や依姫の「神降ろし」にも近いものがある。

ちなみに宿主として地獄鴉が選ばれた理由とは核融合炉に旧灼熱地獄跡の高温高圧の環境が必要だった事と、八咫烏を降ろすのに、宿主に自身のことを八咫烏だと思いこませるのが容易であったためだとか。

## 容姿
【立ち絵】霊烏路空地獄の人工太陽

右足は「融合の足」。核融合反応によって最終的に作られる「鉄」をイメージさせる形状（あるいは、通称「象の足」、チェルノブイリに在るウランやプルトニウムを含んだ溶岩状の固形物。ただし、核融合と核分裂は別物である。）
左足は「分解の足」。電子が絡みついている。
右腕は「第三の足」。多角柱の制御棒。
胸は「赤の目」。大きな真紅の目が胸から飛び出している
（ZUNの設定を渡された非想天則ドット絵担当者の所感では、融合の足・第三の足・赤の目を取り外す事ができるそうだ）

これらは八咫烏の影響により姿が変わった結果で、元からこの姿ではないらしい。
ファンタジー（幻想）というよりサイエンスフィクション（空想科学）的。

服装は白のブラウスに緑のスカート。癖毛気味な長い黒髪に緑の大きなリボンをつけている。
鴉らしい真っ黒な翼には、上から白いマントをかけており、そのマントの内側には宇宙空間が映し出されている（地球の核を包み込むマントル：mantleと、空という核を包むマント：mantle、そして太陽という核を包み込む宇宙の三つを掛けているものと思われる）。

身長はとても高い。『非想天則』のドット絵では立ちポーズの違いによる誤差はあれど、小野塚小町や八雲紫より高い。
また、『東方外來韋編』2018年秋号の「独断&偏見ランキング」特集においてチルノが「さいきょう度」ランキングをつけているが、小町が「武器がでかい」と評価されているのに対して、空は「でかい」とのみコメントされていることから、やはり大柄な体格なのは間違いないようである（なお、ランキング内では博麗霊夢・霧雨魔理沙ら主人公勢に次ぐ第三位の評価である）。

東方キャラの中でもかなり複雑で独特な構造をしており、絵描き殺しなどと呼ばれた。ZUN本人もインタビューで構想に苦労したと発言した事がある。

二次創作ではデザインの面から右足の「融合の足」が省かれていたり、甲冑になっていたりする。また後述の二次創作における「第三の足」の扱いから「第三の足」が機械的な砲身になっていることもよくある。

Utsuho Fumo Touhou 17.5 version

東方剛欲異聞での衣装は地霊殿と同じだが、細部が異なる。
袖とスカートにベルトが追加され(TOKIAME氏のデザインによくある)、ブラウスの裾のフリルが無くなり前開きが大きくなった。スカートは一部分が開いており、下の黒いペチコートが見えている。
白くラインの入った靴下を履いているが、実は左右で長さが違う(左足が長く、右足が短い)。

## 性格
素直で真面目なお調子者。他人の言うことを容易に信じ、偶然手に入れた八咫烏の力に疑問も持たず有頂天になるなど、全体的に純粋で子供じみた所がある。
お空【ワンドロ】

さらに鳥頭とまで呼ばれる記憶力の弱さがそれに拍車をかけている。（ただし鳥頭の鳥はカラスではなくニワトリ）
ただし、神奈子のことは忘れていた一方で、重要な事柄（主であるさとりや親友のお燐の事など）は決して忘れない。また「異物発見」「炉心の温度低下に注意」など意外に難解な言葉を話していたりもする。

また、神主が
「強い力でも馬鹿に持たせれば悪用すら出来ないって事がよく判ります。ああ、夢のエネルギーなのに。」
（Music roomより）
と公式で馬鹿扱いしているが、天然ボケというニュアンスではない。
活用は世の為に、悪用は私欲の為に使う事である。「悪用すら出来ない」とはすなわち、無計画で誰にとっても破滅しかもたらさず、ただ無益な様を皮肉にしている。

『非想天則』にて「新聞とか殆ど読んだことないや」と発言しているが、「全く読んだことがない」とは言っていない辺り、文盲ではなく、地底の環境が新聞を読むのに適してないか、単に興味がないだけという可能性が高い。

## 能力
核融合を操る程度の能力
「サブタレイニアンサン」

太陽神の能力である。「八咫烏」は太陽神「天照大神」の使神であることから、太陽の使い・太陽の化身と云われる。

核融合とは、水素などの軽い原子同士を融合させ、より重い原子と膨大なエネルギーを発生させる反応のことである。現在の原子力発電などに用いられている核分裂とは違い、
・核廃棄物がでない。
・プルトニウムなどのレアメタルを使う必要がない。
・制御が容易で暴走しにくい。
・核分裂より効率がよく、より多くのエネルギーが生成できる。
などの利点がある。
もっとも身近なもので実用化されているのが水爆こと「水素爆弾」。自然物などでは「太陽」などが有名である。ただし、核分裂に比べて反応に必要な温度・圧力が高いために技術的ハードルが高く、水素爆弾は現在の所は原子爆弾で起爆する必要があり、核融合炉は高温高圧の反応プラズマを封じ込める技術開発が困難を極めている。そのため、現在ではまさに夢（幻想）の技術である。

お空はそれらを一人で行うことができる。ある意味もっとも危険な能力の持ち主なのだ。


## 制御棒
それは紛れもなく

本来、制御棒は能力の核融合を安定して制御するための冷却装置のようなもので、実際の核融合は左手でする描写が原作ではなされていた。しかし、『非想天則』では爆符「ギガフレア」などをこの制御棒の先から発射しており、強ち間違いでもなくなった。

二次創作ではエネルギーを打ち出す「砲門」が制御棒の先に描かれている場合があるが、『非想天則』のドット絵では何もないただの棒のように描写されている（手間を省いているだけ説も）。

## スペルカード
東方地霊殿
　核熱「ニュークリアフュージョン」
　核熱「ニュークリアエクスカーション」
　核熱「核反応制御不能」
　爆符「プチフレア」
　爆符「メガフレア」
　爆符「ギガフレア」
　爆符「ペタフレア」
　焔星「フィクストスター」
　焔星「プラネタリーレボリューション」
　焔星「十凶星」
　「地獄極楽メルトダウン」
　「ヘルズトカマク」
　「地獄の人工太陽」
　「サブタレイニアンサン」

東方非想天則
　「地獄の人工太陽」
　制御「セルフトカマク」

　遮光「核熱バイザー」
　爆符「メガフレア」
　焔星「フィクストスター」
　核符「クリーピングサン」
　光熱「ハイテンションブレード」
　焔星「十凶星」
　地熱「核ブレイズゲイザー」
　鴉符「八咫烏ダイブ」
　核熱「核反応制御不能ダイブ」
　「サブタレイニアンサン」
　爆符「ギガフレア」
　「アビスノヴァ」

東方非想天則ストーリーモード
　熱符「ブレイクプロミネンス」
　核熱「核反応制御不能ダイブ」
　「ホットジュピター落下モデル」
　核熱「人工太陽の黒点」

ダブルスポイラー
　熔解「メルティングホワイト」
　巨星「レッドジャイアント」
　星符「巨星墜つ」
　七星「セプテントリオン」

秘封ナイトメアダイアリー
＊お空はいずれのスペルでも、撮影で消せない巨大核弾を自機めがけて撃ってくる。
地霊符「マインドステラスチール」 (With さとり)
地妖符「式神大星」　(With 藍)
地霊符「マインドステラリリーフ」 (With こいし)

東方剛欲異聞
獄炎「インフェルノバーナー」
獄光「ディヒューズヘルファイア」
「太陽を盗んだ鴉」
獄炎「マグマティックフォール」(本編には登場せず、名前のみデータに存在する)

## スキルカード
東方非想天則
　236＋B or C系
　　グラウンドメルト
　　ヘルゲイザー
　　レイディアントブレード
　623＋B or C系
　　フレアアップ
　　ロケットダイブ
　　メルティング浴びせ蹴り
　214＋B or C系
　　シューティングスター
　　レトロ原子核モデル
　　核熱の怨霊
　22＋B or C系
　　ブレイクサン
　　シューティングサン
　　地獄波動砲

## 備考
名前は、霊「鳥（とり）」路空ではなく、霊「烏（からす）」路空なので注意。
初出での表記は「おくう」だが、後発の『ダブルスポイラー』では「お空」の表記も見られる。一時期、「お空」表記は間違いで「おくう」が正しいのではないかと主張するファンがいたが、『ダブルスポイラー』で「お空」表記が認められ、現在のようになった。
二つ名の「熱かい悩む神の火」の熱（あつ）かいとは扱ふの元になった言葉。すなわち扱い悩む神の火＝核のことである。

## 二次創作
あだ名
原作のおまけテキストにあるエキストラストーリー中で「うにゅ？」と発言した（後述）ことから「うにゅほ」、通称の「お空」とチルノの「⑨」を合わせて「お⑨」と呼ばれることもある。

馬鹿
うつほのえにっき（れいたいさいおつかれさまばーじょん）

子供っぽい性格や、鳥頭、神主に「馬鹿」と呼ばれたことが拡大解釈されて生まれた設定。
ただ、先述の通り鳥頭はそこまで酷くはなく、馬鹿というのもニュアンスが違うので、以下の内容は二次設定。
ぷちふれあ！

性格は完全に子供であり、素直で純粋で騙されやすい。「うにゅ？」という言葉を連呼している。また鳥頭の拡大解釈の結果として、思考力の低下も見受けられる。
その上で容姿は十代後半の女性か二十代以上の成人女性で描かれることが多い残念な美人。
（ただし『非想天則』の描写は二次より酷いと言われるほどであった。「あ、巫女だ　巫女の区別が付かないよ」 「まだまだ暴れ足りないよ！　私の中の核反応がもっと暴れろと言っているわ！」など）

うにゅぱい
センシティブな作品

原作では大きな赤眼に大方占領された平らな胸部だが、二次創作イラストなどでは巨乳であることが多い。理由は諸説あれど、何らかの形で八の字を有するキャラクター（紫、聖など）の慣例に則ってそうなった可能性が高い。その際の邪魔になった赤眼の扱いについてはうにゅぱい参照。

卵が好物
うにゅっほー

エキストラストーリーにて、自身の力で噴出した間欠泉で茹でた温泉卵を頬張っていたことから生まれた二次設定。上記の「うにゅ？」は、この食事中に唐突に声をかけられて発した言葉である。
実際に烏は他の種類の鳥を襲って捕食する他、巣を攻撃して卵を食べてしまうことも珍しくないため、地獄鴉である空が卵好きであっても何らおかしくはない。
ちなみに一緒にいたお燐も霊夢らと会話しながら卵を食べているのだが、「お燐も卵好き」という二次設定にまで発展することはなかったようである。

ニーソ
かうちおん

理由は定かではないが、二次創作ではニーソをはいていることもある。
スカートキャラ（文やはたて）がニーソをはいて描かれていることがあるので、「ミニスカート=ニーソをはかせてみよう」という流れによるものだと思われる。彼女は背が高い設定なので、スラりと伸びた脚にニーソがとても美しく見える。

高身長（長身お空）
うつほ

前述されているように、東方キャラの中でも屈指の高身長キャラであり、何故かギネス記録級の2m以上の身長で描かれているイラストも見受けられる。

動物形態
「おなかすいたよ」

原作で猫の姿があるお燐と違い原作では動物形態は公開されていないが、お燐同様に動物のカラスの姿を取れる設定やカラスの姿のお空が描かれることもある。容姿も様々で、普通のカラスからおキューちゃんのようなデフォルメされた姿まで様々である。
因みにMuseDashにてゲスト出演した際はこの姿で登場していた。

## 外部作品ネタ
右腕についている制御棒のデザインや位置が某有名ロボット戦士の主武装に似ていたため、発売以前はそれで騒がれていたこともある。
ゴジ空

核の力と言う共通点からか、二次創作でゴジラとのコラボ・カップリングネタが描かれることがある。ちなみに東方鬼形獣タグの最古イラストはこのネタである(上記イラスト)。

なお、彼女の扱う核融合は一見するとファンタジーとは程遠いように思われるが、実の所ファンタジー作品でも核融合関連のスキルは該当例が多い。
例えば現在のRPGの祖の一つ『ウィザードリィ』シリーズには「ティルトウェイト」という呪文があったり、「ファイナルファンタジー」シリーズでは「フレア」という呪文があり、後者が空のスペルカードの元ネタという説がある。
『ペルソナ』シリーズにおいては核熱系として「フレイ」系が登場し、『P5』では空の元ネタであるヤタガラスに習得させる事もできる(デフォルトでは覚えない)。
```

### お燐データセット

```python

#@title お燐データセット
%%writefile Orin_RAW.txt
## メタデータ

火焔猫燐単語
カエンビョウリン
3.9千文字の記事
21
53800pt
ほめる
ニコニ広告する
700ptごとに
最大全額還元
掲示板へ
twitter
記事編集

概要容姿性格能力スペルカード地霊殿本編での動き二次創作における設定その他関連動画関連静画お絵カキコ関連商品関連コミュニティ関連項目掲示板
おりんりん

火焔猫燐（かえんびょう りん）とは、ZUN（上海アリス幻樂団）制作の弾幕STG「東方Project」作品内に登場するキャラクター。愛称は「お燐」。

東方Project第11弾「東方地霊殿　～ Subterranean Animism.」のStage4,5,6の中ボスおよびStage5のボス。
及び、同第12.5弾「ダブルスポイラー　～ 東方文花帖」LV8の被写体。

→東方Projectの登場キャラクター

## 概要
種族：火車
能力：死体を持ち去る程度の能力
二つ名：地獄の輪禍（地）、死体ツアーコンダクター（DS）、背信棄義の死猫（茨）
テーマ曲：死体旅行　～ Be of good cheer!

おりんりん通称、お燐（本人は長い名前が嫌いで、誰にでも「お燐」と呼ばせている）。
古明地さとりのペットの一人である。

怨霊や死体と会話する能力を持っており、主人である古明地さとりの右腕として灼熱地獄跡で怨霊の管理を任されている。

元々は地底（旧地獄）から出てくる事は無かったのだが、東方地霊殿における間欠泉の異変以降は地上にも積極的に出てきているようだ。

妖怪『火車』であり、また本人も死体が好きな為、人里のお葬式や野晒しの死体を見つけては死体を持って行こうとする。
…というか実際持って行くので迷惑がられている。死神にとっては商売敵。
しかし、埋葬されてしまった死体には興味が無いようだ。

猫の姿でも人間の姿でも登場するが、本人曰く猫の姿の方が楽らしい。だが本気モードは人間の姿である様子（本人曰く会話が成り立たない）。Stage4の最初などの登場時に、「にゃーん！」と鳴いて出てくる。

おくう（霊烏路空）とはさとりに飼われ始めた当初からの親友。

黒猫というあたりが誰かと被っている気がしないでもない。

東方地霊殿のゲーム本編では、Stage5の道中が難しい事もあって倒すのが難しいボス。
そのあまりの難易度に「ラスボスより強い」「5ボス最強」と言う人も居る（→おりんりんランド）。

## 容姿
人間形態は黒のゴスロリっぽい服に身を包み、赤毛を二束の三つ編みにしている。
耳はネコ耳であるが、何故か同時に人の耳も存在する。

尻尾は人間形態になると無くなるようだが、あった方が可愛いとして二次創作では描かれている事も多い。
と、思いきや「東方心綺楼」の背景（地霊殿ステージ等に登場）では2本の黒い尻尾が生えているのが確認できる。
なお、この際にノリの良さそうな腕振りダンスを見せている。
このダンスはファンの間では「おりんりんダンス」と呼ばれているようだ。可愛い。

おりんりんダンスをよく見てみたい人は、下の動画を観てみよう。



手には大きな猫車を持っている。地霊殿本編では片手で持っているので大きな刃物と勘違いした人も居たようだ。

また、彼女の周りに漂っているのは怨霊の人魂である。…恐ろしい。
獣形態の時は体の所々が赤い黒猫の姿をしている。

『東方求聞口授』内の「文々。新聞」の記事では普段より更にゴスロリっぽい服を着ていた。
案外オシャレさんのようである。ゴスっぽい服が趣味なのだろうか。

## 性格
性格は明るくて単純で、裏表がない。
いつでもどこでも誰にでも気さくに話しかける（たとえ異変時でも）。

異変のような非常時でも明るく気さくに話す為、ともすれば何を考えているのか解り難くもある。
が、裏表は無いらしいので単に本人の性格なのだろう。

主人である古明地さとりを慕っており、同じく彼女を慕う霊烏路空などの他のペットとの仲間意識も強い。
実際、東方地霊殿における異変では、親友の霊烏路空を救う為に奔走したりとかなり情に篤い。

死体や霊と話す事が好きで、特に明日の予定など脳天気な事を話す死者がお気に入り。

また、生きている人間に興味は無く、基本的に自分から人間を襲う事もしないようだ。
コレは「妖怪に殺された死体や霊の会話が面白くない」事が理由らしい。
荒くれ者の多い地底妖怪の中では珍しく、人間でも比較的付き合い易い妖怪と言える。

間欠泉の異変以降は博麗神社によく顔を出しており、博麗霊夢と仲が良い妖怪の一人。

命蓮寺に入門しようとした事があるが、動機が「お寺はお墓がいっぱいあって死体天国だから」だったので断られている（埋葬された死体を持って行く事は無いようなので、単に死体の側に居たかったのかもしれない）。

また、命蓮寺に請われて墓を彷徨うキョンシーの宮古芳香の通訳、操作をした際には報酬として死体を貰っていた。

## 能力
死体を持ち去る程度の能力
文字通りの能力である、というか能力ではなく単なる技術である。
死体を素早く猫車に乗せて持ち去る技術で、成功率は高い。

東方における「～程度の能力」は本人による自己申告制である。
他の能力を申告せずにコレを挙げる辺り、お燐の死体に対するこだわりが伺える。

怨霊や死体を操る能力
彼女固有の特殊な能力である。むしろこっちがメイン。

怨霊や死体を自在に操る事が出来る。
また、幽霊や怨霊、死体と会話する事も可能である。

怨霊はそれ単体では大した力を持たないのだが、
『妖怪は怨霊に取り憑かれると死ぬ』ので、彼女の能力は妖怪にとっては非常に恐ろしいモノである。
（精神的な存在である妖怪は、怨霊に取り憑かれると自身を乗っ取られてしまい死に至る）

また、死体を操る事も可能である。
霍青娥のキョンシーである宮古芳香を操ってみせたりと、汎用性は高いようだ。
恐らく怨霊を取り憑かせたり、死体に直接呼びかける事で死体を操作しているのだろう。

その他の能力
妖怪『火車』だけあって炎を出す事も容易なようだ。ゲーム本編でも大きな炎の帯を飛ばしてくる。

また、弾幕ごっこを行う際は、ノリの良い妖精にゾンビごっこをさせて弾幕を撃たせる事もある（ゾンビフェアリー）。

古明地さとりのペットに共通する特徴として、怨霊や妖怪を飲み込んで強くなるという能力がある。
お燐も自身の力は怨霊や魑魅魍魎を食べ続けた上の努力で身に着けたモノらしく、本編の会話でもそれを誇っていた。

## スペルカード
東方地霊殿
猫符「キャッツウォーク」(E/N)
猫符「怨霊猫乱歩」(H/L)
呪精「ゾンビフェアリー」(E/N)
呪精「怨霊憑依妖精」(H/L)
恨霊「スプリーンイーター」(E/N)
屍霊「食人怨霊」(H/L)
贖罪「旧地獄の針山」(E/N)
贖罪「昔時の針と痛がる怨霊」(H/L)
「死灰復燃」(E/N)
「小悪霊復活せし」(H/L)
妖怪「火焔の車輪」(E/N/H/L)
ダブルスポイラー
死符「ゴーストタウン」(Scene3)
「死体繁華街」(Scene5)
酔歩「キャットランダムウォーク」(Scene7)


## 地霊殿本編での動き

ある日、お燐は灼熱地獄跡の火力がいつもより強い事に気づき、お空の所へ行く。
そこには、とてつもない力（神の力）を手に入れていたお空の姿があった。
しかも調子に乗った空は地上の侵略まで企てていた。
お燐は、

「この異常事態を主人であるさとりや旧地獄の鬼達に知られてしまったら、お空は始末されてしまうのでは無いか」

と恐れ、これを食い止める為に間欠泉に怨霊を混ぜ、地上の者に異変を知らせようとした。
（もっとも、さとり自身はお空を始末するつもりなど全く無かったのだが）

お燐は妖怪達が来るのを期待していたのだが、何故か来たのは地上の人間。
しかしその人間は思いの外強く、妖怪退治の専門家であるという。

ならば増長したお空を懲らしめる事も出来るのでは無いかと期待し、道を譲った。

しかし、お空を止めて欲しかったにも関わらず、何故か敗れた後もこちらに勝負を挑んでくる。
……まあ、動機こそ本気でも戦闘自体は所詮弾幕ごっこなので、細かい事は気にしないようにしよう。

## 二次創作における設定

上記のように、お空とは親友同士という設定なので、彼女とセットになって登場する事が大半である。
ギャグ作品ではお空の鳥頭に振り回される事が多い他、突っ込み役が鉄板となっている。
特に「東方M-1ぐらんぷり」での迷コンビ振りは必見である。

ゲーム本編の会話では終始明るい口調なのだが、
友人を心配して異変を起こした経緯からか、口調も苦労人として描かれる事が多いようだ。

博麗神社によく顔を出し、博麗霊夢とも親しい妖怪の筈なのだが、彼女と絡む二次創作はまだ少ない。

また、同じ猫又繋がりで橙と絡む事も多い。

## その他
火車
火車（カシャ）とは過去に犯罪を犯した後に死んだ人間の亡骸を持ち去る妖怪であると言われる。年老いた猫がこの妖怪になるという説や、猫又の正体であるなど、地方によって様々な言い伝えがある。
お燐は灼熱地獄の火力を調節するために死体を集めている。
名前の意味
本名である火焔猫燐の「燐」は非金属元素の一つ「燐」からか。動物の骨の中に含まれ、空気中で自然に黄白色の光を発する。マッチの原料も燐の同素体である。
なお、二つ名の「地獄の輪禍」の輪禍とは、自動車や電車などに轢かれたり、はねられたりする災難のことで、燐火（墓地などで見る人魂）と掛けている。
猫車
彼女が持っているものは猫車（手押し車）で、車輪が一つのものを俗に「猫車」又は「一輪車」と呼ぶ。工事現場でよく見ることができるが、もちろん資材を運ぶものであって死体を運ぶものではない。
お燐のものは「お燐の猫車」と呼ばれ、おそらくこの世で一番死体を乗せている手押し車である。
```


## 参考サイト

https://dic.pixiv.net/a/%E9%9C%8A%E7%83%8F%E8%B7%AF%E7%A9%BA

https://dic.pixiv.net/a/%E7%81%AB%E7%84%94%E7%8C%AB%E7%87%90

https://colab.research.google.com/github/google/generative-ai-docs/blob/main/site/en/examples/doc_search_emb.ipynb

https://github.com/google/generative-ai-docs/blob/main/site/en/examples/doc_search_emb.ipynb