fc2ブログ

.NET MAUIを味見する

 年末に家族用に購入したWindows11 PCがあまり利用されていません。もったいないのでMacユーザの私ですが、「.NET MAUI」を味見してみようと思い立ちました。M1プロセッサのMac Miniでは「.NET MAUI」は現時点で対応していないので試せませんが、IntelチップのWin11マシンを手に入れましたので、味見をしてみました。

 今回試したのはMicrosoftのWebページに記載の内容で、手順通りにサンプルコードを実行しました。参考サイトは、「インストール」と「最初のアプリをビルドする」です。

 Win11PCにインストールしたVisual Studio 2022 Communityのバージョンは17.0.5の最新版でしたが、「.NET MAUI」を実行するには「17.1.0 Preview版」以上が必要なので、Upgradeしました。Visual Studio 2022 Communityのメニューバーから「ヘルプ」-「更新プログラムの確認」を選択し、「Visual Studio Installer」で更新チャネルを「Preview」を選択して「OK」。VS_upgrade1_220130.png更新プログラムのバージョンを確認して「更新」。VS_upgrade2_220130.png再起動すると、Preview版(17.1.0 Preview 4.0)が立ち上がりました。VS_upgrade3_220130.png「新しいプロジェクトの作成」ボタンを押して、「.NET MAUI」のテンプレートを探しましたが、見当たらなかったので、Visual Studio Installerを立ち上げ、「.NET MAUI」を検索すると、チェックが入っていなかったので、チェックを入れて追加インストールしました。VS_upgrade4_220130.pngVisual Studioを再起動すると、今度はテンプレートが見つかりましたので、選択して「次へ」。MAUI_1_220130.png立ち上がったテンプレートのプロジェクトの中身は以下の通りです。MAUI_2_220130.png内容の精査はせずに、取り急ぎ、参考サイト通りに進めました。「Android Emulator」ボタンを押して、「Create」。Pixel 5のEmulatorが作成されるようです。MAUI_3_220130.pngAndroidデバイスマネージャーで実行準備ができた後に「開始」ボタンを押すと、MAUI_4_220130.pngHyper-V機能をオンにするように言われたので、MAUI_5_220130.pngWindows11のWindowsの機能からHyper-Vに関する項目にチェックを入れました。MAUI_6_220130.pngMAUI_7_220130.png実行すると、Android Emulatorが立ち上がりますが、プログラムの画面が立ち上がるまではしばらく時間がかかりました。MAUI_8_220130.png立ち上がった画面はこんな感じです。MAUI_9_220130.png「Click me」を押すと、Current countの数がカウントアップされる単純なものですが、Emulatorで正常に動作することは確認できました。Emulatorの右側のアイコンの「・・・」を押すと、Extended Controls画面が表示されました。細かい制御ができそうです。MAUI_10_220130.png
 今回は、MAUIの実行環境構築とテンプレートを実行しただけですが、今後いろいろ触って遊んでみようと思います。
スポンサーサイト



nlplotを使う(3)

 前回前々回にお話しした自然言語処理の分析・可視化ツールのnlplotを、今回は自分の過去のブログのテキストデータに当てはめてみました。
 ブログのテキストデータ自身は管理ページのバックアップをダウンロードすることで楽にできますが、そのテキスト文章からhtmlのタグを取ったり、プログラムソースコード類を削除するのに大変骨が折れました。
 nlplotについての説明は前回前々回に行いましたので、今回は結果のみをお話します。

1. N-gram 棒グラフ
 Uni-gramの結果は以下の通りで、単語を確認する限り、当然のことながら身に覚えのあるものばかりでした。ブログのカテゴリにもあるようにコンピュータやプログラミング関係の言葉が多いことが分かりました。uni-gram_220103.png Bi-gramの結果は以下の通りです。bi-gram_220103.png本来は2語で1語として扱いたい、raspberry pi、visual studio、sd カード、Wi-Fi等が分離して上位にランクインしているのは面白いです。それなりにうまく分析できているようですね。

2. N-gram ツリーマップ
 Uni-gramのツリーマップ(エリアマップ)です。uni-gram-tree_220103.png
3. 単語数のヒストグラム
 各文章中の名詞の単語数のヒストグラムです。3語が最高頻度の結果です。word_histogram_220103.png4. Wordcloud
 ブログのキーワードをほぼ網羅できています。wordcloud_220103.png5. 共起ネットワーク
 単語数が多いので、設定によっては見にくくなりますが、こんな感じです。全体把握もそうですが、局所的に眺めるのも面白いかもしれません。Co-occurrence-network_220103.png6. サンバーストチャート
 内円の番号毎の単語類を見る限り、関係のあるカテゴリに分類されているように思いました。sunburst_220103.png

今回の分析で、ますますnlplotの面白さがよく分かりました。またどこかで利用したいと思います。

nlplotを使う(2)

前回の続きです。今回は可視化できるグラフの4〜6のお話をします。
 4. Wordcloud
 5. 共起ネットワーク
 6. サンバーストチャート

4. Wordcloud
 WordCloudとは、文章中で出現頻度が高い単語を選んで、その頻度に応じた大きさで図示する手法のこと。頻繁に登場している単語であればあるほど文字のサイズが大きくなっており、一目でその文章における重要な要素を把握できます。wordcloud_220102.pngこのWordCloudを見るだけで、桃太郎の話であることがよく分かります。

5. 共起ネットワーク
 共起ネットワークは、単語が共通に出現する関係(共起関係)を円(ノード)と線(エッジ)で表示した図です。どんな単語が同じコメント内に出現しやすいかが感覚的に把握できます。Co-occurrence-network_220102.png非常に面白い可視化の方法で大変興味深いです。ノードとエッジの情報をもとに可視化されていますね。

 node_dfの中のデータは以下の通りで、adjacency_frequencyの値はエッジの数、communityの値はノードの色分けのことですね。node_data_220102.pngbetweeness_centrality、clustering_coefficientについては深く理解できていません。後日要調査です。edge_dfの中のデータは以下の通りで、source_codeとtarget_codeは単語に振られたユニーク番号のようですね。edge_frequencyは理解できていないので、これも要調査です。edge_data_220102.png6. サンバーストチャート
 サンバーストチャートは、階層データの表示に適しており、最も内側の円が、階層の最上位のデータで、外側の円が内側の円とどのように関連するかを表すのに便利です。Sunburst_220102.png今回の結果では、内側の番号0〜6がnode_dfの中のデータのcommunityの値と一致しています。1つのcommunityがどのような寄与因子に分解されるかを知る上で非常に便利ですね。

 nlplotを使うことで、簡単にクオリティ高く、自然言語処理ができそうな気がしました。まだ、勉強することがたくさんありますが、詳しく理解しようと思います。

nlplotを使う(1)

 自然言語処理について興味があり、ネット上を物色しているとnlplotという分析・可視化ライブラリを見つけましたので、早速試してみました。作者の詳細解説もありましたので参考にしました。

可視化できるグラフは以下の通りです。
 1. N-gram 棒グラフ
 2. N-gram ツリーマップ
 3. 単語数のヒストグラム
 4. Wordcloud
 5. 共起ネットワーク
 6. サンバーストチャート

 題材として青空文庫からダウンロードした「桃太郎」を例に進めます。まず、ダウンロードしたテキストファイルから前処理として、ヘッダー、フッター、ルビ等を取り除いて、改行等のコードも削除したテキストデータファイルを準備します。この手の作業を自動化するプログラムはネット上で多くアップロードされていますので、参考にしても良いと思います。
 ソースコードはGitHubの作者のサイトに記載のものを参照しました。

プログラムの流れは、
 ① テキストデータ全体読み込む。momotaro_1_220102.png ② 一文ずつ(句点で)分割してDataFrameに保存する。momotaro_2_220102.png ③ DataFrameの一文ずつjanomeを用いて形態素解析を行い、名詞を選択する。momotaro_3_220102.png ④ nlplot実行(上記の1〜6のグラフ描画)
   以下に結果をお話しします。ちなみに、②で求められた文の数は180、③で求められた名詞の数は658でした。

1. N-gram 棒グラフ
 参考資料によると、N-gramとは連続するN個の単語や文字のまとまりのこと。1-gram、2-gram、3-gramのことをUni-gram、Bi-gram、Tri-gramと言い、文脈を捉える手助けとして使われるとのこと。
 以下のコードを実行すると、Uni-gramが描画できます。
npt = nlplot.NLPlot(pd.DataFrame(df1), target_col='word')

stopwords = npt.get_stopword(top_n=0, min_freq=0)
stopwords

npt.bar_ngram(
title='uni-gram',
xaxis_label='word_count',
yaxis_label='word',
ngram=1,
top_n=50,
width=800,
height=1100,
color=None,
horizon=True,
stopwords=stopwords,
verbose=True,
save=False,
)
1行目のdf1は名詞のみが登録されているDataFrameでcolumn名は「word」です。3行目のstopwordのtop_n=0は検出された単語(文字のまとまり)を除外(無視)しない設定で、top_n=2にすると上位の2単語が除外されます。10行目のngram=1がUni-gramで、ngram=2でBi-gramで、ngram=3でTri-gramが描画できます。unigram_220102.pngUni-gramの結果、上位の単語は、桃太郎、鬼、おばあさん、おじいさんの順ですね。Bi-gramの結果は以下の通りで上位は「おじいさん-おばあさん」、「鬼-島」、「桃太郎-さん」です。bigram_220102.png2. N-gram ツリーマップ
 Uni-gramの結果をTreeマップ(エリアマップ)で描画する際は以下のコードを実行します。
npt.treemap(
stopwords=stopwords,
title='Tree of Most Common Words',
ngram=1,
top_n=30,
width=1300,
height=600,
verbose=True,
save=False
)
結果は以下の通りです。unigram_tree_220102.png3. 単語数のヒストグラム
 各文(今回は180個の文)に含まれる名詞の単語数のヒストグラムです。一文あたりの名詞の数は2個が頻度最大のようです。Word_histgram_220102.png 以上、長くなりましたので、続きは次回お話しします。

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: