Alice in Wonderland における単語の長さ.
先日からAlice in Wonderland の分析を行なっている.
今回は小説内の単語の長さの基本統計量を調査してみた.
結果としては下記であった.
count 2746.000000
mean 6.336489
std 2.226115
min 1.000000
25% 5.000000
50% 6.000000
75% 8.000000
max 14.000000
平均的に6.3文字で構成され,標準偏差が2.2あったことから,概ね4 – 8 文字ほどの単語が多いという結果になった.
※私のテキストの前処理の不十分さから適切に分割できなかった6つの文字列があり,そちらを削除した上で行なっている.
以下に実行したコードと結果を示す.(前回のコードの続きであるという前提)
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import re
def word_occurrences_df(full_text, target_word):
# ピリオドを削除
full_text = full_text.replace('.', '')
# 文章を単語に分割
words = full_text.split()
# 語頭と語尾の記号を削除
words = [re.sub(r'^\W+|\W+$', '', word) for word in words]
# 単語の出現回数を計算
word_counts = pd.Series(words).value_counts()
# 単語の重複を削除
unique_words = list(dict.fromkeys(words))
# 単語をバイナリ形式に変換(target_wordを1、それ以外を0にする)
binary_representation = [1 if word == target_word else 0 for word in unique_words]
# 単語の長さを計算
word_lengths = [len(word) for word in unique_words]
# データフレームに変換
df = pd.DataFrame({
'Word_Index': range(len(unique_words)),
'Occurrence': binary_representation,
'Word': unique_words,
'Word_Length': word_lengths,
'Word_Count': [word_counts[word] for word in unique_words]
})
return df
# 特定の単語を指定してデータフレームを作成
df = word_occurrences_df(full_text, "the")
# データフレームを表示
print(df.head())
print(df.info())
# Word_Lengthの上位6単語を抽出
top_8_word_lengths = df.nlargest(6, 'Word_Length')
print("\nTop 6 words by length:")
print(top_8_word_lengths[['Word', 'Word_Length']])
# 上位8単語を除外した新しいデータフレームを作成
df_excluded_top8 = df[~df['Word'].isin(top_8_word_lengths['Word'])]
# 新しいデータフレームの確認
print("\nDataFrame without top 8 longest words:")
print(df_excluded_top8.head())
print(df_excluded_top8.info())
# Word_Lengthの基本統計量の計算
print("Basic statistics of Word_Length in df_excluded_top8:")
print(df_excluded_top8['Word_Length'].describe())
参考文献
- 田中久美子 (2021)『言語とフラクタル-使用の集積の中にある偶然と必然-』 東京大学出版会.
- https://www.gutenberg.org/files/11/11-h/11-h.htm