首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算短文本语料库的语义相似度?

如何计算短文本语料库的语义相似度?
EN

Stack Overflow用户
提问于 2020-04-20 04:50:57
回答 1查看 119关注 0票数 0

在两个短文本语料库之间进行无监督语义相似度比较的正确方法是什么?比较两者的LDA主题分布似乎不是一种解决方案,因为对于较短的文档,生成的主题并不能很好地掌握语义。分块没有帮助,因为下面的tweet不一定是同一主题。例如,在这些语料库中创建文档TF-IDF之间的余弦相似性矩阵是一种好方法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-20 05:21:45

这里有一种找到here的方法。相似度得分越高,句子(在语义上)越接近。

代码语言:javascript
运行
复制
#Invoke libraries
from nltk import pos_tag, word_tokenize
from nltk.corpus import wordnet as wn


#Build functions to compute similarity
def ptb_to_wn(tag):    
    if tag.startswith('N'):
        return 'n' 
    if tag.startswith('V'):
        return 'v' 
    if tag.startswith('J'):
        return 'a' 
    if tag.startswith('R'):
        return 'r' 
    return None


def tagged_to_synset(word, tag):
    wn_tag = ptb_to_wn(tag)
    if wn_tag is None:
        return None 
    try:
        return wn.synsets(word, wn_tag)[0]
    except:
        return None


def sentence_similarity(s1, s2):    
    s1 = pos_tag(word_tokenize(s1))
    s2 = pos_tag(word_tokenize(s2)) 

    synsets1 = [tagged_to_synset(*tagged_word) for tagged_word in s1]
    synsets2 = [tagged_to_synset(*tagged_word) for tagged_word in s2]

    #suppress "none"
    synsets1 = [ss for ss in synsets1 if ss]
    synsets2 = [ss for ss in synsets2 if ss]

    score, count = 0.0, 0

    for synset in synsets1:
        best_score = max([synset.path_similarity(ss) for ss in synsets2])
        if best_score is not None:
            score += best_score
            count += 1

    # Average the values
    score /= count
    return score

#compute the symmetric sentence similarity
def symSentSim(s1, s2):
    sss_score = (sentence_similarity(s1, s2) + sentence_similarity(s2,s1)) / 2
    return (sss_score)

s1 = 'We rented a vehicle to drive to New York'
s2 = 'The car broke down on our jouney'            

s1tos2 = symSentSim(s1, s2)

print(s1tos2)
#0.142509920635
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61311478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档