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

Python関連のことを調べてみた2020年11月28日
目次

3. Pythonによる自然言語処理 3-2. TF-IDF分析[小説にみる特徴語の検出]

* TF-IDFによるモデルを考えるとき、ドキュメントの単位をどのように設計するかが大切です。
* なぜなら、あるドキュメントを特徴づけるのは他のドキュメントとの異同であり、言い換えれば、複数のドキュメント間で相対化されてはじめてドキュメント毎の特徴が明確になります。
* 逆を言えば、かりに一つの小説の中の各文章をドキュメントの単位とした場合、同じ筆者、同じテーマについての文章ですからほとんど差異はなく分析するに値しないといえます。
* そこで試しに、小説3作品をドキュメントの単位として、scikit-learnを利用してTF-IDF分析を行ないます。

#⑴ ライブラリのインポート
* まずドキュメントを取得するためのライブラリですが、[青空文庫](https://www.aozora.gr.jp/)を利用する前提です。

“`python
import re
import zipfile
import urllib.request
import os.path
import glob
“`
* 形態素解析エンジンMeCabをインストール、及びインポートし

元記事を表示

【Semantic Segmentation】DeepLab(v3) : DeepLab(v2)との違いは?

背景

[DeepLab(v1)](https://qiita.com/minh33/items/8eb31d16a975d2a87de5),[DeepLab(v2)](https://qiita.com/minh33/items/23030207de240edecc15),[DeepLab(v3)](https://qiita.com/minh33/items/deb7765ca064f1b0477b)を調べたから最後にDeepLab(v3+)を要約しupdateについて比較していきたいと思う。
全部読むの大変だった(T_T)

version3からのupdate

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/52e65f12-b4ce-6d9b-35f1-e2e91cc2383e.png)

DeepLabv3では(a)のEncoderのみで1/8のサイズのSemantic Mapを8倍にinterpolationして最終出力としていた

元記事を表示

今日の積み上げ(メモ)python -じゃんけんプログラムの関数

本日の学習6:30~8:30

def print_hand(hand, name=’ゲスト’):

hands = [‘グー’,’チョキ’,’パー’]

print(name + ‘は’ +hands[hand] + ‘を出しました’)

print(‘じゃんけんをはじめます’)
player_name = input(‘名前を入力してください:’)

print(‘何を出しますか?(0: グー, 1: チョキ, 2: パー)’)

player_hand =int(input(‘数字で入力してください:’))

if player_name == ”:

print_hand(player_hand)
else:

print_hand(player_hand, player_name)

int関数で整数化したinput関数の戻り値を変数player_handに代入しその変数を定義した関数print_handの第一引数に割り当てるのが味噌でした。

本業の仕事を昼までしたらまたお昼からぼちぼち遊びます。

元記事を表示

【Semantic Segmentation】DeepLab(v3) : DeepLab(v2)との違いは?

背景

[DeepLab(v2)](https://qiita.com/minh33/items/23030207de240edecc15)を調べたから次はDeepLab(v3)のupdateについて比較していきたいと思う。

version2からのupdate

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/6e9158d7-2965-0e8d-0c16-657b6ecfb00f.png)

DeepLab(V2)ではDilated conv が4種類rate=(6,12,18,24)とあったが大きなrateになると、filterが大きすぎて端っこの情報しか畳込んでいない事に気づきrate=24を削除した。
さらにImage Pooling(average pooling)と1×1 convolutionを足すことで画像サイズを多様化させた。

![image.png](https://qiita-image-store.s3.ap-

元記事を表示

Python。バックスラッシュでも、さすがに、識別子は複数行に分割できません。

#概要
Python。バックスラッシュでも、さすがに、識別子は複数行に分割できません。
リファレンスにその旨書いてますが、、、
ぱっと、そう読めないかもしれないので、記事にします。

#リファレンスの記載

以下、リファレンス

https://docs.python.org/ja/3.6/reference/lexical_analysis.html

引用。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342207/cee1af82-11d5-7323-877f-c6ee740b9bf7.png)

テキストとして引用すると、

>バックスラッシュが文字列リテラル中にある場合を除き、バックスラッシュの後ろにトークンを継続することはできません (すなわち、物理行内の文字列リテラル以外のトークンをバックスラッシュを使って分断することはできません)。

**んんんん。これで、識別子を割れないと、ぱっと理解できるかな??**

#念のため、識別子をわってみた。

“`
>>>
>>

元記事を表示

Youtubeのコメント欄をWordCloudで可視化する

## はじめに
チャンネルや動画によってコメント欄にも個性があって、見ているのが楽しいのでWordCloudで可視化してみました。

## 動作環境
* Python 3.6.8
* YouTube Data API ※使用前に登録が必要。
* WordCloud

## 実装内容
* コメント取得
* Youtube Data APIを使用してコメントとそれに対するリプライコメントを取得する。
* コメント以外の情報(コメントした人のID等)は取得しない。

* WordCloudでの可視化
* コメントの名詞部分だけを取り出し、可視化する
* 最終的には「VideoIDを指定するだけでWordCloudで可視化できる」ものを作る
* [補足]:https://www.youtube.com/watch?v=[ここがVideoID]

## ソースコード
※一部省略

“`python:
import json
import re

import pandas as pd
import requests

import colle

元記事を表示

Google Cloud FunctionsからNature Remo APIを叩いて部屋の温度や湿度を記録する。

# はじめに
Nature Remoは赤外線を利用して普通の家電をスマート家電にするスマートリモコンです。
テレビ、照明、エアコンなどをスケジュールや条件でオン、オフできたりする製品ですが、
温度、湿度、照度、人感センサーなどが搭載されており、
公式のAPIが公開されているので、APIを叩いて取得してみることにします。
また取得した情報を、継続的に記録していくための仕組みも構築してみます。

# 構成
– Google Cloud Functions (Python 3.7)
– Nature Remo API
– Google BigQuery

構成は単純ですが、APIを叩いて情報を取得しDBに書き込むプログラムを
GoogleCloudFunctionで定期的に動かす、というつくりです。

Pythonは使い慣れているからという理由ですが、JavaやNode.jsなども対応しています。

データベースは、APIで取得したJSON形式のままFirestoreに保存する方法もありますが、
実際やってみたところ、後々のデータ可視化で面倒ということがわかったので、
表形式のBigQuer

元記事を表示

matplotlibを使ったpythonジョブでsshサーバーを抜けたあとでもエラーが出ないようにbackendをうまく切り替える

# エラーになる条件

以下のmatplotlibで図を保存するpythonコードを考える。

“`py:check.py
import time
import matplotlib
import matplotlib.pyplot as plt

# あとでsshサーバーを抜けるための猶予
time.sleep(10)

print(matplotlib.get_backend())

fig = plt.figure(figsize=(3.0, 3.0))
plt.plot([0, 1, 2, 3], [0, 1, 2, 3])
plt.savefig(“hoge.png”)
“`

このコードを

“`console
$ python3 check.py
$ python3 check.py $
“`

のように普通にフォアグラウンド、バックグラウンドで実行しても問題なく図は保存される。
しかしながら、sshサーバー上で次のようにバックグラウンドジョブで投げたあとにサーバーを抜けるとtkinterのdisplay周りのエラーで落ちる(sshの-Xや-Yオプション関係なく

元記事を表示

Pythonでエクセルを操作する

記事を書く経緯

Pythonを相変わらず学習しています。Pythonはよく「自動化ができる」、「Excel操作ができる」という話しを聞くので他の言語でもExcel操作はできますが、私が一番親しい言語のPythonでExcel操作をしていきたいと考えました。

また、学習は楽しくするのが大事だと思うので今後の展開も考え、自分が好きなアイドルグループ「日向坂46」のメンバーの情報を利用します。

1. 準備

まずは準備です。PythonでExcel操作をするためにはopenpyxlというライブラリが必要なので「pip」コマンドでライブラリをインストールしていきます。

“`
pip install openpyxl
“`

その後 「pip list」コマンドを打って openpyxlがあれば成功です。

2.使ってみる

Excelファイルはこのようになっています

| 名前 | 誕生日

元記事を表示

MatplotLibでループして図を書き、あとからX軸を変更する

#目的
MatplotLibにてループでfigureを描く場合に、あとから軸を修正する方法を記述

#動作環境
Python 3.7 (Anaconda) Spyder

#方法
axesを保存しておいて、あとからaxes.set_xlim(start,end) で変更すれば、軸をあとから修正
できるらしい。
ウインドウが別枠で出ない場合は、コンソール上で %matplotlib qt と打つ

#実行コード
“`python

import matplotlib.pyplot as plt
import numpy as np

plt.close(‘all’)

#Make Data
Time =np.arange(0,1,0.001);
Data = np.sin(2*np.pi*10*Time);

#3回のループで3つのFigureを描画
fig = {}
ax ={}
for idx in range(1,4):
fig[idx] = plt.figure()
ax[idx] = plt.subplot(311)
plt.plot(Time,

元記事を表示

PDF・Word・PowerPoint・Excelファイルからテキスト部分を一括抽出するメソッド

##1. 実行時に走らせるコード

“`Python3:
from text_from_string_files import *
from pprint import pprint

pprint(func_dict)
# 実行結果
{‘docx’: ,
‘pdf’: ,
‘pptx’: ,
‘xlsx’: }

result = get_filename_text_dict(func_dict)
print(result.keys())
pprint(result[‘あるKeyの文字列’])
pprint(result)
“`
__返り値__は、__以下を要素に持つ辞書(*dict*)型オブジェクト__です。

元記事を表示

python でKMPの前処理テーブルを書く[備忘録]

# イントロ
競プロの問題でKMPを書いたので備忘録

今まで書いたことがなかった割にはアルゴリズムは単純で、一方で少し混乱するところもあったのでそこに関しても記述する

# KMPalgorithmとは
>クヌース–モリス–プラット法(Knuth–Morris–Pratt algorithm、KMP法と略記)とは、文字列検索アルゴリズムの一種。テキスト(文字列)Sから単語Wを探すにあたり、不一致となった位置と単語自身の情報から次に照合を試すべき位置を決定することで検索を効率化するアルゴリズムである。
[wikipediaの説明](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%8C%E3%83%BC%E3%82%B9%E2%80%93%E3%83%A2%E3%83%AA%E3%82%B9%E2%80%93%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E6%B3%95)より

文字列から単語(モチーフ)を検索する際にだいたいBrute-forthの次に説明されるアルゴリズムな気がします。
そこからBM法、Z-alg

元記事を表示

位相空間の数え上げをbit演算で行う

# 位相空間の定義

 [位相空間](https://ja.wikipedia.org/wiki/%E4%BD%8D%E7%9B%B8%E7%A9%BA%E9%96%93)(≒開集合)は以下のように定義される。

$$
1. \varnothing,X \subseteq \mathcal{O} \\\
2. \forall O_1,O_2 \in A : O_1 \cap O_2 \in \mathcal{O} \\\
3. \forall [O_\lambda]_{\lambda \in \Lambda} : \bigcup _ {\lambda \in \Lambda} O _\lambda \in \mathcal{O}
$$

 要は、集合の集合(ややこしいので集合**族**と呼ぶ)において、お互いの和集合または積集合がまた同じ集合族に属するようなもののことである。

 例えば$a,b,c$が全要素である場合、

$$
(\varnothing),(b),(a,b),(b,c),(a,b,c)
$$

 は位相空間である(※$\varnothing$は空集合)。$(a,b)

元記事を表示

yukicoder contest 276 参戦記

# yukicoder contest 276 参戦記

## [A 1298 OR XOR](https://yukicoder.me/problems/no/1298)

C = N とすると、求める A, B の条件は A or B = N, A xor B = 0 となる. つまり、N を2進数で考えた時に立っているビットが A と B のどちら片方で立っていれば条件を満たせる. そのようなものの一つとして、N の MSB だけ落とした整数と、N の MSB だけが立った整数がある. ただし、前者は N が MSB だけが立っている場合には 0 となってしまうので、答えとならない.

“`python
N = int(input())

c = -1
t = N
while t != 0:
c += 1
t >>= 1

B = 1 << c A = N ^ B C = N if A == 0: print(-1, -1, -1) else: print(A, B, C) ``` ## [B 1299 Random Array Score]

元記事を表示

pythonによるスクレイピング&機械学習をtensorflow2で動かしてみた

前提条件

対象

この記事は、Webエンジニア向けです。
私自身Webプログラマでして、機械学習を仕事に活かせないかと考えるために勉強しつつ書いたものになります。
それと、「

PyTorchベースの計算化学用ディープラーニングライブラリOpenChem

#はじめに
化合物でディープラーニングといえば、DeepChem (https://deepchem.io/) や Chainer Chemistory(https://chainer-chemistry.readthedocs.io/en/latest/) が有名だが、今回OpenChemというライブラリを紹介したい。

#OpenChemとは
計算化学およびドラッグデザイン研究のためのディープラーニングツールキットである。PyTorchをバックエンドに使用しており、ライセンスはMITライセンスである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/fa5a903b-2e7c-1598-fc88-0b220de7305c.png)

#どんな特徴があるの?
その特徴として以下があげられる

– モジュラー設計により、設定ファイルのみでモジュールを簡単に組み合わせて構築することができる。
– マルチGPUをサポートしており、高速に学習することができる。
– データ前処理の

元記事を表示

Python 基本文法

#1. 基本構文

##1.1.print関数
文字列を画面に出力したいときに、print関数を使用する。

“`Python:print関数
print(“Hello World!”)
“`

##1.2.コメント
Pythonでは「#」がコメントとして表記される。
複数行をコメントしたい場合はダブルクォーテーションで囲むか、シングルクォーテーション3つで囲む。

“`Python:コメント
# 行コメント

 複数行コメント1

”’
 複数行コメント2
”’
“`

##1.3.変数
宣言や代入は以下のように記述する。
>変数名 = 値

Javaのように変数の前に型を宣言せず、値の形によって変数の型が決まる。

“`Python:変数
#int
var_int = 10

#float
var_float = 1.234

#str:””もしくは”
var_str = “piyo”

#bool:True,False
var_bool = True
“`

#1.4.演算子
演算子に関しては以下のものを使用できる。
加算:x + y
減算:x – y
乗算

元記事を表示

UbuntuにTensorFlow 2.X 系のGPU環境を作ろう

#実行環境
ubuntu 20.04.1 LTS (日本語Ubuntu最新版)
Condaは使わない。
確実性を重視。
バージョン管理はpyenv
機体要件
CPU Ryzen7 5800X
GPU RTX3070
詳しくは
https://qiita.com/YU_GENE/items/09d7ffa85ad8e37dc063
#インストールするものを考える
TensorFlowのGPU環境を作るのは大変らしい。
Python,cuDNN,CUDAのバージョンが違うと動かない可能性があるからだ。
まず、Tensorflowのページに行って、ubuntuのTensorFlowのGPUバージョンの動作確認がされている最新版を確認しにいく。
![S__3702805.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/718725/4e894ccb-7a0f-faa3-7dbe-332962f41926.jpeg)
2020/11/27現在、Ubuntu版TensorFlowは上のものが一番確実らしい。
#Pyt

元記事を表示

Python学習 基礎編 ~数値と計算~

こちらではPython学習の備忘録と、Ruby、JavaScriptとの比較も含め記載していきたいと思います。
プログラミング初心者や他の言語にも興味、関心をお持ちの方の参考になれば幸いです。

###数値とは?
プログラミングでは、数値を扱うこともでき、文字列とは違いクォーテーションで囲む必要がない。
クォーテーションをつけると、文字列と解釈されるため、文字列と数値は明確に違うものであることを意識しよう。

###計算について
数値は、足し算「+」、引き算「-」、掛け算「*」(アスタリスク)、割り算「/」(スラッシュ)、余剰(割り算の余り)「%」の計算が可能です。
また数値や記号はすべて半角で記述する。

※記号の前後の半角スペースはなくても構わないですが、入れた方がコードが見やすいと思います。

以上は、Python、Ruby、JavaScriptで共通となります。
各言語の記述を下記に記載します。

###Python

“`py:script.py
print(3) # 数値のみ
print(3 + 5) # 対し算
print(6 – 5) # 引き算
print(3

元記事を表示

Towards Streaming Perception の解説

こんにちは、高校生の kamikawaです。
機械学習に興味があって勉強中です。特にCV分野に興味があります。

今回は[ECCV2020](https://eccv2020.eu)でBest paperに選ばれた「[Towards Streaming Perception](https://arxiv.org/abs/2005.10420/)」という論文について解説します。

自動運転やVR、ARなど、リアルタイムでのperceptionに興味がある方、ぜひご覧ください。
間違い等あればご指摘お願いします。

[プロジェクトページ](https://www.cs.cmu.edu/~mengtial/proj/streaming/)
[Git Hub](https://github.com/mtli/sAP/)
[YouTube](https://www.youtube.com/watch?v=x6AJnk2ph00&feature=youtu.be/)

##概要

モチベーション:リアルタイムで認識から再行動までを行うための高速で正確なperceptionの実現

* オフラ

元記事を表示

OTHERカテゴリの最新記事