表題の件について質問させてください
pythonで形態素解析した内容をテキストファイルに起こそうとしたのですが、書き込んだ内容が反映されず苦戦しています(生成されたテキストファイルを見ると容量が増えたり0になったりします)
環境はWindows上でAnacondaを使用してjupyter notebookでコードを書いています
分かち書きに使用しているのはjanome、word2vecにはgensimのモジュールを使用しています
テキストファイルはwebから適当なダミーを落として使用しています
ファイルに書き出そうとしているのは以下の部分です
知識が浅く初歩的な内容かと思いますがアドバイスよろしくお願いいたします
python
1with open("test_token.txt", "w") as fp: 2 for token in tokens: 3 word.append(token) 4 fp.write(str(word)) 5 fp.write("\n") 6
以下コード全文
python
1from janome.tokenizer import Tokenizer 2from gensim.models import word2vec 3from sklearn.decomposition import PCA 4import matplotlib.pyplot as plt 5import logging 6import sys 7import re 8import numpy as np 9 10 11word=[] 12 13## textファイルを開く 14# \はエラー、\で表記する 15textfile = open('C:\Users\Desktop\sanshiro.txt') 16# textファイルの内容を読み込む(文字列を返す) 17line = textfile.read() 18textfile.close() 19 20 21## ファイル整形 22# |の除去 23line = line.replace('|','') 24#ルビの除去 25line = re.sub('《.+?》', '', line) 26#入力注の除去 27line = re.sub('[#.+?]', '', line) 28# 空行の削除 29text = re.sub('\n\n', '\n', line) 30text = re.sub('\r', '', line) 31 32 33#### 果確認 34# 先頭100文字出力 35print(line[:100]) 36 37#--------------------------------------------------------関数 38## 分かち書き(janome使用) 39# Tokenizerのインスタンス生成 40t = Tokenizer() 41# 文字列型を引数とする 42def extract_words(text): 43 #tokenizeメソッドに文字列の引数を渡して形態素解析を行う,tokensはlist型 44 #中身は。区切りした文が形態素解析された状態で入っている 45 #うとうととして目がさめると女はいつのまにか、隣のじいさんと話を始めている。 46 #⇒['うとうと', 'と', 'し', 'て', '目', 'が', 'さめる', 'と', '女', 'は', 'いつのまにか', '、', '隣', 'の', 'じいさん', 'と', '話', 'を', '始め', 'て', 'いる'] 47 tokens = t.tokenize(text) 48 49 50 with open("test_token.txt", "w") as fp: 51 for token in tokens: 52 word.append(token) 53 fp.write(str(word)) 54 fp.write("\n") 55 56 57 #リスト内包表記を使用して形態素解析されたリストtokensの中身の品詞を、区切りにして原型(引数で受け取ったままの形式)のまま返す 58 return [token.base_form for token in tokens 59 if token.part_of_speech.split(',')[0]] 60 61 62#。区切りにする 63sentences = line.split('。') 64wordlist = [extract_words(sentence) for sentence in sentences] 65 66 67#word2vec学習開始 68model = word2vec.Word2Vec(wordlist, size=200, min_count=5, window=5, iter=100) 69word2vec_model=model 70 71print(model['世間']) 72ret = model.wv.most_similar(positive=['世間']) 73for item in ret: 74 print(item[0], item[1])
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/26 11:48
2018/04/26 11:54 編集
2018/04/26 12:21
2018/04/26 12:22
2018/04/26 13:06
2018/04/26 13:07
2018/04/26 13:36