【ISSUE】【構文解析】パソコンだって人間と一緒に早押しクイズに参加したい!!(全コード掲載!)

0

2024年12月23日 17:28

こんな記事も書いてます

【忙しい人向けシリーズ】ニュースを30秒で呼ぶために構文解析で要約してみた

TL;DR

パソコンだって人間と一緒に早押しクイズに参加できる...(はず)
image.png

概要

NTTコミュニケーションズが提供している 自然言語処理・音声処理APIプラットフォームCOTOHA API を使って**クイズをパソコンに解かせてみた!**という内容です。

「パソコンにクイズ?」

「そんなの普通に検索すればできるやんけ」

「何をいまさら。あほなん??

そう思った方も少なからずいるでしょう。しかし、実際に私たちが検索をする際には、不要な助詞などを省いて検索している場合がほとんどです。

例えば、このような問題が与えられたとします。
「"エッセイも人気だったが、ガンで53歳で亡くなったちびまるこちゃんの作者といえばだれ?"」

ネットで検索するときには、このように検索したりしませんか?
「ちびまる子ちゃん 作者」
「エッセイスト ガン 53歳」

人間にとってはどの単語が重要どの単語が不要なのかが、なんとなくで分かりますが、パソコンにはそんなこと分かったもんじゃありません。

それを今回は自然言語処理を使って、パソコンにも人間と同じような問題文を与えて回答できるのかどうかを試してみたいと思います!

PCに問題を解かせるまで

今回作成するコードを先に掲載しておきます。折り畳み式になっているので、展開してご覧ください。

サンプルコード

img

準備

今回はこのような環境で行いました。

  • Python3
  • COTOHA API
  • Windows10
  • Sublime Text3

COTOHA APIを利用するためにはCOTOHA API 無償アカウント for Developers に登録する必要があります。

登録が完了すると、マイページに「CLIENT ID」「CLIENT SECRET」が記載されているので、ソース内に記載してください。

今回はソースコードの主要部分だけの解説になります。詳しい説明が必要な場合は、コメント等でお知らせください。

構文解析部分

img

headers, data の中身については、COTOHA API の公式リファレンスに詳細が書いてあるので、参照してください。

APIリファレンス | COTOHA API

img

今回与えるクイズの文は、一般的な文であり、体裁が著しく崩れていないのでtypedefaultとしてあります(省略時は自動でdefaultが指定されます)。この他にkuzureというtypeが存在しますが、SNSなどで使われる崩れた文を解析する際に指定します。

単語抽出

img

今回は構文解析後の結果から、助詞などを省いて「"形容詞語幹", "名詞", "句点", "連体", "助数詞", "Number"」だけを抽出するようにしました。Googleで検索を行う際に、助詞などが変に含まれていると正常に検索できないので、省きました。

Google検索

Google検索に関するClassは少し長いので、展開して見てください。

Google Class コード

img

img
使い方としては、Googleのクラスをインスタンス化します。検索にはSearchメソッドを使います。第1引数は検索したい文字列, 第2引数のtypeにはtext, imageを選択することができます。今回の場合は普通に検索するのでtextを指定します。

サイトタイトルを取得

img

Google検索によって得られたURLから、サイトのタイトルを取得していきます。サイトのタイトル取得にはBeautifulSoupを使います。サイトにtitleタグが存在するはずなので、titleタグを取得してそれを表示します。
get_titleは与えられたURLから、get_titlesはURLの配列を引数としていて、すべてのURLのタイトルを取得します。

問題を解かせる

今回の正誤判定基準は以下のようにしました。

  • 問題に対して検索結果を上位3つ表示
  • 上位3つ分のサイトのタイトルを表示
  • そのどれかに問題の答えが記載されていれば正解とする

今回解かせた問題と結果はこちら

  • 2009年8月21日に最初の公判がおこなわれた、特定の刑事裁判において、国民から選ばれた人と裁判官とともに審理に参加する日本の司法制度を何制度と言う?(答:裁判員制度)

image.png

  • 日本列島を囲む4つの海は東シナ海、オホーツク海、太平洋とあと1つは何?(答:日本海)

image.png

  • 幕末の志士「新撰組」の旗に記された漢字1文字は何?(答:誠)

image.png

  • 日が照っているのに雨が降る天気のことを何の嫁入りと言うでしょう?(答:狐の嫁入り)

image.png

まとめ

実際に問題を解かせてみた結果、割といい感じに回答が出ていました。が、文字化けとかに関しては考慮してないので、そこらへんも考慮する必要がありますが、結果的にはいい感じになったのではないでしょうか!!
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。