In [ ]:
#https://qiita.com/g-k/items/69afa87c73654af49d36
#上記記事のコードを実装してみる
In [4]:
from google.colab import drive
drive.mount('/content/drive',force_remount=True)
import sys
sys.path.append('/content/drive/MyDrive/DNN_user')
Mounted at /content/drive
In [3]:
!pip install janome
!pip install jaconv
Collecting janome
  Downloading Janome-0.4.1-py2.py3-none-any.whl (19.7 MB)
     |████████████████████████████████| 19.7 MB 1.8 MB/s 
Installing collected packages: janome
Successfully installed janome-0.4.1
Collecting jaconv
  Downloading jaconv-0.3.tar.gz (15 kB)
Building wheels for collected packages: jaconv
  Building wheel for jaconv (setup.py) ... done
  Created wheel for jaconv: filename=jaconv-0.3-py3-none-any.whl size=15565 sha256=21a7fc74e06b3ac346979f61d2f750f916e8092d7df1d8bca6b5508940a78d68
  Stored in directory: /root/.cache/pip/wheels/8f/4f/c2/a2a3b14d0e94f855f4aa8887bf0267bee9ecfb8e62a9ee2d92
Successfully built jaconv
Installing collected packages: jaconv
Successfully installed jaconv-0.3
In [5]:
import pandas as pd
import numpy as np
import os
import glob
import pathlib
import re
import janome
import jaconv
In [43]:
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()
Out[43]:
0 1 2 3 4
0 content http://news.livedoor.com/article/detail/6782779/ 2012-07-23T14:35:00+0900 高画質と小型・軽量化を両立!キヤノンのミラーレス一眼「EOSM」を見てきました キヤノンは2012年7月23日、キヤノンSタワー3階「キヤノンホールS」において、報道関係者...
1 content http://news.livedoor.com/article/detail/6691883/ 2012-06-25T17:00:00+0900 最新情報も見逃すな!大人気アニメ「宇宙兄弟」公式アプリ!【iPhoneでチャンスを掴め】 あの大人気アニメ「宇宙兄弟」が電子書籍になりました。コミックの試し読みから関連書籍の最新情報...
2 content http://news.livedoor.com/article/detail/6697341/ 2012-06-27T09:00:00+0900 楽しくリズム感覚が身につく「おやこでリズムえほんプラス」【iPhoneでチャンスを掴め】 お子様のリズム感を養うには、小さなころから音楽に触れさせておくのが最適。お子様のリズム感覚を...
3 content http://news.livedoor.com/article/detail/6602650/ 2012-05-28T18:00:00+0900 おはこんこん!紺子ぬいぐるみ、7月頃に出来上がるよ【紺子にゅうす】 おはこんこん☆ふぉっくす紺子だよ(゜∀゜)前回お知らせした紺子ぬいぐるみ!7月頃に出来上がる...
4 content http://news.livedoor.com/article/detail/6451430/ 2012-04-09T18:00:00+0900 Z77搭載でお安いマザーも!?ECSよりIntel7シリーズ搭載マザー ECSからIntel7シリーズ搭載マザーボードが3枚発売される(取り扱いはアスク)。Inte...
In [44]:
article_df.count()
Out[44]:
0    871
1    871
2    871
3    871
4    871
dtype: int64
In [51]:
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.', '文章'])
In [52]:
word_df.head()
Out[52]:
ニュースNo. 文章
0 0 キヤノン は 2012 年 7 月 23 日 、 キヤノン S タワー 3 階 「 キヤノン...
1 1 あの 大人気 アニメ 「 宇宙 兄弟 」 が 電子 書籍 に なり まし た 。 コミック ...
2 2 お子様 の リズム 感 を 養う に は 、 小さな ころ から 音楽 に 触れ させ て ...
3 3 お は こんこん ☆ ふ ぉっくす 紺 子 だ よ ( ゜ ∀ ゜ ) 前回 お知らせ し ...
4 4 ECS から Intel 7 シリーズ 搭載 マザー ボード が 3 枚 発売 さ れる (...
In [57]:
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)
In [61]:
for i in model.most_similar('データ'):
    print(i)
('バックアップ', 0.845406174659729)
('救出', 0.8347344994544983)
('送信', 0.8328810930252075)
('読み取り', 0.8297949433326721)
('スキャン', 0.8296444416046143)
('特定', 0.8209133148193359)
('フォルダ', 0.8147985935211182)
('iTunes', 0.8093819618225098)
('自動', 0.80753093957901)
('扱える', 0.8043551445007324)
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: DeprecationWarning: Call to deprecated `most_similar` (Method will be removed in 4.0.0, use self.wv.most_similar() instead).
  """Entry point for launching an IPython kernel.
In [62]:
for i in model.most_similar('ロボット'):
    print(i)
('バンダイ', 0.8795864582061768)
('ペット', 0.8582586050033569)
('for', 0.8428537249565125)
('あんしん', 0.8306930065155029)
('好調', 0.8281925320625305)
('ドラゴン', 0.8221918940544128)
('記', 0.8195019960403442)
('フィーチャーフォン', 0.8181626796722412)
('シガーソケットホルダー', 0.8169593214988708)
('Apple', 0.8111116886138916)
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: DeprecationWarning: Call to deprecated `most_similar` (Method will be removed in 4.0.0, use self.wv.most_similar() instead).
  """Entry point for launching an IPython kernel.
In [63]:
for i in model.most_similar('パソコン'):
    print(i)
('ノート', 0.8131564855575562)
('PC', 0.7888096570968628)
('古い', 0.7818273901939392)
('過去', 0.7724474668502808)
('マシン', 0.7687370777130127)
('ハイブリッド', 0.759053111076355)
('組み立てる', 0.7582122683525085)
('オールインワン', 0.7558143138885498)
('格安', 0.7545280456542969)
('デスク', 0.748915433883667)
/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: DeprecationWarning: Call to deprecated `most_similar` (Method will be removed in 4.0.0, use self.wv.most_similar() instead).
  """Entry point for launching an IPython kernel.
In [ ]: