ブログではないです

ブログでなくはないです

COLING2016 1日目

内容の簡単なメモ、覚えておきたいこと、感想など。
聞きながら書いてるのでところどころ怪しいかも。


Tutorial T-2 : Chinese Textual Sentiment Analysis: Datasets, Resources and Tools [Lun-Wei Ku and Wei-Fan Chen]

スライド

中国語の評判分析に関する話。講演者が開発しているCSentiPackage内のCopeOpi ・UTCNNというツールで用いた手法とその効果についてが主。

前半はSentiment Analysisの基本的な話。そもそも分析結果をどう表現するのか? ラベル(ポジネガ、sentiment or non-sentiment)にclassificationする、 valence-arousal で表現するなど。
ラベル付けの単位についても。document, passage, sentence, wordと細かくなるほどアノテーションされたラベルは少なく、単語(文字)数も少ないため解析が難しい。

関連研究紹介。昔はSVMでやっていたが,近年はやはりDNN-basedな手法が人気。 attention + LSTMの定番パターンとか、sentence-embeddingを用いるとか。最近のキーワードはこんな感じ。
aspect
・domain adaptation for cross-domain/lingual
・DNN vs linguistic features
fine-grained
・crowdsourcing

その後で本題のCSenti packageについて。 前半はCopeOpiについて、中国語の性質と絡めた分析についての話(segmantationが必要だとかmorphologyの構造だとか)と、各種手法の組み合わせによる精度比較。

後半はCSentiPackageのUTCNN (User Topic Comment Neural Network)というモジュールについての話。この辺りちょっと面白かったので詳しめに。

FBFansというデータセットを用いて、FBの投稿とそれに対するコメント・投稿者やいいねを押した人、コメントをした人がどのような人かなどの情報からラベル推定するというもの。 基本的にはCNNで投稿文の各単語のword-embeddingを適当な単語幅のフィルタにかける。
その際に、Author / Commenter / Liker / Topic (from LDA) など、注目する各ドメインに対して Matrix / Vector でembedding layerを準備する。
その後、投稿の内容であれば「投稿者 + いいねをした人」のembedding(Matrix) それぞれをMax-poolingすることで、その投稿に関する人全体についてマイルドに表すようなembedding(matrix) が構築される。そのmatrixを用いて投稿文中の単語に対して、窓幅Nで word embeddingを変換してCNNのフィルタに通し、あるドメインから見た時の文書の意味表現を構築している。

以下が全体図 。(配布スライドのp87より)

f:id:jack_and_rozz:20161211112400p:plain

色々工程を踏んでいるので複雑になっているが、結局 * 注目するドメインに関して Matrix or Vectorの Embedding Layerを用意
* 複数ドメインが関わる(複数のトピック、複数の人間)場合、Max-poolingして調整
* 投稿文・コメント等の各単語について、ドメインごとのEmbedding(Matrix)に通して変換して分散表現を構築してconcat
* 投稿文だけじゃなく、Embedding(Vector)そのものもついでに最後のfeatureにくっつける

ということを全体としてはやっているように見える。

既存手法との比較とfeatureの有無による結果は以下の表。(スライドp88より) f:id:jack_and_rozz:20161211132758p:plain

domainのembeddingとしての取り入れ方に興味を引かれた。ユーザの違いという陽に与えられるドメインが存在する時に、それをどう取り入るのがベストなのか?vectorのembeddingとして扱って、どこかのレイヤにconcatしてやるべきなのか、matrixとして扱って各単語の畳み込み方を変えるべきなのか。今回はfeatureの比較はしているもののモデルの構造的は上記を全部やってる感じ。個人的にはそこが知りたい。

ただ、そもそものモデルとして画像と違って直接の入力に2次元的な広がりが期待されないテキストにCNNを使う、という部分がどうもやはり馴染めない・・・。複数ドメインのEmbeddingを調整する部分も、max-poolingするというのはCNNを使ったテキスト処理では一般的なのだろうがどうも乱暴に見える。まだaverageした方が良いんじゃないのか?

質問したら、LSTM系列でも恐らくそんなに変わらない性能が出ると考えている。ただ、N-gramに区切ってCNNを使ったほうが訓練が速いので、今はそうしているというようなことを言っていた。


Tutorial T-4 : Quality Estimation for Language Output Applications [Carolina Scarton, Gustavo Henrique Paetzold, and Lucia Specia]

スライド

parsing / translation・summarization(simplification)etc...といったNLPタスクの出力に関する自動評価について、shared taskの結果など参照しながらの話。 NLPタスクにおける出力結果に対してきっちり定まる数値評価が可能な指標、例えば翻訳であればBLEUなどが挙げられるが、そうした指標の下での数値的な改善が必ずしも人間の感覚での改善と一致するとは限らない。しかし逐一人手で評価するにはあまりにコスト高だというジレンマがある。 そのため翻訳・要約などの出力文に対して人間がどう評価するかを予測する事を目標としたタスク。

QATS 2016 shared taskという初のsimplificationに関する自動評価タスクが開催されたらしい。評価は出力されたテキストの5段階評価のregression, もしくは good/ ok/ bad の3段階clasifficationなどで。

自動評価システムのために必要なコンポーネントは以下のように分類される、と述べ、 Sentence, Word, Documentといった異なる長さのテキストに対するアプローチを検討していた。

  1. Definition of quality: what to predict and at what level ( Word/phrase, Sentence , Document , ...)
  2. (Human) labelled data (for quality)
  3. Features
  4. Machine learning algorithm
sentence-level QE

翻訳を始めとして一番主流なNLPタスクの出力結果。 出力の質に対して1~5のラベリングをして、QE結果と人間のラベルとの相関係数を見ている。 モデルとしてはSVMなどのkernel-basedの方法が多い。NN系はデータの少なさからまだなかなか訓練が難しくなる。 といってもPredicting HTER(Human-mediated Translation Edit Rate) @WMT16 の結果では結構RNNとSVMのハイブリッドな手法が上位にちらほら。

word-level QE

一部のアプリケーションではより細かな、例えば文の中で翻訳結果が怪しい場所にハイライトしたい・・・などのような時に単語レベルでQEしたい場合がある。文に比べてよりスパースになるので、当然さらに難しくなる。 出力結果に対してその単語をそのまま出力してよい = OK , 単語の置換 or 挿入が必要 = BAD の2値ラベルを推定して、gold standard とのF1値を比較。

モデルは
* それぞれの単語を独立にclassification
* CRFなどによるsequence labelling
* featureをまとめてNNで
などが考えられる。

Document-level QE

sentence-levelでのQE結果をシンプルに平均を取るなりすればDocument-level QEになるのでは?という考え方もあるが、ある出力文が完璧でも全体として意味の分からない文書になってしまう場合や、その逆などが十分に考えられる。そのため、今回featureとしてはこれまでの単語レベルでの並びやカウントに加えて、談話構造に関する情報(EDUやRSTのrelation)も用いている。

またターゲットととなるラベルについて、文の質の1~5段階などで数値化などといったものは元々主観的な指標であるが、Document-level QEのようにその長さから人手によるラベル付けのコストが大きい場合、よりばらつきが大きくなってしまう。既存研究ではBLEUやMETEORの値を推定する事を目標とすることが多いらしいが、こうした数値は文書全体の良し悪しとは独立に決まる指標であり、文書内の文脈や談話構造といったものを考慮できているかと考えると理想的なものとは言えない。
そのためここでは、出力結果に対する人間の編集率 HTER(Human-mediated Translation Edit Rate) を用いる事を提案している。 ラベルは文脈・編集順序に関わらずその文単体として修正されたものを  PE_1 、他の文との文脈との兼ね合いでさらに修正されたものを PE_2 としている。細かい基準・ラベル付けの手順は不明。

最終的なスコアはスライドによると以下の式。この辺り理解がかなり怪しい。

{ \displaystyle
w_1 ・ PE_1 × MT + w_2 · PE_2 × PE_1
}

MTはHTERの値、 PE_1, PE_2 は文脈に依らない・依る編集があったかどうか(0/1が正解ラベルとして入る?)だと思うのだけどちょっと自信がない部分。 このスコアについての推測値と実際の値の相関係数によって自動評価の精度を評価している。