精通Python自然語言處理 3 :形態學

CopperDong發表於2018-05-28

    形態學可以定義為使用語素對單詞的構成進行研究,語素是具有意義的最小語言單位。

1、形態學簡介

    語素有兩種型別:詞根和詞綴(字尾、字首、中綴和環綴)。詞根可以獨立存在,詞綴不能以自由的形式存在。

2、理解詞幹提取器

     通過去除單詞中的詞綴以獲取詞幹的過程。為了提高資訊檢索的準確性,搜尋引擎大多會使用詞幹提取來獲取詞幹並將器儲存為索引詞。搜尋引擎使用具有相同含義的同義詞,這可能是一種被稱為異文合併的查詢擴充套件。

>>> from nltk.stem import PorterStemmer
>>> stemmerporter = PorterStemmer()
>>> stemmerporter.stem('working')
u'work'
>>> stemmerporter.stem('happiness')
u'happi'

Lancaster的詞幹提取演算法

>>> from nltk.stem import LancasterStemmer
>>> stemmerlan = LancasterStemmer()
>>> stemmerlan.stem('working')
'work'
>>> stemmerlan.stem('happiness')
u'happy'

RegexpStemmer詞幹提取

>>> from nltk.stem import RegexpStemmer
>>> stemmerregexp = RegexpStemmer('ing')
>>> stemmerregexp.stem('working')
u'work'

3、理解詞性還原

     是一個用不同的詞類將一個單詞轉換為某種形式的過程。

>>> from nltk.stem import WordNetLemmatizer
>>> lemmatizer_output = WordNetLemmatizer()
>>> lemmatizer_output.lemmatize('working')
'working'
>>> lemmatizer_output.lemmatize('working',pos='v')
u'work'
>>> lemmatizer_output.lemmatize('works')
u'work'

詞幹提取和詞形還原之間的區別:

>>> from nltk.stem import PorterStemmer
>>> stemmer_output=PorterStemmer()
>>> stemmer_output.stem('happiness')
u'happi'
>>> from nltk.stem import WordNetLemmatizer
>>> lemmatizer_output=WordNetLemmatizer()
>>> lemmatizer_output.lemmatize('happiness')
'happiness'

4、為非英文語言開發詞幹提取器

    Polyglot是一個用於提供被稱作morfessor模型的軟體

5、形態分析器

    在給定識別符號字尾資訊的前提下,形態分析可以認為是一個從識別符號中獲取語法資訊的過程。形態分析器可以認為是一個程式,負責對給定的輸入識別符號進行形態學分析。它分析給定的識別符號並生成諸如性別、數、詞類等形態資訊作為輸出。程式碼有點問題

# -*- coding: utf-8
import nltk
import enchant
s = enchant.Dict("en_US")
tok = []

def tokenize(st1):
	if not st1:return
	for j in xrange(len(st1), -1, -1):
		if s.check(st1[0:j]):
			tok.append(st1[0:j])
			st1 = st1[j:]
			tokenize(st1)
			break
tokenize("itismyfavouritebook")
print(tok)

6、形態生成器

     是執行形態生成任務的程式。可以認為形態生成是與形態分析相反的任務。這裡,如果給出單詞在數、類別、詞幹等方面的描述,就可檢索出原始的單詞。例如,如果詞根為go,詞性為動詞,時態為現在時,並且如果它與第三人稱和單數主語一起出現。

https://github.com/kmike/pymorphy2  

7、搜尋引擎

  PyStemmer 1.0.1由可用於執行資訊檢索任務和構建搜尋引擎的Snowball詞幹提取演算法組成。


相關文章