【ISSUE】【構文解析】パソコンだって人間と一緒に早押しクイズに参加したい!!(全コード掲載!)
2024年12月23日 17:28
【忙しい人向けシリーズ】ニュースを30秒で呼ぶために構文解析で要約してみた
パソコンだって人間と一緒に早押しクイズに参加できる...(はず)
NTTコミュニケーションズが提供している 自然言語処理・音声処理APIプラットフォームCOTOHA API を使って**クイズをパソコンに解かせてみた!**という内容です。
「パソコンにクイズ?」
「そんなの普通に検索すればできるやんけ」
「何をいまさら。あほなん??」
そう思った方も少なからずいるでしょう。しかし、実際に私たちが検索をする際には、不要な助詞などを省いて検索している場合がほとんどです。
例えば、このような問題が与えられたとします。
「"エッセイも人気だったが、ガンで53歳で亡くなったちびまるこちゃんの作者といえばだれ?"」
ネットで検索するときには、このように検索したりしませんか?
「ちびまる子ちゃん 作者」
「エッセイスト ガン 53歳」
人間にとってはどの単語が重要でどの単語が不要なのかが、なんとなくで分かりますが、パソコンにはそんなこと分かったもんじゃありません。
それを今回は自然言語処理を使って、パソコンにも人間と同じような問題文を与えて回答できるのかどうかを試してみたいと思います!
今回作成するコードを先に掲載しておきます。折り畳み式になっているので、展開してご覧ください。
今回はこのような環境で行いました。
COTOHA APIを利用するためにはCOTOHA API 無償アカウント for Developers に登録する必要があります。
登録が完了すると、マイページに「CLIENT ID」「CLIENT SECRET」が記載されているので、ソース内に記載してください。
今回はソースコードの主要部分だけの解説になります。詳しい説明が必要な場合は、コメント等でお知らせください。
headers
, data
の中身については、COTOHA API の公式リファレンスに詳細が書いてあるので、参照してください。
今回与えるクイズの文は、一般的な文であり、体裁が著しく崩れていないのでtype
はdefault
としてあります(省略時は自動でdefault
が指定されます)。この他にkuzure
というtype
が存在しますが、SNSなどで使われる崩れた文を解析する際に指定します。
今回は構文解析後の結果から、助詞などを省いて「"形容詞語幹", "名詞", "句点", "連体", "助数詞", "Number"」
だけを抽出するようにしました。Googleで検索を行う際に、助詞などが変に含まれていると正常に検索できないので、省きました。
Google検索に関するClassは少し長いので、展開して見てください。
使い方としては、Googleのクラスをインスタンス化します。検索にはSearchメソッド
を使います。第1引数は検索したい文字列, 第2引数のtype
にはtext
, image
を選択することができます。今回の場合は普通に検索するのでtext
を指定します。
Google検索によって得られたURLから、サイトのタイトルを取得していきます。サイトのタイトル取得にはBeautifulSoup
を使います。サイトにtitleタグ
が存在するはずなので、titleタグを取得してそれを表示します。
get_title
は与えられたURLから、get_titles
はURLの配列を引数としていて、すべてのURLのタイトルを取得します。
今回の正誤判定基準は以下のようにしました。
今回解かせた問題と結果はこちら
実際に問題を解かせてみた結果、割といい感じに回答が出ていました。が、文字化けとかに関しては考慮してないので、そこらへんも考慮する必要がありますが、結果的にはいい感じになったのではないでしょうか!!
[cv:issue_marketplace_engineer]
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。