Python関連のことを調べてみた2020年01月12日

Python関連のことを調べてみた2020年01月12日

ObjCClassで参照できるクラスを一覧に出す

SceneKit などのように ObjCClass を使って利用できる Objective-C や swift 用のクラスってどのようなものがあるのか知りたくて調べました。

“`python:print_classlist.py

# Python3.6
# List the names of all loaded Objective-C classes.

import objc_util

count = objc_util.objc_getClassList(None, 0)
print( ‘%d classes found:’ % count )

classes = (objc_util.c_void_p * count)()
count = objc_util.objc_getClassList(classes, count)

class_names = []
for cls in classes:
class_names.append(objc_util.class_getName(cls))

class_names.sort()

for b_name in

元記事を表示

日本語自然言語処理で必須の前処理まとめ(Dockerによる環境構築込み)

## この記事でやること
日本語文章で自然言語処理的なことをやる際に, アルゴリズム選択やパラメータチューニングと同等かそれ以上に重要となる前処理。丁寧に色々やりたいとは言え毎回ゼロから同じようなスクリプトを書くのも面倒なので, 毎回必ずやるであろう

– 全角・半角の統一と重ね表現(!!とかーーとか)の除去
– HTMLタグの除去
– 絵文字の除去
– URLの除去
– 記号の除去
– 分かち書き
– 見出し語化

あたりの処理を一発で済ませるために用意した自分なりの秘伝のタレを公開します。
ついでにMeCabの導入やJupyter lab環境の構築もDocker化できたので合わせて載せてます。

## 環境構築編
まずは以下のDockerfileを用意します。gensimやspaCyなど今回の前処理には使わないパッケージも入ってますがお気になさらず。

“`dockerfile
FROM jupyter/minimal-notebook

USER root

## Mecab関連インストール
RUN apt-get update && \
apt-get install

元記事を表示

画像からテキストを抽出した

OCRを使ってPDFや画像ファイルからテキストを抽出するプログラムを書きました。
PDFで送られてくる課題の自動化のことを友達と話したり、また別の友達のレポートをWordに打ち込んだりしていてOCR使った方が楽じゃねって事で、じゃあOCR使ってプログラム書いてみようかなあと思ったのがきっかけです。

# 動作
1. PDFまたは画像ファイルを選択
Tkinter.filedialog.askopenfilenamesを使ってPDFとJPGファイルを選択します。
ファイルは一度に複数選択できるようにします。
2. PDFは画像に変換
PDFから直接OCRは行えないので一度画像に変換します。
popplerとpdf2imageを使っています。
3. 画像からテキストを抽出する
PDFから変換した画像と1で選択した画像からテキストを抽出します。
tesseractとPyOCRを使います。
4. <選択したファイル名>.txtで出力
選択したファイルが、hoge.jpgの場合は、hoge.txtで出力するようにします。

# コード

“`python:mai

元記事を表示

django 環境構築

##前提
Pythonをインストールされていてコマンドが使える。

##仮想環境
仮想環境とはパッケージの導入状態をプロジェクトごとに独立させます。
venvによる仮想環境。
1.まずフォルダを作成してください。
2.その後ターミナル or コマンドプロンプトを使用します。
3.作成したフォルダに入る。

仮想環境作成
環境によっては`3`がいらない場合も!⬇︎

“`
python3 -m venv [newenvname]
“`
仮想環境に入る。
linux,Mac

“`
source [newenvname]/bin/activate
“`
or

“`
.[newenvname]/bin/activate
“`
Windows

“`
.\[newenvname]\Scripts\activate
“`
パッケージのインストール

“`
([newenvname])$ pip install [package name]
“`
仮想環境を抜ける

“`
([newenvname

元記事を表示

AWS Lambda+Twitter APIで駄ツイートを定期的に削除してみた

## 心象
– お気に入りもRTもされない駄ツイートが自動で消える様にしたい。
– なんとなくかっこいいイメージのLambdaを使ってみたい。
– 「Qiitaに投稿しました。」なら駄ツイートにならない。

結果:思いのほか簡単に出来ましたので共有します。

## 必要なもの
### Twitter DevelopersでのApp登録
https://developer.twitter.com

Twitter APIの利用申請の方法については省略します。
今回はAPIの学習目的でツイートの削除を行う旨をTwitter Developersにて申請し、Twitter APIの利用に必要な以下のキーとトークンを取得しました。

– API key
– API secret key
– Access token
– Access token secret

### AWSアカウント
https://aws.amazon.com
使用するサービスは以下です。

– Lambda (Twitter APIへのアクセス)
– Key Management Service (APIキーを格納する環

元記事を表示

code-server オンライン環境篇 (7) git 上のcompose を EC2上に展開する

目次
[ローカル環境篇 1日目](https://qiita.com/kyorohiro/items/35bab591cd4a6b975c80)
[オンライン環境篇 1日目 作業環境を整備する](https://qiita.com/kyorohiro/items/603d6ee693fc2300079e)

[オンライン環境篇 2日目 仮想ネットワークを作成する](https://qiita.com/kyorohiro/items/6f2452ec2a2fe3640979)

[オンライン環境篇 3日目 Boto3 で EC2 インスタンスを立ち上げる](https://qiita.com/kyorohiro/items/32c9b7f9ebfccbeb6ac5)

[オンライン環境篇 4日目 Code-Serverをクラウドで動かしてみる](https://qiita.com/kyorohiro/items/3701fc97f61e94c5ba95)

[オンライン環境篇 5日目 Docker 上で、code-server を立ち上げる](https://qiita.com/k

元記事を表示

QiitaAPIのOauthをDjangoで

#はじめに
QiitaAPIというQiitaを扱うのに便利なAPIがあります。
https://qiita.com/api/v2/docs

これをDjangoで使ってみるサンプルです。

Oauthのみをこの記事では取り扱います(それ以外は単純にリクエスト送るだけなので、、)

以下のURLからアプリケーションを登録します。
https://qiita.com/settings/applications

`Client ID`と`Client Secret`が手に入ります。

#認証周り
##GET /api/v2/oauth/authorize

ユーザーに対して認可画面を表示します。
ユーザーが認可すると、上記のアプリケーション登録で指定したCallbackURLに`code `が付与されます。

他に`scope`と`state`をパラメータで指定します。

スコープに関しては[こちら](https://qiita.com/api/v2/docs#%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97)

stateはCSRF対策のためにリダイレクトするUR

元記事を表示

データサイエンティストの為のおすすめコンペサイト

データサイエンティストを目指す人のキャリア形成に役立つ、コンペサイトを集めました

#Kaggle
![site-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533844/3ea5946e-e7bd-7186-b7f5-4b59cb79ff03.png)

データサイエンティスト界隈で有名なサイトです。
Kaggleと書いて「カグル」と読みます。
世界中のデータサイエンティストが毎日ここで腕を競ってます。
2017年3月8日にGoogleが買収しました。分析を依頼したい
大手企業が賞金をかけており、過去にはメルカリ、リクルートがコンペをしてました。

公式ページ
https://www.kaggle.com

#Sigunate
2020-01-11_23h17_29.png[Python3 入門 4日目] 3章 リスト、タプル、辞書、集合(3.2.7〜3.2.19)

## 3.2.7 append()による末尾への要素追加
リストに要素を追加するための方法として伝統的にappend()で末尾に一つずつ追加していく方法。

“`py
>>> marxes=[“TTTTTT”,”aaaa”,”bbbb”]
>>> marxes.append(“Zeppo”)
>>> marxes
[‘TTTTTT’, ‘aaaa’, ‘CCCC’, ‘Zeppo’]
“`

## 3.2.8 extend()または+=を使ったリストの結合
extend()を使えば二つの**リスト**を結合できる。

“`py

>>> marxes
[‘TTTTTT’, ‘aaaa’, ‘CCCC’, ‘Zeppo’]
>>> others=[“Gummo”,”Karl”]
>>> marxes.extend(others)
>>> marxes
[‘TTTTTT’, ‘aaaa’, ‘CCCC’, ‘Zeppo’, ‘Gummo’, ‘Karl’]
>>> marxes=[“TTTTTT”,’aaaa’, ‘CCCC’]
>>> others=[“Gummo”,”Karl”

元記事を表示

Jupyter学習ノート_004

## [Google colab](https://colab.research.google.com/) にgithubのノートブックを開く方法

以下の手順で実施します。

– 事前にgithubの[リンク](https://github.com/Giffy/MongoDB_PyMongo_Tutorial)を準備する
![MongoDB_PyMongo_Tutorial image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551056/feec8d8d-2273-8de6-c4e0-58358a84c75f.png)

– [Google colab](https://colab.research.google.com/) のメニューからノートブックを新規作成する
注意点:サーチする文字列はgithubのurlの一部(https://github.com/ **Giffy/MongoDB_PyMongo_Tutorial**)で十分です。
![search result](https://qiita

元記事を表示

SudachiPyで偶然短歌を作った話

#偶然短歌とは
wikipediaの文章の中から、偶然57577になっている部分を抜き出して投稿する[twitterのbot](https://twitter.com/g57577)です。
[こちら](https://inaniwa3.hatenablog.com/entry/2015/01/01/152927)の方が2015年に作成されています。
もとのやつはruby+MeCabで出来ているようなので、今回はこちらをPythonとSudachiで焼き直します。
先輩に感謝と尊敬を。

#環境
Windows10 Home (64bit)

python 3.7.4
SudachiDict-full==20191224
SudachiPy==0.4.2

環境はpipenvで構築しました

#なぜSudachiなのか
Sudachiでは分割モードの指定というのができて、できるだけ大きな単位で品詞分解することができる。
MeCabを使うとかなり細かく分解されるので、たとえば、上の句に”東京スカイ”、下の句に”ツリー”とかいうおかしな分割がピックアップされる恐れがある。
Sudachiだ

元記事を表示

【itertools.permutations】Pythonで順列を出す方法

## モチベーション
[AtCoderの問題](https://atcoder.jp/contests/abc150/tasks/abc150_c)をやってて、”辞書順で何番目か”を出したい時、順列を求める必要があった。
例えば、a,b,c,d,eを使って単語を作るとする。
この時、

* 辞書順に並べると、abcdeは何番目か⇨勿論1番前
* じゃあdeabcは??⇨わからん

ってなったのでやり方を学んだので備忘録。

## 環境
* Python : 3.7.5

## やり方
itertoolsのpermutationsを使うとすごい簡単
以下のコードではa,b,c,d,eを使って単語を作り、”abcde”,”deabc”が何番目なのか確認してみる

## Code
“`python

import itertools

abcde_list = [“a”, “b”, “c”, “d”, “e”]
A = list(itertools.permutations(abcde_list))
# →[(‘a’, ‘b’, ‘c’, ‘d’, ‘e’), (‘a’, ‘b’, ‘c’

元記事を表示

ラズパイ4/BusterにROSのmelodicを入れる

#ラズパイ4/BusterにROSのmelodicを入れる

![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) Qiitaに初投稿します。Ninagawa_Izumiです。なにかお役に立てれば。

##やること
ラズパイ4のBusterでROSのmelodicが動くようにします。
各所を参考にさせていただきつつ、とにかくシェルコマンドを打ち続ければOKな方式で記載してみました。
きっと誰もが2020年1月時点での最新のROS環境を導入できるはずです。

##そもそもROSってなんだっけ
ロボットソフトウェアの共同開発を世界規模で推進することを目的としたオープンソースのプラットフォームです。センサやアクチュエータなどの情報やシミュレータなどを統合的に扱えます。

##準備物・実施環境
– Raspbian-Busterが導入済みのRaspberry Pi 4
– debian_version

元記事を表示

[NNabla]学習済みモデルの中間層に量子化レイヤーを追加する方法

# はじめに
 qiitaへの4回目の投稿です。(article4)
 [前回](https://qiita.com/__NJ__000/items/c0c24f15bb1253323c0a)に引き続き、私がnnablaを使っていた中で「こういう情報がqiitaとかにあったらよかったのに」と思いながらなんとか気合いで[nnablaのreference](https://nnabla.readthedocs.io/en/latest/)と`dir()`(pythonの標準関数。引数のメンバ変数・関数を返してくれる)で見つけてきたことについてまとめます。
#1. 要件
・OS: macOS Catalina (バージョン 10.15.1)
・python: 3.5.4
・nnabla: 1.3.0
#2. 学習済みネットワークの準備
 今回は[nnablaの学習済みモデル](https://blog.nnabla.org/ja/release/v1-0-20/)の中から、下記のようにしてMobileNet_v1を使用します。

“`article4_add_quantization_fo

元記事を表示

TensorFlow2.1が来た!

# はじめに

こちら、Tensorflow2.0のアドベントカレンダー最後の記事になります。(大遅刻)
Tensorflow2.0がリリースされた!と思ってたら次にTensorflow2.1がもう来ていたので、
ここに変更点や進化したポイントを[ReleaseNote](https://github.com/tensorflow/tensorflow/releases)に基づいて書きます。

# メイントピック

* GPUパッケージ統合
* Cloud TPUサポート
* Ragged TensorのDatasetサポート
* Python2での最後のリリース

# GPUパッケージ統合

Tensorflow2.1からは、わざわざtensorflow-gpuを入れていたのがなくなり、
`pip install tensorflow`だけでtensorflowがGPUサポートになります!
これで、混乱などもなくなり、よりスマートな印象になりましたね。

# kerasAPIのCloud TPUサポート

GCPにはCloudTPUという機能があります。Colabratoryにも一応

元記事を表示

Jupyter学習ノート_003

## japanmap(日本地図)のサンプル
地図に関するものに興味があるため、「[japanmap](https://pypi.org/project/japanmap/)」というパッケージを利用して試しました。

下記の手順です。
[Google colab](https://colab.research.google.com/)にはjapanmapがデフォルトインストールされないため、毎回新しいノートブック作成時には、japanmapを再度インストール必要です。

– japanmapをインストールする(1回目のみ実施する)
– 1回目のインストール
![first install](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551056/b313f90c-1ca6-f2ae-0e2d-fae1210baad6.png)
– 2回目のインストール
![japanmap install](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

デコレーター1

“`python:1
def print_info(func):
def wrapper(*args, **kwargs):
print(‘start’)
result = func(*args, **kwargs)
print(‘end’)
return result
return wrapper

def sum(a, b):
return a + b

f = print_info(sum)
r = f(10, 20)
print(r)
“`

“`:1の実行結果
start
end
30
“`

print_info関数がデコレーターで、
sum関数をデコレートしている。

1の書き方だと分かりにくいので
以下の様に書いた方がわかりやすい。。。

またデコレーターは再利用できるので、
それを踏まえて。。。

“`python:2
def print_info(func):
def wrapper(*args, **kwargs):
print(‘start’

元記事を表示

bitflyerの完全なティックデータを取得する

#はじめに
久しぶりにbitflyer lightningにログインした。
仮想通貨は大盛りあがりを見せたあの”2017年”以降、保持し続けているのだが、トレードはしていない。
lightnigの最終取引額の目まぐるしい変化を見て、”可能性”を感じてしまい、久しぶりにトレードをしたくなった。
スクリーンショット 2020-01-11 8.49.19.png
#再開
以前は裁量取引をしていたが、2度とやろうとは思わない。その精神的な負荷に耐えられるメンタルを持たないためだ。
従って自動売買システムを構築する必要がある。
そこでまず必要になるのはトレードロジックの判断基準となるデータである。
#API
APIとは簡単に述べると、URLを叩くと特定のデータ(最新のBTCの値など)にアクセスできる、特定の命令(BTCの買い

元記事を表示

bitflyerの板情報を簡単に表示する

#動機
bitflyer lightningに指値で注文する際に最も約定しやすい価格を知る

#Code

“`python:板情報取得.ipynb
import requests
import json
import matplotlib.pyplot as plt
%matplotlib inline

baseurl = “https://api.bitflyer.jp”
pathurl = “/v1/board”
params = “?product_code=FX_BTC_JPY”
url = baseurl + pathurl + params

response = requests.get(url).json()
#ASKS
sizes = []
prices = []
for res in response[‘asks’]:
sizes.append(res[‘size’])
prices.append(res[‘price’])

print(“MIN ASKS:” + str(min(prices)))
plt.plot(sizes,pric

元記事を表示

APIを利用するときにはconfigparserを利用する

#困っていること
pythonでbitflyer lightningの証拠金残高を確認したいが、API_KEYとAPI_SECRETは決してソースコードにべたがきしたくない。

#解決策
別途config.txtを用意しておき、API_KEYとAPI_SECRETを記載する。
configparserを使う。
https://docs.python.org/ja/3/library/configparser.html

“`text:config.txt
[bf]
api_key = <ここにAPI_KEYを入力>
api_secret = <ここにAPI_SELECTを入力>
“`
“`python:証拠金取得.py
import configparser
import hmac
import datetime
import hashlib
import requests

config = configparser.ConfigParser()

config.read(‘./config.txt’)
API_KEY = config[‘bf’][‘api_key’]
API

元記事を表示

OTHERカテゴリの最新記事