今回は,
ベイジアンフィルタとは
ベイジアンフィルタとは,
このベイジアンフィルタは,
例えばベイジアンフィルタによるスパム判定では,
ベイジアンフィルタがメールのスパム判定として利用される契機となったのは
先述のようにベイジアンフィルタは,
「教師あり学習」
環境構築
本連載では基本的にプログラミング言語にPythonを使って実装していきます。バージョンは2.
Pythonでは大規模な多次元配列や行列をサポートしている拡張モジュール
また,
bag-of-wordsを利用したテキスト分類
それでは早速,
ナイーブベイズは簡単な計算でよい結果のでる
今回は,
一般的に文章を分類するためには何が必要になるでしょうか。それは文章に含まれている特徴になります。 今回は文章の中に出現する単語を出現する順番を意識せずに特徴として扱います。このように文脈に依存しない,
例えば,
これらは「機械学習」という技術を使って実現されているのです。
この文章ををbag-of-wordsで表現すると,
「これら」,「機械」,「学習」,「技術」,「実現」
文章を形態素に分割する
今回は日本語を含む文章から単語の集合を作るにあたって
英文の場合は単語がスペースによって分割されているため,
形態素解析ライブラリとしてはMeCabやChaSenなどが有名ですが,
また,
リスト1 形態素解析を使って,
# -*- coding: utf-8 -*-
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
appid = 'Yahoo!デベロッパーズネットワークのアプリケーションIDを入力して下さい'
pageurl = "http://jlp.yahooapis.jp/MAService/V1/parse";
# Yahoo!形態素解析の結果をリストで返します。
def split(sentence, appid=appid, results="ma", filter="1|2|3|4|5|9|10"):
sentence = sentence.encode("utf-8")
params = urllib.urlencode({'appid':appid, 'results':results, 'filter':filter,'sentence':sentence})
results = urllib2.urlopen(pageurl, params)
soup = BeautifulSoup(results.read())
return [w.surface.string for w in soup.ma_result.word_list]
リスト1のコードをmorphological.
引数のfilterで解析する品詞の種類を指定することができます。filterに指定可能な品詞番号は以下のようになっています
表1 filterに指定可能な品詞番号
1 | 形容詞 |
---|---|
2 | 形容動詞 |
3 | 感動詞 |
4 | 副詞 |
5 | 連体詞 |
6 | 接続詞 |
7 | 接頭辞 |
8 | 接尾辞 |
9 | 名詞 |
10 | 動詞 |
11 | 助詞 |
12 | 助動詞 |
13 | 特殊 |
さらに詳細な利用方法が知りたい方は,