迫真堕天使部 形態素解析の裏技 その1
こちらを使わさせて頂きもす・。・
準備
最初はbeautifulsoupを使ってスクレイピングで余すことなく記事を取り込もうと思ったのですが、無理だったので、というか余計な手間がかかりそうだったので、テキストをコピペして処理していきます。
適当なテキストファイルにコピペしたのち処理。
各行毎に、状況説明orキャラクター名「台詞」という構造になっている…はずなので、さらに台詞内には改行もないという前提で、[キャラクター名,台詞]の集合の2次元配列をつくっていきます。
import csv import pandas as pd import re from janome.tokenizer import Tokenizer def read_txt(): res = [] with open('gab01.txt', encoding='utf-8') as f: data = f.read().split("\n") for x in data: if '「' in x: a = x.split('「') b = a[0] c = a[1].split('」')[0] res.append([b,c]) return res a = read_txt() for x in a: print(x) a = pd.DataFrame(a) a.to_csv('write.csv')
いろいろインポートしていますがこの時点では半分くらいしか使っていません。これで
このようなデータを作ることができました
・・・掃除機までちゃんと認識してやがる
分析その1 名詞編
こんなデータを作ってしまうと良い子の皆はすぐに分析したくてたまらないと思うので、とりあえず台詞から名詞だけを集めていきます。
def main(data_frame): res = [] for x in data_frame[1]: to = Tokenizer() for xx in to.tokenize(x): hinsi = xx.part_of_speech.split(',')[0] tango = xx.surface yomi = xx.reading if hinsi == '名詞': res.append(tango) return res for x in main(read_txt()): print(x)
犬のマネしろよ、おうあくしろよ。
さっきインポートしたJanomeを使っています。本当はMeCabをいれたかったのですがなぜかwindows版MeCabがリンク切れでした。
詳しい説明は省きますが、上のコードのようにすれば品詞(の最上位)と、読み、単語を拾うことができます。その中で名詞だったものだけを追加します。
でもこれだけでは何のことやらわからないので、リストの要素の出現回数をカウントするメソッドを使います。
import collections
で入るみたいです。
さっきの関数の下の部分を
aa = main(read_txt())
print(collections.Counter(aa).most_common)
とすれば、勝手にカウントされた結果の辞書が帰ってきます。
結果
'私': 38, 'ー': 26, '天使': 23, 'ん': 21, 'こと': 19, '悪魔': 17, 'それ': 15, 'の': 14, '学校': 10, 'これ': 10, '人間': 10, 'ガヴ': 8, '宿題': 8, '何': 8, 'なん': 8, '今日': 7, 'よう': 7, '天界': 6, 'もの': 6, 'ここ': 6, '誰': 6, 'あんた': 6, '犬': 6, 'ワン': 6, '今': 5, 'ちょ': 5, 'そこ': 5, 'サターニャ': 5, '下界': 4, '人々': 4, 'ぅ': 4, '人': 4, 'ヴィーネ': 4, '気': 4, '自分': 4, '地獄': 4, 'サタニキア': 4, '行為': 4, 'ぁ': 4, '部屋': 4
特徴としては
・悪魔より天使のほうが出現回数が多い
・犬とワンが上位に入っていて、両方合わせれば「悪魔」の出現回数に匹敵
・サターニャの口癖と思われる単語が少し多め
・学校に関する単語が多い
ということでしょうか
個人的には悪魔サイドの自由さが好きなんでもっと出現してほしいです(?)
とりあえずおわり