自然言語処理用のデータプリプロセッシング


1.我々の周囲の自然言語処理例


機械翻訳モデル-Google翻訳、youtube自動字幕など
音声認識-iPhone Siri、NaverClovaなど

2.自然言語処理プロセス


  • ナチュラルフィッシュ処理
    Preprocessing

  • 表現
    Word Embedding

  • モデルの適用
    モデル(深度学習モデルを適用)
  • 3.自然魚の処理方法


    元の自然言語には前処理プロセスが必要です
    いろいろありますが、まず次の3種類を見てみましょう.
    1. Noise canceling
    2. Tokenizing
    3. StopWord removal

    4.誤り訂正(Noise Canceling)


    自然言語の文章のスペルミスとスペースエラーを修正する
    機械が誤り訂正を行うこと自体が容易ではない.
    携帯ケースでみんなに伝えるから
    また,最近ネット上で使われている自然言語ではslangや略語が多く使われているため,これらの語をある程度変換してこそモデルの性能が向上するため,誤り訂正が困難である.
    クリーンなデータは、パフォーマンスの向上に重要です.

    5.トークンベイク処理


    私は基礎科目を深く勉強しています.
    =>[‘深’,‘走’,‘基礎’,‘科目’,‘乙’,‘受講’,‘做’,‘有’,‘
    これは一つずつコインと呼ばれています.
    文をタグに分割(Token)
    タグは目的に応じて定義される語、フレーズなどです.
    なぜToken火?
    自然言語文は深さ学習の入力値として直接使用できません
    数値に変換する必要があります.
    文全体を数字に変換するのは容易ではありません.
    文をタグに分割すると、各タグに意味を与えやすくなり、数値に変換されます.

    6.非用語StopWordの削除


    朝鮮語stopwordの例
    あら、あら、あら、あら、嘘、さもないと、でも、でも、でも...
    非用語:不要な言葉を表す
    (場合やモデルによっては、重要ではないと思われるものを削除します.接続が重要だと思われる場合は削除しません.場合によって異なります)

    7. Bag of Words


    自然言語のデータをデジタルデータに変換する必要があります.そのため、まず理解しなければならない概念です.
    タグ付けされた自然言語データのリスト
    「こんにちは」「お会いしました」「お会いしました」
    「こんにちは」「私も」「お会いできて嬉しいです」
    ->各タグ番号(インデックスのマッピング)
    [『こんにちは』:0,『お会いしました』:1,『お会いできて嬉しいです』:2,『私も』:3
    インデックスをマッピングする方法はあまり意味がありません.まず1つ置く
    自然言語データに属する単語パッケージ

    8.トークンシーケンス


    Bag of Wordを単語に対応するインデックスに変換
    すべての文の長さに一致するように、標準より短い文に塗りつぶしを実行します.
    画像前処理で解像度を統一するように,自然言語データも統一しなければならない.
    Padding:データ長を調整するための不要な値
    Bag of wordsで入力値として不要な値を指定します
    最も長い文を基準に、残りの文を塗りつぶして揃え、データ全体に1つの文が長い場合は除外できます.

    9.実習。映画評論肯定/否定分類RNNモデル-データ前処理


    今回の実習では、映画評論データに基づいて感情分析を行うモデルを学びます.映画評論のような自然言語材料は単語の連続配列であり,表列材料と見なすことができる.すなわち,表列データ(連続単語)を用いて,コメント中の感情(肯定,否定)を予測する分類器を作成する.
    データセットIMDBムービーレビューデータセットを使用します.5000個の訓練用と1000個の試験用からなり、ラベルには肯定/否定の2種類がある.まず,RNNモデルの入力として自然言語データを使用するためにデータを前処理する.
    RNNの自然言語データプリプロセッシング
    自然言語データは、RNNの入力として使用するために、マーキングおよび複数のデータ処理を行う必要がある.次の自然言語データが用意されている場合は、最後にデータのサイズを統一するために埋め込む必要があります.
    最初のデータ・シーケンス:

    単語辞書:
    sequence.pad_sequences(data, maxlen=300, padding='post'):データ系列のサイズがmaxlenパラメータより小さい場合は、入力を追加します.
    説明
    インデックスに変換されたX trainとX testのシーケンスを羽化し、それぞれX trainとX testに保存します.
    シーケンスの最大長を300に設定します.
    import json
    import numpy as np
    import tensorflow as tf
    import data_process
    from keras.datasets import imdb
    from keras.preprocessing import sequence
    
    import logging, os
    logging.disable(logging.WARNING)
    os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
    
    # 학습용 및 평가용 데이터를 불러오고 샘플 문장을 출력합니다.
    X_train, y_train, X_test, y_test = data_process.imdb_data_load()
    
    """
    1. 인덱스로 변환된 X_train, X_test 시퀀스에 패딩을 수행하고 각각 X_train, X_test에 저장합니다.
       시퀀스 최대 길이는 300으로 설정합니다.
    """
    X_train = sequence.pad_sequences(X_train, maxlen=300, padding='post')
    X_test = sequence.pad_sequences(X_test, maxlen=300, padding='post')
    
    print("\n패딩을 추가한 첫 번째 X_train 데이터 샘플 토큰 인덱스 sequence: \n",X_train[0])