PTB スタイルのトークナイザーによって生成された形態素の配列を変換したい:
["The", "house", "is", "n't", "on", "fire", "."]
文に:
"The house isn't on fire."
これを達成するための賢明な方法は何ですか?
アポストロフィに関する@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