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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です