Created
December 17, 2020 15:30
-
-
Save uhfx/969861e5b748774df12383334c58cada to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\section{November 27th, 2020} | |
\subsection{前回のミーティングでの話} | |
11月20日に実施されたミーティングでは以下のような話をを阿多先生から頂いた. | |
\begin{itemize} | |
\item 機械学習を勉強する. | |
\begin{itemize} | |
\item 言語はPythonを用いる.理由はライブラリが豊富であるため. | |
\end{itemize} | |
\item 本学に寄せられた問い合わせを閲覧する. | |
\begin{itemize} | |
\item アノテーション付けに深入りしない.あくまで通信領域での研究であるため,アノテーション付けについて深入りすることはしない. | |
\end{itemize} | |
\item CUIでの動作をまず目指す. | |
\begin{itemize} | |
\item GUIで(例えばMS Teams上で\footnote{前回のミーティングで阿多先生から頂いたリンク\url{https://docs.microsoft.com/ja-jp/microsoftteams/platform/bots/what-are-bots}})動かすことの出来るようになれば尚良し. | |
\end{itemize} | |
\end{itemize} | |
\subsection{今週の前書き} | |
前述の「機械学習をPythonで行う」であるが,Pythonを使用してAIチャットbotや自然言語処理を扱う本を用いて学習することにした. | |
使用した本は阿多先生に購入していただいた本(東中竜一郎,稲葉通将,水上雅博『Pythonでつくる対話システム』オーム社,2020年)および自分で購入した本(中山光樹,『機械学習・深層学習による自然言語処理入門 (Compass Booksシリーズ)』マイナビ出版,2020年)を用いた. | |
使用した環境はWindows10 ビルド20H2,およびMacBookPro 2020 MacOS BigSurを使用する. | |
前者の本からやっていくこととし,後者の本も使って行きたいと考えている. | |
\subsection{今週の進捗} | |
\subsubsection{MeCabの導入} | |
日本語処理のためにMeCab(めかぶ)と言う形態素解析エンジンを使用する.形態素解析とは,入力された文を形態素という意味を持つ最小の単位,すなわち単語に分割し,単語に品詞情報を付与することである\cite{202011-dsbook}\footnote{\url{https://taku910.github.io/mecab/}にてMeCabの仕様が公開されている.}. | |
「今日の晩ご飯はカレーライスとサラダです。」という文章を形態素解析するためにMeCabを実行すると,以下のように処理される. | |
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] | |
$ python3 mecab-python3_test.py | |
>今日の晩ご飯はカレーライスとサラダです。 | |
BOS/EOS,*,*,*,*,*,*,*,* | |
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー | |
の 助詞,連体化,*,*,*,*,の,ノ,ノ | |
晩 名詞,一般,*,*,*,*,晩,バン,バン | |
ご飯 名詞,一般,*,*,*,*,ご飯,ゴハン,ゴハン | |
は 助詞,係助詞,*,*,*,*,は,ハ,ワ | |
カレーライス 名詞,一般,*,*,*,*,カレーライス,カレーライス,カレーライス | |
と 助詞,並立助詞,*,*,*,*,と,ト,ト | |
サラダ 名詞,一般,*,*,*,*,サラダ,サラダ,サラダ | |
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス | |
。 記号,句点,*,*,*,*,。,。,。 | |
BOS/EOS,*,*,*,*,*,*,*,* | |
\end{lstlisting} | |
\subsubsection{Telegram上で動かす} | |
\label{202011-running-on-telegram} | |
メッセージアプリは日本ではLINEが浸透しているが,botを作りやすいためTelegramというメッセージアプリを用いている. | |
今回私は \href{https://t.me/ocuchat_bot}{@ocuchat\_bot}というアカウントを作成した. | |
しかしここでエラーが発生し,これ以上進むことが出来なかった.当該事象は『Pythonでつくる対話システム』pp.27における以下のTerminal上の操作である. | |
原因としては,Pythonのバージョンの違いによるものであるということを今日(11月27日)の昼に思いついた.本書では3.6.7で動かしているのに対して,macOS Big Surでは3.8.0がデフォルト(3.9.0にアップデートしてしまった)で3.6.xにダウングレード出来ないようなので,Macintoshで出来ない可能性がある. | |
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] | |
$ python3 echo_system.py | |
\end{lstlisting} | |
これを実行した上で通常ならオウム返しbotとなるが返答が無く(図\ref{202011-ocuchatbot_error}参照,本来ならば「こんにちは」と言えば「こんにちは」という結果が帰ってくるはずである)実行結果はWindows上でもMac上でも,以下のようなエラーが出た. | |
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] | |
No error handlers are registered, logging exception. | |
Traceback (most recent call last): | |
File "/home/uhfx/.local/lib/python3.6/site-packages/telegram/ext/dispatcher.py", line 425, in process_update | |
handler.handle_update(update, self, check, context) | |
File "/home/uhfx/.local/lib/python3.6/site-packages/telegram/ext/handler.py", line 145, in handle_update | |
return self.callback(update, context) | |
File "/home/uhfx/dsbook/telegram_bot.py", line 13, in start | |
input = {'utt': None, 'sessionId': str(update.message.from_user.id)} | |
AttributeError: 'CallbackContext' object has no attribute 'message' | |
\end{lstlisting} | |
\begin{figure}[H] | |
\centering | |
\includegraphics[width = 12cm]{./images/202011/ocuchatbot_error.png} | |
\caption{応答の無い画面.} | |
\label{202011-ocuchatbot_error} | |
\end{figure} | |
Telegramのアプリケーションで入力すると,Pythonの方では上のエラーの反応があるため接続自体は上手くいっていると思われるが,Telegramの方でAPIの仕様変更が行われている可能性はある. | |
Telegramのbotに関する公式サイト(\url{https://core.telegram.org/bots/api})を参照すると,2020年11月4日に大型アップデートが行われている模様で,この本が刊行された2020年3月時点より変更されている可能性がある. | |
変更点についてはよく分からなかった. | |
\subsubsection{タスク指向型対話システム} | |
前述のエラーで結構な時間を食ってしまったので,先に進めることにした. | |
タスク指向型対話システムとは,対話によって所定のタスクを遂行する対話システムのことである\cite{202011-dsbook}. | |
\subsection{今後の課題・やること} | |
\begin{itemize} | |
\item まず前述のエラーの解消に務める(これが出来ないと以降の実装することができない). | |
\begin{itemize} | |
\item Macでは前述のエラーの前までは出来た.本に沿ってWindowsでもやろうとしたが,MeCabの動作確認の場面で以下のようなエラーが出たため諦めた. | |
\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single] | |
~/dsbook$ python3 mecab-python3_test.py | |
Failed initializing MeCab. Please see the README for possible solutions: | |
https://github.com/SamuraiT/mecab-python3#common-issues | |
If you are still having trouble, please file an issue here, and include the | |
ERROR DETAILS below: | |
https://github.com/SamuraiT/mecab-python3/issues | |
issueを英語で書く必要はありません。 | |
------------------- ERROR DETAILS ------------------------ | |
arguments: | |
error message: [ifs] no such file or directory: /usr/local/etc/mecabrc | |
---------------------------------------------------------- | |
Traceback (most recent call last): | |
File "mecab-python3_test.py", line 3, in <module> | |
mecab = MeCab.Tagger() | |
File "/home/uhfx/.local/lib/python3.6/site-packages/MeCab/__init__.py", line 124, in __init__ | |
super(Tagger, self).__init__(args) | |
RuntimeError | |
\end{lstlisting} | |
\end{itemize} | |
\item 本に準拠したため,Pythonの環境は実機でやったが本当はクラウドでしたい(Google Colaboratoryなど). | |
\begin{itemize} | |
\item 進捗を毎回毎回Githubにクローンする必要がないため,大学,自宅の進捗をリアルタイムで行うことができる. | |
\end{itemize} | |
\end{itemize} | |
\begin{thebibliography}{99} | |
\bibitem{202011-dsbook} 東中竜一郎,稲葉通将,水上雅博,『Pythonでつくる対話システム』: オーム社,2020年 | |
\end{thebibliography} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment