Ubuntu Server 22.04 + GPU 12GB で Rinna 3.6B を動かしたので、その備忘録です。
モチベーションとしては、LlamaIndex で実現しているのと同じようなことをこのモデルなどを活用しながらつくることができないかと思っています。
» Read MoreSentenceTransformers を使うことで、文章やテキストの分散表現を計算できる。
You can use this framework to compute sentence / text embeddings...
今回はこれをやってみたので、その備忘録です。 とりあえず、なんとなくできたというレベルなので、その点ご了承ください。 使用したのは 東北大学の乾研究室の日本語BERTモデル bert-large-japanese-v2 です。
» Read More以前にGolang で JSON を Marshal, Unmarshal する というエントリーを書きましたが、その続きです。 ファイルとして用意してある json データを読み込んで使う方法。
» Read Moreたとえば、次のようなマークアップされたセカンドレベルまで階層のあるリストを表現したテキストがあったとして、 それを kotlin の fold を使ってパースして構造化する例を考える。
» Read Morekotlin でステートマシンを使って行ごとの状態を把握したい。
というか、そんな大げさな話ではない。 ^#\s を見出し行として、それより上がヘッダ、それより下がボディとしているテキストファイルがあったときに、 ヘッダとボディを別々に分けたい、そのときどうしたらいいかという話。
» Read Morehttps://github.com/lllyasviel/ControlNet を使ってみました。 ControlNet はいくつかの機能があるのですが、その中の手描き画像+プロンプトから画像を生成するものを試しました。
ChatGPTのAPIを試そうと思って OpenAI アカウント作成したのですが、画像生成がおもしろそうと思ってそちらを試しました。 これが「A sheltie is running around the field」というテキスト(プロンプト)から生成した画像です。(OpenAI の Create Image APIを使用)
「 テキストをパーサーコンビネータを使ってパースすることを考えてみる 」 というのを先日考えたのですが、今回はその改善版です。
many パーサーコンビネータ の再帰部分がどうにも気に入らないので見直しました。
» Read More改善版) kotlin でパーサーコンビネータを実装する もあわせてご覧ください。
テキストをパーサーコンビネータを使ってパースすることを考えてみる。 ここで考えるパーサーコンビネータは、 パース対象となるテキストに出現するいろいろなパターンをパースできる小さなパーサを複数用意し、 それらを組み合わせて対象となるテキストをパースするコンビネータ。 パーサーを自在に組み合わせてパースできるから、パーサーコンビネータ。
このエントリーの最後では、簡単なマークアップをしたテキストをHTMLに変換するパーサーをつくります。
» Read MoreDeno を使えば TypeScript を使って UXP InDesign スクリプトをバンドルできることがわかった。 というのが前回のエントリー。 しかし、 require("uxp").storage.localFileSystem を使う場合なども機能するのだろうか? と思い立ち調査しました。 結論としては問題ありません。
結論だけ知りたい場合はこちらのレポジトリの read-text-ts をご覧ください。
» Read MoreDeno を使えば TypeScript を使って UXP InDesign スクリプトをバンドルできることがわかった。
以前軽く試したときは、deno bundle した段階で型関連のエラーが出てしまいバンドルできなかった。 でも考えてみたら(考えるほどでもないが)自分で型定義を用意して bundle 時とかコンパイル時に渡せば無問題なのでは? と思い立ち試したところ問題なくバンドルできた。
結論だけ知りたい場合はこちらのレポジトリの hello-world-ts を見てください。
このエントリーではごく簡単な UXP InDesign Scripting の例で説明します。
サラサナノにのりかえた 的な話から1年が経過しました。 相変わらずサラサナノを使っています。 ただし、前回のエントリーで書いたように 中身はエナージェルインフリーの替芯が継続中です。
» Read Moreエクセルデータ起点のなになに・・・というケースに備えて、UXP InDesign Scripting の読み込みサンプルを書きました。
前回のエントリーで、Deno の bundle コマンドを使うことで(とりあえずは)いい感じに、 依存するモジュールを含めて一つのファイルにまとめることができることがわかりました。
» Read MoreUXP InDesign, SheetJS を利用して MSエクセルデータを扱う(rollup.js編)では、rollup.js を使ってスクリプトをひとつのファイルにまとめていました(バンドル)が、Deno を使ってバンドルできることがわかりました。
もっとも、あくまでここで検証した簡単なスクリプトについてうまくバンドルできたという話です。 いろいろなケース、とかすべてのケースで、Deno によるバンドル(rollup.js によるバンドルもそうですが)がうまくいくかはわかりません。
簡単に手順を書き残します。
» Read More随分前にGroovy で SVG を出力して、六角形のフラクタル図形を書いたというエントリーを書いたのですが、 それを Kotlin に移植しました。 あとで Haskell にも移植するつもりなので、そのとき移植しやすいように Haskell に寄せて記述したつもりです。
Groovyのコードでは、描画色をカラフルにしていましたが、これは白黒です。
前回のエントリー「kotlinx datetime と Spring Boot , 2つの期間の重なりを判定」の追伸で、 Spring Boot ではなく、kotlinc で実行できないか試した。 結果、 import kotlinx.datetime.* は kotlinc で実行できなくて、 import java.time.* は kotlinc で実行できた。
でも、今頃気づいたのだが、kotlinc コマンドが JavaVM 用のものだったから、当然そのようになっただけで、 kotlin native 用の kotlinc-native コマンドを使えば、実行できるのではないのか?
そこで、 https://github.com/JetBrains/kotlin/releases/tag/v1.8.10 から kotlin-compiler-1.8.10.zip ではなく、kotlin-native-linux-x86_64-1.8.10.tar.gz を ダウンロードして使ってみた。 でも、 結局 kotlinc-native コマンドを使っても動かなかった。 バージョンが上がればそのうち動くようになるのかも知れない。
それで思い出したのだが、以前のエントリーで kotlin native は既に試していた。 それに沿って Gradle プロジェクトとしてこのコードをビルドしたところ、 そちらは難なく実行できたので、それを備忘録として書き残します。
» Read MoreUXP Script ではモダンなJavaScript(ES6) に対応したので、既存のJavaScriptライブラリを利用できるようになりました。
今回は SheetJS を使って MSエクセルデータを扱う方法を試しました。
完成したスクリプトの配布時にそれを一つにまとめたいので rollup.js を使います。 この手のバンドルツールといえば webpack が定番ですが、 今回試した範囲では webpack と UXP InDesign Script の組み合わせはうまくいかなったので webpack の代わりに rollup.js を使います。
2023-02-11 更新
rollup.js の代わりに deno を使って bundle できることがわかりました。詳しくはこちらのエントリーをご覧ください。
完成したスクリプトの作動デモはこちらを https://youtu.be/SnpH6Ui7nOs ご覧ください。
» Read More「Node.js による InDesign ExtendScript モダン開発入門」というキンドル書籍を一年前くらいに書いたのですが、 とうとう、InDesign が最新バージョン(18.0)から UXP に対応しました。 つまり、小細工しなくても普通にいわゆるモダンなJavaScript (ES6) で InDesign 用の Script を書くことができるようになった。
なお、InDesign の UXP は Plugin にはまだ対応していないそうです。 UXP Scripting と呼ばれるスクリプト実行だけ対応した段階。 そのうち Plugin に対応するようです。 https://developer.adobe.com/indesign/uxp/plugins/ に Comming Soon って書いてあります。
ExtendScript で面倒だったことの一つに https の外部リソースを取得できなかったことがあります。 UXP ではこの問題が解決されているのか関心があったので調べました。 fetch が使える、と書いてあったので、いけるか!と思って調べたところ問題なく使えたので、UXPのスクリプトとともに得たことを簡単にシェアします。
なお、このエントリーでは InDesign 2023 (version 18.1)と UDT version 1.7.0.13 を使用しています。
» Read MoreKotlin/JS 経由で JavaScript から DateTime を扱う場合 java.time.* を使うことができない。 その代わり kotlinx-datetime を使えばよいとのことでこれを試す。
例として、2つの期間 a, b を比較して、その状況を返すライブラリを考えることにする。 たとえば...
本当は、2つの期間のとりうる関係の全てのケースを考慮した判定器を考えたいのだが、 話が込み入りすぎるので、ここでは2つの期間に重なりが あるか or ないか の 2つのケースだけを判定する isOverlapped 関数を実装することにする。
» Read More前回は、ごく簡単な json データを扱っただけなので、 今回は、もう少し複雑かつ実践的な json データを kotlinx serialization を使ってパースしてみます。
» Read MoreKotlinでJSONに対する処理する場合 JavaVM上で実行するコード用であれば、たとえば org.json とか Gson などいろいろなライブラリがありますが、 Kotlin/JS を使って JavaScript に変換して作動させたい場合は、それらのライブラリは(たぶん)使えません。 でも、Kotlin Serialization を使えば、Kotlin で書いたコードもJavaScriptに変換できるので、それを試します。
Kotlin Serialization についてはこの辺からたどっていくと情報が得られます。
» Read MoreHaskellでポケモン組み合わせ問題を解く というエントリーを書いたのですが、 よく見てみると結果のポケモンペアのリストに (Pikachu(electric),Squirtle(water)) と (Squirtle(water),Pikachu(electric)) が両方含まれていました。 これは、ポケモンの前後が入れ替わっただけでペアとして実質同じ内容なので同じペアとして扱いたい。 つまり、これらの一方のペアは結果のリストから除外したい。
» Read Moreポケモンリストから二匹のポケモンを一組とした組み合わせをつくりたい。 ただし、同じポケモン同士やタイプが同じポケモン同士は除外する(つまり、ペアとするポケモン同士は別のタイプを持つようにする)、という問題を考える。
» Read Moredanfo.js 空のセルが存在するエクセルファイルを読み込み失敗するなど で SheetJSからセルの値を読み取るときに、セルアドレスを生成するためのコードで、行列を二重にループしていた。 これをもっと簡単に書きたい。
» Read Moredanfo.js でエクセルデータを扱う場合に、空欄のセルがあるとうまくいかない場合があるようです。単純に読み込みに失敗してくれれば、ある意味問題ないのですが、 読み込み失敗はしないが データが意図通り読み込めていない という場合、 特にエクセルファイルが巨大だったりして、そのまま気付かず進行して後行程で事故るという恐怖。 本当に意図通り読み込みできているか、注意しましょう。
そこで、読み込みには SheetJS を使用し、データ処理自体は danfo.js を使うという方法を使います。 danfo.js のモジュールの中身を見てみると、内部では SheetJS(xlsx) を使用しているみたいなのですが...
» Read Moreこのように、タイプとポケモン名が列挙されているデータがあるとする。 これをA列をキーにして同じタイプを持つポケモンをまとめたい(グループにしたい)という場合。 エクセルで対処するには、どうすればいいか。 および、Kotlin での計算方法。
複数のアイテムがあり、それぞれのアイテムは非選択/選択状態を持つことができる、そういうUIを HTMLとReactを使ってつくります。
Node.js は使わないで、index.html に直接 JavaScript を書いていく方法でつくります。
昨日、Kotlin/JS Hello, World! Kotlin のコードを Node.js で使う を書いたのですが、 もっと簡単に扱う方法がわかったので再挑戦します。
なお、ここでは Kotlin で書いたコードを HTMLに埋め込んだJavaScriptで使いたい、というライトユースを想定しています。 たとえば、Node.js + React で使いたいなどというヘビーな使い方は想定していません。
» Read More型を明示的に指定してコードがかけるので、最近は Kotlin を使うことが多い。 JSでも TypeScript で書けばよいのかもしれないが、もう一旦書いたコードを TypeScript で書き直すとか面倒すぎる。 そこで、Kotlin には Kotlin/JS があるので、これを使ってみた。
» Read Morepandas の代わりに使える danfo.js というツールがあることを知る。 pandas は Pythonのツールなので、JavaScript の方が慣れている人にとって danfo.js はありがたい。
こんなエクセルデータがあったとして、これを danfo.js で操作していく覚え書き。
» Read More最終的には クライアント側は React で実装、サーバ側は Spring Boot で実装して JSON データをやり取りしようという算段です。 まずは、Spring Boot で JSON を返すエンドポイントをつくるところまでの覚え書き。
» Read More支給されたデータのうち特定の列だけを抜き出して使いたい、という場合に pandas を使ったのでその備忘録です。
こんなエクセルデータがあったとして、これを pandas で処理する。
» Read MoreReact でサーバとデータ連携する方法を調査中。 取り急ぎ、前回はサーバから json を取得したので、今度はPOSTで送信してみます。 送信する内容はフォームに入れた文字列とします。 React でフォーム処理する部分はこのドキュメントを参照のこと。
» Read MoreReact でサーバとデータ連携する方法を調査中。 取り急ぎ、サーバから json を取得してそれを React でレンダリングするところまでのメモ。 ポイントは、React のFAQ に書いてあります。
» Read Moreサラサナノにのりかえた 的な話から9ヶ月経過、 相変わらずサラサナノを使っています。 ただし、中身はエナージェルインフリーの替芯です。
一方で、実は一ヶ月ほど前に uni-ball ONE(ユニボール ワン)F を入手してテスト的に使いはじめたのです。 中身は 無印の「替芯 ゲルインキボールペン」 です。
そもそもの動機はエナージェルインフリーの書き味が良き!となって、しかし、あの純正軸はほんとに嫌(個人の感想です)なので、 それ用の気に入った軸を購入しようと文具店を散策していたところ、uni-ball ONE F を見つけた次第。
» Read More「初めての TensorFlow.js」の8章にニューロン一個を使って一次関数を導く例が出ていた。
任意の一次関数の x,y のセットを機械学習させることで、 y = a*x +b の a(傾き)と b(切片)を機械的に見つけることができる、という話。 そこで、これ相当の機能を自前のコードで実装することを試みた。
» Read Moreテンソルの操作になれるために、TensorFlow.js を使って画像を操作する練習。
» Read Moreポケモン名のリストから最も出現頻度の高いポケモンをみつける というエントリーを書きましたが、その内容を Haskell へ移植しました。
あとで、備忘録として移植手順を書き残すつもりですが、今はまずは結果だけメモします。
» Read More決定木のプログラミングをしているときに必要になった関数。 これを備忘録としてメモしておきます。
» Read MoreXMLデータをいい感じに javascript のオブジェクトに変換してくれる・・・という fast-xml-parser。
実際に使ってみた結果躓いた点を書き留めます。
» Read More以前にも同じようなことしていた。 Node.js で XML文書をパース
このときは XMLのパースに xmldom を使っていた。 完全に覚えていない。
HashMapを生成して、その中のエントリーの種類に応じて別々の HashMap を生成するためのコード(備忘録)。
» Read MoreAndroid Studio を使わない ライブラリプロジェクトで Robolectric テストをする一番簡単なプロジェクト例 というエントリーを2年ほど前に書いたのですが、いろいろバージョンアップされて古くなってしまった。このテストプロジェクトをそこそこ最近のAndroid開発環境で動くようにしたので、その備忘録です。 作動確認はしていますが、Robolectric よくわかっていないのでその点はご了承ください。
» Read Moreたとえば、0,1,2 という index を生み出す場合、いくつかの書き方がある。
» Read More先日、Windows11 22H2 のアップデートがきた。待っていた systemd 対応がきたので、早速更新。 せっかくなので、Windows の回復を利用して、フルリセットに近い形で Windows11 22H2 を入れた。 始める前は Windowsの再インストールは気が重かったのだが、やってみたら簡単だった。以前はもっと大変だったという印象がある。まだまだ ChromeOS ほどではないにしても。 Windows11 22H2 をセットアップしたあと、通常手順で wsl --install してインストールしたところ、インストールされた Ubuntu は systemd に対応していなかった。 ちなみにインストールされたのは Ubuntu 20.04.4 LTS。 上記 microsoft devblogs を読み直してみると、Windows Insiders Build でないと systemd 対応版の WSL はインストールされないらしい。 でもさらによく読んでみたら、github のWSL リリースページから 0.67.6 を入手して手動でインストールすればよいらしい。 果たしてやってみると、systemd対応になった。 Wnn8 をインストールしたらすんなり自動起動できるようになった。 Windowsを再起動して WSL を起動したら、自動で Wnn8 が起動している。 とりあえずは、systemd 対応でうれしいのは(自分にとっては)これだけだけど。 以前に書いたこの Wnn8インストールのエントリーの後半で、 なんやかんや Wnn8 の起動設定をしている部分がいっさい不要になった。
» Read More以前にGroovy / Golang / Node.js, リストを n 個ごとに分割したリストのリスト(サブリスト)をつくりたい というエントリーを書いたのだが、kotlin でそれをつくり出す必要が生じたので備忘録として書き残します。
ここで言うサブリストとは、リストを n 個ごとに分けたい、という場合につくるリストのリストのことです。
» Read Moreまずそもそもの話、 Excel のチェックボックスのチェック状況を特定のセルにリンクして記録する機能(Cell link)があらかじめ備わっているので、それを使うべき。 そうすれば、このエントリーで書いているようなことを行なわなくても普通にPOIとか node.js の xlsx 系ライブラリで難なくその値を読むことができます。
英語レイアウト版 MX Keys Mini がついにリリースされたので入手しました。 7月末、ちょうど amazon.com でUS版を購入しようとしていたそのときに、 日本での発売がアナウンスされてこちらを予約しました。 もう少しで amazon.com で買うところでした。 日本のLogicool版の英語レイアウトキーボードを買っておけば、 今度は、メカニカルキーボードの方も英語レイアウト版も発売してくれるに違いない。
EPS は、 https://xmlgraphics.apache.org/commons/ を使って、 PDF は、 https://pdfbox.apache.org を使って、 それぞれ 画像のタテヨコの大きさを取得します。 使用する言語は kotlin script です。
» Read MoreKotlin の Sealed クラスを使えば、 代数データ型の直和型を表現できる、という情報を得たので、MaybePokemon クラスをつかって試してみた。
» Read Moreしばらく諸事情により遠ざかっていた Android アプリ開発を再開しようと思っている。 そのウォーミングアップとして Kotlin でスクリプトを書いたりしているのだが、 結構いい感じ。 もちろん普通に JavaVM 上で動く Kotlin で開発しているのだが、 それとは別に Kotlin Native というものがあり たとえば Linux X64 ネイティブ実行できる実行ファイルを生成できるらしい。 かっこいい!と思って調べはじめたのだが、思いのほか難しかった。 とりあえず、テキストファイルを読みとって標準出力するところまでたどり着いたので、 その記録を残す。
» Read More前のエントリー MacBook Air M1 に bash と emacs のセットアップ備忘録の補足です。
» Read MoreKotlin をコマンドラインで使う方法は、 以前のエントリー Kotlin Script が便利 Javaのライブラリも使える でも書いたのですが、 何通りかの方法があるので、整理しました。 Kotlin でライブラリ(jar)をつくり、それを Groovy スクリプトから使うこともできます。
» Read Morejq をソースからインストールしたので備忘録を残す。
いつまで耐えられるかわからないが、 とりあえずこの MacBook Air M1 には home brew を入れないと決めている。 そして、 jq を使おうとしたら当然コマンドが存在しない。
jq も簡単にソースからビルドできると思ったがそうはいかなかった。
最初に jq 1.6 を試したが、 oniguruma の部分が解決できなかった。 jq 1.5 はビルドできた。
» Read More先日の Cloud Vision API を使う Python3 編 に続いて Spring Boot Kotlin での Cloud Vision API の OCR のコード覚え書きです。
Python で既に書いたコードを Kotlin に移植しました。 Spring Boot は今まで使う機会がなかったのですが、 今回使って良いと思ったのは gradlew bootJar するだけで executable な単一の jar ファイルを生成してくれることです。
ただ Python のようにスクリプトファイルひとつで処理できるような小さな処理に Spring Boot を使うのは気が重いですね。
» Read MoreGoogle の Cloud Vision APIの機能のひとつにOCRがあり これを業務で使う機会がありました。 実際に使ってみると、対象が印刷物をスキャンした画像データだったなど条件がよかったのだとは思いますが ほぼOCR処理として100%に近い形でテキストに変換されました。 とはいえ、100%ではないので、そこは人間が一度はすべて確認する必要がありますし、 そもそもOCRで読みとったテキストをこちらが使用したい単位に整理する処理については 当然OCRの守備範囲外になります。 そのため、その部分のコードを書くのが相当に大変でした。
もし人間が目視&手作業としてテキスト入力すれば、その整理部分も含めて人間が処理することになる。 それがアウトソーシングとしてページ単価いくらで予算の範囲で収まるのであれば、 どうなんだろう。 自分ががんばって書いたコード部分は結局たいした価値があるのだろうか……という微妙な仕事になってしまった。
» Read More