search
LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

【Python初学者】自然言語処理の基礎を理解する。

はじめに

この記事の対象者は「機械学習初学者」です。
つまり私です。

自然言語とは

自然言語ってなんだろう。
まずは、そこから理解しました。

例えばpythonのようなプログラミングで使う言語が
「固い言語」としたら、
普段私たちが使う言葉は「やわらかい言葉」です。
1つの言葉や文字にも複数の意味があり
時代によって消えたり増えたりする
まさに生きているような言葉が「自然言語」です。

そんなやわらかい言葉を
頭の固い(?)コンピュータに理解させる技術が
自然言語処理です。

実践したこと

早速、以下の文を名詞抽出してみました。

text = 'こんにちは。最近Python学習を始めたさとちんといいます。'

MeCabをインポートして-Ochasen を使用して
形態素解析(品詞などを必要な情報を分ける)します。

import MeCab

# -Ochasen を使用
mecab = MeCab.Tagger('-Ochasen')

# 形態素解析
res = mecab.parse(text)
print(res)


→
こんにちは コンニチハ こんにちは 感動詞       
。 。 。 記号-句点       
最近  サイキン    最近  名詞-副詞可能     
Python  Python  Python  名詞-一般       
学習  ガクシュウ 学習  名詞-サ変接続     
を ヲ を 助詞-格助詞-一般     
始め  ハジメ   始める   動詞-自立   一段  連用形
た タ た 助動詞   特殊・タ    基本形
さと  サト  さと  名詞-固有名詞-人名-名      
ちん  チン  ちん  名詞-接尾-人名        
と ト と 助詞-格助詞-引用     
いい  イイ  いう  動詞-自立   五段・ワ行促音便    連用形
ます  マス  ます  助動詞   特殊・マス 基本形
。 。 。 記号-句点       
EOS
nouns = get_nouns(text)
nouns

→['最近', 'Python', '学習', 'さと', 'ちん']
#要素を半角スペースで結合
' '.join(nouns)

→最近 Python 学習 さと ちん

ここから特徴量を抽出してベクトル化します。
こうすることでコンピュータに数値として情報を渡せるように処理をします。

自然言語の特徴量変換の方法として、
Bag of Words (BoW)を使用します。scikit-learnで実装します。

BoWとは、単語の出現回数によって単語を数値に変換する方法です。

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
x = vectorizer.fit_transform(nouns4)

vectorizer.vocabulary_

{'python': 0, 'さと': 1, 'ちん': 2, '学習': 3, '最近': 4}
x = x.toarray()
print(x)

[[0 0 0 0 1]
 [1 0 0 0 0]
 [0 0 0 1 0]
 [0 1 0 0 0]
 [0 0 1 0 0]]

以上のようにベクトル化を行うことができました。

おわりに

最初、ベクトル化が何を表しているのかがよくわからなかったんですが、
単語毎に
{'python': 0, 'さと': 1, 'ちん': 2, '学習': 3, '最近': 4}のように
IDが割り振られて、IDごとの出現回数をベクトルで表示しているのだと
理解しました。(15分くらいかかりました)

また、名詞を抽出する際に
['最近', 'Python', '学習', 'さと', 'ちん']のように

さとちんが「さと(固有名詞)」と「ちん(名詞・接尾」と分かれていて
勝手にMeCabに感心しました。

以上、自然言語処理の基礎について理解しました。

参考文献

この記事は以下の情報を参考にして執筆しました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2