Open syleeie2310 opened 3 months ago
@JIYUN0710 - brand2vec
amazon_data = spark.sql(""" select * from asac.cellphone where 1=1 and date_column < 날짜 """)
grouped_df = ( amazon_data .groupby("reviewerID") .agg( F.sort_array(F.collect_list(F.struct("date_column", "brand"))) .alias("collected_list") ) .withColumn("sorted_list", F.col("collected_list.asin")) .drop("collected_list") )
word2Vec = Word2Vec(vectorSize=30, seed=2310, inputCol="sorted_list", outputCol="model", minCount=5, maxIter = 30, numPartitions = 16, windowSize = 5) ### 파라미터 (코어 X Executor) model = word2Vec.fit(grouped_df) model.write().overwrite().save('')
brand_vec = model.getVectors() brand_vec.createOrReplaceTempView("brand_vec") brand_vec & brand_vec = 유사도 (brand_vec 갯수 보고 너무 많으면 조절해서 브랜드가 5천개 = 5000 X 5000 = 25,000,000) 브랜드 명 입력하면 유사한 브랜드 나올 수 있도록 결과 만들기
-> 삼성 > 애플,...
만약 결과를 잘 보여주고 싶으면 tSNE 라이브러리로 결과 시각화 하면 끝
from pyspark.sql.functions import format_number as fmt model.findSynonyms("a", 2).select("word", fmt("similarity", 5).alias("similarity")).show()
위의 그림이 5개 이상 데이터만 활용한 것이고, 아래 그림은 전체다 활용했을 때, 카테고리별 t-sne 그래프입니다!
-> 5개 이상
-> 전체
애초에 카테고리별 개수 차이가 있어서 확실하게 나타나지 않습니다!
코사인 유사도 상위 10개, 하위 10개 했을때는, 결과는 잘 보입니다!
워드 투 벡을 더 학습해볼까요, 아니면 여기서 5개이상으로 픽스할까요?!
@JIYUN0710 님이 보고 좀더 좋은 방향으로 본인이 결정해보실래요? 둘다 머 비슷한거 같으니!! ㅎㅎ
이정도로 마무리해서 최종 발표자료에 잘 보여주기만 하심 될듯 해요!
넵 알겠습니다 ㅎㅎ! 감사합니다!
brand2vec, category2vec
mllib word2vec 알고리즘으로 계산하기
리뷰어의 시퀀스를 계산해서 학습 데이터에 넣으면 결과가 뿅 나옵니다.