>>673 >>695 S-Prologには無名変数がらみの不具合が多かった、
という話がSLOG.FINの「"履歴"」に載ってるけど、
その修正漏れっぽい現象を見つけたので記念カキコ。
| ?- X=_, X=nonvar, Y=c(_), Y=c(nonvar), write([X,Y]), nl.
[nonvar,c(_)]
X = nonvar
Y = c(_) ->;
no
こっちのほうがいいか
| ?- X=_, X=nonvar, X=another-nonvar.
no
| ?- Y=c(_), Y=c(nonvar), Y=c(another-nonvar).
Y = c(_) ->;
no
IF/Prolog V5.2A の不可解なバグ。
[user] ?- sub_atom(abcccd,P,1,N,c).
P = 2
N = 3 ;
P = 3
N = 2 ;
no
[]の型がリストでもアトムでもなくて不自由しまくる難儀な処理系も知っているぜ
comp.lang.prologで今、パイナップルとかなんとかいう人が、
かたくなにリスト処理の使用を拒んでいてなんか面白い
エジンバラ構文以外にはどんなのがあるのかな?
マルセイユ系っていうのかな。
LISPのS式のような構文。中島秀之さんが育てていた
Prolog/KRなんかもこの系統だ。
960 :
デフォルトの名無しさん:2007/10/11(木) 00:51:43
一般の業務ソリューションでPrologって使われることがありますか?
うん
どんな?
一般の業務
>>960 日本では少ないようですね。
米国では結構あるらしいですが。
企業業務とは則ち記号処理なのに一般企業が
業務用に記号処理言語を採用しないことは
奇妙ですね。
役員会議を初めとする会議録、業務日誌の分析。
企業の末端活動の記録である会計伝票の摘要解析に
手を付けないのは何故でしょうか。
日本語は区切るのすら難しいからPrologの出番なんてない
Excel使い>SQL使い>Prolog使い
かな?
やっぱ一般業務はある程度枯れた環境じゃないと
>>965 形態素解析はJumanを使いますが、それでも
結構複雑な解析ができますよ。
>>966 全くの初心者を対象にした場合の使い易さでは
カルクものは馬鹿にならないですね。
ブログミングもデータベースも一覧で対象データが
使い手に「見えている」環境を想定していません。
Prologのlistingにして然りです。一方、カルクものは
見えているけど計算が大変という問題を解決しています。
盲点だったかも知れません。
>>960 私の所は年商100億円の卸売業(小売業に換算すると10-30億くらいか)ですが、
20年弱、営業、総務の実務はPrologインタプリタのみです。
インタプリタトップから売上伝票を入力し、入力検査、管理帳票出力、
請求書等の印刷まで行います。
?- 請求書発行('20070930').
のような感じてすね。
データベースはProlog内部データベースとPostgreSQLの併用になっています。
経理は最終的に帳票作成が面倒だったので、有無曲折はありましたが
現在は"弥生"です。データベースを使う会計ソフトではないので、データの
Prologへの移転に苦労しています。
弥生以前の"大番頭"を導入する前にPrologインタプリタトップから
「完全な摘要入力」による自動仕訳システムを作ったのですが、
厳密な日本語入力が面倒ということで実際には使用しませんでした。
メガネのミキがprologを業務に利用してるらしいが、詳細は不明
>>967 今まで MeCab とか試してみたが、人間のほうがやっぱり圧倒的に高性能だった。
俺がなんか間違ってるのかな?さしつかえない範囲でサンプルとか設定を見せてくれません?
形態素解析なら、人間の方が高機能でも、
疲れたり飽きたりするし、処理速度も遅いよ。
>>971 辞書は追加していますが、jumanrcファイルなどの設定は変えていません。
上に出てきた会計伝票の摘要処理だとほとんどが
?- 形態素解析(文,'社長大阪出張、新幹線往復代金',X).
X = ['社長','大阪','出張','、','新幹線','往復','代金']
というレベルです。これでも、一々文字検索をしながら
構成していくよりは、全段がしっかりあるだけまし、ということです。
少々分解されすぎて困るということは確かにあって、
?- 形態素解析(文,'第一回選手権大会参加者名簿をください',X).
X = ['第','一','回','選手権','大会','参加','者','名簿','を','ください']
この後、例えば、第一回と再結合する必要部分を見つけ出すのが実は大変です。
974 :
973:2007/10/13(土) 21:35:02
全段 -> 前段
むー。これを見るかぎり、形態素解析より上位の層での差ってことか……まだまだ修行が足りないです。
Prolog入門によい処理系と教科書をおしえてください。
C++やPerl, make, Bisonは一応使えます。
処理系は SWI-Prolog です。
教科書は、「Prologへの入門」I.Bratko著 安部憲広訳が有名です。原書は
「Prolog Programming for Artificial Inteligence」という分厚い本ですが
何故か日本では入門編と応用編「AIプログラミング」といった体裁で分冊されました。
原書は11月に最新版が出版されますから横に並べて読まれるとよいと思います。
この本の他に
「Prologの技芸」という人気本がありますが、現在なんと絶版です。私は、
「Prologを学ぶ -文化とその実践-」 杉崎昭生著という本を推薦します。
そのほか典型的な教科書タイプの本も10冊以上出版されていますが、
「情報学概論 Prologプログラミング」吉田要著 や
「Prologプログラム入門」安部憲広著 が代表的なものでしょう。
やや高度な応用を期待する場合は、
「Prologとその応用2」溝口文雄監修 溝口文雄・武田正之・畝見達夫・溝口理一郎共著
「自然言語解析の基礎」田中穂積著の第4章。
「自然言語処理入門」岡田直之著の第4章。
「エキスパート・システム入門」安部憲広・滝寛和共著の第2章。
「PROLOGデータベース・システム」D・リー著 安部憲広訳
「楽しいプログラミング2 記号の世界」中島秀之・上田和紀共著も良い本
だと思いますが、校本の故か読み難い。
「PROLOGを楽しむ」松田紀之著も同様です。この2冊は楽しい本だと思います。
奇書としては、「法律家のための コンピュータ利用法 論理プログラミング入門」加賀山茂著
という本があります。徹頭徹尾Prologについて書いてある本ですが、
実に面白い本です。
Prolog Programming for Artificail Intelligence ですね。エルが一つ
抜けた。それから、
「Prologを学ぶ -文化とその実践-」 杉崎昭生著の推薦理由は
この本だけが、処理系を用意してプログラミングすることなしに、
ぐいぐい読み進むだけでProlog言語の概要を理解できる本では
ないかということです。それが可能なのは著者がPrologを上手に
利用して、そのコードとノウハウの中から著作が自然と生まれて
いることに起因するのではないかと推察しています。
ありがとうございます。
アマゾンでチェックして読んでみます。
ネタで、これからProlog勉強してCGI作るハメになってしまったのだが、
環境変数にアクセスしたり、データ構造をファイルにシリアライズしたりできるものなの?
>>980 処理系によると思うけれど
getenv/2とsub_atom/5(/の後の数字は引数の数)の二つを使ってQueryStringを
分解する。
シリアライズの意味はよく知らないが、
writeq(_項) で項がどんなに複雑な構造体であっても
ストリームに書き出せる。XMLのタグ構造で表現したいときは
そういうライブラリがない場合には
functor/3とarg/3いう述語の組み合わせか、
=.. (/2でユニブと読む)という述語で
構造体を関数部分と引数に分解できるので再帰的に
タグとして書き出せばよい。
>>981 は
メソッドがGET(htmlからのリクエストの時のformタグのaction="GET")の
時の話。
メソッドがPOST(action="POST")の時は、標準入力から渡されるから、
get_char/1 を使って再帰的に一度文字のならびのリストを構成する。
それをatom_chars/2を使ってatom(文字列)に
変換してから(変換しなくてできるが)、
Content-Length: Char-Code: 等を
探して必要な情報部分をsub_atom/5で切り出す。
Char-Code: はなかった。あるのはAccept-Charset: かな。
文字列処理をしたいのに、文字列全体をatomにする理由がわからない。
文字のlistのままの方がはるかに柔軟だと思うが。
985 :
980:2007/10/25(木) 19:55:22
>>981-984 情報あんがと。
ようするにそういうモジュールとか無いから、CやPerlで大昔やったように自前でやらなくちゃいけないって事ね。
しかも明らかに向かない言語で。
初心者なのにそんなマゾいことやらされるなんて、考えただけでもゾクゾクしてきました
>>984 sub_atom/5が非決定性の述語でそれ自体でsplitの
能力があり、しかも対象文字列に対して全解が得られる。
検索語を指定してその前部分と後部分に分けて処理する。
append/3を多用するスタイルも魅力的だが、このように
sub_atom/5を多用するスタイルもある。
>>985 Prologはライブラリなしでその場でプログラミングするスタイルで
あるのは確かだ。ただ、大昔やったことかも知れないが、Perlで書く
コードとほとんど長さで差がなく、しかも、この言語の方が文字列を
解析するコードを表現するのに適しているので、最終的には生産性が
高い。
どこかのサイトにPrologはReadOnlyProgram言語でPerlは
WriteOnlyProgram言語であるという記述があったが、
可読性の良さという観点ではCやPerlとPrologでは比較にならない。
日本人が水のコストをタダだと思っていると批判的に指摘される
ことがあるらしい。多くのプログラマはライブラリの参照コストを
ゼロだと誤解しているようだ。ライブラリを引いてる隙があったら
コードを書けばよいというのが、Prologのスタイルだ。
一度書いたら、以後はすぐに書けるようになるから、事実上、
自分の中にライブラリを持つことになる。
>>987 PrologがReadOnlyであるというのは、
可読性だけはすばらしいが、プログラムを書こうとすると、
カットの効果など、わけがわからない点が多く、さっぱり
書き進まないという揶揄です。(Haskellなどに較べて)
一方、PerlをWriteOnlyというのは、書いたときは意味が
解っていても、後で読むとなにを書いたのかさっぱり解らなく
なるの意味かな。それともただただ文字を書き出すだけの言語と
いうことだろうか。
>>989 Perl のソレは「後でコードが読めない」の意味だと思う。
>>990 乙。
3年がかりで1000か。一日平均一レス。
確か990を超えるとスレが落ちやすいそうだから、埋めるか保守するかが必要かな。
.
.
.
.
.
.
1000ならジュースでも飲むか
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。