4/29 研究メモ
この記事について
ノブレスオブリージュ、関係ないけど。
ろんぶん よめたね
語義・概念の分散表現を利用した単語間の意味関係分類
概要
単語と単語の意味関係を分類する手法についての論文。単語間の意味関係分類をするとき、そのまま単語の意味を使用するのではなく、より抽象化させた単語の語義・概念で分類してみた、という内容。
単語ペアに特定の意味関係が成立する可能性は、その意味関係に応じて各単語と関連付けられた語義・概念の集合間の類似度によって表される。
語義・概念の分散表現
分類するためには機械的な計算が必要となるが、語義・概念レベルの分散表現を作成する手法として、AutoExtendと呼ばれる手法が存在する。AutoExtendは、単語の分散表現に任意の語義資源を併せることで、少ない計算量で辞書資源中の語義・概念に対し、単語ベクトルと同次元の分類表現を与える手法らしい。今回はその手法にWord2VecとWordNetを合わせた最強モデルを作成したという。
提案されている手法
単語の語義や概念集合を元にして、
- 類似性/関連性
- 下位-上位関係性
- 兄弟関係性
- 形容関係性
- 全体-部分関係性
5種類7つの関係性において、それぞれの類似度を計算する。当てはまる関係性における類似度は高くなる。
各集合のノードのそれぞれの分散表現でコサイン類似度を計算し、その最大値を採る手法、中央値を採る手法がある。加えて、各集合のノードのそれぞれの分散表現の総和のコサイン類似度を計算する手法がある。
正直よく判っていない。
結果
単語の分散表現のみで関係性を計算した従来手法よりも精度が向上したらしい。WordNetの情報を利用して分類を行ったときよりも高いスコアが得られたため、辞書情報を単に利用するよりも適用範囲が広いらしい。
ちなみに、計算方法によってスコアが大きく変化することはなかったという。
まとめ
連想概念辞書の作成だけでなく、既存の連想概念辞書を用いて単語の意味分類をする手法もあるんだなぁ。でも間接的には連想概念辞書の作成になってるのかな?連想概念辞書を作成!ってテーマの前に、意味分類をテーマにすれば、その前段階を考えるだけで済む?
参考文献
https://www.anlp.jp/proceedings/annual_meeting/2017/pdf_dir/P5-2.pdf
雑談対話システムにおける単語分散表現を用いた話題展開手法
概要
対話システムではタスク指向型や非タスク指向型に大別でき、日常会話に近い非タスク指向型システムの研究も行われてきた。しかし、日常会話で重要となる話題展開についての研究は数少ない。そのため、話題展開を行うシステムを提案してみた、という内容。
単語分散表現
ユーザ・システム間で得られる対話から対話破綻指数と対話継続指数を学習することで、適切なシステム応答を選択できると考えて行っているらしい。そして、システム応答を行うためにはモジュールが必要となるが、そこで用いる単語分散表現の学習はword2vecfを用いているという。
単語分散表現の学習の際に、係り受け情報を用いることで、効率的な学習ができるらしい。係り受けとは、言葉と言葉の関係性のことで、これに注意を払うと文章が綺麗に書けるのだとか何とか。係り受け解析にはCaboChaと呼ばれるエンジンが存在するらしい。どうして構文解析エンジンは食べ物が多いのか。
話題展開を行うための発話生成
発話展開を行うためには、名詞に注目した処理を行う必要がある。確かに、名詞から話題を繋げていくのは当たり前田のクラッカー。
単語分散表現を用いて判定された単語をどのようにしてシステム応答として採用するのかというと、この研究ではユーザー発話から検出された単語と単語分散表現を用いて得られた単語を入れ替えることで実現している。そして名詞にかかっている機能語を「も」に変換する処理を行っている。半分オウム返しのようなもの。
結果
結果を見た感じ、類似する単語に入れ替えてるだけという印象を受ける。逆に言えば、しっかりと単語を入れ替える箇所を判断できているという証拠でもある。ちゃんと失敗例もあるので、単純に類似する単語というだけではダメらしい。
まとめ
非タスク指向型の対話システムにおける話題展開、僕としてはかなり気に入っている。この論文が発表された2015年ではまだTransformerとかBERTが出現しておらず、これらの強力なモデルと話題展開の研究を組み合わせることができれば、いい感じの対話システムができるのではないかと考えている。
具体的な方法は思いついていないが、連想との関連で考えるならば、ユーザ発話文の中にある単語に注目して、その単語から連想語を得て、システム応答の中に組み込む、という研究も考えられる。
参考文献
https://www.anlp.jp/proceedings/annual_meeting/2015/pdf_dir/B1-2.pdf
研究テーマについて
今日の論文の中で、話題展開手法の検討は一番モチベーションが高いテーマになりそうと思った。しかし、対話システムの構築となると大変なので、細分化してみる。
- ユーザ発話文の中にある単語に注目
- 注目した単語から連想語を得る
- システム応答の中に組み込む
研究室では『連想』をテーマに組み込む必要があり、2.の項目は必須となる。そのため、1.→2.についての研究をテーマとするのが現実的だと思う。2.の連想については単語→単語になる。
正直、ユーザ発話文のどこに注目しているかどうかは、比較的簡単(簡単ではない)に抽出できると思う。問題は連想語を得るところ。そこは要検討。
今のゲーム作りでは連想語を得る試みを行っているので、それがヒントになるといいなぁ(願望)。
とりあえず今のところの研究テーマは、
- 連想語を用いた話題展開手法の検討(Transformer? BERT?)
- 連想概念辞書について(2.を突き詰めた結果、コレになる可能性がある)
- 連想ゲームに関する研究(改善の自動化とか?)
一番上の研究がモチベ高いので、マジでこれをテーマにしたい。多分卒論では終わらないから、修論まで見越してのテーマになる。というか卒論だと連想語の生成部分の検討で終わりそう。
連想ゲーム関連の作業
WordNetで連想語を得る
cur0 = conn.execute("select synset2 from synlink where (synset1='%s' and link='msub')" % synsets[0])
これを書くために半日かけた。WordNetについて操作するソースがほぼ全滅状態だったので、何も参考にならなかった。公式リファレンスこそ至高。
上手く動いたけど、WordNetで連想語を得るのはほぼ無理だなって悟った。連想語はカレーだったら肉やたまねぎなど、材料・パーツとなるようなものを想定していたけど、WordNetではそのような関連付けがされていなかった。せめて類義語の抽出なら...と思ったけど、カレーだと具体的すぎるためか、リンクがほぼ繋がってなかった。
今年中に連想語の自動化は厳しい。ここの部分の実装というか研究をテーマにするのが良いかも。つまり、上のテーマ部分の2.を突き詰めるといった感じ。
WordNet作戦が上手くいかないので、普通に考えてすぐに実装できるようなものは存在しない。類義語しか出せないのは流石に雑魚。連想ゲームとしての質も高くない。
卒研テーマにしてリベンジするしかない、連想語生成。
明日は
単語と単語のコサイン類似度を計算するモジュール作りを始める。あと会話展開と連想語に関する論文を読んだりする。