自然言語処理では、辞書に存在する単語が、文章中に存在するかどうかをチェックしていくが、その辞書を通常、gazetteerと言う
### gazetterの中の単語が文章中にあれば出力
import MeCab
text = '今日は晴れかな?'
weather_set = set(['晴れ','天気','雨'])
mecab = MeCab.Tagger("-Ochasen")
tokens = mecab.parse(text)
token = tokens.split("\n")
for ele in token:
element = ele.split("\t")
if element[0] == "EOS":
break
surface = element[0]
if surface in weather_set:
print(surface)
$ python3 app.py
晴れ
### カテゴリ分類
– カテゴリに対応したgazetterを用意する必要がある
– gazetterはweb上から検索する手法がよく取られる
– 文章を大規模に集積したものをコーパスと言う
– gazetteerの網羅率を上げることが分類精度において重要
import MeCab
text = '東京駅まで電車でどれ位かかりますか?'
weather_set = set(['晴れ','天気','雨','曇り'])
navi_set = set(['渋谷','東京','電車','地図'])
mecab = MeCab.Tagger("-Ochasen")
# def classify_category(text):
tokens = mecab.parse(text)
token = tokens.split("\n")
weather_score = 0
navi_score = 0
for ele in token:
element = ele.split("\t")
if element[0] == "EOS":
break
surface = element[0]
if surface in weather_set:
weather_score += 1
if surface in navi_set:
navi_score += 1
if weather_score > navi_score:
print("天気")
elif weather_score < navi_score:
print("ナビゲーション")
else:
print("ジャンル判定不能")
$ python3 app.py
ナビゲーション
これ、Yahoo!掲示板で売り煽りが多いか、買い煽りが多いか自動判定したいな。