一、分詞功能介紹
分詞模塊對于搜索的重要性不言而喻。例如,沒(méi)有分詞時(shí),搜索“和服”會(huì )出現“產(chǎn)品和服務(wù)”,搜索“海爾”會(huì )出現“海爾德”,搜索“華為”會(huì )出現“清華為何”。所以有必要給文本增加詞的邊界信息以提高檢索精確度。
獵兔全球首家推出支持Lucene的準確可用的中文分詞模塊。
二、執行方法
可以在命令行執行分詞測試:
>java "-Ddic.dir=D:/lg/work/SSeg/Dic" -classpath D:\JAVA\lib\lucene-1.4.jar;D:\JAVA\lib\seg.jar test.seg.result.CnTokenizer
其中系統參數dic.dir指定數據文件路徑,如:
"-Ddic.dir=D:/lg/work/SSeg/Dic"
或者編寫(xiě)一個(gè)用于測試的Jsp頁(yè)面。
三、調用接口
seg.result.CnTokenizer,該類(lèi)繼承org.apache.lucene.analysis.Tokenizer。
一個(gè)簡(jiǎn)單的使用例子是:
import java.io.Reader;
import java.util.Set;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.LowerCaseFilter;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.TokenStream;
/**
* @author luogang
*
*/
public class CnAnalyzer extends Analyzer {
//~ Static fields/initializers ---------------------------------------------
/**
* An array containing some Chinese words that are not usually
* useful for searching.
*/
private static String[] stopWords = {
"www","的","和","與","時(shí)","在",
"是","被","所","那","這","有",
"將","會(huì )","為","對","了","過(guò)",
"去"};
//~ Instance fields --------------------------------------------------------
/** stop word list */
private Set stopSet;
//~ Constructors -----------------------------------------------------------
/**
* Builds an analyzer which removes words in STOP_WORDS.
*/
public CnAnalyzer() {
stopSet = StopFilter.makeStopSet(stopWords);
}
/**
* Builds an analyzer which removes words in the provided array.
*
* @param stopWords stop word array
*/
public CnAnalyzer(String[] stopWords) {
stopSet = StopFilter.makeStopSet(stopWords);
}
//~ Methods ----------------------------------------------------------------
/**
* get token stream from input
*
* @param fieldName lucene field name
* @param reader input reader
*
* @return TokenStream
*/
public final TokenStream tokenStream(String fieldName, Reader reader) {
//注意:這里的CnTokenizer是獵兔自己開(kāi)發(fā)的,非free的
TokenStream result = new CnTokenizer(reader);
return new StopFilter(result, stopSet);
}
}
四、輸出結果介紹
輸出結果中的詞性標注代碼說(shuō)明如下:
代碼 | 名稱(chēng) | 幫助記憶的詮釋 |
Ag | 形語(yǔ)素 | 形容詞性語(yǔ)素。形容詞代碼為a,語(yǔ)素代碼g前面置以A。 |
a | 形容詞 | 取英語(yǔ)形容詞adjective的第1個(gè)字母。 |
ad | 副形詞 | 直接作狀語(yǔ)的形容詞。形容詞代碼a和副詞代碼d并在一起。 |
an | 名形詞 | 具有名詞功能的形容詞。形容詞代碼a和名詞代碼n并在一起。 |
b | 區別詞 | 取漢字“別”的聲母。 |
c | 連詞 | 取英語(yǔ)連詞conjunction的第1個(gè)字母。 |
Dg | 副語(yǔ)素 | 副詞性語(yǔ)素。副詞代碼為d,語(yǔ)素代碼g前面置以D。 |
d | 副詞 | 取adverb的第2個(gè)字母,因其第1個(gè)字母已用于形容詞。 |
e | 嘆詞 | 取英語(yǔ)嘆詞exclamation的第1個(gè)字母。 |
f
| 方位詞 | 取漢字“方” |
g
| 語(yǔ)素
| 絕大多數語(yǔ)素都能作為合成詞的“詞根”,取漢字“根”的聲母。 |
h
| 前接成分 | 取英語(yǔ)head的第1個(gè)字母。 |
i
| 成語(yǔ) | 取英語(yǔ)成語(yǔ)idiom的第1個(gè)字母。 |
j
| 簡(jiǎn)稱(chēng)略語(yǔ) | 取漢字“簡(jiǎn)”的聲母。 |
k
| 后接成分 |
|
l | 習用語(yǔ) | 習用語(yǔ)尚未成為成語(yǔ),有點(diǎn)“臨時(shí)性”,取“臨”的聲母。 |
m
| 數詞 | 取英語(yǔ)numeral的第3個(gè)字母,n,u已有他用。 |
Ng | 名語(yǔ)素 | 名詞性語(yǔ)素。名詞代碼為n,語(yǔ)素代碼g前面置以N。 |
n
| 名詞 | 取英語(yǔ)名詞noun的第1個(gè)字母。 |
nr | 人名 | 名詞代碼n和“人(ren)”的聲母并在一起。 |
ns
| 地名 | 名詞代碼n和處所詞代碼s并在一起。 |
nt
| 機構團體 | “團”的聲母為t,名詞代碼n和t并在一起。 |
nz | 其他專(zhuān)名 | “專(zhuān)”的聲母的第1個(gè)字母為z,名詞代碼n和z并在一起。 |
o
| 擬聲詞 | 取英語(yǔ)擬聲詞onomatopoeia的第1個(gè)字母。 |
p | 介詞 | 取英語(yǔ)介詞prepositional的第1個(gè)字母。 |
q
| 量詞
| 取英語(yǔ)quantity的第1個(gè)字母。 |
r | 代詞 | 取英語(yǔ)代詞pronoun的第2個(gè)字母,因p已用于介詞。 |
s | 處所詞 | 取英語(yǔ)space的第1個(gè)字母。 |
Tg | 時(shí)語(yǔ)素 | 時(shí)間詞性語(yǔ)素。時(shí)間詞代碼為t,在語(yǔ)素的代碼g前面置以T。 |
t | 時(shí)間詞 | 取英語(yǔ)time的第1個(gè)字母。 |
u | 助詞 | 取英語(yǔ)助詞auxiliary |
Vg
| 動(dòng)語(yǔ)素 | 動(dòng)詞性語(yǔ)素。動(dòng)詞代碼為v。在語(yǔ)素的代碼g前面置以V。 |
v
| 動(dòng)詞 | 取英語(yǔ)動(dòng)詞verb的第一個(gè)字母。 |
vd | 副動(dòng)詞 | 直接作狀語(yǔ)的動(dòng)詞。動(dòng)詞和副詞的代碼并在一起。 |
vn | 名動(dòng)詞 | 指具有名詞功能的動(dòng)詞。動(dòng)詞和名詞的代碼并在一起。 |
w | 標點(diǎn)符號 |
|
x | 非語(yǔ)素字 | 非語(yǔ)素字只是一個(gè)符號,字母x通常用于代表未知數、符號。 |
y
| 語(yǔ)氣詞 | 取漢字“語(yǔ)”的聲母。 |
z | 狀態(tài)詞 | 取漢字“狀”的聲母的前一個(gè)字母。 |
五、分詞效果
搜索“美的”,我們的結果是前22條全部是與“美的”品牌相關(guān)的新聞,百度的結果是前4條是相關(guān)的,中搜的結果是前10條中有4條是相關(guān)的。
聯(lián)系客服