Spark分析Amazon DataSet(实现Spark TF-IDF)

  • Post author:
  • Post category:其他




准备工作

本例使用Home and Kitchen数据集,附上

下载链接

.

数据集有reviews_Home_and_Kitchen_5.json.gz和ratings_Tools_and_Home_Improvement.csv两个文件。

前者是json文件,内容如下:

{
   "reviewerID": "APYOBQE6M18AA", "asin": "0615391206", 
"reviewerName": "Martin Schwartz", "helpful": [0, 0], 
"reviewText": "My daughter wanted this book and the price on Amazon was the best.  She has already tried one recipe a day after receiving the book.  She seems happy with it.", 
"overall": 5.0, "summary": "Best Price", "unixReviewTime": 1382140800, 
"reviewTime": "10 19, 2013"}
...

后者是csv文件,内容如下:

A15I9QV4OG22A6,001212835X,5.0,1389657600
A1BNZ90HN39TYR,0205062040,5.0,1373846400
A9DUCBTL8K3E4,0205062040,5.0,1382659200
AA8O583KRYINX,0205062040,5.0,1372723200
...

四项分别是reviewerID、asin、overall和unixReviewTime,具体含义就是用户、商品编号、评分和时间戳。




TFIDF

TF-IDF是评估一个词在一个文档集或语料库中重要程度的统计方法。


TF(Term Frequency)词频

,表示某个词在某个文档中出现的频数。一个词在这个文档中出现的次数多,可能说明这个词比较重要。一般来说,会对词频进行归一化,防止它偏向比较长的文件。带标准化的词频计算方式为:





T F = 某 个 词 在 某 个 具 体 文 档 中 出 现 的 次 数 文 档 的 总 词 数 TF = \frac{某个词在某个具体文档中出现的次数}{文档的总词数}






T


F




=























































































































IDF(inverse document frequency)逆文档频率

是一个词语重要性的度量。如果一个词在多篇文档中词频较低,则表示这个词比较少见,对比较少见的词赋予比较大的“权重”,因此IDF值比较大;反之越常见的词IDF值越小。IDF的具体计算方式为:





I D F = log ⁡ 语 料 库 的 文 档 总 数 包 含 该 词 的 文 档 数 + 1 IDF = \log\frac{语料库的文档总数}{包含该词的文档数+1}






I


D


F




=








lo

g










































+




1



























































分别计算出TF和IDF后,我们就可以就算TD-IDF:





T F − I D F = T F ∗ I D F TF-IDF = TF*IDF









版权声明:本文为qq_39315740原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。