$30 off During Our Annual Pro Sale. View Details »

Python自然言語-赤石-2020-0219-3.pdf

makaishi2
February 19, 2020

 Python自然言語-赤石-2020-0219-3.pdf

makaishi2

February 19, 2020
Tweet

More Decks by makaishi2

Other Decks in Business

Transcript

  1. 著者が語る
    「Python⾃然⾔語処理⼊⾨」のツボ
    ⽇本アイ・ビー・エム
    Watsonテクニカルセールス ⾚⽯ 雅典
    2020年2⽉19⽇(⽔)
    ⽔曜ワトソンカフェvol.24

    View Slide

  2. ⾚⽯ 雅典
    ⽇本IBM Data & AI 事業部
    Watsonテクニカルセールス
    Executive IT Specialist
    講演者紹介
    【主な経歴】
    1987年⽇本アイ・ビー・エムに⼊社。東京基礎研究所で数式処理システムの研究開発に従事する。
    1993年にSE部⾨に異動し、主にオープン系システムのインフラ設計・構築を担当。
    2013年よりスマーターシティ事業、2016年8⽉にワトソン事業部に異動し、今に⾄る。
    現在は、Watson Studio / Watson OpenScaleなどデータサイエンス系製品の提案活動が主体。
    いろいろな領域を幅広くやっているので、IT基盤系・アプリ開発・プログラム⾔語・SQLチューニングはもとよりWatsonや
    機械学習、ディープラーニングまで⼀通り語れるのが⾃慢。
    【社外講師】
    ⾦沢⼯業⼤学⼤学院 ⻁ノ⾨キャンパス客員教授 「AI技術特論」講師
    【著作】
    書籍3冊執筆 (次ページ)
    この他雑誌や qiita (https://qiita.com/makaishi2) 執筆多数

    View Slide

  3. 書籍⼀覧
    Watson Studioで始める機械学習・深層学習
    https://www.amazon.co.jp/dp/4865941606/
    出版社: リックテレコム (2018/11/26)
    ISBN-13: 978-4865941609
    Watson StudioのUIツールを使ったモデル開発の説明
    最短コースでわかる ディープラーニングの数学
    https://www.amazon.co.jp/pd/4296102508/
    出版社: ⽇経BP (2019/4/11)
    ISBN-13: 978-4296102501
    ディープラーニングの数学的原理の解説書
    現場で使える!Python⾃然⾔語処理⼊⾨
    https://www.amazon.co.jp/dp/4798142689/
    出版社: 翔泳社 (2020/1/20) I
    SBN-13: 978-4798142685
    Discovery、Knowledge StudioなどWatsonのテキスト処理APIの解説があります
    おかげさまで増刷決定!
    引き続きご⽀援の程よ
    ろしくお願い致しま
    す。
    本⽇の講演対象

    View Slide

  4. IBM Blog
    「DS & AI タレントインタビュー」として記事が出ています。
    https://www.ibm.com/blogs/solutions/jp-ja/data_science_and_ai_akaishi-san/

    View Slide

  5. Agenda
    全体編
    Chapter 2 テキストデータの⼊⼿⽅法
    Chapter 3 Elasticsearchの設定⽅法
    Chapter 4 NLU + Pythonで評判分析
    Chapter 5 Word2Vecで単語をベクトル化

    View Slide

  6. 全体編

    View Slide

  7. 全体編
    本書の特徴
    ・Watsonとオープンソースを対等に扱っている
    ・Jupyter Notebook完全対応 (⼀部GUIを除く)
    ・Word2Vec / BERT

    View Slide

  8. ⽬次
    オープンソース
    Watson
    Chapter 1 テキスト分析とは
    1.1 テキスト分析の⽬的
    1.2 テキスト分析の要素技術
    Chapter 2 ⽇本語テキスト分析:前処理の勘所
    2.1 テキストの⼊⼿
    2.2 形態素解析
    Chapter 3 従来型テキスト分析・検索技術
    3.1 係り受け
    3.2 検索
    3.3 ⽇本語の検索
    3.4 検索結果のスコアリング
    3.5 類似検索
    Chapter 5 Word2VecとBERT
    5.1 Word2Vecモデル概要
    5.2 Word2Vecを使う
    5.3 Word2Vec利⽤事例
    5.4 Word2Vec関連技術
    5.5 転移学習とBERT
    APPENDIX 1 実習で利⽤するコマンド類の導⼊
    APPENDIX 2 Jupyter Notebookの導⼊⼿順
    APPENDIX 3 IBMクラウドの利⽤⼿順
    Chapter 4 商⽤APIによるテキスト分
    析・検索技術
    4.1 IBM Cloudにおけるテキスト分析系
    APIの全体像
    4.2 NLU(Natural Language
    Understanding)
    4.3 Knowledge Studio
    4.4 Discovery
    4.5 Discoveryを使う
    4.6 API経由でDiscoveryを使う
    4.7 Discoveryによるランキング学習
    4.8 APIを利⽤したDiscoveryのランキング
    学習

    View Slide

  9. Watsonとオープンソース
    テキスト分析に関する「機能地図」
    0 OE 5LM
    t
    t
    r
    hpae
    r p p
    WcA c
    cpm ae
    S m
    hp ae
    S
    S
    ae g
    2 +
    C F
    DM F C
    + +
    LM E 1 M 7 KL
    6 ,
    8
    55
    j
    s
    , K N
    0 82 6
    :7
    -E KL K
    IE L F
    vo
    t
    l

    View Slide

  10. Jupyter Notebook完全対応
    • Jupyter NotebookはオープンソースのPython開発環境。
    • 結果を含めてファイルに残せるので、学習・検証環境に最適
    • 本書のサンプルプログラムはすべてApacheライセンス。書籍
    を買わなくても使いたい放題!

    View Slide

  11. Word2Vec / BERT
    • テキスト分析系機械学習モデルとしてWord2Vecの実習あり
    • 最新モデルのBERTも紹介!
    BERT
    E
    [CLS]
    E
    1
    E
    [SEP]
    ... E
    N
    E
    1
    ’ ... E
    M

    C T
    1
    T
    [SEP]
    ... T
    N
    T
    1
    ’ ... T
    M

    [CLS] Tok 1 [SEP]
    ... Tok N Tok 1 ... TokM
    Masked Sentence A Masked Sentence B
    Pre-training
    NSP Mask LM Mask LM
    Unlabeled Sentence A and B Pair
    MNL

    View Slide

  12. Chapter 2 テキストデータの⼊⼿⽅法

    View Slide

  13. Chapter 2 テキストデータの⼊⼿⽅法
    • テキスト分析をしようとして最初に困るのがサンプルテキスト
    の⼊⼿⽅法
    • 英語であれば公開データセットがいくつかあるが、⽇本語の公
    開データは意外と少ない
    • 本書の2.1節ではいろいろなテキストデータ⼊⼿⽅法を解説して
    いる

    View Slide

  14. Chapter 2 テキストデータの⼊⼿⽅法
    • 次のようなデータソースを使える
    • 著作権の切れた⼩説 (⻘空⽂庫)
    • Wikipedia (Wikipedia API)
    • PDF / Word (Tika API)
    • Web ページ (beautifulsoap4)
    • DBPedia (SPARQL)

    View Slide

  15. Chapter 2 テキストデータの⼊⼿⽅法
    • Wikipedia APIの例

    View Slide

  16. Chapter 3 Elasticsearchの設定⽅法

    View Slide

  17. Chapter 3 Elastic Searchの設定⽅法
    • Elastic Searchは現在最も広く使われているオープンソースの
    検索エンジン
    • しかし特に⽇本語を扱う場合、設定⽅法が意外に難しくわかり
    やすいガイドも少ない
    • 本書の3.3節では、特につまずきやすい⽇本語の設定について詳
    しく説明している

    View Slide

  18. Chapter 3 Elastic Searchの設定⽅法
    • 「アナライザ」に関しては⼀つ⼀つの部品の挙動から詳しく解説
    入力テキスト
    Character
    Filter
    文字単位の変換
    (例) こゝろ → こころ
    Tokenizer
    単語の区切りの決定
    Character
    Filter
    Character
    Filter
    Character
    Filter
    Character
    Filter
    Token
    Filter
    単語単位の変換
    (例) 十一 → 11
    出力トークン
    出力トークン
    出力トークン

    View Slide

  19. Chapter 3 Elastic Searchの設定⽅法
    • 「踊り字」の処理に関して
    ⽂字表記の「揺れ」をなくして、検索精度
    を上げることが⽬的

    View Slide

  20. Chapter 3 Elastic Searchの設定⽅法
    • 「同義語」を定義した場合の検索の挙動
    “スシ”
    “スシ”, ”すし”, “寿司”, “鮨”
    私はすしが好きだ。
    僕の好きな食べ物は寿司です。
    スシが大好き!
    なんといっても鮨がいい。
    "query": {
    "match":
    "content": ‘スシ’
    }
    }
    同義語定義前: 1件だけマッチ
    私はすしが好きだ。
    僕の好きな食べ物は寿司です。
    スシが大好き!
    なんといっても鮨がいい。
    "query": {
    "match":
    “content”: ‘スシ’
    }
    }
    同義語定義後: 4件すべてマッチ
    analyze
    検索条件
    検索条件
    検索対象テキスト
    検索対象テキスト
    analyze
    「スシ」の検索⽂字列で、「すし」「ス
    シ」「寿司」「鮨」のどの検索対象⽂でも
    ヒットできるようにするための⼯夫。

    View Slide

  21. Chapter 4 NLU + Pythonで評判分析

    View Slide

  22. Chapter 4 NLU + Pythonで評判分析
    • NLU Natural Language Understanding の略
    • Discoveryの内部で呼び出され、⾼度な検索の⼿がかりとなる情
    報を付加 (タグ付け)
    • 以下のような個別機能があるが、そのうち「評判分析」を紹介

    View Slide

  23. Chapter 4 NLU + Pythonで評判分析
    • Jupyter Notebookのサンプルコード
    • テキスト1とテキスト2に対して評判分析APIを呼び出している。
    # テキスト1 (いい評判の例)
    text1 = 'さすがはソニーです。写真の写りもいい
    ですし、⾳がまた良いです。'
    # テキスト2 (悪い評判の例)
    text2 = '利⽤したかったアプリケーションは、残
    念ながらバージョン、性能が合わず、利⽤できませ
    んでした。'

    View Slide

  24. Chapter 4 NLU + Pythonで評判分析
    • 分析結果
    分析結果はscoreとlabelの2つで⽰される。
    labelは次の3つの値
    positive: 好意的
    negative: 否定的
    nutral: 中⽴
    score 好意的・否定的の度合いを⽰す値
    最⼤値: 1 (好意的)
    最⼩値: -1 (否定的)

    View Slide

  25. Chapter 4 NLU + Pythonで評判分析
    • その他の機能 (エンティティ抽出)
    「安倍⾸相はトランプ⽒と昨⽇、⼤阪の国際会議場で会談した。」

    View Slide

  26. Chapter 5 Word2Vecで単語をベクトル化

    View Slide

  27. Chapter 5 Word2Vecで単語をベクトル化
    • Word2Vec 隠れ層が1層のシンプルな構造のニューラルネットワーク
    1
    0
    0
    0
    :
    0
    0.1 0.3 0.01 : 0.2
    0.01 0.1 0.4 : 0.1
    0 0 0.01 : 0.05
    0 0 0.02 : 0.01
    : : : : :
    0.3 0.1 0.05 : 0.01
    0.1
    0.3
    0.01
    :
    0.2
    V: 解析対象文書全体の単語数 (通常数万-数十万)
    N: 隠れ層のノード数 (通常 100-300)
    × =
    V個
    N個
    N個
    appleに該当
    する列
    重み行列Wのうち
    appleに該当する行
    appleに対応する
    特徴量ベクトル



    V個
    (単語数)
    N個
    (隠れ層ノード数)
    V個
    (単語数)

    View Slide

  28. Chapter 5 Word2Vecで単語をベクトル化
    • 単語に対応する重みベクトルが重要
    (例) man ‒ woman = king ‒ queen が成り⽴つ!!

    View Slide

  29. Chapter 5 Word2Vecで単語をベクトル化
    • 学習済みWord2Vecを利⽤して簡易分類器を作る例題
    初期処理
    変数宣言
    テキスト取得
    (2.1節参照)
    テキスト加工
    (2.2節参照)
    学習データ作成
    学習済みWord2Vecロード
    (5.2節参照)
    Embedding Matrix作成
    LSTMモデル作成
    学習
    予測・評価(検証データ利用)
    Embedding
    (数値データをベクトル化)
    LSTM
    (時系列データ分析用)
    Dense
    (全結合)
    出力( 0 or 1)
    入力
    (テキストを数値化)
    学習済みWord2Vec
    重み行列をコピー
    (Embedding Matrix)
    Kerasによるカスタム機械学習モデル

    View Slide

  30. Chapter 5
    • BERTも紹介しています。
    BERT BERT
    E
    [CLS]
    E
    1
    E
    [SEP]
    ... E
    N
    E
    1
    ’ ... E
    M

    C T
    1
    T
    [SEP]
    ... T
    N
    T
    1
    ’ ... T
    M

    [CLS] Tok 1 [SEP]
    ... Tok N Tok 1 ... TokM
    Question Paragraph
    Start/End Span
    BERT
    E
    [CLS]
    E
    1
    E
    [SEP]
    ... E
    N
    E
    1
    ’ ... E
    M

    C T
    1
    T
    [SEP]
    ... T
    N
    T
    1
    ’ ... T
    M

    [CLS] Tok 1 [SEP]
    ... Tok N Tok 1 ... TokM
    Masked Sentence A Masked Sentence B
    Pre-training Fine-Tuning
    NSP Mask LM Mask LM
    Unlabeled Sentence A and B Pair
    SQuAD
    Question Answer Pair
    NER
    MNLI

    View Slide

  31. まとめ
    「⾃然⾔語処理」で今どんなことができるのか知りたい⼈に最適。
    オープンソースもWatsonも「⾃然⾔語処理」という観点で、同じ⽬
    線で理解できる。
    Jupyter Notebook完全対応。実習コードを動かしながら読み進める
    ことがお勧め! Pythonの学習にも利⽤可能。
    Word2VecやBERTといった最新AI技術もカバー。

    View Slide

  32. 参考リンク集
    Amazon リンク https://www.amazon.co.jp/dp/4798142689
    翔泳社リンク https://www.shoeisha.co.jp/book/detail/9784798142685
    サポートgithub(サンプルコードのダウンロード可)
    https://github.com/makaishi2/python-text-anl-book-info/blob/master/README.md
    IBM ブログ(赤石紹介記事)
    https://www.ibm.com/blogs/solutions/jp-ja/data_science_and_ai_akaishi-san/
    からあげ様ブログ https://karaage.hatenadiary.jp/entry/2020/01/31/073000

    View Slide

  33. ご静聴ありがとうございました。

    View Slide