「遊んではいなかった」
Workspaceの切り替えということを覚えた。なぜかそれまで動かなかったRUNが一発で動くようになった。
NLP=Natural Language Processingなのね。
lemmaなんて単語があるんだ! 辞書の見出し語。
なんかやったらVSCodeのUndoの回数が少ないので以下のコードをsettings.jsonに書き込んだ。こちらのサイトを参考にさせてもらいました。
"vim.normalModeKeyBindingsNonRecursive": [ { "before" : ["u"], "commands" : ["undo"] }, { "before" : ["<C-r>"], "commands" : ["redo"] }, ],
Pythonではじめるテキストアナリティクス入門という本を読んでいる。プログラムリスト4.5のコードが動かなかったので修正した。サポートページにある「よくあるトラブルについて」で言及されてる「SudachiPyのバージョン」に起因する問題らしい。サポートページの言う通りにSudachiPyを入れ直しても良かったんだろうけど、こうやってちょっとずつコードを修正したりするのも勉強だよね。。。楽しいです。
from collections import Counter import spacy input_fn = 'text/kageotoko.corpus.txt' # 1. 分析対象とする品詞と、不要語を指定する include_pos = ('NOUN', 'VERB', 'ADJ') stopwords = ('する', 'ある', 'ない', 'いう', 'もの', 'こと', 'よう', 'なる', 'ほう') # 2. 解析器の用意 nlp = spacy.load('ja_ginza') # 3. ファイルの読み込み with open(input_fn, 'r') as f: lines = f.readlines() chunks = [' '.join(lines[i:i+10]) for i in range(0, len(lines), 10)] # 4. 文章を解析し、単語の頻度を数える l = [] for chunk in chunks: doc = nlp(chunk) l.extend([token.lemma_ for token in doc if token.pos_ in include_pos and token.lemma_ not in stopwords]) print(l, '...proceeding. Please wait.') print('total words =', len(l), 'words') counter = Counter(l) # 5. 単語の出現頻度top10を出力する print('count word') for word, count in counter.most_common(10): print(f'{count:>5}{word}')
きほん
f.read()はファイル全体、改行も含めたお大きな文字列データ。 f.readline()は1行ずつのリスト。 f.read().splitlines()とすると、改行コードを含まないリストが作れるのね。