sklearn实现TextRank自动摘要


# 利用TextRank,提取文本摘要
import jieba
import networkx as nx
from sklearn.feature_extraction.text import TfidfVectorizer, TfidfTransformer

def cut_sentence(sentence):
    """
    分句
    :param sentence:
    :return:
    """
    # if not isinstance(sentence, unicode):
    # sentence = sentence.decode('utf-8')
    delimiters = frozenset(u'。!?')
    buf = []
    for ch in sentence:
        buf.append(ch)
        if delimiters.__contains__(ch):
            yield ''.join(buf)
            buf = []
    if buf:
        yield ''.join(buf)


def load_stopwords(path='./stopwordshit.txt'):
    """
    加载停用词
    :param path:
    :return:
    """
    with open(path,encoding="utf-8") as f:
        # stopwords = filter(lambda x: x, list(map(lambda x: x.strip(), f.readlines())))
        stopwords = list(map(lambda x: x.strip(), f.readlines()))
    stopwords.extend([' ', '\t', '\n'])
    return frozenset(stopwords)
   return filter(lambda x: not stopwords.__contains__(x), jieba.cut(sentence))

def get_abstract(content, size=3):
    """
    利用textrank提取摘要
    :param content:
    :param size:
    :return:
    """
    docs = list(cut_sentence(content))
    tfidf_model = TfidfVectorizer(tokenizer=jieba.cut, stop_words=load_stopwords())
    tfidf_matrix = tfidf_model.fit_transform(docs)
    normalized_matrix = TfidfTransformer().fit_transform(tfidf_matrix)
    similarity = nx.from_scipy_sparse_matrix(normalized_matrix * normalized_matrix.T)
    scores = nx.pagerank(similarity)
    tops = sorted(scores.items(), key=lambda x: x[1], reverse=True)

    size = min(size, len(docs))
    indices = list(map(lambda x: x[0], tops))[:size]
    return list(map(lambda idx: docs[idx], indices))

text = u'''
上午,新京报记者从北京市相关部门召开的新闻发布会上获悉,北京市将于4月16日起正式启动北京市首批积分落户申报。对于申报人“在京连续缴纳社会保险7年及以上”的资格条件,如何认定?是否允许存在补缴记录?根据细则规定,“截至积分落户申报工作启动的上一年度12月31日,申请人应在京连续缴纳社会保险满7年(补缴记录累计不超过5个月),养老、医疗、失业、工伤、生育各项险种的缴费应符合北京市社会保险相关规定。实际缴费记录应在积分落户申报工作启动的上一年度12月31日前形成,且年度积分落户申报阶段开始前缴费状态正常。”
  北京市人力社保局积分落户服务中心相关负责人介绍,在京连续缴纳社保7年及以上是根据本市社会保险相关规定确定不同险种的缴纳计算起始时间。考虑到申请人工作调动等情况,会存在个别月份的社会保险费补缴,故规定为补缴记录累计不超过5个月。期间断缴未及时补缴的,即使未超过5个月也不能算为连续缴纳。因银行托收或社保经办机构原因造成断缴,如果在年度积分落户申报启动的上一年度12月31日前及时进行了补缴,将不会计入资格条件补缴月数。
'''
# 读取文件
# f=open(r"D:\temp.txt",encoding="utf-8")
# text=f.read()
# f.close()
for i in get_abstract(text,3):
    print(i)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值