本文主要對詞干提取及詞形還原以及最大匹配算法進(jìn)行了介紹和代碼示例,Python實現(xiàn),下面我們一起看看具體內(nèi)容。
自然語言處理中一個很重要的操作就是所謂的stemming和lemmatization,二者非常類似。它們是詞形規(guī)范化的兩類重要方式,都能夠達(dá)到有效歸并詞形的目的,二者既有聯(lián)系也有區(qū)別。
1、詞干提取(stemming)
定義:Stemmingistheprocessforreducinginflected(orsometimesderived)wordstotheirstem,baseorrootform—generallyawrittenwordform.
解釋一下,Stemming是抽取詞的詞干或詞根形式(不一定能夠表達(dá)完整語義)。
NLTK中提供了三種最常用的詞干提取器接口,即Porterstemmer,LancasterStemmer和SnowballStemmer。
PorterStemmer基于Porter詞干提取算法,來看例子
>>> from nltk.stem.porter import PorterStemmer >>> porter_stemmer = PorterStemmer() >>> porter_stemmer.stem(‘maximum') u'maximum' >>> porter_stemmer.stem(‘presumably') u'presum' >>> porter_stemmer.stem(‘multiply') u'multipli' >>> porter_stemmer.stem(‘provision') u'provis' >>> porter_stemmer.stem(‘owed') u'owe'
Lancaster Stemmer 基于Lancaster 詞干提取算法,來看例子
>>> from nltk.stem.lancaster import LancasterStemmer >>> lancaster_stemmer = LancasterStemmer() >>> lancaster_stemmer.stem(‘maximum') ‘maxim' >>> lancaster_stemmer.stem(‘presumably') ‘presum' >>> lancaster_stemmer.stem(‘presumably') ‘presum' >>> lancaster_stemmer.stem(‘multiply') ‘multiply' >>> lancaster_stemmer.stem(‘provision') u'provid' >>> lancaster_stemmer.stem(‘owed') ‘ow'
Snowball Stemmer基于Snowball 詞干提取算法,來看例子
>>> from nltk.stem import SnowballStemmer >>> snowball_stemmer = SnowballStemmer(“english”) >>> snowball_stemmer.stem(‘maximum') u'maximum' >>> snowball_stemmer.stem(‘presumably') u'presum' >>> snowball_stemmer.stem(‘multiply') u'multipli' >>> snowball_stemmer.stem(‘provision') u'provis' >>> snowball_stemmer.stem(‘owed') u'owe'
2、詞形還原(lemmatization)
定義:Lemmatisation(orlemmatization)inlinguistics,istheprocessofgroupingtogetherthedifferentinflectedformsofawordsotheycanbeanalysedasasingleitem.
可見,Lemmatisation是把一個任何形式的語言詞匯還原為一般形式(能表達(dá)完整語義)。相對而言,詞干提取是簡單的輕量級的詞形歸并方式,最后獲得的結(jié)果為詞干,并不一定具有實際意義。詞形還原處理相對復(fù)雜,獲得結(jié)果為詞的原形,能夠承載一定意義,與詞干提取相比,更具有研究和應(yīng)用價值。
我們會在后面給出一個同MaxMatch算法相結(jié)合的更為復(fù)雜的例子。
新聞熱點
疑難解答