- 1. Qiita-CLIで作ったmdファイルを整理する
- 2. OCIで生成AIがリリースされたので早速LangChainでRAGを試してみた
- 3. 【Python】colabだけで完結させる単語のつながりネットワークの可視化(はじめての記事!)
- 4. Python3.8~3.12をサポートするツールでpandasを利用すると、`poetry install`の初回実行に15分以上かかる
- 5. 数理最適化の概要とPythonでの実装
- 6. Pythonを使って二人用しりとりゲームを作る
- 7. 【光る君へ】藤原道長の家系図を AnyTree で書く
- 8. Pythonで SimpleNamespace を使って辞書の値を属性アクセスできるようにする
- 9. 600度の法則を過去データを使って検証した結果、さくらの魅力がまた一つ増えた
- 10. 文字起こしAI「Faster Whisper」を Amazon EC2 で使う
- 11. Anacondaインストール
- 12. Numbaで関数をオブジェクトとして扱う機能を動作検証した
- 13. google mapのピンをgeoguessrのマップにする
- 14. Streamlit 1.30.0の新機能紹介
- 15. 配布パッケージをPyPIで公開してみた
- 16. 【個人開発】人と過ごすためのこれまでの活動振り返り
- 17. plotly_ver2
- 18. 数値モデルシミュレーションの結果をバイナリデータからテキスト(.txt)で出したい
- 19. 【MySQL】照合順序の不一致で「IntegrityError: (1215, ‘Cannot add foreign key constraint’)」エラーが発生した
- 20. Python の for ループの代替品
Qiita-CLIで作ったmdファイルを整理する
# はじめに
Qiita-CLIを使っているとmdファイルが多くなりすぎて管理ができなくなってしまう。
もちろん、後に編集はできるようにしたいのですべてpublicフォルダにおいておきたい。(mdファイルがpublicフォルダにないとプレビューがみれない)そのため、ファイル名を正規化して、ツリー構造を作成することでどのような記事があるかを一目でわかるようにする。
# 最終的に
ファイル構造
“`
public
│ 00_HowTo.md
│ math_Fourie.md
│ _aws_ec2.md
│ _aws_vpc.md
│ _eng_AM.md
│ _eng_equLowRangeSystem.md
│ _eng_FMPM.md
│ _llm_Bard_Bard.md
│ _llm_chatGPT_IphoneShortcut.md
│ _llm_GithubCopilot_noAnswer.md
│ _math_Laplace.md
│ _programming_mock.md
│ _py_qiitafile.md
│ __docs.md
OCIで生成AIがリリースされたので早速LangChainでRAGを試してみた
## はじめに
OCIで生成AIサービスがリリースされました。
https://www.oracle.com/jp/news/announcement/oracle-announces-availability-oci-generative-ai-service-2024-01-23/
https://docs.oracle.com/ja-jp/iaas/Content/generative-ai/home.htm
今回は2024/1/23にリリースされたばかりのOCI Cohereを使い、Embedding, CommandによるRAGを試してみます!
またリリースと同タイミングでLangchainサポートも公式ページに載ったので、こちらを使います!https://python.langchain.com/docs/integrations/llms/oci_generative_ai
## 動作確認
OCIにてポリシーを設定します。
“`shell:
allow groupto manage generative-a
【Python】colabだけで完結させる単語のつながりネットワークの可視化(はじめての記事!)
はじめての技術記事!!!!
よわよわ情報系学生ちなっちゃん(@toremolo72)です.大学卒業まであと1年,プログラミングをもっと頑張ってから卒業したい!ということでやってみたこととかはまとめていきたいなと思います!# 概要
#### colabだけで完結させる単語のつながりネットワークの可視化
colabで,[Google Scholar](https://scholar.google.com/)から得られる書誌情報(タイトル,著者名など)を形態素解析したデータを使って,共起ネットワーク(単語のつながりネットワーク)を可視化します.# 想定読者
– 何か見て楽しいものを簡単に作ってみたい初心者の人(printとかif文とかはわかるよっていうレベルで🙆♀️)
– colabのファイルを作って実行することができる人
– ネットワーク分析したいデータがある人# 単語のつながりネットワークを可視化すると嬉しいこと
– シンプルにみてて楽しい
– 自分の興味ある内容にまつわる面白そうな単語を簡単に見つけられる
– ネットワークのクラスターができると,なんとなくその分野がわかっ
Python3.8~3.12をサポートするツールでpandasを利用すると、`poetry install`の初回実行に15分以上かかる
# 環境
* Python 3.12.1
* poetry 1.7.1# 背景
Python3.8から3.12をサポートするツールを開発しています。ツールはpnadasを利用しています。TravisCIでPython3.12のテストをする際、`poetry install`の実行でタイムアウトが発生して、テストが実行できませんでした。
“`
$ poetry install
Updating dependencies
Resolving dependencies… (18.9s)Package operations: 6 installs, 0 updates, 0 removals
• Installing six (1.16.0)
• Installing numpy (1.26.3)
• Installing python-dateutil (2.8.2)
• Installing pytz (2023.4)
• Installing tzdata (2023.4)
• Installing pandas (2.0.3): Prep
数理最適化の概要とPythonでの実装
## 数理最適化とは
数理最適化は、現実の問題を数学的なモデルに変換し、そのモデルを解析して最適な解を見つける手法です。このアプローチは、多くの分野で利用されており、製造業、物流、金融、医療、エネルギー管理など、様々な産業や領域で問題解決に役立っています。数理最適化は、リソースの効率的な利用やコスト削減、意思決定のサポートにおいて非常に有力なツールとなっています。数理最適化の基本的な構造は、最適な決定を行うための目的関数と、その際に守る必要がある制約条件から成り立っています。目的関数は最大化または最小化したい対象を表し、制約条件は問題に課される制約を表しています(後述)。これらの数学的な表現に基づいて、最適な決定を導き出すことが数理最適化の目的です。
## 実用例
例えば、製造業においては、生産コストを最小化するために生産計画を最適化する問題があります。物流では、効率的な経路を見つけて輸送コストを削減する問題があります。これらの問題は、数理最適化を用いて、最適な生産計画や経路を見つけることができます。## 数理最適化の手法の種類
一般的な数理最適化の手法には、線形計画法
Pythonを使って二人用しりとりゲームを作る
## 初めに
今回は、判定に二分探索を使ってしりとりゲームを作りました。## コード
“`py
import rewordList = []
#しりとりの初めの文字を初期値で入れる
LastTimeWord = “り”
#ひらがな判定用
p = re.compile(‘^[ぁ-ゖ]+$’)#しりとりとして成り立っているか判定
def siritoriCheck(inputWord):
global LastTimeWord
if inputWord[0] == LastTimeWord[-1]:
#成り立っていたら言葉を格納
LastTimeWord = inputWord
return False
return True#言葉が重複していないかをチェック
def wordCheck(inputWord):
global wordList#最後の文字が「ん」だったらTrue
if inputWord[-1] == “ん”:
return True
【光る君へ】藤原道長の家系図を AnyTree で書く
おはこんばんちわ。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ AnyTree」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。
—
### **assistant**:
おはようございます、またはこんばんは。AnyTreeとPythonについて語りますね。
AnyTreeはPythonで作られたシンプルなトリーデータ構造を操作するためのライブラリです。後者はラベルを持つノードから成り立ち、任意の数の子ノードを持つことができます。AnyTreeは継承、ノードの挿入/移動/削除、サブツリーの探査、視覚化などの操作をサポートしています。
AnyTreeライブラリを使用するにはまずインストールが必要です。`pip install anytree`コマンドを使ってインストールします。
ノードを作るには`AnyNode`クラスを使用します。`AnyNode`は任意の数のキーワード引数を受け取り、それらをノードの属性として設定します。
以下のコードは、親ノードと子ノードを持つシンプルなツリーを作成する
Pythonで SimpleNamespace を使って辞書の値を属性アクセスできるようにする
# この記事は何?
Pythonで **SimpleNamespace** を使って、辞書の値に属性アクセス(.属性名)できるようにする方法を紹介します。# Pythonの辞書について
Pythonで辞書の値にアクセスする際には `dict[‘key’]` のように文字列のキーを使用する必要があります。これは時に不便であり、コードの読みやすさを損なうことがあります。
SimpleNamespaceを使うと、辞書の値に属性アクセス `(.属性名)`できるようになります。# SimpleNamespace とは
SimpleNamespace は、Pythonの標準ライブラリ types に含まれるクラスで、属性へのアクセスを容易にするためのものです。このクラスを使うと、辞書のキーをオブジェクトの属性としてアクセスできるようになります。# サンプルコード
### 辞書を SimpleNamespace に変換する関数
“`python
from types import SimpleNamespacedef convert_nested_dict_to_namespace
600度の法則を過去データを使って検証した結果、さくらの魅力がまた一つ増えた
# 目的
2/1からの最高気温を累積していくと600度に達したときにさくらが開花するという600度の法則がある。この法則について、過去の気温データを使ってどれくらい確からしいのか検証する。
600度の法則とは、「2月1日以降の日最高気温の合計が600℃に達すると開花とする」という法則。[ウェザーニュースのサイト](https://weathernews.jp/s/topics/202203/190205/#:~:text=2%E6%9C%881%E6%97%A5%E4%BB%A5%E9%99%8D%E3%81%AE%E6%97%A5%E6%9C%80%E9%AB%98%E6%B0%97%E6%B8%A9%E3%81%AE%E5%90%88%E8%A8%88%E3%81%8C600%E2%84%83%E3%81%AB%E9%81%94%E3%81%99%E3%82%8B%E3%81%A8%E9%96%8B%E8%8A%B1%E3%81%A8%E3%81%99%E3%82%8B)より。
600度の法則の起点となる、1年で最も寒い時期の2月1日に合わせてこの記事を投稿しました。
#
文字起こしAI「Faster Whisper」を Amazon EC2 で使う
# この記事の目的
[Amazon EC2](https://aws.amazon.com/jp/ec2/) を利用し、音声データをそこで話されている内容を表すテキストに変換します。
# サンプルデータ
[『e-Gov法令検索』に載っている日本国憲法](https://elaws.e-gov.go.jp/document?lawid=321CONSTITUTION)の前文を、[WEB版VOICEVOX(複数)](https://www.voicevox.su-shiki.com/multiple)で読み上げさせました。
VOICEVOX:ずんだもん を使用しています。前文全体を1個の入力欄に入れると文字数制限をオーバーしてしまうようだったので、1段落ずつ分けて入れました。
その結果を結合・変換したデータ `nikezun.mp3` を、ZIPファイルとしてそのまま展開できるPNGファイルで配布します。![nikezun.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99656/cd4a01
Anacondaインストール
# ぶっちゃけ環境構築どうしたらいいのかよくわからん
以前学習してた時はRubyがメインでその時はrailsで主にVScodeでやっていたので困らんかったけど、Pythonは色々ありすぎてどれがいいのかわからないです## Anacondaインストール
画面通りに進めば基本OK![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680269/fba7b008-a036-869c-c030-5461be987858.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680269/646d4baf-4c95-4bf0-d75a-926a34fdcc45.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3680269/920559ce-5276-333d-8983-72322
Numbaで関数をオブジェクトとして扱う機能を動作検証した
## はじめに
NumbaではNumba化関数をある程度まで関数オブジェクトとして扱うことができる。
一方でその機能は完全でないとも書かれている [[公式]](https://numba.readthedocs.io/en/stable/reference/pysupported.html#functions-as-arguments)
どこまでできるか検証した。検証環境:
– Python 3.11.4 + Numba 0.58.1
– Python 3.11.4 + Numba 0.57.0## 目次
– [Numba化関数は別のNumba化関数オブジェクトを引数として受け取り、動作を切り替えることができる](#numba化関数は別のnumba化関数オブジェクトを引数として受け取り動作を切り替えることができる)
– [Numba化関数オブジェクトを返り値で返す](#numba化関数オブジェクトを返り値で返す)
– [加工せずに返すことはできる](#加工せずに返すことはできる)
– [関数を加工して関数オブジェクトを返す関数 (デコレータ) – 失敗例](#関数を
google mapのピンをgeoguessrのマップにする
# 背景情報
みなさんは[geoguessr](https://www.geoguessr.com/ja)というゲームを御存じでしょうか?
geoguessrは、googleストリートビューの情報を基に、自分が今どこにいるのかを当てるゲームです。このゲームでは日本のみのマップで遊んだり、自分で作成したマップで遊んだりすることができます。
私はこれにドはまりしまして、ゲームが趣味だったインドア人間から、旅行が趣味のアウトドア人間にバージョンアップしました。
また、私が旅行するときは旅行先の良かった場所などをgoogle mapのピンとして保存しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305662/a9a3a96b-bae1-81f4-a077-32fd5904cdd4.png)
今回はこのピン情報を基に、geoguessrのマップを作成できたら、思い出に浸れるマップができると思いツール作成をすることにしました。
# システム概要
![system.png
Streamlit 1.30.0の新機能紹介
## Streamlitとは
StreamlitはPython向けのWebアプリケーションフレームワークです。
https://streamlit.io/
Streamlitを使うとフロントエンドの知識ゼロでもデータを可視化するためのWebアプリケーションを簡単に作れます。以下のような機能が特徴。
– 変数を地の文に書くだけで、GUIに出力される(**マジックコマンド**)
– `st.radio`や`st.text_input`のようなWidget APIを呼び出すだけで、GUIコンポーネントが生成される## Streamlitの最新バージョン
Streamlitの最新バージョンは[Changelog](https://docs.streamlit.io/library/changelog)で確認できます。
2024/1/31時点で最新バージョンは1.30.0です。https://docs.streamlit.io/library/changelog
1.30.0では次がHighlightsとしてアナウンスされています。
– st.switch
配布パッケージをPyPIで公開してみた
# 概要
PyPI(パイ・ピーアイ)へ、配布パッケージをアップロードして公開するまでの手順。
Python配布パッケージを作り終えたところから開始して、PyPIにアカウントを作成して配布パッケージを公開するところまでを解説。
解説の粒度は「やってみた」とする。なお、「やってみた結果、こちらの順序の方が良い」は反映している。手順としては、以下の記事の続きの位置づけとなる。Setup.pyを前提としているが、pyproject.tomlでも配布パッケージへの設定部分の読み替えのみで対応可能。
* [Pythonソースコードをパッケージ化する方法(他環境へ配布を目的として)(Setup.py利用)](https://qiita.com/hoshimado/items/7c99e6ef4c9d1bc6bb87)
# 想定読者
* Pythonの配布パッケージ(`*.whl`)を作成したので、PyPIで公開してみたい方
* PyPIへの2024年1月時点での最新の具体的な手順を知りたい方
* APIトークンが必須になったり、2FA認証が必須になったり、と細々?とした更新が
【個人開発】人と過ごすためのこれまでの活動振り返り
Hello world! アンドロイドVtuber見夢です。
普段開発でお世話になっているQiita様にて、イベント『2024年!初アウトプットをしよう』を開催しているとのことで、記念に初投稿です。
よろしくお願いします!# 1. プロフィール
**アンドロイドVtuber見夢**
スマートフォンで動作するアバター型対話アプリ(開発中)を通じて、人と関ろうとしているアンドロイド。Vtuberにも関わらず、Youtubeへ1年に1本しか動画投稿できていません…**礼文 華太郎**
エンジニア。# 2. 何を作っている?(宣伝)
2022年頃より活動しています。### 2022年 『2032年の友人』
ユーザと会話するための一連の機能、すなわち顔や目を見る機能、声を聞く機能、話す機能を備えました。
数値モデルシミュレーションの結果をバイナリデータからテキスト(.txt)で出したい
数値モデルシミュレーションの結果をテキスト(.txt)で出したい時の手順
# バイナリファイルからデータを読み取り
~~~
import numpy as np
fld = np.fromfile(‘「取り出したいデータ」.bin’, ‘float32’).reshape(366, 180 * 4, 360 * 4)
~~~# テキストファイルにデータを保存
~~~
np.savetxt(‘「取り出したいデータ」.txt’, fld.flatten())
~~~これにより、バイナリ形式から読み取ったデータ fld をnp.savetxtを使用してテキストファイルに保存できます。ただし、バイナリ形式のデータを完全にテキスト形式で保存することは、元のバイナリ形式と同じ精度を保つことができない場合があります。データ形式やサイズによっては、ファイルサイズが非常に大きくなることもありますので、ご注意ください。
上記のPythonコードは、バイナリ形式のシミュレーション結果(xxxxx.bin)を読み取り、NumPyを使用してデータを3次元配列に変形し、それを可視化しています。
【MySQL】照合順序の不一致で「IntegrityError: (1215, ‘Cannot add foreign key constraint’)」エラーが発生した
# 概要
Djangoでマイグレーションを実施したら以下のエラーになりました。
“`
MySQLdb._exceptions.IntegrityError: (1215, ‘Cannot add foreign key constraint’)
“`phpmyadminからSQLで実行してみても以下のエラーです。
“`
MySQL のメッセージ: ドキュメント#1215 – 外部キー制約を追加できません。
“`こちらのエラーを解決できたので、原因と対応法を紹介します。
# 考えられる主な原因
エラーメッセージは、MySQLが「外部キー制約を追加できない」と言っています。
一般的にありうるのは以下あたりだと思います。– 参照されるテーブルまたはカラムが存在しない。
– 参照するカラムと参照されるカラムのデータ型が一致していない。
– 参照されるカラムが一意(ユニーク)でない = 一意性を持つインデックス(主キーまたは一意キー)になっていない。
– 参照されるテーブルの既存データが新たに設定しようとしている外部キー制約に違反する。
– (外部キー制約を追加す
Python の for ループの代替品
## この記事は?
JavaScript 版はこちら (言語が違う以外ほぼ同じ):
https://qiita.com/aKuad/items/374f14fc17ec05b57a7a
Python の `list` において、「各要素に対してこうする」というコードを書く機会がしばしばあります。基本的な実装方法は、「`for` ループ書いて処理」です。
しかし、`for` を用いずにそれを実現できるビルトイン関数があります。上手く使えると、コード量を削減し、より簡潔に記述することができます。
ただし、**可読性などの観点で、for のままのが良いシチュエーションもあるので注意。** 各要素に対して複雑な処理をするのであれば、`for` で書いた方が無難です。
## 前提知識 – `lambda` 式
次の 2つのコードは、いずれも「引数を 2倍した値を返す関数を、何らかのメソッドに渡す」という動作で等価です。
“`py
def func(e):
return e*2any.method(func)
“`“`py
any.method(lambda e: