世の中はゴールデンウィーク。 このような心に余裕があるときにしかなかなか Haskell に取り組めない。 今日は、以前から使ってみたかった Parsec に入門した。 そのメモです。
» Read More今回は、 前回の Embeddings の計算を OpenAIのそれではなく、Multilingual-E5-base に代えて RetrievalQA してみます。 なお、RetrievalQA の処理自体は引き続き OpenAI の LLM を使用します。
対象とするコンテンツ( 現代語訳 徒然草 (吉田兼好著・吾妻利秋訳) )の準備やコードは (Embeddings 計算を除いて) 前回を踏襲します。
» Read More現代語訳 徒然草 (吉田兼好著・吾妻利秋訳)と LangChainをつかって 吉田兼好に人生の悩みを質問してみる。
現代語訳 徒然草 をデータとして RetrievalQA を使うことで、 最終的に次のような質問から回答を得ることができました。
(質問) その道のプロとしてふさわしい立ち振舞について教えてください。
(質問) 専門家が陥りがちな間違いや見苦しい行為にはどんなことがありますか?
・・・なかなか興味深い。
» Read Moreネット上のドキュメントで一覧表をHTMLのテーブルデータとして 掲載されているが、表計算(エクセル)用のデータまたはCSVデータは 提供されていない、という場合の対処方法です。(覚え書き)
GPT-4 Vision API など使えば、そのHTMLまたはそれをPDFにしたデータを アップロードした上で「CSVデータに変換して」といえば済むのかと思ったのですが、 どうやらまだ(今のところは)そこまで簡単にはいかない模様。
ChatGPT Plus であればすでにその手のことができるようになっているかもしれません。試していません。
数年もたてば ブラウザに搭載された AI に「今見ているページをエクセルに変換して」といえば済む世界が来そう。
ただ・・・この手の処理で GPT のような LLM を使う場合の不安は、 一部が間違って変換されても気づかない、という問題です。 人間が手作業でやった場合、間違いが混入することはある(ヒューマンエラー)ので、 その作業を GPT 的なもので代用した場合には、 人間とGPT(的なもの)とどっちが間違い多いか?みたいな問いになるとは思う。
たとえば、データ内に価格情報があった場合に間違った値として変換されると場合によっては悲惨なことになる。
しかし、HTMLのテーブルデータがあるのであれば、 Python + BeautifulSoup を使うことで、CSVへの変換が可能。 この古典的なやり方ならば、 変換用のコードに書いたルール通りにHTMLデータができている限りは 変換後のデータに間違いないと確信できる、 という点において GPT的方式より優れている。
» Read MoreJavaVM で XML を扱う場合に XmlPullParser を使う例を このエントリーXmlPullParser を使ってXMLをパースする で書きました。 今度はこれと同じような処理を Kotlin Native でやってみたので備忘録としてそれを書き残します。 XmlPullParser の代りに XmlUtilを使います。
そういえば、XmlUtil を使った例は以前のエントリー Kotlin Native (linuxX64) で XML を扱うで書きました。ここではシリアライゼーションしないで、 直接 XML をパースします。
» Read MoreAndroid の場合、標準で XmlPullParser が使えるようになっている。 これを Kotlin Script で使用したい。
XmlPullParser の実装があったので、とりあえずこれを使ってみる。 https://mvnrepository.com/artifact/net.sf.kxml/kxml2/2.3.0
» Read MoreKotlin の Serialization の JSON を Kotlin Script で使う方法を調べた。
注意点としては、 スクリプト実行時に -Xplugin オプションを追加する必要がある。
» Read Moresee also: https://stackoverflow.com/questions/68202117/how-do-i-apply-a-plugin-in-a-kts-kotlin-script-file
Kotlin Native (Kotlin Multiplatform) で XMLを扱うにはどうすればよいか調べた。 XmlUtilを使えばよいらしい。 Gradle を使って、XmlUtil でXMLをシリアライズ&デシリアライズするところまでできた。 その備忘録です。
» Read MoreGroovy の場合は new File("foo.txt").text のようなお作法で気軽にテキストファイルを読み書きできる。 Kotlin Script でもこのように手軽にテキストファイルの読み書きができないか調べた。 拡張プロパティ Extension Properties という機能を使えば普通にできた。
» Read More以前のエントリー 改善版) kotlin でパーサーコンビネータを実装する の続きです。
そもそもの動機としては、 マークアップがネストしていたときにパーサーコンビネータを使ってパースするにはどうすればいいのだろうか? とか考えはじめた結果の覚え書きです。
パーサーコンビネータ部分の説明は省きます。(以前のエントリーを必要なら参照のこと)
» Read MoreEPUB の toc.ncx ファイルで naviPoint の playOrder 属性を指定する必要がある。 プログラム的にこれを設定する方法を実装したので、覚え書きとして書き残します。
» Read More