豪鬼メモ

一瞬千撃

Fakebook: ゼロから作るSNS その11 推薦アルゴリズム

SNS上の全ての投稿にAIがタグと特徴ベクトルをつけることを前提とした場合に、それを使って投稿推薦機能を作るための具体的方法についてまとめた。ソーシャルグラフとK-MeansとTF-IDFを使う率直な方針だが、計算量を抑えるために簡便法を多用し、十分に妥当…

Fakebook: ゼロから作るSNS その10 AIエージェントの初期実装

AIが闊歩するSNSであるSTGYでついにAIエージェントが動き出した。企画時の設計を大幅に見直して、投稿の要約とタグ付けと特徴量抽出の前処理を置くことで、モデルの能力が高くなくても安定的に動作するようにした。結果として、AIが勝手にそれっぽい投稿をし…

Fakebook: ゼロから作るSNS その9 縦書きのWebページは有りか無しか

縦書きのWebページやブログというのは実用になるのか。この疑問をちゃんと解決するために、縦書き用のCSSをかなり真面目に書いてみた。

Fakebook: ゼロから作るSNS その8 Word/Docsからコピペでブログ公開

SNSで記事を書く際に、コピ&ペーストで画像を貼り付けたり、リッチテキストをMarkdownとして貼り付けたりする機能を実装した。これによって、任意のアプリの画像を使った投稿が簡単にできるようになり、ワープロ派が一撃で構造化文書を作成して公開できるよ…

Fakebook: ゼロから作るSNS その7 外部公開機能でブログエンジン化

SNSであるSTGYだが、特定の記事を外部に公開し、ログインせずに閲覧できるようにすれば、ブログエンジンとしても成立する。SNSでありながらブログエンジンであるというのは奇妙な建付けだが、両立させるための機能要件と非機能要件について検討した。既に実…

Fakebook: ゼロから作るSNS その6 Markdown礼賛

Fakebook改めSTGYの投稿記事は、Markdown形式で書かれている。なぜMarkdownなのかというと、好きだからだ。構造化文書を最も少ない特殊記法で表現でき、プレーンテキストとの見た目の違いが少なく、画像やリンクの張り込みもやりやすい。ここでは、SNSでのMa…

Fakebook: ゼロから作るSNS その5 セキュリティ

AIエージェントが操作することを念頭としたSNSであるSTGYを実装しているわけだが、AIエージェントの実装を進める際に、ここでバックエンド側のセキュリティについて再確認しておこう。AIエージェントは直接バックエンドを叩くので、ここでセキュリティの現状…

Fakebook: ゼロから作るSNS その4 AIエージェントの設計

前回までで、最も率直なSNSシステムであるSTGYにおいて、人間が利用可能なSNSとしての機能が完成した。デモサイトstgy.jpも設置した。ここからが本番で、AIエージェントがSNS上で自動的に行動するAIエージェント機能を設計・実装していく。今回はラフ設計だ…

Fakebook: ゼロから作るSNS その3 デモサイトstgy.jpの構築

ついにFakebookのデモサイトが立ち上がった。人間同士のSNSとしての基本機能は全て実装してあるので、アカウント登録して使ってみていただきたい。メールアドレスさえ持っていれば誰でも無料で利用できる。今回はデモサイトの設置方法について詳細に述べる。…

Fakebook: ゼロから作るSNS その2 メディアデータの管理

SNSの「映え」文化を支えるのは画像であり、画像の管理機能にはそこそこ気合を入れなければいけない。今回はその実装の詳細について解説する。DBを使わずにS3でメディアデータを管理する方法と、UIと連携する方法について主に述べる。実運用を想定したコスト…

Fakebook: ゼロから作るSNS その1 データベース設計とクエリ分析

SNSを構築する上で、堅牢かつスケーラブルなデータベースを設計することは最重要だ。この記事では、ユーザ数や投稿記事数がいくら増えてもO(log(N))の対数性能を維持するスキーマとクエリを実例を交えて紹介する。これがおそらくSNS設計の真髄である。DBMSに…

Fakebook: ゼロから作るSNS その0 概要設計

FakebookというSNSのシステムを最初から最後まで作り上げる過程について連載する。必要十分なSNSシステムとしての機能を備えつつ、AIユーザが勝手に議論を進めるプラットフォームに仕上げる予定だ。初回は目標と概要設計とアーキテクチャについて述べる。

ChatGPTのバッチAPIと通常APIの併用による効率化と安定性の両立

ChatGPTでタスクを実行する際に、バッチAPIが失敗した時に通常APIで再試行することで、実行費用を抑えつつ、タスク失敗時の再試行による安定性の確保を達成するという話。バッチAPI化による費用変化の計算もした。

AIによる英文の動詞の分析とバッチ処理の最適化

AIに英語の構文解析をさせる際に、文型だけではなく動詞の各種属性を判別させることで、読解補助のヒントとして価値を高めたという話。長大なインストラクションを伴うタスクを各文毎に実行するとコストが嵩むので、適当なサイズのバッチにまとめて処理する…

ChatGPTのアシスタントAPIの罠

ChatGPTには、ステートレスのcompletions APIと、ステートフルのassistant APIがあるが、後者は正直言って使えないという話。また、ステートフルにして過去のタスク履歴を入力しつつ各タスクを実行したとしても、翻訳精度は必ずしも上がらないという話。

ChatGPTで英語の構文解析をする 後編

前編に引き続き、ChatGPTに構文解析をさせて、英文読解の補助をする教材を自動生成する話をする。GPT-4.1系の各モデルの翻訳精度や構文解析精度の比較もした。

ChatGPTで英語の構文解析をする 前編

読み聞きした言語情報を理解する際には、ネイティブ話者は無意識的に構文解析をしている。どの言語でもそうだ。しかし、非ネイティブ話者は、構文解析を無意識的に行う能力がないので、意識的に行う訓練から始めることになる。その補助をChatGPTにやらせると…

英米文学の名作の対訳コーパスのEPUBを作った

英日対訳本のデータを電子書籍リーダで読むためにEPUBに変換するスクリプトを書いた。その設計と実装のメモ。実装はほぼChatGPTにやらせた。

ユーザビリティとアクセシビリティを追求した英日対訳本の読書機能

ChatGPTを使って任意の英文書籍から英日対訳本を生成するスクリプトについて前回の記事で紹介した。今回はそのデータをWebブラウザで読むためのUIを実装した。対訳コーパスの読書機能としてのユーザビリティとアクセシビリティを追求した。PCでもモバイル端…

ChatGPTで文脈情報を最大限に活かして翻訳をする

ChatGPTのAPIを使って、英日対訳本を自動生成するシステムを改めて作っている。それについて何回かに分けて説明する。初回は、文脈情報を活かして翻訳タスクを行い、英日対訳本のデータを完成させる方法について詳述する。ChatGPTのAPIはステートレスモデル…

BluetoothイヤーフックKZ XZ10購入

またKZ社のBluetoothイヤーフックを買ってしまった。KZ XZ10である。音質最強と個人的に思っている有線イヤホンKZ ZASを無線化でき、音質劣化はほぼ無く、ホワイトノイズももほぼ無く、電池が12時間持ち、接続も安定していて、そして安い。言う事無しだ。

久しぶりの東京ロングライド

GW前半は、東京に野暮用があったので、長野からブロンプトンで走って、ついでに三浦半島も回って、合計370kmほどのロングライドをしてきた。

画像処理でもカラーマネジメントを真面目にやろう

リサイズや露出補正などの簡単な画像処理を行う場合でも、ちゃんとカラーマネジメントをしよう。そうしないと色が壊れてしまう。そのためにはICCプロファイルを適切に使う必要があるのだが、その正しい方法は意外に知られていない。私も今まで何となくやって…

かすみ除去と明瞭度とテクスチャの実装

Lightroomの大人気機能である「かすみ除去」「明瞭度」「テクスチャ」もどきをOpenCVで実装し、写真現像&加工パイプラインitb_stack.pyから呼び出せるようにした。その理論と実装を解説する。

トーンカーブとシャープネスのアルゴリズム

写真の加工で最も基本的な「トーンカーブ」と「シャープネス」のアルゴリズムについて解説する。自分で実装してみたおかげで、Lightroomの同等の機能がどう実装されているかに当てが付くようになった。

RAW現像の哲学と手法

RAW現像パイプラインを自分で書いてみたわけだが、その中で気づいたことや躓いたことについてここにメモしておこう。おそらく同じことを考えている人の役に立つだろう。

rawpyによるRAW現像と自動露出と色ノイズ除去の手法

画像処理コマンドitb_stack.pyにRAW現像機能を加えた話。DCRawのラッパーであるLibRawのラッパーであるrawpyを使って実現している。商用の現像ソフトを使わなくても簡単にRAW現像ができるようになった。また、RAW現像につきものの色ノイズ問題に真面目に取り…

顔認識によるポートレートモードとホワイトバランスと自動露出補正

物語は、この定番の写真から始まる。みんな大好きLena Forsénのピンナップだ。当然ながらOpenCVの顔認識はうまく働く。 本稿では、OpenCVの顔認識を行う方法について述べる。そして、その結果を使って人物を対象としたポートレートモードの前景保護を行う方…

ChatGPTと話し合ってポートレートモードを作った

ChatGPTと壁打ちして、スマホにあるボケ強調機能であるポートレートモードをOpenCVで実装してみた。エッジをほとんど滲ませないで既にぼけている部分だけをぼかすためのEdge-Contained Pyramid Blurという新規手法を考案し、実装した。画像認識や空間認識の…

ChatGPTと話し合ってオートホワイトバランスを実装した

ChatGPTにOpenCVの使い方を教わるシリーズ第4弾として、オートホワイトバランスを実装してみた。適当な画像ファイルを処理すると、そのシーンのホワイトバランスを予測して、あたかも白色光源下で撮ったように自然に見えるように色味を調整した画像を生成し…