1. 製品
  2.   OMR
  3.   Python
  4.   Open-MCR
 
  

オープンソースのPythonマルチプルチョイス試験リーダー API

無料のPythonマルチプルチョイス試験リーダー APIで、ソフトウェア開発者が試験用紙、スキャナー、処理ソフトウェアをPython APIを通じて生成できるようにします。

Open-MCR ライブラリとは何ですか?

Open-MCR と呼ばれる堅牢な Python パッケージは、マルチチャネル畳み込みリカレントニューラルネットワーク(MCRNN)をより簡単に展開できるように作られました。このオープンソースプロジェクトは、才能あるプログラマー Ian San によって作成され、学術研究者や開発者に音声認識、ビデオ解析、さまざまな時系列アプリケーションなどのタスクに対応できる多用途で効果的なフレームワークを提供します。プロジェクトに組み込むことで、より信頼性が高く正確なモデル予測が得られ、最終的に機械学習がさまざまな分野で向上するのに役立ちます。Open-MCR ライブラリは使いやすさを念頭に置いて作られました。包括的なドキュメントと例が揃っているため、初心者から熟練者まで幅広く利用できます。

機械学習において、マルチクラス分類(MCC)は、事前に定められたクラスの系列から入力を分類することを目的とした一般的なタスクです。拒否オプションを追加することで、Open-MCR はさらに一歩進み、モデルが不明確な場合に予測を生成しないようにできます。これにより全体的なパフォーマンスが向上し、特にモデルの信頼度が低い状況で有用です。根本的に、Open-MCR は畳み込みニューラルネットワークとリカレントニューラルネットワークの両方の利点を活用して、シーケンシャル入力を処理・理解します。マルチチャネル設計により、複雑なパターンや関係性を識別する能力が向上し、さまざまなアプリケーションに柔軟に対応できるツールです。シンプルな実装のおかげで、ユーザーはライブラリを迅速に自分のアプリケーションに組み込むことができます。このライブラリは、シーケンシャルデータ処理とディープラーニングの分野を大きく前進させる位置付けにあります。

Previous Next

Open-MCR の開始方法

Open-MCR ライブラリをインストールする推奨方法は pip を使用することです。スムーズなインストールのために、以下のコマンドを使用してください。

Open-MCR ライブラリを pip でインストール

 pip install open-mcr 

ライブラリは直接 GitHub からダウンロードできます。

Python アプリでリジェクションメカニズムを使用する

Open-MCR の際立った特徴はリジェクション機構であり、曖昧または困難なケースに直面した際にモデルが予測を辞退できるようにします。この機能は、誤った予測を回避することが最重要となる実世界のアプリケーションで極めて重要です。以下は、数行のコードだけでリジェクション機構を使用する方法を示す例です。スムーズに使用するために、まずライブラリから OpenMCR クラスをインポートし、好みの機械学習モデルで初期化してください。rejection_threshold パラメータを設定して、リジェクションの信頼レベルを制御します。

Python アプリ内でリジェクションメカニズムを使用する方法は?

from openmcr import OpenMCR
from sklearn.ensemble import RandomForestClassifier

# Initialize Open-MCR with a RandomForestClassifier
model = RandomForestClassifier()
mcr_model = OpenMCR(model, rejection_threshold=0.3)

# Train the model
mcr_model.fit(X_train, y_train)

# Make predictions with rejection
predictions = mcr_model.predict(X_test)

Python API を使用して画像からデータを読み取り・抽出する

オープンソースのPythonライブラリOpen-MCRは、Pythonアプリケーション内で画像からデータをロードおよび読み取るための完全なサポートを提供しています。試験やシートの処理のために、まずユーザーは標準スキャナーを使用してすべてのシートをスキャンする必要があります。シートを個別の画像に変換し、解答キーを含めて単一のフォルダーに配置します。スキャンした画像の読み取りに加えて、試験結果を自動的に採点することもできます。これは、提供された解答キーと出力を比較することで行われます。プログラムの処理が完了すると、結果は選択した出力フォルダーにCSVファイルとして保存されます。ライブラリは、やや歪んだ画像の読み取り時にもデータ抽出をサポートしています。最新リリースでは、グリッド検出アルゴリズムが強化され、画像でより良い結果が得られます。四隅のマークに基づいてグリッドを構築し、グリッド内の位置からバブルを読み取ります。以下の例は、Pythonコードを使用して結果を計算する方法を示しています。

Python API を使用して試験のバブルシートの結果を計算する方法は?

import csv
import pathlib
import typing as tp

import data_exporting
import grid_info
import list_utils
import math_utils

def score_results(results: data_exporting.OutputSheet,
                  answer_keys: data_exporting.OutputSheet,
                  num_questions: int) -> data_exporting.OutputSheet:
    answers = results.data
    keys = establish_key_dict(answer_keys)
    form_code_column_name = data_exporting.COLUMN_NAMES[
        grid_info.Field.TEST_FORM_CODE]
    form_code_index = list_utils.find_index(answers[0], form_code_column_name)
    answers_start_index = list_utils.find_index(
        answers[0][form_code_index + 1:], "Q1") + form_code_index + 1
    virtual_fields: tp.List[grid_info.RealOrVirtualField] = [
        grid_info.VirtualField.SCORE, grid_info.VirtualField.POINTS
    ]
    columns = results.field_columns + virtual_fields
    scored_results = data_exporting.OutputSheet(columns, num_questions)

    for exam in answers[1:]:  # Skip header row
        fields = {
            k: v
            for k, v in zip(results.field_columns, exam[:answers_start_index])
        }
        form_code = exam[form_code_index]
        try:
            if "*" in keys:
                key = keys["*"]
            else:
                key = keys[form_code]
        except KeyError:
            fields[grid_info.VirtualField.
                   SCORE] = data_exporting.KEY_NOT_FOUND_MESSAGE
            fields[grid_info.VirtualField.
                   POINTS] = data_exporting.KEY_NOT_FOUND_MESSAGE
            scored_answers = []
        else:
            scored_answers = [
                int(actual == correct)
                for actual, correct in zip(exam[answers_start_index:], key)
            ]
            fields[grid_info.VirtualField.SCORE] = str(
                round(math_utils.mean(scored_answers) * 100, 2))
            fields[grid_info.VirtualField.POINTS] = str(sum(scored_answers))
        string_scored_answers = [str(s) for s in scored_answers]
        scored_results.add(fields, string_scored_answers)

    return scored_results

精度と堅牢性の向上

オープンソースの Open-MCR ライブラリは、マルチクラス分類モデルの性能向上を目指す機械学習実務者にとって、ツールキットにとって貴重な追加です。リジェクションメカニズムは、特に従来のモデルが苦戦する可能性のある状況において、マルチクラス分類モデル全体の精度を向上させます。このメカニズムは、信頼性の低い予測を防ぐことでモデルのロバスト性も高め、さまざまな実世界シナリオでより信頼できる結果を保証します。

 日本