iTAC_Technical_Documents

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

ブログ名

【第6回】5W1H抽出AI Howの抽出2

Howの抽出精度向上

前回の課題

前回は下記4点の課題がありました。

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

今回の記事は、2と3を改善することができました。
解決策は、以下の通りです。

課題2と3の解決策

  • 2の解決策: 「ん」を含む部分を「How」要素と分類してしまった場合は出力しないようにする。
  • 「〜ない」などの形容動詞を抽出するため、共通項を「自立」とする。

また、解析を文の後ろから行うことで, 抽出の反復を回避することもできました。

前回との結果の比較

今回の解決策を取り入れた結果どう改善したか、前回との結果と比較してみます。

前回の結果

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

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

今回の結果

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

今回の結果2
['頼む'] , How
['し', 'たい'] , How
['山ちゃん', 'も', 'そう', 'だっ', 'た'] , How
['できる'] , How
['やけど', 'だけ', 'だ'] , How
['話', 'する'] , How
['上がっ', 'た'] , How
['い', 'ます'] , How
['いう'] , How
['出', 'た'] , How
['えげつない'] , How
['思う'] , How
['なっ', 'た'] , How
['行っ', 'て', 'ます'] , How
['ブレブレ', 'です'] , How
['今日', 'は', 'です'] , How
['ない'] , How
['嫌い', 'だ'] , How
['避け', 'て', 'た'] , How

ソースコード:

ruby:python
%(形態素解析した後)

num = len(words)-1
while num > -1:
        
    if poss[num][1] == '自立'  and poss[num][5] == '基本形':
        sw = []
        sw.append(words[num])
        num -= 1
        if poss[num][0] != '助詞':
            while num > 0:
                sw2 = sw
                sw = []
                sw.append(words[num])
                sw.extend(sw2)
                if poss[num][0] == '名詞':
                    break
                num -= 1
        if  sw != ['']:    
            print('{0} , How'.format(sw))
        
    if poss[num][0] == '助動詞' and poss[num][5] == '基本形':
        sw =[]
        sw.append(words[num])
        num -= 1
        while num > 0:
            sw2 = sw
            sw = []
            sw.append(words[num])
            sw.extend(sw2)
            if poss[num][0] =='名詞' or (poss[num][1] == '自立' and '連用' in poss[num][5]):
                break
            num -= 1
        
        if 'ん' not in sw and sw != ['']:
            
            print('{0} , How'.format(sw))
        
    else:
        num -= 1

次回の予定

課題1と4の解決策を試す前に、まずは他の要素の改善検討をしていきます。


次の記事へ

前の記事へ 戻る