Python関連のことを調べてみた2023年10月13日

Python関連のことを調べてみた2023年10月13日
目次

Python プログラムを介して Word 文書からテキストを抽出する方法

大型なWord文書のテキストを分析または処理する必要がある場合、特定のテキストを迅速に抽出することは手動でコピー&ペーストするよりも簡単かもしれません。この要件を実現するために、適切なテキスト処理ツールやプログラミング言語のライブラリを使用することができます。この記事では、Pythonのライブラリ「[Spire.Doc for Python](https://www.e-iceblue.com/Introduce/word-for-net-introduce.html)」を使用して、Word文書から特定のテキストまたはすべてのテキストを抽出する方法について説明します。

## ツール
* Visual Studio Code
* [Spire.Doc for Python](https://www.e-iceblue.com/Introduce/word-for-net-introduce.html)

このプロフェッショナル ライブラリは、[Word ドキュメントの作成](https://www.e-iceblue.com/Tutorials/Python/Spire.Doc-for

元記事を表示

Python から C を呼び出して利用する方法

Cは高速で計算できて良いのだけども、なにかを少し変えるごとにいちいちコンパイルしなおしてというのがちょっと面倒に感じるとことがあります。

そこで定型の計算のモジュールをCで用意し、UIやSensor I/OをPythonで行ない、PythonからCのモジュールを呼び出して計算を行ない、UIやSensor I/Oの変更はPython上で柔軟に行なうということをやってみましたところ意外と簡単で便利そうなので投稿してみました。

以下が定型計算のCのソースです。引数はa,bの入力と戻り値用のポインタ retPointerで、戻り値はreturnからのtmp2とretPointerに入れこんだtmp1です。

“`c:pyTest.c
#include

double test(double a, double b, double *retPointer ){
double tmp1 = a * b;
double tmp2 = a / b;
*retPointer = tmp1;
return tmp2;
}
“`
これをコンパイルす

元記事を表示

【メロディーメイカー】青のすみか

# 概要

子ども向けのプログラミング教育プロジェクトです。
呪術廻戦第2期OPの青のすみかをコーディングしてみました。

## ソースコード

“`python:main.py
from melody_maker import *

def aonosumika():
“””
青のすみか
“””
BPM = 152
BEAT = 60 / BPM
melody = [
[F5, BEAT/2],[Eb5, BEAT/2],[

元記事を表示

【言語検出】pycld3を使って文章の言語検出してみた

# はじめに
botの入力制限に特定の言語のみを受け取りたいという要望があったので、それを実現する手法の1つとしてpycld3というライブラリで検証してみようと思います。

**この記事でやること**

– 文章からpyclda3を用いて言語コードを取得する

# 実装
まずはライブラリのインストールから行います。
詳しくは[こちら](https://pypi.org/project/pycld3/)を確認してください。
pythonのバージョンは以下のように指定されているので今回は `python=3.8`の環境で実装しました。

“`
Requires: Python >2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
“`
余談ですが、python3.- ~ 3.5ではpycld2という別のライブラリが使えるようでした。

“`:インストール
pip install pycld3
“`
このライブラリは`cld3`という名前でimportできます。
“`py:main.py
import cld3
“`

元記事を表示

# ネットワークを学ぶ 第一回

コンソールで動く Python でのアプリケーションがひと段落したため、次はネットワークを勉強しようと思います。
第一回目はまず触ってみて、どんなものかを試してみようと思います

## What did?

– Python の `ソケットプログラミングHowTo`を読む
– https://docs.python.org/ja/3/howto/sockets.html
– チュートリアル的なプログラミングをしてソケット通信を触ってみる
– 基本的な単語や概念を理解する

## `ソケットプログラミングHowTo`を読む

**歴史**
ソケットは BSD Unix の一部としてバークレイで発明され、インターネットの普及と共に野火のごとく広まった。それももっともなことで、ソケットと INET のコンビによって世界中どんなマシンとも、信じられないほど簡単 (少なくとも他のスキームと比べて) に通信できるようになったのだ。

– ソケットって何?
– INET?
– インターネットソケット
– `AF_INET` はアドレスファミリーの一つである

元記事を表示

Pythonって何?なぜ人気なの?

# はじめに
こんにちは、2年目のエンジニアです。
今まで主にflutterでの開発をおこなってきましたが、
新しい挑戦として他の言語にも挑戦しようと思い、Pythonについて調べてみることにしました。
調べた結果をまとめて、Pythonの特徴などについてざっくりまとめてみました!

# 概要
2023年9月最新のTIOBEプログラミング言語ランキングで1位となっている『Python』
なぜここまで人気なのか?何が得意な言語?逆に何が苦手な言語?など
Pythonについて色々とまとめてみました。
これから少しでもPythonの勉強を始めようか迷ってる方の参考になればいいなと考えています。

# そもそもPythonって何?
Pythonとは、**インタープリタ型の高水準汎用プログラミング言語**です。
※インタープリタ型とはプログラミング言語で記述したソースコードをコンピューターが実行できる機械語の形式に逐次翻訳しながらプログラムを実行してゆくプログラムのこと
※高水準とはプログラミング言語の中でも人間にとって理解しやすい構文で書かれている言語

# Pythonで何が作れる?
Pyt

元記事を表示

ChatGPTとPythonで学ぶ カーネル密度推定

みなさんこんにちは。今日もChatGPTさんを講師にお迎えして、「ChatGPTとPythonで学ぶカーネル密度推定」というテーマで雑談したいと思います。それではChatGPTさん、よろしくお願いします。

### **assistant**:

こんにちは、みなさん。今日はカーネル密度推定についてお話しします。

カーネル密度推定(Kernel Density Estimation、KDE)は、データの確率密度関数を推定するための非パラメトリックな方法です。つまり、データの分布を推定するために使用されます。

PythonのライブラリであるScikit-learnには、KDEを行うための関数が含まれています。以下に、その基本的な使用方法を示します。

まずは必要なライブラリをインポートします。

“`python
import numpy as np
from sklearn.neighbors import KernelDensity
import matplotlib.pyplot as plt
“`

次に、ランダムなデータを生成します。

“`python
n

元記事を表示

FastAPIを用いたAPI開発テンプレート

## はじめに

**FastAPIはPythonのWEBフレームワーク**で、同じ分類のフレームワークとしてFlaskやDjangoなどが挙げられます。FlaskとDjangoはよく比較され、Flaskが最小限のコードで書き始められるシンプルなマイクロフレームワークと呼ばれるのに対し、Djangoはログイン機能、データベース管理などが初めから備わっておりフルスタックフレームワークと呼ばれています。

FastAPIはFlaskと似ているマイクロフレームワークで公式ドキュメントでは次のように紹介されいます。FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するためのモダンで高速(高パフォーマンス)な、Web フレームワークです。[1]

本記事では、以下の内容を扱います。

– 特徴である型ヒントとそれにより実現できるAPIドキュメントの自動生成
– SQLAlchemyを用いたデータベース操作
– alembicを用いたデータベースマイグレーション

以上の内容を、GitHubが提供するクラウド開発環境Codesapceで行います

元記事を表示

Amazon Bedrock APIで始めるLLM超入門④ LangChain応用編 Agent機能でWeb検索とWeb要約

LangChainのAgent機能を使用して、LLM外部のWeb情報を取り込んで生成できるようにします。

:::note
Agent for Amazon BedrockではなくLangChainのAgentです
:::

実現する機能の説明
– 自然言語の問い掛けに対して、LLMが「最新情報が必要」と判断した場合は、Web検索を行いその内容を元に生成します
– 自然言語の問い掛けに対して、LLMが「URLを含む文字列を渡された」と判断した場合は、該当URLの内容を取得し、それを元に生成します
– 上記以外の場合は通常のLLMのみで応答します

# LangChain Agentとは
LLM自身に実行するToolを考えさせて、実行します。
なんのこっちゃって感じですが、中を見ていくと理解が深まります。

https://python.langchain.com/docs/modules/agents.html

ReActの一種になるんでしょうか。(下の英語の説明の方が詳しい)

https://www.promptingguide.ai/jp/techniques/react

h

元記事を表示

統計ライブラリ pingouin で多変数パラメトリック検定

## 結論
変数が複数でも、pingouin なら 1 行で簡単にパラメトリック検定ができます。

“`python:HZtest.py
import pingouin as pg

pg.multivariate_normality(data, alpha=0.5)
“`

## 問題
python で統計解析を行いたいとき、SciPy を使うのがメジャーだと思います。
統計解析を行うとき、最初にデータがパラメトリックかノンパラメトリックかをパラメトリック検定で見ることが多いかと思いますが、SciPy ではシャピロウィルク[1, 2]がよく使われます。

“`python:Shapiro.py
from scipy.stats import shapiro

shapiro(data)
“`

この方法だと使えるデータは 1 つであり(恐らく想定しているガウス分布が単一なため)、複数の変数を見たいときには 1 つ 1 つ見ていく必要があります。

## pingouin
以上の問題に対し、pingouin ですと、各変数ごとにガウス分布を想定した手法[3]を使っているため、精

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その18 ゲーム盤の表示

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/4d55e73d6571fe85aa49

# 実装の進捗状況と前回までのおさらい

## 〇×ゲームの仕様と進捗状況

1. `正方形で区切られた 3 x 3 の 2 次元のゲーム盤上でゲームを行う`
2. `ゲーム開始時には、ゲーム盤の全てのマスは空になっている`
3. `2 人のプレイヤーが遊ぶゲームであり、一人は 〇 を、もう一人は × のマークを受け持つ`
4. __2 人のプレイヤーは、交互に空いている好きなマスに自分のマークを 1 つ置く__
5. 先手は 〇 のプレイヤーである
6. プレイヤーがマークを置いた結果、縦、横、斜めのいずれかの一直線の 3 マスに同じマークが並んだ場合、そのマークのプレイヤーの勝利とし、ゲームが終了する
7. すべてのマスが埋まった時にゲームの決着がついていない場合は引き分けとする

仕様の進捗状況は、以下のように表記します。

* 実装が完了した部分

元記事を表示

ラズパイとUSBカメラで自宅のハムスターを24時間どこからでも監視

:::note warn
システム自体は出来上がっておりますが、この記事はまだ完成していません。
完成形のソースをGitHubにて公開&各所の解説を追記する予定です。

qiitaさん、間違って公開してしまっても非公開にできるようにしてください。m(_ _)m
:::
# はじめに
自宅ラズパイとUSBカメラを使ってペット監視システムを自作したので投稿します。

# 開発背景(読み飛ばし推奨)
社会人になってから癒される機会って減りましたよね。
10代のころは好きな部活に励んだり、友達と遊んだり、恋人とデートしたり(?)、
してましたよね。楽しいことが多かったですよね。

学生というボーナスタイムを終え、
– 職場と自宅の往復
– コロナで人と接する機会が減少

こんな状況にしばらく身を置くうちに私の心はいつからか癒しを求めるように。。。。

そしてついに半年前くらいからハムスターを飼い始めてしまいました。

とにかく、かわいい!!

小学生くらいの時に飼っていたことはあったんですが
当時は「うんち汚い」「ケージが臭い」とか思って
あんまりかわいいと思いませんでした。

でもこの年

元記事を表示

【ITText自然言語処理の基礎】第1章演習問題を解いてみた

# 本記事の概要
この記事では「[IT Text 自然言語処理の基礎](https://www.ohmsha.co.jp/book/9784274229008/)」(オーム社)の **第1章「自然言語処理の概要」** に付いている演習問題を詳しく解説します。

書籍にも略解はありますが、解説が省略されていたりします。
略解でわからなくなったときは、この記事を参考にしてもらえればと思います!

# 問1
> Penn Treebankの品詞タグ付けのアノテーションガイドラインを参考にして、以下の例文の斜体の単語の品詞を答えよ。
> (1) He was _invited_ by some friends of hers.
> (2) He was very _surprised_ by her remarks.

“`:解答例
(1) VBN、動詞(過去分詞)
(2) JJ、形容詞
“`

Penn Treebankは **注釈付きコーパス(annotated corpus)** のひとつで、英語テキストの基礎的な解析に用いられる代表的なものです。ここでいう「注釈」とは「品詞タグ」の

元記事を表示

n週連続推薦システム系 論文読んだシリーズ28週目: (RecSys2023の論文を読むために!)Sequential推薦にはuni-directionalではなくbi-directionalなモデルが適しているぞ!というBERT4Recの論文を読んだ

# BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer

published date: 21 August 2019,
authors: Fei Sun, Jun Liu, Jian Wu, Changhua Pei, Xiao Lin, Wenwu Ou, Peng Jiang
url(paper): https://arxiv.org/abs/1904.06690
(勉強会発表者: morinota)

## どんなもの?

– RecSys2023の[AmazonのBERT4Recを継承した事前学習済み推薦モデルの論文](https://dl.acm.org/doi/10.1145/3604915.3608868)が読みたかったので、先に読んでみた。
– Amazonの2019年のbi-directionalなSequential推薦モデル BERT4Rec を提案した論文。
– sequential推薦タスクにおけるいくつかのベ

元記事を表示

【2023年】プロ野球のセリーグの戦績でデータ分析 ver3

# はじめに
今回は投手の成績に注目してデータ分析していきます

・前回の記事(打者成績)

https://qiita.com/wooooo/items/96982736e67e99a36254

# 引用したサイト
https://npb.jp/bis/2023/stats/tmp_c.html

# 環境構築
“`
pip install pandas numpy seaborn matplotlib japanize-matplotlib
“`

# 各項目との相関係数
![スクリーンショット 2023-10-11 15.57.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603047/da02e436-e48e-ba7d-b823-6347dfe519f2.png)

|順位|項目|相関係数
|–|–|–|
|1位|完投|0.93|
|2位|暴投|0.83|
|3位|無四球|0.83|
|4位|失点|0.80|
|5位|四球|0.77|
|6位|自責点|0.71|
|7位|防御

元記事を表示

Amazon Bedrock APIで始めるLLM超入門③ LangChain基本編+チャット履歴

LLMを弄っているとLangChainが付いて回るので、LangChainからBedrockを呼び出してみます。

# LangChainとは?

LLMを使った機能開発を行いやすくするOSSのフレームワークです。頻繁に更新されます。特にBedrockがGA直後なのでBedrock周りはちょこちょこ修正されているように思います。

https://python.langchain.com/docs/get_started/introduction

# ローカル環境の準備
LangChainをインストールします。
“`:ターミナル
> pip install -U langchain
“`

# ログ出力の設定
LangChainが生成したプロンプトを確認する為、BedrockからCloudWatch Logsにログを書き出す設定をします。
まずロググループを作成します。保持期間は適当です。
【Python】DBテーブルのレコードと類似したダミーレコードを大量に生成する方法

# 概要
ダミーDBを作成する際、とあるDBテーブルのレコードと類似したレコードを大量に入れたい、という状況になりました。
そこで、Pythonで大量にダミーデータを作成するコードを作成。

# サンプルコード
以下、サンプルコードです。
100-500文字ランダムに日本語が入るカラム`comment`があるので、`generate_random_text`という関数を定義しています。また、`sample_code`は`1`から`5`の数値が入るカラム、`id`は一意のものとします。

結果は、CSVファイルで出力されます。DBeaverとかだと、インポート機能がGUIで使えるのでダミーDBがすぐ出来上がります。

“`py
import os
import pandas as pd
import random
from datetime import datetime

def generate_random_text(min_length, max_length):
# ランダムな長さのテキストを生成
length = random.randint(min_le

元記事を表示

Langchainを使用したKnowledge Graphの構築と質問応答

# はじめに
「Knowledge Graph(知識グラフ)」は、情報を関連付けて構造化するグラフベースのデータモデルです。エンティティ(例:人、物、場所、概念など)間の関係をノードとエッジで表現することができます。以前紹介したRetrieval(本記事の下に該当記事へのリンクがあります)を用いた方法と似ているのですが、Retrievalが基本的には1:Xでデータベースから回答に関連した情報を探しにいくのに対し、知識グラフでは、逆引きを含むX:Xのような情報が複雑に関連している場合や、複雑なクエリの解決に役立ちます。一方で、情報の正確性確保やスケーラビリティの問題などの課題も存在します。

今回は、Langchainを使用して、テキストから知識グラフを構築し、その知識グラフを基に質問応答を行う方法について解説します。知識グラフを使うことで、ChatGPTだけでは回答の難しい、現在の出来事や専門知識に関する質問にも対応することが可能になります。

# 1. 知識グラフの構築
まず、テキストから知識グラフを構築する方法について見ていきます。

“`python
from langchai

元記事を表示

BigQuery内のテーブルなどを一覧化する

# 概要

BigQueryでプロジェクト内のテーブルやudfなどをリストとしてまとめたかったのだが、意外と方法についてまとまっている情報がなかったのでtsvで出力するスクリプトを作成した。

# やり方

INFORMATION_SCHEMAを使うことで、プロジェクトに対するデータセット、データセットに対するテーブルやルーティンが取得できるが、残念ながらプロジェクトから各テーブルを参照することができないので、pythonでスクリプトを作成した。

“`python:一覧取得
from google.cloud import bigquery

client = bigquery.Client()

for project in client.list_projects():
for dataset in client.list_datasets(project.project_id):
for routine in client.list_routines(dataset):
print(“\t”.join([project.proj

元記事を表示

adsf, poetryでpythonのバージョンを変える

pythonの環境構築が難しいので、メモです。

### 環境
– OS: windows11, WSL(Ubuntu 22.04.2 LTS)
– バージョン管理: asdf v0.13.1
– 仮想環境、パッケージ管理: poetry version 1.1.14

### やりたいこと
– poetryで管理している仮想環境(venv)におけるpythonのバージョンを変える
:::message
– すでにpoetryで作成したvenv上にpythonがインストールされている。
:::
### 前提
– asdfのインストール
– poetryのインストール
– poetryプロジェクトの作成

### 手順
1. asdfでpythonの当該バージョンをインストール
~~~log
$ asdf install python 3.12.0

python-build 3.12.0 /home/xxx/.asdf/installs/python/3.12.0
Downloading Python-3.12.0.tar.xz…
-> https://www.python.org

元記事を表示

OTHERカテゴリの最新記事