Skip to content

Instantly share code, notes, and snippets.

@uhfx
Created December 17, 2020 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uhfx/969861e5b748774df12383334c58cada to your computer and use it in GitHub Desktop.
Save uhfx/969861e5b748774df12383334c58cada to your computer and use it in GitHub Desktop.
\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