自然非言語処理第2日目: 言語と非言語、記号とは

![semi.png](https://qiita-image-store.s3.amazonaws.com/0/78052/e61afd2f-4239-3d84-4af5-c2adcc0aeec7.png)

# 言語とは
みなさんは普段言語なんて言葉使いませんよね。だって、あまりにありふれていて、言語を特別なものとして扱うことなんてないでしょう。
では言語とはなんなんでしょう。

デジタル大辞泉によると、

>音声や文字によって、人の意志・思想・感情などの情報を表現・伝達する、または受け入れ、理解するための約束・規則。

とあります。
なるほど、約束や規則なぁ。となります。
たしかに私たちは「猫」という文字をみたときにおそらく以下の写真のようなイメージが沸くとと思います。
![6254B370-3496-411B-96E6-0AB3E22F6BE8.jpeg](https://qiita-image-store.s3.amazonaws.com/0/78052/3557f208-0644-1524-e541-28ca83ab3b80.jpeg)

このように「猫」という文字には、その文字と対応づける中身があります。
また、他の人にも伝わるようにこれらの中身は「猫」と呼ぶ約束が日本人の中にはあると思います。

さて、この続きにはこう書いてあります

> 音声や文字によって、（中略）理解するための約束・規則。
> その記号の体系。

では、その続きである“記号”ってなんぞやとなるわけです。

# 記号とは
みなさまは記号というと何を思い浮かべますか？
僕は足し算の数学記号「＋」とか交番の地図記号「文」
を思い出します。
もちろんこれらも記号ではあるのですが、
デジタル大辞泉の指している記号は実はこれらだけではありません。
ものすごい広範囲です。どれぐらい広範囲かというと、

> 社会習慣的な約束によって、一定の内容を表すために用いられる文字・符号・標章などの総称。言語も記号の一つと考えられる。

だそうです。
なんだかよくわかりませんが、記号の中には言語だけではなく、もっといっぱいありそうということだけはわかります。

さて、本題に入りましょう。
この記号という概念を深掘りした人がいました。
フェルディナン・ド・ソシュールさんです。

![8CA783B0-1E8F-4309-8A79-641460E157D9.png](https://qiita-image-store.s3.amazonaws.com/0/78052/7cf01ff4-f094-b4fd-2d37-0609d9168ba2.png)

ソシュールさんは記号という概念を拡張し、記号学という学問を作りだしました。
これ以降、いろいろな学者（パースとかウンベルト・エーコとか）が記号学や記号論など名前が変えたり、変えなかったりしました。
結果として、現代における記号とは私なりに噛み砕いていうと以下の通りに定義されました。

> 世界にある物や事そのものの“代わり”に自分や相手の頭の中にイメージさせてくれる物事（記号表現）とその脳内イメージ（記号内容）のこと

**やばいですね。哲学の危ない匂いがします。**
こんな一般的なことを言われてもわけわからないので、
さっきの猫ちゃんの例で考えてみます。
猫と言われると猫ちゃんのイメージが頭に浮かびます。
一方で、猫という言葉は温かみを感じる動物そのものでもないですし、その脳内イメージはやはり動物そのものではありません。
![587B89B1-0542-4E8D-9178-A59B640F1ECD.jpeg](https://qiita-image-store.s3.amazonaws.com/0/78052/66fc6a96-1e32-20eb-a52f-653412b4dcf7.jpeg)

そこで、ソシュールはその前者である「猫」を記号表現（シニフィアン）と呼び、
その後者である「猫の脳内イメージ」を記号内容（シニフィエ）と呼びました。
ソシュールによると、記号内容と記号表現はセットで覚えられるもので
片方だけ覚えられることはないそうです。
なので、記号内容と記号表現、つまり記号を図にすると以下のようになります。
![F2D38C40-D2CB-43B4-8D7C-77BA1DC3D289.jpeg](https://qiita-image-store.s3.amazonaws.com/0/78052/5b300310-6356-e62d-a3c8-8198d7f60057.jpeg)



さて、ここで問題です。猫の写真は記号内容でしょうか。
記号表現でしょうか？

答えは記号表現です。
イメージっぽいので記号内容に見えますが、
あくまで脳内イメージではないからです。

同じように猫のイラストは記号表現なのでしょうか？

そうです。
記号表現です。

だんだん混乱してきましたかもしれませんので、
まとめますと、
・記号とは、物や事そのものの“代わり”に自分や相手の頭の中にイメージさせてくれるものとそのイメージ
・記号の中には文字や音声だけではなく、イラストや写真の中にある物や事も含まれている
・記号は記号表現と記号内容に分かれており、それはセットとして人は記憶している
となります。

# 記号から見た言語と非言語
さて、非言語処理のアドベントカレンダーといいながら、
言語と記号の話ばかりしてきました。
そろそろ非言語の話に戻りましょう。

記号の中には文字や音声などの言語も含まれますが、
実は物が写っている写真やイラストも非言語の一部も含まれています。
記号にできる非言語は写真やイラストだけではなく、
音楽が奏でる音色、ぶるぶるとした振動、
つーんとした匂い、辛いといった味、
氷の冷たさなどなど、たくさんあります。
我々人間がはっきりと感じることができて、
区別できる物事すべては記号として取り扱えるのです。

# 記号を使ったコミュニケーション
われわれは記号を使ってコミュニケーションを図ることができますし、
実際にコミュニケーションしているわけです。
以上の知見をまとめると、コミュニケーションは以下の図にも解釈できます。

![5E90DC46-89FA-46C7-8932-72FED78F65BE.jpeg](https://qiita-image-store.s3.amazonaws.com/0/78052/92fd80f1-ba3d-3441-f886-962b5c66bb82.jpeg)


1. 送り手は何かを動機として記号内容が脳内に浮かぶ。
1. 送り手は記号内容を記号表現に変換する
1. 送り手は記号表現を基に音声やジェスチャーなどの運動に変換して、記号表現として実世界にて表現する。
1. 受け手はそれぞれの記号表現を感覚器をつうじて、記号内容を脳内に浮かばせます。
1. こうして送り手の記号を受け手の中に浮かばせて、送り手が送りたかった記号を理解するのです。

さて、非言語処理ができる機械は
こんなにややこしく高度なことをできるのでしょうか。
実際に試して見ましょう。

# 実装：記号表現識別器
![9CED5973-FC5D-41AB-8094-B7D85D47A5E5.jpeg](https://qiita-image-store.s3.amazonaws.com/0/78052/23934586-8c6c-a5a7-d52a-580f5d538c94.jpeg)

それでは、機械に記号表現を与えて、その記号表現に対応する記号は言語なのか、
それとも非言語なのかを識別してくれる記号識別機を作りましょう。
ただし、全部の言語を識別するのはめんどくさいので、
問題を数字（言語）と服の写真（非言語）に絞りましょう。

問題の解き方は、
データに基づいて学習し判定できるようになる機械学習を用います。
機械学習のモデルはMobileNet[4]、いわゆるディープラーニングを使います。
MobileNetはIoTデバイスで動かすことができる最新のディープラーニングです。
詳細は論文を見てください。
今回のデータはMNISTとFashion-MNIST[5]です。
データの例をいかに示します。

![number2.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/94b8e806-a8b4-fb0b-1812-1b305f8b8365.jpeg)![number1.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/d6797365-4321-c57f-7dc8-1e0da20419a3.jpeg)![number3.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/9dee001e-27bd-31a6-62bf-0b77ea8a5f53.jpeg)![number4.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/7d01e926-3c8d-7706-f434-d961becef859.jpeg)
図　MNISTの一部

![fashion2.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/94324969-6e77-3c03-49c0-f64812c568ba.jpeg)![fashion1.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/32748a4c-e8f9-1b7a-bd33-d2daa10b85d6.jpeg)![fashion3.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/bd508408-4211-95ab-5f7f-3ae9927da894.jpeg)![fashion4.jpg](https://qiita-image-store.s3.amazonaws.com/0/78052/943111ab-e191-9736-533f-1ead5d2f3112.jpeg)
図　Fashion-MNISTの一部 ([4]より引用)

さて、機械はこれらの記号を識別することができるのでしょうか。

```python:trainModel.py
#!/usr/bin/python
# -*- Coding: utf-8 -*-
"""
視覚刺激からの記号表現識別器
"""
__author__="alfredplpl"

from keras.datasets import fashion_mnist
from keras.datasets import mnist
from keras.applications import MobileNet
import keras
import numpy as np
import cv2

if __name__ == "__main__":
    # 機械学習する学習器を用意
    classifier= MobileNet(input_shape=(48,48,3),weights=None,classes=20)
    classifier.compile(loss='categorical_crossentropy', optimizer="adam",metrics=['accuracy'])

    # 学習や性能評価に使うデータを読み込み
    (x_trainf, y_trainf), (x_testf, y_testf) = fashion_mnist.load_data()
    (x_trainm, y_trainm), (x_testm, y_testm) = mnist.load_data()

    print("load dataset.")

    # 学習器に入力しやすいようにデータを画像処理
    x_train=np.vstack((x_trainm,x_trainf))
    x_train=[cv2.cvtColor(x,cv2.COLOR_GRAY2RGB) for x in x_train]
    x_train = [cv2.resize(x, (48, 48), interpolation=cv2.INTER_NEAREST) for x in x_train]
    x_train=np.array(x_train)

    # 正解ラベルを整理
    y_trainf=[y+10 for y in y_trainf]
    y_train=np.hstack((y_trainm,y_trainf))
    y_train = keras.utils.to_categorical(y_train, 20)

    x_test=np.vstack((x_testm,x_testf))
    x_test=[cv2.cvtColor(x,cv2.COLOR_GRAY2RGB) for x in x_test]
    x_test = [cv2.resize(x, (48, 48), interpolation=cv2.INTER_NEAREST) for x in x_test]
    x_test=np.array(x_test)

    y_testf=[y+10 for y in y_testf]
    y_test=np.hstack((y_testm,y_testf))
    y_test = keras.utils.to_categorical(y_test, 20)

    print("finish preprocessing.")

    # 学習器を学習させながら、テストデータで性能を評価していく部分
    classifier.fit(x_train, y_train, epochs=20, batch_size=32,validation_data=(x_test, y_test))

    classifier.save("./classifier.h5")

```

# 実験結果
どうも性能検証用のデータで、数字の種類と服の種類と**96%**ぐらい当てられるようです。
数字か服かの識別だともっと精度が上がるのでしょうか。
おそるべしディープラーニング。
~~なお、実際に動くデモはホームページの整理の都合上間に合いませんでした~~

#実装の考察
このままではなんの役にも立ちませんが、
少なくとも我々の記号を基に何かしらの処理で機械は理解してそうです。
しかし、記号表現の塊を集めて処理すれば、記号内容が生まれるのでしょうか。
我々と同じように記号表現と記号内容はあるのかわかりませんが、
たぶんなんかの数として記憶されているんでしょうね。

この記号表現から記号内容を結びつける問題を
シンボルグラウンディング問題（記号接地問題）と言います。
人工知能の難題とされていますが、
この詳細についてはパターン認識の日にまた説明しましょう。

# まとめ
今回は、記号の観点から言語と非言語の違いについて学びました。
言語は記号の中に含まれますが、非言語も記号になるものがあります。
ただ、はっきりと感じ取れなかったりする非言語情報もあるために
必ず非言語情報は記号になるとはいいきれません。

今後は、非言語処理では非言語情報のうち、記号にできるものを中心に話を進めていきます。
難しい話はここまでで終わりになりますので、次回からは視覚や聴覚といった直感的でおもしろい話を
増やしていこうと思います。

# 参考文献
[1] Till art. Skrift. I., 1917 http://runeberg.org/nfce/0639.html
[2] フェルディナン・ド・ソシュール https://ja.m.wikipedia.org/wiki/%E3%83%95%E3%82%A7%E3%83%AB%E3%83%87%E3%82%A3%E3%83%8A%E3%83%B3%E3%83%BB%E3%83%89%E3%83%BB%E3%82%BD%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%AB
[3] 池上嘉彦、記号論への招待、岩波書店、1984
[4] Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam, "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications," arXiv, 2017
[5] Han Xiao and Kashif Rasul and Roland Vollgraf, "Fashion-MNIST: a Novel Image Dataset for Benchmarking Machine Learning Algorithms," arXiv, 2017