Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

「ゆる言語学ラジオ」のコーパスサイトを作っている話(途中経過まとめ)

Posted at

この記事は ゆる言語学ラジオ非公式 Advent Calendar 2022 - Adventar の8日目の記事です。

はじめに

ゆる言語学ラジオという、「ゆるく楽しく言語の話をする」というコンセプトのYoutubeチャンネルにハマってしまい、あっという間に1年ほど経ちました。
いつの間にか「ゆるコンピュータ化学ラジオ」や「ゆる学徒ハウス」などといった派生系が生まれ、動画の数は今や200を超えています。
そんな中「あの話、どの回だっけ?」となることが増えてきました。

そこで、「検索できるサイトを作っちゃおう!どうせなら言語学っぽく、形態素解析もしてコーパスにしちゃおう!」くらいのノリで2ヶ月ほど前から作り始めました。

この記事では、現時点での経過をまとめていきます。

インフラなど

フロントエンドはNex.jsをVercelにデプロイしています。

バックエンドはFlaskAPIをAWS Lambda上に立て、HTTP API Gateway経由で叩いています。

機能説明

完成系では、以下のような機能を予定しています。

  • 全動画の文字起こしデータの閲覧
  • 字幕データの閲覧
  • だれでも上記データを修正可能にする
  • 発話の形態素解析
  • 特定の単語の出現箇所の検索

現状ある機能はいたってシンプルで、大きく分けて2つのみです

  1. ゆる言語学ラジオ初回~生成文法回までの文字起こしの閲覧、編集
  2. 形態素解析を用いない、完全一致の検索

1. 文字起こしの閲覧、編集

UIはこんな感じです。

OpenAIのWhisperを使って作成したものを初期データとし、それを誰でも修正できるようにしています。

Whisperに関して

Whisperは割と精度が高く、Largeモデルを使うとそれなりの確率で手直し不要のクオリティーが出ます。

いいかんじ.txt
00:00:00.000 --> 00:00:03.480
【テロップ】

00:00:03.480 --> 00:00:05.480
ポリモさんこんな単語知ってます?

00:00:05.480 --> 00:00:07.040
トリコトゥース

00:00:07.040 --> 00:00:08.740
トリコトゥース?

00:00:08.740 --> 00:00:09.740
全く聞いたことない

00:00:09.740 --> 00:00:11.280
ツズリ一応言いましょうか

00:00:11.280 --> 00:00:16.780
T-R-I-C-O-T-E-U-S-E

00:00:16.780 --> 00:00:18.840
聞いても知らんもん知らんけど

そのため初期データはほとんど手直しを加えず、Whisperの出力をそのまま使用しています。

ただし、1/50くらいの割合で【はじめしゃちょーエンディング】としか出力されない地獄の回があったりします。
また、学習データに多く使われたことが原因だと思いますが、コテンラジオのパーソナリティーの方々の名前が出ることもありました。
冒頭のタイトルコールを削るなどしたら変わるのかもしれません。
また、ちょうど新しいモデルが公開されたばかりで、今後そちらも試す予定です。

やばめ.txt
00:00.000 --> 00:03.500
【はじめしゃちょーエンディング】

00:30.000 --> 00:33.500
【はじめしゃちょーエンディング】

01:00.000 --> 01:03.500
【はじめしゃちょーエンディング】

01:31.000 --> 01:34.500
【はじめしゃちょーエンディング】

01:34.500 --> 01:37.500
【はじめしゃちょーエンディング】

01:37.500 --> 01:40.500
【はじめしゃちょーエンディング】
やばめ2.txt
00:00:00.000 --> 00:00:07.080
ヤンヤン 今回は第4回ですねタだけで4回

00:00:07.080 --> 00:00:10.440
目 まだまだ後半戦始まったよみたいな

00:00:10.440 --> 00:00:12.940
感じなんですけど 樋口 そろそろみんなビビり始めて

00:00:12.940 --> 00:00:15.720
くるでしょうね ヤンヤン リスナーが泣くまでやりましょう

00:00:15.720 --> 00:00:17.280
深井 はいもうギャン詰めしていきましょう

00:00:17.280 --> 00:00:21.080
樋口 やりましょうやりましょう 深井 今回はタの本質ですねタって

00:00:21.080 --> 00:00:26.020
だってこんなにいろいろ意味あって 日本の人日本の僕はわしゃってなんと

編集に関して

編集機能の設計で最も意識したのは、ユーザーの負荷をできるだけ下げることです。
そのため、最も頻度の高いであろう「文字起こしは修正せず、発話者だけを選択する」という動作を2クリックで行えるようにしました。

しかし、編集画面の描画コストが発話数に対してO(N)の関係にあるため、長尺回では重すぎてまともに編集できない状態になっています。
パフォーマンスの問題が解決した後は、編集のUXをもっと楽しいものにする予定です(何のアイデアもないですが)。
というのも、形態素解析を導入するためには正しい文字起こしが不可欠であり、そのためにはユーザーによる文字起こしの修正をかなり活発にする必要があるからです。

検索

image.png

検索機能のゴールは、ユーザーの入力を形態素解析し、原形での検索を行うことです。
例えば「途方もない」という単語を入力した時、「途方もなく」でも「途方もなかった」でもヒットするようなイメージです。

現時点では入力に一致する発話を含むすべての回を表示する機能になっています。
また、データベースにDynamoDBを使用しているため、部分一致でクエリできないという制約があります(先頭一致は一応できますが、検索には向きません)。
そのため、すべての発話をJSONファイルにしてS3に保存し、そこから検索する方法を取っています。
そして、その処理ががO(n^2)のためかなり遅いです。

おわりに

アドベントカレンダーの日にちを「せっかくだし誕生日にしよう!どうせ完成してるでしょ」と適当に選んでしまったことを後悔してます(とほまち)
ただ、最低限動くものくらいは作れたと思うので、ぜひ触ってみてください!

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?