def createRank(minReviewCount=0, minProductCount=0, onlyValidCategory=False): checkMkdir(RANK_DIR) for category, products in iterAllProducts(minReviewCount): ranking = [] if len(products) < minProductCount: continue for prod in products: prodCategory = prod['CategoryName'] if onlyValidCategory and category != prodCategory.split('>')[-1]: break ranking.append(unicode(prod)+'\t'+prodCategory) else: fout = codecs.open(RANK_DIR+category, 'w', 'utf-8') print >>fout, str(len(products)) + '\n' + '\n'.join(ranking) fout.close()
def main(): nm = NodeMaker() cnt = 0 for category, products in iterAllProducts(): cnt += 1 if cnt < 2: continue print >>sys.stderr, category doProducts(products, nm) if cnt == 3: break #nm.graph.pack(); print nm.graph rank = pagerank(nm.graph) result = {} for id, pr in enumerate(rank): word = nm.ser.decode(id) result[word] = pr for word, pr in sorted(result.iteritems(), reverse=True): print u'(%s,%d) %.3f' % (word[1], word[2], (pr*1000))
def doAll(maxReview=10): cand = Candidates() selected = [u'Macノート']#,u'MP3プレーヤー',u'PDA',u'インク',u'カメラ',u'キーボード',u'コンタクトレンズ 1day',u'セキュリティソフト',u'チャイルドシート',u'テレビ',u'テレビリモコン',u'トースター',u'ドライバー',u'パソコン',u'パソコンゲーム',u'ヒーター・ストーブ',u'プリンタ',u'マッサージ器',u'ミシン',u'レンズ',u'冷蔵庫・冷凍庫',u'動画編集ソフト',u'地デジアンテナ',u'女性用シェーバー',u'掃除機',u'洗濯機',u'生ごみ処理機',u'自転車',u'電子ピアノ',u'香水'] words = [] for cid, (category, prods) in enumerate(iterAllProducts(minReviewCount=50, categoryFilter=selected)): #print category words.append([]) for pid, prod in enumerate(prods): reviews = prod.getReviews(max=maxReview, htmlStyle=True) words[-1].append([]) for rid, review in enumerate(reviews): morphslist = wakachi.parseLine(review, '<br />') words[-1][-1].append(morphslist) getPhrase(morphslist, (cid,pid,rid), cand) for p, bgn, end in cand.iterAllInternal(spanMax=1, spanMin=0): cid, pid, rid, lid = p[0][0], p[0][1], p[0][2], p[1] print cid, pid, rid, lid, bgn, end, for wid in xrange(bgn[0],end[1]+1): print unicode(words[cid][pid][rid][lid][wid]), if wid == bgn[1]: print '[', if wid ==end[0]-1: print ']', print
def doAll(html=False): selected = [u'Macノート',u'MP3プレーヤー',u'PDA',u'インク',u'カメラ',u'キーボード',u'コンタクトレンズ 1day',u'セキュリティソフト',u'チャイルドシート',u'テレビ',u'テレビリモコン',u'トースター',u'ドライバー',u'パソコン',u'パソコンゲーム',u'ヒーター・ストーブ',u'プリンタ',u'マッサージ器',u'ミシン',u'レンズ',u'冷蔵庫・冷凍庫',u'動画編集ソフト',u'地デジアンテナ',u'女性用シェーバー',u'掃除機',u'洗濯機',u'生ごみ処理機',u'自転車',u'電子ピアノ',u'香水'] for category, prods in iterAllProducts(minReviewCount=30, categoryFilter=selected): if html: products2html(prods, category, 10) else: products2text(prods, category)
def ngram(n): nc = NgramCounter() for category, products in iterAllProducts(): print >>sys.stderr, category nc.ngram(products, n) return dict(nc.cnt)
def df(): wc = WordCounter() for category, products in iterAllProducts(): print >>sys.stderr, category wc.regist(products) return dict(wc.cnt)