\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上からコピーペーストしたレポートの提出を拒
否する。本研究では、メールを受信したときに自動的にプログラムが起動するので、教
員の負担を大幅に軽減できる。メールを受信すると、それをトリガーにプログラ
ムが起動する。類似したシステムとして、大阪産
業大学工学部情報システム工学科で稼働しているTOMが存在する。TOMは類似度の
比較対象が他の学生が提出したレポートである。しかしながら、アルゴリズムは
TOMと似通っているので、今回開発したシステムはTOM のWeb版と言える。実験の結果、
判定をシステムが行うので、教員側への負担は小さいと結論づけた。しかし、類似度判定
の精度が高くないので、今後の課題としては、類似度判定の精度の向上を図る。

\end{abstract}

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

\subsection{目標}
本研究の目標は、コピーレポートを検知してコピーレポートを成績に反映さ
せないことである。また、現在稼働しているTOM\footnote{た
ぶん 同じ メール の略称}と併用して類似度判定の範囲を
Webまで広げ、検知率を向上させることである。

\subsection{問題の解決策}
今回開発したシステムをを導入し、学生に対してシステムが動作することを何らかの手段で伝達
して不正を牽制する。



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




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

\clearpage

\section{システムの仕様と用語説明}



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

\subsection{システムの概要}
提出されたメールがWeb上からコピーされたものでないかを調べる。システムに
通された結果は、教員に対してメールで報告される。
\subsubsection{システムの動作の説明}
メールを受信するとプログラムが起動する。まず、メール本体を分解して単語ごとに分割する。
出てきた単語を使って、検索エンジンYahooを使って検索する。次に検索結果のHTMLから比較対象となるWeb
ページのURIのHTMLを取得する。取得したHTMLとメールとを比較して類似度を求める。最後に、結果を記述したメールを教員側に送信する。

システムの概略を{\bf 図\ref{gairyaku}}に示す。
 \begin{figure}[!ht]
    \centering \includegraphics[width=16cm]{gairyaku.eps} \caption{概略図} \label{gairyaku}
   \end{figure}
\clearpage

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

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

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


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


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

\end{itemize}

\clearpage

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


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

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

\clearpage

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

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

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

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

\subsection{URIの選別}
判定を行っても効果が得られないと思われるWebページのURIは判定対象から除外
する。除外にはgrep\footnote{ファイルに対してパターンマッチングを行い、出力するコマンド}
を使用した。除外対象を以下に示す。

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

これらを除外対象にした理由は、動画サイトやショッピングサイトは比較するために必要なテキスト
が少なく、また価格や広告などが多く存在するために比較対象としては不適格と判断したため。

\clearpage

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

\subsection{ヘッダとボディの分割}
メールを受信するとプログラムが起動する。起動するとメールのヘッダとボディ
を分割する。シグネチャはWeb検索には不要であるため、除去する。
分割にはsed\footnote{文字列の置換や行の削除を行うコマンド}を用い
る。ヘッダとボディの間に存在する空行を判別して分割を行う。イメージを{\bf 図\ref{sed}}
に示す。
\begin{figure}[!ht]
  \centering
  \includegraphics[width=14cm]{sed.eps}
  \caption{ヘッダとボディの分割}
  \label{sed}
 \end{figure}

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


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

\subsection{URIの抽出}
ローカルに保存された検索結果のHTMLからタグ等を除去してURIのみを抽出する。
動作を{\bf 図\ref{html}}で示す。
 \begin{figure}[!ht]
    \centering
    \includegraphics[width=15cm]{html.eps}
    \caption{URIの抽出}
    \label{html}
   \end{figure}

\clearpage

\subsection{webページの情報を取得}
抽出したURIを使って、webページのHTMLを取得する。HTML取得にはwget\footnote{UNIXコマンドラインで HTTP や FTP 経由のファイル取得を行えるツール}
を用いる。

\subsection{判定}
取得したHTMLと提出されたメールのボディとを比較し、類似度を調べる。
HTMLと本文の差分はdiff\footnote{ふたつのファイルの差分を求めるコマンド}を用いる。
類似度は以下の式で求める。
\begin{equation}
100 - \frac{(HTMLとメール本文との差分)\times 100}{(メール本文)}
\end{equation}


\subsection{報告}
類似度比較が終了すると、類似度を本文に記入したメールを教員に向けて発信する。
メールはプログラムが生成して自動で送信される。

\clearpage
\subsection{結果と考察}
実行結果を示す。シェルスクリプトについて説明する課題が出題されたと仮定し
て、wikipediaからコピーした文章をそのまま貼り付けたメールを解答として送信する。
送信した元のメールの文章である{\bf 表\ref{sousin}} と、返された結果の{\bf 図\ref{keka}}を
示す。

\begin{table}[h]
\caption{メールの文章}\label{sousin}
\begin{tabular}{|l|}
\hline
シェル（殻）という名称は、OSの機能を実装している中心核部分(カーネル)の外層として動作す\\
ることからきている。通常、シェルはコマンドラインインタフェース (CUI) を持つが、グラフィ\\
カルユーザインタフェース (GUI) を持つものは特にグラフィカル・シェルと呼ぶ。\\
\\
シェルはUNIXで使用される呼称であり、より一般的にはコマンドインタプリタと呼ぶ。しかしUNIX\\
の普及やMS-DOSなど他のOSでも使用されたことにより現在では一般的な名称となっている。ただし\\
通常「シェル」と言った場合はPOSIX系のオペレーティングシステムにおけるシェルを指すことが\\
多い。一方「コマンドインタプリタ」の名称で呼ばれる場合は単に「コマンドを解釈する者」の意\\
であり、OSのユーザインタフェースとしての意味合いは失われていることが多い。\\
\\
UNIXライクなオペレーティングシステムではシェルがユーザプログラムとして実装されており、\\
また好きなシェルを差し替えて使用することができ、このことはUNIX発表当時においてはUNIXの\\
特徴の一つとなっていた。\\
\\
同様の名前で、LEDモジュール製品名に使われている。これらはOSなどとは一切の関係はない。\\
\hline
\end{tabular}
\end{table}


 \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

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

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

\subsubsection{問題点}
yahooを用いての検索結果のHTMLからURIを取り出す際に、全てのURIを抽出できない場合がある。
HTMLに記述されたURIの途中にタブが付いており、それをプログラムが判断できないことが原因である。
また、比較対象がwebからのみなので、web上からコピーされたレポート以外には対処できない。


\clearpage

\section{まとめ}
本システムを用いて、テストを行った。wikipediaからコピーした文章を貼り付けたメールを送信
したところ、75\%類似しているとの結果が出た。100\%コピーにも関わらず75\%類似との結果が
出力されたので、計算式に改良の余地が残されている。

既存のTOMとの連携を図ることで他の学生が提出したレポートとweb両方から類似度比較が可能となり、コピー
レポートの検知率が向上する。受信されたメールの内容がweb からのコピーでないかの判断を
プログラムが行うので、教員への負担はかなり低いと言える。


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

\item{URI抽出機能強化:}
検索結果のHTMLからURIを取り出すとき、HTMLに記述されているURIが一部抜けて
しまう場合があるので、全てのURIが表示されるように改良を加える。検索結果のHTMLが比較的
単純なGoogleAPIを用いればURIが抜けることは無いが、GoogleAPIはクエリ制限があるために実現
は困難である。よって、現在のURI抽出に改良を加える。yahooの検索結果のHTMLではURIの途中
でタブが入っている場合がある。そのタブの存在をプログラムに判断させて除去することでURIの
漏れを防ぐ。 \\

\item{精度の向上:}
計算式に改良を加えて類似度の判定の精度を向上させて、コピーレポートを確実に見分けさせる。現在使用している判
定式にも改良を加えることで精度が向上させる。
\end{itemize}


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


% 参考文献
\begin{thebibliography}{99} 

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


\end{thebibliography}
 (注)URIは全て2009年1月19日時点のもの
\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
OMAIL=a
MAIL=a
URI2=a
URI3=a

trap "rm -f $URI2 $URI3 $OBDY $BODY $TMP1 $TMP2; exit 0" 0 1 2 3 15

cat > $OMAIL

#解析
cat $OMAIL | \
	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

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 >> $URI2


cat $URI2 | grep -v google | grep -v amazon | grep -v nicovideo | grep -v youtube  > $URI3
cat $URI3 > /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`
#    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`_`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
\end{document}
