酒店的属性为员工素质设施服务清洁程度舒适度性价比位置。之后求解以上6个属性与文本中的25个关键词之间的相似度。相似度高则划分为属性的二级影响因素。采用Word2Vec里面的gensimmodel 进行相似度计算。问题是这6个属性在分词后的文本中没有也就没有这个属性的词向量这时该怎么处理给出示例代码
如果某个属性在文本中没有出现,可以考虑使用与该属性相关的词语作为代替,例如“员工素质”可以用“服务态度”、“专业技能”等词语代替。另外,也可以使用与该属性相关的同义词或近义词进行替代。
示例代码:
import gensim import jieba
加载预训练的中文词向量模型
model = gensim.models.Word2Vec.load("path_to_pretrained_model")
定义属性关键词
attributes = ["员工素质", "设施服务", "清洁程度", "舒适度", "性价比", "位置"]
定义属性关键词的代替词
replace_words = { "员工素质": ["服务态度", "专业技能"], "设施服务": ["设施设备", "客房服务"], "清洁程度": ["卫生干净", "清洁卫生"], "舒适度": ["舒适感受", "睡眠质量"], "性价比": ["价值体现", "性价比高"], "位置": ["交通便利", "地理位置"] }
将文本分词,并计算属性关键词和代替词的词向量
with open("path_to_text_file", "r", encoding="utf-8") as f: text = f.read() words = jieba.lcut(text) for attr in attributes: attr_words = [attr] + replace_words.get(attr, []) attr_vecs = [] for w in attr_words: if w in model.wv.vocab: attr_vecs.append(model.wv[w]) if attr_vecs: attr_vec = sum(attr_vecs) / len(attr_vecs) for w in words: if w in model.wv.vocab: sim = model.wv.similarity(attr, w) if sim > 0.7: # 相似度阈值可以根据实际情况调整 print("{} -> {}: {}".format(w, attr, sim)
原文地址: https://www.cveoy.top/t/topic/fHP9 著作权归作者所有。请勿转载和采集!