最近のキーワードを見つけるために、私はフォーラムに投稿することができます推薦システムを作る会社は、その後、私は言葉をjieba I、私は戻って、週末に見えたとしましょう、私は良い感じが、また、特定の原則について学ぶために
まず、正規表現、記事の内容セグメンテーション、文のアレイを形成するが、これはよりよく理解されています
次いで、構築文有向非巡回グラフ(DAG)
デフget_DAG(自己、文): self.check_initialized() DAY = {} N = LEN(文章) のために、K にはxrange(N): tmplist = [] I = K FRAG = 文[K] 、一方は IがN < と FRAG で self.FREQ: #に単語検索語の位置から各単語の IF self.FREQ [FRAG]: tmplist.append(I) #単語はにDAGに追加する場合 のI + 1 =。 FRAG =文[K:私は+ 1 ] IF ませんtmplist。 tmplist.append(K) #DAG所有する添加言葉、場合 = DAG [K]はtmplist 返さない DAGを
- 文中の各単語を分析するために、スタートの右側から、文を見て[K:I + 1]単語はデフォルトの辞書、一般的に使用される言葉(単語の一部を保存するための辞書が、重量であります0)とその重量。もしそうであれば、辞書の右ワードが0に等しくない場合、私はtmplistを入れます、そして私+ = 1、次のサイクル、そうでない場合は単語に進み、その単語の次の単語の位置を見つけるために、停止し、次いでKを移動させる、ようにK = K + 1
- 例えば、このような文章がある:「私は朝陽区、海淀区から移動」、11文字の合計
- <クラスの辞書 '>:{0:[0]、1 [1]、2:[2、3、4]、3:上記の計算により、辞書を得た[3、4]、4:[ 4]、5 [5、6]、6 [6]、7 [7]、8:8、9、10]、9:[9] 10:それぞれを表す[10]}、辞書キー文字列内の単語の位置は、例えば、0は、「私は」は「から」は、そのような対応する2- [2,3,4]として配列への各キーに相当するが、これが表す:「海」(2 )/ '海淀'(2-3)/ '海淀区'(2-4)、3つの文字列をすることができた単語
- このように、我々はすべての単語の位置に入ることができます
最大確率の単語の位置に選出
デフCALC(自己、文、DAG、ルート): N = LEN(文) 経路[N] = (0、0) logtotal = ログ(self.total)#一定値 のための IDX にはxrange(N - 1、-1、-1 ):背位から分析 経路[IDX] = MAX((ログ(self.FREQ.get(文[IDX:X + 1])又は 1) - logtotal +ルート[X + 1] [0]、X)のためのx における DAG [IDX] )
- センテンス内のすべての単語を、単語内で最大確率の候補の位置を計算します
- 実施例2:それぞれ[2,3,4] 2/3/4計算式:(単語の確率)ログ - +次の単語の単語の確率に一定
- 一般的な単語のすべての辞書の前に使用または保存された単語の確率は(独自の辞書を定義することができます)、次の単語の確率はサイクルで計算された言葉に、私たちは、終わりから次のサイクルとして結果を計算しますパラメータは、私たちは言葉にセグメンテーションに最大確率の位置を見つけました
- 単語高い確率に次の単語が、我々はより正確なセグメンテーションを行うので、なぜ?それの単語の次の単語の確率に追加し、より多くの可能性が高いが、それは左2つの適切な言葉ではなく、言葉に切断されます高い確率、及び権利は言葉ではありません
上記のように、右側の括弧内の青い円の一部は、2のように、単語の位置を示し、図4は、単語2-4、この単語の高い確率を示すに、我々は「海淀区」を切断し、右側のブラケットであります
スライスプロセスは、そのようなものです
- 当初から、各単語の位置に対応する位置を探して、取り出し
- サイクルを開始する位置の次の単語の位置にジャンプ
このように、我々は得ることができます:0/1 / 2-4 / 5/6/7 / 8-10
具体的に:/ A /へのI /海淀区/から/移動/朝陽区
これまでのところ、全体のプロセスは終わりました
しかし、公式うーんアルゴリズムのデフォルトがあり、私が話すことはありません、この時間は、次の時間分解を聞いてください