コミュニケーション相手のノンバーバルコミュニケーションをCVで読み取って、アラートしてくれるプログラムの論文(REsCUE: A framework for REal-time feedback on behavioral CUEs using multimodal anomaly detection, Arakawa.Yakura, 2019)を読んで、考えました。(たぶんそういう内容、ちがったらすみませんが訂正します)
自閉スペクトラム障害の人との面接場面で、カウンセラー側に同様のアラートを発するプログラムは作れないか。
→カウンセラーの抽象的(abstract)な表現にアラートを出し、具体的(concrete)で伝わりやすい表現を促すプログラムを作りたい。
〇抽象語をリストアップする
・アンケートやインタビューもするか
〇抽象語の辞書を作成する
話題に基づく語義曖昧性解消評価セット(https://github.com/nut-jnlp/JapaneseTopicWSD)を参考に作成する
・辞書内に「字義どおりに解釈した場合の意味」も用意しておく(ex適当=適切)
(または「広辞苑等の辞書」内に無い意味の辞書を作る?(ex適当=手抜きしてよい))
<テスト済>
〇音声入力はgoogleのcloud speech APIを使いtranscribe_streaming_mic.pyで処理する
〇transcribe_streaming_mic.pyの戻り値を、曖昧な表現を検出するプログラムに渡す処理
〇受け取った値をリアルタイムで自然言語処理する
・形態素解析(Janomeは全部Pythonで書かれてて遅いらしいのでMecabでやる方向で)
・形態素解析された品詞から辞書の抽象語を検出する
・検出した場合、以下の処理を行う
<テスト済・方法は要研究>
〇語義曖昧性解消(word sense disambiguation:WSD)
手法1
@文脈(文書)のベクトルの算出
・単語のベクトルを足し合わせる(名詞、動詞、形容詞)
・Window sizeはいくつが適当か?
@抽象語の辞書のすべての意味と、文脈ベクトルのコサイン類似度を比較し、最も高いものを語義として語義曖昧性解消(WSD)の処理をする。
・アラートの精度が低い場合はスタッキングで絞る?
・語義が字義どおりに解釈した場合の意味でなかった場合(または「広辞苑等の辞書」内に無い意味だった場合)、アラートを表示する。(スマートウォッチにアラート?)
手法2
「話題に基づく語義曖昧性解消(桾澤, 2018)」をベースに実装
Context Word Embedding(CWE)を用いる(単語の分散表現のベクトルを繋ぎ合わせて文章のベクトルを作り、話題に基づく語義曖昧性解消評価セット(https://github.com/nut-jnlp/JapaneseTopicWSD)からSVCで分類する手法(Context Representation with Word Embeddings for WSD:sugawara, 2015)の論文を入手して使う)
↑精度75%らしい pythonでの行列の作り方でつまづいている。
〇コミュニケーションの肝要な副詞のうち、多義にわたるものを検出
ex「もうちょっと」(抽象的な量の表現)←これをWSDすると良いのか?
(ex「また」という表現は抽出しない)
〇照応解析、ゼロ照応解析で照応先が曖昧なのも対象とする?
文内、文間、外界ゼロ照応解析が「あった」とき(ガ格が空いてる)にアラート(文間ゼロ照応解析の制度は30%以下のため 文書全体を考慮したニューラル文間ゼロ照応解析モデル 大内 啓樹,2017)
意味解析システムSAGEによるゼロ照応解析は精度50%
〇指示代名詞の検出「「それ」とって」
〇換喩の検出 単語間連想関係を用いた換喩表現の自動検出