我是ML领域的新手,正在尝试创建一个可以预测两个句子之间语义相似性的模型。
我使用以下方法:
1.在gensim包中使用word2vec模型,对所讨论的句子中出现的每个单词进行矢量化
2.计算每个句子/文档中所有单词的平均向量import numpy as np
from scipy import spatial
index2word_set = set(model.wv.index2word)
def avg_feature_vector(sentence, model, num_features, index2word_set):
words = sentence.split()
feature_vec = np.zeros((num_features, ), dtype='float32')
n_words = 0
for word in words:
if word in index2word_set:
n_words += 1
feature_vec = np.add(feature_vec, model[word])
if (n_words > 0):
feature_vec = np.divide(feature_vec, n_words)
return feature_vec
3.接下来计算这两个平均向量之间的余弦相似性
^{pr2}$
以下挑战需要帮助:
由于我想建立一个模型来预测两个句子之间的语义相似性,我不太确定:
1.哪种模式最适合这个问题
2.接下来更重要的是如何训练这种模式?在
我是否应该创建一个矩阵,其中每行包含两个句子:
sen1和sen2和我将它们矢量化并计算余弦相似性(按照上述方法)
那么对于培训数据:
X_序列:sen1和sen2的平均向量及其余弦相似值
y_Train(预测):一组二进制值(如果余弦相似,则为1或类似值,否则为0.7和0)
我很困惑我的方法是否正确,以及如何以工作代码库的形式使用适当的方法。在
互联网和网上可用的材料是我学习ML的唯一老师;因此请您的指导帮助我消除理解上的差距,并帮助我为我的问题提出一个良好的工作模式。在