ベクトル検索は同じ意味の他言語がヒットするとは限らない

  • 54件の日本語記事と、その英語への機械翻訳54件がある
  • これをベクトル検索する
  • 108件中、記事Xでの検索で、X以外の最寄り記事が「Xの翻訳」であるケースが58件、それ以外の「Xと同じ言語の記事」であるケースが50件
  • ベクトル空間を対訳ベクトル方向に潰してやれば言語を問わずにマッチする確率が50%→80%くらい改善する

31806 :西尾 泰和2023/4/3(月) 14:50 時間が全然足りてないんだけど時間ができたら試したいことメモ 英語と日本語の埋め込みベクトルが離れてる件 言語の違いを表現している1〜3次元くらいの成分があって、それを潰してやれば言語を問わず類似判定できる可能性がある そうなると日本語の質問で英語のWikipediaを元に回答できる この「言語を問わない類似内容判定」ができると、サイボウズ的文脈ではヘルプの多言語展開のコストが激減するはず

31828 :西尾 泰和2023/4/6(木) 0:10 自分のScrapboxの全英訳とGithub Actionsでの差分アップデートがようやく動くようになった これで31806の実験ができそう 全部の日本語記事の埋め込みベクトルは作ってあるので 1: 全部の英語記事の埋め込みベクトルを作る 2: 各記事の最寄り記事が「翻訳記事」である割合と「同じ言語の記事」である割合を出す 3: 対訳のベクトルの差を出して平均してみる(どの程度バラついてるか見ることも有用?平均より中央値がよい?寄与率トップ3次元くらいだす?) 4: 3の次元を潰した上で2をやる こんな感じかな? 続きは明日

3の対訳ベクトルに対してはPCAを掛けて寄与率高い順のベクトルを出すのと、何次元くらいあるのかの確認が必要だな

31836 :西尾 泰和2023/4/6(木) 21:09 1: 日本語のベクトルは以前使ったものを使い回せばいいやと思ったが、それだと英語との対応づけが複雑なのでまとめてやり直すことにした

  • 全部やり直すのには時間がかかるので待ってる間に小さいデータで試す 2: 小さいデータ108件中、自分以外の最寄り記事が自分の翻訳であるケースが58件、それ以外の自分と同じ言語の記事であるケースが50件 3: 日英翻訳の差分ベクトルを求めて、その軸方向の成分を潰す 4: 108件中、85件が自分の翻訳、23件が他の同じ言語の記事になった

というわけで対訳ベクトル方向に潰してやれば言語を問わずにマッチする確率が50%→80%くらい改善する 英文のドキュメントしかない場合に日本語で質問するとかの時に便利。