将一组摘要中的元素与一组标题中的元素相匹配

时间:2014-10-05 10:57:03

标签: algorithm machine-learning nlp information-retrieval tf-idf

假设我有两套,

a = {"this is a title", ...}
b = {"this is a short description of some title from a", ...}

在集合b中为集合a中的元素找到最佳匹配的最佳方法是什么,反之亦然。我尝试的方法是使用b的标记创建一个单词向量空间的tf-idf包,然后找到余弦相似度。对于给定的a,如果余弦相似度高于任何其他元素b,则选择对(a,b)。但它不是很准确。

有没有更好的方法来做到这一点?如何提高准确度?

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
# titles and abstracts are arrays of strings
tfidf = TfidfVectorizer(stop_words='english', analyzer='word')

vec = tfidf.fit_transform(abstracts)

def predict(title):
    titlevec = tfidf.transform([title])
    sim = cosine_similarity(titlevec,vec)
    return np.argmax(sim)

for i, title in titles:
    index = predict(title)
    print "Title: {0}\nAbstracts:{1}".format(title,abstracts[index])

0 个答案:

没有答案