日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java分词取词_中文自动分词技术

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java分词取词_中文自动分词技术 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、什么是自動分詞技術(shù)

在搜索中,我們常把搜索項作為一個句子提取出來當(dāng)做特征項,如果提取出來的是英文,那么單詞和單詞之間用空格將句子拆分。而在中文文本中,詞與詞之間沒有天然的分隔符,中文詞匯大多是由兩個或兩個以上的漢字組成的,并且語句是連續(xù)書寫的。這就要求在對中文文本進行自動分析前,先將整句切割成小的詞匯單元,即中文分詞。用具體的例子來說明,就是如何把“我的爸爸是李剛”這樣連續(xù)書寫的語句切分為“我”、“的”、“爸爸”、“是”、“李剛”這五個詞匯單元。

2、自動分詞技術(shù)的重要性

對索引網(wǎng)頁庫信息進行預(yù)處理包括網(wǎng)頁分析和建立倒排文件索引兩個部分。文檔由被稱作特征相的索引詞(詞或者字)組成,網(wǎng)頁分析是將一個文檔表示為特征項的過程。中文自動分詞則是建立網(wǎng)頁分析的前提。在檢索和文檔分類系統(tǒng)中,自動分詞系統(tǒng)的速度直接影響整個系統(tǒng)的效率。

3、中文自動分詞常用算法

現(xiàn)在自動分詞算法分為三類:基于詞典的機械匹配的分詞方法、基于理解的分詞方法和基于統(tǒng)計的分詞方法。

4、算法介紹:自動分詞的基本方法有:基于字符串匹配的分詞方法和基于統(tǒng)計的分詞方法。

1)??????? 基于字符串匹配的分詞方法

這種方法又稱為機械分詞方法,它是按照一定的策略將待分析的漢字串與一個充分大的詞典中的詞條進行匹配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。

按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大或最長和最小或最短匹配;按照是否與詞性標(biāo)注過程相結(jié)合,又可以分為單純分詞方法和分詞與標(biāo)注相結(jié)合的一體化方法。常用的幾種機械分詞方法如下:

l? 正向最大匹配

l? 逆向最大匹配

l? 最少切分

還可以將上述各種方法相互結(jié)合,例如,可以將正向最大匹配方法和逆向最大匹配方法相結(jié)合起來構(gòu)成雙向匹配法。由于漢字單詞成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現(xiàn)象也較少。統(tǒng)計結(jié)果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。

對于機械分詞方法,可以建立一個一般的模型,形式地為ASM(d,a,m),即Automatic Segmentation Model。其中,d:匹配方向,+表示正向,-表示逆向;a:每次匹配失敗增加或減少字串長度,+為增字,-為減字;m:最大或最小匹配標(biāo)志,+為最大匹配,-為最小匹配。

例如,ASM(+,-,+)就是正向減字最大匹配法,ASM(-,-,+)就是逆向減字最大匹配法。

2)??????? 基于統(tǒng)計的分詞方法

從形式上看,詞是穩(wěn)定的字的組合,因此在上下文中,相鄰的字同時出現(xiàn)的次數(shù)越多,就越有可能構(gòu)成一個詞。因此與字相鄰共現(xiàn)得頻率或概率能夠較好的反映成詞的可行度。可以對預(yù)料中相鄰共現(xiàn)的各個字的組合的頻率進行統(tǒng)計,計算它們的互現(xiàn)信息。計算漢字X和Y的互現(xiàn)信息公式為M(X,Y)=lg(P(X,Y)/P(X)P(Y))其中,P(X,Y)是漢字X,Y的相鄰共現(xiàn)概率,P(X)、P(Y)分別是X,Y在語料中出現(xiàn)的頻率。互現(xiàn)信息體現(xiàn)了漢字之間結(jié)合的關(guān)系的緊密程度。當(dāng)緊密程度高于某一個閾值時,便可認為此字組可能構(gòu)成了一個詞。這種方法只需對語料中的字組頻度進行統(tǒng)計,不需要切分詞典,因而又叫做無詞典分詞法或統(tǒng)計取詞方法。但這種方法也有一定的局限性,會經(jīng)常抽出一些共現(xiàn)頻度高、但并不是詞的常用詞組,例如,“這一”、“之一”、“有的”、“我的”、“許多的”等,并且對常用詞的識別精度差,時空開銷大。實際應(yīng)用的統(tǒng)計分詞系統(tǒng)都要使用一部基本的分詞詞典進行串匹配分詞,同時使用統(tǒng)計方法識別一些新的詞,即將串頻統(tǒng)計和串匹配結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點,有利用了無詞典分詞結(jié)合上下文識別生詞、自動消除歧義的優(yōu)點。

5、正向減字最大匹配法

正向減字最大匹配法切分的過程是從自然語言的中文語句中提取出設(shè)定的長度字串,與詞典比較,如果在詞典中,就算一個有意義的詞串,并用分隔符分割輸出,否則縮短字串,再詞典中重新查找。

算法要求為:

輸入:中文詞典,待切分的文本d,d中有若干被標(biāo)點符號分割的句子s1,設(shè)定的最大詞長Maxlen。

輸出:每個句子s1被切成若干長度不超過Maxlen的字符串,并用分隔符分開,記為s2,所有s2的連接構(gòu)成d切分之后的文本。

該算法的思想是:事先將網(wǎng)頁預(yù)處理成每行是一個句子的純文本格式。從d中逐句提取,對于每個句子s1從左向右以Maxlen為界選出候選字串W,如果W在詞典中,處理下一個長為Maxlen的候選字段;否則,將W最右邊一個字去掉,繼續(xù)與詞典比較;s1切分完之后,構(gòu)成詞的字符串或者此時W已經(jīng)為單字,用分割符隔開輸出給s2。從s1中減去W,繼續(xù)處理后續(xù)的字串。S1處理結(jié)束,取T中的下一個句子賦給s1,重復(fù)前述步驟,直到整篇文本d都切分完畢。

考慮到詞典的條目較多,而且每切一個詞都要比較,采用STL中的map容器作為存儲詞典的數(shù)據(jù)結(jié)構(gòu)。Map容器采用的數(shù)據(jù)結(jié)構(gòu)是“紅黑樹”。“紅黑樹”是一種較常用的查找效率較高的平衡二叉搜索樹。在實際應(yīng)用中可以采用hash表數(shù)據(jù)結(jié)構(gòu)存儲獲得更快速的查找。

算法的主程序流程如下圖1所示,分詞程序如圖2所示。其中Maxlen是一個經(jīng)驗值,通常設(shè)為8個字節(jié),Maxlen過小,長詞會被切斷;過長,又會導(dǎo)致切分效率低。

圖1

6、算法分析結(jié)論

中文自動分詞的實現(xiàn)為Web文檔挖掘研究以及中文信息處理提供了可能,使得人們能夠在這個基礎(chǔ)上進行更加深入的研究。本文利用visual C++開發(fā)工具實現(xiàn)了中文自動分詞算法,通過實驗可知在算法中逆向匹配算法精度要求高,速度要快。

代碼

Void SegmentAFile(T) //對文件進行分詞處理的函數(shù)

1 While(getASentenceFromFile(T,s1)) //循環(huán)讀入文件中的每一行

2 s2=CutWord(s1) //調(diào)用句子分詞處理函數(shù)

3 OutputSetence(s2) //將分詞結(jié)果寫入目標(biāo)文件

String CutWord(s1)

4 Preprocess(s1) //跳過非漢字部分字符串

5 While(s1!=””) //如果輸入不為空

6 W=s1.sustr(0,Maxlen) //取等于最大詞長的候選詞

7 While(length(w)>1)

8 If(FindInRBTree(W)=false)//如果不是詞并且不是單字

9 Then W=W-1 //將W最右邊一個字去掉

10 s2=W+”/” //將找到的詞用分隔符分開

11 s1=s1-W //去掉找到的詞,繼續(xù)分析

12 Return s2

7、算法分析

設(shè)文本文件含有句子的數(shù)目為m,句子的平均長度為k,詞典的條目為n。實際中m和k遠遠小于n,整個算法復(fù)雜度中起決定作用的步驟在于n相關(guān)的語句。

行1,O(m)? 行2,O(klg n)? 行3,O(1)? 行4,O(1)

行5,O(k)? 行6,O(1)? 行7,O(1)? 行8,O(lg n)

行9,O(1)? 行10,O(1) 行11,O(1) 行12, O(1)

整個算法的時間復(fù)雜度為O(mk lg n)。

總結(jié)

以上是生活随笔為你收集整理的java分词取词_中文自动分词技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。