言語処理
英語の慣用的な用法を知るには,大量の英文中に現れる単語について,その前後に使われる単語を知ることが有用である.そのためには,与えられた英文を単語単位に分割し,次いで以下のような処理がその基礎となる.
(1)各単語について,前後の単語を求め,3連の単語の組を作る.この3単語の組を3連語と呼ぼう.
(2)3連語を,中央の単語によって辞書順に並べ換え,表の形で出力する.
この表を見れば,ある単語の前後に使われる単語の傾向を知ることができる.
このような問題について,以上の説明をもとに,以下の(課題 A_1)〜(課題 A_2)を解け.なお,(課題 A_1), (課題 A_2)とも,入力に用いる英文テキストファイルは,XA_1.txt を利用すること.
(課題 A_1) 与えられた英文テキストファイルを読み込み,その英文に含まれている単語数を数えるプログラムを作成せよ.
(課題 A_2) 与えられた英文テキストファイルを読み込み,その英文に含まれている3連語を辞書順に並べ換えて出力するプログラムを作成せよ.ただし,並べ換えに当たっては,単語の頭3文字を考慮し,第4文字以降は順序決定に無関係としてよい.
<ヒント> 3連語を一つの構造体で表し,英文から得られた3連語のすべてを構造体の配列に格納する(ただし,文頭・文末の単語は,それぞれ左,右を空白にせよ.各種句切り記号( ,. ”;: - など)は,直前の単語の一部とみなす).
※例えば,与えられた英文が "This is a pen. That is an apple." であるとき,(課題 A_2)で必要とされる処理は具体的にはつぎのようになる.
struct w_triple { char pre[30]; char wrd[30]; char ant[30]; }を定義し,この型 struct w_triple の配列 word[300] を定義する.
( pen. 空白 That ) ( is a pen. ) ( is an apple. ) ( an apple. 空白 ) ・・・・ ( 空白 This is )となる.
WWWサイトアクセスログ解析
一つのWWWサイトは,数多くのページから構成されている.例えば,プログラミング実習Iの講義ページでも数十ページを含んでいる.
通常,WWWサイトが存在するサーバには,アクセスログと呼ばれるアクセス履歴ファイルがある.これを見ると,いつ,どこから(アクセスしたクライアント
のIPアドレス),どのページ(ページのURL)にアクセスしたかの履歴が分かる.これを解析することで,どのページへのアクセスが多いのか,サイト全体
へのアクセスが集中する時間帯はいつなのか,など多くの情報を知ることができる.そのため,WWWサイト管理者は,マーケティングやサーバ負荷の調査など
のために,アクセスログを調べていることが多い.
教科書の10章10節(p.352〜p.373)を読み,以下の(課題 A_3)〜(課題 A_4)を解け.
(課題 A_3) アクセスログ(acc20071120b.txt)を解析し,下記の内容すべてを出力するプログラムを作成せよ.
(課題 A_4)
サイトへのアクセス数が多いクライアントは,そのサイトに関心が高いとみなすことができるため,このようなクライアントの把握は,マーケティングにおいて
重要視される.また,アクセス頻度(単位時間内平均アクセス数=アクセス数÷(最後のアクセス時刻-最初のアクセス時刻)が高いクライアントの把握も重要
である.
アクセスログ(acc20071120b.txt)を解析し,下記の内容すべてを出力するプログラムを作成せよ.