ここでは個人及びチームで開発した製作物や研究成果に関する情報を見ることが出来ます.
3Dキャラクターと話がしたいという思いで開発したエージェント型対話システムです.
UI部分はUnityというゲームエンジンをC#で制御し,バックエンドはPythonを用いた機械学習モデルによる応答生成を行っています.
Unityに触れるのは今回が初めてで,UIとしては単純ですが,応答生成性能に関してはかなり性能が高いと思っています.
【作業期間】2022年7月~2022年8月
【人数】1人
【開発言語・技術】Python,Pytorch,Fairseq,Unity,C#
【参考URL】
https://youtu.be/SapiNqqoESo
【概要】
3Dキャラクターとテキストチャットができる対話システム.
【きっかけ】
3Dキャラクターと話がしたい,という思いで開発を始めました.
【アピールポイント】
UI部分をUnityというゲームエンジンをC#で制御することで開発し,サーバーサイドでは機械学習モデルによってユーザの発言への応答を自動生成することで,3Dキャラクターとの対話を実現しました.
サーバーサイドでは,Fairseqという機械学習モデル(Transformer)の学習・検証用のツールを用いて,ツイートからそれに対するリプライを予測する学習を行うことで応答生成を実現しています.
このツールは研究用途に開発されていて対話システムに組み込めなかったため,公開されているソースコードを読んで改造を行うことで,自身のシステムに組み込みました.
オープンキャンパスで展示した結果,参加者や教員から高い評価をいただいきました.
その結果学長から「大学のマスコットを使った対話システムを開発して欲しい」と依頼があり,予算をもらって学内のシステムを開発することになりました.
【作業期間】2022年9月~現在
【人数】2人
【役割】
システムの設計,機械学習モデルの構築,対話システムアルゴリズムの開発,システム全体のインフラ管理
【開発言語・技術】
Python,Pytorch,Fairseq,Unity,C#
【参考URL】
https://youtu.be/RpPDQyYJ098
【概要】
大学のマスコットと音声対話,テキストチャットが出来る対話システムです.
学内の案内を目的としているため,ルール応答と自動生成応答の両方に対応しています.
【きっかけ】
上記の「バーチャルエージェント型対話システムの開発」の公開により学内の案内システム開発を学長に依頼されたため開発を開始.また,フロントエンド開発の得意な研究室の友人を誘って2人で開発を始めました.
【アピールポイント】
まずは,Elasticsearchという検索エンジンを使って,ユーザの発言に近い質問・回答ペアを検索し,最適な回答候補一覧を取得します.
次にBERTと呼ばれる事前に様々なタスクで学習された機械学習モデルを用いて,ユーザ発言と質問・回答ペアが意味的にどれほど似ているかを判断させ,最も適している回答をユーザに提供することで応答を実現しました.
また,質問・回答ペアのデータベースに最適な回答がなければ,前述の「バーチャルエージェント型対話システムの開発」で開発した機械学習モデルによって一から応答を生成することで,ユーザのどのような発言にも対応する事ができるようにしました.
学園祭で一般公開を行った結果,大学のマスコットと話すことで楽しんでもらい,参加者の方々にかなり好評をいただくことができました.
学内でも話題になり,引き続き開発を行うことで図書館など学内の様々な場所への設置が決まりました.
【作業期間】2022年9月〜現在
【人数】1人
【開発言語・技術】
Python,Pytorch,Fairseq
【参考URL】
https://twitter.com/Alice_dialogue
【概要】
現在開発中の全自動でツイートを行うTwitter Botです.
自動の定期的なツイートと,リプライへの返信機能を搭載しています.
また,日々学習データを集めており,今後はキャラクタの一貫性を保持したツイートができるようにしたいと考えています.
【きっかけ】
キャラクター性を持つTwitter Botを開発することで,AIのインフルエンサーを誕生させたいという思い出開発をスタートしました.
【アピールポイント】
50GB分のツイートデータを使い,ツイートに含まれる名詞から元のツイートを生成するように学習を行うことで,自然かつオリジナリティのあるツイートを可能にしています.
また,リプライには「バーチャルエージェント型対話システムの開発」で開発した機械学習モデルを用いて,リプライを一から生成して返信しています.
今後はペルソナチャットと呼ばれる技術を用いることで,キャラクターらしい文章が生成できるようにしたいと考えており,データ収集方法などを考案中です.
画像のクリックでもTwitterアカウントに飛べます.
楽天グループ株式会社での5日間のハッカソン中にチームで開発したイベントおよび観光地のマッピングシステムです.
【期間】2022年8月中
【人数】6人
【役割】
チームリーダー(司会進行,計画やメンバーのタスク管理),データ収集(スクレイピング),データベース構築,API作成,ログイン機能の作成
【使用言語・技術】
Python, Selenium,React, Django, Sqlite3, Docker.
【参考URL】
https://commerce-engineer.rakuten.careers/careers/graduates/internship/summer-short2022
【概要】
決められたチームで5日間でアプリを開発し,最終日に英語でプレゼンを行うハッカソン形式のインターン. 我々のチームはイベントの開催地とその他のスポットがまとめて地図上に出来るマップアプリを開発した. 背景として,イベント掲載サイトでは複数の開催地をマップ上に表示する機能がなく,位置関係を考えて遊びの計画を立てることはできません.
逆に,Google Mapでは複数のスポットの位置関係を把握することは出来るがイベントの検索はできません.
そこで,我々はイベントの開催地と通常のスポットの両方をマップに表示でき,かつ詳細情報も同時に閲覧することが出来るマップアプリを開発しました.
【きっかけ】
3人以上で開発を行った経験がなく,チームで開発をする経験がしたかったため参加.
【機能的なアピール】
・マーカーをタップすることで「住所」、「電話番号」、「開催期間」などの詳細情報が1つのマップで一括して確認可能
・好きなスポットをタップすることでマーカーが設置され、ユーザのオリジナル旅行計画マップが作成できる
【技術的な貢献】
・バックエンドエンジニアとしてDjangoフレームワークを利用したAPIやログイン機能,データベースなどの構築
・データベース構築の際にSeleniumというスクレイピング用ライブラリを用いて,イベントサイトや観光地を掲載したサイトから位置情報を含めた情報の収集
【マネジメントでの貢献】
・開発経験のあるメンバーが3人しかいない中,全員のスキルを聞き出してメンバーに適切なタスクを振りました
・実際に開発に入る前に機能優先順位やモジュール分け,APIの仕様書などがしっかりと決まるように話を進め,開発途中に何度もミーティングをしなくていいように取り組みました
国際学会に論文を提出する際にデータセットとそれを使った機械学習モデルを提供できるように作成したリポジトリです.
データセットを使って簡単に実験当時の環境を再現して実験ができるようにした事に加え,利用者が独自の設定や自身の環境にあった使用ができるように多くのオプションを用意しました.
【参考URL】
https://drive.google.com/file/d/1xZ82AlKT0PI51ShxCH5sYC21x1njxTbn/view?usp=sharing
【研究背景】
対話データからユーザの趣味嗜好を分析し,その情報から映画や観光地などの推薦を行う「推薦対話システム」の研究が活発です.
しかし,既存研究には以下の課題があります.
①対話データの話題が推薦対象と同一でなくてはならないという制約がある.例えば,観光に関係しない話題の対話データを元に観光地の推薦をすることは困難.
②話題のジャンルが固定されているため,その話題に関係しないユーザの趣味などは対話に表れず,ユーザの本質的な興味が反映できない.
そこでデータ収集のコストを軽減し,かつ本質的興味からの推薦が可能な手法について研究を行っています.
【研究目的】
どのようなテーマの対話データからでもユーザの好みそうな観光地を推薦すること.
【研究内容】
話題に制約のない対話から好みの観光地を推薦するためのデータはないため,様々な話題に関する人間同士の雑談対話データを収集し,対話後に各観光地に対する評価点を付けてもらうことでデータセットを作成しました.
次に対話データから各話者の各観光地への評価点を予測するタスクを解くために,ベースラインとなる機械学習モデルを開発し,ここまでの成果で論文を執筆.
その後は調査した論文を参考に,ベースラインの問題点を解決できる新たなモデルを開発することで性能を向上させる事ができた. 今後も機械学習モデルに改良を加えることで,推薦性能向上を目指しています.
【使用した技術】
Python、Pytorch,HuggingFace Transformers,Scikit-learn,Pandas,Numpy,Scipy
ChatRecと同時に進めている別の分野の研究です.
ストーリーと各登場人物の性格特性から,それを踏まえたセリフを生成するシステムの構築を目的としており,現在はデータを収集している段階です.
本研究の説明スライドは近日中にアップロードする予定です.
現在はデータ収集を行っており,スクリーンショットにあるようなサイトをAzure上に構築して,クラウドワーカーに作業してもらっています.
【技術スタック】
Azure SQL,Python,Flask,HTML/CSS/Javascript
※データ収集サイトは荒らし防止のためURLは担当のクラウドワーカーにのみ公開しています.
閲覧を希望の方はご連絡ください.
【期間】
2021年10月〜2022年1月
【人数】1人
【開発言語・技術】Python,Pytorch,HuggingFace transformers,Numpy,Scipy,Pandas
【参考URL】
https://nlp100.github.io/ja/
【概要】
言語処理を学ぶための問題集を全章解き,解答をJupyter Notebook形式で公開したもの.
【きっかけ】
言語処理に関する知識と実装力を身につけたいと思ったため.
【アピールポイント】
全章を自力で解き,かつ10章で使用をおすすめされていたOpenNMTなどのツールを用いずに,Pytorchというライブラリのみを用いて一から自力で実装することで問題に解答しました.
Masked Language Model Scoring(ACL2020)を読んで再現実装し,パッケージ化して配布したものです.
本家様は英語文にのみ対応していましたが,日本語文に対応させ,かつHugginface上のモデルであれば大体動作するように開発しました.
文章の自然さをスコアとして表そうという試みの中で登場するスコアの計算手法がMLM Scoringです.
MLM Scoringと一括りにしてしまっていますが,本記事で紹介する部分は正確には論文中で PLL (pseudo-log-likelihood scores = 擬似対数尤度スコア) と呼ばれています.
PLLは 各単語をマスクしたときの単語の予測確率の対数尤度の和 で,以下のような式で表されます.
論文中ではマスクを使用せずに文章の自然さのスコアを計算する手法が提案されていますが,数%の性能劣化があり,今後の課題として挙げられていました.
以下は自身で開発したツールのGitHubリポジトリと,その解説を行ったQiitaの記事(今回はコードの説明は少なめ)です.