Pythonで文章の意図分類をするプログラム

Pythonで意図分類する方法を紹介します。

import MeCab

# 天気の関連語
weather_set = set(['晴れ','天気','雨','曇り'])

# 地域の関連語
navi_set = set(['渋谷','東京','電車','地図'])

mecab = MeCab.Tagger("-Ochasen") #MeCabの取得


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("天気")
    else:
        print("地域")


classify_category("今年の夏は晴れて暑いです。")

これを実行すると「天気」と表示されます。

最終行の文章を

今年の東京は暑いです。

にして実行すると「地域」と表示されます。

まとめ

実用性はともかくとして、形態素解析を利用して簡単な意図分類を行えるようになりました。

単純な文字列検索をするだけでも実現できるのではないかという意見もありそうです。

この方法であれば、キーワードが急増しても処理速度を確保できます。

特集記事

Posted by @erestage