Howの抽出精度向上
前回の課題
前回は下記4点の課題がありました。
- 「~ね」がある場合は実際にHowになりうる場合もありますが、ただ除外すれば良いわけではないため、対策が必要。
- 「~んです」の場合も正しく認識できていない。 →「ん」が含まれる場合は除外する必要があります。
- 「~ではない」を分類できていないため、対策が必要。
- 「~ますと」、「~する人」、「~ということです」、「~するの」など、連体形の場合は除外する必要がある。
今回の記事は、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の解決策を試す前に、まずは他の要素の改善検討をしていきます。