形態素解析はデスクトップの整理に役立つ?
1.はじめに
文字×機械学習に興味を持ってきて個人範囲の用途を考え、フォルダ整理に使えないかと思い検討を始めました。
今回の検討ではフォルダ構成&textの読みとり→mecab×wordcloudを行ってます。結果、特定の階層以下をwordcloudでまとめる事が出来ました。
2.分かったこと
形態素解析を使用すると頻出単語の傾向は分かるので、下記の条件化ではファイル整理が出来そうな感触をつかみました。
・text/csvもしくは意味のあるファイル名が全てにおいてつけられている。
・無法地帯のデスクトップになっており、人が時間をかけても管理できそうにない。
→各ファイルを用語が類似しているもの同士、同じフォルダに仕分ける。
ただし、管理されたPCでは実用性がなさそうと考え、検討一時STOPしました。(個人PC/共有PCともに、無法地帯なPCを見たことがない。。。)
3.参考文献
・形態素解析ライブラリmecabのインストール方法
https://qiita.com/menon/items/f041b7c46543f38f78f7
・mecab使用方法
https://qiita.com/iwashi-kun/items/18613dee168651ef8016
※なおインストールの環境設定が複雑?な事よりDocker記事も多くありチャレンジしましたが、mecabインストールがそれほど手間取らなかったりホスト-Docker間ファイル受け渡しが個人的に面倒であったので、今回はDockerは外しました。
4.ソース
・フォルダ階層とファイルの読み込み
import glob
import re
import os
import pandas as pd
#各層のfile名のみ抽出
list =[os.path.basename(p) for p in glob.glob('C:/Users/takat/Desktop/各種memo/**/*', recursive=True)
if os.path.isfile(p)]
#textのみ、開いて文字列取得
for p in glob.glob('C:/Users/takat/Desktop/各種memo/**/*', recursive=True):
if '.txt' in p:
f = open(p,'r',encoding="utf-8",errors='ignore')
list.insert(0,f.read()) # 1行毎にファイル終端まで全て読む(改行文字も含まれる)
f.close()
dflist = pd.DataFrame(list, index=range(len(list)),columns=["file"])
・mecabを使用(前述URLとほぼ同内容)
%matplotlib inline
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
import MeCab
import pandas as pd
#create mecab list
class_num = 0
word_classes = [u'名詞',u'動詞',u'形容詞',u'副詞',u'助詞',u'助動詞']
word_class = word_classes[class_num]
def create_mecab_list(text):
mecab_list =[]
mecab = MeCab.Tagger("-Ochasen")
mecab.parse("")
# encoding = text.encode('utf-8')
mecab.parse('')
node = mecab.parseToNode(text)
while node:
if len(node.surface)>1:
if node.feature.split(",")[0]==word_class:
morpheme = node.surface
mecab_list.append(morpheme)
node = node.next
return mecab_list
newstext = " ".join(create_mecab_list(",".join(dflist.file)))
・wordcloudを表示(前述URLとほぼ同内容)
wordcloud = WordCloud(
max_font_size=140,
relative_scaling=.5,
width=1000,
height=1000,
stopwords = word_class,
font_path='ipaexg.ttf'
).generate(newstext)
#fontファイルはipynbと同じ階層に保管もしくはパスを入れる
plt.figure(figsize=(10,10),dpi=200)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
5.出力
自分の頭の中が表示されているみたいで恥ずかしい。。。
LINEやメールをwordcloudにするもの作ったら爆死しそう。
せめて飲み会での会話をGCPとかで文字起こししながらwordcloud更新させていったらおもしろそう?
6.次のアクション
自動で整理したくなるようなPCを見つけるまで一旦検討STOP~
Author And Source
この問題について(形態素解析はデスクトップの整理に役立つ?), 我々は、より多くの情報をここで見つけました https://qiita.com/takatsukaband/items/d397f97cee69105dfbac著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .