HMM最大匹配分詞演算法(Python)
正向最大匹配演算法是我國最早提出的解決中文分詞問題的演算法,因其簡單易操作,至今仍作為機器分詞的粗分演算法,在今天看來,這種演算法的準確率遠不夠高,無法達到令人滿意的要求。這只是一次練習。
待切分文字是:
我和你共同創造美好的新生活
詞典:
共同,創造,美好,的,新,生活
預期分詞效果:
我 和 你 共同 創造 美好 的 新 生活
# Python 3.4.3
lexicon = ('共同','創造','美好','的','新','生活') # 為了方便,詞典直接寫在程式裡。
wordSeg = [] # 新建列表存放切分好的詞
maxWordLen = 3 # 最大詞長設為3
with open('test.txt','r', encoding='utf-8') as src:
sentence = src.read()
sentenceLen = len(sentence)
wordLen = min(maxWordLen, sentenceLen)
startPoint = 0
while startPoint < sentenceLen: # 從第一個字元迴圈到最後一個字元
matched = False # 假設找不到匹配的詞
for i in range(maxWordLen, 0 , -1): # 從最大詞長3遞減到1
string = sentence[startPoint:startPoint+i] # 取startPoint開始到startPoint+i-1的切片
if string in lexicon:
wordSeg.append(string)
matched = True
break
if not matched: # 假如在詞典中找不到匹配
i = 1
wordSeg.append(sentence[startPoint]) # 全部切分為單字詞
startPoint += i
with open('WordSeg.txt', 'w', encoding='utf-8') as des:
for word in wordSeg:
des.write(word+' ')
分詞成果:
我 和 你 共同 創造 美好 的 新 生活
召回率:100%
正確率:100%
文章受到了” Blueliner,fighting!!!“的啟發,表示感謝。
Blueliner,fighting!!!的《中文分詞演算法之最大正向匹配演算法(Python版)》
[文章連結]
相關推薦
HMM最大匹配分詞演算法(Python)
正向最大匹配演算法是我國最早提出的解決中文分詞問題的演算法,因其簡單易操作,至今仍作為機器分詞的粗分演算法,在今天看來,這種演算法的準確率遠不夠高,無法達到令人滿意的要求。這只是一次練習。 待切分
淺談分詞演算法(4)基於字的分詞方法(CRF)
目錄 前言 目錄 條件隨機場(conditional random field CRF) 核心點 線性鏈條件隨機場 簡化形式 CRF分詞 CRF VS HMM 程式碼實現 訓練程式碼 實驗結果 參考文獻
UVA1349(帶權二分圖最大匹配 --> KM算法模板)
amp slack == 還需要 構造 有一個 using lac str UVA1349 題意:給定一些有向帶權邊,求出把這些邊構造成一個個環,總權值最小 解法: 對於帶權的二分圖的匹配問題可以用通過KM算法求解。 要求最大權匹配就是初始化g[i][j]為0,直接跑就可以
HDU2444(二分圖的最大匹配+染色法判斷二分圖)
HDU2444 n=200,邊要開到1e5才能過。。。。。。 #include<iostream> #include<cstdio> #include<cstring> #include<queue> #
最大似然估計演算法(極大似然估計演算法)
寫的很通俗易懂……. 最大似然估計提供了一種給定觀察資料來評估模型引數的方法,即:“模型已定,引數未知”。簡單而言,假設我們要統計全國人口的身高,首先假設這個身高服從服從正態分佈,但是該分佈的均值與方差未知。我們沒有人力與物力去統計全國每個人的身高,但是可以通
最大流的基本演算法(ff演算法&&dinic演算法&&push-rebeal演算法)poj1273
最大流的基本概念有以下幾點: 1.殘存網路:即為一條管道被佔用了一部分流量之後所剩下的流量。在網路流中,圖被看為一個有向圖,殘存流量向量相加後永遠不變。這一點有點像基爾霍夫定律。 2.在找到一個流之後,仍然存在的從源點
求解二分圖的最大匹配的匈牙利演算法---POJ 1325 Machine Schedule
【基本概念】 二分圖:簡單來說,如果圖中點可以被分為兩組,並且使得所有邊都跨越組的邊界,則這就是一個二分圖。準確地說:把一個圖的頂點劃分為兩個不相交集 U 和V ,使得每一條邊都分別連線U、V中的
Spark 大資料中文分詞統計 (一) 開發環境搭建
幾年前搞BI專案時就聽說過大資料技術,當時也買了書,可惜沒有認真去學。幾年5月份 開始,報名參加王家林老師的大資料蘑菇雲行動,才算真正開始學習Spark,學習大資料技術。 網上很多Spark的例子都是經典的WordCount exam
NLP之CRF分詞訓練(六)
分鐘 -c data ++ del 控制 rdquo 進制 文本 分三步1、先分詞2、做BEMS標註,同時做詞性標註3、訓練模型 1、對語料進行分詞 拿到測試部的語料或者其他渠道的語料,先對語料進行分詞,我剛剛開始是用NS分詞的,等CRF模型訓練好後
【機器學習基本理論】詳解最大似然估計(MLE)、最大後驗概率估計(MAP),以及貝葉斯公式的理解
總結 ora 二次 判斷 天都 特性 以及 解釋 意思 【機器學習基本理論】詳解最大似然估計(MLE)、最大後驗概率估計(MAP),以及貝葉斯公式的理解 https://mp.csdn.net/postedit/81664644 最大似然估計(Maximum lik
51Nod 1052 - 最大M子段和(DP)
題目連結 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1052 【題目描述】 N個整陣列成的序列a[1],a[2],a[3],…,a[n],將這N個數劃分為互不相交的M個子段,並且這M個子段的和是最大的。如果
lucene英文分詞器(StandarAnalyzer)中會被忽略的詞(stopWords)
使用Lucene進行索引查詢時發現有一部分詞會被分詞器直接忽略掉了,被忽略的分詞稱為stopWords,在英文中通常是一些語氣助詞或者無法表達明確含義的詞。 在定義含有stopWords分詞器的時候都會指定stopWords,如果沒有指定可以引用預設的stop
詳解最大似然估計(MLE)、最大後驗概率估計(MAP),以及貝葉斯公式的理解
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id=
最大似然估計(MLE)、最大後驗概率估計(MAP)以及貝葉斯學派和頻率學派
前言 frequentist statistics:模型引數是未知的定值,觀測是隨機變數;思想是觀測數量趨近於無窮大+真實分佈屬於模型族中->引數的點估計趨近真實值;代表是極大似然估計MLE;不依賴先驗。 Bayesian statistics:模型引數是隨機變數,
(C語言實現)磁碟排程——最短尋道優先演算法(SSTF)
一、設計目的: 加深對請求磁碟排程管理實現原理的理解,掌握磁碟排程演算法中的最短尋道優先演算法。二、設計內容通過程式設計實現磁碟排程中最短尋道優先演算法。設定開始磁軌號尋道範圍,依據起始掃描磁軌號和最大磁軌號數,隨機產生要進行尋道的磁軌號序列。選擇磁碟排程演算法,顯示
機器學習演算法-K最近鄰從原理到實現(Python)
本來這篇文章是5月份寫的,今天修改了一下內容,就成今天發表的了,CSDN這是出BUG了還是什麼改規則了。。。 引文:決策樹和基於規則的分類器都是積極學習方法(eager learner)的例子,因為一旦訓練資料可用,他們就開始學習從輸入屬性到類標號的對映模型。
最大似然估計法(MLE)
最大似然估計(Maximum Likelihood Estimation),是一種統計方法,它用來求一個樣本集的相關概率密度函式的引數。最大似然估計中取樣需滿足一個很重要的假設,就是所有的取樣都是獨立同分布的。 一、最大似然估計法的基本思想 最大似然估計法的思想
最短增廣路演算法(SAP)基本模板JAVA
SAP基本思路: 準備好兩個陣列 vis[i]和pre[i], 1)vis[i]用來標記節點i是否被訪問過,2)pre[i]用來記錄節點i的前驅節點,(用來記錄發現的增廣路) 準備好兩個陣列g[i][j]和map[i][j], 1)g[i][j]代表殘餘網
中文分詞系列(一) 雙陣列Tire樹(DART)詳解
雙陣列Tire樹是Tire樹的升級版,Tire取自英文Retrieval中的一部分,即檢索樹,又稱作字典樹或者鍵樹。下面簡單介紹一下Tire樹。 1.1 Tire樹 Trie是一種高效的索引方法,它實際上是一種確定有限自動機(DFA),在樹的結構中,每一個結點對應一個DFA狀態,每一個從父結點指向子結點