- 1. ABC107 B – Candles diff 茶は焦るかも
- 2. 【Word2Vec】ExcelのQA表からAIチャットボットを作る
- 3. 爆速でモックAPIを構築する
- 4. Pythonを用いたCronbach’s α(クロンバックのアルファ)の計算方法
- 5. 畳み込みニューラルネットワーク(CNN)を用いたCelebAの画像の性別判定
- 6. Djangoでよく使うQuerySetを共通化する
- 7. 【Python】PyPIでのトークン認証のトラブル
- 8. 【Python・Windows】指定ウィンドウを最上部に固定して作業効率を上げるスクリプト
- 9. タスクスケジューラでpythonスクリプトを起動する
- 10. 初学者のSIGNATE_宿泊の価格予測
- 11. 備忘 VSCodeで`Black`に`.pyi`ファイルを`FormatOnSave`させない方法
- 12. Pythonでsort()をするとNoneになる
- 13. python初学者の備忘録 文字列型のメソッドについて
- 14. python初学者の備忘録 文字列型の関数について
- 15. python初学者の備忘録 数値型の関数について
- 16. 【Sphinx拡張】動画などの埋め込み
- 17. AWS CDK の実行時に StackName を動的に指定する
- 18. ABC150 C – Count Order を解いた
- 19. Pythonで文字認識ニューラルネットワーク構築【Coursera Machine Learning】(3.ミニバッチ勾配降下法&おまけ)
- 20. Windowsでgit commit時にCan’t find a default Python.
ABC107 B – Candles diff 茶は焦るかも
https://atcoder.jp/contests/abc107/submissions/22307759
![abc107_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/7bee79b8-ff35-6b40-9ea9-2f4f4ad25b47.png)
![abc107_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/0f156fc2-34c1-e6c0-de46-ec74100c6ec3.png)
![abc107_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/7cebff39-8978-77ae-79ba-725d944bd410.png)
![abc107_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
【Word2Vec】ExcelのQA表からAIチャットボットを作る
#目次
1.概要
2.環境・採用技術
3.開発の流れ
4.コード解説
5.質問の意味を理解できるか?
6.IBM Cloud CodeEngineにデプロイしてみた。
7.最後に#1. 概要
AIチャットボットのWebアプリケーションを作り、クラウド上にデプロイします。
シナリオベースのチャットボットはいくつか試しましたが、シナリオを用意するのに手間がかかったり、用意したシナリオ通りの質問しか回答できない等の不便さを感じたため、それらを解消するチャットボットを自分で開発してみます。
今回実現したいのは、以下2点です。– すぐに使い始められる。
– シナリオを用意したりQAデータを整形したりせずに、普段の問い合わせ対応業務で使っているエクセルのQA表を食わせるだけでサービスを開始できるようにします。
– 質問の「表現揺れ」に対応する。
– 「類義語検索」と「自然言語処理」を用いて、用意したQAに厳密に合致しない質問をされても回答できるようにします。####AIチャットボットとは
Q:東京タワーの住所を教えてください。→A:東京都港区芝公園4丁目2−8です。
爆速でモックAPIを構築する
AWS Chalice を使って爆速でモックAPIを作ってみました。
AWS Chalice は Python 製のフレームワークで API Gateway と Lambda をサクッと構築できます。(詳細は[公式](https://aws.github.io/chalice/index)を参照ください。)
### 構成
構築する環境はAPI Gateway + Lambdaとなります。
![composition.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1167819/7fb64117-dfd2-937f-800d-f705428feb73.png)
今回は以下前提にて構築します。
– pythonインストール済み
– Lambdaに付与するロールは事前作成済み(ロールの自動生成は使わない)
– AWS CLIの設定済み### 構築
何はともあれ作っていきます。1. chalice インストール
“`
pip install chalice
“
Pythonを用いたCronbach’s α(クロンバックのアルファ)の計算方法
Cronbach’s α(クロンバックのアルファ)は
>各質問項目(変数)が全体として同じ概念や対象を測定したかどうか(内的整合性)を評価する信頼係数です。引用:[統計WEB](https://bellcurve.jp/statistics/glossary/1274.html)
リカート式で収集したデータを分析する際にはCronbach’s αを計算することが多いです。
## Cronbach’s αを計算する関数
相関係数を用いてCronbach’s αを計算することができます。“`
def cronbach_alpha(data):
df_corr = data.corr()N = data.shape[1]
rs = np.array([])
for i, col in enumerate(df_corr.columns):
sum_ = df_corr[col][i+1:].values
rs = np.append(sum_, rs)
mean_r = np.mea
畳み込みニューラルネットワーク(CNN)を用いたCelebAの画像の性別判定
# 1. 背景
前回はCelebAの画像をローカルに落とし、そこからtensorflow_datasets形式にするまでをまとめました。
https://qiita.com/ToppaD/items/9256f3c67cdb5a2c4e29
今回はそれらのデータセットから、性別判定をするソフトを畳み込みニューラルネットワーク(CNN)によって作成しようと思います。
#2. 方法
##2-1. データの前処理まず、データセットを訓練データ(10000) / 検証データ(1000) / テストデータ(1000) に切り分けます。
reshuffle_each_iterationをFalseにしておくことで、それぞれのデータを切り分けるときに、
毎回同じ順番でシャッフルされ、ある画像が訓練データとテストデータ両方に混ざりこむようなことを避けてくれます。“`python
tf.random.set_seed(1)
ds_images_labels = ds_images_labels.shuffle(1000,reshuffle_each_iteration=False)
c
Djangoでよく使うQuerySetを共通化する
# Managerを使う
結論からお話しすると`Manager`を使用します。
もちろんこのほかにも方法はありますがこの方法が一番ベターかと。#実装する
今回使用するmodels.pyはこちら。
“`python:models.py
class Charge(models.Model):
amount = models.DecimalField(max_digits=8, decimal_places=2)
month = models.DateField()class Meta:
db_table = “charge”
“`
## カスタムマネージャーを追加`Charge`モデルからidを元に一つのオブジェクトを取得するメソッドを追加します。
そして次に`Charge`モデルのカスタムマネージャーをモデルに追加します。“`python:models.py
from django.core.exceptions import ObjectDoesNotExistclass ChargeManager(models
【Python】PyPIでのトークン認証のトラブル
#後日談
改めて調べたら、「 “__token__“ しか使えないよ(意訳)」と説明している記事がありました 0(:3 )~ =͟͟͞͞(’、3)_ヽ)_
https://qiita.com/que9/items/de1d54c3c37e67dbe798
—
プロジェク別のトークンを作ることができるのですが、こんなことを言われます。
– 全プロジェクト共通で “__token__“ を使おうとすると警告文が表示される。
– 異なるプロジェクトで “__token__“ を使うことはできない。
– つまり、全プロジェクト共通で “__token__“ を使うしかない。—
#1.はじめに
PyPIの認証でトークンを使うほうがあります。が、次のようなエラーになります。
“`sh
$ ./upload.sh testkana dist/sphinxcontrib.kana_text-0.19.0rc1.tar.gz
Uploading distributions to https://test.pypi.org/legacy/
Uploa
【Python・Windows】指定ウィンドウを最上部に固定して作業効率を上げるスクリプト
# はじめに
画像などを参考・参照しながら作業したいことってありますよね。
Windowsでは基本的にフォーカスされているウィンドウが最上部に出てくるため、画面を分割表示するなどしないといけません。捗りません。
その画像などが横長ならまだしも、縦長だと目も当てられません。そこで、ショートカットキーで最上部ウインドウを設定できる簡単なスクリプトを書きました。
# できたもの
“`python
import win32gui
import win32con
import win32api
import timeclass TopLevelWindows:
def __init__(self):
self.top_window = Nonedef toggle(self):
if self.top_window:
self.__unset_z_pos_0()
else:
self.__set_z_pos_0()
returndef
タスクスケジューラでpythonスクリプトを起動する
windowsタスクスケジューラでpythonファイルを定期実行させたい場合、python.exeを指定すると起動されないことがあるようなので…..
C:\Windows\py.exe にpyファイルを渡すといいよっていう小ネタです。
従来のAppdata\Local\…….のpython.exeにスクリプトを投げても動くので、タスクスケジューラで動かない理由がわからないのですが、友人がその状況に陥ったので念のための代案としてのメモです。 Windows10, 11両方で確認済みですつまりTask Scheduler > Action > Create Basic Task… で、
NameやTriggerはお好みですが、ActionはStart a programで
Program/Scriptにpy.exeのパスを指定。
Add arguments(引数)に実行したいスクリプトの名前を拡張子付きで
Start in にその実行したいスクリプトを置いているディレクトリまでのパス を指定するわけですね。
以下の通り。 エクスプローラーの、パスとしてコピーを使うとダ
初学者のSIGNATE_宿泊の価格予測
#この記事について
Aidemyの卒業ブログとして記載しています。
覚えたての手法を実践することが目的のため、分析手法の妥当性、精度についてはいったん保留しています。
記事はSIGNATEの情報公開ポリシーに沿って公開しているつもりですが、問題があれば削除します。#データについて
SIGNATEの[【練習問題】民泊サービスの宿泊価格予測 ](https://signate.jp/competitions/266/data)のデータを利用しています。特徴量のデータ詳細は上記ページを参照ください。欠損値あり、半分以上カテゴリデータとなってます。
どの特徴量を使うか、欠損値の埋め方、カテゴリデータの変換方法を考えないとですね。。“`
Int64Index: 55583 entries, 0 to 55582
Data columns (total 28 columns):
# Column Non-Null Count Dtype
— ——
備忘 VSCodeで`Black`に`.pyi`ファイルを`FormatOnSave`させない方法
ハマってしまってここにたどり着くまで全`pyi`ファイルに`# fmt: off`を書くという愚かしいことをしてしまった。
これで保存時に`…py`ファイルはフォーマットされて、`…pyi`ファイルはフォーマットされなくなる。“`json:settings.json
{
“python.languageServer”: “Pylance”,
“python.analysis.typeCheckingMode”: “basic”,
“python.linting.enabled”: true,
“python.linting.pylintEnabled”: false,
“python.linting.flake8Enabled”: true,
“python.linting.mypyEnabled”: false,
“[python]”: {
“editor.formatOnType”: true,
“editor.formatOnSave”: true
},
“pyt
Pythonでsort()をするとNoneになる
# listをsort()したものを操作しようとした時にエラーが出た!
ソートが必要なプログラムを組もうとしたときに、下記のようなコードを実装した。
“`python
list = [9,6,3,2,5,8,7,4,1]
sorted_list = list.sort()
print(sorted_list[1]) # エラー
“`sortした配列にアクセスしようした時に次のようなエラーが吐かれた。`TypeError: ‘NoneType’ object has no attribute ‘__getitem__’`
“`python
list = [9,6,3,2,5,8,7,4,1]
sorted_list = list.sort()
print(sorted_list) #None
“`[ドキュメント](https://docs.python.org/ja/3/howto/sorting.html#sorting-basics)によると組み込み関数のsorted()との混乱を防ぐために、こいつはあえてNoneを返すようにしているらしい。sort()は破壊
python初学者の備忘録 文字列型のメソッドについて
####[←目次へ](https://qiita.com/dondondon/items/cd45224ca93e65c976cc)
:::note info
python,Qiita初心者なので、備忘録として記載していきます。
なにせ初心者なので、知識不足はご理解ください。
知識を深めながら追記していきたいと思います。:::
#文字列型で使用するメソッド`基本`
+ count()メソッド:指定した文字列が文字列に含まれている数を返す
+ startswith()メソッド:文字列の始まりが指定した文字列と一致しているかboolで返す
+ endwith()メソッド:文字列の終わりが指定した文字列と一致しているかboolで返す
+ find()メソッド:指定した文字列が何文字目から開始されるか返す
+ rfind()メソッド:指定した文字列が後ろから数えて、前から何文字目から開始されるか返す
+ capitalize()メソッド:先頭文字のみ大文字、その他はすべて小文字に変換する(センテンスケース)
+ title()メソッド:各単語の先頭文字のみ大文字、それ以外は小文字に
python初学者の備忘録 文字列型の関数について
####[←目次へ](https://qiita.com/dondondon/items/cd45224ca93e65c976cc)
:::note info
python,Qiita初心者なので、備忘録として記載していきます。
なにせ初心者なので、知識不足はご理解ください。
知識を深めながら追記していきたいと思います。:::
#文字列型で使用する関数`基本`
+ str()関数:引数を文字列に変換する
+ len()関数:文字長を返す
+ max()関数:最大値を返す
+ min()関数:最小値を返す
+ format()関数:指定した書式の文字列を返す####`str()関数`:引数を文字列に変換する
“`python
>>> str(1)
‘1’
>>> str(3.14)
‘3.14’
>>> str(True)
‘True’
“`####`len()関数`:文字長を返す
“`python
>>> len(‘English’)
7
“`####`max()関数`:最大値を返す
“`python
>>> max(‘English’)
‘s
python初学者の備忘録 数値型の関数について
####[←目次へ](https://qiita.com/dondondon/items/cd45224ca93e65c976cc)
:::note info
python,Qiita初心者なので、備忘録として記載していきます。
なにせ初心者なので、知識不足はご理解ください。
知識を深めながら追記していきたいと思います。
:::#数値型で使用する関数
`基本`
+ int()関数:数値型に変換する
+ str()関数:文字列型に変換する
+ bool()関数:ブール型に変換する
+ round()関数:偶数への丸め#####`int()関数`:数値型に変換する
“`python
>>> int(2.7)
2
“`
:::note alert
小数点以下は切り捨てられる
:::#####`str()関数`:文字列型に変換する
“`python
>>> str(3.0)
‘3.0’
“`#####`bool()関数`:ブール型に変換する
“`python
# — bool型になる ※詳細はブール型についての項で説明 —
>>> bool(1)
Tr
【Sphinx拡張】動画などの埋め込み
https://pypi.org/project/sphinxcontrib.embedding/
埋込み型のコンテンツを “:emb:`コンテンツの種類<コンテンツのID>` “ という書式でrstファイルに書くとコンテンツが表示されるロールを作りました。
まだまだ作り込みが甘いαー版ですが、紹介させてください。
#1.セットアップ
インストール
“`bash
pip install sphinxcontrib.embedding
“`設定
“`python
extensions = [‘sphinxcontrib.embedding’,]
“`書き方(Youtubeの場合)
“`rst
:emb:`youtube`
“`“`rst
:emb:`yt`
“`#2.追加機能
現在はYoutube, Vimeo, Nicovideoに対応していますが、設定で任意の埋込み型コンテンツを追加することができます。これを思いついて「面白そう」と思ったのが作った動機です。
“`python
AWS CDK の実行時に StackName を動的に指定する
# はじめに
AWS CDK のエントリーポイントを見ると、以下の様に実行するスタック名がハードコーディングされている。
“`python:app.py
app = core.App()
CdkPythonStack(app, “CdkPythonStack”)
“`しかし、例えば「開発環境」と「本番環境」同一のテンプレートを使って複数のスタックを構築したい場合もあると思う。 そのような場合にスタック名を動的に指定して環境構築をしたい。
# 解決策
同様の質問が StackOverflow で見つかった。
https://stackoverflow.com/questions/66983477/how-to-change-stackname-when-using-cdk-deploy
こちらでは、システムの環境変数を使って実行時に引き渡す方法を採っている。
もうちょっといい方法はないかと思って `cdk` コマンドを探したり、`app.py` に `argparse` を追加してみたが、調べた限りではコマンドラインの値をそのまま `app.py` に引き渡す方法は
ABC150 C – Count Order を解いた
https://atcoder.jp/contests/abc150/tasks/abc150_c
![abc150_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/29696cdb-c5ff-da0e-9f84-851b60f96f10.png)
![abc150_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/8c76b709-5846-022f-f7e3-76438befe7c9.png)
![abc150_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/dbd4b22f-a061-93a1-3d8a-443731ac8dbe.png)
![abc150_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/
Pythonで文字認識ニューラルネットワーク構築【Coursera Machine Learning】(3.ミニバッチ勾配降下法&おまけ)
#はじめに
この記事は前回の続きですが、おまけという位置づけです。まだご覧になってない方はぜひ一読ください
[Pythonで文字認識ニューラルネットワーク構築【Coursera Machine Learning】(1.概要)](https://qiita.com/trashboxacc/items/ec3fa62afe6999f6bdf0)
[Pythonで文字認識ニューラルネットワーク構築【Coursera Machine Learning】(2.実践)](https://qiita.com/drafts/1033a333a00902071b1a)> ちょっと前に出た機械学習のゼミで[Courseraの教材](https://www.coursera.org/learn/machine-learning)を扱っていたので復習がてらアウトプットしていこうと思います。Week5の課題であるex4は、もともとはOctaveで書かれているので自己流Pythonで記述します。当然処理にかかる時間は長〜くなるので実用目的ではなく勉強目的の人に向けて書いてますのであしからず。__PyTorc
Windowsでgit commit時にCan’t find a default Python.
Windowsで`git commit`時に`Can’t find a default Python.`とのエラーが表示された
コマンドプロンプトで`py –version`すると同じメッセージコントロールパネルからpythonとかpython launcherとかを一旦アンインストールしてから
https://pythonlinks.python.jp/ja/index.html のインストーラで再インストールしたら治った