(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False)
Extract keywords from sentence using TextRank algorithm.
        Parameter:
            - topK: return how many top keywords. `None` for all possible words.
            - withWeight: if True, return a list of (word, weight);
                          if False, return a list of words.
            - allowPOS: the allowed POS list eg. ['ns', 'n', 'vn', 'v'].
                        if the POS of w is not in this list, it will be filtered.
            - withFlag: if True, return a list of pair(word, weight) like posseg.cut
                        if False, return a list of words
Extract keywords from sentence using TextRank algorithm.
        Parameter:
            - topK: return how many top keywords. `None` for all possible words.
            - withWeight: if True, return a list of (word, weight);
                          if False, return a list of words.
            - allowPOS: the allowed POS list eg. ['ns', 'n', 'vn', 'v'].
                        if the POS of w is not in this list, it will be filtered.
            - withFlag: if True, return a list of pair(word, weight) like posseg.cut
                        if False, return a list of words
Extract keywords from sentence using TextRank algorithm . Parameter : - topK : return how many top keywords . None for all possible words . - withWeight : if True return a list of ( word weight ) ; if False return a list of words . - allowPOS : the allowed POS list eg . [ ns n vn v ] . if the POS of w is not in this list it will be filtered . - withFlag : if True return a list of pair ( word weight ) like posseg . cut if False return a list of words
def textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False):
        """
        Extract keywords from sentence using TextRank algorithm.
        Parameter:
            - topK: return how many top keywords. `None` for all possible words.
            - withWeight: if True, return a list of (word, weight);
                          if False, return a list of words.
            - allowPOS: the allowed POS list eg. ['ns', 'n', 'vn', 'v'].
                        if the POS of w is not in this list, it will be filtered.
            - withFlag: if True, return a list of pair(word, weight) like posseg.cut
                        if False, return a list of words
        """
        self.pos_filt = frozenset(allowPOS)
        g = UndirectWeightedGraph()
        cm = defaultdict(int)
        words = tuple(self.tokenizer.cut(sentence))
        for i, wp in enumerate(words):
            if self.pairfilter(wp):
                for j in xrange(i + 1, i + self.span):
                    if j >= len(words):
                        break
                    if not self.pairfilter(words[j]):
                        continue
                    if allowPOS and withFlag:
                        cm[(wp, words[j])] += 1
                    else:
                        cm[(wp.word, words[j].word)] += 1

        for terms, w in cm.items():
            g.addEdge(terms[0], terms[1], w)
        nodes_rank = g.rank()
        if withWeight:
            tags = sorted(nodes_rank.items(), key=itemgetter(1), reverse=True)
        else:
            tags = sorted(nodes_rank, key=nodes_rank.__getitem__, reverse=True)

        if topK:
            return tags[:topK]
        else:
            return tags
def textrank ( self , sentence , topK = 20 , withWeight = False , allowPOS = ( 'ns' , 'n' , 'vn' , 'v' ) , withFlag = False ) : self . pos_filt = frozenset ( allowPOS ) g = UndirectWeightedGraph ( ) cm = defaultdict ( int ) words = tuple ( self . tokenizer . cut ( sentence ) ) for i , wp in enumerate ( words ) : if self . pairfilter ( wp ) : for j in xrange ( i + 1 , i + self . span ) : if j >= len ( words ) : break if not self . pairfilter ( words [ j ] ) : continue if allowPOS and withFlag : cm [ ( wp , words [ j ] ) ] += 1 else : cm [ ( wp . word , words [ j ] . word ) ] += 1 for terms , w in cm . items ( ) : g . addEdge ( terms [ 0 ] , terms [ 1 ] , w ) nodes_rank = g . rank ( ) if withWeight : tags = sorted ( nodes_rank . items ( ) , key = itemgetter ( 1 ) , reverse = True ) else : tags = sorted ( nodes_rank , key = nodes_rank . __getitem__ , reverse = True ) if topK : return tags [ : topK ] else : return tags