#https://qiita.com/g-k/items/69afa87c73654af49d36
#上記記事のコードを実装してみる
from google.colab import drive
drive.mount('/content/drive',force_remount=True)
import sys
sys.path.append('/content/drive/MyDrive/DNN_user')
!pip install janome
!pip install jaconv
import pandas as pd
import numpy as np
import os
import glob
import pathlib
import re
import janome
import jaconv
p_temp = pathlib.Path('/content/drive/MyDrive/DNN_user/text')
article_list = []
#フォルダ内のテキストファイルを全てサーチ
for p in p_temp.glob('**/*.txt'):
#第二階層フォルダ名がニュースサイトの名前になっているので、それを取得
media = str(p).split('/')[1]
file_name = str(p).split('/')[2]
if file_name != 'LICENSE.txt':
#テキストファイルを読み込む
with open(p, 'r') as f:
#テキストファイルの中身を一行ずつ読み込み、リスト形式で格納
article = f.readlines()
#不要な改行等を置換処理
article = [re.sub(r'[\n \u3000]', '', i) for i in article]
#ニュースサイト名・記事URL・日付・記事タイトル・本文の並びでリスト化
article_list.append([media, article[0], article[1], article[2], ''.join(article[3:])])
else:
continue
article_df = pd.DataFrame(article_list)
article_df.head()
article_df.count()
news_df = article_df[article_df[0] == 'content'].reset_index(drop = True)
import janome
from janome.tokenizer import Tokenizer
from janome.analyzer import Analyzer
from janome.charfilter import *
from janome.tokenfilter import *
char_filters = [ UnicodeNormalizeCharFilter() ]
tokenizer = Tokenizer()
token_filters = [LowerCaseFilter() ]
analyzer = Analyzer()
word_lists = []
for i, row in news_df.iterrows():
st = ""
for t in analyzer.analyze(row[4]):
#形態素
surf = t.surface
#基本形
base = t.base_form
#品詞
pos = t.part_of_speech
#読み
reading = t.reading
st += surf + " "
word_lists.append([i, st])
word_df = pd.DataFrame(word_lists, columns = ['ニュースNo.', '文章'])
word_df.head()
sentences = []
for text in word_df["文章"]:
text_list = text.split(' ')
sentences.append(text_list)
from gensim.models import Word2Vec
model = Word2Vec(sentences, sg=1, size=100, window=5, min_count=1)
for i in model.most_similar('データ'):
print(i)
for i in model.most_similar('ロボット'):
print(i)
for i in model.most_similar('パソコン'):
print(i)