LoginSignup
14
31

More than 3 years have passed since last update.

Pythonを応用した活動の紹介

Last updated at Posted at 2017-07-11

学校でプログラミング教えています.
私のゼミではPythonを使ったAI系(人工知能関連)のテーマに取り組んでいます.
 
-------------------
・ツールとライブラリに関するノート(PDF形式40ページ:502KB) 2018/09/29更新
 言及しているツール: MeCab, CaboCha, JUMAN, KNP,
             Open JTalk, Julius, OpenSSL
 言及しているライブラリ: GMP, MPFR
 言及している処理環境 : Visual Studio, MSYS/MinGW
 言及しているモジュール: mecab-python, PySwip
-------------------
・Prologのテキスト
 Pythonプログラム用のバックエンド推論エンジンにする予定です.
-------------------
 
Pythonを学ぶためのテキストはこれをベースにしています.
→Pythonのテキスト作りました
 
(2017/07/11)
 「きちんと日本語が通用するような対話機能」を実装しようと取り組んでいます.それでまずは MeCab と Open JTalk をPythonから利用するための準備をしています.
 
次の目標は,文章を一階述語論理(FOL)の式に変換して「意味の通る」日本語のやりとりができる対話機能の実現です.(ちゃんと対話の前後の脈絡があるタイプの)
それでPrologとの連携もやりたいので,PythonからSWI-Prologの機能を呼び出す機能が必要です.ただ PySwip モジュールがうまく働かず,また自前で連携機能を作ったほうが早そうですね…
 
ちなみに,私のゼミの活動スタンスは「認知アーキテクチャ」「AGI」です.
今は「AI」というと「深層ニューラルネットワーク」を意味する風潮があるようですが,うちのゼミでは深層NNの扱いはまだ先です.
 
「時代錯誤」という声が飛んできそうですが,意外にも地味な部分が重要です.
 
Pythonの下にはデータ解析,数式処理をはじめとする素晴らしいモジュールが集結していますね.それに自然言語処理と推論エンジンが使えます.
 
みんなで「和製の汎用人工知能」の実現を目指しませんか.

補足・報告

【報告】自然言語理解(NLU)(2018/12/25)

 今年度の卒業研究では,自然言語理解(NLU)に関するテーマを手がける学生さん達がいます.作ったプログラムモジュールとドキュメントを公開しています.
情報処理学会第81回全国大会で発表しました.

【報告】大規模計算(2018/02/27)

 今年度の卒業研究の成果物の1つで,マンデルブロ集合の拡大ムービーです.
YouTubeにアップしてあります
10^260倍まで拡大するムービーで,8,855枚のフレームで構成されています.
 1枚のフレームを生成するのに3分くらいかかりますので,1台のマシンでムービーを生成すると「18日間連続稼動」ということになりますが,たくさんのマシンでジョブを分割・分散・統合すると約6時間くらいで完成しました.
 目新しい技術は使っていませんが,C++で書いたフレーム生成プログラムをPythonで分散実行させるというシステムを学生と一緒につくりました.要するに,グリッド・コンピューティングのRJE(Remote Job Entry)をPythonで即興で作ったというわけです.
 文系の学生3名+私でやりました.(学会でも発表しました)

【報告】数式⇔日本語(2018/02/27)

 これも今年度の卒業研究の成果です.日本語で数学の問題を解いてくれるシステムを目指していますが,今回は「数式を正しく日本語で読み上げる」機能の実装です.数式処理エンジンはPythonのSympyで,清書はTeX,読み上げはOpen JTalkです.次のステップは日本語で要求を伝えると答えてくれる機能の開発ですが,日本語入力の後,形態素解析(MeCabを使用)をして,それを述語論理の式にしてPrologに伝える機能を作りつつあります.
 Pythonは何でも繋げることができて良いですね.楽しくなります.
● 数式の読み上げ01:単純な加算
● 数式の読み上げ02:不定積分
● 数式の読み上げ03:総和
● 数式の読み上げ04:複雑なケース
● 数式の読み上げ05:日本語形態素解析
 文系の学生1名+私でやりました.(学会でも発表しました)
 

【python_ai_note.pdfに関すること】

--------------
【補足】(2018/09/22)
 日本語の形態素解析と構文解析のツール(CaboCha,JUMAN,KNP)に関して加筆しました.これらを使って「日本語文→述語論理の式」に変換することができそうです.
 
--------------
【補足】(2018/07/25)
 C/C++言語処理系を使う人のために,Microsoft Visual Studio,MSYS/MinGW の導入方法と簡単な使用方法を載せました.
 
例によって「マンデルブロ集合」の可視化をベンチマークに使ったところ,VCの方がGCC(MinGW64)よりも16%早いという結果となりました.(どちらのコンパイラでも O2 オプションで最適化しました)
ソースプログラム
 
このプログラムは,画像を配列上に生成して,それをSVGで書き出すというものです.正直言いまして,画素構成を十分に小さく(128x128程度)しないと,生成したSVGをWebブラウザで表示できませんが,巨大なSVGデータをファイルに書き出す際の書き込み速度の比較にもなります.ファイルへの出力はGCCの方が早かった(2倍くらい)ですね.
 
--------------
【補足】(2018/07/15)
 mecab-python,PySwip の基本的な使用方法について加筆しました.
PySwipがやっときれいに動くようになりましたね.
 
--------------
【補足】(2017/09/09)
 GMP/MPFR に関して,オブジェクトの記憶域を開放する関数についての説明を加筆.
 
--------------
【補足】(2017/09/02)
 音声認識プログラム Julius の使い方の紹介(導入とデモの方法)を加筆しました.
 
音声認識は奥が深いので,Julusを使いこなす練習を通して多くのことが学べると思います.
学校で音声の処理に関する基礎を学んだら,Juliusを使って実践演習というのも良いと思います.
 
テキスト内で引用している音声認識用サンプル音声データのリンクはこちら:
snd01.wav
snd02.wav
 
--------------
【補足】(2017/08/22)
 GMPの解説に少しだけ加筆.
 
--------------
【補足】(2017/08/18)
 任意精度の数値演算ライブラリ GMP, MPFR の基本的な使い方の説明を加筆.
 複素力学系の高精度シミュレーションをする学生がいるので使い方を記載しました.数式処理システムでも高精度演算はできるのですが,計算量や計算速度の関係でC/C++ で書いた方が良いケースもあって,そのための資料としました.
 
--------------
【補足】(2017/08/13)
 Open JTalkの使用方法について加筆しました.
subprocessモジュールでOpen JTalkコマンドを実行した後,できたWAV形式ファイルを PyAudio で再生するという方法で日本語の文章を読み上げるというサンプルプログラムを掲載しました.
 
--------------
【補足】(2017/07/17)
 OpenSSLの使用方法について加筆しました.
 
ツールとライブラリに関するノート
 
学生から非難あり,「まだAIらしい機能ができていないのにAIをタイトルにするのははずかしい!」とのこと.
ということでタイトル修正…


written by 中村勝則

14
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
31