前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[文本语义相似] 基于ngram-tf-idf的余弦距离(gensim实现)

[文本语义相似] 基于ngram-tf-idf的余弦距离(gensim实现)

作者头像
MachineLP
发布2020-05-08 17:06:24
4790
发布2020-05-08 17:06:24
举报
文章被收录于专栏:小鹏的专栏小鹏的专栏

文本相似在问答系统中有很重要的应用,如基于知识的问答系统(Knowledge-based QA),基于文档的问答系统(Documen-based QA),以及基于FAQ的问答系统(Community-QA)等。像 对于问题的内容,需要进行相似度匹配,从而选择出与问题最接近,同时最合理的答案。本节介绍 基于bow的余弦距离计算相似度。

基于gensim的方式如下:

代码语言:javascript
复制
import os
import jieba
import pickle
import logging
import numpy as np
from gensim import corpora, models, similarities
 
 
class StopWords(object):
    '''
    '''
    def __init__(self, stopwords_file=stopwords_file ):
        self.stopwords = set( [ word.strip() for word in open(stopwords_file, 'r') ] )
    
    def del_stopwords(self, words):
        return [ word for word in words if word not in self.stopwords ]
 
stop_word = StopWords()

# gen 3-gram
def _list_3_ngram(words, n=3, m=2):
    pattern1 = re.compile(r'[0-9]')
    if len(words) < n:
        n = len(words)
    temp=[words[i - k:i] for k in range(m, n + 1) for i in range(k, len(words) + 1) ]
    return [item for item in temp if len(''.join(item).strip())>0 and len(pa
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档