data.csvに下記の2冊の小説の文章の抜粋が入っています。このテキストからBoWを計算しましょう。
坊っちゃん:夏目漱石 著
銀河鉄道の夜:宮沢賢治 著
文章の抜粋は、Content列に入っています。各行に400文字程度の文章が入っています。
data.csvの先頭から12行は「坊っちゃん」で、次の9行は「銀河鉄道の夜」です。
まずは、最初のレコードdf.Content[0]のBoWを計算しましょう。
計算は、calc_bowで行います。
import pandas as pd
from collections import Counter
from janome.tokenizer import Tokenizer
df = pd.read_csv('input/data.csv', encoding='utf-8')
df[:3]
def calc_bow(text, tokenizer):
tokens = tokenizer.tokenize(text)
return Counter([token.base_form for token in tokens])
tokenizer = Tokenizer()
bow = calc_bow(df.Content[0], tokenizer)
print(bow)
Counter({'て': 8, '。': 8, 'から': 7, 'た': 7, 'の': 5, 'を': 5, 'が': 5, '、': 5, 'に': 4, 'ある': 4, 'と': 4, 'で': 3, 'する': 3, '二': 3, '階': 3, '飛び降りる': 3, '抜かす': 3, '時': 2, 'いる': 2, '一': 2, '腰': 2, '事': 2, '人': 2, 'ぬ': 2, 'も': 2, 'は': 2, '親譲り': 1, '無鉄砲': 1, '小': 1, '供': 1, '損': 1, 'ばかり': 1, '小学校': 1, '居る': 1, '時分': 1, '学校': 1, '週間': 1, 'ほど': 1, 'なぜ': 1, 'そんな': 1, '無闇': 1, '聞く': 1, 'かも': 1, '知れる': 1, '別段': 1, '深い': 1, '理由': 1, 'ない': 1, '新築': 1, '首': 1, '出す': 1, '同級生': 1, '冗談': 1, 'いくら': 1, '威張る': 1, 'そこ': 1, '出来る': 1, 'まい': 1, '弱虫': 1, 'や': 1, 'ー': 1, 'い': 1, '囃す': 1, 'だ': 1, '小使': 1, '負ぶさる': 1, '帰る': 1, '来る': 1, 'おやじ': 1, '大きな': 1, '眼': 1, 'ぐらい': 1, '奴': 1, 'か': 1, '云う': 1, 'この': 1, '次': 1, '飛ぶ': 1, '見せる': 1, 'ます': 1, '答える': 1})
小説の文章のBoWを見ると、「て」とか「を」などの助詞が多いことに気づきます。
助詞は色々なところで使われています。しかし、特徴として使いやすいのは、特定の文章だけで使われる単語です。ほとんどの文章で使われていると特徴として使いずらいです。
次は、特徴の対象を名詞と動詞に限定します。
コメント