Python AI 自然言語処理
- 自然言語処理とは
- 使用ツール
- word2vec
- 下処理
1.自然言語処理とは
自然言語処理とは、人間が使用する言語をコンピューターに処理させる技術であり、人工知能が活躍する分野である。
今回は、単語をベクトル化することを目標にする。
単語をベクトル化することで、コンピューターに単語を計算することができる。
2.使用ツール
- Python
- Jupyter notebook
- keras
- tensorflow
3.word2vec
今回単語をベクトル化するために、word2vec N gram model を使用
N gram model はA B Cという単語の並びがあるとき、AとCからBが出現する確率をニューラルネットワークに計算させる理論
緑の2文字が与えられたとき、赤の単語が出現する確率をニューラルネットワークで計算
計算結果から、単語のベクトルを取り出す→word2vec
4.下処理
下処理の手順
- 文章を準備
- 文章を単語に分割
- AIが単語を計算できるように、単語にidを振る
1.文章の準備
下処理のテストとして、英語の文書をコピペする。
処理としては、英語のほうが日本語より簡単
理由:英語の単語間はスペースが入るので分けやすい。
準備した文章:
The core of the model consists of an LSTM cell that processes one word at a time and computes probabilities of the possible values for the next word in the sentence. The memory state of the network is initialized with a vector of zeros and gets updated after reading each word. For computational reasons, we will process data in mini-batches of size batch_size. In this example, it is important to note that current_batch_of_words does not correspond to a of words. Every word in a batch should correspond to a time t. TensorFlow will automatically sum the gradients of each batch for you.
Jupyter notebook上で
text=" コピペ 文章 "
文章から、単語に分割
keras.preprocessing.text.text_to_word_sequence()の機能を利用
(text:文章
filters:文章中から削除したい文字を指定。今回は記号を削除
split:"条件 "条件に単語に分割する条件を指定。今回は、"スペース"で分割
words[0:13]:分割された単語の0~13を表示
2.文章を単語に分割
やりたいこと
単語ごとに個別の数字を割り振る
(例)単語→数字(word2id):たこ焼き→1,お金→2,車→3
数字→単語(id2word):1→たこ焼き,2→お金,3→車
sorted(set(words)):単語のかぶりを削除
word2idx={} :Pythonの辞書
辞書:{key1:本体1,key2:本体2,key3:本体3}
辞書の本体とkeyをひもづけ
(例)辞書[key1]→本体1
key1を代入して本体1を取り出すことができる
idx2word=np.array(vocab):数字を単語に変換
(例)インデックス(先頭からの数*スタート0から)を使用
idx2word=["a","b","c","d","e"]
インデックス2:0からスタートなので先頭から3番目
idx2word[2]="c"
for i ,word in enumerate(idx2word):
word2idx[word]=i
辞書の設定を行っている
key:分割した単語をループで次々にkeyに設定
本体:keyに設定したときのループ回数を本体(単語の番号)に設定
テスト
idx2word[52]:52はtheを表す
word2idx['the']:theは52を表す
下処理が終わったので、今後
ニューラルネットワークで計算させ、単語のベクトルを獲得する
誰でもできるAI画像認識入門1
目次
- AI入門
- 使用ツール
- 画像認識
- AI(ニューラルネットワーク)
- 実装
1.AI入門
最近のトレンドは、AI
新聞,テレビもAIについて見ない日はない(個人的)
第四次産業革命かもしれないAIに乗り遅れないため、初心者でもAIを使えるように解説する予定
2.使用ツール
AI作成で使用するツールは、Pythonを使用
AIを作る準備(以下googleで検索)
Jupyter notebookを起動後画面
ここまでくれば準備完了
3.画像認識
AIの利用法として、画像認識がある。今後の自動運転、無人コンビニなどで使用される技術である。
今回は、画像認識の入門[minist 手書き文字認識]を試してみる。
AIに手書き文字を見せて、数字を当てることが目標
4.AI(ニューラルネットワーク)
画像認識するニューラルネットワークの構成
- 入力層:画像のデータを入れる
- 中間層:出力層の答えが正しくなるように計算する
- 出力層:中間層からの出力から入力画像を認識する
(画像認識イメージ)
5.実装
説明したネットワークを実装する。
1:jupyter notebookを立ち上げ、必要な機能をimportする
ここでは、AI開発に便利なtensorflow,keras
データを保持する箱のnumpy
絵を表示するmatplotlib
をimportし、名前が長いのでasで略字(省略)
2:minist 手書き文字をインストール
訓練
x_train:入力画像
y_train:答え
成績確認用
x_test,y_test
3:画像を確認する(x_test)
訓練用画像25枚を確認
4:画像のピクセル値を正規化する
最小0,最大1になるように8bit=255で割る
5:ニューラルネットワークを組み立てる
入力層:ks.layer.Flatten(input_shape(28,28))
input_shape(28,28):画像の縦,横のピクセル数
ks.layer.Flattenで画像2次元データを28×28の1次元データに変換
中間層:ks.layer.Dense(64,activation=tf.nn.relu)
中間層の〇が64で,計算手法がactivation=tf.nn.relu
出力層:ks.layer.Dense(10,activation=tf.nn.softmax)
数字が0~9の10種類なので、〇を10個用意、計算手法がactivation=tf.nn.softmax
6:計算させる
model.compile()で計算法の指定
optimizer:計算方法
loss:10種類分類するので、sparse_categorical_crossentropyを使用
model.fit(x_tarin,y_train,epoch=5)で計算開始
x_train:入力画像
y_train:答え
epoch:計算繰り返し回数
訓練用データで正解率97.99達成
今後詳しい内容、CNNなど解説する予定