国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

textrank-jieba 算法復現

imingyu / 768人閱讀

摘要:根據算法的思路,手動復現算法。根據窗口大小,組合共現詞和頻率,頻率代表共現權重。正反雙向共現詞。根據每個詞的權重的迭代公式,采用冒泡排序的方法,將一個詞的所有共現詞的權重代入公式。迭代次,使每個詞的權重收斂。根據權重排序,輸出。

根據jieba textrank算法的思路,手動復現textrank算法。
思路:1.分詞,確定窗口大小。

 2.根據窗口大小,組合共現詞和頻率,頻率代表共現權重。
      trick:正反雙向共現詞。
 3.根據textrank 每個詞的權重的迭代公式,采用冒泡排序的方法,將一個詞的所有共現詞的權重代入公式。
 4.迭代10次,使每個詞的權重收斂。
 5.根據權重排序,輸出top words。
import collections
import sys
import jieba
import jieba.posseg as psg
from operator import itemgetter


class UndirectWeightedGraph:
    d=0.85
    def __init__(self):
        self.edges=collections.defaultdict(list)
    def add_edge(self,start,end,weight):
        self.edges[start].append((start,end,weight))
        self.edges[end].append((end,start,weight))
    def rank(self):
        ws=collections.defaultdict(float)
        outSum=collections.defaultdict(float)

        wsdef=1.0/(len(self.edges) or 1.0)
        for n,elem in self.edges.items():
            outSum[n]=sum([e[2] for e in elem])
            ws[n]=wsdef

        for epoch in range(10):
            for n,elems in self.edges.items():
                s=0
                for elem in elems:
                   s+=elem[2]/outSum[elem[1]]*ws[elem[1]]
                ws[n]=s

        min_rank,max_rank=sys.float_info[0],sys.float_info[3]
        for n,w in ws.items():
            if wmax_rank:
                max_rank=w

        for n,w in ws.items():
            ws[n]=((n-min_rank)/10.0)/((max_rank-min_rank)/10.0)
        return ws

class TextRank(object):
    def __init__(self):
        self.stopwords=[]
        self.pos_filter=[]
        self.span=5
    def pairfilter(self,wp):
        return wp.flag in self.pos_filter and len(wp.word)>=2 and wp.word.lower not in self.stopwords
    def textrank(self,sentence,topk=20):
        uwg=UndirectWeightedGraph()
        words=psg.lcut(sentence)
        wm=collections.defaultdict(int)
        for word_index,wp in enumerate(words):
            if self.pairfilter(wp):
                for index_assit in range(word_index+1,word_index+5):
                    if index_assit>=len(words):
                        break
                    if not self.pairfilter(words[index_assit]):
                        continue
                    wm[(wp,words[index_assit])]+=1
                    # uwg.add_edge(wp.word,words[index_assit].word,1)
        for words_tuple,w in wm.items():
            uwg.add_edge(words_tuple[0],words_tuple[1],w)
        g=uwg.rank()
        g=sorted(g.items(),key=itemgetter(1),reverse=True)
        return g[:topk]



文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41618.html

相關文章

  • 漫話:如何給女朋友解釋滅霸的指響并不是真隨機"消滅"半數宇宙人口的?

    摘要:軟件實現的是偽隨機數。有限狀態機不能產生真正的隨機數的。復聯中,滅霸打了指響之后,復仇者聯盟中存活和死亡的名單其實并不是隨機的。可見,滅霸的指響抹除過程并不是隨機的。綜上,滅霸的指響抹除過程不符合隨機性不可預測性以及不可復現性。showImg(https://user-gold-cdn.xitu.io/2019/5/7/16a91fc63239db4d);周末,陪女朋友去電影院看了《復仇者聯...

    WalkerXu 評論0 收藏0
  • 觀遠AI實戰 | 機器學習系統的工程實踐

    摘要:機器學習作為時下最為火熱的技術之一受到了廣泛的關注。文中給出的個建議都是針對機器學習系統的,沒有包含通用軟件工程里那些單元測試,發布流程等內容,在實踐中這些傳統最佳實踐也同樣非常重要。 圖片描述 「觀遠AI實戰」欄目文章由觀遠數據算法天團傾力打造,觀小編整理編輯。這里將不定期推送關于機器學習,數據挖掘,特征重要性等干貨分享。本文8千多字,約需要16分鐘閱讀時間。 機器學習作為時下最為火...

    codergarden 評論0 收藏0
  • 某查詢企業信息平臺的接口破解記錄

    摘要:此次破解的背景是一個朋友希望定期同步某個公司的工商信息,評估和測試了下。相對比較可能的就是啟寶的接口了。本地實現小結這次的破解啟寶,是一次難得的經驗積累。從全網其他的破解方法,以及自己如何一步一步調試,最終破解出生成算法。這只是一次記錄。 此次破解的背景是:一個朋友希望定期同步某個公司的工商信息,評估和測試了下。相對比較可能的就是啟*寶的接口了。通過一天的努力,終于有了點底了。特做記錄...

    Kosmos 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<