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

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

初心者が音声認識を触ってみた (その2)

さて、[前の記事](https://qiita.com/deratege/items/5851aa3d9402a018e4c1)から引き続いて、マイク入力のテストをしてみます。

## マイク入力を使ったサンプルプログラムを動かしてみる

何か適当なサンプルがないか探してみると、[いい感じの記事](https://acp.amivoice.com/blog/2022-07-19-113432/)がありましたので、これを試してみます。

※ このサンプルも、前回同様にWrp_.py中でssl.wrap_socket()をコールするので、Python3.12が使えません。

音声ライブラリとして、[SoundCard](https://pypi.org/project/SoundCard/)を使っているのでインストールします。
“`
pip install soundcard
“`

サンプルプログラムは[Gitで配布](https://github.com/r-ichikawa-amivoice/ami_speechrecognizer_py)されているのでダウンロードして適当に展開

元記事を表示

Python Lab #3 ― 日本語解析 on GUI

# Python Lab #3 ― 日本語解析 on GUI

GUI で日文を入力したら MeCab を使って日本語を解析するという Python スクリプトを開発してみました。

# 開発に至った動機

MeCab というライブラリを使うと、日文を分かち書きしたり日文の単語の識別をしたりすることができることを知りました。過去に、日本語の単語レベルの grep を作ってみたい(まずは名詞が探せればよい)と思ったことがあるので、MeCab を試してみることにしました。
CUI だと色々な日文を試すのが面倒なので、GUI で MeCab 処理をラップすることにしました。GUI 部分は Flet を採用しました。

MeCab を使い始めるのには、たった数行のコーディングで済みました(注)。むしろ Flet のコーティングのほうに時間がかかりました。ま、Flet も使いこなせるようになりたいので、それはそれでヨシとします。

注)もちろん、本式にいろいろなことをやるなら難しいコーディングも必要となるでしょう。

# 実行イメージ

**GUI 起動時**

![PythonLab-Meca

元記事を表示

【NewRelic】LookupTableにREST API経由でCSVファイルをアップロードする。

NewRelicのLookupTableという機能を使ってみました。

# LookupTableとは
* メトリックとは別でCSVをテーブルとして保持できる機能
* 上記をNRQL上でも表現可
* メトリックと組み合わせることで、管理しやすくなる。
* ホスト名に日本語名称を付与
* 「〇〇システム」という文言とホストやサービスを紐づけが出来る。
参考:公式サイトより
https://docs.newrelic.com/jp/docs/logs/ui-data/lookup-tables-ui/

# アップロード方法
ブラウザ(NewRelicのコンソール)からアップロードする方法とRESTAPIを使った方法の2つがあります。

インプットとなるCSVの値がそんなに変動しない場合は、手動アップロードで良いですが、そこそこの頻度で値が変わったり定期的にアップロードする仕組みの場合は後者のAPIを使った方法が良いです。
ということで後者のやり方を確認してみます。
※手動アップロードについては画面をポチポチ押すだけです。

# 環境
– Windows11(ただのPC

元記事を表示

Pythonでテンパズルのn個の数字で好きな数字を作りたい

# やること
+ n個の数字から2つを選んで +-x÷をすべて並び替えて出力
`[1,2] -> [‘(1+2)’, ‘(1-2)’, ‘(1*2)’, ‘(1/2)’]` みたいに
+ 繰り返す
“`py
[1,2,3] ->
[[‘(1+2)’, 3], [‘(1-2)’, 3], [‘(1*2)’, 3], [‘(1/2)’, 3]] ->
[‘((1+2)+3)’, ‘((1+2)-3)’, ‘((1+2)*3)’, ‘((1+2)/3)’ … ]
“`
みたいに

# コード
## import
“`py
import math
import tqdm
“`
## permutation
2個選ぶ用の関数
https://docs.python.org/3/library/itertools.html#itertools.permutations を改変。
“`py
def permutations(iterable, r=None):
pool = list(iterable)
n = len(pool)
r = n if r is

元記事を表示

Python3ではじめるシステムトレード:確率変数と独立

長い間、正確に理解できていなかったので、メモとして残しておきます。

確率変数 $ X $ が正規分布 $ N(\mu, \sigma_X^2) $ に従う場合、その確率密度関数(PDF)は次の式で表されます:

$$
f(x) = \frac{1}{\sqrt{2\pi \sigma_X^2}} e^{-\frac{(x-\mu_X)^2}{2\sigma_X^2}}
$$

ここで、
– $ \mu_X $ は分布の平均(期待値)です。
– $ \sigma_X $ は標準偏差で、$ \sigma_X^2 $ は分布の分散です。

この関数は $ x $ の値に対して確率密度を与え、$ \mu_X $ を中心に対称なベル形のカーブを描きます。

この際に確率変数$X$は独立です。

どうように、確率変数 $ Y $ が正規分布 $ N(\mu, \sigma_X^2) $ に従う場合、その確率密度関数(PDF)は次の式で表されます:

$$
f(y) = \frac{1}{\sqrt{2\pi \sigma_Y^2}} e^{-\frac{(y-\mu_Y)^2}{2\sigma_

元記事を表示

Pythonデコレータのネストを減らすデコレータ

## 概要
デコレータ自身に引数を持つ場合の書き方がややこしいので、ネストを減らすデコレータを作ってみました

### デコレータのデコレータが無い場合の実行例
“`python
import functools

def sample_decorator(print_key: str):
def _sample_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
print(f”function start, name: {func.__name__}”)
print(f”print value: {kwargs[print_key]}”)
result = func(*args, **kwargs)
print(“function end”)
return result

return wrapper

retu

元記事を表示

「Pythonによる化学シミュレーション入門」をやってみたよ2~色々な反応の反応速度~

この記事は[現代化学](https://www.tkd-pbl.com/news/n184.html)(東京化学同人)の2022年4月号から2024年3月号まで連載された安藤耕司先生の「Pythonによる化学シミュレーション入門」を読んでやってみた記事です。詳しい内容は上記の「Pythonによる化学シミュレーション入門」をご参照ください。今回は、2022年8月号の反応速度論(3)、2022年9月号の反応速度論(4)の内容です。

# 目標

いろいろな反応速度をプロットしてみよう

## 単分子n次反応

“`math
A \longrightarrow B
“`

のような反応で、反応速度$v$が次のように表されるもの。

“`math
v = k A(t)^n = – \frac{dA(t)}{dt} = \frac{dB(t)}{dt}
“`
ここで$A(t)$、$B(t)$は時刻$t$でのAとBの濃度、$k$は反応速度定数。

・解析解

$k A(t)^n = – \frac{dA(t)}{dt}$より、この微分方程式を解いて、
“`math
\frac{1}{A

元記事を表示

Pythonで二次元リストを簡潔にコーディングする(内包表記)

この記事はPythonの二次元配列を簡潔にコーディングする方法について記載する.

# 標準入力
標準入力が以下のようだったとする

![スクリーンショット 2024-05-26 21.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3757442/fea19d9a-0491-5418-b74a-9d4d26ca9ec2.png)

# Pythonでの内包表記
内包表記(List Comprehension)を使って,ユーザーから入力された行列 A を二次元リストとして作成する.
“`example.py
H, W = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(H)]
“`
:::note info
`map()`は配列の要素を第一引数に指定された型に変換する
`map(int, [“1”, “2”, “3”])`ならば`[1, 2, 3]`となる.`
:::

:::no

元記事を表示

Python初心者がWebサービスを作る備忘録(~お試し環境で動くまで)

# これ is なに
Python初心者がWebサービスを作ってみるよ。
環境設定からの備忘録だよ。
## 初期装備
### 私
* Pythonはほぼ完全に初心者
* JavaでのWebサービス作成経験はある
なので、オブジェクト指向、TCP/IPの仕組み、プラグインを使用した開発に関する知識は無ではない。(精通しているとは言えない)
* 英語は何となく単語は拾えるレベル
* IntelliJは少し触ったことがある
### 環境
* Windows11
* Python 3.10.11
* git version 2.40.1.windows.1
* https://github.com/mowarowsea/PythonWeb

## やること
* Pythonよくわからないけど技術キャッチアップのために練習するよ
* どうせならWebサービス作りたいよ(アイディアはない)
* Reflaxというフレームワークを使うと、PythonだけでWebサービスがつくれるっぽいので試してみる

# 本編
結構下記サイトを参考にしたよ。

https://zenn.dev/kun432/s

元記事を表示

Instagram APIで自分の投稿へのコメントに自動返信するAWS Lambdaの実装

# Instagram APIを使用して投稿へのコメントに自動返信する機能

この記事では、Instagram APIを利用して、投稿へのコメントに自動でDMで返信する機能をAWS Lambdaを使って実装する方法を紹介します。Facebook MessengerのInstagram APIを活用し、コメントを解析して自動的にDMを送信するプロセスを詳しく解説します!

## 1. はじめに

Instagramの投稿に対するコメントに自動で返信する機能を作成することで、ユーザーとのエンゲージメントを高め、迅速な対応が可能になります。本記事では、その実装方法を詳細に説明します。

## 2. アーキテクチャの構成

### フローチャート

1. ユーザーがInstagramの投稿にコメント
2. Webhookを通じてコメントデータを受信
3. コメント内容を解析し、自動返信メッセージを生成
4. DMを送信

### 使用する技術スタック

– **プログラミング言語**: Python
– **サーバーレスプラットフォーム**: AWS Lambda
– **APIゲートウェイ*

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その84 IntSliderとキー入力によるGUIの実装

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/e857737e7f36a3a242bc

## これまでに作成したモジュール

以下のリンクから、これまでに作成したモジュールを見ることができます。

https://github.com/ysgeso/marubatsu/blob/master/084/marubatsu.py

https://github.com/ysgeso/marubatsu/blob/master/084/ai.py

https://github.com/ysgeso/marubatsu/blob/master/084/util.py

## ルールベースの AI の一覧

ルールベースの AI の一覧については、下記の記事を参照して下さい。

https://qiita.com/ysgeso/items/10d1d01192c014173e4b

# リプレイ中の背景色の変更

前回の記事で、〇×ゲームの GUI

元記事を表示

PDFをLLMで解析する前処理のパーサーは何が良いのか?(pdfminer, PyMuPDF, pypdf, Unstructured)

現状の LLM は PDF ファイルを直接処理出来ない為、予めなんらかのプレーンテキスト形式に変換する必要があります。
(PDFを読める各チャットアプリも内部的には何らかの手段でプレーンテキスト形式に変換しているはずです)

変換を行ってくれるライブラリは複数存在する為、動作の違いを確認します。

# 抽出プログラム

抽出する対象のPDFファイルはBedrockユーザーガイドの日本語版を使います。

“`Python:pdfminer
from pdfminer.high_level import extract_text
from pathlib import Path

pdf = Path(‘bedrock-ug.pdf’)

with open(“use_pdfminer.txt”, “w”, encoding=”utf-8″) as out:
out.write(extract_text(p

元記事を表示

今日、どんなラジオやるのかな?radiko api 番組表取得

# あれ、今日はあの番組お休みなのか、、、

なんてこと、ありませんか?
私はあります。

**山崎怜奈の誰かに話したかったことを拝聴しようとしたら、山崎怜奈がニューヨークへ旅行していて知らないアナウンサーが代理で喋りだした**こととか、、、
あります。

例えばいつも聞いているラジオがいつも通りの時間にやるのか確認したいとき、radikoアプリを開いて頑張って番組表をスワイプしますか?
**私はしません。**

**なぜなら、もっと簡単に番組表が取得できるようにしているからです。**

今回は、**放送局id**と**日にち**から、**その日の番組表を取得する**方法をお教えします。

# 番組表を取得できる radiko api

https://radiko.jp/v3/program/station/date/(年月日:例 20240521)/(放送局id:例 FMT).xml
にアクセスすると、指定した放送局、日にちの番組表をxml形式で取得できます。
例として、2024年5月21日 TOKYO FMの番組表を取得してみます。

[こんな感じ](https://radiko

元記事を表示

「3D位置のわかっているターゲット点の画像から、ガウス・ニュートン法でカメラ位置・向きを推定」のシミュレーション

# はじめに

– ターゲット点の __複数画像から__ カメラ位置・向きを推定する方法として、例えば __エピポーラ幾何__ があります
– また __ArUcoマーカーから__ カメラ位置・向きを推定する関数が __OpenCV__ にあります

それらとの比較として。

– ターゲット点の正確な位置がわかってる場合、 __1つの画像から__ どれだけ推定できるのか、試しました
– 試した推定方法は、非線形最小二乗法の1つ、 __ガウス・ニュートン法__
– 大したGPUのないノートPCで、実用的な速度で計算できるかにも興味がありました

### 工夫したこと
1. 実際の画像ではなく、ターゲット画像を想定して __シミュレーション__
 純粋に推定能力を調べるため、ターゲットの検出誤差は0として、正解と推定値を比較

2. まじめに __逆行列計算__
 Pythonの数値解析ソフトウェアライブラリの1つ __SciPy__ によりよい機能があるようですが、今回への適用方法がよくわからず。。。

3. ターゲット点に __重み付け__ を適用
 推定する際に、遠くの点は画像

元記事を表示

【技術書典】Streamlitの入門書で初出展してみて

# 前置き
こんにちは。データエンジニアの山口歩夢です!

5/26の技術書典のオフラインイベントにて、Streamlitの入門書を執筆して初出展してきました。

「Streamlitデータ可視化入門」を購入してくださった皆様、手に取ってくださった皆様、興味を持ってくださった皆様、誠にありがとうございます。
そして、レビューやブースでの販売、告知などお力を貸してくださった皆様、本当にありがとうございました。

# 頒布した同人誌
今回の頒布物はこちらです。

https://techbookfest.org/product/t5GBwbFm4kUhXrTPkGpAnY?utm_source=twitter&utm_medium=social&utm_campaign=share

Streamlitの公式ドキュメントを基礎的なところからしっかり読み、2ヶ月くらいかけてコツコツ書き進めました。
Streamlitの本当に基礎的なところから、自分が業務でStreamlitを使っていて便利だなと思った機能など幅広く書かせていただきました。
公式ドキュメントを入念にチェックすることでしか気付け

元記事を表示

radikoの放送局一覧を取得してみよう radiko api

# radiko apiから取得した放送局一覧

**これがほしかったんでしょう
早速お見せします**

放送局一覧

region

都道府県(area_id)

station

station_id

北海道・東北

北海道(JP1)

HBCラジオ

HBC

STVラジオ

STV

AIR-G’(FM北海道)

AIR-G

FM NORTH WAVE

NORTHWAVE

青森県(JP2)

RAB青森放送

RAB

エフエム青森

AFB

岩手県(JP3)

IBCラジオ

IBC

エフエム岩手

FMI

宮城県(JP4)

TBCラジオ

TBC

Date fm エフエム仙

Raspberry Pi Pico W で WAVファイルをストリーミング再生する

# 1. 背景

WAVファイルは、MP3ファイルに比べるとファイル容量が大きく、数秒の短い小さいファイルを除き、Raspberry Pi Picoの2MBしかないフラッシュメモリーには置けません。
大きいWAVデータを再生したい場合は、SDカードに置く方法がありますが。。。

そんな中、WAVデータをSDカードにコピーする作業をしているときに、ストリーミング再生 を思い付きました。

Pico W は Wifi が使えます。HTTPでアクセスできるファイルサーバにWAVデータを置いておけば、いちいちSDカードにコピーする手間が省けますし、インターネットで公開されているWAVデータも再生することもがきます。

ただし、フラッシュメモリーの空き容量が少ないため、ダウンロード方式は使えません。あくまで**ストリーミング**で再生する必要があります。

最終的に MicroPython で実現できたので、ここにまとめておきます。

# 2. おさらい

Pico で WAVファイルを再生する方法は、次のとおり。

### ・ CircuitPython の場合

文化祭で来場者数を調べたかった

# はじめに

こんにちは、しがない高校生をしているBasalteと申します。

今回は、クラッシュしたプロジェクトの供養をする記事です。

大まかにいうと、校門にカメラを置いてあるラインを超えた人数を計測する装置です。
最近Twitterなどで話題になっていますが、DeepSortという技術を使って人間の個体識別をするだけです。

# 目的
2023年の文化祭はコロナなどない久しぶりの通常開催で、何人外部から人が来るか本当にわからない状態で、パンフレットや食品などを不透明な状態で数を用意することになりました。

ですが、リアルタイムで来場者数が分かれば、1日目、2日目でパンフレットを配るペース配分などを計算できるのではないかということや、来年度以降の準備の参考になるという目的で始まりました。
~~ただ単に自分が調べたかったのもある~~

# 技術スタック
・Python3
・Anaconda
・Yolov8
・DeepSORT
・OPenCV
Yolov8はともかく、DeepSortは触ったことがなかったので勉強しながらという感じでした。

# 実装
やってることはObject R

毎日の電気量を通知する仕組みをLambdaで作った

## 目的
最近電気使用料が高くなってますよね?
サイトにログインして、前日使用した電気量を確認することが日課となっていましたが
面倒くさい

バッチ処理で毎日LINEに通知してくれたら楽だし
そういった仕組みのようなものを作ったこともなかったので
勉強になるかな~と思ってそれっぽいものを作ろうと重い腰を上げました
この記事はその備忘録的な感じです

## 構成図
仕組みとしては簡単です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3785830/b42adc85-9d7d-392b-3aca-b6bf96a4efd2.png)

## LINE NOTIFYの設定
こちらのサイトのやり方を拝借しました。簡単簡単
https://zenn.dev/protoout/articles/18-line-notify-setup

問題なくテスト通知できました
[ ]で囲われているのはトークン名です
![image.png](https://qiita-image-store.s3.ap

execute_script()でエラーが解決した

## エラー内容
Pythonのseleniumにてwebスクレイピングをしている時にページは開くことができているのになぜかCSS Selectorが見つからずにエラーが出る

# 解決方法

“`python
driver.find_element_by_id(‘IdName’).click()
“`

“`python
driver.execute_script(‘arguments[0].click();’, driver.find_element_by_id(‘IdName’))
“`
上記のように変更した。
調べたところ、画面外の要素をクリックをする際にエラーを起こすことがあるらしく、実際に画面内に収まっているように見えてもスマホサイズ?になっていたりするので注意が必要とのこと。

## execute_script()
JavaScriptを使用してクリック操作をする.
そのため要素の状態やブラウザの互換性に影響されにくい。

クリックする以外にも画面をスクロールするなど様々なことが実装可能