Python3で学ぶテキスト分析入門:単語数・文字数・ストップワードなどの集計方法
本記事では、Pythonを使ったファイル操作とテキスト分析の基本について解説します。ファイルはコンピュータシステムに不可欠な存在であり、オペレーティングシステム(OS)自体も膨大な数のファイルによって構成されています。
Pythonが扱えるファイルには大きく分けて「テキストファイル」と「バイナリファイル」の2種類があります。今回はこのうちテキストファイルに焦点を当て、テキストデータから有用な統計情報を抽出するための主要な関数を紹介します。
本記事で解説する主な分析項目は以下の通りです。
- 単語数
- 文字数
- 平均単語長
- ストップワード数
- 特殊文字数
- 数値データ数
- 大文字単語数
サンプルとして、css3.txt というテキストファイルを使用して実際にコードを実行していきます。
1. 単語数をカウントする
文章中の単語数を数えるには、split() 関数を使うのが最も簡単な方法です。split() は文字列を空白文字で区切り、単語のリストを返します。リストの長さを len() で取得すれば、単語数が求まります。
サンプルコード
filename = "C:/Users/TP/Desktop/css3.txt"
try:
with open(filename) as file_object:
contents = file_object.read()
except FileNotFoundError:
message = "申し訳ありません。" + filename + " が見つかりません。"
print(message)
else:
words = contents.split()
number_words = len(words)
print(filename, "の総単語数は", str(number_words), "です")
実行結果
C:/Users/TP/Desktop/css3.txt の総単語数は 3574 です
2. 文字数をカウントする
次に、テキスト全体の文字数を数えます。各単語の長さ(len(word))を合計することで、ファイル内の総文字数を算出できます。例えば長さ5の単語には5文字含まれている、という考え方です。
サンプルコード
filename = "C:/Users/TP/Desktop/css3.txt"
try:
with open(filename) as file_object:
contents = file_object.read()
except FileNotFoundError:
message = "申し訳ありません。" + filename + " が見つかりません。"
print(message)
else:
wordslist = contents.split()
words = len(wordslist)
characters = sum(len(word) for word in wordslist)
print("テキストファイル内の総文字数 =", characters)
実行結果
テキストファイル内の総文字数 = 17783
3. 平均単語長を計算する
平均単語長は、すべての単語の文字数の合計を総単語数で割ることで求められます。テキストの傾向を把握する際に役立つ指標です。
サンプルコード
filename = "C:/Users/TP/Desktop/css3.txt"
try:
with open(filename) as file_object:
contents = file_object.read()
except FileNotFoundError:
message = "申し訳ありません。" + filename + " が見つかりません。"
print(message)
else:
wordslist = contents.split()
words = len(wordslist)
average = sum(len(word) for word in wordslist) / words
print("平均単語長 =", average)
実行結果
平均単語長 = 4.97
4. ストップワード数をカウントする
ストップワード(「the」「is」「a」など、分析上あまり意味を持たない頻出語)の数を調べるには、Pythonの自然言語処理ライブラリ NLTK を利用するのが便利です。
サンプルコード
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
my_example_sent = "This is a sample sentence"
mystop_words = set(stopwords.words('english'))
my_word_tokens = word_tokenize(my_example_sent)
my_filtered_sentence = []
for w in my_word_tokens:
if w not in mystop_words:
my_filtered_sentence.append(w)
print(my_word_tokens)
print(my_filtered_sentence)
このコードでは、まず文をトークン化し、その後ストップワードに含まれない単語だけをフィルタリングしています。実行すると、元のトークン列とストップワード除去後のトークン列がそれぞれ表示されます。
5. 特殊文字数をカウントする
SNSの投稿データなどを分析する場合、ハッシュタグ(#)やメンション(@)といった特殊文字の数を数えることで、通常のテキストからは得られない追加情報を抽出できます。
サンプルコード
import collections as ct
filename = "C:/Users/TP/Desktop/css3.txt"
try:
with open(filename) as file_object:
contents = file_object.read()
except FileNotFoundError:
message = "申し訳ありません。" + filename + " が見つかりません。"
print(message)
else:
words = contents.split()
special_chars = "#"
new = sum(v for k, v in ct.Counter(words).items() if k in special_chars)
print("特殊文字の合計:", new)
実行結果
特殊文字の合計: 0
今回のサンプルファイルにはハッシュタグが含まれていないため、結果は0となりました。
6. 数値データ数をカウントする
テキストファイル内に含まれる数値データの個数も集計できます。文字数のカウントと同様の考え方で、str.isdigit() を使って数字のみで構成されたトークンを判定します。
サンプルコード
filename = "C:/Users/TP/Desktop/css3.txt"
try:
with open(filename) as file_object:
contents = file_object.read()
except FileNotFoundError:
message = "申し訳ありません。" + filename + " が見つかりません。"
print(message)
else:
words = sum(map(str.isdigit, contents.split()))
print("テキストファイル内の数値データ数 =", words)
実行結果
テキストファイル内の数値データ数 = 2
7. 大文字単語数をカウントする
isupper() 関数を使えば、テキスト内に含まれる大文字のみの単語(頭字語や強調表現など)の数を簡単にカウントできます。
サンプルコード
filename = "C:/Users/TP/Desktop/css3.txt"
try:
with open(filename) as file_object:
contents = file_object.read()
except FileNotFoundError:
message = "申し訳ありません。" + filename + " が見つかりません。"
print(message)
else:
words = sum(map(str.isupper, contents.split()))
print("テキストファイル内の大文字単語数 =", words)
実行結果
テキストファイル内の大文字単語数 = 121
まとめ
本記事では、Python3を使ったテキストファイルの基本的な分析方法として、単語数・文字数・平均単語長・ストップワード数・特殊文字数・数値データ数・大文字単語数の7つの指標を紹介しました。いずれも短いコードで実装できるため、テキストマイニングや自然言語処理の第一歩としてぜひ試してみてください。特にNLTKを活用したストップワードの除去は、より高度なテキスト分析を行う上でも頻繁に使われるテクニックです。
-
Excelで数値を先頭ゼロ付きのテキストに変換する9つの方法
先頭ゼロ(先行ゼロ)は、主に数値の桁数を揃えるために使用されます。ID番号、郵便番号、セキュリティ番号などの記録を管理する場合には、セル内で先頭ゼロを保持しなければなりません。しかし、プエルトリコの郵便番号「00901」のようにゼロから始まる番号をセルに入力すると、Excelは即座に「901」と切り詰めてしまいます。Excelで先頭ゼロを正しく扱うには、数値をテキスト(文字列)として認識させることが重要です。この記事では、先頭ゼロを付けたまま数値をテキストに変換する9つの方法を詳しく解説します。 Excelで数値を先頭ゼロ付きテキストに変換する9つの方法 まずサンプルデータをご紹介し
-
Excel で数値を単語に変換する方法 (4 つの適切な方法)
スプレッドシートは日常業務で多くの人が使用しており、オフィスの重要な要素となっています。大部分の人はスプレッドシートをかなり基本的な方法で使用していますが、一部の上級ユーザーは、数字を単語に変換するのが難しい、または複雑であると感じています。 エクセルで。このガイドでは、この問題に対処し、 4 を提供しました。 数字を単語に変換するさまざまな方法 エクセルで。さらに、3 あります 数値をテキスト形式に変換する方法が増えました。 ワークブックをダウンロード この記事で使用したワークブックを以下からダウンロードして、自分で練習できます。 Excel で数値を単語に変換する 4 つの方法 記事