fasttext 预训练句子相似度
fasttext pre trained sentences similarity
我想使用 fasttext 预训练模型来计算相似度
一组句子之间的一个句子。
谁能帮我?
什么是最好的方法?
我通过训练一个 tfidf 模型来计算句子之间的相似度。像这样写代码。
是否可以更改它并使用 fasttext 预训练模型?例如使用向量来训练 tfidf 模型?
def generate_tfidf_model(sentences):
print("generating TfIdf model")
texts = [[sentence for sentence in doc.split()] for doc in sentences]
dictionary = gensim.corpora.Dictionary(texts)
feature_cnt = len(dictionary.token2id)
mycorpus = [dictionary.doc2bow(doc, allow_update=True) for doc in texts]
tfidf_model = gensim.models.TfidfModel(mycorpus)
index = gensim.similarities.SparseMatrixSimilarity(tfidf_model[mycorpus]
, num_features = feature_cnt)
return tfidf_model, index, dictionary
def query_search(query, tfidf_model, index, dictionary):
query = normal_stemmer_sentence(query)
query_vector = dictionary.doc2bow(query.split())
similarity = index[tfidf_model[query_vector]]
return similarity
我认为如果可以使用词嵌入,就没有必要计算 TfIdf。
一个简单但有效的方法在于:
计算代表你的两个字符串的两个向量,使用你的语言的预训练词嵌入(例如 FastText - get_sentence_vector https://fasttext.cc/docs/en/python-module.html#model-object)
计算两个向量之间的余弦相似度(1:相等的字符串;0:真的
不同的字符串;阅读 https://masongallo.github.io/machine/learning,/python/2016/07/29/cosine-similarity.html).
我想使用 fasttext 预训练模型来计算相似度 一组句子之间的一个句子。 谁能帮我? 什么是最好的方法?
我通过训练一个 tfidf 模型来计算句子之间的相似度。像这样写代码。 是否可以更改它并使用 fasttext 预训练模型?例如使用向量来训练 tfidf 模型?
def generate_tfidf_model(sentences):
print("generating TfIdf model")
texts = [[sentence for sentence in doc.split()] for doc in sentences]
dictionary = gensim.corpora.Dictionary(texts)
feature_cnt = len(dictionary.token2id)
mycorpus = [dictionary.doc2bow(doc, allow_update=True) for doc in texts]
tfidf_model = gensim.models.TfidfModel(mycorpus)
index = gensim.similarities.SparseMatrixSimilarity(tfidf_model[mycorpus]
, num_features = feature_cnt)
return tfidf_model, index, dictionary
def query_search(query, tfidf_model, index, dictionary):
query = normal_stemmer_sentence(query)
query_vector = dictionary.doc2bow(query.split())
similarity = index[tfidf_model[query_vector]]
return similarity
我认为如果可以使用词嵌入,就没有必要计算 TfIdf。
一个简单但有效的方法在于:
计算代表你的两个字符串的两个向量,使用你的语言的预训练词嵌入(例如 FastText - get_sentence_vector https://fasttext.cc/docs/en/python-module.html#model-object)
计算两个向量之间的余弦相似度(1:相等的字符串;0:真的 不同的字符串;阅读 https://masongallo.github.io/machine/learning,/python/2016/07/29/cosine-similarity.html).