<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>TextMining on 雑記帳はシクロヘキサンの香り</title>
    <link>https://hamukichi.pages.dev/tags/textmining/</link>
    <description>Recent content in TextMining on 雑記帳はシクロヘキサンの香り</description>
    <generator>Hugo -- 0.140.1</generator>
    <language>ja-jp</language>
    <lastBuildDate>Sun, 17 May 2026 15:21:15 +0900</lastBuildDate>
    <atom:link href="https://hamukichi.pages.dev/tags/textmining/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>非実用的文章のテキストマイニングによる定量的分析の試み：場面ごとの文体ダッシュボード</title>
      <link>https://hamukichi.pages.dev/2026/05/17/nlp-analysis-of-fanfictions-dashboard/</link>
      <pubDate>Sun, 17 May 2026 15:21:15 +0900</pubDate>
      <guid>https://hamukichi.pages.dev/2026/05/17/nlp-analysis-of-fanfictions-dashboard/</guid>
      <description>&lt;h2 id=&#34;はじめに&#34;&gt;はじめに&lt;/h2&gt;
&lt;p&gt;実用的な文章であれ，非実用的な文章―――たとえば二次創作小説，SS，怪文書，その他―であれ，よりよいものを書こうとするには，どうすればよいでしょうか．&lt;a href=&#34;https://hamukichi.pages.dev/2025/08/17/useful_tools_for_useless_writing/&#34;&gt;以前の記事&lt;/a&gt;では，その目的で，執筆の最中，あるいは執筆後の推敲に使える手法として，日本語変換システム『ATOK』およびそれに統合して利用できる各種辞書であるとか，『一太郎』に付属する校正ツールであるとか，あるいは今はやりの大規模言語モデル（LLM）だとかを簡単に紹介しました．LLM およびそれによって得られる生成物の利用については，日進月歩で変わりゆく分野であることから，いまだに議論が続いていますが，各種ガイドラインに従う限り，有用な技術であることは変わりありません．LLM を使えば，先の記事に示したように，自分の書いたものに対する定性的分析は，自然言語――われわれが普段使う言葉――を用いて，容易に行えることは否定できません．&lt;/p&gt;
&lt;p&gt;ただ，これには取りこぼしがあります．最近では，自然言語処理（NLP）と言えば LLM といった風潮があります．ただ，実際のところはそうではなく，NLP というのは，LLM 以外も含んだ，より広い概念であるはずです．特に，データ傾向の可視化などに用いられる，テキストマイニングと呼ばれる手法は，文章の定量的解析に，いまだに有用な技術です．もちろん，LLM でもプロンプトを工夫すればできるのかもしれませんが，やや牛刀を以て鶏を割くというきらいがあります．とりわけ，非実用的な文章を解析しようとするときに，いちいち LLM を利用して，大量の計算資源を浪費するのは，持続可能な開発という点でも問題があると思います――というのは半分冗談ではありますが．&lt;/p&gt;
&lt;p&gt;そこで，この記事では，テキストマイニングを中心とする伝統的な NLP の技法を用いて，自作の非実用的な文章を解析した試みを，備忘録としてまとめておきます．まずは，テキストを場面ごとに区切り，文体のダッシュボードとでも呼ぶべきものを作るべく，基礎的な指標を抽出して比較することにしました．&lt;/p&gt;
&lt;p&gt;なお，先ほどのようにとうとう語ってはみましたが，実のところ私は NLP の専門家でも，ましては情報学の体系的教育を受けた人間でもないので，以下は――あるいはこれまでの話も――話半分で，自己責任のもとお読みください．以下の手順は，LLM にも示唆を求めつつ――惜しむらくは，このご時世，自分で一からコードを書くことの意義が揺らいでいることです――，自分で適宜修正を行いました．&lt;/p&gt;
&lt;h2 id=&#34;準備&#34;&gt;準備&lt;/h2&gt;
&lt;p&gt;NLPのツールとしては，Python で書かれた有用なものが多く存在するので，それを利用できる環境を整えればよいと思います．私が利用している環境は，Windows 11 上の WSL2 (Ubuntu) です．これには新しめの Python 3 がついてくるはずです．また，テキストエディタは Visual Studio Code としました．これを構築する方法は，どこにでも転がっているし，いっそのこと LLM に訊けば分かることなので，ここでは示しません．&lt;/p&gt;
&lt;p&gt;具体的には pandas ――これはデータ解析に汎用的に使われるツールですが――や spaCy を使うのですが，前者はともかく，後者は apt では入らず，pip などを用いる必要があります．ただ，グローバルで pip を普通に使ってしまうと，ライブラリが入り乱れて後々面倒になるので，仮想環境を使うことにしました．仮想環境といえば venv というイメージがありましたが，最近は uv というものがはやりなので，これを使います．&lt;/p&gt;
&lt;p&gt;詳しくは公式のウェブサイトを見ていただきたいのですが，uv は以下で導入できます（sudo 不要）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -LsSf https://astral.sh/uv/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;仮想環境の構築は以下の通りです（ディレクトリ名は好きなものに変えてください）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir nlp-playgrounds
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; nlp-playgrounds
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;そして，くだんの pandas, spaCy と，spaCy のモデル，ついでにビジュアライズ用に matplotlib と seabornを以下で導入します：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
