Translate

Post Date:2023年7月16日 

Goolge Colabでお手軽テキストマイニング(日本語前処理)

象と散歩:pythonで遊ぶ 

Google Colaboratory は、Google アカウントさえ持っていれば、Python を実行できる素晴らしい環境です。準備やインストールが不要で、手軽に Pythonプログラミングを楽しめます。

テキストデータの分析(アンケートのフリーコメントや問い合わせ内容など)も、Google Colaboratory の環境を使えば、手軽にPythonでテキストマイニングができます。

今回は、テキストの前処理に関する2つのステップについて説明します。

  1. テキストの読み込み テキストファイル、CSV、Excel ファイルなどに保存されたテキストデータを読み込む方法です
  2. 読み込んだテキストの正規化 テキストの表記の揺れを少なくして文章を分析しやすい形式に変換します

1. 対象ファイルを読み込む

3つの方法でテキストデータを読み込む方法について説明します。2番目と3番目の方法では、pandasパッケージを使用します。

  1. テキストファイルの読み込み テキストファイルの中にあるテキストデータを読み込む方法です。open()関数を使用してファイルを開き、ファイルの中身をテキストデータとして抽出します。
  2. CSVファイルの読み込み CSVファイルに格納されたテキストデータを読み込む方法です。pandasパッケージのread_csv()関数を使用します。この関数にはCSVファイルのパスを指定し、データをデータフレームとして読み込むことができます。
  3. Excelファイルの読み込み Excelファイルに格納されたテキストデータを読み込む方法です。pandasパッケージのread_excel()関数を使用します。この関数にはExcelファイルのパスを指定し、データをデータフレームとして読み込むことができます。

ファイルのアップロード

Google Colaboratory ではGoogleドライブをマウントして利用することもできますが、下例は、ファイルをセッションストレージ(セッションが接続されている間だけ使えるストレージ)の "/content/sample_data" にアップロードする方法です。

  1. Colabの左端にあるファイルアイコンをクリック(下図オレンジ枠)
  2. sample_dataフォルダを開く
  3. セッションストレージにアップロード(下図グリーン枠)

ドラッグアンドドロップでもアップロードできます。

Google Colaboratory:ファイルのアップロード

アップロードするsample.txtの内容は下記のようなものです。

<sample.txt>
甘くてフルーティーな味で最高
チョコレートとストロベリーの組み合わせが最高!
香りが良くて食べやすい!おすすめです。
子供たちも大喜びのおいしさ!リピート決定。
さわやかな酸味と濃厚なチョコのバランスが絶妙。

エンコーディング

テキストデータを読み込む際には、エンコード(Encoding)を指定する必要があります。エンコードは、テキストデータのバイト列(バイナリデータ)への変換方法や規則を指定するものです。日本語などの2バイト文字データを正しく扱うためには、適切なエンコードを指定する必要があります。

一般的なエンコーディングとしては、以下のようなものがあります。

  • UTF-8: 広く使用されるUnicodeエンコーディングで、多くのプラットフォームやシステムでサポートされています。MacやLinux環境でよく使われます。
  • Shift-JIS: 主にWindows環境で使われる日本語エンコーディングです。

下例は、/content/sample_data/にあるsample.txtを読み込むコードです。file_pathに読み込むテキストをフルパスで指定しています。パスは当該フォルダを右クリックして"パスをコピー"で取得できます。

Google Colaboratory:ファイルパスの取得

UTF-8のファイルを指定する場合です。変数 textに読み込んだ内容を格納します。

file_path = '/content/sample_data/sample.txt'
with open(file_path, 'r', encoding='utf-8') as file:
    text = file.read()

print(text)

Shift-JISの場合は下記のようになります。

file_path = '/content/sample_data/sample.txt'
with open(file_path, 'r', encoding='shift_jis') as file:
    text = file.read()

print(text)

print(tex)の結果です。

甘くてフルーティーな味で最高
チョコレートとストロベリーの組み合わせが最高!
香りが良くて食べやすい!おすすめです。
子供たちも大喜びのおいしさ!リピート決定。
さわやかな酸味と濃厚なチョコのバランスが絶妙。

エンコードがわからない場合

chardetは、Pythonで利用できるエンコーディング推定ライブラリです。テキストのエンコードがわからない場合は、chardetでエンコードを確認してファイルを読み込みます。

下例では、sample.txtを読み込んで何のエンコードかを調べた結果をfle_encordingに格納し、そのエンコーディングでファイルを再度読み込みます。

import chardet

# ファイルのエンコーディング情報を取得
file_path = '/content/sample_data/sample.txt'
with open(file_path, 'rb') as f:
    file_encording= chardet.detect(f.read())['encoding']

print(file_encording) #エンコード情報

# 取得したエンコーディング情報でファイルを読み込む
with open(file_path, 'r', encoding=file_encording) as f:
    text = f.read()

print(text)

CSVからの読み込み

CSV(カンマ区切り)の場合は、pandasのread_csv()関数を使って列名を指定してデータを読み込みます。

読み込むcsvは、1列目の列名が「no.」、2列目の列名が「回答」です。

<sample.csv>
no.,回答
1,甘くてフルーティーな味で最高
2,チョコレートとストロベリーの組み合わせが最高!
3,香りが良くて食べやすい!おすすめです。
4,子供たちも大喜びのおいしさ!リピート決定。
5,さわやかな酸味と濃厚なチョコのバランスが絶妙。

下例は、上記のCSVファイルのうち列名が「回答」となっている列を取得するコードです。改行区切りで変数 textに格納します。

import chardet
import pandas as pd

# ファイルのエンコーディング情報を取得
file_path = '/content/sample_data/sample.csv'
with open(file_path, 'rb') as f:
    file_encording= chardet.detect(f.read())['encoding']

# CSVファイルを読み込んでテキストデータを抽出
df = pd.read_csv(file_path, encoding=file_encording)
text = '\n'.join(df["回答"])  # 回答列名を適宜変更してください

print(text)

print(tex)の結果です。

甘くてフルーティーな味で最高
チョコレートとストロベリーの組み合わせが最高!
香りが良くて食べやすい!おすすめです。
子供たちも大喜びのおいしさ!リピート決定。
さわやかな酸味と濃厚なチョコのバランスが絶妙。

Excelから読み込む場合

Excelファイルから直接読み込むことも可能です。pandasのread_excel()関数を使います。シート名と列名の指定が必要です。

import chardet
import pandas as pd

# ファイルのエンコーディング情報を取得
file_path = '/content/sample_data/sample.xlsx'
with open(file_path, 'rb') as f:
    file_encording= chardet.detect(f.read())['encoding']

# Excelファイルを読み込んでテキストデータを抽出
sheet_name = 'シート1'  # 読み込むシートの名前を指定してください
df = pd.read_excel(file_path, sheet_name=sheet_name, encoding=file_encoding)
text = '\n'.join(df["回答"])  # 回答列名を適宜変更してください

print(text)

print(tex)の結果です。

甘くてフルーティーな味で最高
チョコレートとストロベリーの組み合わせが最高!
香りが良くて食べやすい!おすすめです。
子供たちも大喜びのおいしさ!リピート決定。
さわやかな酸味と濃厚なチョコのバランスが絶妙。

2. テキストファイルの正規化

読み込んだテキストの正規化(表記の揺れの是正)を行います。正規化=文字の統一化です。

NFKC(Normalization Form KC)は、Unicodeの正規化形式の一つであり、日本語のテキストに特に有用です。NFKC形式では、以下のような処理が行われます:

  • 半角カタカナ→全角カタカナ
  • 全角英数字記号の半角化
  • 互換性のある文字の置換(①→1, ㋿→令和)

もうひとつ日本語表記の揺れを補正するライブラリとしてneologdnがあります。mecab と neologdn辞書での形態素解析をする前の正規化(表記の揺れの是正)として推奨されていますが、それ以外のケースでも有用です。以下のような処理が行われます。

  • 半角カタカナ→全角カタカナ
  • 全角英数字記号の半角化
  • 連続した長音記号を削除
  • 文字と文字の間のスペースを削除

実際に2つの正規化処理でどのようにテキストが変換されるのかをみていきましょう。


NFKCで正規化

NFKCの特徴は、互換性のある文字の置換です。①、㋿、㌢ といった文字が、1、令和、センチなどに変換されます。

import unicodedata

text = "カタカナカタカナ ABCABC ! ! 123 123 ①テキスト マイニング わーーーい 1984〜2000 ㋿ ㌢"

normalized_text = unicodedata.normalize('NFKC', text)
print(normalized_text)

実行すると下記の結果が出力されます。

カタカナカタカナ ABCABC ! ! 123 123 1テキスト マイニング わーーーい 1984〜2000 令和 センチ

neologdnで正規化

neologdnを使うにはパッケージのインストールが必要です。neologdnでは、"テキスト マイニング"→"テキストマイニング"と文字間のスペースが削除されたり、連続する長音の削除、チルダの削除などが行われます。

!pip install neologdn

import neologdn

text = "カタカナカタカナ ABCABC ! ! 123 123 ①テキスト マイニング わーーーい 1984〜2000 ㋿ ㌢"
normalized_text = neologdn.normalize(text)

print(normalized_text)

実行すると下記の結果が出力されます。

カタカナカタカナABCABC ! ! 123 123 ①テキストマイニングわーい19842000 ㋿㌢

NFKCとneologdnでテキストを正規化する

NFKCとneologdnには同じ正規化処理もあれば異なる処理もあるので、二つを組み合わせて実施しましょう。NKFCで正規化をした結果をneologdnで正規化します。

!pip install neologdn

import unicodedata
import neologdn

text = "カタカナカタカナ ABCABC ! ! 123 123 ①テキスト マイニング わーーーい 1984〜2000 ㋿ ㌢"

normalized_text = neologdn.normalize(unicodedata.normalize('NFKC', text))

print(normalized_text)

実行すると下記の結果が出力されます。

カタカナカタカナABCABC ! ! 123 123 1テキストマイニングわーい19842000令和センチ

読み込んだテキストを正規化する

sample.txtは正規化しても結果は変わりませんが、テキストファイルを読み込んで正規化するプログラムの例が下記になります。

!pip install neologdn

import chardet
import unicodedata
import neologdn

# ファイルのエンコーディング情報を取得
file_path = '/content/sample_data/sample.txt'
with open(file_path, 'rb') as f:
    file_encording= chardet.detect(f.read())['encoding']

# 取得したエンコーディング情報でファイルを読み込む
with open(file_path, 'r', encoding=file_encording) as f:
    text = f.read()
    
# テキストの正規化
normalized_text = neologdn.normalize(unicodedata.normalize('NFKC', text))

print(normalized_text)

正規化されたテキスト文章が、変数 normalized_text に格納されます。

次回は、日本語の文章をテキストマイニングする前処理として重要な形態素解析(単語や文節で区切り、品詞等を判別する)について説明していきたいと思います。

Post Date:2023年7月1日 

小型サーキュレーターの選び方

象だって涼しみたい by DALL·E 2

サーキュレーターは、直進性の高い風を送り出し室内の空気を循環させます。エアコンと併用すると夏は冷気を部屋全体に循環させ、冬は暖気を足元に運んでくれます。また梅雨時は部屋干しの衣類に風をあてることで生乾きを防いでくれます。

今夏は、DCモーター扇風機と併用でスタートしましたが、オールシーズンで使うサーキュレーターを選ぶ基準としたのが下記の3つです。

サーキュレーターを選ぶ基準
  • ① 静音でエコなDCモーター
  • ② コンパクトでシンプルなデザイン
  • ③ 部屋の空気を循環させるために十分な風量

DCモーターの扇風機を使って実感した静音性は、寝室やリビングなどのくつろぎの場所では重要な要素です。そして夏場はリビングに扇風機と2台置きになるので、物理的に邪魔にならないコンパクトさと、部屋に調和し、見た目にも美しいシンプルなデザインが求められます。もちろんサーキュレータとして空気循環を十分にできる風量があるというのは欠かせません。


おすすめの小型サーキュレーターブランドとモデル

DCモーター」「コンパクトサイズ」「シンプルなデザイン」「十分な風量」という条件に、価格を鑑みて候補としたのが、下記の3機種です。

  • アイリスオーヤマ PCF-BD15T
  • 山善 YAR-BD182
  • TAKASYOU XR-LRK02(2024年モデル XR-YY03)

アイリスオーヤマ PCF-BD15T

アイリスオーヤマのDCモーター サーキュレーターの中で、PCF-BD15Tの機能性から生まれたシンプルなデザインが素敵です。独自に開発された前面カバーである特殊形状スパイラルグリルと、ドーム型のデザインによって、直線的な風で、遠くまで届くスパイラル気流を作り出します。

アイリスオーヤマ PCF-BD15T

PCF-BD15Tは、風量を微風から強風まで5段階で調節することができます。また、上下左右に首振りする機能も備えており、3Dランダム送風が可能です。これにより、広いスペースでも均一な風を届けることができます。

このサーキュレーターの適用床面積は16畳となっており、一般的なリビングや寝室などの広いスペースでも効果的に使用することができます。快適な空気の循環と換気を実現し、室内の快適度を向上させることができます。

【PCF-BD15Tの特徴】
  • 特殊形状スパイラルグリルで直進性の高い気流
  • 風量5段階調節3Dランダム送風
  • 強制攪拌機能(部屋の空気を攪拌して温度ムラを少なく)
  • 2/4/8時間の切タイマー

山善 YAR-BD182

山善のYAR-BD182は、温度センサー機能を備えたDCモーター制御のサーキュレーターです。さらに、静音モードや立体首振り機能も搭載されており、寝室やリビングなどのさまざまなシーンで快適な空気循環を実現します。デザインもコンパクトでシンプルですが、26畳までカバーしてくれます。

山善 YAR-BD182
【YAR-BD182の特徴】
  • 温度センサーで設定温度に合わせて自動でON/OFF(24/26/28℃の3段階)
  • フロントガードとリアガードを外して水洗いができる
  • 2/4/8時間の切タイマー

TAKASYO XR-LRK02

XR-LRK02は、軽量でコンパクト、そしてシンプルなデザインのDCモーターの小型サーキュレーターです。

XR-LRK02 グレー/ホワイト

上下左右に自動首振りができて、イオン除菌やアロマ対応の機能もあります。風量は6段階調節できて、最大で5.5m/sのパワフル送風で20畳までの部屋の空気を循環できます。静音性は3機種の中で最も高いです。風量1では静に空気を攪拌してくれます。

マイナスイオンを発生させて空気中の細菌やウイルスを除去するイオン除菌機能がありますが、その効果については科学的な根拠は不十分です。また自動運転モードでは、温度センサーによって自動で風量を変化させてくれます。

@リビングでの使い方
  • 3Dランダム送風
  • イオン機能
  • 自動運転モード
XR-LRK02 ホワイト

リビングではDC扇風機と併用していますが、室温が30°Cぐらいまでであれば冷房なしで過ごせます。

@寝室での使い方
  • 首振左右(風が直接当たらない斜め上)
  • イオン機能
  • 風量1

で使っています。

寝室では天井や壁にあたって反射した風が優しく身体を包んでくれるので、とても快適な睡眠環境となりました。

【XR-LRK02の特徴】
  • イオン除菌機能
  • 3Dランダム送風機能
  • 温度センサーによる自動モード
  • アロマ対応
【XR-LRK02のデメリット】
  • 前面カバーの取り外しにネジを外さなければならない
  • リモコンを格納できる場所がない(他2機種はある)

XR-LRK02は販売終了となり、最新モデルは更にパワーアップしたXR-YY03です。(追記:2024/07)


アイリスオーヤマ・山善・高昇を比較する

下表は候補とした3機種の比較表です。

アイリスオーヤマ 山善 TAKASYOU
型番 PCF-BD15T YAR-BD182 XR-YY03
サイズ cm 22.2D x 22.2W x 29.6H 23D x 22W x 31H 24D x 24W x 31H
重量 約1.5Kg 2.61kg 1.6kg
消費電力 18W 22W 15W
適用床面積 16畳 26畳 32畳
左右 80° 80° 90°
上下 80° 90° 90°
3D首振り ⚪︎ ⚪︎ ⚪︎
風量 5段階 5段階 12段階
風の到達距離 17m - 32m
静音(最小風量) 35db以下 約30dB 39dB以下
自動切タイマー 2/4/8時間 1/2/4時間 1-10時間
温度センサー 24/26/28℃
マイナスイオン

エコで静かな小型DC サーキュレーターを使って快適な居住環境を構築しましょう。

Post Date:2023年6月22日 

風を彩る!美しいDCモーター扇風機とサーキュレーターの最強コンビネーション

XR-LRK02 グレーとホワイト

夏の訪れと共に、快適な涼風を求めてさまざまな方法を模索してきました。数年前にバルミューダーの扇風機を購入しましたが、DCモーターが作り出す微風の心地よさは想像以上でした。またバルミューダーは存在感のある扇風機にはデザインが重要であることも教えてくれました。

そして、さらなる「快適さ」と「効果的な風の循環」を実現するためにサーキュレーターと組み合わせてみたら、これが、

「とっても、いい。」

DCサーキュレーターで部屋全体の空気を循環させ温度や湿度の均一化し、DC扇風機で広範囲に心地よさと涼しさを体感できる微風を送ることで、効果的な涼風が享受できます。

DCサーキュレーターとDC扇風機は、最高で最強な組み合わせです。


サーキュレーターと扇風機の違い

扇風機とサーキュレーターの違いは前述していますが目的の違いから羽根の形状や動作方法が異なります。

  • 扇風機:
    広範囲に優しい風を作り出し、人が涼をとることを目的
  • サーキュレーター:
    直線的で強力な風を作り出し、部屋全体の空気を循環させることを目的

羽の違い

一般的に扇風機の羽根は平面的な形状をしており、角度がついていて回転しながら風を広範囲に送ることができます。一方、サーキュレーターの羽根は風切り羽根と呼ばれ、直線的で広範囲に風を送るために、幅広く、片側がカーブ状になっているものが多いです。風切り羽根は高速で回転し、風を一方向に強力に送り出すことができます。


動作の違い

扇風機は涼をとるためのものなので人に風があたる範囲での可動域ですが、サーキューレーターは上下も90°まで動き、360°に回転したり、上下左右に首を振りながら広範囲の空気を拡散させることができまるものもあります。


なぜDCモーターなのか

DCモーターの扇風機/サーキュレーターには下記の特徴があります。

  1. 省エネ:
    DCモーターはACモーターよりもエネルギー効率が高く、消費電力が少ないため、省エネルギーな運転が可能
  2. 安定した回転速度:
    DCモーターは一定の電圧で電流が流れるため、低速回転(微風)から高速回転まで安定した回転を実現
  3. 静音性と振動の少なさ:
    DCモーターは騒音や振動が少ないので、静かな動作音でリラックスできる快適な空間を提供可能

これらの特徴により、DCモーター 扇風機/サーキュレーターは、エネルギー効率の高さ、安定した回転速度、静音性などを備えており、快適な風を効率的に提供することができます。微風を求めるならDCモーター扇風機/サーキュレーターの一択です。

さらに、DCモーターなら省エネルギーな運転により電気料金の節約や環境負荷の軽減にも貢献できます。


オススメのDCモーター サーキュレーター

DCモーター扇風機との併用になるので、

  • 小型で邪魔にならない
  • シンプルなデザイン
  • 安心な価格

という観点で探して、TAKASYOU(高昇) サーキュレーター XR-LRK02 を購入。最新モデルは、XR-YY03です。(追記:2024/7)

xr-lrk02-gy

Amazonでは、ブランド名がTENTSU(天通)となっていますが、製品の箱にも保証書にも輸入元 TAKASYOU(株式会社高昇)とあります。ちなみに生産国は中国です。

XR-LRK02 はTAKASYOが輸入元

株式会社高昇は2006年に岡本夫妻でデザイン会社としてスタートした企業ですが、現在では、美咲氏が株式会社高昇、昇氏が株式会社天通の代表取締役社長を務めているようです。

また天通のサイトではメーカー希望小売価格:¥15,200(税込)とありますが、高昇(TAKASYOU)オンラインストアでは¥6,380で販売されています。

下記は、サーキュレーターXR-LRK02の製品紹介動画です。

  1. 小型(W24cm×D24cm×H31cm 2.2Kg)
  2. シンプルで可愛らしいデザイン
  3. 3D首振り(左右 80° 上下90°)
  4. マイナスイオン発生&除菌機能
  5. 温度センサーによる自動モード
  6. ハイパワー送風 18m
  7. リモコン付き
【引用】高昇ストア

と、なかなかの優れモノです。自動モードは温度によって風量も変更されるので、『3D首振り』+『マイナスイオン』+『自動モード』で使っています。

XR-LRK02-GY わかりやすいコントロールパネル

3D首振りもなかなか可愛らしい動きで愛着が持てます。

xr-lrk02
【引用】楽天市場

動かすときにカワイイ持ち手が意外と便利です。

XR-LRK02の持ち手

「高昇?」「天通?」「いくらなの?」と、購入前に調べていたときは少し心配していましたが、サイズ感と使い勝手がよかったので、グレーに続いて2台目としてホワイトも購入。

寝室とリビングに置いています。普段、家電操作のON/OFFは「Alexa, ...」と言って操作しているのですが、音声操作だとON/OFFしかできないので、寝室ではリモコンが必須です。

XR-LRK02は販売終了となり、最新モデルは更にパワーアップしたXR-YY03です。(追記:2024/07)


オススメのDCモーター扇風機

下にあげた3モデルは何もサーキュレーターとしても利用ができますが、部屋の空気の循環は、小型DCモーターサーキュレーターに任せて、扇風機は涼風にあたるために使っています。

DCモーター扇風機を選択するポイントは2つです。

  1. どのような風を提供してくれるのか
  2. 部屋にマッチするシンプルなデザイン

The GreenFanはとても完成度の高い風を届けてくれますが価格が高い、、、。

そこで、2万円台中盤で風へのこだわりを強く感じる kamomefan(カモメファン) と 安価でデザイン性が高いsiroca(シロカ) の3つをお勧めします。

オススメと言いながらも kamomefan は、購入のときの候補としながらも、結局、買っていないので、実際に使ったことはありません。


BALMUDA(バルミューダー)The GreenFan

BALMUDA The GreenFan

『独自の二重構造の羽根により、The GreenFanは一般的な扇風機に比べて風が約4倍に広がります。』

BALMUDA The GreenFan 二重構造の羽

とありますが、下の写真でもわかるように直線的に風を届けるのでなく、大きく広がっていくのがThe GreenFan の最大の特徴です。この大きな面で移動する空気の流れが自然に近い風を感じさせてくれます。

【引用】amazon.co.jpから

Kamomefan(カモメファン)+c series

2022年モデルからNakashima Braid R-04 という名前の新しい羽になりました。

【引用】楽天市場から

「風のやさしさ、キメの細かさを維持しながら、風量や到達距離が向上」とあり、到達距離は、他メーカーの扇風機を圧倒する最大25メートルです。

【引用】kamaefan +c シリーズ 風の到達距離

更に静音性も向上しているとあります。一度は使ってみたい扇風機です。


siroca(シロカ)

2台目のDCモーター扇風機と購入したのが、『siroca siroca DCリビング扇風機 SF-L251』です。シロカの扇風機には、音声認識、人認識センサー、ハンドサインなど多機能モデルもありますが、付加機能がないベーシックモデルのため価格も抑えられています。

siroca DC 扇風機 SF-L251

シンプルでスタイリッシュなデザインです。バルミューダーと同じくヘッド部でボタン操作できます。リモコンの収納方法がカワイイ。

siroca DC 扇風機 SF-L251

AC/DCコンバーターが内蔵されているのでコンセントがスッキリというのがステキです。

siroca DC 扇風機 SF-L251

風は面で身体にあたるというよりは、直線的な風ですが、気持ちよい微風を届けてくれます。電源をOFFにすると首が正面に戻ってくるという日本企業の製品らしい小技を持っています。

下記の動画にシロカ独自の「ふわビューン技術」が紹介されています。

「やさしい」から「パワフル」な風までシーンに合わせた使い方ができるコスパの高いDCモーター扇風機です。

象と散歩:人気の投稿(過去7日間)