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

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

PythonでLaTeX文書とPDFを作成する

## はじめに

[PyLaTeX](https://jeltef.github.io/PyLaTeX/current/)というライブラリを使うことで、PythonプログラムからLaTeXおよびPDFを作成できます.

## 方法

以下のサンプルプログラムがこの記事の全てなので,ご覧いただくと早いと思います.

https://colab.research.google.com/drive/16csJN92dtpTNIqVmH2ixEoEbx0Ic96a_?usp=sharing

### プログラム

“`python
# インストール
%pip install pylatex
!apt-get update
!apt-get install latexmk
!apt-get install -y texlive-lang-japanese

# ホームディレクトリのパスを取得
home_dir = os.path.expanduser(“~”)
latexmkrc_path = os.path.join(home_dir, “.latexmkrc”)

# latexmkrcフ

元記事を表示

Webアプリ開発~超初心者編~

# 1. はじめに
## 1.1. 自己紹介
普段は、pythonを使って機械学習や深層学習などを行っていますが、この度、webアプリ開発に興味を持ったので挑戦しました。
独学かつ初心者なので誤った情報を伝えてしまうかもしれませんがお手柔らかにお願いします。
今回は、ジャンケンを行ったのちにあっち向いてほいをするプログラムを作ってみました。
筆者は普段pythonを使用しているためpythonのオープンソースフレームワークであるstreamlitを使用して開発を行いました。
本来のアプリ開発では、JavaやC言語が良く用いられると思いますのでこの記事は
「普段pythonを使ってデータサイエンスをしてるけど、アプリ開発にも触れてみたい!」
という方向けになりますのでご理解ください。

## 1.2. 実行環境について
OS Windows11
anaconda
Python 3.9

# 2.作業手順について
## 2.1. 環境構築
①anacondaをインストールして仮想環境を構築する。
anacondaには、NumPy、Pandas、Matplotlib、Scikit-learn

元記事を表示

【python】rank_bm25のインスタンスを高速にマージ

# 概要
BM25スコアを計算するためのpythonライブラリであるrank_bm25のインスタンスを高速にマージする方法を検討しました。

文書頻度辞書を用いて効率的にIDFを計算する工夫により、シンプルな方法と比べて、特にコーパスサイズが大きいときに、効率化できることを確認しました。

# 環境
– M1 Mac, macOS 14.5
– Python 3.11.2
– rank-bm25 0.2.2

以下の仮想環境上で実行しています。

“`
uv venv
source .venv/bin/activate
uv pip install rank-bm25
“`

# 背景
複数のサブコーパスに分けられる大きな親コーパスのBM25辞書を作りたく、サブコーパスのBM25辞書はすでに作成済みである状況を考えます。ライブラリとしてrank_bm25のBM25Okapiクラスを使います。
もっともシンプルな方法は、親コーパスでBM25Okapiを初期化することですが、コーパスサイズが大きいと時間がかかります。サブコーパスのインスタンスがすでにあるならそれを使って高速化したいです

元記事を表示

コンテンツのタイトルからNTRが含まれているかを推理するゲームアプリ「NTR Judge」をPythonで作りました

# まずは作ったものを見ていただければ
※18歳未満の方はご利用いただけません。申し訳ございません……

https://9xswpuzxzd.execute-api.ap-northeast-1.amazonaws.com/ntr/confirm

# 作ろうと思ったきっかけ
2年ほど前に[BookRain](https://kemelman.github.io/bookrain/)というアプリを作成しました。
こちらは[OpenBD](https://openbd.jp/)を使って取得した本のタイトルが雨のように降ってくるのを楽しむウェブサイトとなっております。
開発の経緯は[こちら](https://qiita.com/kemelman/items/c01a47119f3221a9cfbb)からどうぞ。

BookRainは楽しんで作ることができ、個人開発を公開するのは初めてで、私にとって有意義な経験となりました。

一方で、反省は以下の通りです。
– スマホで楽しめるものを作れていない。
– ユーザーからの入力を受け付けるようなものを作りたい。

この反省を踏まえて、次に作る

元記事を表示

AI屋さんの LLMとstreamlitとdockerとcloud runと私

AI屋さんの LLMとstreamlitとdockerとcloud runと私

LLMに200万トークン全文入力 追加学習ずみの専門分野特化のLLMの作り方

概要
大規模言語モデルのwebアプリを クラウドのサーバーレスでデプロイする
最小構成の資料です。
  gemini
  streamlit
  docker
  cloud run
だけで作れちゃいます。
雛形で一度デプロイできれば、あとは簡単です。

既知の組み合わせで構成されています。
応用は自由自在です。

作り方は下記参照(まとめ)

https://docs.google.com/document/d/e/2PACX-1vRZ9RkstP6oPLMcKOHXygf8X4HFKhHTiPt2glUvDD_-NZWXY9HKOb7XqfBa26BBqhAihzaysasJsk7b/pub

https://
docs.google.com/document/d/e/2PACX-1vRZ9RkstP6oPLMcKOHXygf8X4HFKhHTiPt2glUvDD_-NZWXY9HKOb7XqfBa26BBqh

元記事を表示

Python logging 解説(初心者向け)

# はじめに

Pythonのloggingについての記事です。

:::note info
loggingについて詳しくない人向けの記事です。ログの初歩から始めて、図やPythonコードを見ながら進めていきます。
:::

# ログとは

ログとは、アプリケーションやシステムが実行中に生成する記録やメッセージのことです。

よくあるのはこういうログ。
| ログ名 | 説明 |
|:-:|:-:|
| エラーログ | システムやアプリケーションのエラーに関する情報。 |
| イベントログ | 特定のイベントやアクションに関する記録。 |
| デバッグログ | 開発中のデバッグ情報。詳細な実行状況を記録する。 |
| 情報ログ | 一般的な運用情報。システムの状態や進行状況を示す。 |

# 実際に動かしてみる

まずはPythonのloggingがどのような出力をするのか見てみます。

“`Python: Python
import logging

logging.warning(“This is warning message!!”)
print(“reached

元記事を表示

Django cssを用いてフォームののレイアウトを変える方法

## 問題の発生
forms.pyで設定したフォームをテンプレートに表示しようとしたところ、デフォルトのスタイルが適用されたため、フォームの見た目が整っていない状態になってしまった。(下参照)

![スクリーンショット 2024-09-30 10.48.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3893783/abd4afc1-f4dc-8f65-011d-8912216a8b7f.png)

これはwidgetの設定がされていないことが問題である。

## widgetとは?
widget=ウィジェット。直訳すると小型の装置や部品と言う。

Djangoのwidgetとは、フォームフィールドがどのようにHTMLとして表示されるかを制御するもの。
widgetを設定せず、フィールドを設定したら、デフォルトで設定されているChar_Fieldはinp

元記事を表示

fastapi-paginationでSQLModelの単一フィールドを取得するとバリデーションエラーが発生

# 問題
FastAPIにページネーション機能を追加するライブラリ「[fastapi-pagination](https://github.com/uriyyo/fastapi-pagination)」で以下のようなコードを書いたところ、エラー「 `Input should be a valid dictionary or object to extract fields from…` 」が発生しました。

“`python
from fastapi_pagination.ext.sqlmodel import paginate
from sqlmodel import SQLModel

class User(SQLModel):
name: str

@router.get(“/users”, response_model=Page[User])
def get_users(session: SessionDep):
return paginate(session, select(User.name))
“`

“`

File “/usr/l

元記事を表示

Google Cloud Run FunctionsとMongoDBを使用してPythonでWebAPIを作ってみる

# はじめに
初めての投稿です。何を書こうか考えましたが、業務関連はいろいろと書きにくいので、プライベートのことにしました。

我が家はなんちゃってIoTハウスです。
ラズパイに温湿度センサを接続して、測定値をサーバーにアップ、LINEBotから確認できるようにしています。またエアコンのON・OFFもLINEから制御できるようにしています。

現状はOracleCloudのVM上にDB、AP、WEBサーバーを立てて運用していますが
一通りサーバーレスで構築し直したいと思っています。
今回はその練習として、TODOリストをDBへ記録、取得するAPIを作ってみました。
~~タスクの完了登録はできません~~

意外と情報は少なく、ちょっとしたことで詰まりました。
皆さんCloud RunやApp Engineの方を利用しているのかな?

コードは以下においてあります

https://github.com/kbecmint/CloudRunFunctions

# 前提条件
* gcloudのインストール
+ https://cloud.google.com/sdk/docs/do

元記事を表示

SPSS Modelerでテキストマイニングをやってみる その3 形態素解析編

# SPSS Modelerでのテキストマイニング 形態素解析編

こんにちは
前回の感情分析編からの続きです。今回は、Mecabによる形態素解析をやってみます。

https://qiita.com/harrowharrow16/items/a3ac51a91080c21da87d

Modelerでのjanomeによる形態素解析はすでにIBMブログにありますので、そちらも参考してみてください。

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-22/

## 1. さっそく形態素解析をやっていく
 まずは、Mecabのインストールをお願いします。準備編で説明しています。

https://qiita.com/harrowharrow16/items/248ff8fe3879b63e7ae3

### ①. ストリーム全体

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3839172/becab869

元記事を表示

【rank_bm25】AttributeError: Can’t get attribute ‘tokenize’ on

# 概要
rank_bm25の初期化時にtokenizer引数を与えると、`AttributeError: Can’t get attribute ‘tokenize’ on `というエラーが出たので、解決方法を考えました。

# 環境

– M1 Mac, macOS 14.5
– Python 3.11.2
– rank-bm25 0.2.2

# 経緯

仮想環境を作成し、rank_bm25をインストールします。

“`
uv venv
source .venv/bin/activate
uv pip install rank-bm25
“`

以下のスクリプトを実行します。

“`Python
from rank_bm25 import BM25Okapi

corpus = [
“The quick brown fox jumps over the lazy dog.”,
“A journey of a thousand miles begins with a single step.”,

元記事を表示

Pythonで特定の文字列以降を削除する

# 特定の文字列以降を削除する(その1)
例えば、123-4567のような郵便番号みたいな文字列があるとします。
“-“以降の部分文字列を削除したいとき、私が最初に思いつくのは、find()メソッドを使うやり方です。find()メソッドは、指定した部分文字列が文字列内で最初に見つかる位置のインデックスを返します。
~~~Python:example1.py
s = “123-4567”
pos = s.find(“-“)
s = s[:pos]
print(s) # 123が出力される
~~~
上のコードは変数posを使わずに書くこともできます。
~~~Python:example2.py
s = “123-4567”
s = [:s.find(“-“)]
print(s) # 123が出力される
~~~
# 特定の文字列以降を削除する(その2)
その次に考えられるのが、split()メソッドを使うやり方です。
今度は怪しげな?メールアドレスの@以降(ドメイン名)を削除してみます。
~~~Python:example3.py
s = “hogehoge@Junkmail.com

元記事を表示

Gemini APIでチャット2 (返答の安全性を制御する)

# 概要

Gemini APIを使ったチャットボットの作成で,[前回](https://qiita.com/AzukiImo/items/eedef182a88d6681b958)に続く内容です.会話の履歴を保存しつつ対話が続くところまででした.ここで問題になっていたのが,入力する内容によっては,返答されず,次のようなメッセージが表示され,終了してしまうことがありました.返答文に何らか問題がある場合に表示されるようです.

~~~:「あつい」の返答でなぜかエラー
finish_reason: SAFETY
safety_ratings {
category: HARM_CATEGORY_SEXUALLY_EXPLICIT
probability: MEDIUM
}
safety_ratings {
category: HARM_CATEGORY_HATE_SPEECH
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_HARASSMENT
probability: NEG

元記事を表示

ディジタルフィルタ

http://dsl4.eee.u-ryukyu.ac.jp/

http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/main.html

“`
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# Define FIR and IIR filter coefficients
# FIR Filter: H(z) = a + z^-1
a = 1 # Coefficient for FIR filter
fir_b = [a, 1] # Numerator coefficients of FIR filter (b coefficients)
fir_a = [1] # Denominator coefficients of FIR filter (a coefficients)

# IIR Filter: H(z) = (a + z^-1) / (1 – ab – bz^-1)
b = 0.5 # Coeffi

元記事を表示

バスハニャーン時刻表変更通知サービスの制作

*この記事は韓国語から翻訳したものです。不十分な部分があれば、いつでもフィードバックをいただければありがたいです! ([オリジナル記事](https://blog.chungjungsoo.dev/dev-posts/pdf-email-cron-job/), 同じく私が作成しました。)*

バスハニャーンチームメンバーがより快適に時刻表の変更を知ることができるように、時刻表が変更されると通知するシステムを構築してみました。

## 導入背景

バスハニャーンサービスは漢陽大学ERICAシャトルバスの時刻表を提供するサービスです。しかし、私たちのサービスは時刻表を手動で入力した値を提供しています。APIでJSON値で提供してサービスに適用していますが、時刻表が変更されると、変更された時刻表を見て人が手動でAPIに入るJSON値を修正してくれます。これは学校側で提供する時刻表の形式のため自動化が難しい部分があるためですが、この部分は次の章で説明する予定です。 学校はまた、シャトルバスの時刻表が変更されることも特に告知をしないので、間違えると、シャトルバスの時間が変更されたにもかかわらず

元記事を表示

IERAE CTF2024 Writeup (入門問題のみ)

CTF 初心者でとりあえず何かしらのコンテストに出てみようと思い IERAE CTF2024 に参加しました!
結果としては入門問題をいくつか解いただけで終わりましたが, トレーニングも兼ねて解けた問題の Writeup を書いてみます (Qiita での投稿も初なので何かお作法等変なことがあれば教えてほしいです!)

## 筆者の CTF に関するレベル (参考)
– OverTheWire の bandit, natas, Leviathan をある程度解いた (わからなかったところは主に Web 上の writeup を見て何とかクリアした感じ)
– CTFlearn で easy の問題を大体解いた (こちらもわからないところは早めに見切りをつけて writeup を探して勉強したので, すべて自力ではない)

## Writeup
### Welcome
– 確認問題のため省略
### OMG
– ブラウザから指定された url を開くと 33 回クリックしてとの指示が出ている $\to$ 愚直に考えると 33 回クリックするとフラグが表示されそう?
– ソースコードを確認す

元記事を表示

【Streamlit × Vertex AI】自然言語でBigQueryのデータをクエリするチャットアプリを作成してみた

## はじめに
今回は、[Streamlit](https://streamlit.io/)を使って、[Vertex AI](https://cloud.google.com/vertex-ai)を利用したチャットアプリを作成する方法を紹介します。このアプリでは、自然言語での質問に対してGeminiがSQLクエリを生成し、BigQueryに対してデータベース操作を行ってくれます。また、取得した結果に対してGeminiがデータの傾向などの考察も行ってくれるため、ユーザーはSQLクエリを記述しなくても、自然言語でチャット画面からデータ分析をインタラクティブに進めることができるようになります。

本記事では、今回使用するStreamlitやVertex AIなどの技術に触れつつ、生成AIによってBigQueryのデータに対して分析を行えることの価値を説明して、具体的なアプリケーションのコードとその実装方法を詳しく解説します。

### Streamlitとは?
Streamlitは、データサイエンティストやエンジニアがわずかなコードで迅速にインタラクティブなデータアプリケーションを構築できる

元記事を表示

PythonでGeminiを呼び出す

# はじめに
本記事では、PythonでGeminiを呼び出すサンプルコードを示します。

# 検証環境
今回は簡単にVertex AI Workbenchでpythonのnotebookを使って試します。
検証では、ユーザーマネージドインスタンスをデフォルトのパラメータで作成して「JUPYTERLAB」を開き、「Notebook」>「Python3」の順にNotebookを開きました。

# 準備
1. 実行に必要なパッケージをインストールします
“`
! pip3 install –upgrade –user google-cloud-aiplatform
“`
2. パッケージを利用するため、再起動します
“`
import IPython

app = IPython.Application.instance()
app.kernel.do_shutdown(True)
“`
3. 必要なライブラリをインポートします
“`
from vertexai.preview.generative_models import (
GenerationConfig,

元記事を表示

AtCoder ABC373 振り返り感想戦(緑コーダーがPythonでA〜D問題まで)

## ABC373 感想まとめ

[AtCoder Beginner Contest 373 – AtCoder](https://atcoder.jp/contests/abc373)

Rated参加し、D問題まで4解答でした。パフォーマンス 1098 で、レーティング 775 → 813 (+38)でした。7/13以来、2ヶ月半ぶりの緑色復帰です。

緑色に復帰したので、この振り返りのタイトルも「ほぼ緑コーダーが…」から「緑コーダーが…」に変更しました。

目先のレーティングには一喜一憂しないようにしているとはいえ、自分の名前のところが緑色になるとやはり嬉しくなってしまいます。

—-

E問題は解けそうで解けなくて、諦めそうになりつつ時間切れまで考えていました。解説を見ていると思っていたよりも難しく、結局今の実力では及ばないレベルでした。しかし、諦めずに考えたメンタル力が、今後どこかで役に立てばいいなと思っていたりします。

## [A – September](https://atcoder.jp/contests/abc373/tasks/abc373_a)

元記事を表示

【集団健康管理】Pythonで検温データを集めてくれるLINEbotを作成

## 目次
– [0. 前回の記事はこちら](#0-前回の記事はこちら)
– [1. 作ろうと思ったきっかけ](#1-作ろうと思ったきっかけ)
– [2. 何ができるの](#2-何ができるの)
– [3. 作り方](#3-作り方)
– [3.1. フォルダ構成について](#31-フォルダ構成について)
– [3.2. サーバーについて](#32-サーバーについて)

## 0. 前回の記事はこちら
【集団健康管理】みんなの検温データを毎日教えてくれるシステム
https://qiita.com/KANEI/items/c4f190bb3a0861a0cc81

## 1. 作ろうと思ったきっかけ
前回と同じで、サークルの人々に毎日の検温を促して健康管理を行いたいっていうのと、それに伴うのデータの管理をさらに効率化したかったんです。

コロナ期の時には似たような LINEbot を使用していたらしいのですが、Herokuの有料化で使わなくなったみたいです……
今回の開発では旧bot ができたことを再現しようと取り組みました。

LINEbot と Python

元記事を表示

OTHERカテゴリの最新記事