soy-curd's blog

へぼプログラマーです [https://twitter.com/soycurd1]

pythonを用いた文学フリマ参加サークル名の分析

はじめに

2014年11月24日に開催される第19回文学フリマの参加サークルが発表されたので、参加サークルの名前の傾向を分析してみた。

第十九回文学フリマ 参加確定サークル一覧

分析

まずは結果から。

単語 出現回数
******************************************************************
***************************************************************
研究 *************************
文芸 ************************
***********************
文学 **********************
*********************
*****************
書房 ************
- ************
短歌 ***********
文庫 ***********
/ **********
**********
*********
. ********
********
編集 ********
! ********
*******
*******
******
******
工房 ******
******
同人 ******
委員 ******
******
( ******
少女 ******
出版 *****
' *****
*****
する *****
) *****
*****
現代 *****
*****
*****
*****
大学 *****
*****
*****
+ *****
早稲田大学 *****
*****
サークル *****
****
****
****
SF ****
製作 ****
****
世界 ****
書店 ****
****
: ****
****
創作 ****
****
****
****
****
倶楽部 ****
****
研究所 ****
****
****
アトリエ ****
****
文藝 ***
同盟 ***
幻想 ***
***
未来 ***
喫茶 ***
G ***
小説 ***
***
***
友の会 ***
_ ***
***
***
***
むし ***
ほし ***
***
通信 ***
文化 ***
A ***
少年 ***
***
日本 ***
同好 ***
支部 ***
D ***
***
***
***
***
***
**
チーム **
**
とる **
**
**
**
ふみ **
**
**
色彩 **
? **
**
**
**
メディア **
新聞 **
はなし **
紫苑 **
もの **
**
成城大学 **
**
**
建築 **
**
けん **
ゆき **
青年 **
です **
**
刊行 **
**
感覚 **
**
つき **
空間 **
**
**
2 **
盲目 **
ドロップス **
Project **
呼吸 **
**
**
ない **
早稲田 **
Chaos **
科学 **
**
評論 **
ばる **
* **
**
MOZA **
**
v **
生産 **
立教 **
読書 **
**
くら **
アニメ **
**
現象 **
**
**
横浜 **
**
計画 **
ナカ **
**
**
14 **
3 **
**
**
**
結社 **
& **
**
本棚 **
**
天使 **
be **
**
njet **
s **
**
部屋 **
**
**
しろ **
西瓜 **
同志 **
**
季刊 **
**
法政大学 **
企画 **
com **
パン **
せら **
実行 **
小屋 **
から **
**
**
**
秘密 **
夜行 **
**
惑星 **
かぶ **
**
**
studio **

気づいたこと

  • 「会」とか「文芸」とか「社」とか「誌」とか、ほぼそれっぽい結果に。
  • ジャンル的には、「短歌」、強いかんじ。*1
  • 動物・植物が被っているのが気になる。
  • 「njet」ってなんだ?*2

結論

無事にサークル名被りを避けることができた

おまけ

以下、コード。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import MeCab
import re

def main():
  print("文学フリマ参加サークル一覧")

  #ファイル読み込み
  str = openFile("./txt/bunfuri.txt")

  #改行とタブでデータを分割
  splitedStr = str.split("\n")
  tabSplitedStr = []
  for x in splitedStr:
    tabSplitedStr.append(x.split("\t"))

  #Mecabで形態素解析
  lWords = []
  for x in tabSplitedStr:
    if len(x) >= 2:
      for y in listString(parseString(x[2])):
        lWords.append(y)

  lSurface = [x[0] for x in lWords]

  #ソートして頻度分布を取得
  Dic = {key: lSurface.count(key) for key in set(lSurface)}
  hist = [[k, v] for k, v in sorted(Dic.items(), key=lambda x:x[1], reverse=True)]

  #整形して表示
  print("|単語|出現回数|\n|----|----|")
  for x in hist:
    if x[1] > 1:
      print("|" + x[0] + "|" +  "*" * x[1] + "|")


def listString(parsedString):
  rows = [row.split('\t') for row in parsedString.split('\n')
    if row != '' and row != 'EOS' and not("記号" in row)]
  return rows

def parseString(string):
  mecab = MeCab.Tagger("-Ochasen")
  parsedStr = mecab.parse(string)
  return parsedStr

def openFile(filename):
  try:
    f = open(filename, 'r', encoding='utf-8')
    str = f.read()
    f.close()

  except IOError:
    raise
  except TypeError:
    print("You maybe do this script by python2.x.")
    raise
  except UnicodeDecodeError:
    print("This file maybe utf-8 or EUC.")
    raise

  print("str type: ", type(str))

  return str


if __name__ == "__main__":
  main()

さいごに

ps.「西瓜社」さん、「西瓜鯨油社」さん、名前被ってますよ!

*1:「ミステリ」が単語として解析できてないせいか。「推理」はもともと少ない。

*2:「njet,njet」さんというらしい。