質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

522閲覧

オープンクエスチョンかどうかを判定する、プログラムを作りたい

shin_shin

総合スコア96

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/05/08 06:25

編集2021/05/08 06:25

入力テキストが、オープンクエスチョンかどうか?を判定するアルゴリズムを作っております。
コーディングのアイディア、ご教示いただけますでしょうか。

オープンクエスチョンの定義は、「はい or いいえ」で、答えることができない、と定義してます。
より、詳細にいうと、下記の二つです。
0. 5W1H(when, where, who, what, why, how)の単語が含まれていたら、オープンクエスチョン

  • 例えば、「これって、いつですか/なんですか/なんでですか?、どうすればいいですか?」等は、オープンクエスチョンです。
  1. ただし、例外的に、5W1H + 仮説?であれば、オープンクエスチョンではない
  • 例えば、「これってなんですか?ラーメンですか?」、は、5W1H + 仮説?になっているので、オープンクエスチョンでない

というイメージです。

現時点では、上記1の機能は、完成しましたが、上記2の「5W1H + 仮説?は、オープンクエスチョンでない」という機能は実装できていません。

python

1import re 2 3def question_type_identifier(text): 4 result = re.search(r'(いつ|どこ|どこで|誰が|だれが|だれ|何を|なに|なにを|なんですかね|なぜ|どうして|どのように|どうすれば)', text) 5 if result is None: 6 print(f"「{text}」は、not オープンクエスチョンです。") 7 else: 8 print(f"「{text}」は、オープンクエスチョンです。") 9 10text = "どうすればいいですか??" 11question_type_identifier(text)

Question
上記2の「5W1H + 仮説?は、オープンクエスチョンでない」というのは、どのように書けばいいか、ご教示いただけますでしょうか?よろしくお願いいたします。
(ちなみに、私の質問は、オープンクエスチョンです。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2021/05/08 06:48

どの程度、自然言語処理の技術に頼ることを想定していますか? たとえば力業でやるなら教師データを用意して深層学習という方法は秒で思い付く訳ですが、そういう回答を求めているようにも思えません(オープンクエスチョン)。
shin_shin

2021/05/08 06:52

ありがとうございます。 下記の作業を伴う、教師あり学習の活用は、想定しておりません。(質問量が膨大で、アノテーションが大変そう) ・「質問データ」に対して、「オープンQ or not」のラベル付け
hayataka2049

2021/05/08 07:12

形態素解析とか構文解析などは扱いますか?
shin_shin

2021/05/08 07:15

ありがとうございます。 はい、扱えます!
guest

回答1

0

ベストアンサー

色々なバリエーションを考えると、実装する気が失せるような課題ではあります。

原理的には、単独で切り離して

  • これってなんですか? -> オープンクエスチョン
  • (これって)ラーメンですか? -> 非オープンクエスチョン

の判定はできる訳で、
(ということにとりあえずします)

オープンクエスチョン→非オープンクエスチョンと来た場合、疑問代名詞(なん)に問われている当のもの(ラーメン)が代入できるかをチェックして、可ならオッケー。
(ととりあえず考えてみる)


現実には代入してチェックもそうとう厳しいので、複数の質問が並んでいたら、最後の質問だけ相手する方針で良いと思います。「これってラーメンですか? それとも違うなにかなのでしょうか?」はオープンクエスチョンになる訳だし。


「私の目の前にあるこのめっちゃ美味そうな食べ物はなんですか? それはあなたの目の前にあるやっぱりめっちゃ美味そうな食べ物とは別物だということはなんとなくわかるのですが、当てずっぽうで言ってみると私の目の前にあるのはラーメンであなたの目の前にあるのは餃子だということで合っていますか?」

無理。


正規表現で取るのはさすがに取りこぼしや例外が多いと推察されるので、そこをどうするかがさしあたっての課題でしょう。

KNPを使ってやっと「疑問詞」を拾ってくれます。<疑問詞>が出てきたらオープンクエスチョン扱いで大丈夫かな。

それは誰ですか # S-ID:1 KNP:4.2-75a8fa27 DATE:2021/05/08 SCORE:-17.64153 それは──┐ <体言> 誰ですか<体言><用言:判><格解析結果:ガ/それ> EOS # S-ID:1 KNP:4.2-75a8fa27 DATE:2021/05/08 SCORE:-17.64153 * 1D <BGH:それ/それ><文頭><ハ><助詞><体言><指示詞><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><正規化代表表記:それ/それ><主辞代表表記:それ/それ> + 1D <BGH:それ/それ><文頭><ハ><助詞><体言><指示詞><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><名詞項候補><省略解析対象指示詞><正規化代表表記:それ/それ><主辞代表表記:それ/それ><クエリ削除語><解析格:ガ> それ それ それ 指示詞 7 名詞形態指示詞 1 * 0 * 0 "疑似代表表記 代表表記:それ/それ" <疑似代表表記><代表表記:それ/それ><正規化代表表記:それ/それ><かな漢字><ひらがな><文頭><自立><内容語><タグ単位始><文節始><文節主辞> は は は 助詞 9 副助詞 2 * 0 * 0 NIL <かな漢字><ひらがな><付属> * -1D <SM-主体><SM-人><BGH:誰/だれ><文末><疑問詞><カ><助詞><体言><判定詞><用言:判><一文字漢字><レベル:C><区切:5-5><ID:(文末)><並キ:述:&ST:3.0&&&レベル:強><補文的格要素><提題受:30><主節><状態述語><疑問><モダリティ-疑問><敬語:丁寧表現><正規化代表表記:誰/だれ><主辞代表表記:誰/だれ><並列類似度:-100.000> + -1D <SM-主体><SM-人><BGH:誰/だれ><文末><疑問詞><カ><助詞><体言><判定詞><用言:判><一文字漢字><レベル:C><区切:5-5><ID:(文末)><並キ:述:&ST:3.0&&&レベル:強><補文的格要素><提題受:30><主節><状態述語><疑問><モダリティ-疑問><敬語:丁寧表現><指示詞><判定詞句><名詞項候補><正規化代表表記:誰/だれ><主辞代表表記:誰/だれ><用言代表表記:誰/だれ><節-区切><節-主辞><時制:非過去><クエリ削除語><格関係0:ガ:それ><格解析結果:誰/だれ:判1:ガ/N/それ/0/0/1><標準用言代表表記:誰/だれ> 誰 だれ 誰 名詞 6 普通名詞 1 * 0 * 0 "代表表記:誰/だれ カテゴリ:人" <代表表記:誰/だれ><カテゴリ:人><正規化代表表記:誰/だれ><疑問詞><漢字><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><文節主辞><用言表記先頭><用言表記末尾><用言意味表記末尾> です です だ 判定詞 4 * 0 判定詞 25 デス列基本形 27 NIL <かな漢字><ひらがな><活用語><付属> か か か 助詞 9 接続助詞 3 * 0 * 0 NIL <漢字><かな漢字><ひらがな><文末><表現文末><付属> EOS
それは太郎ですか # S-ID:1 KNP:4.2-75a8fa27 DATE:2021/05/08 SCORE:-18.95967 それは──┐ <体言> 太郎ですか<体言><用言:判><格解析結果:ガ/それ> EOS # S-ID:1 KNP:4.2-75a8fa27 DATE:2021/05/08 SCORE:-18.95967 * 1D <BGH:それ/それ><文頭><ハ><助詞><体言><指示詞><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><正規化代表表記:それ/それ><主辞代表表記:それ/それ> + 1D <BGH:それ/それ><文頭><ハ><助詞><体言><指示詞><係:未格><提題><区切:3-5><主題表現><格要素><連用要素><名詞項候補><省略解析対象指示詞><正規化代表表記:それ/それ><主辞代表表記:それ/それ><クエリ削除語><解析格:ガ> それ それ それ 指示詞 7 名詞形態指示詞 1 * 0 * 0 "疑似代表表記 代表表記:それ/それ" <疑似代表表記><代表表記:それ/それ><正規化代表表記:それ/それ><かな漢字><ひらがな><文頭><自立><内容語><タグ単位始><文節始><文節主辞> は は は 助詞 9 副助詞 2 * 0 * 0 NIL <かな漢字><ひらがな><付属> * -1D <文末><人名><カ><助詞><体言><判定詞><用言:判><レベル:C><区切:5-5><ID:(文末)><並キ:述:&ST:3.0&&&レベル:強><補文的格要素><提題受:30><主節><状態述語><疑問><モダリティ-疑問><敬語:丁寧表現><正規化代表表記:太郎/たろう><主辞代表表記:太郎/たろう><並列類似度:-100.000> + -1D <文末><人名><カ><助詞><体言><判定詞><用言:判><レベル:C><区切:5-5><ID:(文末)><並キ:述:&ST:3.0&&&レベル:強><補文的格要素><提題受:30><主節><状態述語><疑問><モダリティ-疑問><敬語:丁寧表現><判定詞句><名詞項候補><先行詞候補><SM-人><SM-主体><正規化代表表記:太郎/たろう><主辞代表表記:太郎/たろう><用言代表表記:太郎/たろう><節-区切><節-主辞><時制:非過去><格関係0:ガ:それ><格解析結果:太郎/たろう:判3:ガ/N/それ/0/0/1><標準用言代表表記:太郎/たろう> 太郎 たろう 太郎 名詞 6 人名 5 * 0 * 0 "人名:日本:名:45:0.00106 疑似代表表記 代表表記:太郎/たろう" <人名:日本:名:45:0.00106><疑似代表表記><代表表記:太郎/たろう><正規化代表表記:太郎/たろう><漢字><かな漢字><名詞相当語><自立><内容語><タグ単位始><文節始><固有キー><文節主辞><用言表記先頭><用言表記末尾><用言意味表記末尾> です です だ 判定詞 4 * 0 判定詞 25 デス列基本形 27 NIL <かな漢字><ひらがな><活用語><付属> か か か 助詞 9 接続助詞 3 * 0 * 0 NIL <漢字><かな漢字><ひらがな><文末><表現文末><付属> EOS

投稿2021/05/08 13:27

編集2021/05/08 13:52
hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問