IT業界のキーワードを探す

8月 24th, 2003
[`evernote` not found]
Facebook にシェア

とある事情で、IT関連ニュースで使われる新語を調べてみることにした。
Googleなどのように自前で検索ロボットを使うことはできないから、特定のニュースサイトのバックナンバーをダウンロードして、形態素解析ツールにかけてみればよいのではないかと考えた。さて、どんな言葉がよく使われているのか?


分析対象とするのは、インプレスのページ(PC WatchINTERNET WatchAV WatchBroadband Watchケータイ Watch)、それとZDNNのニュース速報にする。
上記のニュースページから、ダウンロードNinja2を使ってバックナンバーを一括ダウンロード。

ニュース記事には、本文以外にさまざまなリンクが張られているから、これらを除外して本文だけを取り出したい。また、HTMLタグを削除して、プレーンなテキストにする必要もある。これらを、Rubyのスクリプトで記述した。

require 'htmlutil'

include HTMLUtil
file_name = ARGV.shift
body = ""
Dir::glob(file_name).each {|f|
file = open(f)
while line = file.gets
body = body + line
end
str = Regexp.new("<!-- 本文.*-->")
Regexp.new(str).match(body)
body = $'
str = Regexp.new("<!-- 本文.*-->")
Regexp.new(str).match(body)
body = $`
puts HTMLUtil.html2txt(body.to_s)
body = ""
}

インプレスのニュースページでは、記事本文の前後に「<!– 本文 –>」や「<!– 本文開始 –>」といった文字列が入っている(一部入ってない記事もあるが、処理がややこしくなるので今回は無視)。ZDNNの場合は、切り出し開始、終了がそれぞれ「<!–BODY–>」「<!–BODYEND–>」だ。これらの文字列を使えば、本文だけを取り出せる。
なお、HTMLタグを削除するために、『Rubyで極める正規表現』で紹介されている「htmlutil.rb」を利用している。HTMLのタグを削除するツールは、数多く発表されているからそれらを使ってもいいだろう。
さて次に、本文プレーンテキストをMeCabにかける。MeCabは、形態素解析ツール。「今日はいい天気ですね。」という文章があったら、「今日/は/いい/天気/です/ね/。」と形態素単位に分解してくれる。ツールの辞書に登録されていない単語には「未知語」と付く。IT関係の新語はほとんど「未知語」になりそうだから、「未知語」と付いた単語だけを取り出す。

while line = ARGF.gets
if /^(.+)\t未知語/ =~ line
print $1, "\n"
end
end

さらに、出現頻度順に並べ替えるスクリプトにかける。

word = Hash.new(0)
while line = ARGF.gets
word[line.chomp] += 1
end
word.sort{ |a,b|
b[1] <=> a[1]
}.each { |key, value|
print "#{value}: #{key}\n"
}

MeCabでは、数字や一部の記号まで用語としてピックアップしてしまうが、それらを除くと「PC」「DVD」「Windows」あたりが非常によく使われている。このあたりは当たり前すぎるが、もう少し下の方を見てみると、Linux問題で今話題の「SCO」も登場してくる。「GeForce」「RADEON」の出現頻度はほぼ互角といったこともわかる。
ただし、MeCabでは「Mac OS X」も「Mac」「OS」「X」と分解されてしまう。うーん、この辺の問題をうまく解決する方法はないものか……。

Leave a Reply

Comments links could be nofollow free.