iTAC_Technical_Documents

アイタックソリューションズ株式会社

ブログ名

【第5回】5W1H抽出AI Howの抽出1

Howの抽出

「どのように」を表すHowのパターンは、大きく分けて以下の二種類のパターンが考えられます。

  • 走る、行く のような動詞
  • です、ます のような助動詞

この二つのパターンに共通するのは基本形、終止形であることです。
MeCabで解析した場合は終止形は基本形として分類されるため、その単語が基本形であるかどうかを判別すればHowを抽出できます。

実際に実行したところ、以下の結果となりました。

入力:
'年末年始をふるさとなどで過ごす人たちで各交通機関の混雑が始まりましたjr各社によりますと東海道新幹線の下りは31日の午前中まで指定席はほぼ満席です東北上越北陸などの新幹線は明日がピークです上りのピークは東海道新幹線が1月4日他の各新幹線が1月3日と予想されていますまた空の便は羽田を発着する便を中心に日本航空全日空とも31日までほぼ満席だということです高速道路は東名高速の下りできょう午前8時頃秦野中井インターチェンジ付近で最大30キロの渋滞が予想されるなどしています上りのピークは1月3日で東名高速東北道関越道でそれぞれ35キロの渋滞が予想されていますています'

出力:
['年末年始', 'を'] , What
過ごす , How
混雑 , Who
た , How
['各社', 'に'] , What
ます , How
下り , Who
31日 , When
午前中 , When
指定席 , Who
です , How

以下のように、前に特定の品詞がある場合は連結します。

ruby:kibela.rb
# MeCabで形態素解析後

num = 0
for w in words2:
    
    if poss2[num][0] == '動詞' and poss2[num][5] == '基本形':
        i = 1
        sw = []
        sw.append(w)
        if poss2[num-1][0] != '助詞':
            while num-i >0:
                sw2 = sw
                sw = []
                sw.append(words2[num-i])
                sw.extend(sw2)
                if poss2[num-i][0] == '名詞':
                    break
                i = i +1
        print('{0} , How'.format(sw))
        
    if poss2[num][0] == '助動詞' and poss2[num][5] == '基本形':
        i = 1
        sw =[]
        sw.append(w)
        while num-i > 0:
            sw2 = sw
            sw = []
            sw.append(words2[num-i])
            sw.extend(sw2)
            if poss2[num-i][0] =='名詞' or (poss2[num-i][1] == '自立' and '連用' in poss2[num-i][5]):
                break
            i = i +1
        
        print('{0} , How'.format(sw))
        

    num += 1

3パターン実行した入出力は以下です。

実行結果

入力1:
'年末年始をふるさとなどで過ごす人たちで各交通機関の混雑が始まりましたjr各社によりますと東海道新幹線の下りは31日の午前中まで指定席はほぼ満席です東北上越北陸などの新幹線は明日がピークです上りのピークは東海道新幹線が1月4日他の各新幹線が1月3日と予想されていますまた空の便は羽田を発着する便を中心に日本航空全日空とも31日までほぼ満席だということです高速道路は東名高速の下りできょう午前8時頃秦野中井インターチェンジ付近で最大30キロの渋滞が予想されるなどしています上りのピークは1月3日で東名高速東北道関越道でそれぞれ35キロの渋滞が予想されていますています'

出力1:
['過ごす'] , How
['始まり', 'まし', 'た'] , How
['より', 'ます'] , How
['満席', 'です'] , How
['ピーク', 'です'] , How
['予想', 'さ', 'れ', 'て', 'い', 'ます'] , How
['発着', 'する'] , How
['満席', 'だ'] , How
['こと', 'です'] , How
['予想', 'さ', 'れる'] , How
['し', 'て', 'い', 'ます'] , How
['予想', 'さ', 'れ', 'て', 'い', 'ます'] , How
['予想', 'さ', 'れ', 'て', 'い', 'ます', 'て', 'い', 'ます'] , How


入力2:
'影響バー箱根の駅伝があるということで神奈川県を中心にお天気を伺えればと思います日本付近はですねまぁ冬型の気圧配置ということでへ太平洋がまあ基本的に晴れるという天気なりやすいんですけれどもこのようにですね関東付近の腫れの報告をたくさんいただいていますいえーということでまぁ今日の天気ですけれどもおおむね晴れということででが if ずではない言っていいですねハイターただですね少し気温が役になるといったところですねはい阿蘇はですねかなり冷え込んでいたんですけど日中はええまあ日差しもあって気温が上がってきまして柔道超えて超えるというところ多くなりそうですねはいoe 基本はこのようになっておりますが以上稼い動きを強く吹いてしまいそうですか8ですね風に関してはですねまぁ冬型の気圧配置といういうことで西寄りの風がまあ比較的まあ優勢なんですけれどもこのようにですねまぁあのおおむねですねまあ'

出力2:
['ある'] , How
['思い', 'ます'] , How
['付近', 'は', 'です'] , How
['晴れる'] , How
['ん', 'です'] , How
['よう', 'に', 'です'] , How
['いただい', 'て', 'い', 'ます'] , How
['今日の天気', 'です'] , How
['言っ', 'て', 'いい', 'です'] , How
['ただ', 'です'] , How
['なる'] , How
['ところ', 'です'] , How
['阿蘇', 'は', 'です'] , How
['冷え込ん', 'で', 'い', 'た'] , How
['ん', 'です'] , How
['超える'] , How
['そう', 'です'] , How
['なっ', 'て', 'おり', 'ます'] , How
['そう', 'です'] , How
['8', 'です'] , How
['風', 'に関して', 'は', 'です'] , How
['いう'] , How
['ん', 'です'] , How
['よう', 'に', 'です'] , How


入力3:
'カ)俺のこと避けてた?山)嫌いだよカ)マジか山)好きではないよwwwwwwwwww今日はですねというのも、なんと本日ごめんなさいいきなりブレブレですけどもカジサックというキャラを今日はちょっとこう…行ってきますねカ)そんなに!?カ)まあ我々キングコングがスピード出世みたいなことになったんですけどもカ)西野と僕でやったらカ)今たぶんテロップで出てると思うんですけどもえげつないよな山)東京出たピースだってそうだしカ)ノブシコブシそうやし山)大阪でいうときんに君とかね\u3000カ)NON STYLE\u3000山)ダイアンたくさんいますけどもカ)なるほどねあ、そうか。こんなんかんでちょっとこう上がったカ)ちょっとやってよこの話するの初めてなんやけどだけだとだから俺はできるだけ、山ちゃんもそうだったんだけどもこうこうこうでこうやからというのをしたいと思ってやってんねんけど頼むわ、俺こうしたいねんっていう話だったらじゃあ例えばカ)ありがとう'

出力:
['避け', 'て', 'た'] , How
['嫌い', 'だ'] , How
['今日', 'は', 'です'] , How
['ブレブレ', 'です'] , How
['行っ', 'て', 'ます'] , How
['なっ', 'た'] , How
['ん', 'です'] , How
['テロップ', 'で', '出', 'てる'] , How
['思う'] , How
['ん', 'です'] , How
['出', 'た'] , How
['いう'] , How
['い', 'ます'] , How
['上がっ', 'た'] , How
['話', 'する'] , How
['やけど', 'だけ', 'だ'] , How
['できる'] , How
['山ちゃん', 'も', 'そう', 'だっ', 'た'] , How
['ん', 'だ'] , How
['し', 'たい'] , How
['頼む'] , How

考察

助動詞の場合は、後ろの動詞や助詞をつなげる処理を組み合わせることで概ね正しく分類できました。
前に名詞または自立動詞の連用形がある場合まで含めて出力することで、精度が向上しています。
また、動詞の場合も「れる」などの場合は基本形であっても意味が通じないため、前の単語が助詞でない場合は前の単語を名詞まで繋げることで、精度をあげることができています。

課題:
下記4点の課題が明らかになりました。 1. 「~ね」がある場合は実際にHowになりうる場合もありますが、ただ除外すれば良いわけではないため、対策が必要。 2. 「~んです」の場合も正しく認識できていない。 →「ん」が含まれる場合は除外する必要があります。 3. 「~ではない」を分類できていないため、対策が必要。 4. 「~ますと」、「~する人」、「~ということです」、「~するの」など、連体形の場合は除外する必要がある。

次回の予定

連体形や「ね」が含まれる場合にうまく抽出できないことが分かったため、正しく抽出できるように対策していきます。


次の記事へ

前の記事へ 戻る