レビューグラフ解析アルゴリズム評価用のTripAdvisorデータセット
Posted: , Modified: Python DataMining Algorithm Qiita
本稿は Qiita 投稿記事 のバックアップです.
概要
スパムレビュア発見アルゴリズムの評価用データセットに加えて, イリノイ大学で公開されている TripAdvisor データセットを読み込むパッケージを作成しました.
インストール
パッケージは PyPI に登録してあるので,次のコマンドでインストールできます.
$ pip install --upgrade rgmining-tripadvisor-dataset
なお,このインストール中に元データ配布先からファイルをダウンロードするので, ある程度の時間を要します.(参考: pip install中に他所からデータファイルを取得する)
グラフデータの読み込み
rgmining-tripadvisor-dataset
には
tripadvosir
モジュールが含まれており,
load
関数をエクスポートしています.
この関数はレビューグラフオブジェクトを受け取り,
TripAdvisor データセットのレビューデータを追加します.
このグラフオブジェクトは, グラフインターフェイス を実装し次のメソッドを持っている必要があります.
- new_reviewer(name): name という名前を持つレビュアーオブジェクトを作成して返す.
- new_product(name): name という名前を持つ商品オブジェクトを作成して返す.
- add_review(reviewer, product, rating, date): date に投稿された reviewer による product へのスコアが rating であるレビューを追加する.なお rating は 0 以上 1 以下に正規化されているものとする.
先日紹介した,Fraud Eagle, FRAUDAR は共にこのグラフインターフェイスを実装しているので, TripAdvisor データセットを読み込むことができます.
Fraud Eagle で解析する場合(事前に pip install --upgrade rgmining-fraud-eagle
が必要),
import fraud_eagle as feagle
import tripadvisor
graph = feagle.ReviewGraph(0.25) # パラメータは適当に決めた.
tripadvisor.load(graph)
print("Start iterations.")
max_iteration = 10000
for i in range(max_iteration):
# Run one iteration.
diff = graph.update()
print("Iteration %d ends. (diff=%s)", i + 1, diff)
# 最大修正量が 10^-5 ならば収束したと思う
if diff < 10**-5:
break
# レビュアーごとに特異度を出力.
for r in graph.reviewers:
print(r.name, r.anomalous_score)
# 特異度を考慮したレビューサマリを出力.
for p in graph.products:
print(p.name, p.summary)
FRAUDAR で解析する場合(事前に pip install --upgrade rgmining-fraudar
が必要),
import fraudar
import tripadvisor
graph = fraudar.ReviewGraph(10) # パラメータは適当に決めた.
tripadvisor.load(graph)
graph.update()
# スパマーと判断されたレビュアーを出力.
for r in graph.reviewers:
if r.anomalous_score == 1:
print(r.name)
# スパマーを無視したレビューサマリを出力.
for p in graph.products:
print(p.name, p.summary)
まとめ
レビューグラフのマイニングアルゴリズム評価用に, イリノイ大学で公開されている TripAdvisor データセットを読み込むパッケージを作成しました. グラフインターフェイスを実装しているグラフオブジェクトであれば,このパッケージを利用できるので, 我々が作成したアルゴリズム以外のアルゴリズムを実装評価する際にも利用できます.