ellmerをためしてみる

R
Ollama
Gemma
作者

伊東宏樹

公開

2025年6月17日

Rから大規模言語モデル (LLM) を簡単に使えるようにするellmerパッケージを使ってみました。

準備

今回はOllamaからローカルLLMをつかうので、まずOllamaをインストールしておきます。

Ollamaがインストールできたら、ローカルLLMとして、gemma3:12bをインストールしておきます。シェルから以下のコマンドでインストールしました。

ollama pull gemma3:12b

ellmerはCRANからインストールできます。

install.packages("ellmer")

用意ができたら、ellmerを読み込みます。

library(ellmer)

Ollamaを使います。

chat <- chat_ollama(model = "gemma3:12b")

実行

テキスト生成

まずは、Rを使った統計学の初心者向け講座の内容を考えてもらいました。

paste("Rを使った統計学の初心者向け講座の内容を考えてください。",
      "内容は、記述統計から回帰分析とします。",
      "所要時間は、90分×5回とします。") |>
  chat$chat()
## ## Rを使った統計学初心者向け講座 (90分 x 5回)
## 
## ### 講座の目標
## 
## * Rの基本的な操作を習得し、統計分析の基礎を理解する。
## * データの可視化を通して、統計的な洞察を得る。
## * 記述統計、推測統計、そして回帰分析の基本を習得する。
## * 統計分析の結果を適切に解釈し、わかりやすく説明できるようになる。
## 
## ### 対象者
## 
## 統計学の知識が全くない、またはごくわずかしか持たない方。Rのプログラミング経験は不問。
## 
## ### 使用教材
## 
## * R (無料)
## * RStudio (無料)
## * 講義資料 (PDF形式等)
## * 演習データセット
## 
## ### 講座内容 (各回90分)
## 
## **第1回: RとRStudioの導入とデータ操作の基礎 (90分)**
## 
## *   **イントロダクション (10分):** 統計学とは何か、なぜRを使うのか、講座の概要説明
## *   **RとRStudioのインストールと設定 (20分):**  RとRStudioのダウンロード、インストール、簡単な設定
## *   **Rの基本的な操作 (30分):**
##     *   基本的なデータ型 (数値、文字列、論理値)
##     *   変数、演算子、関数
##     *   オブジェクトの作成と操作
##     *   ヘルプ機能の使い方
## *   **データの取り扱い (30分):**
##     *   データの読み込み (CSV, Excel, TXTファイル)
##     *   データフレームの操作 (データの選択、追加、削除)
##     *   基本的なデータ確認 (データの概要、型、欠損値)
##     *   演習: 簡単なデータセットの読み込みと概要確認
## 
## **第2回: 記述統計とデータの可視化 (90分)**
## 
## *   **復習と質疑応答 (15分):** 前回の内容の復習、質疑応答
## *   **記述統計の概要 (20分):**
##     *   中心傾向 (平均値、中央値、最頻値)
##     *   散らばり具合 (分散、標準偏差、範囲)
##     *   分布 (ヒストグラム、箱ひげ図)
## *   **Rによる記述統計の計算 (30分):**
##     *   `mean()`, `median()`, `sd()`, `var()`, `range()`などの基本的な関数
##     *   `summary()`関数による記述統計の一括計算
## *   **データの可視化 (25分):**
##     *   `hist()`, `boxplot()`, `plot()`などの基本的な関数
##     *   グラフのカスタマイズ (軸ラベル、タイトル、色)
##     *   演習:データセットを用いて記述統計量計算とヒストグラム、箱ひげ図の作成
## 
## **第3回: 推測統計  (90分)**
## 
## *   **復習と質疑応答 (15分):** 前回の内容の復習、質疑応答
## *   **推測統計の概要 (20分):**
##     *   母集団と標本
##     *   推定値と信頼区間
##     *   仮説検定 (p値、有意水準)
## *   **Rによる推定値と信頼区間の計算 (30分):**
##     *   `t.test()`関数によるt検定
##     *   信頼区間の構築
## *   **Rによる仮説検定の実施 (25分):**
##     *   `t.test()`関数のオプション
##     *   結果の解釈
##     *   演習:標本データに基づいた信頼区間の計算と仮説検定の実行
## 
## **第4回: 単回帰分析 (90分)**
## 
## *   **復習と質疑応答 (15分):** 前回の内容の復習、質疑応答
## *   **単回帰分析の概要 (20分):**
##     *   回帰モデルとは何か
##     *   独立変数と従属変数
##     *   最小二乗法
##     *   回帰係数の解釈
##     *   決定係数 (R2)
## *   **Rによる単回帰分析の実施 (30分):**
##     *   `lm()`関数による回帰モデルの作成
##     *   `summary()`関数によるモデルの概要確認
##     *    残差分析の簡単な紹介
## *   **回帰分析結果の解釈 (25分):**
##     *   回帰係数の有意性
##     *   決定係数 (R2) の解釈
##     *   予測値の計算
##     *   演習:データセットを用いて単回帰分析の実行と結果の解釈
## 
## **第5回: 演習と応用 (90分)**
## 
## *   **復習と質疑応答 (15分):** これまでの内容の復習、質疑応答
## *   **演習問題 (45分):** これまでの内容を総合的に理解するため、より実践的な演習問題に取り組む。
## *   **応用例の紹介 (30分):**  実務で統計分析がどのように活用されているかの紹介。
##     *   複数回帰分析への発展
##     *   統計解析の結果を分かりやすく説明する方法
## 
## ### 補足事項
## 
## *   各回の内容は、受講者の理解度に合わせて調整する。
## *   各回の終わりに、次回の予告を行う。
## *   講座後には、質問受付や追加資料の提供を行う。
## * 興味のある方は、より高度な統計解析手法(ロジスティック回帰、多変量解析など)への学習を推奨する。
## 
## この講座を通して、統計学の基礎を身につけ、Rを用いてデータ分析を行えるようになることを目指します。

こういうのは、まあそれらしい結果を返してくれます。

画像の判定

つづいて、画像に何が写っているかをたずねてみます。使用するのは以下の画像です。

img <- content_image_file("images/P6177043.jpeg")
chat$chat("この鳥は何ですか。", img)
## 写真に写っている鳥は、**ドバト**のようですね。
## 
## 特徴的な顔つきや体色がドバトの特徴と一致します。

ドバトじゃなくてスズメです。なお、判定結果は実行ごとに変わったりもします。

英語でもきいてみます。

chat$chat("What is this bird?", img)
## Based on the image, that bird appears to be a **Eurasian Sparrow** (Passer 
## domesticus). 
## 
## Here's why:
## 
## *   **Overall Appearance:** The brownish-beige body, grey back, russet crown, 
## and characteristic facial markings are all good indicators.
## *   **Distribution:** Eurasian Sparrows are widespread and common around the 
## world, particularly in human-settled areas.
## 
## 
## 
## Let me know if you’d like to know more about them!

イエスズメ (Passer domesticus) ではないですが、この前の実行では Rock dove (Columbia livia; カワラバト)≒ドバト と判定されていたので、それにくらべれば惜しい結果でした。

ChatGPTとかはためしていないのですが、gemma3:12bではこういうのはきびしいみたいです。