生成AIとConceptBase

ジャストシステムが2000年~2005年頃に販売開始した製品にConceptBaseというのがありました。
一言で言えば、類似文書検索システムです。ある文書と良く似た内容の文書を社内の文書ライブラリーから探して来るとか、FAQシステムとして、何かの不具合の解決方法を書いた文書を探すとか、そういうためのものでした。
その基礎になっている技術は、マハラノビスの汎距離と言って、ある文書の中の名詞系の語彙だけを抜き出し、それらの語彙に対して一種の分類を行い、分類の種類を一つの座標軸にし、単語の出現回数によって多数のベクトルを持った多次元ベクトル空間を作り、その重心を取ります。類似文書とはつまりその重心同士の距離が短いということになります。
これって実は今話題の生成AIのEmbeddingと呼ばれる技術そのものです。ただConceptBaseの頃は名詞系の語彙だけで多次元ベクトル空間を作りましたけど、今はトークンと呼ばれていますけど、名詞系以外の形態素も含めて分類情報を与えているのだと思います。
ちなみにChatGPT4にマハラノビスの距離とEmbeddingが関係あるか聞いてみました。回答はやはりその通りでした。

Q: 生成AIのEmbeddingは、マハラノビス距離と関連がありますか?

A: ChatGPT
はい、マハラノビス距離と生成AIのembeddingには関連があります。マハラノビス距離は、特徴空間において、データの分布を考慮して2つの点またはデータセット間の距離を測定する方法を提供します。生成モデルのembeddingは、高次元データを低次元空間にマッピングし、データ間の関係を捉える役割を果たします。
具体的には、生成モデルが学習する過程で、データの内部構造やデータ間の関係を学習し、これらの情報を低次元のembedding空間にエンコードします。マハラノビス距離を利用することで、この低次元空間においてデータ点間の相対的な距離をより適切に計算し、クラスタリングや異常検知、類似度計算など多くのタスクを効果的に行える可能性があります。マハラノビス距離は、特にデータの分布が正規である場合や共分散行列が利用可能な状況で有用です。

ちなみにこのマハラノビス距離は、品質保証の分野でも、田口メソッドと組み合わせたマハラノビス・タグチ法として、機械などの運用中に起こりうる不具合の時期を予測する技術としても使われています。

Amazon Linux 2023でvsftpdで10.5MiB以上のサイズのファイルがアップロード出来ない。

会社でExmentを動かすため、アマゾンのAWSのEC2という仮想サーバーでAmazon Linux 2023のサーバーを構築しました。(構築しました、と言っても、すぐにターミナルソフトでログイン出来る形で提供されます。)
このサーバー上でvsftpdを動かしてFTPサーバーとしたのですが、何故かクライアントからアップロードした場合、サイズが10.5MiBを超えるファイルは転送が止まりエラーになります。ちなみに私の家のサーバー(AlmaLinux 9)につなぐと問題ありませんので、クライアントや会社のファイヤーウォールの問題ではありません。
色々調べてみたのですが、Amazon Linux 2023自体がまだ公開から半年くらいからのせいか、Web上には情報がありませんでした。

取り敢えず以下の代替案は見つけました。
1.クライアントとしてWinSCPを使う。
2.プロトコルをftpではなくscpにする。
3.https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html?fbclid=IwAR0zkJ-x5x3ZS6xntB9q-vppMKDSGEcMJvpMGM8nDptqs1KtMDRNg2D9Rf より、puttygen.exeをダウンロードする。
4.puttygen.exe を使い、pemファイルからppkファイルを作成し、それをWinSCPの認証の所に設定。

3、4、が必要なのは、EC2のサーバーはログインの時にIDとPW以外にPEMファイルを使います。ところがWinSCPはPutty形式しか受け付けないので、3のツールでPEMからPPKファイルを作る必要があります。WinSCPはAmazonのS3もサポートしているので、持っておいて損は無いと思います。

なお、ファイル数が少なければ、TeraTerm(EC2にはベータ版が必要)でサーバーにつないだ後に、その窓上にファイルをドロップすればアップロード出来ます。この場合もプロトコルはSCPです。

ついでに、これまでCentOS他のLinuxを使っていて、Amazon Linux 2023を初めて使った人が最初にとまどうのは、firewalldが入っていないことです。別にdnfで入れればいいのですが、ポートの開け閉めは別にセキュリティーグループというのを設定してそこでやるのがAWSのec2のスタンダードなやり方になっています。

kintoneとExment



6月から勤めている会社で今は取り敢えずITの仕事しています。そこであるデータベースを作ることになりました。データは20数年分あるのですが、その入力がExcelでされていて、入力チェックがほとんど入っていません。そのためデータの揺れが非常に大きいまま、最終的にはkintoneのアプリの中に収録されています。それでまず入力はBPM(Business Process Management)のツールである、Questetra BPM Suiteを使うように変えました。Questetraは入力欄を正規表現で規制出来るので、非常に強力な入力チェックが簡単に実装出来ます。またXML形式のリストデータを参照してそこから選んでデータを入れることも出来ます。そしてQuestetraには、最初からkintone連携というのが用意してあったので、最初はこれを使って自動的にkintoneのアプリにデータを書込めばいいかと思っていました。ところが、kintoneにはコースが2つあり、今の会社で使っているのは安い方で、これには外部連携機能がありません。外部連携機能を使うためには、高い方のコースに全アカウント切り替えないといけません。それでそこまでしてkintoneを使う価値があるかどうか調べました。その結果、「kintoneって一体何の役に立つの?」という疑問が湧いて止みませんでした。

kintoneの問題点はというと、
(1)データベースのツールのように宣伝していますが、リレーショナルデータベースではまったくありません。従ってデータが増えれば増えるほど管理が面倒になり、スピードも低下します。主キーの設定とかリレーションの設定も当然ありません。トランザクション処理(一連の複数のデータベース操作処理のこと)も出来ません。
(2)普通何かのマスターテーブルを参照してデータを入れる、というのはデータベースの基本中の基本ですが、kintoneだとこれが「ルックアップ」ということになっています。しかし、ルックアップは別のアプリのデータを一度コピーしてそれを参照するだけのものであり、元のアプリのデータが変更されても、それはコピーした側のアプリには自動的に反映されません。
(3)データの容量も1アカウント当たり5GBしかありません。
(4)見た目のカスタマイズも機能が限定されていて、データの一覧が見にくいです。今の会社では皆結局CSVをエクスポートして、Excelで見ています。
(5)入力の制限に正規表現がサポートされていません。

kintoneを作っているのはサイボウズですが、ここの開発のトップのH氏は元ジャストシステムの方で、私と同じ頃在籍されています。しかしその方が所属していたのはJOSSというグループウェアのチームです。なのでサイボウズのガルーンというグループウェア(今の会社で使っています)は笑ってしまうくらいJOSSとそっくりです。でもガルーン自体はそんなに悪くありません。しかし、kintoneは「なんちゃってデータベース」ツールであり、私に言わせれば「ゴミデータ作成ツール」です。

それでどうしたかと言うと、結局kintoneを止めて、前の会社で使った経験のあるExmentに変えました。これは前の会社であるデータベースを操作するアプリを開発するのに、ある開発会社から提案されたもので、これを使うことで開発費を半分に抑えることが出来ました。また、ExmentはMySQLを使うWebアプリの開発ツールであり、当然ちゃんとしたリレーショナルデータベースのアプリが簡単に作れます。今実際にExmentでデータベースアプリを作り始めましたが、生産性は非常に良いです。kintoneのコース変更は止めて、そのお金でAWSのEC2サービスでAmazon Linux 2023を動かし、その上でExmentを動かしています。前の会社ではExmentのインストールはその開発会社にやってもらいましたが、今回は自分でやりました。サーバーのその他の設定も含めて3日もかからず構築出来ました。大事なことを言い忘れましたが、Exmentはオープンソースのツールであり、一つの会社で一つのサイトを使い、また開発元にカスタマイズを要求しない限りは無償です。カスタマイズはプラグインを開発することで無償のまま可能です。私としてはkintoneよりもExmentを強くお勧めします。自分で開発するのが敷居が高ければ、NTTデータCCSという会社が構築サービスをやっています

ChatGPTは使う側の無知を暴く

岩波書店の雑誌「世界」のツィートで、「ChatGPTの特集をしたのに、ChatGPTに雑誌『世界』って何ですか」と聞いたら、まさかの回答…というのがありました。

これは聞き方が悪いのであり、ChatGPTは英語に直してから調べますから、雑誌「世界」は”World”として検索されます。言うまでもなく、Worldが付く雑誌は多数あり、また新聞ですがドイツのdie Weltやフランスのル・モンドもすべて「世界」という意味です。この場合、次のように聞けば、どこまで正しい説明かは別としてちゃんと回答します。ChatGPTがダメと言っている人の多くは自分の質問の仕方のまずさを棚に上げています。
=================================================================
User
岩波書店の雑誌「世界」について教えてください。
ChatGPT
岩波書店の雑誌「世界」は、日本の出版社である岩波書店が発行している総合的な国際情報誌です。この雑誌は、世界の政治、経済、文化、社会などの幅広いテーマに関する記事を掲載しています。
「世界」は、日本の読者に対して国際的な視点を提供することを目的としており、世界各地の重要な出来事や動向、国際関係、地域紛争、経済動向、文化・芸術、環境問題などについての情報を取り上げています。また、特集記事や対談、エッセイなどを通じて、専門家や著名人の意見や洞察を紹介しています。
「世界」は月刊誌として発行されており、一般の読者だけでなく、国際関係や国際ビジネスに関わる人々や学術研究者にも利用されています。岩波書店は、学術的な厳密さと広範な情報を提供することに力を入れており、「世界」もその理念に基づいた内容で読者に情報を提供しています。
「世界」は、日本語の記事だけでなく、時折、外国語の記事も掲載されることもあります。また、オンライン版も提供されており、雑誌の内容や関連記事をウェブサイト上で閲覧することも可能です。
岩波書店の雑誌「世界」は、幅広い国際情報を提供することで、読者により深い理解と広い視野をもたらす貴重な情報源となっています。

ChatGPT 3.5が対応しているプログラミング言語

ChatGPTが対応しているプログラミング言語で私が確認できたものです。まずは直接ChatGPTに聞いて出てきた一覧に、それに漏れていたものを個別に聞いています。RustやSwiftといった新しいものにも対応していますが、なぜかAdaとPL/Iだけは不可で、Adaは軍需用だから、PL/IはIBMとの権利関係かなと思います。

Python
JavaScript
Java
C
C++
C#
Ruby
Go
Swift
PHP
PHP/Laravel
Rust
TypeScript
Kotlin
MATLAB
R
Haskell
Perl
Lua
Shellスクリプト(Bash)
PowerShell
HTML/CSS
SGML/xml
awk
sed
Fortran
COBOL
Smalltalk
Scheme
Pascal
BASIC
Lisp
Prolog
× Ada
x PL/I
 
P.S.
PL/IとAdaに対応していない理由は以下の通りだそうです。

User
ChatGPTがプログラミング言語のPL/Iに対応していないのは、IBMの権利物だからですか?
ChatGPT
いいえ、その理由ではありません。ChatGPTはOpenAIが開発した言語モデルであり、IBMのPL/Iに対応していないのは、PL/Iが現在の主流とは言えないプログラミング言語であり、一般的なサポートが限られているためです。
PL/Iは、IBMが1960年代に開発した汎用プログラミング言語です。当時は主要な言語の1つでしたが、現在では他のプログラミング言語(例:C、Java、Pythonなど)が広く使用されており、そのサポートが充実しています。したがって、PL/Iの需要が限定的であるため、多くの一般的な言語モデルや開発環境ではPL/Iに対応していない場合があります。
また、プログラミング言語のサポートは言語モデルの開発者によって決定されます。OpenAIは、開発者が必要とする一般的な言語や技術に対応するために努力していますが、すべてのプログラミング言語に対応することは難しいです。したがって、特定の言語がサポートされていない場合、それはOpenAIがその言語を選択しなかったか、まだサポートしていない可能性があります。
User
それではプログラミング言語のAdaに対応していないのは、Adaが軍需用途のために作られた言語でオープンでない部分が多いためですか?
ChatGPT
Adaがプログラミング言語のAdaに対応していない理由は、Adaの性質や使用頻度、サポートの需要などの要素によるものです。OpenAIは、広範な開発者のニーズに対応するために言語のサポートを決定していますが、すべてのプログラミング言語を網羅することはできません。
Adaは、高信頼性・高度な制御・リアルタイム性が要求されるシステム開発向けに設計されたプログラミング言語です。軍事や航空宇宙などの厳しい要件を持つ分野で広く使用されています。一部の部分がオープンでないという指摘はありますが、Adaは国際標準として定義され、一般に広く利用されています。
Adaの需要は、一般的なソフトウェア開発に比べて限定的であると言えます。したがって、一般的な言語モデルや開発環境ではAdaに対応していないことがあります。ただし、Ada向けの開発環境やツールが存在し、Adaプログラマーのコミュニティも存在しています。
OpenAIは、開発者が必要とする言語や技術に対応するために努力していますが、特定の言語がサポートされていない場合、それはOpenAIがその言語を選択しなかったか、まだサポートしていない可能性があります。
 

ど素人記事その2

ミラーレス一眼カメラ。買ってわかったメリデリとは?」という記事のリンクがFacebookに出てきたので見てみれば、これが小学生レベルのど素人記事。大体タイトル見たら「ミラーレス一眼と一眼レフのメリットとデメリット」についての記事だと普通思いますが、この記事はミラーレス一眼とスマホのカメラの比較で、ミラーレス一眼に書いてあることはそのまま一眼レフにも当てはまり、しかもそこに書いてあるのは「まずメリットですが、
・スマホよりも美しい写真が撮れる
・操作の楽しさがある
・より良い写真を追求して撮影できる」
という、実際にミラーレス一眼を使わなくても書ける低レベルなものです。
また私は「メリデリ」なんておかしな略語を好みません。英語で言うなら”Pros and Cons”でしょう。

ちなみに、以下はChatGPTに回答させたもの。この記事のライターの存在価値が0であることは、これを見れば良く分ると思います。(ChatGPTの回答内容は、一部不正確ですが、あえて訂正せずそのまま引用します。)
================================================================
質問:スマホのカメラとミラーレス一眼それぞれのメリットとデメリットを挙げてください。またミラーレス一眼と一眼レフのメリットとデメリットもお願いします。

ChatGPT
スマートフォンのカメラのメリットとデメリット:

メリット:

携帯性: スマートフォンはコンパクトで軽量なため、持ち運びに便利です。
常時持ち歩ける: スマートフォンは常に身近にあるため、思いがけない瞬間を逃すことがありません。
ソーシャルメディアへの直接共有: 撮影した画像を即座にソーシャルメディアにアップロードできるため、素早くシェアできます。
自動設定と便利な機能: スマートフォンのカメラは、自動設定や様々な便利な機能(フィルター、パノラマ、HDRなど)を備えており、初心者にも使いやすいです。
デメリット:

画質の制限: スマートフォンのカメラは一般的に小型のイメージセンサーを使用しているため、高い画質や低光環境での性能には限界があります。
ズームの制約: スマートフォンのデジタルズームは画像の拡大ではなく、画像のトリミングで実現しているため、画質が劣化します。
操作性の制限: スマートフォンのカメラは物理的なダイヤルやボタンが少ないため、撮影時の操作性が一眼カメラに比べて制約されます。
ミラーレス一眼カメラのメリットとデメリット:

メリット:

画質と性能: ミラーレス一眼カメラは大型のイメージセンサーや交換レンズを使用しているため、高画質な写真や優れた低光環境での性能が期待できます。
操作性とカスタマイズ性: ミラーレス一眼カメラは物理的なダイヤルやボタンが充実しており、撮影時の操作性が高く、カメラの設定を自由にカスタマイズできます。
高度な機能とオプション: ミラーレス一眼カメラは多くの場合、プロ向けの機能やオプション(高速連写、4Kビデオ、外部マイクジャックなど)を備えています。
デメリット:

価格とサイズ: ミラーレス一眼カメラは一般的に高価で、一眼レフカメラに比べてもやや高めです。また、一眼レフカメラに比べて軽量・コンパクトではありますが、スマートフォンに比べると大きく重いです。
学習の必要性: ミラーレス一眼カメラは多くの機能や設定を持っているため、初心者にとっては学習の必要性があります。操作に慣れるまで時間がかかることもあります。
一眼レフカメラのメリットとデメリット:

メリット:

高い画質とパフォーマンス: 一眼レフカメラは大型のイメージセンサーと光学ビューファインダーを使用しているため、非常に高い画質と迅速なパフォーマンスが期待できます。
操作性と耐久性: 一眼レフカメラは多くの物理的なダイヤルやボタンを備えており、撮影時の操作性が高く、頑丈なボディが特徴です。
レンズの選択肢: 一眼レフカメラは交換レンズシステムを使用しているため、多様なレンズを使用できます。これにより、幅広い撮影スタイルや被写体に対応できます。
デメリット:

重量とサイズ: 一眼レフカメラは大型で重たいため、持ち運びには不便です。
光学ファインダーの制約: 一眼レフカメラの光学ファインダーは鏡を使用しているため、実際の撮影時のイメージとは異なるプレビューが表示されることがあります。
騒音と振動: 一眼レフカメラのシャッターメカニズムは騒音を発生させ、振動も伴うため、静かな環境やマクロ撮影などに制約があります。

信州割

先週4泊した立派な温泉付きの諏訪湖岸のホテル、一泊6,600円(4人の平均)で朝食付き。何かの旅行支援が出ているようです。更にそれに加えて信州割というクーポン券が、1枚2,000円のを一人4枚、合計8,000円分ももらいました。この手のクーポン券って一人が1回に1枚しか使えないのが普通ですが、この信州割は何枚でも何人でもOK。先週のある晩は4人で飲み屋に行って、全部で24,000円も飲み食いしましたが、全部このクーポン券で払って一銭も現金で払いませんでした。もうこんなに支援しなくても観光客は来ると思いますが。ただ欠点は使い方が面倒で、スマホでQRコードを読み取ってあるページにアクセスし、そこに券上にある銀を剥がして書いてあるコードを入力しないといけません。また3枚のクーポンを合わせるのも、前のクーポン券が登録された時のURLを入れなければならないなど、高齢者でITが苦手な人にはまず無理です。