Python関連のことを調べてみた

Python関連のことを調べてみた

Slackで質問に自動回答!ChatGPTとLangChainで社内FAQボットを作ってみた Part1

# はじめに
本記事では、Slack BoltとChatGPT、LangChainを用いて社内FAQボットを開発する過程を、Partに分けて解説します。
このアプリについては、2023年の夏ごろに流行りに乗って作ったのですが、今年に入って使ってみると動かなくなっていたので、修正ついでに記事にしてみました。

# 最終ゴール
Slackから自作のチャットボットに質問し、AWS Lambda経由で独自データを回答するところまでを記載する予定です。

### 最終システム構想図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536199/f42480d6-4275-8f16-5720-7e49ea3cded1.png)
* チャットボットなので、UIはSlackを使い自作Botを作っています。
* AWS LammbdaにSlack Bolt for Pythonで自作Botを実装し、Faissでベクトルデータを検索します。独自データの回答にはChatGPT APIを使用、このあたりをLang

元記事を表示

友達のじゃんけんの勝敗判定のコードを効率化&わかりやすくしてみた

## 自己紹介

Python大好きwhile-true-ifです。

## 対象者

– Python好きな人
– Python初心者
– Pythonでじゃんけんのコンソールアプリを作りたい人

## じゃんけんとは

**グーとチョキとパーがあります。**

下の表は左側のグー・チョキ・パーが自分の出した手で、上側のグー・チョキ・パーが相手の出した手です。

グー チョキ パー
グー ×
チョキ ×

【Python】ローマ字名前を名前形式に変換する

◆問題
例のように、ローマ字の名前を名前形式に変換する方法が分からなかった。
例)YAMADA TarouをYamada Tarouにする

◆対処法
.title()を使用すればできた。

“`python:conversion.py
name = “YAMADA Tarou”
formatted_name = name.title()
print(formatted_name)

“””
# 実行結果
Yamada Tarou
“””
“`

LAN内PCのCPU&GPU使用率を表示するWebサイトを作成

# はじめに
研究室で計算機サーバーを管理していると、PCの使用率などを常に確認する必要があります。しかし、Linuxに不慣れな研究室メンバーもいるため、「大きな計算を実行する前にPCのCPU使用率をチェックしてください」とアドバイスしても、その方法を知らない人が多いです。そこで、Streamlitを使用して、研究室内のPCのCPU使用率とGPU使用率を一目で確認できるウェブサイトを作成しました。

# 仕組み
Pythonのparamikoライブラリを利用してSSH接続でログインし、あらかじめ登録しておいたコマンドでCPUとGPUの使用率を取得する仕組みです。取得した情報はStreamlitを通じて表示されます。

# 使用コマンド
以下のコマンドを使用してCPUとGPUの使用率を一括で取得しました。awkを含むこれらのコマンドは、実は私も完全には理解していませんが、ChatGPTのアドバイスを得て作成しました。

“`python:使用率を一発で出すコマンド
COM_USE_CPU = “top -b -n 1 | grep ‘Cpu(s)’ | awk ‘{print $2+$

Prefectに入門する

## Prefectとは

Prefectは、データエンジニアリングとデータサイエンスのための強力なワークフローオーケストレーションツールの一種です。
ワークフローオーケストレーションツールの歴史や主なツールについては、下記がとても分かりやすいです。

[ワークフローオーケストレーション入門](https://speakerdeck.com/nsakki55/wakuhurookesutoresiyonru-men)

### ワークフローツールの主な機能
(上記から引用)

* **実行制御**: タスクの実行順序の制御やリトライなどを保証する
* **監視**: ワークフローの実行状態やログを追跡できる
* **スケーラビリティ**: 並行処理や柔軟な計算リソースの拡張を行う
* **外部連携**: データベースやETLツールなどと容易に連携可能

### **Prefectの特徴とAirflowとの違い**

Prefectの主な特徴には、直感的なAPI、動的なワークフロー生成、高度な状態管理、簡易なデバッグ、および強力なUIがあります。Airflowに比べて、Prefectはよ

「Python で学ぶ画像認識」の画像キャプショニングのプログラムを Mask Predict による非自己回帰型に改修しました。

## 改修を行った動機

音声合成、音声認識、機械翻訳、画像キャプショニングなどで、downsample や upsample を用いて Transformer を非自己回帰的に使う方法を提案させていただきました。画像キャプショニングについては精度があまり良くありませんでした。

https://qiita.com/toshiouchi/items/b991d3ada79f0e1f6ce5

downsample の非自己回帰型プログラムの精度と自己回帰型プログラムの精度の違いの原因は、Transformer Decoder の q 入力、すなわち target 入力に、キャプションに関連した入力を入れるかどうかのように推察されました。donwsample 非自己回帰型プログラムの target 入力は、エンコーダーの出力を downsample したものであり、キャプションとは関係ありません。一方、Mask Predict の target 入力は、キャプションに mask をかけたものなので、キャプションに関係あります。そこで、Mask Predict による非自己回帰型プログラム

Python の超基本

# Python とは?
Pythonは、Perl から派生した汎用のプログラミング言語であり、1991年にGuido van Rossumによって設計されました。

Python は、シンプルで読みやすい構文を特徴とし、豊富な標準ライブラリやサードパーティのツール、フレームワークが提供されています。

# Python の特徴
Python は人間が理解しやすいソースコードのままプログラムとして配布し、**インタプリタ**と呼ばれるプログラムが1行ずつ解釈しながら実行する「**インタプリタ方式**」を採用しています。
インタプリタ方式を採用することで、ソースコードを手軽に修正や変更しやすいメリットがあります。

そのため、Pythonはコードの記述が容易であり、実行も比較的迅速です。
例えば「Hello!」を表示させたい場合、C 言語では以下のように4行書く必要がありますが、
“`c:C言語
#include

int main() {
printf(“Hello!\n”);
return 0;
}
“`

Python ではたった1行だけのみ

サンプルコードで理解するPython入門講座(後編)

## はじめに

このエントリはPythonを手っ取り早く利用できるためのもので

* 詳しい説明は抜きだ!
* とにかく最初は「使えた!」と思えることが大切である
* 理論はあとからちゃんと調べればよい

という考えで書いています。
実際には、自身が理解できておらず解説できない部分が多すぎるだけです。
ごごごめんなさい。

前編は以下です。

https://qiita.com/bashaway/items/4899e231f53c722c7f2c

# 関数/メソッド

関数は「**[呼び出し側に値を返す一連の文](https://docs.python.org/ja/3/glossary.html#term-function)**」のことらしい。
メソッドは「**[クラス本体の中で定義された関数](https://docs.python.org/ja/3/glossary.html#term-method)**」のことらしい。

* 関数には引数を渡すことができる
* 関数を実行すると戻り値が返される
* pythonでは関数はどこかのモジュールやクラスに所属している
*

paizaで初心者が一ヶ月でBランクに行くまでに行ったこと。2024年版

## 備考
現在のランクはBランクです。google検索でも同じようなブログはあるのですが、ここ最近の記事が少ないので、ここ一か月で行ったことを書いていこうと思います。
## 一か月前の自分のスペック
* android studioでjavaを触って簡単なクイズゲームを作ったくらい。
* paizaではpythonを使っていますが、この時の時点ではまだ何も知らない。
* 基礎的な数学知識(高校数学)は抜けていて、かろうじて中学数学を覚えてるぐらい。
* アルゴリズムやデータ構造は聞いたことあるぐらい。(使ったことはない)

## 最初の一週間
###### progate or paizaラーニング
まずはC++ , python , javaあたりを学んでみてください。

:::note info
もし使い慣れていて、標準のライブラリを使いこなせるレベルなのであればこちらの言語でなくても大丈夫です!
しかし上記の言語のほうが回答が多いので、上の三つがおすすめです。
:::
簡単な標準入力、標準出力、配列なんかを体系的に学ぶにはprogateがおすすめです。(大体半日~2日で終わる量

軽量LLMでCPU環境でプロンプトエンジニアリングを試す

LLMを動かしながらプロンプトエンジニアリングを試してみました。超軽量の[flan-t5-base](https://huggingface.co/google/flan-t5-base)を使って文章要約タスクを試しています。パラメータ数が248Mと少なく、手軽に動かすには都合が良かったです。その反面日本語ではプロンプトできないですし、精度も良くないです。Google ColabのCPUで動かしています。

# 実行環境
2024/3/26時点のGoogle Colab で、Python3.10.12で、以下のパッケージを使っています。

|Package|Version|備考|
|:-:|:-:|:–|
|torch|2.1.0+cu121|Google Colabにプリインストールされていたバージョン|
|transformers|4.38.2|Google Colabにプリインストールされていたバージョン|
|datasets|2.18.0|追加でpip install|

# サマリ
以下のダイアログ要約をパターン変えてさせています。

“`text: knkarthick

Fletでチャプター検出できる動画編集アプリを作りました

# 作ったもの

動画内の黒/白のフェードイン/アウトからチャプターを検出して、好きなチャプターだけを選んで結合できるアプリ「ChapterTrimmer」を作りました。

![demo](https://github.com/oddgai/ChapterTrimmer/assets/45445604/508e0a0c-eb95-4a15-9464-c5f04617d4cc)

こちらからダウンロードできます(現時点ではWindowsのみ)。

https://github.com/oddgai/ChapterTrimmer/releases/tag/v0.1.0

※自分で使うために勢いで作ったので、正常系の簡単なテストしかやってません。ちゃんとしたテストやリファクタリングはあとでやります(フラグ)。

# なぜ作ったか

黒や白のフェードイン/アウトで区切られた動画を観ることってよくありますよね。僕はあります。そのなかで必要なチャプターだけ抽出できたらいいなーと思って調べてみたんですが、そのようなことができるアプリが見当たらなかったので作りました。

# なぜFletで作ったか

洋楽歌詞翻訳アプリ

作った理由
洋楽の翻訳を整理して和訳してくれるアプリが欲しかった

機能・概要
deeplのAPIを使って和訳させている。整形はPYTHON上でやっている。
これで綺麗な形で、オリジナルと翻訳の文章が出力されるので英語の勉強になると思う。
そのうち、chatGPTに質問を投げる時に英語に翻訳してから、レスポンスを貰えばより精度の高いレスポンスをもらえそう。
正直、日本人は虚言ブログが多いので、参考にならない。英語での回答が欲しい。

これで歌詞の英語翻訳している昭和がいなくなればいい。

サンプルコード

“`
cdef index(request):

API_KEY = os.environ[‘DEEPL_API_KEY’]

trans_results = “”
if request.method == “POST”:
form = ChatForm(request.POST)
if form.is_valid():
sentence = form.cleaned_data[‘sentence’]
if len(sentence)

たぬきっぽい生き物を画像で識別

# はじめに

この記事は Aidemy Premium plan AIアプリ開発コースの最終成果物としてAIを用いた画像認識アプリを開発する過程を記録したものです。

昨今、たぬきとアライグマ、レッサーパンダとアライグマを混同する場面をよく見かけるので、たぬき、アライグマ、レッサーパンダを識別するWebアプリを作成しました。

# 目次
1. 実行環境
2. 学習する画像の取得
3. CNNモデルの作成及び学習
4. HTMLとFlaskコードの作成
5. アプリの動作確認
6. renderへのデプロイ
7. 反省

# 実装環境
・Python 3.11.5
・Google Colaboratory
・Visual Studio Code

# 学習する画像の取得
スクレイピングは使用せず、以下より、必要な画像データをダウンロードしました。
・[たぬき](https://paperswithcode.com/dataset/ntlnp-wildlife-image-dataset)
・[アライグマ](https://www.kaggle.com/datasets/debasisd

VertexAI(Gemini pro)のAPIでたまに [IndexError: list index out of range]が発生する

Gemini ProをAPIで色々叩いていたら初歩的なエラーに遭遇したので備忘録。
以下のAPIを使用しています。

https://cloud.google.com/vertex-ai/docs/python-sdk/use-vertex-ai-python-sdk?hl=ja

## 発生源を特定する
以下のページの音声をGCPのSpeech-To-Textでテキスト化を行った文章をGeminiに読ませて要約させていました。

https://aozoraroudoku.jp/voice/rdp/rd1163.html

テキスト化された文章

> “夢 の 九 作 作 ペン と インキ ペンサキ が 陰気 に こう 言い まし た お前 ぐらい 嫌 な もの は ない 私 が いくら 金 の 異服 を 着 ”
“て い て も お前 は すぐ に 錆び さし て 役 に 立た なく し て しまう 私 は お前 みたい な もの 大嫌い さ インキ は こう 答え まし ”

FlaskでPUTしてみた

### 背景

いままで、app.postやapp.getを実装していましたが、
app.putもできるよねとChatGPTに聞いてみたが、サポートしていませんと一点張り
しかし、できるんですよね。これが、
へへへ、ChatGPTに勝っている気になってきた。

“`py
from flask import Flask
app = Flask(__name__)

@app.get(‘/’)
def index():
return ‘Index Page’

@app.put(‘/test/‘)
def put_test(id):
print(id)
return ‘OK’,200

if __name__ == “__main__”:
app.run(debug=True, host=’0.0.0.0′)
“`
プログラミングは超簡単なやつ

これでできました!

“`terminal
127.0.0.1 – – [27/Mar/2024 00:50:27] “GET / HTTP/1.1” 200 –
1000
127.0.0.1 –

ARC175回答メモ

# 0.はじめに
 最近ARCの調子も上がらない感じですが、まぁ、一回さぼると
さぼり続けそうなので参戦。
AがさっぱりでBを見たところ、意外と行けそうだったので
何回か再提出を繰り返しつつもAC達成。
そのかいあってレートも+27の943と最盛期に近づけました。

# 1.A – Spoon Taking Problem
 右手左手に順番と円状と、コンテスト時はとっかかりすらつかめず
お手上げでした。
 解説を見て、スプーンの取り方は、全員右を取るパターンと
全員左を取るパターンしかないと分かり、まずそこに気づかないと
解けないんだなーっとわかりました。
逆に、そこさえ気づけば、右回りパターンと左回りパターンの
合計で算出できました。

 https://atcoder.jp/contests/arc175/submissions/51659825

# 2.B – Parenthesis Arrangement
 アットコーダーにありがちなかっこの組みあわせ問題。
いろいろ試行錯誤の上3回WAを出しながらも解けました。
【考え方】
文字列Sから、すで

Pythonで「先読みと後読みを使ったパターンの記述」の動作を確認してみた

# 概要

Pythonで「先読みと後読みを使ったパターンの記述」の動作を確認してみました。
以下のページを参考にしました。

https://www.javadrive.jp/python/regex/index16.html

# 実装

以下のファイルを作成しました。
“`sample.py
import re
pattern = re.compile(r’smart(?=phone)’)
print(bool(pattern.search(‘smart’)))
print(bool(pattern.search(‘smartphone’)))
print(bool(pattern.search(‘smartwatch’)))
result = pattern.search(‘smartphone’)
print(result.group(0))

import re
pattern = re.compile(r’smart(?!phone)’)
print(bool(pattern.search(‘smart’)))
print(bool(pattern.search(‘sm

Poetryでよく使うコマンド一覧(覚書)※ついでにインストール方法も

## poetryとは

 PoetryはPythonでの依存関係管理とパッケージングのためのツールです。 Poetryを使うとプロジェクトが依存しているライブラリを宣言でき、それらを管理 (インストールおよびアップデート) してくれます。

## poetryのインストール方法(Windows)

 PowerShellで以下のコマンドを実行。

“`
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python –
“`

 このコマンドで公式のインストールスクリプトをダウンロードし、デフォルトのPythonインタープリタを使用して実行します。以下のような内容が出力されたらパスをコピーして環境変数のpathに追加してください。

“`
To get started you need Poetry’s bin directory
(C:\Users\*******\AppData\Roaming\Python\Scripts)
environmen

Pythonを使用してWord文書のページサイズを変更する方法

ページサイズは、文書内の各ページの寸法とレイアウトを決定します。特定の要件を満たすためにページサイズをカスタマイズする必要がある場合があります。そのような場合には、Pythonが役立ちます。Pythonを活用することで、Word文書のページサイズの変更プロセスを自動化し、時間と労力を節約することができます。この記事では、Pythonを使用してWord文書のページサイズを変更する方法について探求します。

– **[Pythonを使用してWord文書のページサイズを標準のページサイズに調整する方法](#pythonを使用してword文書のページサイズを標準のページサイズに調整する方法)**
– **[Pythonを使用してWord文書のページサイズをカスタムページサイズに調整する方法](#pythonを使用してword文書のページサイズをカスタムページサイズに調整する方法)**

この方法では、[Spire.Doc for Python](https://www.e-iceblue.com/Download/Spire-Doc-Python.html)が必要です。Spire.Doc fo

【Python×Twitter】TwikitでらくらくSNS運用

TwitterをPythonで運用したい人向けの記事です。
Python初心者の方でもコードをコピペして実行できるような記事を心がけます。

:::note
この記事では、Python3.12.2での動作確認のみ行なっています。
Twikitのアップデートで動作しなくなる場合もありますのでご注意ください。
:::

# Twikitの導入
まず、今回メインで使用するTwikitについて説明します。
Twikitは、TwitterのAPIを簡単に操作できるようにするライブラリです。
Pythonで有名なtweepyと違うのは、APIキーなどの発行が不要なことです。
tweepyだと開発者ポータルから申請する必要がありますが、
twikitなら必要なのはユーザー名とパスワードだけです。

https://github.com/d60/twikit

twikitはpipを使ってインストールできます。
“`:Terminal
pip install twikit
“`

# Twikitの使い方
簡単な英語とPythonの文法が理解できればすぐに使えます。

## ログイン
Twik