mayu-tateno / give-me-three

0 stars 0 forks source link

ランダムに単語を3つ出す機能 #3

Open mayu-tateno opened 4 months ago

mayu-tateno commented 4 months ago

概要

どこから単語データを持ってくるか、どうやって単語データをDBに入れるかなどの技術の調査・検討イシュー (頭の中を整理するためにも書いているので一旦殴り書き。とっ散らかっている、、)

いくつか方法が考えられる

辞書APIを使う(DBにデータを入れず、都度APIにリクエストを送り取得する方法を想定)

良さそうなものがなかったので、辞書データを入れる方法が良さそう

辞書データを整形してDBに突っ込む

日英翻訳辞書のJMDictがデータ量が十分にあって良さそうだったが、実際にスクリプトを作成して辞書データから試しに3単語抽出してみると、マニアックな語彙が多く、「お題」として難有りかもしれない。 それと辞書データが66MB程度のサイズがあり結構大きい。本番環境のDBに入れる場合どういう手順で入れるのが良いか

他の選択肢として検討中なのが、ある程度自分で単語をリストアップして都度増やしていく(地道)。この方法なら単語の質が担保できそう。csvにしてインポートすればいいので実装は難しくない。管理画面にインポートボタンを作るとかもできそう。 JMdictなどの辞書データから使えそうなものだけリストアップする良い方法はないだろうか。形態素分析のgemを使ってスクリプトを作成するとか…?とりあえず名詞を500くらい抽出して目視で使えそうなものを精査してみるとか、、、

JMdictにせよ自分で用意するにせよ、できるだけ手動や手間は減らしたい…!というのが基本方針。

備考

関連する機能として以下も考えている。DB設計の時に考慮したい

他にもこういう単語のカテゴライズを追加する場合も考えられるので、変更しやすいDB設計を考えないと

単語のDB設計には直接関係なさそうだけど思いついている機能をメモ(全部追加するとは限らない)

競合

※実際に単語ガチャというスロットっぽいUIのランダムに単語を3つ出してくれるサイトがある。出てくる単語の語彙が偏っていることから、製作者が独自に単語データを用意していそう。連続で回した場合、同じ単語が引っかかりやすいので、アクセスした時にある程度の数の単語を予めフロントに送ってその中から出してそう。この方法だとランダム感が薄いのが欠点か。(それか単純に総単語数の問題か) 語彙の偏り方が私にとっては想像を膨らませ甲斐がある方向性ではなかったので自分で作ろうと思った。発想のきっかけづくりとしてのものらしく、三題噺の投稿機能などはない。人が書いたものも読みたい…! 他のランダム単語アプリでは単語の数も変更できたり、日常で使用する言葉・高度に専門的な言葉といった尺度で単語をカテゴライズしているものがある。ちなみに専門的な単語が混ざるとなかなか面白いものが書けそう。「見えざるピンクのユニコーン」とか。

mayu-tateno commented 4 months ago

どれくらいの数の単語を追加すべきか

様子を見ながら徐々に増やしていく、で良さそう。 例えば少なく感じる単語数だが、500単語追加したとして、単語3つの組み合わせとして2000万通り以上あるはず。組み合わせ数としては多く感じる。

1日3回、30日間使用するとして、全く単語が被らないようにするには最低でも270語。 毎回新鮮味を感じるためには、この何倍くらいあれば十分なのか、、 とりあえず500~1000くらいで一旦ローカルで試してみるのが良さそう。

使ってみた肌感でも判断する必要がありそうだ。

mayu-tateno commented 4 months ago

ChatGPTを使用して単語の抽出を行っている 単語のリスト作成で役に立つかも?

Chat GPT-APIを使った解説つき英単語データベース+単語テスト

mayu-tateno commented 4 months ago

単語API再検討用

https://www.apibank.jp/ApiBank/api?category_no=16

上位語・類義語関連 https://blog.apitore.com/2017/05/17/api-wordnet-simple/