個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。Botとある理由からBotについて調べています。最近はAIを使ったBotもありますが、古典的な方法として、あらかじめ質問と回答を用意しておき、ユーザが入力した質問と類似度の高い質問を選んで回答する方法があります。TF-IDFがその代表的なアルゴリズムになります。ここでは、TF-IDFをPythonで実装する方法を示します。scikit-learnにあるTfidfVectorizerクラスを利用することで、簡単に実装できます。日本語を扱う場合は、あらかじめ形態素解析を行う必要があります。形態素解析にはMeCab(mecab-python3)を使用します。fit_transformで、形態素解析した質問文のセットを使用してモデルを学習します。モデルを使用して質問文をベクトル化した結果が出力されます。transformで学習したモデルを使用してユーザの入力文をベクトル化し、scikit-learnのcosine_similarity関数で入力文のベクトルと用意した質問文のベクトルのコサイン類似度を計算します。コサイン類似度が高い質問を選択し、その回答を表示します。print()TfidfVectorizerはデフォルトでは一文字の単語はトークンとして認識しませんが、日本語では一文字の単語(「雪」など)があるので、オプションで1文字もトークンとして認識するようにしています。..\data\stop_words.txt引数にタブ区切りの質問と回答のテキストデータを指定し、オプションでMeCabの辞書とストップワードを指定しています。気象庁のよくある質問集で試した結果です。?みぞれとは、雨と雪が混じったものをいいます。上空から雪が降ってくる途中、地上近くの気温が高いと、雪がとけて雨になります。一部分とけずに雪のまま落ちてくると、みぞれになります。みぞれは、観測分類上は雪に含めます。?台風は、東経180度より西の北西太平洋および南シナ海に存在する熱帯低気圧のうち、最大風速が約17m/s以上になったものを指します。なったものを指します。なったものを指します。このように、それぞれの名称を付している最大風速の基準には違いはありますが、台風もハリケーンもサイクロンもそれぞれの地域に存在する熱帯低気圧を強さによって分類している用語の1つということになります。サイクロンは熱帯低気圧と温帯低気圧の区別をせず、広く低気圧一般を指す用語としても用いられることがあります。?一般には、過去に経験した現象から大きく外れた現象のことを言います。大雨や暴風等の激しい数時間の気象から、数か月も続く干ばつ、極端な冷夏・暖冬まで含みます。気象災害も異常気象に含む場合があります。「ある場所(地域)・ある時期(週、月、季節)において30年に1回以下で発生する現象」を異常気象としています。文章における単語の重要度を見ているので、全文検索よりは精度が高くなりますが、古典的な方法であり類似語や質問の意味は解釈しません。FAQに回答する場合では、これでも十分実用的です。»プロフィールid:TadaoYamaokaスマホアプリ開発とディープラーニングを使った将棋ソフトの開発を行っています。)はてなブログをはじめよう!TadaoYamaokaさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。