Python3関連のことを調べてみた2021年12月23日

Python3関連のことを調べてみた2021年12月23日

Pythonによる自然言語処理入門 -形態素解析-

こんにちは
アドベントカレンダー22日目です。
[HCB Advent Calendar 2021](https://qiita.com/advent-calendar/2021/hcb-2021)

今日はPythonによる自然言語処理について書きたいと思います。

## 初めに
今回は、Macを使用している方をメインターゲットとしてPythonによる自然言語処理の記事を書きたいと思います。

最近初めて自然言語処理をしたのですが、「Macを対象とした記事があまりないな… 特に最近出された記事がないな」と思ったので書かせていただきます。

## 想定している読者
今回本記事で想定している読者は、Macを使用している方です。
また、辞書としてMeCabを使用します。
(MeCabってなに?という方はこのまま読んでいただけるとわかると思います。)

## 目次
– 初めに
– 想定している読者
– 環境構築
– 形態素解析
– 辞書の追加
– 頻出語句の抽出
– 終わりに

## 環境構築
**注意:今回はPythonの環境構築は割愛させていただきます。**

今回は、形態素解析器と

元記事を表示

リアルタイムの加速度記録から長周期地震動階級を計算する

この記事を開いていただきありがとうございます。 地震界隈 Advent Calendar 2021 22日目の記事です。私は日本語に翻訳するために最善を尽くしましたので、ご理解いただければ幸いです。

#はじめに

東日本大震災後、高層ビルの被害を特徴づける新たな規模が必要であることが明らかになりました。確かに、震源域から数百キロメートル離れた大阪市内(最大震度3)の超高層ビルで大きな揺れが発生し、エレベータの停止や閉じこめ、内装材等の破損が生じた [1]。
超高層ビルは低周波(=長周期 > 1.6秒)と共鳴する可能性のある背の高い構造物であるため、この損傷は長周期地震動 (英語 : Long-period ground motion, LPGM) によるものでした。震度階級は1秒以下の周期を考慮しているため、長周期地震動の特徴づけには適していません。これらの理由から、気象庁は長周期地震動に関する研究会を開きました。
その後、「気象庁長周期地震動階級」の4段階を設定することが決定されました :

![長周期地震動階級.png](https://qiita-image-store.s3

元記事を表示

oTreeでオンライン実験をした時に苦労したこと&カスタマイズ(覚書)

# oTreeとは

oTree はオンライン実験を作ることができるDjango をベースにしたフレームワークです。Python(変数や関数の管理) と HTML(+JS+CSS:ページのデザイン)で作ります。
特に、囚人のジレンマ・公共財ゲームのような、複数のプレイヤーがリアルタイムで相互作用する行動実験を作るために使われている印象です。

oTreeの紹介自体は他の記事に任せることにして、ここではオンライン実験を実施した時に苦労した&工夫したポイントなどをダラダラ記していきます。気が向いたら情報を更新するかもしれません。

* 入門者は後藤晶さんのチュートリアル資料が素晴らしくわかりやすいので、これを参照するとスムーズに始められます。

https://github.com/akrgt/otree_2019KG

* 最近(2021年9月)、公式ドキュメントが日本語訳されたので、日本人ユーザにも優しくなりました。

https://otree.readthedocs.io/ja/latest/index.html

* otree help & discussionを参照す

元記事を表示

集合の基礎部分を絡めたSymPy操作

集合のごくごく基礎(表面的なところ)を勉強・復習を兼ねてPythonとSymPyの各インターフェイスで扱っていきます。

※記事執筆者は理系出身ではなく数学や用語などで色々粗い点等はご容赦ください。

# 使うもの

– Python 3.9.0 (一部3.8や3.9など特有の型アノテーションの機能も使っています)
– SymPy 1.9
– Jupyter (VS Code上のものを利用)

※SymPyは以下のようなコマンドでインストールすることができます。

“`
$ pip install sympy==1.9
“`

また、SymPyの基本に関しては以前記事にしたのでそちらも必要に応じてご確認ください。

https://qiita.com/simonritchie/items/44242479f0df86fffff5

# 集合のPythonビルトイン上での扱い方

Pythonビルトインでは集合を表すには`{}`の括弧を使います。辞書と同じ括弧ですが、(辞書のキーと値といったように)コロンは使わずにコンマ区切りで表現します。

たとえば10, 20, 30の3つの値か

元記事を表示

MATLABからPythonライブラリを利用できた話

# 初めに
## この記事について
MATLABとPythonは似ている言語といわれますが、それぞれ得意な分野、不得意な分野があります。
ですからどちらを使うか迷うこともしばしばあります。

一つの解決策は、どっちの言語を使うほうがいいかメリットとデメリットを比べて、どちらか片方の言語を使うことです。
しかし、どうしても両方の良さを活かしたいこともあるでしょう。
そんな時には、MATLABからPythonを呼び出してしまいましょう。

例えば、機械学習を実行したいけれど、MATLABで未対応である場合やツールボックスの購入が必要な場合があります。
そのような場合には、学習データの準備と学習結果の評価をMATLABで実施し、学習自体はPythonで無償のパッケージを利用して実行することができます。

今回は、MATLABをベースにしてPythonを利用するときに役立ちそうな情報をピックアップしてまとめてみようと思います。

:::note info
実は同じ趣旨の記事を約2年前に書いています。
その記事は今でも定期的に閲覧がありますが、本記事執筆時点では状況が少し変わっているようです。

元記事を表示

Kaggle入門〜Titanicに挑戦〜

# データ分析をしてタイタニック号の生存者を予測する

## はじめに
この記事ではPythonを用いて、Kaggleのチュートリアルとして有名なTitanicの生存者予測問題をに挑戦していきたいと思います。

>Kaggleとは、世界中の機械学習・データサイエンスに携わっている約40万人の方が集まるコミニティーです。企業や政府が競争形式で課題を提示し、賞金と引き換えに最も制度の高い分析モデルを買い取る「Competetion(コンペ)」というクラウドファウンディングのようなものを開催しているのがKaggleの特徴です。
[参考記事 – Kaggleとは?機械学習初心者が知っておくべき3つの使い方](https://www.codexa.net/what-is-kaggle/)

簡単に言えば、タイタニック号の乗客情報から船の沈没後にその人が生き残ったのか或いは亡くなってしまったのかを予測していきます。

## 事前準備

[GoogleColab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)を使って

元記事を表示

Raspberry PiをつかってNASアクセス式高解像度デジタルフォトフレームをつくろう.

#はじめに
**デジタルフォトフレーム**は2010年頃に登場した画期的な商品です。

![41TV4VNJFHL._AC_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629378/1421f118-0ac8-acd4-9309-387e1259dd15.jpeg)

それまで、撮った写真は焼いて飾っても額縁に一枚限りです。その他はアルバム化する必要がありましたし、そもそもよっぽどのことがないと見返すことはありません。

その点デジタルフォトフレームでは、保存した写真が自動でスライドショー化され、ふとした時に何かを思い出す最高のコンテンツといえます。

しかしながらこのフォトフレーム、思いのほか**低解像度**で**低容量**、いちいち写真をSDカードに入れたりクラウドにアップロードする**面倒な仕組み**から、あまり世間に浸透することはありませんでした。

(~~そもそも現代において写真とは詐欺と欺瞞と加工の事を差し、自己承認ツールの一部になってしまったためにフォトフレームを必要とする時代ではな

元記事を表示

自作フォントの回転、パディングを機械学習で自動調整する

この記事は [ドワンゴ Advent calender 2021](https://qiita.com/advent-calendar/2021/dwango) の20日目の記事です。

あなたはフォントが好きですか?
フォントは日陰ながらも縁の下の力持ちです。使うフォントでページの印象がガラッと変わりますね。リピーターになるかも、売り上げも変わります。フォントにこだわりたいところです。

# モチベーション

私はフォントを作るのが趣味で、芸術的な(よく言えば)フォントをちまちまリリースしています。回転率、パディングなどの微調整に関してはこだわらずに適当に設定してしまっていますが、こちら機械学習により先人の叡智を拝借して、いい感じにできないかと。

# 事前準備

## 自作フォント(回転・パディングの調整なし)を作成する

元データは様々な文字が紙に書かれた状態です。
こちらから各文字(以下グリフ)を画像に別々に書き出します。
![law1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33738/

元記事を表示

GUIで時系列データのグラフを作成してみた。

#環境
Python version:3.9.7
OS: windows 10.0
Anaconda:conda 4.11.0
※PySimpleGUI、dataframe_image は、condaのライブラリに標準で入っていなかったので、追加した。

#実装したかった、やりたかったこと
・集計したいcsvファイルをGUIで選択する。
・logをまとめるフォルダを作成し、新規で作成したデータを保存する。保存したフォルダを開く。
・3つのグラフを同じ時系列でまとめる。
・describe(count,mean,std,min,25%,50%,75%,max)データの表をつくること。
・defを使ってみる。
・GUIに作成したファイルを出力する。

#課題
・matplotlibを使用して表を作成する。dataframe から簡単に作成できると思ったが、よくわからなかった。
 dataframeを作成し、csvファイルを作ることにした。
 追記、dataframe_imageを使用し、作成した。

#code
“`python:type_1.1.py
import PySimple

元記事を表示

paiza予想をPython3で解く

##はじめに
今日も初学者がpaizaで遊ぶ。

問題の全文は下記から確認できる。
変数名は基本的にpaiza解答例順序で、自分用に見やすくしたい部分などは変えたりしている。

https://paiza.jp/works/mondai/prime_number_primer/prime_number_primer__paiza_conjecture

#問題文

>今の時点でゴールドバッハ予想(「全ての 3 よりも大きな偶数は 2 つの素数の和として表すことができる。」)に反例がないことを知った paiza 君は、
>自分もそれっぽい予想を言えば数学界に名を残せるのではないかと思い、正しいかもわからない次の paiza 予想を立てました。

>「全ての 3 よりも大きな平方数は 2 つの素数の和として表すことができる。」

>この予想が正しいかどうかを検証するために、4 以上 10^8 以下の平方数(9999 個)の中に paiza 予想を満たさないものが存在するかを調べましょう。

数字大好き人間なら一度は予想を妄想するものなのだろうか、paiza君は自分では証明したくないようなの

元記事を表示

作業の進捗を定期的にTwitterで呟くアプリをPythonで作ってみた

タイトルの通り作業の進捗を定期的にTwitterで呟くアプリをPythonで作ってみました.
自分がサボりやすいのでフォロワーに監視してもらいたいのと,作業量を可視化したいのが目的です.

ということで早速コードをどーん,と置きたいのですが丸々置くと邪魔なのでGithubのリンク:[ProgressTweet](https://github.com/kurumethreestars/ProgressTweet)を置いておきます.
主要部分だけ置いておくと,

“`Python
import time
import tweepy
from tweepy import api
import datetime

if __name__==’__main__’:
char_num = 0
num_diff = 0
consumer_key,consumer_secret,access_token,access_token_secret = getAllKeys()
auth = tweepy.OAuthHandler(consumer_key,consumer

元記事を表示

BlackをPython 3.10で使う

# tl;dr

* コマンドライン `black 〜 –target-version py310`
* pyproject.toml

“`pyproject.toml
[tool.black]
target-version = [‘py310’]
“`

# はじめに:Blackはデフォルトだとmatch文のparseに失敗する

Python 3.10になりmatch文が追加されました。
Blackも21.11b1から対応しましたが、デフォルトだとmatch文のparseに失敗するようになっているため、match文を含むソースコードファイルのフォーマットに失敗します。

# 解決:実行時オプション `target-version` をつける

target-versionをつけましょう。

“`bash
black 〜 –target-version py310
“`

Poetryを使っていてpyproject.tomlに設定値を書いている場合は

“`pyproject.toml
[tool.black]
target-version = [‘py310’]

元記事を表示

今年も全力で間違えていくアプリ開発 ~シェフの気まぐれクソアプリGCP添え~

まだ、日付回ってないから、 ⊂(^ω^)つセフセフ

## 挨拶
はじめましての方ははじめまして
ご存知の方はそうだよヒズミさんだよ

注釈:この記事は2割ネタです。
著者は、本気で「謙遜でクソアプリって言ってるんじゃねぇ!!○ソが!」と思っているわけではありません。

なので、ニコニコ笑顔で、?中指?を立てながら、お楽しみください。(鼻ホジ

## 前置き

今年もこの季節がやってきましたッ!!
才能の無駄遣いの祭典!クソアプリアドベントカレンダー!
馬鹿どもの作品をまっていたあああああああああああああああああ!!!
あああああああああああああ↓↓↓
今年も、自分のアプリがウルトラ恥ずかしいくらいに、神ばかりでございます。
日本の未来は、明るいな。

毎年、毎年、誰に頼まれたわけでもなく、我が物顔でクソアプリをつくっております。

## 今年は違うね?

ええ、シリーズものは3作目でダレるのが世の常です。
毎年、間違っている!というのもみなさん求めていないのでは・・・?と、思いまして。
いわゆる、テコ入れと言うやつですね☆ヤバいですね☆

## こちら、シェフの気まぐれクソアプリG

元記事を表示

【Python】SQLAlchemyを試してみる

ものすごく今さらな感じがするのですが、最近Pythonを書く機会が増えてきたので、有名どころのORM、SQLAlchemyを試してみようと思います。
DBはMySQLです。

# インストール
SQLAlchemyを利用するには、それ自体のインストールと利用するドライバのインストールが必要になります。
今回はMySQLなので、mysqlclient をドライバとして利用します。
[SQLAlchemy | Engine Configuration – MySQL](https://docs.sqlalchemy.org/en/14/core/engines.html#mysql)

“`bash
pip install mysqlclient SQLAlchemy
“`

# エンジン

SQLAlchemyはEngineと呼ばれるオブジェクトがコネクションプールとして働き、DBとのコネクションの中心となります。
Engineはグローバルなオブジェクトとして一度だけ定義します。
※ Webの場合、リクエストごとに作成せず、ワーカープロセスごとに1つだけ作成すると理解しました。

[

元記事を表示

for文(繰り返し処理)

# 今回の授業資料

# 本日の内容
どんなプログラミング言語に限ら

元記事を表示

CDK(Python)を使ってEC2作成してみた

CloudFormationを最近触り始めた私がAWS CDKを使ってEC2作成まで挑戦します

# 前提条件
以下インストールされていること
Python3
aws cli
aws cdk

# app作成
以下を参考にapp作成していきます

https://docs.aws.amazon.com/cdk/latest/guide/hello_world.html

“`shell
$ mkdir cdk-app
$ cd cdk-app

$ cdk init app –language python

$ source .venv/bin/activate
$ python -m pip install -r requirements.txt
$ cdk bootstrap

“`

成功するとこんな感じにファイルができます

“`shell
$ ls -a
. .venv cdk_app tests
.. README.md requirements-dev.txt
.git app.py requirements.txt
.gitignor

元記事を表示

AWS Lambda Powertools Pythonをまとめてみた。AWS Lambda Powertools Python 〜概要編〜

# AWS Lambda Powertools Pythonとは
[AWS Lambda Powertools Python](https://awslabs.github.io/aws-lambda-powertools-python/latest/) は、AWS Lambda関数用のユーティリティースイートで、トレース、構造化ロギング、カスタムメトリックスなどのベストプラクティスの導入を容易にします。 AWS Lambda Powertools (python) は、AWS Lambda関数の実行環境とサポートされているランタイム専用に最適化されています。Core Utilitiesの使い方については、こちらの[Blog](https://aws.amazon.com/jp/blogs/opensource/simplifying-serverless-best-practices-with-lambda-powertools/)にも書かれています。

## インストール方法
Powertoolsは以下の方法で利用可能です。

– Lambda Layer: arn:aws:lam

元記事を表示

Python clickの案外知られていない機能

# Python clickの案外知られていない機能

Pythonには[click](https://click.palletsprojects.com/en/latest/)というコマンドラインパーサとして使えるライブラリがあります。同様のライブラリとして以前から[argparse](https://docs.python.org/ja/3/howto/argparse.html)がありますが、clickはargparseよりももっと簡単に使えるライブラリです。
clickでコマンドラインパーサを書く例は以下になります。

“`python
# main.py
import click

@click.command()
@click.option(
“–count”,
type=int,
default=1,
required=True,
help=”Number of greetings.”,
)
@click.option(
“–name”,
type=s

元記事を表示

Pythonを用いた数値積分

#はじめに
 Pythonの使い方に慣れるため,色々な記事を参考にしながら,Pythonを使った簡単な数値積分の方法をまとめてみました.
 今回は 例として,$\int_{a}^{b}x^2dx\quad a=0,b=3\hspace{5pt}$の積分を行います.

#目次
1.[ SciPy,Sympyを使用する方法](#scipysympyでの数値積分)
・[定積分](#定積分)
・[不定積分](#不定積分)

2.[ ライブラリを使用せずに求める方法](#ライブラリを使用せずに求める方法)
・[区分求積法](#区分求積法)
・[台形公式](#台形公式)
・[シンプソン法](#シンプソン法)

#SciPy,Sympyでの数値積分

Scipyでの積分方法の例

|種類||
|:—:|:—:|
|quad|求積法(1変数)|
|dblquad|2重積分|
|tplquad|3重積分|
|trampz|台形公式|
|simps|シンプソンの公式|

普通,関数の積分にはquad

元記事を表示

python –versionの出力は、python3.4からstdoutに出力されるようなっていた

少しハマったのでメモです

`python –version`の出力は、python3.4からstdoutに出力されるようなっていた

検証コード

“`python:test.py
import subprocess
ret = subprocess.run(“python –version”, shell=True, stdout=subprocess.PIPE , stderr=subprocess.PIPE ,encoding=”utf-8″)
print(ret)
“`

“`python:python2.7の場合
python3 test.py
CompletedProcess(args=’python –version’, returncode=0, stdout=”, stderr=’Python 2.7.17\n’)
“`

“`python:python3.7の場合
$ python3 test.py
CompletedProcess(args=’python –version’, returncode=0, stdout=’Python 3.

元記事を表示

OTHERカテゴリの最新記事