SlideShare a Scribd company logo
自然言語処理によるテキストデータ処理
大阪大学大学院情報科学研究科
荒瀬 由紀
テキストデータを用いた様々なサービス
•テキスト分類
• レビューの感情値(ポジティブ・ネガティブ)推定
• ニュースのトピック(スポーツ、政治、etc.)推定
•系列ラベリング
• 文書から人名や組織名、商品名を抽出
•テキスト生成
• 機械翻訳
• 対話システム
3
テキスト分類
文・文章に対しラベルを予測
4
建物やお部屋は古いですが、広くて
清潔で快適に過ごせました。
とても静かでゆっくり休めました。
部屋は広いですがちょっと古いです。
確かに静かですが周りに何もなく、
子供たちは退屈してしまいました。
系列ラベリング
文中のスパンとラベルを同時に予測する問題
5
有馬温泉最古の宿という陶泉さんに泊まりました。歴史ある建物に感動。
谷崎潤一郎も泊まったらしいです。
人名
組織名地名
ルールベースの手法
シンプルな問題であればルールで解決できる
•ホワイトボックスで動作の予測が容易
6
素晴
らしい 最高
Yes Yes
素晴らしい最高のホテルでした!
入力 出力
ルール
コンピュータでパターンを学習
機械学習
データからルールを
直接「学習」
入力
出力
7
しかし実際の多くの問題は複雑
•ルールの導出が困難
•ルールのメンテナンスが煩雑
建物やお部屋は古いですが、広くて
清潔で快適に過ごせました。
とても静かでゆっくり休めました。
人間には言語化できない直感がある
ルール化できなくとも判断はできる
※ 裏を返すと、人間の判断が割れる問題は機械学習で
も困難
8
建物やお部屋は古いですが、広くて清
潔で快適に過ごせました。
とても静かでゆっくり休めました。
部屋は広いですがちょっと古いです。
確かに静かですが周りに何もなく、
子供たちは退屈してしまいました。
ラベルを収集し、機械学習
教師あり学習
•入力と出力のペアが「教師」(訓練データ)として与
えられる
•「入力」を「出力」にマッピングさせる「モデル」を、
訓練データを用いて学習する
9
入力
𝑥𝑥
出力
𝑦𝑦
モデル
𝑓𝑓
教師あり学習は、入出力の関係𝑥𝑥 → 𝑦𝑦を推定する問題
様々な教師あり機械学習
マッピングを表現するモデルには様々なものがある
• 深層学習(ディープラーニング)
• サポートベクターマシン(SVM)
• ランダムフォレスト
• …
10
入力
𝒙𝒙
出力
𝑦𝑦
モデル
𝑓𝑓
高次元の行列の計算
(掛け算など)
テキストは記号
•計算するためには入力𝒙𝒙は数値でないといけない
•記号→数値(ベクトル)に変換する仕組みが必要
11
素晴らしいホテルです
記号の世界
最高の宿でした
ごはんが美味しい
とても静かでゆっくり休めました
猫は最高
数値(ベクトル)の世界
0.012 ⋯ −0.0087
0.031 ⋯ −0. 746
0.029 ⋯ 0. 225
ナイーブな表現方法:ワンホットベクトル
•単語の出現を 0/1 で表現
•非常に次元が大きい(次元数=単語の種類数)
•語順や文法構造を表現できない
12
単語数次元(~1M)
とても静かでゆっくり休めました = [0 1 0 0 … 1 0 0]
大規模ニューラル言語モデルによる変換
•近年の言語処理分野における大きなブレイクスルー
•文のベクトルへの変換に使える
13
ニューラル
ネットワーク
とても静かで
ゆっくり休めました
タスクを解く
ための
ニューラル
ネット
[0.5 1.2 ⋯ 0.7]
数千次元の密ベクトル
大規模ニューラル言語モデル
•何を学習する?
• 文が表す意味を表現したい
•どう学習する?
• 大規模データでの学習が必要
→低コストな学習データを使いたい
14
大規模ニューラル言語モデル
•単語の穴埋め問題を解く学習
• 他にも:次の単語予測
•人間が書いた大量の文章を
そのまま学習に使える
• 例えばWebサイト:世の中に
16臆以上
0
200000000
400000000
600000000
800000000
1E+09
1.2E+09
1.4E+09
1.6E+09
1.8E+09
2E+09
世界のWebサイト数
https://www.internetlivestats.com/total-number-of-websites/
15
BERTモデルの学習(Devlin et al. 2019)
16
ニューラルネットワーク
ジョン [Mask] 犬 に 噛まれたは
獰猛な
BERTモデルの学習(Devlin et al. 2019)
17
ニューラルネットワーク
ジョン 犬 に 噛まれたは
凶暴な
[Mask]
BERTモデルの学習(Devlin et al. 2019)
18
ニューラルネットワーク
ジョン 犬 に 噛まれたは
隣の
[Mask]
BERTモデルの学習(Devlin et al. 2019)
19
ニューラルネットワーク
ジョン 凶暴な に 噛まれたは
犬
[Mask]
BERTモデルの学習(Devlin et al. 2019)
20
ニューラルネットワーク
ジョン 凶暴な に 噛まれたは
チワワ
[Mask]
BERTモデルの学習(Devlin et al. 2019)
21
ニューラルネットワーク
ジョン 凶暴な に犬は
噛まれた
[Mask]
BERTモデルの学習(Devlin et al. 2019)
22
ニューラルネットワーク
ジョン 凶暴な に犬は
吠えられた
[Mask]
BERTモデルの学習(Devlin et al. 2019)
23
ニューラルネットワーク
ジョン 凶暴な に犬は
殴られた
[Mask]
BERTの性能
•言語理解に関する11のタスクで既存研究を大幅に
上回る最高性能を達成
•SQuAD 1.0 (Rajpurkar et al. 2016) では人間の正答率を
上回る
24
大規模ニューラル言語モデルによる
文のベクトル化
•現在の言語処理におけるスタンダード
•日本語モデル
• NICT BERT 日本語 Pre-trained モデル (Wikipedia)
• Laboro.AI日本語版BERT (2.6M Webページ)
• hottoSNS-BERT (85M Tweets)
• 日本語ビジネスニュースBERT (ビジネスニュース3M記事)
•日本語特有の前処理が必要
25
テキストの前処理
26
日本語処理は前処理が重要
•単語境界が非自明:「単語」の定義自体とても難しい
•英数字・空白・記号の全角・半角
•顔文字カルチャー (*‘∀‘)
27
「単語」って難しい
•深層学習以前は単語分割を行うのが常識だった
• 単語を特徴量として使用(例:ワンホットベクトル)
•単語分割ツールの仕様の違いによって最終タスクの
性能が影響を受ける
• しかし一方で、単語分割と最終的なタスク性能とは
必ずしも一致しない
•語彙サイズ(単語ベクトル表現)の増大
•未知語の問題
28
サブワードの台頭
処理単位は「単語」でなくてもいいのでは!?
29
サブワードの台頭
•サブワード
• 高頻度語はそのまま使い、低頻度語は細かい単位
(部分文字列)に分割する
•語彙サイズの低減(一般的には8k~32kサブワード)
•未知語問題の解消
• 未知語は部分文字列に分割される
30
Byte Pair Encoding (Sennrich et al. 2016)
•サブワード分割の標準的なアルゴリズム
1. 文字で分割(1文字=1サブワード)
2. 全サブワードの内、最も頻度の高いペアを新たなサブ
ワードと見なす
3. 指定された語彙サイズになるまで2を繰り返す
•単語分割済みの文を入力する場合は、空白も1文字と
みなされる
31
動作例
入力
すももとももと
ももいちご
頻度
もも:7
もと:2
とも:2
すも:1
… 32
入力
す[もも]と[もも]と
[もも]いちご
頻度
[もも]と:2
す[もも]:1
[もも]い:1
…
入力
す[ももと][ももと]
[もも]いちご
頻度
す[ももと]:1
[ももと][ももと]:1
[もも]い:1
…
サブワードの利用
•欧州語間の機械翻訳では文を直接サブワード分割する
のが標準的
• 単語という単位を必ずしも扱わなくて良い
• 日本語翻訳でもこの流れは加速しそう
•日本語の系列ラベリングのように単語の「境界」が
重要なタスクでは単語分割が必要
• 単語分割してからサブワード分割
33
前処理は訓練済みモデルの前処理設定に
合わせる
NICT BERT 日本語 Pre-trained モデルの場合
https://alaginrc.nict.go.jp/nict-bert/index.html
文の分類・系列ラベリング
35
文の分類問題
•文全体に対してついたラベル(一つでも複数でも)を
予測する問題
•ポジネガ判定でも、トピック分類でも、レビューの
★数分類でも、基本的には同じ枠組みで解ける
36
ニューラル
ネットワーク
とても静かで
ゆっくり休めました
タスクを解く
ための
ニューラル
ネット
[0.5 1.2 ⋯ 0.7]
数千次元の密ベクトル
BERTによる分類
37
(Devlin et al. 2019) Fig. 4 より
系列ラベリング
文中のスパンとラベルを同時に予測する問題
38
有馬温泉最古の宿という陶泉さんに泊まりました。歴史ある建物に感動。
谷崎潤一郎も泊まったらしいです。
人名
組織名地名
IOBタグに変換
IOB (Inside-outside-beggining) タグに
変換することで、各単語の分類問題に
変換できる
•B:スパンの始まり
•I:スパンの中身
• O:それ以外
39
有馬 B-LOC
温泉 I-LOC
最古 O
の O
…
陶泉 B-ORG
さん O
に O
…
BERTによる系列ラベリング
40
(Devlin et al. 2019) Fig. 4 より
実装・実験テクニック
41
ライブラリ
•深層学習はPythonの実装環境が充実
• PyTorch
• TensorFlow
•大規模ニューラル言語モデルを使うためのライブラリ
• Transformers
•ライブラリの実装を流用できる問題では数十行のプロ
グラムで記述可能
42
パラメータとハイパーパラメータ
•パラメータ:深層学習モデルの本体
•ハイパーパラメータ:モデルの外にいる設定
•典型的なハイパーパラメータ
• 最適化手法、学習率
• 語彙サイズ、レイヤ数
• バッチサイズ
• Dropout率
• Layer normalizationの有無
43
ニューラル
ネットワーク
実際は巨大な行列
データセットの分割
• 訓練セット:パラメータの学習
• 開発セット:学習終了の判断・ハイパーパラメータ調整
• テストセット:最終的な性能評価
• 訓練 : 開発 : テスト = 80 : 10 : 10 が目安
44
訓練の手順
45
訓練
開発セットで評価
テストセットで最終評価
ハイパーパラメータ
最も性能が高い
ハイパーパラメータを採用
訓練済みモデルで評価
学習の途中性能の評価
Early-Stopping
•モデルの訓練を止めるため
の手法
•Patience: 訓練終了を決断す
る回数
• 深層学習が最小化する損失
関数の値
• 最終タスクでの評価関数
•Minimum delta: 性能変化と
見なす差分
46
訓練回数
エラー率
訓練セット
開発セット
初期値依存性
•深層学習モデルは初期値依存性がある
•初期値をランダムに設定し、複数回実験した
平均性能・分散をチェックする
47
学習データ構築
•データのラベル付け
• 事前学習済みニューラル言語モデルを使用する場合、
数千~数万件のアノテーションが必要
•ラベル一致率の評価:κ値を計測
• Cohen’s κ:アノテータが2名の場合
• Fleiss’ κ:アノテータが3名以上の場合
•一致率の低いデータを学習する意義は薄い(かつ学習
も困難)
48
学習データ構築
•その問題をよく理解している専門家にラベル付けして
もらう
• 例:特許の分類
•専門知識がなくともラベル付けできる問題であれば
クラウドソーシングが有力
• 例:テキストのポジティブ・ネガティブ判定
49
クラウドソーシングによるラベル付け
•上手く利用できれば非常に強力
• 速い
• ただし試行錯誤は必要
•ガイドライン作成
• 重要なアノテーション基準を簡潔に伝える
• 例は必須
•一般的にノイズが加わりやすい
• 複数人のアノテータに依頼し、外れ値を除去
50
まとめ
•深層学習モデルで言語処理するにはテキストのベクト
ル化手法が重要
•前処理に注意
•開発セットを切り分けてハイパーパラメータ設定
•テストセットを切り分けて性能評価
51

More Related Content

What's hot

データサイエンティストのつくり方
データサイエンティストのつくり方データサイエンティストのつくり方
データサイエンティストのつくり方
Shohei Hido
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
KnowledgeGraph
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有
Naoaki Okazaki
 
XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性
西岡 賢一郎
 
Data-Centric AIの紹介
Data-Centric AIの紹介Data-Centric AIの紹介
Data-Centric AIの紹介
Kazuyuki Miyazawa
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
Yoichi Ochiai
 
文献調査をどのように行うべきか?
文献調査をどのように行うべきか?文献調査をどのように行うべきか?
文献調査をどのように行うべきか?
Yuichi Goto
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
Takayuki Itoh
 
“機械学習の説明”の信頼性
“機械学習の説明”の信頼性“機械学習の説明”の信頼性
“機械学習の説明”の信頼性
Satoshi Hara
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
Atsushi Hayakawa
 
ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】
Yuki Arase
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
ychtanaka
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
Deep Learning Lab(ディープラーニング・ラボ)
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
Deep Learning JP
 
画像処理AIを用いた異常検知
画像処理AIを用いた異常検知画像処理AIを用いた異常検知
画像処理AIを用いた異常検知
Hideo Terada
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
nlab_utokyo
 

What's hot (20)

データサイエンティストのつくり方
データサイエンティストのつくり方データサイエンティストのつくり方
データサイエンティストのつくり方
 
ナレッジグラフ入門
ナレッジグラフ入門ナレッジグラフ入門
ナレッジグラフ入門
 
研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有研究室における研究・実装ノウハウの共有
研究室における研究・実装ノウハウの共有
 
XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性XAI (説明可能なAI) の必要性
XAI (説明可能なAI) の必要性
 
Data-Centric AIの紹介
Data-Centric AIの紹介Data-Centric AIの紹介
Data-Centric AIの紹介
 
先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15先端技術とメディア表現1 #FTMA15
先端技術とメディア表現1 #FTMA15
 
文献調査をどのように行うべきか?
文献調査をどのように行うべきか?文献調査をどのように行うべきか?
文献調査をどのように行うべきか?
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
 
“機械学習の説明”の信頼性
“機械学習の説明”の信頼性“機械学習の説明”の信頼性
“機械学習の説明”の信頼性
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
 
ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】
 
工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方工学系大学4年生のための論文の読み方
工学系大学4年生のための論文の読み方
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
AI と個人情報 ~AI 学習用データとしての個人情報と AI 処理対象としての個人情報~
 
LDA入門
LDA入門LDA入門
LDA入門
 
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
[DL輪読会]BERT: Pre-training of Deep Bidirectional Transformers for Language Und...
 
画像処理AIを用いた異常検知
画像処理AIを用いた異常検知画像処理AIを用いた異常検知
画像処理AIを用いた異常検知
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
 

More from Yuki Arase

闘病ブログからの医薬品奏功情報認識
闘病ブログからの医薬品奏功情報認識闘病ブログからの医薬品奏功情報認識
闘病ブログからの医薬品奏功情報認識
Yuki Arase
 
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
Yuki Arase
 
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
Yuki Arase
 
SPADE: Evaluation Dataset for Monolingual Phrase Alignment
SPADE: Evaluation Dataset for Monolingual Phrase AlignmentSPADE: Evaluation Dataset for Monolingual Phrase Alignment
SPADE: Evaluation Dataset for Monolingual Phrase Alignment
Yuki Arase
 
NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み
NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み
NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み
Yuki Arase
 
Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)
Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)
Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)
Yuki Arase
 

More from Yuki Arase (6)

闘病ブログからの医薬品奏功情報認識
闘病ブログからの医薬品奏功情報認識闘病ブログからの医薬品奏功情報認識
闘病ブログからの医薬品奏功情報認識
 
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
 
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[旧版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
 
SPADE: Evaluation Dataset for Monolingual Phrase Alignment
SPADE: Evaluation Dataset for Monolingual Phrase AlignmentSPADE: Evaluation Dataset for Monolingual Phrase Alignment
SPADE: Evaluation Dataset for Monolingual Phrase Alignment
 
NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み
NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み
NLP R&D 育成と連携:NLP若手の会 (YANS)の取り組み
 
Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)
Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)
Monolingual Phrase Alignment on Parse Forests (EMNLP2017 presentation)
 

自然言語処理によるテキストデータ処理