- 1. 青空文庫を使ってネガポジ判定をやってみた
- 2. 【Twitcasting】気になるあの配信者の配信開始通知をdiscordに送信方法を考えて実装してみた。
- 3. Azure Key Vaultに格納されたシークレットを利用してAzure DatabricksからBlob Storageへアクセス
- 4. 【Project Euler】Problem 53: 組み合わせ数
- 5. 【Project Euler】Problem 52: 並び替えの倍数
- 6. Project Euler】Problem 51: 数字の置き換え素数
- 7. DiscordPyでのボタンの実装方法
- 8. Pythonで並列処理 大学生の課題を例に
- 9. easy_patents 応用例
- 10. 特許情報の簡易取得パッケージ easy_patents
- 11. wsl2 ubuntu20.04LTS でpython環境を構築しようとしたらpyenvでpythonのバージョンが変わらなかった
- 12. Atom と Hidrogen で Python を使えるようにしておく
- 13. 大量の写真から顔を切り抜いてデータセットをつくりたい–OpenCVで自動処理
- 14. [python] seleniumのdeepL自動化
- 15. PostgreSQLのデータをLINE botが取得・送信してくれるには?(python)
- 16. Wordle最強AIをつくってあそぼ
- 17. sphinx:`code-block`ディレクティブに指定できる言語
- 18. sphinx:デフォルトのコードブロックの言語は`default`で`python3`に近いもの
- 19. VSCodeでPythonを書く時、formatOnSaveを使いつつインポート並べ替えのみ無効にする
- 20. TF-IDFの基本的な考え方と実装方法
青空文庫を使ってネガポジ判定をやってみた
# ネガポジ判定とは
文書のネガポジ判定(極性判定)とは、それぞれの文書が肯定的(ポジティブ)か否定的(ネガティブ)かを判定するタスクである。
ここでは抽出した単語のネガポジ判定をするために東北大学乾・鈴木研究室が提供している「日本語評価極性辞書」を活用する。
https://www.cl.ecei.tohoku.ac.jp/Open_Resources-Japanese_Sentiment_Polarity_Dictionary.html# 実装
必要なライブラリをインポート“`python
import zipfile
import urllib.request
import MeCab
import pandas as pd
import re
“`極性判定に使用するテキストを準備
“`python
# 青空文庫『吾輩は猫である』のファイルをダウンロード
urllib.request.urlretrieve(‘https://www.aozora.gr.jp/cards/000148/files/789_ruby_5639.zip’, ‘789_ruby_56
【Twitcasting】気になるあの配信者の配信開始通知をdiscordに送信方法を考えて実装してみた。
#はじめに
趣味で推しの子がよくツイキャスするけど通知に気づけないからdiscordに投げるBotを作りました。
言語はPythonで書いてます。
記事の内容はほぼGitHubにあるものと同じです。メモ程度です。実際の稼働してる様子はこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2422677/431677b7-d048-f1d6-6c22-8c287106e785.png)
詳細は[こちら](https://github.com/renit0424/TwitcasNoticeDiscord)から
Azure Key Vaultに格納されたシークレットを利用してAzure DatabricksからBlob Storageへアクセス
# 概要
Storageのアクセス情報をAzureDatabricksのNotebooks上に記載してアクセスするのではなく、AzureKeyVaultを利用してアクセスしてみたいと思います。# 必要なリソース
– StorageAccountとBlobコンテナー
– AzureDatabricks
– AzureKeyVault#手順
## blobコンテナーの作成
– 作成したStorageAccountの画面に移動し、[データストレージ]欄の[コンテナー]を選択します。[+コンテナー]を選択し、コンテナー名を入力します。
![スクリーンショット 2022-01-25 10.29.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1514023/ea88ec69-65f4-64f6-c50c-f4bcd1e93614.png)– コンテナー内にテスト用のテキストファイルをアップロードしておきます。
![スクリーンショット 2022-01-25 10.29.40.png](https:
【Project Euler】Problem 53: 組み合わせ数
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 53. 組み合わせ数
原文 [Problem 53: Combinatoric selections](https://projecteuler.net/problem=53)
**問題の要約:$1 \le n \le 100$ で以下の組み合わせ数が$10^6$を超える数を求めよ**
“`math
\begin{pmatrix} n \\ r \end{pmatrix}
“`
組み合わせ数は**sympy**の**binomial**を、それに入力する$n,r$は**combinations_with_replacement**で生成します。“`python
from sympy import binomial
from itertools import combinations_with_
【Project Euler】Problem 52: 並び替えの倍数
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 52. 並び替えの倍数
原文 [Problem 52: Permuted multiples](https://projecteuler.net/problem=52)
**問題の要約:ある数の2x,3x,4,x5,x6の数が全部並び替えると元の数と同じになる最小の数を求めよ**
並び替えて同じがどうかは「[Problem 49: 並び替え素数](https://qiita.com/masa0599/items/f85bf2601bc99faf2ab9)」で作った**isPermSame**を使います。
“`python
def isPermSame(n1, n2):
return (“”.join(sorted(str(n1)))) == (“”.join(sorted(str(n2))))def
Project Euler】Problem 51: 数字の置き換え素数
* 本記事は[ProjectEuler](https://projecteuler.net/about)の「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。
### 問題 51. 数字の置き換え素数
原文 [Problem 51: Prime digit replacements](https://projecteuler.net/problem=51)
**問題の要約:数字の部分を0,1,2,3,…,9で置き換えたときに8個が素数になるときその最小の素数を求めよ**
“`math
5桁の例 \\
“56**3″の”*”を0,1,2,3, \dots 9で置き換える \\
56003, 56113, 56333, 56443, 56663, 56773, 56993の7個が素数
“`問題51になって急に難しくなりましたね。以下のような順番に考える必要があると思われます。数字の桁数を**N**, **”\*”**の数を**M**とします。
1. **”\*”**以外の*
DiscordPyでのボタンの実装方法
# はじめに
DiscordPyの情報が少ないのでまとめてみました。
# 目次
1. [DiscordPyのインストール](#Chapter1)
1. [DiscordPyの簡単な使い方](#Chapter2)
1. [参考文献](#reference)
# DiscordPyのインストール
DiscordPyにはバージョンが何種類かあるが今回は1.7.3を使う“`bash:
$ pip install discord.py
“`
その他必要なもの“`bash:
$ pip install discord-buttons-plugin
$ pip install dislash.py
“`“`python:
from discord.ext import commands
import discord
from discord_buttons_pl
Pythonで並列処理 大学生の課題を例に
まず、Pythonにおいてタイムアウトを実装したく、並列処理に調べました。その結果以下の情報が必要だと分かりました
①、時間のかかる処理プログラム
②、①を実行して何秒経過したか判定
③、①の処理が時間内に終了したか判定ここでは中間報告を控えた大学生としてプログラムを作成しました
“`python:work.py
import time
import threading
import queue
import randomboo=0
sintyoku=0def kakunin(n,s):
global boo
for a in range(1,n+1):
time.sleep(0.9)
print(a,”日目ーーーー”)
boo=1
print(“中間報告日到来”)
#return
for a in range(n+1,s+1):
time.sleep(0.9)
print(a,”日目ーーーー”)
if s+1==s-1:
print(“一夜漬けしかないぞ”)
else:
print(“
easy_patents 応用例
# 初めに
easy_patentsの応用例を紹介する。# 概要
他社特許の監視を行う際に、エクセルで監視対象の案件の出願番号を管理している局面を想定する。
本記事では、このエクセルファイルの更新を行うスクリプトを紹介する。## INPUTファイル
以下のような、出願番号(app_number)の列に監視対象の出願番号を並べたエクセルファイルをインプットとする。![api_sample2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2513217/ba249643-83dd-4f7a-bd1e-ffc680c6823e.png)
なお、本例では、特許情報取得APIのサンプルでよく出てくる特願2020-8423と、その出願番号をインクリメントした7件の合計8件を監視対象案件とした。
## サンプルコード
“`sample_update_monitor_excel.py
from easy_patents.get_info import app_progress
from easy_p
特許情報の簡易取得パッケージ easy_patents
# 初めに
特許庁の[特許情報取得API](https://www.jpo.go.jp/system/laws/sesaku/data/api-provision.html)を簡単に使えるようにするためのpythonパッケージeasy_patentsを作成したので、本記事では、それを紹介する。# easy_patents の特徴
(1)アクセストークンの取得を意識せずにAPIへのアクセスが可能
(2)簡易な指定が可能
(3)データをキャッシュするので、不必要な通信を避けることができる## (1)アクセストークンの取得を意識せずにAPIへのアクセスが可能
アクセストークンの取得、更新は自動で行われる。最初にユーザ名とパスワードを設定することで、あとはアクセストークンの存在を意識せずにeasy_patentsを利用できる。## (2)簡易な指定が可能
easy_patentsでは、“`py
progress_info = app_progress(“特願2020-8423”)
“`のように、API名(app_progress)と指定情報(“特願2020-8423”
wsl2 ubuntu20.04LTS でpython環境を構築しようとしたらpyenvでpythonのバージョンが変わらなかった
#問題点
python環境の構築のやり方は
>
[メインで参考にした記事](https://qiita.com/e-a-st/items/72c2e2a6a566d1f5d2a2)
[pyenvに特化した記事](https://www.python-izm.com/tips/pyenv/)
[仮想環境についても書いてある記事](http://tech-wiki.pomme-verte.net/?p=886)を参考にしながらzshを使用しているので.bashrcは適宜.zshrcに置き換えながら進めた。
一通り終わったので最後の確認をしたところ
“`zsh:zsh
> pyenv versions
system
* 3.10.2 (set by PYENV_VERSION environment variable)
3.9.10
“`
となっているのに“`zsh:zsh
> python3 –version
Python 3.8.2
“`
のようにシステムにインストールされているpythonのままだった#やったこと
Google先生に pyenv 切り替
Atom と Hidrogen で Python を使えるようにしておく
Exlipce、Visual Studio Code、Jupyter Notebook でPython を使えるようにしていますが、Atom でも使えるようにしておきます。
## 環境
OS:Windows 11 Home 64 ビット オペレーティング システム
CPU:Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 1.80 GHz
RAM:16.0 GB## Atom と Python の設定済状況
Atom:1.58.0 x64
Python:3.8.2## 手順
### Atom を起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/310c49c9-856d-a122-0e6a-5774939cf89a.png)
からの
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/13d6a8fe-6f35-2
大量の写真から顔を切り抜いてデータセットをつくりたい–OpenCVで自動処理
#OpenCVで顔を切り抜く手法です
#機械学習のデータセットを作りたい
コンピュータビジョンのタスクには、人間の顔を含む画像をデータセットとするものがたくさんあります。
そのようなデータセットを作るために、大量の画像から顔を検出して切り抜きたい時があります。#dlibの顔検出が使える
pythonを使えば、特別な設定なしで顔を切り抜けます。#コード
今回はこちらの画像を切り抜きます。
顔検出機をインポートします。
“`python
import dlibfaceDetector = dlib.get_frontal_face_detector()
“`顔検出機で画像内の顔の四角形座標を取ります。
“`python
img = cv2.imread(img_path)
faces = faceDetector
[python] seleniumのdeepL自動化
# 説明
pythonのseleniumをつかってdeepLという翻訳サイトを操作してファイルの中身を自動的に翻訳できたらよいと思って作ったもの。
バグが多くうまく動かないことが多いです
# 実行環境
* Intel(R) Core(TM) i7-8700 6コア12スレッド
* メモリ16GB
* windows10 64bit
* 仮想8コア、物理4コア
* Python 3.8.11
* ANACONDA
* JupyterLab 3.1.7#コード
## モジュール
“`python:modules
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time
import urllib.parse
import os
from joblib import Parallel, delayed
from selenium.webdriver.common.by import By
f
PostgreSQLのデータをLINE botが取得・送信してくれるには?(python)
#目次
* 目的
* 導入
* プログラムの作成
* デプロイ
* 参考文献#1. 目的
* 今回はユーザのラインでの問い合わせに対してPostgreSQLのデータを取得し、送信してくれるようなシステムがあればいいなということで作ってみました。* 家の温度や湿度をセンサで取得し、その値をPostgreSQLに格納する。
その後、家の外からでも家の中の状態をラインで把握できるといった応用例があります。※プログラムは一例として作っています。
#2. 導入
* LINE botはSSL通信が必須事項のため、herokuを使うと簡単に無料でアプリ作成が可能です。
また、PostgreSQLはherokuサイト内からデータ詳細など確認が可能で互換性が高いのでこちらを使用することにしました。
* PostgreSQLの無料プランにはいくつかの制約があるので注意(1万行までなど)* 過去に投稿したLINE Bot、herokuの導入部分は[こちら](https://qiita.com/paupau/items/ca147ba89d376ed0b0c2)
* pythonのコー
Wordle最強AIをつくってあそぼ
##やること
みなさんはWordleというゲームをご存知でしょうか。https://www.powerlanguage.co.uk/wordle/
最近流行りの言語ゲームで、お題となっている5文字の英単語を6回以内に当てるというものです。英単語を入力する(guessする)たびに、お題の単語と同じ場所にある文字は緑色に、場所は違うがお題の単語に含まれている文字は黄色に表示されます。数字当てゲーム「ヌメロン」の単語版といえばわかりやすいでしょうか。
さて、自分は以前、「ヌメロン」で最も効率良い質問をするにはどうすれば良いかについて[この記事](https://ut-base.info/articles/33)で考察したことがあります。ほとんど同じ流れで、Wordle最強(広義)AIを作成していきます。今日始めたばかりのゲームに対する最も効率的な取り組み方を、いきなり機械に教えてもらおうだなんて野暮にもほどがありますが、そうせずにはいられないのが理系なのです。
##理論
このゲームにおいて「最強」たるためには、今まで得られた情報を元にして最も「いいguess」をする必要があります
sphinx:`code-block`ディレクティブに指定できる言語
# 実行環境
* Python 3.9.6
* sphinx 4.4.6
* Pygments 2.10.0# はじめに
sphinxの`code-block`ディレクティブで指定できる言語は、[Pygments](https://pygments.org/)ライブラリで提供しているlexerのエイリアスです。>The directive’s alias name sourcecode works as well. This directive takes a language name as an argument. It can be any lexer alias supported by Pygments.
https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#directive-code-block
# Pygmentsのlexer alias
以下のドキュメントの`Short names`がlexer aliasに対応します。https://pygments.o
sphinx:デフォルトのコードブロックの言語は`default`で`python3`に近いもの
# 実行環境
* Python 3.9.7
* sphinx 4.4.0# はじめに
[sphinx](https://www.sphinx-doc.org/ja/master/)でHTMLドキュメントを生成しています。以下のような設定ファイルを使って、HTMLドキュメントを生成してみます。
“`python:conf.py
project = “foo-bar”
“`“`plain:index.rst
==================================================
test
==================================================.. code-block::
$ foo-bar list
.. code-block::
usage: foo-bar list [-h] [–debug] [-o OUTPUT]
.. code-block::
def foo(a: int, b: int) -> int:
return a + b
`
VSCodeでPythonを書く時、formatOnSaveを使いつつインポート並べ替えのみ無効にする
VSCodeでPythonを書く時、formatOnSaveを使いつつインポート並べ替えのみ無効にしたいことがあったので、設定方法をメモ。
## これをどういうケースで使うか
import文より前に式があるPythonコードを書いていたら、フォーマッタによりimport文が全部最上部にまとまってしまい動作しなくなったので、無効にしたいことがあった。
“`py
# このコードが
sys.path += [script_dirpath]
from mylib.allobj_deselect import allObjDeselect
“`“`py
# このようにされ、動かなくなった。
from mylib.allobj_deselect import allObjDeselect
sys.path += [script_dirpath]
“`## 環境
– MacBook Pro (16-inch 2019)
– macOS Monterey 12.0.1## 解決策
設定のJSONを開き(command + ctrl + p -> 「基本設定: 設定(JSO
TF-IDFの基本的な考え方と実装方法
# TF-IDF
### 概要
TF-IDF(Term Frequency-Inveerse Document Frequency)は、全ての文書に出現する単語と、一部の文書にしか出現しない単語を区別するための方法である。
Bag of Words(BoW)は各文書の単語ごとの出現回数をカウントしたものであるが、この方法では全ての文書に出現する単語と、一部の文書にしか出現する単語を区別することができない。### 数式による説明
以降の説明で使用する記号の意味は下記のとおり。+ $n_{d,t}$ :文書$d$で単語$t$が出現する回数
+ $df_{t}$ :単語$t$が出現する文書数
+ $N$ :全体の文書数
+ $T$ :1つの文書における単語数の合計#### TF
TFは、「1つの文書の中に現れる全単語の合計出現回数のうち、その1つの単語がどれだけの割合で出現したか」と定量化した指標である。したがって、ある1つの文書の1つの単語に対して定まる指標である。“`math
TF_{d,t} = \frac{n_{d,t}}{\sum_{t=1}^{T}n_{d,t}