自然言語処理的視点から見た「覚え違いタイトル集」

7年振りに記事を書く。


異なる表現で書かれたテキストの同義性の認識は、自然言語処理がほとんど常に直面する本質的な問題である*1。ある言語表現と同等の意味を持つ別の言語表現を認識/生成するタスクは,パラフレーズ(言い換え)認識/生成として、言語処理において昔(少なくとも1990年代)からある問題である。

福井県立図書館サイトの「覚え違いタイトル集」では、利用者が誤って覚えた図書タイトルと正しい図書タイトル*2のリストが公開されている。
https://www.library-archives.pref.fukui.lg.jp/tosyo/category/shiraberu/368.html

例えば、次のようなものがある。(誤 → 正)

  • 強い風が吹いてきた → 風が強く吹いている
  • さんまのおふだ → さんまいのおふだ
  • 「バトルロイヤル」もしくは「バトルロイアル」 → バトル・ロワイアル
  • 「探さない」とかそんな感じのヤツ → 求めない

Twitterで話題になっているように、エンターテインメントとしてリストを眺めても楽しめるが、言語処理で対処するにはどうするかという観点で眺めても、示唆的である。

福井県立図書館の「覚え違いタイトル集」久々に見たらやっぱり面白すぎて無理だった😂https://t.co/2Dp3ZkS8RS pic.twitter.com/jwirwM3xb0— きっかわ (@tegenosan) 2021年1月21日

 「覚え違いタイトル集」にあるペアは、二つのテキストの同義性または類似性を判定するタスク*3と考えると、言語処理要素技術を総動員しても解けない超高難度の事例が豊富にある。そもそも「意味が同じ」というパラフレーズの関係を超えた超パラフレーズ的事例で、一種の誤り訂正でもある。言語処理の対象としてユーザ生成テキスト(ブログやSNSの投稿)を眺めていると、人間の言語使用の自由さ・柔軟さと言語処理の難しさを考えさせられるが、本タイトル集ではそれに勝るとも劣らない複雑な言語現象が生じている。

そのことを踏まえた上で、以下、正タイトルが誤タイトルに変更される要因に基づいてペアを分類してみる。 

同義・類義(語レベル)

  • あと全部ホリデイ → 残り全部バケーション
  • よるのおばけ → よるのばけもの
  • 悪者 → 悪人
  • カウンセラー → セラピスト
  • そのへんの石 → 路傍の石

兄弟概念(上位概念が共通)(語レベル)

反義(語レベル)

  • 100万回死んだねこ → 100万回生きたねこ
  • けむたい先輩 → けむたい後輩
  • 都市消滅 → 地方消滅
  • 蟹の横ばい → 蟹の縦ばい

文字の視覚的類似

  • 痔 → 痣
  • 蚊にピアス → 蛇にピアス
  • 権児楼 → 稚児桜
  • 城中の露 → 城中の霜

文字列の類似

  • サラダ日記 → サラダ記念日
  • 入札 → 入れ札

音的類似

動詞の付属要素の変更

  • バトンを渡す → そして、バトンは渡された
  • 「払わない」というタイトルの本 → 払いません。

特に同義ではない名詞・動詞への変更

  • 天の光はすべて道 → 天の光はすべて星
  • もりのがっこう → くまのがっこう
  • 『世界のたね』と似たようなタイトルの本 → 未来のたね
  • 人魚の住む家 → 人魚の眠る家
  • こころの医者、本を聴く → ココロ医者、ホンを診る

節レベルの同義・含意

  • なぜ生きているのか → 生きているのはなぜだろう
  • 郷里忘れ難し… → 故郷忘じがたく候
  • 私、残業しません → わたし、定時で帰ります。
  • いぬたちのさいごのひ → 犬たちをおくる日
  • この空間を埋めよ → 空白を満たしなさい

構造の変更

  • アーモンドチョコレート入りのワルツ → アーモンド入りチョコレートのワルツ
  • 人生が片付くときめきの魔法 → 人生がときめく片づけの魔法
  • インド2千年前のレシピ → チャラカの食卓 二千年前のインド料理

数値表現・助数詞の変更

複雑な例(類義語+音的類似+高度な含意)

複雑な例(その他)

  • 肌の色 → ぼくはイエローでホワイトで、ちょっとブルー
  • ストラディバリウスはこう言った → ツァラトゥストラはこう言った
  • 俺がいて俺だけだったみたいなタイトル → 俺か、俺以外か。
  • 「鳥の学者だけどそんなに鳥が好きではない」みたいなタイトル → 鳥類学者だからって、鳥が好きだと思うなよ
  • 食パン食べると乳がんになるみたいなタイトルの本 → 乳がん患者の8割は朝、パンを食べている
  • ほんださんが書いたこうやって生きなさいって感じの本 → 気楽に生きれば、自分が活きる(本多信一

最後の方は分析が困難で分類を諦めたが、人間の覚え違いでは、意味的類似(同義、類義、反義)、音的類似、視覚的類似、文字列的類似などの観点で同一視が行われていることがわかる。つまり、これらの観点は類似性を捉える特徴として有用であり、実際にいろいろな研究で利用されている場面を見かける。*4

大規模事前学習ニューラルネットモデルに代表される最近の自然言語処理技術の進歩によって、数年前から考えると驚くような質・精度の向上が実現されてきている*5一方で、まだまだ解けていない問題も存在する。本タイトル集は、解けない/解くべき問題を考えるヒントを与えてくれる貴重な資源かもしれない。

*1:とは言いつつ、著者の最近の研究トピックである単語分割は、意味の領域に踏み込まなくても解けるタスクである。

*2:「覚え違い?」と「こうかも!」という列名となっており、後者は図書館員のサジェストのように見えるが、投稿フォーム経由でユーザ自身が「正しいタイトル」として入力した情報のようである。

*3:正解候補提示までを自動で行うなら、入力に対して候補を探索し、各候補を評価して最適な候補を選択するタスクとなる。

*4:これらの特徴の使用頻度には差があり、視覚的類似性は主に漢字のような表語文字を扱う場合に限られる。

*5:BERTをはじめとするセサミストリートファミリーの各モデル、印象的な事例ではGPT-3やDALL·Eなど。

Emacs キーバインド 備忘録

すべてのキーバインドを表示

M-x describe-bindings

バッファ再読み込み

M-x revert-buffer

選択リージョン内の文字数をカウント

M-x count-lines-region

正規表現検索(前方,後方)

Ctrl-u Ctrl-s
Ctrl-u Ctrl-r

カーソル部分の英字を大文字,小文字に修正

M-c
M-l

行頭からカーソルまでの範囲を削除(キルリングに保存)

M-x 0 Ctrl-k

Confidence-Weighted Linear Classification を読んだ

最近,オンライン学習アルゴリズムとして,SCW が話題に上っている気がしたので,まずは,手始めに CW の論文を読んでみることにした.

Confidence-Weighted Linear Classification.
Mark Dredze, Koby Crammer and Fernando Pereira.
Proceedings of the 25th ICML, 2008.

CW(confidence-weighted)は,強力なアルゴリズムであるがノイズに弱いという弱点を持つ.一方,SCW(soft confidence-weighted)は,ノイズに頑強となるように CW を拡張したモデルである.

以下,CW の論文の内容について書く.


背景

  • NLP の多くのタスクにおいて,素性ベクトルは非常に高次元かつ,多くの素性(=素性ベクトルの要素)は低頻度にしか出現しない.しかし,低頻度な素性も分類において重要な役割を果たす.
  • 一方,代表的な線形分類アルゴリズム(perceptron や PA)では,ある素性に対応するパラメータは,その素性が出現した時にしか更新されない.
  • そのため,頻繁に現れる素性のパラメータは適した値になりやすいが,稀にしか現れない素性のパラメータは不正確な値になりやすい.

上のような背景の下,任意の素性に対して一様にパラメータの更新を行うのではなく,パラメータの confidence という概念を導入し,confidence に基づいて素性ごとに更新の仕方を変化させる,というのが CW において肝となる考え方である.

では,更新の仕方を状況に応じて変化させるのはいいとして,具体的にどのようにするのがよいだろうか.次の例を見ながら,現状のアルゴリズムを適用する際に起こる問題点について見てみよう.

  • 商品レビューの肯否極性(ポジティブまたはネガティブ)を決定するセンチメント分析を考える.また,素性ベクトルは n-gram で表されるとする.
  • "I liked this author." というポジティブなレビューがあったとすると,"liked" と "author" に関する重みが更新される.
  • これらは一般的な単語であるため,対応する重みは,いくつかの事例の学習を経て正しい値に収束する."liked" の重みは正の値,"author" はネガティブなレビューにも出現するため(理想的には)0 となる.
  • 次に,"I liked this author, but found the book dull." というレビューがあったとすると,"like" および "dull" の重みが減少するように更新される.なお,"dull" はこのレビューがネガティブである根拠となる単語であり,また,その出現は低頻度であると考えられる.
  • この場合における問題点は,"like" の重みが不当に修正されることと,頻出でない単語 "dull" の重みが十分に学習されないことである.

上に挙げた問題点に対処するには,次のような方法が考えられる.

過去の事例についての情報――0/1 値をとる素性に対しては出現回数(より一般的に,実数値をとる素性に対しては分散)を記憶しておき,出現回数の値が大きいほど,素性の重みは高い confidence をもつと考える.そして,confidence の低い素性ほど大きく重みを更新すればよい.

直感的には,confidence の高い素性("liked")は,既に十分に重みが学習されているので,重みの値を大きく変える必要はなく,逆に,confidence の低い素性("dull")は,分類に十分に寄与するようにするために重みを大きく更新させる必要があるということか.

CW が提案されるに当たっての背景・モチベーションは以上の通りである.confidence を用いた定式化の妥当性に納得できる一方,ノイズに弱いと言われるのにも頷ける.

ここからの詳細な定式化やアルゴリズムの部分が,この論文の重要であり面白い部分であるのだが,既にここまで書くので力尽きたので,それらについては機会があれば後日書くことにしたい.

最後に,CW に関して参考にしたスライド,ブログのエントリを挙げておく.
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
Exact Soft Confidence-Weighted Learning (ICML2012) 読んだ - kisa12012の日記

環上の代数(後編)

環上の代数(前編)で代数の2つの定義について述べた。結論から言うと、2つの定義が異なるのは見かけ上のことであって、それらは同じ構造を持つ代数系を表している。

そのことを確認するために、改めて2つの定義を与える。以下、簡単のため、環 R は可換環であるとしておく(可換環でない場合を考える際は、適宜 R-加群を左 R-加群と読み替えてほしい)。

まず、(M) に対応する加群から代数を構成する定義を次で与える。


定義1 環 R 上の加群 A において,(A における和と合わせて)A が環となるような積が定義され,x,y∈A および c∈R に対して

{\quad (cx)y = x(cy) = c(xy)}

が成り立っているとき,A を R 上の代数という.

定義1は、(M) におけるベクトル空間を加群に一般化しただけにすぎない。
要するに、加群に積を入れて環としての構造を持つようにしたものが代数であると言えるだろう。

次に、(H) に対応する環から代数を構成する定義を与える。


定義1' 環 R と環 Aの間に凖同型

{\quad f:~A \rightarrow R}

が存在し,Im f の元が A の元と可換である,つまり,Im f⊂Z(A) (Z(A) は A の中心)であるとき,RからAへの作用を

 {\quad R \times A \ni (c, x) \mapsto cx := f(c)x \in A}

と定義すると,A の和とこの作用に関して A は R-加群となる.
また,x,y∈A および c∈R に対して

{\quad (cx)y = x(cy) = c(xy)}

が成立する.このとき,A を R 上の代数という.

このように定義した代数 A は、定義1と同じ構造・性質を持つことがわかるだろう。
つまり、2つの環の間に準同型写像が存在するとき、上のように作用を定義することで、環は「自然に」代数としての構造を持つのである。

代数 A が R-加群としての構造を持つこと、積とスカラー倍についての条件が成り立つことの証明は易しいので省略するが、c(xy)=x(cy) の成立のために Im f⊂Z(A) が必要となっている。

なお、環からの構成の定義を理解する際には、Wikipedia結合多元環のエントリを大いに参考にした。

環上の代数(前編)

環上の代数についての疑問が解消したのでそれについて書く。

堀田良之「代数入門―群と加群―」で環の基礎について学んでいると、序盤で「代数」という代数系が次のように定義されていた(文字等は原文と異なる)。


(H) 2つの環 R,A の間に環準同型

{\quad f:~R \rightarrow A}

が与えられ,それを固定して考えるとき,特に,A を R 上の(結合的)代数といい,f をその構造射という.
通常は,R が可換環で,f(R) の元がすべての A の元と可換である場合を考えることが多い.
(この場合,R 上の多元環ともいう.)

直後に多項式環 R[x1,...,xn] が R 代数の例として挙げてあったので、多項式環を一般化した概念なのかと思ったのだが、定義の後には例と命題が1つずつ載っていただけですぐにイデアルの節へと移ってしまい、そのときは結局のところ「代数」がどういう代数系を表しているのかよくわからないまま放置して先に進むことになった。

それから暫く後、松坂和夫「代数系入門」で環論に再入門した際、体 K 上の代数について次のように書かれていた。


(M) 体 K 上のベクトル空間 A において,さらに乗法が定義され,加法とこの乗法に関してAが環をなし,すべての x,y∈A およびすべての c∈K に対して

{\quad (cx)y = x(cy) = c(xy)}

が成り立っているとき, A を K 上の線型環または多元環,あるいは代数という.

この1文を読んで、加法と乗法とスカラー倍(とそれらの演算の関係を定める条件)が定義されたベクトル空間(あるいは環)を拡張したようなものなのかと合点がいき、「どういう代数系なのか」については納得したものだったが、(H)の定義とはかけ離れていて関連が見えない。

先日、雪江明彦「代数学2 環と体とガロア理論」で環論に再々入門していた際、再び代数の定義に出くわしたので、今度こそ理解しようと思って調べることにしたのである。

…と、導入まで書いた時点で、思った以上に記事が長くなりそうなので続きは次回としよう。