#!/usr/bin/env python3
# coding: utf-8
# File: abstract_textrank.py
# Author: lhy<lhy_in_blcu@126.com,https://huangyong.github.io>
# Date: 18-4-17

from collections import defaultdict
import jieba.posseg as pseg
from app.algorithm.KeyInfoExtraction.textrank import *
from app.algorithm.KeyInfoExtraction.sentence_similarity import *
import re

class AbstarctTextrank:
    def __init__(self):
        self.span = 3
        self.similer = SimilarityCompute()
        self.sim_score = 0.5 #句子相似度阈值，用于构建句子之间的边

    def sentence_split(self, text):
        sentence_dict = {}
        sentences = [sentence for sentence in re.split(r'[？！。;；\n\r]', text) if sentence]
        for index, sentence in enumerate(sentences):
            sentence_dict[index] = [sentence, [word.word for word in pseg.cut(sentence) if word.flag[0] not in ['x', 'u', 'p', 'w']]]
        return sentence_dict

    def extract_abstract(self, text, num_sentences):
        sentence_dict = self.sentence_split(text)
        g = textrank_graph()
        cm = defaultdict(int)
        for i, s1 in sentence_dict.items():
            for j, s2 in sentence_dict.items():
                sim_score = self.similer.similarity_cosine(s1[1], s2[1])
                if sim_score >= 0.5:
                    cm[(s1[0], s2[0])] += 1
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        nodes_rank = sorted(nodes_rank.items(), key=lambda asd: asd[1], reverse=True)
        return nodes_rank[:num_sentences]


def test():
    text = '''于浩故意伤害罪一审刑事附带民事判决书天津市东丽区人民法院刑 事 附 带 民 事 判 决 书（2014）丽刑初字第81号公诉机关天津市东丽区人民检察院。附带民事诉讼原告人刘XX。系本案被害人。被告人于浩。2000年9月因犯抢劫罪被黑龙江省齐齐哈尔市中级人民法院判处有期徒刑三年，2001年2月25日刑满释放；2007年7月因犯聚众斗殴罪、敲诈勒索罪被天津市东丽区人民法院判处有期徒刑六年六个月，2011年6月10日刑满释放。2013年10月9日因涉嫌故意伤害罪被天津市公安局东丽分局刑事拘留，同年10月23日被逮捕，现羁押于天津市东丽区看守所。天津市东丽区人民检察院以津丽检刑诉（2014）055号起诉书指控被告人于浩犯故意伤害罪，于2014年2月24日向本院提起公诉。在诉讼过程中，附带民事诉讼原告人刘XX向本院提起附带民事诉讼。本院依法组成合议庭，公开开庭进行了合并审理。天津市东丽区人民检察院指派代理检察员胡西茂出庭支持公诉，被告人于浩、附带民事诉讼原告人刘XX均到庭参加诉讼。现已审理终结。经审理查明，2012年8月20日11时许，在天津市东丽区金钟街徐庄村振东物流集团院内，被告人于浩因倒车时碰到被害人刘XX，遂与被害人刘XX发生争执，在争执过程中被告人于浩用拳头将被害人刘XX面部打伤，后被告人于浩逃离现场。经鉴定，被害人刘XX面部损伤程度为轻伤。2013年10月9日，被告人于浩在天津市东丽区金钟街徐庄村被公安机关抓获归案。上述事实，被告人于浩在开庭审理过程中亦无异议，且有被害人刘XX的陈述及诊断证明，证人XX、张X的证言，案件来源及抓获经过，鉴定意见书，被告人于浩的供述，被告人于浩的前科材料，被告人于浩的身份证明等证据证实，足以认定。另查，附带民事诉讼原告人刘XX被被告人于浩打伤后，在中国人民武装警察部队后勤学院附属医院进行了治疗，住院22天，共支付医疗费9480.77元。现附带民事诉讼原告人刘XX要求被告人于浩赔偿经济损失共计97825.37元，并当庭提交了医药费单据11张及诊断证明1份，交通费单据38张，天津市卓泰物流有限公司证明1份，天津市鑫泷元货运有限公司证明1份，天津市万顺通物流中心证明1份，天津市泰荣金辉货运部证明1份，天津市日景晟物流有限公司证明1份，天津市东丽区荣荣货运中心证明1份，天津市龙江兴货运站证明1份，天津市锐文物流有限公司证明1份。被告人于浩对附带民事诉讼原告人刘XX提供的证据无异议，并表示同意按照法律规定赔偿被害人刘XX的经济损失。本院认为，被告人于浩目无国法，故意损害他人身体健康，并致一人轻伤的后果，其行为已构成故意伤害罪，应予处罚。公诉机关指控罪名成立，予以采纳。被告人于浩在刑满释放后五年内又重新犯应判处有期徒刑以上刑罚之罪，系累犯，应从重处罚。鉴于被告人于浩归案后能如实供述自己的罪行，可从轻处罚。被告人于浩对其犯罪行为给附带民事诉讼原告人刘XX造成的经济损失，应当承担民事赔偿责任。关于附带民事诉讼原告人刘XX的诉讼请求及相关证据，本院作如下评判：1、医疗费，附带民事诉讼原告人刘XX为证实医疗费9480.77元而提供的医疗费单据及费用清单客观、合法且与本案有关联，本院对此予以支持。2、交通费，附带民事诉讼原告人刘XX虽对该项请求提供相应的交通费票据，但考虑到附带民事诉讼原告人刘XX交通费花费过大，本院对此予以酌情确定600元。3、误工费，附带民事诉讼原告人刘XX对该项请求提供了单位误工证明客观、合法且与本案有关联，本院对此予以支持，其月工资为3200元，根据其伤情，误工时间为3个月，误工费为9600元。4、护理费，附带民事诉讼原告人刘XX对该项诉讼请求虽未提供相应证据，但根据其伤情，住院期间的护理是必要的，住院期间护理人员一人，按照国家规定护理人员每天工资为68.91元，护理费为1516.02元。5、营养费，附带民事诉讼原告人刘XX对该项请求虽未提供相应的证据加以证明，但根据其伤情，住院期间合理的营养供给是必要的，本院酌情予以确定1100元。6、住院伙食补助费，应参照国家机关一般工作人员出差伙食补助予以确定，即每天50元标准，附带民事诉讼原告人刘XX住院22天，经核算伙食补助费为1100元。7、精神损失费，因无法律依据，本院不予支持。综上，附带民事诉讼原告人刘XX经济损失为医药费9480.77元、住院伙食补助费1100元、营养费1100元、交通费600元、误工费9600元、护理费1516.02元，总计23396.79元。综上所述，本院依据《中华人民共和国刑法》第二百三十四条一款、第六十五条、第六十七条第三款、第三十六条、《中华人民共和国侵权责任法》第十六条之规定，判决如下：一、被告人于浩犯故意伤害罪，判处有期徒刑一年十个月。（刑期自判决执行之日起计算。判决执行以前先行羁押的羁押一日折抵刑期一日，即自2013年10月9日起至2015年8月8日止。）二、被告人于浩于本判决生效后十日内赔偿附带民事诉讼原告人刘XX经济损失合计23396.79元。三、附带民事诉讼原告人刘XX其他诉讼请求，予以驳回。如不服本判决，可于接到判决书的第二日起十日内，通过本院或直接向天津市第二中级人民法院提出上诉，书面上诉的，应交上诉状正本一份，副本二份。审　判　长　　刘士军人民陪审员　　李　芸人民陪审员　　胡金英二〇一四年四月一日书　记　员　　李　陆 '''
    abstracter = AbstarctTextrank()
    keysentences = abstracter.extract_abstract(text, 1)

    for sent in keysentences:
        print(sent)
    '''
    ('就这起事件来说，如何保障患者和家属的知情权，如何让患者和医生能够多一份实质化的沟通', 1.0)
    ('事情经过究竟如何，曾引起舆论纷纷，而随着时间的推移，更多的反思也留给了我们，只有解决了这起事件中暴露出的一些问题，比如患者的医疗选择权，人们对剖宫产和顺产的认识问题等，这样的悲剧才不会再次发生', 0.9999999860476693)
    ('（原标题：央视独家采访：陕西榆林产妇坠楼事件在场人员还原事情经过）', 0.99999402813924)
    '''

# test()









f0ef71ed8fffd85f8ba753c7d8f904ecfd69d3d8
<mask token>


class AbstarctTextrank:

    def __init__(self):
        self.span = 3
        self.similer = SimilarityCompute()
        self.sim_score = 0.5
    <mask token>

    def extract_abstract(self, text, num_sentences):
        sentence_dict = self.sentence_split(text)
        g = textrank_graph()
        cm = defaultdict(int)
        for i, s1 in sentence_dict.items():
            for j, s2 in sentence_dict.items():
                sim_score = self.similer.similarity_cosine(s1[1], s2[1])
                if sim_score >= 0.5:
                    cm[s1[0], s2[0]] += 1
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        nodes_rank = sorted(nodes_rank.items(), key=lambda asd: asd[1],
            reverse=True)
        return nodes_rank[:num_sentences]


<mask token>

<mask token>


class AbstarctTextrank:

    def __init__(self):
        self.span = 3
        self.similer = SimilarityCompute()
        self.sim_score = 0.5

    def sentence_split(self, text):
        sentence_dict = {}
        sentences = [sentence for sentence in re.split('[？！。;；\\n\\r]',
            text) if sentence]
        for index, sentence in enumerate(sentences):
            sentence_dict[index] = [sentence, [word.word for word in pseg.
                cut(sentence) if word.flag[0] not in ['x', 'u', 'p', 'w']]]
        return sentence_dict

    def extract_abstract(self, text, num_sentences):
        sentence_dict = self.sentence_split(text)
        g = textrank_graph()
        cm = defaultdict(int)
        for i, s1 in sentence_dict.items():
            for j, s2 in sentence_dict.items():
                sim_score = self.similer.similarity_cosine(s1[1], s2[1])
                if sim_score >= 0.5:
                    cm[s1[0], s2[0]] += 1
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        nodes_rank = sorted(nodes_rank.items(), key=lambda asd: asd[1],
            reverse=True)
        return nodes_rank[:num_sentences]


<mask token>

<mask token>


class AbstarctTextrank:

    def __init__(self):
        self.span = 3
        self.similer = SimilarityCompute()
        self.sim_score = 0.5

    def sentence_split(self, text):
        sentence_dict = {}
        sentences = [sentence for sentence in re.split('[？！。;；\\n\\r]',
            text) if sentence]
        for index, sentence in enumerate(sentences):
            sentence_dict[index] = [sentence, [word.word for word in pseg.
                cut(sentence) if word.flag[0] not in ['x', 'u', 'p', 'w']]]
        return sentence_dict

    def extract_abstract(self, text, num_sentences):
        sentence_dict = self.sentence_split(text)
        g = textrank_graph()
        cm = defaultdict(int)
        for i, s1 in sentence_dict.items():
            for j, s2 in sentence_dict.items():
                sim_score = self.similer.similarity_cosine(s1[1], s2[1])
                if sim_score >= 0.5:
                    cm[s1[0], s2[0]] += 1
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        nodes_rank = sorted(nodes_rank.items(), key=lambda asd: asd[1],
            reverse=True)
        return nodes_rank[:num_sentences]


def test():
    text = (
        '于浩故意伤害罪一审刑事附带民事判决书天津市东丽区人民法院刑 事 附 带 民 事 判 决 书（2014）丽刑初字第81号公诉机关天津市东丽区人民检察院。附带民事诉讼原告人刘XX。系本案被害人。被告人于浩。2000年9月因犯抢劫罪被黑龙江省齐齐哈尔市中级人民法院判处有期徒刑三年，2001年2月25日刑满释放；2007年7月因犯聚众斗殴罪、敲诈勒索罪被天津市东丽区人民法院判处有期徒刑六年六个月，2011年6月10日刑满释放。2013年10月9日因涉嫌故意伤害罪被天津市公安局东丽分局刑事拘留，同年10月23日被逮捕，现羁押于天津市东丽区看守所。天津市东丽区人民检察院以津丽检刑诉（2014）055号起诉书指控被告人于浩犯故意伤害罪，于2014年2月24日向本院提起公诉。在诉讼过程中，附带民事诉讼原告人刘XX向本院提起附带民事诉讼。本院依法组成合议庭，公开开庭进行了合并审理。天津市东丽区人民检察院指派代理检察员胡西茂出庭支持公诉，被告人于浩、附带民事诉讼原告人刘XX均到庭参加诉讼。现已审理终结。经审理查明，2012年8月20日11时许，在天津市东丽区金钟街徐庄村振东物流集团院内，被告人于浩因倒车时碰到被害人刘XX，遂与被害人刘XX发生争执，在争执过程中被告人于浩用拳头将被害人刘XX面部打伤，后被告人于浩逃离现场。经鉴定，被害人刘XX面部损伤程度为轻伤。2013年10月9日，被告人于浩在天津市东丽区金钟街徐庄村被公安机关抓获归案。上述事实，被告人于浩在开庭审理过程中亦无异议，且有被害人刘XX的陈述及诊断证明，证人XX、张X的证言，案件来源及抓获经过，鉴定意见书，被告人于浩的供述，被告人于浩的前科材料，被告人于浩的身份证明等证据证实，足以认定。另查，附带民事诉讼原告人刘XX被被告人于浩打伤后，在中国人民武装警察部队后勤学院附属医院进行了治疗，住院22天，共支付医疗费9480.77元。现附带民事诉讼原告人刘XX要求被告人于浩赔偿经济损失共计97825.37元，并当庭提交了医药费单据11张及诊断证明1份，交通费单据38张，天津市卓泰物流有限公司证明1份，天津市鑫泷元货运有限公司证明1份，天津市万顺通物流中心证明1份，天津市泰荣金辉货运部证明1份，天津市日景晟物流有限公司证明1份，天津市东丽区荣荣货运中心证明1份，天津市龙江兴货运站证明1份，天津市锐文物流有限公司证明1份。被告人于浩对附带民事诉讼原告人刘XX提供的证据无异议，并表示同意按照法律规定赔偿被害人刘XX的经济损失。本院认为，被告人于浩目无国法，故意损害他人身体健康，并致一人轻伤的后果，其行为已构成故意伤害罪，应予处罚。公诉机关指控罪名成立，予以采纳。被告人于浩在刑满释放后五年内又重新犯应判处有期徒刑以上刑罚之罪，系累犯，应从重处罚。鉴于被告人于浩归案后能如实供述自己的罪行，可从轻处罚。被告人于浩对其犯罪行为给附带民事诉讼原告人刘XX造成的经济损失，应当承担民事赔偿责任。关于附带民事诉讼原告人刘XX的诉讼请求及相关证据，本院作如下评判：1、医疗费，附带民事诉讼原告人刘XX为证实医疗费9480.77元而提供的医疗费单据及费用清单客观、合法且与本案有关联，本院对此予以支持。2、交通费，附带民事诉讼原告人刘XX虽对该项请求提供相应的交通费票据，但考虑到附带民事诉讼原告人刘XX交通费花费过大，本院对此予以酌情确定600元。3、误工费，附带民事诉讼原告人刘XX对该项请求提供了单位误工证明客观、合法且与本案有关联，本院对此予以支持，其月工资为3200元，根据其伤情，误工时间为3个月，误工费为9600元。4、护理费，附带民事诉讼原告人刘XX对该项诉讼请求虽未提供相应证据，但根据其伤情，住院期间的护理是必要的，住院期间护理人员一人，按照国家规定护理人员每天工资为68.91元，护理费为1516.02元。5、营养费，附带民事诉讼原告人刘XX对该项请求虽未提供相应的证据加以证明，但根据其伤情，住院期间合理的营养供给是必要的，本院酌情予以确定1100元。6、住院伙食补助费，应参照国家机关一般工作人员出差伙食补助予以确定，即每天50元标准，附带民事诉讼原告人刘XX住院22天，经核算伙食补助费为1100元。7、精神损失费，因无法律依据，本院不予支持。综上，附带民事诉讼原告人刘XX经济损失为医药费9480.77元、住院伙食补助费1100元、营养费1100元、交通费600元、误工费9600元、护理费1516.02元，总计23396.79元。综上所述，本院依据《中华人民共和国刑法》第二百三十四条一款、第六十五条、第六十七条第三款、第三十六条、《中华人民共和国侵权责任法》第十六条之规定，判决如下：一、被告人于浩犯故意伤害罪，判处有期徒刑一年十个月。（刑期自判决执行之日起计算。判决执行以前先行羁押的羁押一日折抵刑期一日，即自2013年10月9日起至2015年8月8日止。）二、被告人于浩于本判决生效后十日内赔偿附带民事诉讼原告人刘XX经济损失合计23396.79元。三、附带民事诉讼原告人刘XX其他诉讼请求，予以驳回。如不服本判决，可于接到判决书的第二日起十日内，通过本院或直接向天津市第二中级人民法院提出上诉，书面上诉的，应交上诉状正本一份，副本二份。审\u3000判\u3000长\u3000\u3000刘士军人民陪审员\u3000\u3000李\u3000芸人民陪审员\u3000\u3000胡金英二〇一四年四月一日书\u3000记\u3000员\u3000\u3000李\u3000陆 '
        )
    abstracter = AbstarctTextrank()
    keysentences = abstracter.extract_abstract(text, 1)
    for sent in keysentences:
        print(sent)
    """
    ('就这起事件来说，如何保障患者和家属的知情权，如何让患者和医生能够多一份实质化的沟通', 1.0)
    ('事情经过究竟如何，曾引起舆论纷纷，而随着时间的推移，更多的反思也留给了我们，只有解决了这起事件中暴露出的一些问题，比如患者的医疗选择权，人们对剖宫产和顺产的认识问题等，这样的悲剧才不会再次发生', 0.9999999860476693)
    ('（原标题：央视独家采访：陕西榆林产妇坠楼事件在场人员还原事情经过）', 0.99999402813924)
    """

from collections import defaultdict
import jieba.posseg as pseg
from app.algorithm.KeyInfoExtraction.textrank import *
from app.algorithm.KeyInfoExtraction.sentence_similarity import *
import re


class AbstarctTextrank:

    def __init__(self):
        self.span = 3
        self.similer = SimilarityCompute()
        self.sim_score = 0.5

    def sentence_split(self, text):
        sentence_dict = {}
        sentences = [sentence for sentence in re.split('[？！。;；\\n\\r]',
            text) if sentence]
        for index, sentence in enumerate(sentences):
            sentence_dict[index] = [sentence, [word.word for word in pseg.
                cut(sentence) if word.flag[0] not in ['x', 'u', 'p', 'w']]]
        return sentence_dict

    def extract_abstract(self, text, num_sentences):
        sentence_dict = self.sentence_split(text)
        g = textrank_graph()
        cm = defaultdict(int)
        for i, s1 in sentence_dict.items():
            for j, s2 in sentence_dict.items():
                sim_score = self.similer.similarity_cosine(s1[1], s2[1])
                if sim_score >= 0.5:
                    cm[s1[0], s2[0]] += 1
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        nodes_rank = sorted(nodes_rank.items(), key=lambda asd: asd[1],
            reverse=True)
        return nodes_rank[:num_sentences]


def test():
    text = (
        '于浩故意伤害罪一审刑事附带民事判决书天津市东丽区人民法院刑 事 附 带 民 事 判 决 书（2014）丽刑初字第81号公诉机关天津市东丽区人民检察院。附带民事诉讼原告人刘XX。系本案被害人。被告人于浩。2000年9月因犯抢劫罪被黑龙江省齐齐哈尔市中级人民法院判处有期徒刑三年，2001年2月25日刑满释放；2007年7月因犯聚众斗殴罪、敲诈勒索罪被天津市东丽区人民法院判处有期徒刑六年六个月，2011年6月10日刑满释放。2013年10月9日因涉嫌故意伤害罪被天津市公安局东丽分局刑事拘留，同年10月23日被逮捕，现羁押于天津市东丽区看守所。天津市东丽区人民检察院以津丽检刑诉（2014）055号起诉书指控被告人于浩犯故意伤害罪，于2014年2月24日向本院提起公诉。在诉讼过程中，附带民事诉讼原告人刘XX向本院提起附带民事诉讼。本院依法组成合议庭，公开开庭进行了合并审理。天津市东丽区人民检察院指派代理检察员胡西茂出庭支持公诉，被告人于浩、附带民事诉讼原告人刘XX均到庭参加诉讼。现已审理终结。经审理查明，2012年8月20日11时许，在天津市东丽区金钟街徐庄村振东物流集团院内，被告人于浩因倒车时碰到被害人刘XX，遂与被害人刘XX发生争执，在争执过程中被告人于浩用拳头将被害人刘XX面部打伤，后被告人于浩逃离现场。经鉴定，被害人刘XX面部损伤程度为轻伤。2013年10月9日，被告人于浩在天津市东丽区金钟街徐庄村被公安机关抓获归案。上述事实，被告人于浩在开庭审理过程中亦无异议，且有被害人刘XX的陈述及诊断证明，证人XX、张X的证言，案件来源及抓获经过，鉴定意见书，被告人于浩的供述，被告人于浩的前科材料，被告人于浩的身份证明等证据证实，足以认定。另查，附带民事诉讼原告人刘XX被被告人于浩打伤后，在中国人民武装警察部队后勤学院附属医院进行了治疗，住院22天，共支付医疗费9480.77元。现附带民事诉讼原告人刘XX要求被告人于浩赔偿经济损失共计97825.37元，并当庭提交了医药费单据11张及诊断证明1份，交通费单据38张，天津市卓泰物流有限公司证明1份，天津市鑫泷元货运有限公司证明1份，天津市万顺通物流中心证明1份，天津市泰荣金辉货运部证明1份，天津市日景晟物流有限公司证明1份，天津市东丽区荣荣货运中心证明1份，天津市龙江兴货运站证明1份，天津市锐文物流有限公司证明1份。被告人于浩对附带民事诉讼原告人刘XX提供的证据无异议，并表示同意按照法律规定赔偿被害人刘XX的经济损失。本院认为，被告人于浩目无国法，故意损害他人身体健康，并致一人轻伤的后果，其行为已构成故意伤害罪，应予处罚。公诉机关指控罪名成立，予以采纳。被告人于浩在刑满释放后五年内又重新犯应判处有期徒刑以上刑罚之罪，系累犯，应从重处罚。鉴于被告人于浩归案后能如实供述自己的罪行，可从轻处罚。被告人于浩对其犯罪行为给附带民事诉讼原告人刘XX造成的经济损失，应当承担民事赔偿责任。关于附带民事诉讼原告人刘XX的诉讼请求及相关证据，本院作如下评判：1、医疗费，附带民事诉讼原告人刘XX为证实医疗费9480.77元而提供的医疗费单据及费用清单客观、合法且与本案有关联，本院对此予以支持。2、交通费，附带民事诉讼原告人刘XX虽对该项请求提供相应的交通费票据，但考虑到附带民事诉讼原告人刘XX交通费花费过大，本院对此予以酌情确定600元。3、误工费，附带民事诉讼原告人刘XX对该项请求提供了单位误工证明客观、合法且与本案有关联，本院对此予以支持，其月工资为3200元，根据其伤情，误工时间为3个月，误工费为9600元。4、护理费，附带民事诉讼原告人刘XX对该项诉讼请求虽未提供相应证据，但根据其伤情，住院期间的护理是必要的，住院期间护理人员一人，按照国家规定护理人员每天工资为68.91元，护理费为1516.02元。5、营养费，附带民事诉讼原告人刘XX对该项请求虽未提供相应的证据加以证明，但根据其伤情，住院期间合理的营养供给是必要的，本院酌情予以确定1100元。6、住院伙食补助费，应参照国家机关一般工作人员出差伙食补助予以确定，即每天50元标准，附带民事诉讼原告人刘XX住院22天，经核算伙食补助费为1100元。7、精神损失费，因无法律依据，本院不予支持。综上，附带民事诉讼原告人刘XX经济损失为医药费9480.77元、住院伙食补助费1100元、营养费1100元、交通费600元、误工费9600元、护理费1516.02元，总计23396.79元。综上所述，本院依据《中华人民共和国刑法》第二百三十四条一款、第六十五条、第六十七条第三款、第三十六条、《中华人民共和国侵权责任法》第十六条之规定，判决如下：一、被告人于浩犯故意伤害罪，判处有期徒刑一年十个月。（刑期自判决执行之日起计算。判决执行以前先行羁押的羁押一日折抵刑期一日，即自2013年10月9日起至2015年8月8日止。）二、被告人于浩于本判决生效后十日内赔偿附带民事诉讼原告人刘XX经济损失合计23396.79元。三、附带民事诉讼原告人刘XX其他诉讼请求，予以驳回。如不服本判决，可于接到判决书的第二日起十日内，通过本院或直接向天津市第二中级人民法院提出上诉，书面上诉的，应交上诉状正本一份，副本二份。审\u3000判\u3000长\u3000\u3000刘士军人民陪审员\u3000\u3000李\u3000芸人民陪审员\u3000\u3000胡金英二〇一四年四月一日书\u3000记\u3000员\u3000\u3000李\u3000陆 '
        )
    abstracter = AbstarctTextrank()
    keysentences = abstracter.extract_abstract(text, 1)
    for sent in keysentences:
        print(sent)
    """
    ('就这起事件来说，如何保障患者和家属的知情权，如何让患者和医生能够多一份实质化的沟通', 1.0)
    ('事情经过究竟如何，曾引起舆论纷纷，而随着时间的推移，更多的反思也留给了我们，只有解决了这起事件中暴露出的一些问题，比如患者的医疗选择权，人们对剖宫产和顺产的认识问题等，这样的悲剧才不会再次发生', 0.9999999860476693)
    ('（原标题：央视独家采访：陕西榆林产妇坠楼事件在场人员还原事情经过）', 0.99999402813924)
    """

#!/usr/bin/env python3
# coding: utf-8
# File: abstract_textrank.py
# Author: lhy<lhy_in_blcu@126.com,https://huangyong.github.io>
# Date: 18-4-17

from collections import defaultdict
import jieba.posseg as pseg
from app.algorithm.KeyInfoExtraction.textrank import *
from app.algorithm.KeyInfoExtraction.sentence_similarity import *
import re

class AbstarctTextrank:
    def __init__(self):
        self.span = 3
        self.similer = SimilarityCompute()
        self.sim_score = 0.5 #句子相似度阈值，用于构建句子之间的边

    def sentence_split(self, text):
        sentence_dict = {}
        sentences = [sentence for sentence in re.split(r'[？！。;；\n\r]', text) if sentence]
        for index, sentence in enumerate(sentences):
            sentence_dict[index] = [sentence, [word.word for word in pseg.cut(sentence) if word.flag[0] not in ['x', 'u', 'p', 'w']]]
        return sentence_dict

    def extract_abstract(self, text, num_sentences):
        sentence_dict = self.sentence_split(text)
        g = textrank_graph()
        cm = defaultdict(int)
        for i, s1 in sentence_dict.items():
            for j, s2 in sentence_dict.items():
                sim_score = self.similer.similarity_cosine(s1[1], s2[1])
                if sim_score >= 0.5:
                    cm[(s1[0], s2[0])] += 1
        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        nodes_rank = sorted(nodes_rank.items(), key=lambda asd: asd[1], reverse=True)
        return nodes_rank[:num_sentences]


def test():
    text = '''于浩故意伤害罪一审刑事附带民事判决书天津市东丽区人民法院刑 事 附 带 民 事 判 决 书（2014）丽刑初字第81号公诉机关天津市东丽区人民检察院。附带民事诉讼原告人刘XX。系本案被害人。被告人于浩。2000年9月因犯抢劫罪被黑龙江省齐齐哈尔市中级人民法院判处有期徒刑三年，2001年2月25日刑满释放；2007年7月因犯聚众斗殴罪、敲诈勒索罪被天津市东丽区人民法院判处有期徒刑六年六个月，2011年6月10日刑满释放。2013年10月9日因涉嫌故意伤害罪被天津市公安局东丽分局刑事拘留，同年10月23日被逮捕，现羁押于天津市东丽区看守所。天津市东丽区人民检察院以津丽检刑诉（2014）055号起诉书指控被告人于浩犯故意伤害罪，于2014年2月24日向本院提起公诉。在诉讼过程中，附带民事诉讼原告人刘XX向本院提起附带民事诉讼。本院依法组成合议庭，公开开庭进行了合并审理。天津市东丽区人民检察院指派代理检察员胡西茂出庭支持公诉，被告人于浩、附带民事诉讼原告人刘XX均到庭参加诉讼。现已审理终结。经审理查明，2012年8月20日11时许，在天津市东丽区金钟街徐庄村振东物流集团院内，被告人于浩因倒车时碰到被害人刘XX，遂与被害人刘XX发生争执，在争执过程中被告人于浩用拳头将被害人刘XX面部打伤，后被告人于浩逃离现场。经鉴定，被害人刘XX面部损伤程度为轻伤。2013年10月9日，被告人于浩在天津市东丽区金钟街徐庄村被公安机关抓获归案。上述事实，被告人于浩在开庭审理过程中亦无异议，且有被害人刘XX的陈述及诊断证明，证人XX、张X的证言，案件来源及抓获经过，鉴定意见书，被告人于浩的供述，被告人于浩的前科材料，被告人于浩的身份证明等证据证实，足以认定。另查，附带民事诉讼原告人刘XX被被告人于浩打伤后，在中国人民武装警察部队后勤学院附属医院进行了治疗，住院22天，共支付医疗费9480.77元。现附带民事诉讼原告人刘XX要求被告人于浩赔偿经济损失共计97825.37元，并当庭提交了医药费单据11张及诊断证明1份，交通费单据38张，天津市卓泰物流有限公司证明1份，天津市鑫泷元货运有限公司证明1份，天津市万顺通物流中心证明1份，天津市泰荣金辉货运部证明1份，天津市日景晟物流有限公司证明1份，天津市东丽区荣荣货运中心证明1份，天津市龙江兴货运站证明1份，天津市锐文物流有限公司证明1份。被告人于浩对附带民事诉讼原告人刘XX提供的证据无异议，并表示同意按照法律规定赔偿被害人刘XX的经济损失。本院认为，被告人于浩目无国法，故意损害他人身体健康，并致一人轻伤的后果，其行为已构成故意伤害罪，应予处罚。公诉机关指控罪名成立，予以采纳。被告人于浩在刑满释放后五年内又重新犯应判处有期徒刑以上刑罚之罪，系累犯，应从重处罚。鉴于被告人于浩归案后能如实供述自己的罪行，可从轻处罚。被告人于浩对其犯罪行为给附带民事诉讼原告人刘XX造成的经济损失，应当承担民事赔偿责任。关于附带民事诉讼原告人刘XX的诉讼请求及相关证据，本院作如下评判：1、医疗费，附带民事诉讼原告人刘XX为证实医疗费9480.77元而提供的医疗费单据及费用清单客观、合法且与本案有关联，本院对此予以支持。2、交通费，附带民事诉讼原告人刘XX虽对该项请求提供相应的交通费票据，但考虑到附带民事诉讼原告人刘XX交通费花费过大，本院对此予以酌情确定600元。3、误工费，附带民事诉讼原告人刘XX对该项请求提供了单位误工证明客观、合法且与本案有关联，本院对此予以支持，其月工资为3200元，根据其伤情，误工时间为3个月，误工费为9600元。4、护理费，附带民事诉讼原告人刘XX对该项诉讼请求虽未提供相应证据，但根据其伤情，住院期间的护理是必要的，住院期间护理人员一人，按照国家规定护理人员每天工资为68.91元，护理费为1516.02元。5、营养费，附带民事诉讼原告人刘XX对该项请求虽未提供相应的证据加以证明，但根据其伤情，住院期间合理的营养供给是必要的，本院酌情予以确定1100元。6、住院伙食补助费，应参照国家机关一般工作人员出差伙食补助予以确定，即每天50元标准，附带民事诉讼原告人刘XX住院22天，经核算伙食补助费为1100元。7、精神损失费，因无法律依据，本院不予支持。综上，附带民事诉讼原告人刘XX经济损失为医药费9480.77元、住院伙食补助费1100元、营养费1100元、交通费600元、误工费9600元、护理费1516.02元，总计23396.79元。综上所述，本院依据《中华人民共和国刑法》第二百三十四条一款、第六十五条、第六十七条第三款、第三十六条、《中华人民共和国侵权责任法》第十六条之规定，判决如下：一、被告人于浩犯故意伤害罪，判处有期徒刑一年十个月。（刑期自判决执行之日起计算。判决执行以前先行羁押的羁押一日折抵刑期一日，即自2013年10月9日起至2015年8月8日止。）二、被告人于浩于本判决生效后十日内赔偿附带民事诉讼原告人刘XX经济损失合计23396.79元。三、附带民事诉讼原告人刘XX其他诉讼请求，予以驳回。如不服本判决，可于接到判决书的第二日起十日内，通过本院或直接向天津市第二中级人民法院提出上诉，书面上诉的，应交上诉状正本一份，副本二份。审　判　长　　刘士军人民陪审员　　李　芸人民陪审员　　胡金英二〇一四年四月一日书　记　员　　李　陆 '''
    abstracter = AbstarctTextrank()
    keysentences = abstracter.extract_abstract(text, 1)

    for sent in keysentences:
        print(sent)
    '''
    ('就这起事件来说，如何保障患者和家属的知情权，如何让患者和医生能够多一份实质化的沟通', 1.0)
    ('事情经过究竟如何，曾引起舆论纷纷，而随着时间的推移，更多的反思也留给了我们，只有解决了这起事件中暴露出的一些问题，比如患者的医疗选择权，人们对剖宫产和顺产的认识问题等，这样的悲剧才不会再次发生', 0.9999999860476693)
    ('（原标题：央视独家采访：陕西榆林产妇坠楼事件在场人员还原事情经过）', 0.99999402813924)
    '''

# test()








