DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁SEO優化 >> SEO優化集錦 >> Python無監督抽詞
Python無監督抽詞
編輯:SEO優化集錦     

如何快速正確分詞,對於SEO來說,是提取tags聚合,信息關聯的好幫手。

目前很多分詞工具都是基於一元的分詞法,需要詞庫來輔助。

通過對Google黑板報第一章的學習,如何利用統計模型進行分詞。

本方法考慮了3個維度:

凝聚程度:兩個字連續出現的概率並不是各自獨立的程度。例如“上”出現的概率是1×10^-5,”床”出現的概率是1×10^-10,如果這兩個字的凝聚程度低,則”上床”出現的概率應該和1×10^-15接近,但是事實上”上床”出現的概率在1×10^-11次方,遠高於各自獨立概率之積。所以我們可以認為“上床”是一個詞。

左鄰字聚合熵:分出的詞左邊一個字的信息量,比如”巴掌”,基本只能用於”打巴掌”,“一巴掌”,“拍巴掌”,反之”過去”這個詞,前面可以用“走過去”,“跑過去”,“爬過去”,“打過去”,“混過去”,“睡過去”,“死過去”,“飛過去”等等,信息熵就非常高。

右鄰字聚合熵:分出的詞右邊一個詞的信息量,同上。

下面是一個利用Python實現的demo(轉自:http://www.webinfoextract.com/forum.php?mod=viewthread&tid=20)

#!/bin/sh
 
python ./splitstr.py > substr.freq
 
python ./cntfreq.py > word.freq
 
python ./findwords.py > result
 
sort -t"    " -r -n -k 2 result > result.sort

splitstr.py,切分出字數在10以內的子字符串,計算詞頻,左鄰字集合熵,右鄰字集合熵,並輸出出現10次以上的子字符串:

import math
 
def compute_entropy(word_list):
        wdict={}
        tot_cnt=0
        for w in word_list:
                if w not in wdict:
                        wdict[w] = 0
                wdict[w] += 1
                tot_cnt+=1
        ent=0.0
        for k,v in wdict.items():
                p=1.0*v/tot_cnt
                ent -= p * math.log(p)
        return ent
 
def count_substr_freq():
        fp = open("./video.corpus")
        str_freq={}
        str_left_word={}
        str_right_word={}
        tot_cnt=0
        for line in fp:
  &nbs

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved