Learn practical skills, build real-world projects, and advance your career
Created 5 years ago
基于文本相似度计算的相似APP发现
1. 主要思路:
将APP的文本简介的向量作为APP的特征向量,通过计算两个APP的特征向量之间的余弦值来判断两个APP之间的相似度。
优化:由于在所有APP中两两计算相似度复杂度太大,所以只考虑同一类别下的APP两两之间进行相似度的计算。
2. 主要流程:
- 对所有APP的简介文本进行分词、去停用词、去标点等处理。
- 计算APP的TF-IDF向量表示,并进行l2归一化
- 对于每一个APP,计算其他APP与当前APP的余弦相似度,并排序,取topk作为与当前APP相似的APP。
3. 实现步骤
主要包括:
- 环境数据准备
- 文本分词处理
- ti-idf 计算并进行l2归一化,方便cosine距离的计算
- 在同一类别中计算APP之间的cosine距离,取topk
3.1 环境数据准备
import re
import jieba
import pickle
import multiprocessing
import pandas as pd
import numpy as np
from tqdm import tqdm
from sklearn.feature_extraction.text import TfidfVectorizer
from zhon.hanzi import punctuation
# app_raw_data 数据 或者 node_app数据
app_raw_data = pd.read_csv('../../data/kgdata/node_app.csv')
# 取出需要的两列数据:app的唯一标识以及简介
app_ids = list(app_raw_data['app_id:ID(app_id)'].values)
app_briefs = list(app_raw_data['soft_brief'].values)
print("number of app_id:",len(app_ids))
print("number of app_brief:",len(app_briefs))
/home/LAB/zhangcw/anaconda3/lib/python3.6/site-packages/IPython/core/interactiveshell.py:2785: DtypeWarning: Columns (0,6,8,12,14,22,23,24) have mixed types. Specify dtype option on import or set low_memory=False.
interactivity=interactivity, compiler=compiler, result=result)
number of app_id: 1881732
number of app_brief: 1881732