\documentclass[a4paper,titlepage]{jsarticle}
\usepackage[dvips]{graphicx}
\pagestyle{empty}
\西暦
\setlength{\textheight}{240mm}
\setlength{\topmargin}{-10mm}
\setlength{\textwidth}{165mm}
\setlength{\oddsidemargin}{-5mm}
\setlength{\evensidemargin}{-5mm}
\hyphenation{front-end}

\title{コピーレポート検知システムの開発}
\date{}%ここはブランク
\author{06H051 竹中康朝}

\begin{document}
\maketitle\pagestyle{empty}

% 目次
\tableofcontents \clearpage

\pagestyle{plain} \setcounter{page}{1}

\begin{abstract}
今日、インターネットの普及により情報の取得は容易になった。しかし容易に情
報を仕入れることが可能になり、web上からコピーペーストした文章をそのまま
載せたレポートを提出する学生が増えてしまった。しかし、コピーレポートは人
の目で判別することは大変な労力を要する。だからといって放置すれば学生の質
が低下するばかりか、学生に対して正当な評価を下せなくなってしまう。そこで、
コピーレポートかどうかを自動検知するシステムの開発を行った。本研究では、
メールの本文に直接記述する形式のレポートを対象とする。プログラムにより自
動的に類似度を調べあげて、web上からコピーペーストしたレポートの提出を拒
否する。また、メールを受信したときに自動的にプログラムが起動するので、教
員の負担を大幅に軽減できる。メールを受信すると、それをトリガーにプログラ
ムが起動する。受信されたメールはヘッダとボディに分割される。ボディは形態
素解析にかけられる。形態素解析にかけられた文章はわかち書きの状態で単語の
状態で抽出される。抽出された単語を用いてテキストブラウザ\footnote{テキス
トベースのウェブブラウザのカテゴリ} で検索をかける。検索結果のHTMLからさ
らにURI\footnote{Uniform Resource Identifier 一定の書式によってリソース
（資源）を指し示す識別子のみを抽出する}抽出したURIで今度はwebページの
HTMLを取得する。取得したHTML\footnote{HyperText Markup Language}と受信メー
ルのボディとの差分を求め、類似度を求める。類似したシステムとして、大阪産
業大学工学部情報システム工学科で稼働しているTOMが存在する。TOMは類似度の
比較対象が他の学生が提出したレポートである。しかしながら、アルゴリズムは
TOMと似通っているので、今回開発したシステムはTOM のweb版と言える。
\end{abstract}

\section{はじめに}
今日、インターネットの普及により情報の取得は容易になった。しかし容易に情
報を仕入れることが可能になり、web上からコピーペーストした文章をそのまま
載せたレポートを提出する学生が増えてしまった。コピーレポートは人の目で判
別することは大変な労力を要する。しかし放置すれば学生に対して正当な評価を
下せない。そこでコピーレポートかどうかを自動で検知するシステムの開発を行っ
た。

\subsection{目標}
本システムの目標は、コピーレポートを検知してコピーレポートを成績に反映さ
せないことである。また、現在稼働しているTOMと併用して類似度判定の範囲を
webまで広げ、検知率を向上させることである。


\subsection{先行研究}
先行研究として現在情報システム工学科の一部で稼働しているTOM\footnote{た
ぶん 同じ メール の略称}が存在してい
る。


\subsection{既存のシステム}
\begin{itemize}
\item{TOM:} 大阪産業大学の大垣斉講師が開発したシステム。現在大阪産業大学
     の情報システム工学科で稼働中。他人の提出したレポートを対象に類似度
     判定を行うシステムである。 今回開発したシステムの参考にしたシステムはこのTOMである。\\




\item{名称不明:} 金沢工業大学の杉光一成教授が開発したシステム。名称は不明。
     これは当研究と同じくwebからの情報から類似度を求めるシステムであるが、
     相違点はMS-Word\footnote{Microsoft Office Word } を用いて作成された
     添付ファイルを判別する対象とすること。類似しているかどうかをまず人
     間が判断し、手動でシステムに渡すことである。
\end{itemize}

\clearpage

\section{開発したシステム}
メールを受信するとプログラムが起動する。受信されたメールを比較した後に類
似度のパーセンテージを記したメールを教員側に報告される。

\subsection{開発環境}
\begin{itemize} 
  \item ハードウェア(AT互換機)
       \begin{itemize}
	\item CPU:Intel(R) Celeron(R) CPU 2.80GHz
	\item memory:512MB
       \end{itemize}
 \item OS:Vine Linux 3.2
 \item 開発言語:シェルスクリプト
\end{itemize}

\subsection{システムの説明}
提出されたメールがweb上からコピーされたものでないかを調べる。システムに
通された結果は、教員に対してメールで知らされる。
システムの概略を{\bf 図\ref{gai}}に示す。
 \begin{figure}[!ht]
    \centering \includegraphics[width=11cm]{gai.eps} \caption{概略
    図} \label{gai}
   \end{figure}

\clearpage

\subsubsection{形態素解析}
検索には、提出されたメールの本文を形態素解析\footnote{自然言語で書かれた
文を形態素の列に分割し品詞を見分ける作業}にかけて抽出された単語を用いる。
形態素解析にはKakasiを使用した。Kakasiとは、 日本語を平仮名やローマ字綴
りの文に変換するプログラムである。単語ごとにわかち書きができる機能が存在
する。Kakasiはフリーソフトウェアであり、GPL\footnote{コピーレフトのソフ
トウェアライセンスの一つ。許諾する内容は、 プログラムの実行、プログラム
の動作を調べ、それを改変すること複製物の再頒布、プログラムを改良し、改良
を公衆にリリースする権利 } に基づいて配布されている。

今回使用したKakasiの他にもいくつか形態素解析ソフトが存在する。

\begin{itemize}
\item{Juman:} 京都大学言語メディア研究室で開発された。隠れマルコフモデル
\footnote{確率モデルの一つである。「システムがパラメータ未知のマルコフ過
程である」と仮定し、観測可能な情報からその未知のパラメータを推定する}を
使った解析で高い精度を誇り、形態素解析ツールChasenの元となったシステム。
\\


\item{Chasen:} 奈良先端科学技術大学院大学松本研究室で開発された。統計的
な手法を用いており、解析速度と使い勝手の向上している。\\


\item{MeCab:} 奈良先端科学技術大学院大学の工藤拓氏によって開発された。形
     態素解析ツールChasenに比べて解析精度は同程度で、解析速度は平均3-4倍
     速い。 \\

\end{itemize}



\subsubsection{形態素解析ソフトの比較}
形態素解析ソフトの選定を行った。それぞれの解析結果を{\bf 図
\ref{kaiseki}}に示す。選定対象はKakasi,Mecab,Chasenである。

 \begin{figure}[!ht]
    \centering \includegraphics[width=16cm]{kaiseki.eps} \caption{解析結
    果} \label{kaiseki}
   \end{figure}

解析結果より、MeCabとChasenは必要以上に分割してしまうのでキーワード検索
に用いる単語を抽出するには不向きである。よって本研究ではKakasiを採用した。



\subsubsection{キーワードの抽出}
形態素解析されて単語毎に分割された文章から接続詞や句読点を除外する。

\subsubsection{テキストブラウザ}
今回は使用するウェブブラウザとしてw3mを使用した。w3mとは、現東北大学伊藤
彰則教授によって開発されたページャ/テキストベースのWWW\footnote{World
Wide Web}ブラウザ。ktermやrxvtなどのターミナルエミュレータ\footnote{端末
として動作するソフトウェア} を使ってWebを閲覧できるほか、HTMLをテキスト
形式に整形するツールとして利用することもできる。今回w3mを使用した理由は、
w3mオプション指定で読み込んだHTML文書をプレーンテキスト\footnote{レイア
ウト情報や修飾情報を持たない純粋に文字のみで構成されるデータ}に整形して
出力する機能を備えるからである。

\subsubsection{検索エンジン}
本システムでは検索エンジンはyahooを利用する。yahooでの検索結果のHTMLから
URIを取り出し、取り出したURIのHTMLから提出されたメールと類似度を調べる。

他の検索エンジンにはGoogleが存在するが、検索エンジンの選択肢には他に
GoogleAPI\footnote{GoogleAPIとは、様々なアプリケーションからGoogleのデー
タベースを利用できるインターフェースである。Googleが公開しており無料で利
用できるが、1日に1000クエリーという制限がある。}の利用が挙げられたが、使
用回数に制限があったため今回は回数制限のないyahooを選択した。

\subsubsection{URIの選別}
判定を行っても効果が得られないと思われるwebページのURIは判定対象から除外
する。除外対象は以下に示す。

\begin{itemize}
\item{google}
\item{amazon}
\item{nicovideo}
\item{youtube}
\end{itemize}

\clearpage

\subsection{システムの動作}
開発したシステムの動作を順を追って説明する。
動作の流れを{\bf 図\ref{flow}}に示す。
\begin{figure}[!ht]
  \centering
  \includegraphics[width=7cm]{flow.eps}
  \caption{システムの流れ}
  \label{flow}
 \end{figure}

\subsubsection{ヘッダとボディの分割}
メールを受信するとプログラムが起動する。起動するとメールのヘッダとボディ
を分割する。
分割にはsed\footnote{文字列の置換や行の削除を行うLinuxのコマンド}を用い
る。

\subsubsection{キーワード抽出}
分割されたメールのボディを形態素解析ソフトkakasiを使って単語ごとにわかち
書き\footnote{文章において語の区切りに空白を挟んで記述することである}の
状態で抽出にする。


\subsubsection{web検索}
抽出した単語を用いてweb検索を行う。検索に用いるブラウザはテキストブラウ
ザw3m を使用する。検索エンジンにはyahooを用いる。検索結果はHTMLの状態で
ローカルに保存される。

\subsubsection{URIの抽出}
ローカルに保存された検索結果のHTMLからURIのみを抽出する。

\subsubsection{webページの情報を取得}
抽出したURIを使って、webページのHTMLを取得する。

\subsubsection{判定}
取得したHTMLと提出されたメールのボディとを比較し、類似度を調べる。

\clearpage

\subsubsection{報告}
類似度比較が終了すると、類似度を本文に記入したメールを教員に向けて発信す
る。
wikipedia\footnote{Wikiで作られているフリーな百科事典を作るプロジェクト}
のガンダムデスサイズ\footnote{内容に特に意味は無い}の項をコピーしたものを張り付けたメー
ルの本文と、出力結果{\bf 図\ref{keka}}を示す。

\baselineskip=0.1in
\begin{verbatim}
地球圏統一連合の圧政に反発する一部コロニーの地下組織によって計画された, 
地球上の連合及びOZ勢力に対する反攻作戦「オペレーション・メテオ」の一環と
して地上に降下した5機のガンダムタイプMSの1機。ガンダムタイプの装甲・構造
材に採用されたガンダニュウム合金は、従来のどの素材をも上回る強度を誇り、
OZが保有する兵器の大半を無効化する鉄壁の盾としてガンダムの高性能を支えた。
しかし、一見無敵と思えるこの素材も許容値を超えた攻撃を受け続ければいずれ
は破壊される。単独行動を基本とするガンダムは相対的に集中砲火を受ける可能
性も高く、被弾率の低減による生還率の向上は重要な課題であった。この懸案に
対する本機の開発者プロフェッサーGの導き出した解答は、「高い瞬発力による
回避・離脱速度の向上」、そして、「電子的手段を用いた機体の存在の隠匿」の
2つ。1つ目の課題をクリアすべく、機体仕様は反応速度と突進力を最重視したセッ
ティングとし、5機のガンダムの中では随一の機動性・運動性を獲得。2つ目の課
題については、プロフェッサーG の専門分野でもあるステルス技術を応用した電
波妨害装置「ハイパージャマー」を搭載。機体の塗装も電波、赤外線を吸収する
特性を持つ特殊塗料を使用し、より秘匿性が高められている。この塗装によって
漆黒に染められた姿は、他のガンダム以上に強い威圧と恐怖感をOZの兵士達に植
え付けた。姿無く急速接近し、巨大なビームサイズ（大鎌）で敵MSを刈り取る様
は、正に死者を冥府へ誘う死神そのものである。本機の専任パイロットはデュオ・
マックスウェル。機体のイメージに似合わない明朗快活な少年であるが、戦闘で
はOZの兵士を圧倒する実力を持つ。また、彼は本機に強い愛着を持っており、普
段は親しみを込めて「相棒」と呼んでいる。「デスサイズ(Deathscythe)」その
ものが英語で「死神」の意味を持つと思われがちだが、実際は「デス(Death)」
のみが「死神」の意味を示し、前述通り「サイズ(Scythe)」は「死神の持つ大鎌」
の意味を示す。つまり、「デスサイズ(Deathscythe)」は「Death (死神)」＋
「Scythe(大鎌)」を組み合わせた造語である。
\end{verbatim}
\baselineskip=0.2in


 \begin{figure}[!ht]
    \centering
    \includegraphics[width=14cm]{keka.eps}
    \caption{出力結果}
    \label{keka}
   \end{figure}

%%% 図を入れる場合(ふつー EPS)
%\begin{figure}[!ht]
% \centering
% \includegraphics[]{}
% \caption{}
% \label{}
%\end{figure}
\clearpage

\section{結果と考察}
不正に作成されたレポートを判別させるシステムを開発し、実際に稼働させた。
以下に利点と問題点が挙げられる。

\subsection{利点}
類似度判定はシステムが自動で行うので負担が少ない。文字コードISO-2022.JP\footnote{インターネット上(特に電子メール)などで使われる日本の文字用の文字符号化方式。ISO/IEC 2022のエスケープシーケンスを利用して文字集合を切り替える7ビットのコードであることを特徴とする。JISコードと呼ばれる}
でメールが送信できる環境が整っていればどこからでもシステムを通すことがで
きる。

\subsection{問題点}
HTMLファイルをwebから取得する上で、ネットワークに負担をかけてしまう。〆
切間近になってレポートを提出する学生も多いために、負担がさらに増大する恐
れがある。また、取得したHTMLがローカルに溜ってゆくので、受信するメールが
多くなるほどローカルの容量を圧迫してしまう。

\clearpage

\section{まとめ}
本システムを用いて、私自らがテストを行った。wikipediaからコピーした文章
を貼り付けたメールを送信したところ、75パーセント類似しているとの結果が出
たので、精度はそれほど高くない。受信されたメールの内容がweb からのコピー
でないかの判断をプログラムが行うので、教員への負担はかなり低いと言える。
また、既存のTOMとの連携を図ることで他の学生が提出したレポートとweb両方か
ら類似度比較が可能となる。しかし、webからHTMLを取得する際に、ネットワークに負
担をかけてしまう。


\subsection{今後の課題}
\begin{itemize}
\item{TOMとの連携}
現在稼働しているTOMとの連携を図ることで、他の学生が書いたレポートとweb両
     方から類似度比較を行う。\\

\item{ネットワークへの負化の減少}
HTMLをwebから取得した際にネットワークに負化をかけてしまうので、負化を軽
     減させる方法を取る。\\

\item{判定先URIの表示}
教員へ送信する類似度が記述されたメールに判定先となったwebサイトのURIを載
     せる。\\

\item{検索機能強化}
検索結果のHTMLからURIを取り出すとき、HTMLに記述されているURIが一部抜けて
     しまう場合があるので、全てのURIが表示されるように改良を加える。 \\

\item{精度の向上}
類似度の判定の精度を向上させて、コピーレポートを確実に見分けさせる。
\end{itemize}

\clearpage

\section*{謝辞}
本研究を進めていく上で、ご教授頂いた大垣斉講師、藤井信夫教授、情報安全工
学研究室並びに情報システム工学科卒業生の方々に深く感謝の意を表します。
\clearpage


% 参考文献
\begin{thebibliography}{99} 
  \bibitem{shellscript}Shell Script, [http://www.k4.dion.ne.jp/~mms/unix/shellscript/index.html]
  \bibitem{vine}Vine Linux, [http://www.vinelinux.org/]
  \bibitem{procmail}Proc Mail, [http://www.akatsuki.ne.jp/daemon/procmail/setup.html]
  \bibitem{w3m}w3m, [http://w3m.sourceforge.net/index.ja.html]
  \bibitem{kakasi}形態素解析ソフト, [http://www.lanches.co.jp/search/cache/1219626256.html]

\end{thebibliography}
 (注)URIは全て2009年11月25日時点のもの
\clearpage

\appendix
\section{ソースコード}
\baselineskip=0.1in
\begin{verbatim}

#! /bin/sh
TMP1=/var/tmp/TMP1.$$
TMP2=/var/tmp/TMP2.$$

#MAIL=/home/2009/takenaka/sotuken/test/mail.txt

ENEMY=/home/2009/takenaka/sotuken/sign2.txt
cat > $OMAIL
MAIL=$OMAIL

#解析
cat $MAIL | \
	sed -e '1,/^$/d' | sed -n -e '1,/^-- $/p' | \
	grep -v "^>" | grep -v "^#" | nkf -Z1 | \
	tr -s '\t' ' ' |  tr -d '\n' | \
	kakasi -w | kakasi -JH | tr -s ' ' '\n' > $MAIL
cat $MAIL > /home/2009/takenaka/sotuken/body.txt

#文字コード変更
nkf -e /home/2009/takenaka/sotuken/body.txt > /home/2009/takenaka/sotuken/ebody.txt

#w3mで検索
for WORD in `cat /home/2009/takenaka/sotuken/ebody.txt | sed 's/,/ /g' | awk '{print $2,$3,$4}'`
do

#検索パターン
w3m -dump_source http://search.yahoo.co.jp/search?p=$WORD >> /home/2009/takenaka/sotuken/search.txt
#w3m  -dump 'http://search.yahoo.co.jp/search?p='$WORD' ie=euc-jp' >> /home/2009/takenaka/sotuken/search.txt
#w3m -dump 'http://www.google.co.jp/search?q='$WORD' ie=euc-jp'
#w3m -dump  http://search.yahoo.co.jp/search?p=$WORD > /home/2009/takenaka/sotuken/search.txt

#cat  /home/2009/takenaka/sotuken/search.txt |  sed 's/<em class="yschurl">/\n/g' | sed 's/<wbr>/\n/g' > /home/2009/takenaka/sotuken/URI.txt


# for URI in `cat /home/2009/takenaka/sotuken/search.txt | grep 'div class="abs"' \
#             | sed 's/.*"yschurl">//g' | sed 's/<[^>]*>//g' | head -n 3`
#  do
    #echo -n ,$URI >> /home/2009/takenaka/sotuken/URI.txt
#done
done


URI=/home/2009/takenaka/sotuken/search.txt

#URI抽出
cat $URI | grep 'div class="abs"' \
 | sed 's/.*"yschurl">//g' | sed 's/<[^>]*>//g' | head -n 3 >> $URI


cat $URI | grep -v google | grep -v amazon | grep -v nicovideo | grep -v youtube  > $URI
cat $URI > /home/2009/takenaka/sotuken/test/test2.txt



wget -np  --restrict-file-names=nocontrol --directory-prefix=/home/2009/takenaka/sotuken/html/ -i  /home/2009/takenaka/sotuken/test/test2.txt

cd /home/2009/takenaka/sotuken/html/

i=1
#拡張子変更
for name in *.html ; do
   mv $name $name.txt
done

#ファイル名強制変更
for name2    in ?* ; do
   mv $name2 $i.txt
let i=${i}+1
done
# find . -type f | xargs -n 10 nkf -e --overwrite

#格納
OBDY=/home/2009/takenaka/sotuken/ebody.txt
for rname in *.txt ; do
    nkf -e $rname >>  /home/2009/takenaka/sotuken/test/test3.txt

    WGET=/home/2009/takenaka/sotuken/test/test3.txt
#echo $WGET

    tail +3 $OBDY | grep -v "^>" >$TMP1
    tail +3 $WGET | grep -v "^>" >$TMP2

    CO=`cat $TMP1 | wc -l`
   echo $CO
    CC=`/usr/bin/diff -b -B $TMP1 $TMP2 | wc -l`
    HAN=`expr 100 - $CC \* 100 / $CO - 1`
#    cat $HAN
if [ $HAN -gt 75 ]
		then
echo  "${HAN}" | cat >  /home/2009/takenaka/sotuken/p3.txt
fi



#cat  $HAN >> /home/2009/takenaka/sotuken/p3.txt
done

adad=takenaka.yasutomo@a4w.ise.osaka-sandai.ac.jp

cat <<END | /usr/lib/sendmail -t
To: takenaka.yasutomo@a4w.ise.osaka-sandai.ac.jp
Subject: [DailyCheck]`hostname`_20`date +%y%m%d`
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP

Diese E-Mail aus dem Internet konnten {$HAN}% dupliziert haben
END


exit 0

\end{verbatim}
\baselineskip=0.2in
\subsection{付録1.1}

\end{document}
