分析コードをまとめていく.テキスト内の単語の出現位置編
前回に続いて,コードをまとめる.
今回はテキスト内の単語の出現位置にフォーカスをして分析をする.
import matplotlib.pyplot as plt
import numpy as np
import nltk
from collections import Counter
nltk.download('punkt')
def plot_word_positions(text, top_n=100):
"""
テキスト内の上位N単語の出現位置をプロットする関数
"""
# テキストをトークン化
tokens = nltk.word_tokenize(text)
# 単語の頻度をカウント
word_counts = Counter(tokens)
# 上位N単語を抽出
most_common_words = [word for word, count in word_counts.most_common(top_n)]
# 上位N単語の出現位置を取得
token_indices = {token: [] for token in most_common_words}
for index, token in enumerate(tokens):
if token in most_common_words:
token_indices[token].append(index)
# プロットの作成
plt.figure(figsize=(100, 100))
for word, indices in token_indices.items():
plt.scatter(indices, [word] * len(indices), label=word, alpha=0.6)
plt.title('Top 100 Word Position Plot')
plt.xlabel('Position in Text')
plt.ylabel('Words')
plt.show()
# テキストファイルの読み込み
def read_text_file(file_path):
"""
テキストファイルを読み込み、内容を返す関数
"""
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
# 上位100単語の出現位置のプロット
plot_word_positions(full_text, top_n=100)