我有大量的短语片段(不是整个片段),其中包含基于文本相似性的用户提供的标签:
train_data (labeled phrase segments):
"has watched movie" => phraselabel1:"movie watch activity"
"watched with friends X,Y,Z movie" => phraselabel1:"movie watch activity"
"watched show" => phraselabel2: "show watch activity"
"is jobless" => phraselabel3: "lack of job"
input phrase segment:
"watched movie in the past" => ??
output:
recommend ordered set of phrase labels: phraselabel1 then phraselabel3 based on similarity criteria
我想建立一个(可扩展的)实验性推荐系统,找到与输入未标记的短语标签最相似的短语片段,并根据相似性返回最佳标签。标签将由用户最初添加到数据子集,系统将帮助未来用户使用现有标签。
- 短语标签的数量将远少于短语片段的总数,但比主题/标签更细化
我正在考虑以下方法:
- 在输入短语和所有标记短语之间执行 TF-IDF ( http://spark.apache.org/docs/latest/mllib-feature-extraction.html )。通过找到最相似的,我可以得出最适合建议的标签
- 在输入短语和所有短语标签之间进行 TF-IDF。
- Word2Vec?? 我不确定它是否可以用于短语片段作为输入而不仅仅是单词..
- 标记的 LDA(潜在狄利克雷分配(https://github.com/myleott/JGibbLabeledLDA)虽然我不认为这在 Spark 中很容易获得
- 神经网络 ( https://spark.apache.org/docs/latest/ml-classification-regression.html#multilayer-perceptron-classifier ) 使用用户单击将所有输入短语片段的单词作为输入和短语标签作为输出进行训练对所选短语标签的反馈以进行反向传播训练。
如果您能根据用例阐明哪种方法(从上面或新方法)更好,我将不胜感激。
谢谢 :)