全体コード
tokenizer.py
import MeCab tagger = MeCab.Tagger() def tokenize(text): node = tagger.parseToNode(text) tokens = [] while node: if node.surface != '': tokens.append(node.surface) node = node.next return tokens
bow.py
from tokenizer import tokenize def calc_bow(tokenized_texts):#bag of words関数 #辞書生成のループ vocabulary = {} for tokenized_text in tokenized_texts: for token in tokenized_text: if token not in vocabulary: vocabulary[token] = len(vocabulary)#(1) n_vocab = len(vocabulary) #単語の出現回数をカウントするためのループ bow = [[0] * n_vocab for i in range(len(tokenized_texts))] #(2) for i,tokenized_text in enumerate(tokenized_texts): for token in tokenized_text: index = vocabulary[token] bow[i][index] += 1 return vocabulary,bow texts = [ '私は私のことが好きなあなたが好きです', '私はラーメンが好きです', '富士山は日本一高い山です', ] tokenized_texts = [tokenize(text) for text in texts]#textsから各々の文章をわかち書き vocabulary,bow = calc_bow(tokenized_texts)
わからないこと(コードに番号振っています。)
(1)「token:vocablaryに登録した順」、となる辞書として代入していく意味でしょうか?
(2)コード全体の意味がわかりません。また [0] * n_vocabの意味が特に分かりません。
まだ回答がついていません
会員登録して回答してみよう