Slide 1

Slide 1 text

chiVe: 製品利用可能な日本語単語ベクトル資源の実現へ向けて 形態素解析器Sudachiと超大規模ウェブコーパスNWJCによる分散表現の獲得と改良 2020年9月10日 ○久本空海, 山村崇, 勝田哲弘, 竹林佑斗, 高岡一馬, 内田佳孝 ワークスアプリケーションズ 岡照晃, 浅原正幸 国立国語研究所 第16回テキストアナリティクス・シンポジウム チャ イ ブ

Slide 2

Slide 2 text

概要 ● chiVe: 製品利用可能な日本語分散表現リソース ○ 100億語規模のWebコーパス NWJC ○ 形態素解析器 Sudachi による複数粒度分割 ○ Apache 2.0 ライセンスで一般公開、商用利用可能 ● chiVeの更なる改良 ○ 未知語の取り扱い ○ 同義語辞書の活用 ○ ドメイン適応 2 github.com/WorksApplications/chiVe

Slide 3

Slide 3 text

事前学習済みの単語分散表現 ● “単語ベクトル Word Vector”, “単語埋め込み Word Embedding” ● コーパス(ラベル無しデータ)から、単語間の共起に基づき獲得 ○ 単語ごとの、数百次元程度の実数値ベクトル ○ word2vec, GloVe, fastText などが一般的 ● 様々なタスクで活用可能 ○ 「対象タスクと直接関係がない(大規模)コーパス」を活用 ● 公開リソースを利用することで、手軽に恩恵を得られる 3

Slide 4

Slide 4 text

主な日本語の分散表現リソース 様々なリソースが公開されているが、商用利用に難点ある場合も多い 4 学習コーパス 付記 chiVe NWJC 形態素解析器Sudachiによる複数粒度分割を活用(後述) nwjc2vec NWJC 100億語規模コーパスNWJCを利用 hottoSNS-w2v SNS, Wikipedia, Web 大規模なSNSやWebデータで学習、基本的に研究目的に限る 朝日新聞単語ベクトル 朝日新聞 朝日新聞のテキストで学習、基本的に研究目的に限る HR領域向け単語ベクトル 求人データ 求人検索エンジン「スタンバイ」のデータ Wikipedia2Vec Wikipedia 記事とリンクから、単語とエンティティの分散表現 係り受けに基づく日本語単語埋込 Wikipedia 単語系列の前後ではなく係り受け関係 fastText Wikipedia, CommonCrawl サブワード(文字n-gram)、157言語 BPEmb Wikipedia Byte Pair Encodingによる教師無し分割、275言語

Slide 5

Slide 5 text

chiVe: 製品利用可能な日本語分散表現リソース ● 100億語規模の超大規模Webコーパス NWJC (国語研) ● 形態素解析器 Sudachi による複数粒度分割(ワークス) ● Apache 2.0 ライセンスで一般公開、商用利用可能 5 Sudachiによる複数粒度分割の例 A単位 カ ン ヌ 国 際 映 画 祭 カ ン ヌ 国 際 映 画 祭 カ ン ヌ 国 際 映画 祭 B単位 C単位 用途によって 欲しい単位は違う チャ イ ブ

Slide 6

Slide 6 text

複数粒度の分割結果に基づく日本語単語分散表現 ● 一文に、異なる単位の対象語・文脈語: 全て学習に利用 ● 学習アルゴリズム自体は既存のものを利用 6 ※ 詳細は (真鍋+ 2019) ● → 各種タスクで、他の分散表現と比べて若干の向上 ● → 固有表現や複合語: その構成語との類似度が高くなることを確認

Slide 7

Slide 7 text

chiVe の一般公開 ● github.com/WorksApplications/chiVe ● Apache2.0: 商用利用可能 ● NLPライブラリ GiNZA や spaCy にも導入済 ● 複数バージョン ○ v1.0: Sudachi Full辞書 ○ V1.1: Sudachi Core辞書, 表記統制 ○ 複数の頻度足切りバージョンを用意 7

Slide 8

Slide 8 text

chiVe の更なる改良へ向けて 品質と利便性の向上へ向けて継続的に取り組んでいる 今回は3点紹介; 8 1. 未知語の取り扱い 2. 同義語辞書の活用 3. ドメイン適応

Slide 9

Slide 9 text

改良トピック1. 未知語の取り扱い 未知語(事前学習用コーパスに存在しない語)は大きな課題 ● ナイーブな対処法 ○ その語を無視する ○ ランダムな「未知語ベクトル」を割り当てる ● 未知語がタスクにおいて重要な場合、精度へ大きく影響 ● 全ての語を含むコーパスを用意することは非現実的 9

Slide 10

Slide 10 text

未知語に関する先行研究 未知語の「構成要素」から推定 ● サブワード: 語の文字n-gram ○ 接頭・接尾辞は強力なヒント ○ スペル誤りにも対応可能 ● 漢字部首, 読み, バイト列, ... 10 MIMICK (Pinter+ 2017) 文字から未知語ベクトルを生成 ※ 図は(Pinter+ 2017)より引用

Slide 11

Slide 11 text

提案手法: 既知の構成語から未知の複合語 ● Sudachiの複数粒度分割を活用 ● 複合語ベクトル生成モデル ○ 入力: 既知の構成語ベクトル ○ 出力: 生成ベクトル ○ 「既知の複合語ベクトル」を模倣 ● 文字n-gramより 有効なケースがありうると想定 11

Slide 12

Slide 12 text

予備的な実験の結果 ● 約4万のB,C単位語chiVeベクトル ○ 訓練セットでは損失減少 ○ 検証セットではかなり早期より再上昇 ○ → うまく汎化できていない ● 「生成ベクトルの近傍」上位10件に元ベクトルがある割合 ○ 検証/評価セットで約30% ○ それほどうまく模倣生成できていない ● 模倣は不十分でも「下流タスク」では有用かもしれない 12

Slide 13

Slide 13 text

生成ベクトルの類似例 「地方労働委員会」の近傍語と類似度 ※ 構成は「地方 / 労働 / 委員 / 会」 13 元ベクトル 生成ベクトル 1 1.000 地方労働委員会 0.695 人事委員会 2 0.745 中央労働委員会 0.690 労使委員会 3 0.656 公益委員会 0.682 労働政策審議会 4 0.652 地労委 0.673 地方労働委員会 5 0.643 労働委員会 0.668 組合法 ● そもそも、構成語から複合語の意味が成り立たないケースもある? ● 「名詞句」と「複合動詞」では勝手が違うはず ● 例: 見合わせる = 見る + 合う ? 模倣元ベクトルが 最上位ではない

Slide 14

Slide 14 text

提案手法の問題点と今後の予定 ● 実用上の難点 ○ 未知語が「既知の構成語」から構成されている必要がある ○ 構成語系列のスパンを特定する必要がある ○ 利用時にモデルによる生成が必要 ● 今後の予定 ○ 改良機構の模索、成功・失敗例の分析 ○ 文字・サブワードレベルからの未知語対応 ○ 種類(名詞句、複合動詞、...)や文字種(漢字、カタカナ語、...)に適した手法の検討 14

Slide 15

Slide 15 text

改良トピック2. 同義語辞書の活用 ● Sudachi同義語辞書 ○ 専門家が人手整備した言語資源 ○ 約6万の同義語対、詳細化した同義関係の情報を付与 ○ 商用利用可能なライセンスで一般公開済、継続的に更新 15

Slide 16

Slide 16 text

同義語資源からRealtion Embeddingを獲得 ● Relation Embedding ○ 「語彙の関係」自体を明示的に学習 ● Sudachi同義語辞書、日本語WordNet、分類語彙表を活用 ● TransE (Bordes+ 2013) などの手法を利用 ● 応用の想定 ○ 分散表現の可読性向上 ○ 同義語辞書の拡張時の補助 ○ 下流タスクの精度向上 16 h t r (head, relation, tail)

Slide 17

Slide 17 text

改良トピック3. ドメイン適応 ● ドメインにより単語の意味が異なることがある ○ 例: 「Java」コーヒー関連? プログラミング関連? ● しかし、ドメインのデータが小さいことが多々ある ● 検討手法: ドメイン類似度推定モデルによるデータの自動獲得 17 分散表現の 学習 大規模コーパス ドメインコーパス 類似データ ① 検索ステップ ② 学習ステップ 類似度 推定モデル

Slide 18

Slide 18 text

まとめ ● chiVe: 製品利用可能な日本語分散表現リソース ○ 100億語規模のWebコーパス NWJC ○ 形態素解析器 Sudachi による複数粒度分割 ○ Apache 2.0 ライセンスで一般公開、商用利用可能 ● chiVeの更なる改良 ○ 未知語の取り扱い ○ 同義語辞書の活用 ○ ドメイン適応 18 github.com/WorksApplications/chiVe 質問・議論のための Slack もあります!