読者です 読者をやめる 読者になる 読者になる

hirschkalb's blog

"I beseech you, in the bowels of Christ, think it possible that you may be mistaken."

英文から関係代名詞だけ抜き出す

個人的に、英語を学習するうえで「関係代名詞」が障壁になることがあります。そこで、好きな文学作品から関係代名詞の使われている(と思しき)フレーズだけを抽出する方法を考えてみました。


なお、抽出したフレーズの利用法に関しては、ここでは話題にしません。

シャーロックホームズの『赤い輪』から、関係代名詞の使われたフレーズだけを抜き出す

以降の作業にあたっては、対象があらかじめ電子化されていることが望ましいでしょう。 ここでは、Project Gutenberg (http://www.gutenberg.org/wiki/Main_Page) から、私が最近オーディオブックで聴いている The Adventure of the Red Circle by Sir Arthur Conan Doyle を例に作業を進めます。


メインページから作品を検索すると、以下のページにたどり着きます。
http://www.gutenberg.org/etext/2345


画面中央から [Download this ebook for free] - [Hand-Crafted Files] と見ていき、 [Format] - [Plain text]*1 かつ [Compression] - [None] のファイルを表示します。


そして、表示したファイルへのアドレスをメモしておきます。ここでは以下の URL が、現在求めているものです。
http://www.gutenberg.org/files/2345/2345.txt

ソースと実行結果

先の手順で得た URL を、以下のソースの "url=" の箇所に埋め込みます。

require 'uri'
require 'open-uri'

def extract_phrases(url, pattern, step)
  html = open(url).read

  step.times do | i |
    unless pattern.match(html).nil?
      puts "#{(i+1).to_s.ljust(2)}) #{pattern.match(html)[1]}"
      html = $'.to_s
    end
  end
end

if $0 == __FILE__
  url = 'http://www.gutenberg.org/files/2345/2345.txt' 
  step = 10

  b="(\"?[A-Z][^A-Z]*?"
  e=".*?[.!?]\"?)"
  pattern = %r{#{b} (who|whom|which|that) #{e}}m

  extract_phrases(url, pattern, step)
end

これを実行すると以下のようになります。

$ ruby extract_relative_pronoun.v1.rb 
1 ) I cannot see that you have any particular cause for
uneasiness, nor do I understand why I, whose time is of some value,
should interfere in the matter.
2 ) Holmes and turned back to the great scrapbook
in which he was arranging and indexing some of his recent material.
3 ) "But he would never cease talking of it--your kindness, sir, and the
way in which you brought light into the darkness.
4 ) She sat down in the chair which he had
indicated.
5 ) "Well, sir, they were that he was to have a key of the house.
6 ) Also, that he was to be left
entirely to himself and never, upon any excuse, to be disturbed."
7 ) We can hear that quick step of his pacing up and down,
up and down, night, morning, and noon; but except on that first night
he had never once gone out of the house."
8 ) He told
me after he had taken the rooms that he would do so and asked me not to
bar the door.
9 ) "It was his particular direction that we should always, when he rang,
leave his meal upon a chair, outside his door.
10) I leave that paper with
his breakfast every morning."

chomp とか、果ては gsub("\n", " ") などというださい対応にもかかわらず、各フレーズの改行が除去されない理由がよく分からなかったので、1フレーズから改行を取り除く処理はあきらめましたよ?
Twitter「つぶやく」ボタン

*1:実は [HTML] を選んだほうが、あとあと処理が楽だったのかもしれませんが、もはや追求はしません。

広告を非表示にする