No science, No life.

もっと科学を身近に

「吾輩は猫である」のテキストを分析してみる (4)

「吾輩は猫である」のテキストを分析してみる (1)
「吾輩は猫である」のテキストを分析してみる (2)
「吾輩は猫である」のテキストを分析してみる (3)


前回、何も工夫せずに頻出単語を取りだすと、記号や助詞・助動詞ばかりがでてきました。作品の特徴を捉えた頻出単語帳を作ろうと思うと、品詞を絞ったほうがよさそうです。そこで今回は、名詞 (の一部) のみの頻出単語を並べてみました。

f:id:neocortex:20160910230659p:plain

吾輩・寒月・先生・猫・細君などの単語が見えます。「吾輩は猫である」の特徴を捉えた単語帳になってきたでしょうか。コードは下の通りです。

% 形態素分析結果 result の読込
load('neko.mat')

% 名詞を抽出
idx1 = strcmp(result(:,2),'名詞');
idx2 = strcmp(result(:,3),'非自立');
idx3 = strcmp(result(:,3),'数');
result_noun = result(idx1 & ~idx2 & ~idx3,:);

% セル配列からカテゴリカル配列を作成
cat_array = categorical(result_noun(:,1));

% 単語カテゴリーを作成
category = categories(cat_array);

% 各カテゴリの出現回数
counts = countcats(cat_array);
% 出現回数を出現パーセントに変換
prct = counts/sum(counts)*100;

% 出現パーセントに従って降順でソート
[~,I] = sort(prct,'descend');
prct_sorted = prct(I);
category_sorted = category(I);

% グラフ表示
figure(1); clf
x = 1:length(prct_sorted);
y = prct_sorted;
plot(x,y,'o-')
xmax = 20;
axis([0 xmax 0 prct_sorted(1)+0.2])
text(x(1:xmax),y(1:xmax)+0.1,category_sorted(1:xmax))
title('「吾輩は猫である」形態素分析')
xlabel('名詞出現ランク')
ylabel('名詞出現パーセント')

吾輩は猫である (新潮文庫)

吾輩は猫である (新潮文庫)