精通Python自然語言處理 3 :形態學
形態學可以定義為使用語素對單詞的構成進行研究,語素是具有意義的最小語言單位。
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詞幹提取演算法組成。
相關文章
- 精通Python自然語言處理 1 :字串操作Python自然語言處理字串
- 精通Python自然語言處理 2 :統計語言建模Python自然語言處理
- 精通Python自然語言處理 4 :詞性標註--單詞識別Python自然語言處理詞性標註
- 牛津大學xDeepMind自然語言處理 第13講 語言模型(3)自然語言處理模型
- Python自然語言處理實戰(3):中文分詞技術Python自然語言處理中文分詞
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- python自然語言處理學習筆記(八)—— 句法分析Python自然語言處理筆記
- 自然語言處理NLP(四)自然語言處理
- 自然語言處理(NLP)概述自然語言處理
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- hanlp自然語言處理包的基本使用--pythonHanLP自然語言處理Python
- 《Python自然語言處理實戰》連結表Python自然語言處理
- Python自然語言處理工具Python自然語言處理
- Python自然語言處理實戰(1):NLP基礎Python自然語言處理
- 如何用Python處理自然語言?(Spacy與Word Embedding)Python
- [譯] 自然語言處理真是有趣!自然語言處理
- 自然語言處理:分詞方法自然語言處理分詞
- 自然語言處理中的遷移學習(下)自然語言處理遷移學習
- 自然語言處理中的遷移學習(上)自然語言處理遷移學習
- 自然語言處理背後的資料科學自然語言處理資料科學
- 機器學習工作坊 - 自然語言處理機器學習自然語言處理
- 使用 Python+spaCy 進行簡易自然語言處理Python自然語言處理
- Python 自然語言處理(基於jieba分詞和NLTK)Python自然語言處理Jieba分詞
- 自然語言處理NLP快速入門自然語言處理
- 配置Hanlp自然語言處理進階HanLP自然語言處理
- 自然語言處理的最佳實踐自然語言處理
- 自然語言處理之jieba分詞自然語言處理Jieba分詞
- 人工智慧 (06) 自然語言處理人工智慧自然語言處理
- 自然語言處理與情緒智慧自然語言處理
- Pytorch系列:(六)自然語言處理NLPPyTorch自然語言處理
- 形態學影像處理
- 中國語文(自然語言處理)作業自然語言處理
- 《NLP漢語自然語言處理原理與實踐》學習四自然語言處理
- 詞!自然語言處理之詞全解和Python實戰!自然語言處理Python
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- 自然語言處理NLP(6)——詞法分析自然語言處理詞法分析
- 自然語言處理怎麼最快入門?自然語言處理
- 深度解析自然語言處理之篇章分析自然語言處理