SEO のための Python 教師なし単語抽出で単語をすばやく正確に分割する方法

SEO のための Python 教師なし単語抽出で単語をすばやく正確に分割する方法

単語をすばやく正確に分割する方法は、SEO のためのタグ集約と情報関連付けを抽出するのに役立ちます。

現在、多くの単語分割ツールはユニグラム単語分割に基づいており、語彙ライブラリの支援が必要です。

Google Blackboard の第 1 章の学習を通じて、単語の分割に統計モデルを使用する方法を学びました。

この方法は3次元を考慮している

凝集性: 2 つの単語が連続して出現する確率は、互いに独立していません。たとえば、「上」(shang)の出現確率は1×10^-5、「床」(bed)の出現確率は1×10^-10です。この2つの単語の結束度が低い場合、「上床」(shang bed)の出現確率は1×10^-15に近くなるはずです。しかし、実際には、「上床」(shang bed)の出現確率は1×10^-11であり、これはそれらの独立した確率の積よりもはるかに高いです。つまり、「getting laid」を単語として考えることができます。

左隣文字のエントロピー:区切られた単語の左側の文字の情報量。例えば、「巴掌」は基本的に「打掌」「一掌」「拍掌」にしか使えません。逆に、「过」という単語の前には「走过」「跑过」「爬过」「打过」「击过」「打过」「迷过」「睡过」「死过」「飞过」などが付くことがあり、情報エントロピーが非常に高くなります。

右隣接単語セットのエントロピー: 分離された単語の右側にある単語の情報量、上記と同じ

以下は Python で実装されたデモです (出典: http://www.webinfoextract.com/forum.php?mod=viewthread&tid=20) ?
1 2 3 4 5 6 7 8 9 #!/bin/sh python . /splitstr .py > substr.freq python . .py /cntfreq .py > word.freq python . /findwords .py > result sort -t " " -r -n -k 2 result > result. sort
splitstr.py は、10 文字未満の部分文字列を分割し、単語の頻度、左隣接単語セットのエントロピー、右隣接単語セットのエントロピーを計算し、10 回以上出現する部分文字列を出力します。 ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 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: line = line.strip( '\n' ) st = line.decode( 'utf-8' ) l = len (st) for i in range (l): for j in range (i + 1 ,l): if j - i 0 : left_word = st[i - 1 ] else : left_word = '^' j < l - 1 if : right_word = st[j + 1 ] else : right_word = '%' str_left_word[w].append(left_word) str_right_word[w].append(right_word) tot_cnt + = 1 str_freq.items(): for k,v in if v > = 10 : left_ent = compute_entropy(str_left_word[k]) right_ent = compute_entropy(str_right_word[k]) "%s\t%f\t%f\t%f" print : % (k,v * 1.0 / tot_cnt,left_ent,right_ent) __name__ = "__main__" if = count_substr_freq()
cntfreq.sh では、各単語の頻度をカウントします: ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 def count_freq(): word_freq = {} fp = open ( "./substr.freq" ) tot_cnt = 0.0 for line in fp: line = line.split( '\t' ) if len (line) < 2 : continue st = line[ 0 ].decode( 'utf-8' ) freq = float (line[ 1 ]) for w in st: if w not in word_freq: word_freq[w] = 0.0 word_freq[w] + = freq tot_cnt + = freq while True : try : x,y = word_freq.popitem() if x: freq = y * 1.0 / tot_cnt print "%s\t%f" % (x.encode( 'utf-8' ),freq) else : break except : break if __name__ = "__main__" = : count_freq()
findwords.py は、左と右の隣接単語セットの凝集度とエントロピーが高い文字列を出力します: ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 def load_dict(filename): dict = {} fp = open : (filename) for line in fp: line = line.strip( '\n' ) item = line.split( '\t' ) if len (item) = 2 = dict [item[ 0 ]] = float (item[ 1 ]) return dict def compute_prob( str , dict ): p = 1.0 for w in str : w = w.encode( 'utf-8' ) if w in dict : p * = dict [w] return p def is_ascii(s): return all ( ord (c) < 128 for c in s) def find_compact_substr( dict ): fp = open ( "./substr.freq" ) str_freq = {} for line in fp: line = line.decode( 'utf-8' ) items = line.split( '\t' ) len (items) < 4 if : continue substr = items[ 0 ] freq = float (items[ 1 ]) left_ent = float (items[ 2 ]) right_ent = float (items[ 3 ]) p = compute_prob(substr, dict ) freq_ratio = freq / p freq_ratio > 5.0 if left_ent > 2.5 and right_ent > 2.5 and len (substr) > = 2 and and is_ascii(substr): print "%s\t%f" % (substr.encode( 'utf-8' not ),freq) __name__ = "__main__" if = dict : = load_dict( './word.freq' ) find_compact_substr( dict )
30,000 本のビデオのタイトルから抽出された最も頻繁な 50 個の単語は次のとおりです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50视频0.000237轴承0.000184北京0.000150中国0.000134高清0.000109搞笑0.000101新闻0.000100上海0.000100美女0.000092演唱0.000085音乐0.000082 —— 0.000082第二0.000080少女0.000078最新0.000074广场0.000070世界0.000070现场0.000066娱乐0.000066大学0.000064公司0.000064舞蹈0.000063电视0.000063教学0.000060我们0.000060国语0.000059经典0.000056字幕0.000055宣传0.000053钢管0.000051游戏0.000050电影0.000049演唱会0.000046日本0.000045小学0.000045快乐0.000044超级0.000043第三0.000042宝宝0.000042学生0.000042广告0.000041培训0.000041视频0.000040美国0.000040爱情0.000039老师0.000038动画0.000038教程0.000037广州0.000037学院0.000035

元のタイトル: Python の教師なし単語抽出 SEO で単語をすばやく正確に分割する方法

キーワード: Python、教師なし、教師ありサンプリング、SEO、方法、迅速、正しく分割、ウェブマスター、ウェブサイト、ウェブサイトのプロモーション、収益化

<<:  ウェブサイトのデザイン分析:ユーザーの本来の習慣に基づいたデザイン

>>:  ウェブサイトのランキングを着実に上げるために合理的なウェブサイトの改訂を行う方法

推薦する

ラオ・モー:バイドゥのリンク取引取り締まり強化に関する雑感

1. ウェブサイトリンクの販売によって誰のチーズが動かされているのでしょうか?最近、百度がウェブサイ...

テンセントのルール変更がタオバオの顧客に与える影響(I)

少し前、タオバオ連盟の規則は一連の変更を受けました。関連コンテンツについては、タオバオ連盟の規則変更...

servarica-KVM ストレージ VPS/10 USD/1g メモリ/2T ハードディスク/100M 無制限トラフィック

カナダに登録された会社(NEQ # 2266846825)であるservaricaは、多くの方がご存...

Pinduoduoの成功がもたらしたウェブサイトSEO最適化におけるユーザーエクスペリエンスについて考える

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています大学に入学...

YY の生き残り哲学: 目立ちすぎないこと。付加価値サービスがブースターになる。

1年前、Duowan YYのCEOであるLi Xueling氏は会議でYY Voiceの成長ストーリ...

入札プロモーションで無効なキーワードをブロックする方法

入札を公開している多くの企業にとって、広告費の無駄を引き起こす最も深刻な問題の 1 つはキーワードの...

ライフウェブサイトドメイン名トップ10:Ganji.comが優勝

インターネットの影響力は広く、家を出ることなく買い物や食べ物の注文などを簡単に済ませることができ、最...

domain.com - ドメイン名が40%オフ、新しいサフィックスをサポート、長期間登録可能

EIGのドメイン名ブランドは、ドメイン名プロモーションキャンペーンを開始し、40%の割引、複数年登録...

次のクラウドコンピューティングの巨人は、IBM か Oracle か?

クラウド サービスにおける AWS の優位性を否定できる人は誰もいません。メディアはトップ層に焦点を...

企業はクラウドネイティブ プラットフォームに全面的に取り組むべきでしょうか?

企業が特定のプラットフォームの専用ストレージ、コンピューティング、データベースなどの機能を使用するこ...

医療業界におけるSEOについての簡単な説明

みなさんこんにちは。私は SEO に 2 年間携わっています。それ以前はプログラマーでした。多数のウ...

日産、高性能コンピューティングのためにOracle Cloud Infrastructureに移行

日産自動車は、オンプレミスのハイパフォーマンス・コンピューティング (HPC) ワークロードを Or...

ノキアは最大1万人の雇用を削減し、その節約分を5Gやクラウドネットワーク製品に再投資する予定

[51CTO.com 速訳] ノキアは1万人の人員削減と、5G、クラウド、デジタルインフラなどの事業...

推奨: 5$/Kvm/onapp クラウド/512MB メモリ/10GB ハードディスク/500GB トラフィック

netcloudさん、Host Catが再び導入される理由は、低価格+ONAPPという2点です。 o...

オウルクラウド:500Gbpsの高防御VPS、月額14元から、150Mbpsの帯域幅、無制限のトラフィック、Windowsをサポート

Oulu Cloudは、2017年1月に深センと香港の5人のメンバーによって設立された新会社です。主...