0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MIT App Inventorでテキストのクラス分けを行う

Posted at

はじめに

ここでは,MIT App Inventorでのテキストのクラス分けを行います.GoogleのNatural Language APIを使用します.
アプリでテキストのクラス分けを行うことができれば,アプリの幅が格段と広がりそうですね!

テキストのクラス分けをNatural Language APIで行うが,MIT App Inventorから直接アクセスする方法が見つからなかったため,GoogleのCloud Runを経由してテキスト分類を行います.

aiaファイル

aiaファイルのCloudRunURLはご自身のに書き換えて実行してください.

アプリの概要

アプリに文章を入力し,ボタンをクリックすると文章がCloud Run, Natural Language APIを使用して,文章のカテゴリがレスポンスします.このレスポンスをアプリのスクリーンに表示します.

Natural Language API

GoogleのNatural Language APIとは?

Natural Language API
GoogleのMLを使用して非構造化テキストから分析情報を引き出す。
Natural Language API
Natural Language API の高度な事前トレーニング済みモデルでは、デベロッパーがアプリケーションに自然言語理解(NLU)を簡単に適用し、感情分析、エンティティ分析、エンティティ感情分析、コンテンツ分類、構文解析などの機能を利用できるようになります。

Natural Language コンテンツの分類

Natural Language コンテンツの分類とは?
Method: documents.classifyText

Natural Language コンテンツの分類
コンテンツ分類は、ドキュメントを分析し、ドキュメント内で見つかったテキストに適用されるコンテンツ カテゴリのリストを返します。ドキュメント内のコンテンツを分類するには、classifyText メソッドを呼び出します。

Method: documents.classifyTextドキュメント

classifyTextはv2を使用します.

Cloud Run

GoogleのCloud Runとは?

Cloud Run
フルマネージドのプラットフォームでアプリやウェブサイトをすばやく構築

Designer画面

Designer画面

機能 内容
TextBox1 テキスト分類する文章を入力する箇所.
send ボタン,文章を入力したらクリックし,テキスト分類を行う.
reset ボタン,Label1とListView1のテキストをクリアする.
Web1 CloudRunにリクエストを送る.

blocks画面

変数

・CloudRunURL
CloudRunへリクエストを送るURL.
CloudRunURL

・classList
レスポンスで帰ってきたカテゴリをリストに格納する.
classList

ボタンクリック

・wheb send. Click
CloudRunへリクエストを送信する.
blocks (1).png

・when reset. Click
Label1とtextBox1,ListView1blocks (5).png
をクリアする.

CloudRunからのレスポンス処理

・when Web1. Get Text
blocks (3).png

コードの記述

Natural Language APIを使用できるようにし,Cloud Runにコードを記述します.
生成AIに書いてもらいました~~!AIってほんとに優秀ですね.

main.py
import json
from flask import Flask, request, jsonify
import functions_framework
from googleapiclient.discovery import build
from google.auth import default

app = Flask(__name__)
app.json.ensure_ascii = False

# Google Natural Language API クライアントを作成
nl_service = None

@app.route('/classify_text', methods=['GET', 'POST'])  # GET と POST メソッドに対応
def classify_text():
    """文章のコンテンツを分類する"""
    global nl_service
    
    try:
        # リクエストから文章を取得
        if request.method == 'GET':
            text = request.args.get('text')
        elif request.method == 'POST':
            text = request.get_json().get('text')

        # 進捗状況を記録
        progress = {"step": "文章取得"}

        # Google Natural Language API クライアントを作成
        if nl_service is None:
            nl_service = get_nl_service()
            progress["step"] = "APIクライアント作成"

        # Google Natural Language API にリクエストを送信
        response = classify_text_with_api(text, nl_service)
        progress["step"] = "APIリクエスト送信"

        # 結果をJSON形式で返す
        return jsonify({'progress': progress, 'classification': response}), 200

    except Exception as e:
        return jsonify({"error": str(e)}), 500

@functions_framework.http
def main(request):
    """HTTPリクエストを処理する"""
    with app.app_context():
        return classify_text()

def get_nl_service():
    """Google Natural Language API のクライアントを作成する"""
    credentials, project_id = default()
    return build('language', 'v2', credentials=credentials)

def classify_text_with_api(text, nl_service):
    """Google Natural Language API を使用して、文章のコンテンツを分類する"""
    request_body = {
        "document": {
            "type": "PLAIN_TEXT",
            "content": text
        }
    }

    response = nl_service.documents().classifyText(body=request_body).execute()

    # Content Classification の結果を取得
    classification = response.get("categories", [])

    return classification
requirements.txt
functions-framework==3.*
requests
google-api-python-client
google-auth-httplib2

CloudRunからURLを貼り付け

CloudRunのURLをコピーして,ブロック画面の変数CloudRunURLに貼り付けます.
スクリーンショット 2024-11-19 183638_1.png

終わりに

GoogleのNatural Language APIを使用することで簡単に長文をカテゴライズすることができた.
MIT App InventorでCloud Runを使用することでアプリ作成の幅が大きく広がります,GoogleにはたくさんのAPIが用意されておりこれらを使用することでいろいろなアプリを作成することができます.生成AIを頼ることでプログラミングがわからなくても,CloudRunを使用したアプリ作成を行うことができます.テキスト情報であればMIT App Inventorでブロックを作成するよりも,生成AIにプログラムを作成してもらい,CloudRunにアクセスす方がアプリ作成の効率が上がると思い始めました.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?