AIの波に乗る為にアイデアを考えて、検討して、挫折するまでの経緯


# 1．概要

## 1-1．はじめに
　タイトルにもある通り、失敗談となる。
　右も左も分からないなりに4か月ほど進めてみた結果、頓挫となったアイデアについて、一部始終を思い出せるだけ書いてみることにした。
　備忘録を残すことで、次に似たようなことをする際に参考になればよいと思ったのと、アイデア供養のつもりである。

## 1-2．背景
　AIの時代と呼ばれてから久しい。
　波に乗り遅れているのは重々承知ではあったのだが、それでも、ITに携わっているものとしては、どこかのタイミングで知っておきたかった。
「AIに仕事を取られる」「シンギュラリティ以降、文化文明が変わる」予言を出す本は数多くあったし、
　現に「AIのべりすと」をはじめ、人工知能を用いた有益なサービスは形となっているし、
　そもそもGoogleやAmazon、Youtubeといった誰もが使っているサービスにはAIが関与している。
　どういったメカニズムか、どれだけ発展しているのか、向き不向きはどんなものか、敷居はどれだけ高いのか。自分が思い描いている人工知能は、実態とどれくらい離れているのか。
　初歩的な情報も含めて、何一つ分かっていないとなると、流石に不安になった。
　いずれか何らかの形で携わることもあるかもしれない。
　ネットで調べてみたり、入門書を読んでみたりしたのだが、どうせ勉強するなら、何らかを形にしてみた方が体系的に学べるのではないかと思った。
　~~また、ひょっとしたら凄いビジネスを生み出せるかもしれないと思い上がってもいた。~~

　AIには多くの利用分野があるが、とりわけ関心を持ったのが自然言語処理（NLP）だった。
　実行結果がはっきり出てくる（めちゃくちゃな文章が出てくるにしても、それはそれで面白そう）し、翻訳や要約、文の自動作成が出来るのは魅力的である。
　例えばQiitaの記事を書くのに何時間もかけずに済むかもしれないし、そうなると記事を書く際のハードルも下がっていくのではないか。

　技術検証のために、今度は噛み合いそうなアイデアを考えてみた。
　これは前々から何となく浮かべていた案があったため、少しブラッシュアップした。

## 1-3．考えていたアイデアについて、仕組み

　Twitterを始めとした各種SNSには、世界中の人々が文章の投稿を行っており、話題となっている内容については、短期間に数多くの投稿が行われている。
　上記の性質とNLPを組み合わせることで、以下の機能が実現できないかを考えた。
　・投稿情報を分析することで、多くの人が関心を寄せている事柄を速やかに告知
　・海外の投稿についても日本語に翻訳することで世界中のニュースを疑似的に作成

【イメージ図】
![機能の仕組み.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2352782/b9fedb96-6d0a-4867-9138-9f0393112fbf.jpeg)

　ツイート情報の取得方法次第では、住所以外にも、年齢、性別などで要約することが可能。需要の変化に対して、素早く対応を行うことが出来る。
　提供するのは大量のツイートを要約した情報となるため、一個人の操作で意図的に歪められる可能性は低いと判断した。

　情報取得のAPI、データサーバの利用で発生する料金については、
　海外のニュースを見られたり、場所を細かく指定出来るようオプションを有料で付けてみて、その収益を運営資金を充てられないか……といった公算であった。


# 2．4か月の経緯
　思い出せる限り、箇条書きで記載。
　また、当検証作業は**平日業務（フルタイム）の終業後、休日の隙間時間を用いて実施した**為、
　時期によって作業量が増減している。（平均すると、13～14時間/月）

## 2-1．序盤

　・似たようなことが既にされていないか、競合を調べてみる。確認した限りでは出てこなかった（ただ単に検索ワードがズレていただけかもしれないが）
　・開発環境の構築を行う。過去にスクレイピング（[半日で出来る！Python導入～スクレイピング処理](https://qiita.com/Anest_Doi/items/9cf344b13cd173af2ce1)）の機能検証をしていた都合で大半の作業は実施済みだった為、AIに関係のありそうなライブラリをインポートする程度
　・各機能を構成する提供APIに触れてみる。どう呼び出すかを確認。（1件ではあるが）結果が返却される点までを確認
　・当アイデアの実現に最適な自然言語処理のモデル（GPT-2/BERT）を調べる

## 2-2．中盤

　・元々はAIモデルを手作成する想定であったが、Huggingfaceを利用することで既に学習済みのAIモデルが利用できることを知る
　・より性能が高く、個人利用が出来るAIモデルを探す（当初の目的と乖離し始める）
　・実現における問題点（「3．敗因分析」を参照）が出たため、解消するための方法を探す
　・一部のライブラリがバージョンの都合か入らず、GoogleColaboratoryも加えて利用する
　・そもそもこの案では上手くいかないのではと思い始め、要約対象の範囲を限定するなどで実現出来ないかを考える

## 2-3．終盤

　・（本来の仕事の稼働が高まったのもあって）コーディング、検証作業から、調査一辺倒になる
　・現実と理想とのギャップが日に日に深まる
　・問題点解消の為、感情分析、日本語解析用のライブラリを調べる
　・収拾がつけられなくなっていくのをはっきりと自覚する
　・どうやっても無理そうだと思うが、今までにかけてきた時間などもあって諦めきれない
　・上長に当アイデアの内容、現状を報告、様々な指摘や課題を頂く
　・AIを研究している企業・団体のサイトを確認する。物凄い競合を見つけてしまい、心が折れる

## 2-4．【参考】確認していたサイト
　・[【2022年最新】これは使える！種類別アプリAPI一覧](https://engineer-style.jp/articles/1675)
　・[フリーで使える日本語の主な大規模言語モデルまとめ](https://zenn.dev/hellorusk/articles/ddee520a5e4318)
　・[【日本語モデル付き】2021年に自然言語処理をする人にお勧めしたい事前学習済みモデル](https://qiita.com/sonoisa/items/a9af64ff641f0bbfed44)
　・[T5? BERTSUM? 最近の要約言語モデルってどうなってるの？　最新言語モデルを比較してみた](https://www.cyberowl.co.jp/blog/technology/1236#3r5izdmv)
　・[Huggingface Transformers 入門 (1) - 事始め](https://note.com/npaka/n/n5bb043191cc9)

# 3．敗因分析

　技術的要因と、心理的要因の2つがある。

## 3-1．難航したところ（技術的要因）

　実行時間（性能）や必要経費といった、実稼働における問題以前の話。


　**１．ノイズとなるデータの扱い**
　　①絵文字、リプライ、URL（画像）リンクなど
	　　　絵文字については文字コード指定で除外出来るか、リプライなどは属性などを取得することで区別できないかを検討していた。
	　　　方針が決まる前に頓挫となったが、これらは探せば見つかる気もする。

　　②よくよく考えれば当たり前の話なのだが、SNSの投稿がすべてニュースに直結する内容とは限らない。
　　　むしろ大半が「つかれた」や「あああああ」、「テスト終わった」などの属人的なツイートであるわけで、こちらを抽出対象から外しておく必要がある。
　　　ただテストはテストでも「大学入試共通テスト（旧：センター試験）」といったニュースとすべきものも存在し、両者を区別するには……などと考え、ハッシュタグの重要性を今更ながら実感。

　**２．カテゴリのふるい分け**
　　話題の映画、政治の動向、本日のスポーツから痛ましい事故まで、SNSでは同じ時間の中で複数の話題が出てくる。
　　これらをすべて一つに混ぜて要約するわけにもいかない為、各ジャンルに分類したうえでそれぞれに要約をかける必要がある。
　　そうすると分類の基準をどのようにするかといった問題が出てくる。
　　各ジャンルのリスト（スポーツだったら「野球」「サッカー」など）を作成し、投稿文にリスト内の文字列が含まれていたらジャンル分けするといった対策も考えたが、
　　どこまでジャンルを増やせばいいのか、リストの内容はどこまで細かく整備するかといった考慮が必要になる。

　**３．ヘイトスピーチ対策**
　　AIを利用したサービスには「ヘイトスピーチ、扇動、差別発言」の壁がある。
　　思考の基となるコーパスが「人々のやりとり」である以上、中には過激な発言なども含まれているし、
　　そもそもAIには「炎上してはいけない理由」はおろか、「炎上」がどういう状態なのかも理解していない。

　　お手軽に出来そうな対策として、感情分析による「ポジティブ」「ネガティブ」によるふるいわけが役に立つかを検証した。
　　暴言は大体ネガティブなはずなので、炎上に繋がるような情報を抑止しようという狙いだった。
　　結果としては、直接的な発言であれば検知できるが、少しでも婉曲な言い回しになると怪しくなる。

**fugashi(辞書は「ipadic」)を利用した日本語の感情分析の結果**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2352782/17b5ad25-70c8-5cff-513c-09c559e0365b.png)

## 3-2．同じ轍を踏まないために（心理的要因）

　元々はAIを知りたい、学びたいというスタンスからアイデアを作ったわけだが、
　技術先行によるアイデアには以下のような欠点があった。

　**１．技術的に実現が可能であることと、実際に作れるかは別の話である**
　　AIには可能性が満ちている。
　　多くの分野に利用が可能で、膨大な作業量を僅かな時間でこなす。ちゃんとした学習が出来れば、何でも自動化してくれそうに見える……
　　というのもあって、アイデアを出す際には「技術的に実現が可能か」だけを考え、実際に着手する際の課題などは深く検証しなかった。
　「学習のさせ方次第でどうとでもなる」という先入観もあったし、壁に当たっても、より高性能のAIが提供されれば自然解消するかもしれないといった期待もあった。

　　結果としては、タイトルの通り。素人が継ぎはぎの情報でどうにかできるような代物ではなかった。
　　ライブラリや開発環境が豊富に提供されている為、他の専門分野よりかはチャンスはありそうだが、それでも「どうとでもなる」域に達するのは難しい。
　　可能性がある分、諦めがつくのに時間がかかった。

　**２．完成形のイメージ**
　　途中からは迷走ばかりしていたが、原因の一つとしてはゴールが明確になっておらず、机上（頭の中）のみで物事を進めようとしたことが挙げられる。
　　前述した通り、機能ごとにライブラリは充実しており、探せば探すほど魅力的に見えるものが出てくる。
　　それ自体は喜ばしいことなのだが、闇雲に情報を取り入れていくと、どんどん収拾がつかなくなっていく。
　　本筋から離れたところも気になりだし、どういうモノを作成したいのかが分からなくなってしまった。
　　完成形となる画面（モック）を実際に作ってみるだけでも、随分変わったのではないかと思われる。

　**３．これを欲しがる人はいるのか？**
　　そもそもの話、需要があるかどうかが分からなかった。
　　社内の業務を自動化するといったモノとは違い、このアイデアには実現したことによる明確な利点が欠けていた。
　　ある程度整った文章になれば「面白い」とは感じられるだろうが、それ以上にはならない。
　　無料であれば興味本位で見る人もいるかもしれないが、有料でも使うかは疑わしい。
　　ちゃんとしたニュースを知りたければ、テレビなり新聞なりニュースサイトを見ればいいのだから。

# 4．まとめ

　結果は実らなかったものの、得られたものもあったので、まるきり無駄ではなかったと思っている。
　AIに関する知識が手に入ったことは勿論だが、痛い目を通じて、以下の教訓を得ることが出来た。

　・誰もやっていない事に挑戦する前には、どうしてやっていないのかを考えてみる
　・無茶なアイデアを考えつくこと自体は必ずしも問題ではない（今回は組み合わせ、使い方が悪かった）
　・事前準備をやり過ぎて動けなくなるのもダメだが、やらなさ過ぎるのもやっぱりダメ
　・上を見ると心が折れる
　・どこかで踏ん切りをつけること。AIもライブラリも進歩し続けると思われるが、そのたびにアップデートしてたらモノは作れない
　・学習済みモデルなども含め、数多くのリソースが提供されており、素人でもそれっぽい物を作ることは出来そう（一人で楽しむ分には）