Azure OpenAIとLlamaIndexとGradioを用いたRAG型チャットの作成

概要 Azure OpenAIとLlamaIndexとGradioを用いたRAG型チャットの作成を試みたので、備忘録です。 Azure OpenAI Azure OpenAIを作成します。 その後、「エンドポイント:エンドポイントを表示するには、ここをクリックします」をクリックして、エンドポイントとキーを控えておきます。 その後、Azure OpenAI Serviceに移動します。 「モデルカタログ」に移動して、「gpt-4o」と「text-embedding-3-small」をデプロイします。 結果、以下のように表示されます。 テキストのダウンロード 今回は、青空文庫で公開されている源氏物語を対象とします。 https://www.aozora.gr.jp/index_pages/person52.html 以下により、一括ダウンロードします。 i f i u r s f m r m r e e o p o p l s l r o m o p e r r = o c s m f t b t n t e e o s " s i l m r r 4 o h e o e b e s t n c e m a f f q i t = s t r e o o o u m p i s m z r r e p s r = o b o s o : e n = e r m i a f o i r r s d t o w t r / q r r a e f o i p f e e o i x s i s t / u e i s _ t z l a s s u v t . t g e s n e i u a m o e t o p p p m h B e s p l n r d e a r n h s c # o o = = a f e n t o s e l a t o a a . o n n = k o . a j s n e c m s t a z _ m = p n p s s s d e p w u i . s l t e a d o u e a t a e e B o i d e r t . g e e i m = a r r f t i s . e u v i n i i d e [ c o b i t a l = " h n s = e a p . r ( t f l t " t n e [ n a _ d . u n u . g s o e u . ( s i [ r ] [ u i a a e e r c t f e ( p ( l i u e o " s m " r n o t x e o i i t o a t S t r l n m : e l l z a i q d f n _ s t x o c l e s e m a s a o / s u i u d t . h t u . ) c : m b b o r t t e n l ( e p , ) p u . t b e e = z a e s s g S " x a - j i e r l o _ x ( t o d t t " t s o r [ " m r u t o s = u i ( h w o o n s " ] e a r / p . p v ) . " k n s " m t _ l { a g r ( " . d ) y ( " ] e = a u . f t e e r , s i o ) ] t = d r s i h t s e t r a . a a l p l ) ( p s c r n s a d " t s l e : a o p l i a c a a a : i n o n o a p m f . t o [ t a z s n s ( e : j a z " ( m o e s s ) ( p " o v " e r . e _ o / ] r a / } a a . = p d : a l " . _ p t " a a " u ) t u p e m t t : e [ x r a x a h a " - t l r t i ) / ] 1 " ) e , n , i . ] n _ n s . t " t e f p s _ h e x o l p e t x i . i l n m t s j t i c l " t s ( t o . ) _ o " ( d p o n , " i a k " . n r = " " g s T ) ) e r [ r u 0 " e ] ) ) Indexの作成 環境変数を用意します。 ...

2024年12月16日 · 15 分 · Nakamura

「教科書の中の源氏物語LOD」を使ってみる

概要 「教科書の中の源氏物語LOD」を使ってみましたので、備忘録です。 https://linkdata.org/work/rdf1s10294i 以下のように説明されています。 教科書の中の源氏物語LODは、高等学校古典分野の戦後検定教科書における『源氏物語』掲載データをLOD化したものである。 「教科書の中の源氏物語LOD」を作成および公開してくださった関係者の皆様に感謝いたします。 SPARQLエンドポイントの作成 今回はDyDraを使用します。また、以下の記事を参考に、Pythonで登録しました。 D D Y Y D D R R A A _ _ E A N P D I P _ O K I E N Y T = = x h x t x t x p x s : / / d y d r a . c o m / u t - d i g i t a l - a r c h i v e s / g e n j i _ u / s p a r q l f e c # c # c r n l l l o d i g i g i m p e e e e e o n n n n n d i t j t j t y n i . i . d t = m i t i r , a m e m a D k p x p _ a y i o t o p p d _ r _ r y i r l t l t . _ a i _ i _ a k C s b s b p e l t y t y i y i の _ の _ e 登 f 登 f i = n 録 i 録 i m t l l p D ( e e o y e ( ( r d n " " t r d . . a p / / D C o d d y l i a a d i n t t r e t a a a n , / / C t g g l . a e e i l p n n e o i j j n a _ i i t d k m t _ e a e e y k x n ) i t v _ _ ( l l " i i . s s . t t / _ _ . t t e t t n l l v . . " t t ) x x t t " " , , " " t t u u r r t t l l e e " " ) ) 注意点として、RDF内のURIについて、http://linkdata.org/resource/rdf1s10294i#とhttps://linkdata.org/resource/rdf1s10294i#が一部混在しておりました。今回は、http://linkdata.org/resource/rdf1s10294i#に統一する置換処理を施したのち、SPARQLエンドポイントに登録しました。 ...

2024年12月15日 · 7 分 · Nakamura

Peripleoを試す

概要 「Peripleo」を使う方法を調べましたので、備忘録です。「Peripleo」は以下のように説明されています。 Peripleo is a browser-based tool for the mapping of things related to place. https://github.com/britishlibrary/peripleo 今回は以下の記事で紹介した「れきちず」と組み合わせて、使用する方法について紹介します。 成果物 以下のURLでお試しいただけます。 https://nakamura196.github.io/peripleo/ リポジトリは以下です。 https://github.com/nakamura196/peripleo 本ブログでは、以下の『東京帝國大學本部構内及農學部建物鳥瞰圖』(東京大学農学生命科学図書館所蔵)をサンプルデータとして使用します。 https://iiif.dl.itc.u-tokyo.ac.jp/repo/s/agriculture/document/187cc82d-11e6-9912-9dd4-b4cca9b10970 背景 以下の会議に参加し、「Peripleo」について教えていただきました。「Peripleo」を開発してくださっている関係者の皆様、会議を開催してくださった皆様、また使用方法を教えてくださったGethin Rees氏に感謝いたします。 http://codh.rois.ac.jp/conference/linked-pasts-10/ 基本的な使い方 以下に記載があります。 https://github.com/britishlibrary/peripleo?tab=readme-ov-file#installation-guide 今回は、『東京帝國大學本部構内及農學部建物鳥瞰圖』のデータを利用するにあたり、カスタマイズした点について紹介します。 データの準備 以下のようなスプレッドシートを用意します。 https://docs.google.com/spreadsheets/d/1ZZJZL0K4cBOc0EgMHNV9NQ56C_fcZm0eceBg_OPmxe4/edit?usp=sharing 灰色のセルは不要な列です。 データの準備ができたら、CSV形式でダウンロードします。 JSON形式への変換 Locolligoというツールを用いて、CSVのデータをJSON形式のデータに変換します。 https://github.com/docuracy/Locolligo まず、以下にアクセスします。 https://docuracy.github.io/Locolligo/ CSVファイルをアップロード後、「Assign CSV Columns」を押すと、以下が表示されます。 予約語をCSVのヘッダーに使用しておくと、手動でマッピングする必要がないようでした。うまくマッピングされなかった場合には、手動で設定します。 なお、予約語は以下で確認できました。 https://github.com/docuracy/Locolligo/blob/main/js/data-converter.js f u $ v ] n ( a [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ ; c ' r ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' t # ( @ p p g g g n l l d d d d t t { i a a i i r r e e e a i i e e e e y y c o s s g d o o o o o m n n p p s s p p u n s s n ' p p m m m e k k i i c c e e s i i o , e e e e e s s s c c r r s s t a g g r ' r r t t t [ [ [ t t i i [ [ o s n n e i t t r r r 0 0 0 i i p p 0 0 m s ' m ) d i i y y y ] ] ] o o t t ] ] } i ) e ' e e e . . . . . . n n i i . . ' g . n ] n s s c c c t t i s s o o i l ] n r t , t . . o o o o y d [ [ n n d a ( e O i t % o o o p p e 0 0 s s e b ) m p f i % r r r o e n ] ] [ [ n e { o t i t % d d d n ' t . . 0 0 t l v i e l ' i i i y ] i @ t ] ] i ' e o r e ] n n n m , f i i . . f ] C n ' , a a a ' i d t @ v i , l s u , t t t , e ' l i a e a u ' e e e ' r ] e d l r s = i t s s s t ' , ' ' u ' s d i ' [ [ o ] ] ] e ] ( [ | t , 0 1 p , , , ' , ' i l ' ] ] o ] t d e c ' ' n , h o , , y r @ n o ' ' m o i a r l l ' b d m d o a ] ' ' e i n t , ) ] | n g i ; , l a i t a t t u b e u d e s d e l | e | ' c | l ] o l a , o o t r n | d g n s | l r O n t S g h G | i B e n ' a g ] s | , t s i o n u g t | h w i e n s g t | i Y n ' g ] | , X ' ] , 結果をダウンロードすると、featuresに以下のようなアイテムが格納されたデータを取得できます。 ...

2024年12月13日 · 9 分 · Nakamura

インターネット上で公開されているCSVファイルのための簡易ビューアを開発しました

概要 インターネット上で公開されているCSVファイルのための簡易ビューアを開発しました。 以下のURLでお試しいただけます。 https://nakamura196.github.io/csv_viewer/ 実際にCSVファイルをロードした例は以下です。 https://nakamura196.github.io/csv_viewer/?u=https%3A%2F%2Fraw.githubusercontent.com%2Fomeka-j%2FOmeka-S-module-BulkImport-Sample-Data%2Frefs%2Fheads%2Fmain%2Fitem.csv リポジトリ 以下のリポジトリで公開しています。 https://github.com/nakamura196/csv_viewer/ まとめ 同様のサービスが多々あるかと思いますが、インターネット上で公開されているCSVファイルを簡易に確認するにあたり、参考になりましたら幸いです。

2024年12月6日 · 1 分 · Nakamura

NDL古典籍OCR-Liteを用いたGradio Appを作成しました。

概要 NDL古典籍OCR-Liteを用いたGradio Appを作成しました。 以下でお試しいただけます。 https://huggingface.co/spaces/nakamura196/ndlkotenocr-lite 「NDL古典籍OCR-Lite」ではデスクトップアプリケーションが提供されているため、Gradioのようなウェブアプリがなくても簡単に実行可能な環境が用意されています。 そのため、本ウェブアプリの用途としては、スマホやタブレット等からの利用や、ウェブAPIを介して利用などが考えられます。 作成時の工夫や不具合対応 サブモジュールの利用 本家のndlkotenocr-liteをサブモジュールとして導入しました。 [ s p u u a r b t l m h o = d = u h l n t e d t l p " k s n o : d t / l e / k n g o o i t c t e r h n - u o l b c i . r t c - e o l m i / t n e d " l ] - l a b / n d l k o t e n o c r - l i t e . g i t そして、ビルド時に以下を実行します。 ...

2024年12月4日 · 19 分 · Nakamura

ジオコーディングのライブラリを試す

概要 ジオコーディングのライブラリを試す機会がありましたので、備忘録です。 対象 今回は、以下のような文字列を対象にしてみます。 岡山市旧御野郡金山寺村。現在の岡山市金山寺。市の中心部からは直線で北方約一〇キロを隔てた金山の中腹にある。 ツール1: Jageocoder - A Python Japanese geocoder まず以下の「Jageocoder」を試します。 https://t-sagara.github.io/jageocoder/ ソースコードの例は以下です。 i i j r p m m a e r p p g s i o o e u n r r o l t t t c t ( o s j j j d s s a e = o o g r n n e . j . o i a d c n g u o i e m d t o p e ( c s r u o ( r d r l e e = r s ' . u h s l t e t t a s p r , s c : h i / ( n / ' d j 岡 e a 山 n g 市 t e 旧 = o 御 2 c 野 , o 郡 d 金 e e 山 n r 寺 s . 村 u i 。 r n 現 e f 在 _ o の a - 岡 s p 山 c r 市 i o 金 i t 山 = o 寺 F . 。 a c 市 l o の s m 中 e / 心 ) j 部 ) s か o ら n は r 直 p 線 c で ' 北 ) 方 約 一 〇 キ ロ を 隔 て た 金 山 の 中 腹 に あ る 。 ' ) 以下の結果が得られました。 ...

2024年12月3日 · 7 分 · Nakamura

mdx.jpのオブジェクトストレージに保存したIIIFマニフェストファイルをNestJSから利用する

概要 mdx.jpのオブジェクトストレージに保存したIIIFマニフェストファイルをNestJSから利用する機会がありましたので、備忘録です。 背景 mdx.jpのオブジェクトストレージに関して、簡単に確認したところ、corsの設定ができず、mdx.jpのオブジェクトストレージにアップロードしたIIIFマニフェストファイルを他のビューアから利用することは難しいようでした。 https://nakamura196.pages.dev/ja/posts/ad76f58db4e098/#注意(corsの許可) そこで、NestJSからオブジェクトストレージにアップロードしたIIIFマニフェストファイルをロードして返却します。 ソースコード 以下のリポジトリからご確認いただけます。 https://github.com/nakamura196/nestjs-iiif 以下のような環境変数を用意します。mdx.jpのオブジェクトストレージを使用するため、S3_ENDPOINTにhttps://s3ds.mdx.jpを与えます。 S S S S S 3 3 3 3 3 _ _ _ _ _ E R A S B N E C E U D G C C C P I E R K O O S E E I N S T T N = _ _ _ T u K A N = s E C A h - Y C M t e _ E E t a I S = p s D S x s t = _ x : - x K x / 1 x E / x Y s = 3 x d x s x . m d x . j p そして、@aws-sdk/client-s3を利用して、以下のように、オブジェクトストレージ上のIIIFマニフェストファイルをダウンロードして返却します。 ...

2024年12月1日 · 6 分 · Nakamura

LLMに関するメモ

概要 LLMに関するツールについて、備忘録です。 LangChain https://www.langchain.com/ 以下のように説明されていました。 LangChain is a composable framework to build with LLMs. LangGraph is the orchestration framework for controllable agentic workflows. LlamaIndex https://docs.llamaindex.ai/en/stable/ 以下のように説明されていました。 LlamaIndex is a framework for building context-augmented generative AI applications with LLMs including agents and workflows. LangChain と LlamaIndex gpt-4oの回答は以下でした。 LangChainとLlamaIndexはどちらも、LLMs(大規模言語モデル)を利用したアプリケーション開発を支援するフレームワーク 簡単に調べてみたところ、RAG(Retrieval-Augmented Generation)を行う際には、LlamaIndexがより簡単に使用できるようでした。 Ollama https://github.com/ollama/ollama 以下のように説明されていました。 Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models. ...

2024年11月29日 · 6 分 · Nakamura

openai-assistants-quickstartの微修正

概要 OpenAIのAssistants APIを用いたRAG( Retrieval-augmented generation)を用いたチャット画面の構築にあたり、以下のリポジトリを使用しました。 https://github.com/openai/openai-assistants-quickstart この時、citationの扱いについて修正が必要であったため、備忘録としてメモします。 背景 上記のリポジトリを使い、OpenAIのAssistants APIを用いたRAGを試みました。 この時、デフォルトの設定では、以下のように、「4:13†」のように、引用箇所を示す記号がそのまま表示されてしまいました。 対策 annotateLastMessageを以下のように修正しました。file_pathをfile_citationに変更することで、引用箇所を置換することができた。 一例として、以下では、File APIへのリンクに置換しています。 c o n } s ; t s } e ) a t c c } a } r ; n G M o o ; n ) e n e e n n n i } ; t o t s s s o f u t s t t . t u ) r a t a l a ( p ; n t h g l u a t a d a ` e e e a p s i n a n [ [ L s s d t o n t n リ . a c ( t a M n o e o ン . s u ( M t e s t d t ク . t r p e e s . a L a ] p M r r s d s f t a t ( r e e e s L a o i s i e s n v a a g r o t a v s t M g s e E n M n p M a e e t , a . e . i e g m s M c t s t / s e e s = e h y s e f s s a s ( p a x i a = s g p s ( e g t l g a e r a a e , e e ( g s e g n = . s s a e ) v e n = t / . n s M o = e $ s n = e = t x { l o > s a " t a i t s { t f n c a { a i i = n e t g o l o ( i e n e u t 0 o s ) _ p a , n [ c d t s p = i a i - ) r > t t o 1 e a e n ) = v { t d . , > M i L f e o a i u { s n s l p s " t e d a ) M _ a g e c t e { s i e s s t d . a a L l g t a e e i s n . o t g t n M t e . e h x f s t i s - . l a r e g 1 e _ e ] p i ] ; l d ; a } c ) e ` A l l ( 結果、以下のようにリンクが表示されました。 ...

2024年11月28日 · 3 分 · Nakamura

NextAuth.jsを使って、ORCID・The Open Science Framework・ GakuNin RDMの認証を行う

概要 NextAuth.jsを使って、ORCID・OSF(The Open Science Framework)・ GRDM(GakuNin RDM)の認証を行う方法です。 デモアプリ ORCID https://orcid-app.vercel.app/ OSF https://osf-app.vercel.app/ GRDM https://rdm-app.vercel.app/ リポジトリ ORCID https://github.com/nakamura196/orcid_app 以下がオプションの記述例です。 https://github.com/nakamura196/orcid_app/blob/main/src/app/api/auth/[…nextauth]/authOptions.js e } x ; p p ] c } o r , a , r o { } l a } a } t v , l s , s , i i n t c c a } t u } p } b y s s r y i } r c d d a y l l u , o s , r , a n e e e n f e o e : m p i i t u p } k e u a } o r } c c s s t c t t t n r e e e e h r a , e r r s , f e ; k s s u ( o o u s s " : : n n o l r s r r n i l y c } r i t i n e s s i i r j a k k r t : o t t r : a c e e : n : n o ) e l u d a m : e o o n w c e e n r " " I S i m o s d f c n h } ; t e r : m a s n n t c n n a [ c O o d e z " s p p i " o " s e , u ( n e i { s . . s ( o . . t u i R a : c a h : e o r h : h r t a A A r p p : l i a u e { u a o o t d C u r t t : n e t t e d u c n r { r : o c s s n c r k h " I t p e i t { s c t { t q r e t c o o p n c e s t t c c e O , D h r t o p " e t p p u e r h e a f f r p ( e r i o ) e i n p " " o : n s / _ _ s s e s s o p w i i o r { s . o k s d ; t , , c : : a t u : : s : r t a l l f o s i n e { s i e p / u y r / / t = i : i e e i f s T d ; n T = o s r { / t p i / / ( { z t ) [ l i e o , o n s o o h e : o p { a a " " e l s k = k a s . c r e : r u w t a r { o . e s e a e c e e c n p c b t a i p e r p . i n t c n c = n s i t " r i . o i o p s c e p o o c o v s d i c o d o k t n l . i r e n = k o = u { . . . c o c . r e : i j d s r , e u n O e o a d e o c n f c s - o s t n n a t R n r t e s r i s e ` a o i n o t o . t c . C v g e " s g d t B t n d ? n o k o c o I . / " , . / . } c e i ( e . ? k e r } o r D O o , e o o ) h a o ) n n . e n c ) u c _ R a n a r ( r n ; t a e n . i n i C C u v u g { ` e / i m m a d { t d L I t . t / h r j f e a } c ; . ; I D h N h v t s i ? i ) c a E _ / E / 3 t $ o e . l e c N C a X t . p { n r [ s { s c T L u T o 0 s t " " " ? s e _ I t A k / : o , ] g . T O s I E h U e [ / k . i e o R s D N o T n O / e p v m k C _ , T r H " R p n a e a e I t _ i _ , C u s t n i n D o S z U I b . h - l ; k E e R D . a , n ? I e C " L ] o c a . D n R , " r c m [ ; E + , c e e 0 を T i s s ] セ , " d s O " ? ッ / . _ R ] . シ a o t C ? e ョ p r o I . m ン i g k D v a に / / e a i 追 a v n の l l 加 u 3 } u , t . ` I e h 0 , D / / + c $ を a { 取 " l t 得 l o " b k a e + c n k s p / . r o o o r r f c c i i i l d d e " } . , ` p , e r { s o n ? . n a m e ? . [ " f a m i l y - n a m e " ] ? . v a l u e , OSF https://github.com/nakamura196/osf-app ...

2024年11月15日 · 21 分 · Nakamura

YOLOv11xと日本古典籍くずし字データセットを用いた文字の検出モデルの構築

概要 YOLOv11xと日本古典籍くずし字データセットを用いた文字の検出モデルの構築を行う機会がありましたので、備忘録です。 http://codh.rois.ac.jp/char-shape/ 参考 過去に、YOLOv5を用いて同様のことを行いました。以下のspacesで動作デモや学習済みモデルをご確認いただけます。 https://huggingface.co/spaces/nakamura196/yolov5-char 以下は、「国宝 金沢文庫文書データベース」の公開画像に対する適用例です。 YOLOv11を用いることで、文字検出の精度向上を狙うことが目的です。 データセットの作成 「日本古典籍くずし字データセット」をダウンロードし、yoloで求められる形式に整形します。 形式は以下などで確認することができます。 https://github.com/ultralytics/hub/tree/main/example_datasets/coco8 画像のサイズを1280x1280に設定 以下のUltralytics HUBを使用しました。 https://hub.ultralytics.com/ 以下が学習結果です。 テストデータに対して適用したところ、良い精度がでる画像データ(例:「『源氏物語』(東京大学総合図書館所蔵)」)もあれば、 あまり良い精度がでない画像データ(例:「国宝 金沢文庫文書データベース」)もありました。 画像のサイズを640x640に設定 エポック数が10の場合 エポック数が10の場合は、エポック数が10の場合、学習が完全に収束していない可能性がありました。 一方、エポック数が少ないにも関わらず、テストデータに対しては、1280x1280のものより良い結果を示すようでした。 エポック数が100の場合 f # m # m r o o o Y d デ d m O e ー e L l タ l d e # b u O セ . a p a l v = ッ t t o i t t 8 ト r a c m c r の Y と a = h g h a 分 O ト i ' s s = l 類 L レ n / = z 2 y モ O ー ( h 1 = 4 t デ ( ニ o 0 2 i ル ' ン m 0 2 c を y グ e , 4 s ロ o 設 / , ー l 定 m i ド o d m 1 x p 1 u o x s r . e t p r t / Y ' y O ) o L l O o # / c N h a a # n r # o s # バ サ _ エ ッ イ 6 ポ 入 チ ズ 4 ッ 力 サ の 0 ク 画 イ 分 _ 数 像 ズ 類 s サ ( モ p イ オ デ l ズ プ ル i シ t ョ / ン d ) a t a . y a m l ' , # デ ー タ セ ッ ト の パ ス バッチサイズが16(デフォルト)では、GPUメモリの使用率が低く、32に設定すると、OutOfMemoryErrorになってしまいました。 ...

2024年11月6日 · 5 分 · Nakamura

mdx.jpを用いてYOLOv11のクラス分類(くずし字認識)の学習を試す

概要 mdx.jpを用いてYOLOv11のクラス分類(くずし字認識)の学習を行う機会がありましたので、備忘録です。 データセット 以下の「くずし字データセット」を対象にします。 http://codh.rois.ac.jp/char-shape/book/ データセットの作成 yoloの形式に合致するようにデータセットを整形します。まず、書名ごとに分かれているデータをフラットにマージします。 # c | l a e s x s d p e o C f r l t a c # f # f s r i o s e " l o r i a . e u f t . s t f c o i # o s i e / p i l u f s h c _ d = u l s t p . u a d a t e p o r m t t a t g _ = u s c i a i i t a l d i t . o n k l o a / o i n f _ p n t e . n s * b r i f a t ( d c : e / ( t l i t i f i o t c i = q e l h n " r p ( h n d . e . u C s y s a p " m s e e o ( ( e r u . ( p = x p f f l a t . f l i y " i f c _ / i i f s i { l , t f d l t " t n o e e i a e ( { s g u , i r l t s " o ( t n s e a ) / u o { p o p / _ / : " t u f u u u * p d ) p t i t t t / a a [ u p l _ p _ * t t - t u e d u f . h a 2 _ t } i t i j ) s ] d _ r _ l p e i f t } f e g t r i o / i _ " " } l { l p / e { c e a { ) o l ) t c : u s h l t } , s p " } u , o / t u { _ e t f f x p i i i u l l s t e e t _ . } _ d s " o i p ) k r l = ) i T : t r ( u ' e / ) ' ) [ - 1 ] } " 次に、以下のようなスクリプトにより、データセットを分割します。 ...

2024年11月6日 · 28 分 · Nakamura

mdx.jpの1GPUパックとOllamaを使ってローカルLLMを実行する

概要 mdx.jpの1GPUパックとOllamaを使ってローカルLLMを実行する機会がありましたので、備忘録です。 https://mdx.jp/mdx1/p/guide/charge 参考 以下の記事を参考にしました。 https://highreso.jp/edgehub/machinelearning/ollamainference.html モデルのダウンロード ここでは、llama3.1:70bを対象にします。 ダウンロード完了後、以下のように選択可能となります。 使用例 以下の『渋沢栄一伝記資料』を使用します。 https://github.com/shibusawa-dlab/lab1 APIの利用 以下に記載がありました。 https://docs.openwebui.com/api/ 以下でJWTトークンとは別に、APIキーを発行します。 以下が実行例です。 i i t 朝 A u h } t d } r # p p m m e 来 P r e h a e r r p p x 少 I l a r t s レ i i o o t シ K d e a p ス n n r r ク E = e " " s " " ] o ポ t t t t = 風 Y r A C = m m n ン ( ( 邪 " s u o = o e s ス r r r j 気 = h t n { d s e の e e e s ナ t = h t 3 e s { } 表 s s q o ' ル " t o e 0 l a = 示 p p u n 六 ニ s p { r n 0 " g o o e 月 ヨ k : i t : e r n n s 十 リ - / z - s " " e s s t 四 晏 x / a T " " r c q e e s 日 起 x l t y l : o o u . . 、 x o i p l l n e s j 日 x c o e a [ e t s t s 八 " a n " m " e t a o 晴 時 l " : a : n s t n h : 3 t . u ( 風 洗 o " . " " p s ) ナ 面 s f a 1 u : o _ ) ク ヲ t " p : s s c シ ナ : B p 7 e f t o テ ス 8 e l 0 r " ( d 暑 、 0 a i b " 次 u e 気 後 8 r c " , の r ) 昨 、 0 e a , テ l 日 六 / r t キ , ニ 孫 a i ス 比 王 p { o ト h シ 宮 i A n は e テ ノ / P / 渋 a 少 神 c I j 沢 d ク 官 h K s 栄 e 加 又 a E o 一 r フ ハ t Y n の s ル 同 / } " 日 = ヲ 志 c " 記 h 覚 社 o , の e フ 員 m 一 a p 部 d 安 l で e 藤 e す r t 。 s 氏 i テ , 等 o キ 来 n ス d 訪 s ト a ス " を t 、 { a t = 十 h j 時 r s e o 大 s n 阪 } . 支 字 d 店 程 u 長 度 m に p 野 要 s 口 約 ( し d 、 て a く t 神 だ a 戸 さ ) い ) 杉 。 田 要 約 、 文 の 名 み 古 を 屋 改 行 清 せ 水 ず に 及 返 し 西 て 京 く だ 支 さ 店 い 長 。 句 中 読 川 点 を 、 適 其 宜 他 使 用 小 し 林 て く 、 だ さ 片 い 野 。 \ 、 n \ 前 n 原 { t 等 e ノ x 諸 t 氏 } ヲ " 伴 ヒ 嵐 山 ニ 抵 リ 、 三 軒 屋 ニ テ 午 飧 シ 、 船 ヲ 浮 ヘ テ 大 江 川 《 ( 堰 ) 》 ヲ 遡 ル 、 船 中 囲 碁 ノ 興 ア リ 、 嵐 山 ノ 緑 葉 少 シ ク 繁 茂 ニ 過 ル モ 両 岸 ニ ハ 山 花 咲 乱 レ テ 頗 ル 風 致 ア リ 、 午 後 四 時 過 玉 川 楼 ニ 帰 宿 ス 、 今 朝 、 尾 崎 司 法 大 臣 ノ 秘 書 黒 田 氏 来 ル 、 又 、 林 和 太 郎 氏 ( 桂 氏 ノ 父 ) 来 話 ス 、 午 前 十 時 ヨ リ 各 支 店 主 任 ト 共 ニ 嵐 山 ニ 抵 リ 三 軒 屋 ニ テ 午 飧 ス 、 後 、 大 江 川 《 ( 大 堰 川 ) 》 ニ 船 ヲ 浮 ヘ 、 午 後 四 時 帰 宿 ス 、 後 、 玉 川 楼 ニ 於 テ 晩 飧 会 ヲ 開 ク 、 種 々 ノ 余 興 ア リ 、 夜 十 時 散 会 ス 、 中 井 三 郎 兵 衛 氏 モ 来 会 ス ' ' ' 結果、以下が得られました。ただし、結果が返却されるまでに60s弱かかってしまいました。 ...

2024年11月4日 · 7 分 · Nakamura

Google Cloud Vision APIを用いて、単一ページから構成される透明テキスト付きPDFを作成する

概要 PDFを対象に、Google Cloud Vision APIを使って、透明テキスト付きPDFを作成する機会がありましたので、備忘録です。 以下、simpleで検索した例です。 背景 今回は単一ページから構成されるPDFを対象とします。 手順 画像の作成 OCRの対象とする画像を作成します。 デフォルトの設定だとボヤけた画像ができてしまったので、解像度を2倍に設定し、また後述するプロセスで、解像度を考慮した位置合わせを実施しています。 以下をインストールします。 P P y i M l u l P o D w F i f i f i # i o # p p # # z # m p i i m r m r m n u d a o a i m m p o p o p 入 p t 入 f g ペ p o 解 t x g g o m o m o 力 u p 力 _ e ー i m 像 . r r r P t u P d ジ x 度 = = = s t P t t t D _ t D o = を = を a I q F p _ F c 画 = 上 f p I v f L j d i フ d p フ u p 像 2 げ i a m e i s m o ァ f d ァ m d と p . る t g a ( t i o イ _ f イ e f し a 0 た z e g " z m n i ル p _ ル n _ て g め . . e . p m と a p を t d レ e に M g . o p 出 t a 開 o ン . ズ a e i # r o 力 h t き = c ダ g ー t t p m t r P h 、 u リ e ム r _ e a P t D = 単 f m ン t 設 i p n g y I F = 一 i e グ _ 定 x i ( e M m t フ " ペ t n し p ( x i . u a q ァ . " ー z t 、 i z m o p P g d イ / . ジ . [ O x o a . n D e m ル i / を o 0 C m o p B g F n o 読 p ] R a m ( y " p u み e で p , m t ) u t 込 n テ ( a e t p み ( # キ ) z t s . u i ス o r I p t n 最 ト o i O d . p 初 を # m x ( f p u の 抽 ) = p " d t ペ 出 解 m i f _ ー 像 a x " p ジ 度 t . # d を 3 ) t f 選 0 o 単 _ 択 0 b 一 p y ペ a D t ー t P e ジ h I s の ) で ( P レ " D ン p F ダ n フ リ g ァ ン " イ グ ) ル ) ) Google Cloud Vision API 出力された画像を対象に、Google Cloud Vision APIを適用します。 ...

2024年11月2日 · 9 分 · Nakamura

ZoteroのAPIをNext.jsから使う

概要 ZoteroのAPIをNext.jsから使う方法を調べましたので、備忘録です。結果、以下のアプリケーションを作成しました。 https://zotero-rouge.vercel.app/ ライブラリ 以下のライブラリを使用しました。 https://github.com/tnajdek/zotero-api-client API Keyなどの取得 以下の記事を参考にしてください。 使い方 コレクション一覧 i i i i i a ) } m m m m m s p p p p p y z z { c c r a o o o o o n o o o o e p r r r r r c t t n n t p t t t t t e e s s u / f r r t t r a { a { { { u o o n p p n A U m c i N i p d g c p s y o c / e r e e t i e a l o z x f i c t i K r p l l o t r s r S o e I i e l t R o m y e n y d c e e e m a p s : : = t c r s t s f i t o p " } i e s s a o i / o z } o t t t p n o c n o f n c r r i s n o s t r f h i i ( R s l e e o r } Z n n z e R l r m o o g g o s e e } o m f t , t p s c - " r e e o p t f a @ " o r r n o i r p / . m o o s n o o i l . C A e s n m - i / " o p e s c b . @ l i = . / " l . a l K r r n i p / u e e a a o e e r p t c y w w u x n i o h t ) a ; t t t s s 0 i . i e " m t / o l t . s ; a s n n i j e " / e s b m s r ; e x ( r y v n t a a e c j r p r r s y i " y - ( . ; p a " c t u u o i t s l o h e l n 0 r e " " " c ; ; , t i z o o n t s e ( r ) o . U g s e e t r ( I ) d ; ) ; 特定のコレクション i i i i i a ) } m m m m m s p p p p p y z z c { c c r a o o o o o n o o o o o e p r r r r r c t t l n n t p t t t t t e e l s s u / f r r e t t r a { a { { { u o o c n p p n A U t m c i N i p d g c p s i y o c / e r e e t i e o a l o z x f i c t i K r n p l l o t r s r S o e I I i e l t R o m y e n y d d c e e e m a p s : : : = t c r s t s f i t o p " } i e s s s a o i / o z } o t t t t p n o c n o f n c r r r i R n o s t r f h i i i ( e R l e e o r } Z n n n z s e l r m o o g g g o p s e } o m f t , , t o p c - " r e e n o t f a @ " o r r s n i r p / @ m o o e s o o i l / C A e n m - i a " o p = . / c b p @ l i r [ " l / p a l K a a i n i p / u e e w w d e e r a t c y a ; ] x n i p h t ) i / t t s i 0 i . t r " m / / o l s ; a p n n i m u e " o e ( b y t r ; s x r a e v t t a p . e s j r i t r / s y . s " e - ( c ; n a " o c u u l r t s l y h e e p 0 r c t " " t i ; , i o o n z n " o s ; t ( e c r o o l U l s e e c r t I i d o ) n ; I d ) . g e t ( ) ; 特定のコレクション内のアイテム一覧 i i i i i a ) m m m m m s p p p p p y z z c { c c r a o o o o o n o o o o o e p r r r r r c t t l n n . . . t p t t t t t e e l s s c i g u / f r r e t t o t e r a { a { { { u o o c l e t n p p n A U t m c l m ( i N i p d g c p s i y o e s ) c / e r e e t i e o a l c ( ; o z x f i c t i K r n p l t ) l o t r s r S o e I I i e i l t R o m y e n y d d c o e e e m a p s : : : = t n c r s t s f i s t o p " } i e s s s a o ( i / o z } o t t t t p n c o c n o f n c r r r i R o n o s t r f h i i i ( e l R l e e o r } Z n n n z s l e l , r m o o g g g o p e s e o m f t , , t o c p c N - " r e e n t o t e a @ " o r r s i n i x p / @ m o o e o s o t i l / C A n e n R - i a " o p = I . / e c b p @ l i d r [ q l / p a l K a ) a i u i p / u e e w w d e e r a t c y a ; ] s n i p h t ) i / t t s i 0 i . t i " m / / o l t } ; a p n n i m e " o e ( b y m f ; s x r a s r t t a p / o s j r i r m / s y o e - ( u " n a " t n c u u e e r t s . x y h e t t p 0 r s / t " " s i ; , e o r n z v " o e ; t r e " r ; o U s e r I d ) ; 参考 アプリケーションはVercelにホスティングされており、データベースにはVercel Postgres、ORMにはPrismaを使用しました。UIはTailwind CSSで構築され、ChatGPTのデザイン提案を使用しました。また、認証にはAuth0を採用しています。 ...

2024年11月1日 · 7 分 · Nakamura

LEAF WriterのEditor Toolbarをカスタマイズする

概要 LEAF Writerでは、画面上部にタグの挿入をサポートするボタンが提供されています。本記事では、その編集方法について紹介します。 結果、以下のように、<app><lem>あああ</lem><rdg>いいい</rdg></app>を挿入する機能を追加しました。 https://youtu.be/XMnRP7s2atw 編集 以下のファイルを編集します。 packages/cwrc-leafwriter/src/components/editorToolbar/index.tsx 以下のように、人名や地名のタグをサポートする機能が設定されています。例えば、以下では、organizationに関する記述をコメントアウトしています。 c o n { } { { } { } { } s , , , , t g h i o } t t t g c g d h i o t t c g d h i o t t c g d h i o t t r i c n , i o y r o r i i c n i y o r i i c n i y o r i i c n i y i o d o C i c c c s } t o p o l o s d o C t p l o s d o C t p l o s d o C t p t u e n l f o o o h ) l l e u o u a e n l l e o u a e n l l e o u a e n l l e e p : : i n n n o e p u ; e t : p r p b : : i e : r p b : : i e : r p b : : i e : m : c ( s s s w v o s : i : : : l c : : : l c : : : l c : s i ' k ! t t t C e s e p ' e i e k ' e i e k ' e i e k ' : ' s i : c o a n i S ' : b ' e ' d s n : ' i e ' d s n : ' i e ' d s n : ' i a R n o r p p n n t t e T u a n a : R t T c n a : R t T c n a : R t T c ( c e s n e o o t c S i l a ' t c t c e i a o t c e i a o t c e i a o M t a e t c s s e h o o e g A t t i t ! a t g n i t ! a t g n i t ! a t g n e i d r a t X Y x o u n c ' d o i t i i d y B t i i d y B t i i d y B n o o t = i t r r : t , d n o y o s o . = P u y o s o . = P u y o s o . = O u u n n T > n = = = M E c i ' n . n S n p > e t . n S n p > l t . n S n o > r t I ' l a e e l e { o T , ' p ' u l e r t p ' u l l a t o ' u l r g t t , y g { r c r r n : : n a , e , p y r w s o l , p y a w c o r , p y g w a o e , ' . o e e u p : g r p , s i o n a p , c i e n g p , a i n n m , c n c c ( c ' o ' t s o o n n ' c o e n ' ' a o n n i ' u t t t { o r s t , y o r n d ' , e r . d , , n r i d z , | r a . . n i X r p n t . o , . t i o i t z o a r i l t t b , u e . e i w c e c w z e a w t I e n e o a b e : c d c . o d o . a d t . i t n e f p i o p , o ( o w l ( n w t ( i w o e t r t n n o ' l ' n r o ' , r i ' o r n m ) . ; + e ' s d o p , i r p i o o n i ' ) c r , Y i r e t . l t n r . t , [ r u 3 . v . r e m a e . g i e ] e r 4 c } i m s r a c r c a c r t r ; u , d a o . i e . o n o . = u e r e i n t n ' t l i n t r n r r n ' a , ) a o z , a [ n t e ' , ) g , g r a g ; . n , , g g . t g g t e e m i e e , h r r a o r t i . . i n . B d a a n ' a o e d d , ) d u : d d , d n E E E d i n n n i s t t t n R i i i g e t t t C a y y y l d D D D i o i i i e n a a a n l l l l t y o o o R g g g e } ( ( ( c , ' ' ' t p p o ( e l r ) r a g ; s c a o e n n ' i ' ) z ) , a , t i o n ' ) , 結果、以下のように選択肢が限定されます。 ...

2024年10月31日 · 25 分 · Nakamura

GakuNin RDM APIをつかってみる

概要 GakuNin RDMでは、以下でAPIが公開されています。このAPIの使用例について備忘録です。 https://api.rdm.nii.ac.jp/v2/ 参考 GakuNin RDMはOSF(Open Science Framework)をベースに構築されており、APIに関するドキュメントは以下で確認することができます。OpenAPIに準拠しています。 https://developer.osf.io/ PATの取得 PAT(パーソナルアクセストークン)を取得します。 ログイン後、以下のURLから作成することができます。 https://rdm.nii.ac.jp/settings/tokens/ 利用 以下のようなスクリプトにより、プログラムからもアクセスすることができます。 a c c e s s _ t o k e n = x x x i i f l l a # u # # r r m m r o o c r e e p p o a a c ア l フ w s s o o m d d e ッ ァ i p p r r _ _ s プ = イ t o u h } o t t d d d s ロ ル h n r e n o o o _ ー f を s l a s r o t t t t ド ' 開 o e , d e e s e e e o U h き p e ' . q n n n k R t 、 e = r A j u v v v e L t P n s u s e ( ( n に p U ( r = t o s i v " ク s T f e { h n t m e . = エ : リ i q o ( s p r / リ / ク l u r ) o b e o パ / エ e e i r o n s ラ a ス _ s z t s v . メ p ト p t a e " e ー i で a s t l = ) n タ . ア t . i o T v を r ッ h g o a r i 追 d プ , e n d u r 加 m ロ t ' _ e o . ー ' ( : d ) n n ド r o . i b f t g i ' ' e e . ) B n t a e v ( c a a " . s r a j e c p f r c / i e v l { s 2 e a s / : c _ n c t o e o d s k e s e s _ n / t " ' o ) k e n } ' 参考までに、Authorizationヘッダーが未指定の場合、以下の結果が返却されました。 ...

2024年10月26日 · 3 分 · Nakamura

ShExCとShExJの違い

概要 ShExC(ShEx Compact Syntax)とShExJ(ShEx JSON Syntax)の違いについて、ChatGPTによる回答です。誤っている点もあるかもしれませんが、参考になりましたら幸いです。 回答 ShExC(ShEx Compact Syntax)とShExJ(ShEx JSON Syntax)は、どちらもShEx(Shape Expressions)スキーマの表現形式ですが、表記形式や用途が異なります。以下にその違いを説明します。 1. 表記形式 ShExC(ShEx Compact Syntax) : テキストベース のシンタックスです。 人間が読み書きしやすいように設計されており、シンプルかつ簡潔にRDFデータの構造や制約を記述することができます。 主に手動で記述 したり、コード内に直接埋め込む ことを想定して設計されています。 例 : < } P e f f r o o s a a o f f n : : S n a h a g a m e p e e x > x s s d { d : : i s n t t r e i g n e g r ; ? * これは「Person」という形状が、`foaf:name` という必須の文字列プロパティと、`foaf:age` というオプションの整数プロパティを持つことを示しています。 ShExJ(ShEx JSON Syntax) : ...

2024年10月25日 · 3 分 · Nakamura

ShExとSHACLの違い

概要 ShEx(Shape Expressions)Schema と SHACL(Shapes Constraint Language)の違いに関するChatGPTによる回答です。間違っている点もあるかもしれませんが、参考になりましたら幸いです。 回答 ShEx(Shape Expressions)Schema と SHACL(Shapes Constraint Language)は、どちらもRDFデータに対する検証 や制約 を定義するための言語です。両者は同じ目的を持ちながらも、構文 やアプローチ に違いがあります。以下にその違いを説明します。 1. 目的と用途 ShEx(Shape Expressions) : ShExは、RDFデータが特定の形状(Shape)に従っているかどうかを 簡潔に定義し、検証するための言語です。 主に、柔軟で簡単なスキーマ定義 を目的として設計されており、特定の形状にデータが適合するかどうかの判定がしやすいです。 スキーマ検証 が主な用途で、特定のシェイプにデータが従っているかどうかをすばやく確認できます。 SHACL(Shapes Constraint Language) : SHACLは、RDFデータに対して複雑な制約 やルール を定義するために設計されたW3C標準の言語です。 より柔軟で強力な検証機能を持ち、スキーマ定義だけでなく、制約の論理的な定義 や高次の推論 を行うことができます。 例えば、条件付き制約や、プロパティの型、データの依存関係など、より複雑なルールを記述できます。 2. 構文と表現力 ShEx : シンプルでコンパクトな構文 を持ち、RDFデータの形状を定義する際に、簡単に読み書きできるよう設計されています。 直感的で短い記述 でシェイプを定義できるため、学習コストが低く、データ検証を行う際に適しています。 例(ShExC形式): < } P e f f r o o s a a o f f n : : S n a h a g a m e p e e x > x s s d { d : : i s n t t r e i g n e g r ; ? * これは、「`PersonShape`は、`foaf:name`として文字列型、`foaf:age`として整数型のオプションプロパティを持つ」という意味です。 SHACL : ...

2024年10月25日 · 2 分 · Nakamura

@samvera/rampビューアのFiles/Markersタブの使用方法

概要 IIIF Audio/Visualに対応したビューアの一つである@samvera/rampビューアのFiles/Markersタブの使用方法について調べたので備忘録です。 マニュアル Filesについては、以下に記載がありました。 https://samvera-labs.github.io/ramp/#supplementalfiles また、Markersについては、以下に記載があります。 https://samvera-labs.github.io/ramp/#markersdisplay 使用するデータ 『県政ニュース 第1巻』(県立長野図書館)を使用します。 https://www.ro-da.jp/shinshu-dcommons/library/02FT0102974177 Filesタブ renderingプロパティを読むと記載されています。renderingプロパティについては、以下のCookbookにも掲載されています。 https://iiif.io/api/cookbook/recipe/0046-rendering/ 以下のようなスクリプトにより、マニフェストファイルにrenderingプロパティを追加します。 d e f a d d _ r m j j r m o w r e a a a e a u i e n n p p n n t t t d i a a d i p h u e f n n e l } i t f f u f r r e _ _ r a , d y o e t o . n i s s s i b = p r s _ p w n t e e n e j e m t p e r o g a a g l " a = a . a n i u ( = r r = j p " t r t ( t t s c c = { a a D = e h o e p e s h h " n a " n u ( u l e _ _ R : _ t a d = t m t f l i a e s a p e p a _ , f d p s [ e s p r f u n p . i o " a e l i " t i a m l = _ u ア r t i n { _ f t a o u r イ c " c g s p e h n a m r c テ h , a e a s i d a l e ム _ t = l t t f _ n I 参 a i f h . e m i = t 照 p o r . , j s a f e A i n e i s t n e f m P _ / n n " o _ i s " ( I u j d p w n p f t h " r s e u " ( a e . t ] l o r t ) i t s h t , , n i _ n h t o p " n d a d ) ( m s g i s e : m e : r n a p / } f t n a / / : = i g j m 2 f e p a ) e [ s n ) s 1 e i t ] a f _ . r e p i c s a d h t t . . _ h s g r ) p o e l . n i j d t p e ( / r " a i / p n " i g ) / . [ i j - t s 1 e o ] m n / " { j a p a n _ s e a r c h _ i d } " 以下のようなマニフェストファイルが作成されます。 ...

2024年10月17日 · 23 分 · Nakamura