LoginSignup
1
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-11-05

はじめに

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

自然言語とは

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

例えば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に感心しました。

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

参考文献

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

1
2
0

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
  3. You can use dark theme
What you can do with signing up
1
2