5

PTB スタイルのトークナイザーによって生成された形態素の配列を変換したい:

["The", "house", "is", "n't", "on", "fire", "."]

文に:

"The house isn't on fire."

これを達成するための賢明な方法は何ですか?

4

1 に答える 1

2

アポストロフィに関する@sawaのアドバイスを受けて、配列を次のようにすると:

["The", "house", "isn't", "on", "fire", "."]

これを使用して、探しているものを取得できます(句読点のサポート付き!):

def sentence(array)
  str = ""
  array.each_with_index do |w, i|
    case w
    when '.', '!', '?' #Sentence enders, inserts a space too if there are more words.
      str << w
      str << ' ' unless(i == array.length-1)
    when ',', ';' #Inline separators
      str << w
      str << ' '
    when '--' #Dash
      str << ' -- '
    else #It's a word
      str << ' ' unless str[-1] == ' ' || str.length == 0
      str << w
    end
  end
  str
end
于 2013-03-29T21:50:34.647 に答える