NLP天然語言處理

NLP組成部分
天然語言理解NLU
將給定的天然語言輸入映射爲有用的表示。
分析語言的不一樣方面。

天然語言生成NLG
文字規劃 - 這包括從知識庫中檢索相關內容。
句子規劃 - 這包括選擇所需的單詞,造成有意義的短語,設定句子的語氣。
文本實現 - 這是將句子計劃映射到句子結構。


NLP術語
音韻 - 這是系統地組織聲音的研究。
形態 - 這是建設從原始的有意義的單位的話的研究。
語素 - 它是語言中意義的原始單位。
語法 - 它是指安排單詞來表達一個句子。 它還涉及肯定單詞在句子和短語中的結構做用。
語義 - 它涉及單詞的含義以及如何將單詞組合成有意義的短語和句子。
語用學 - 它處理在不一樣狀況下使用和理解句子以及句子的解釋如何受到影響。
話語 - 它處理前面的句子如何影響下一句話的解釋。
世界知識 - 它包括關於世界的通常知識。

NLP步驟
詞彙分析
它涉及識別和分析單詞的結構。 語言的詞彙表示語言中的單詞和短語的集合。 詞法分析將整個txt塊分紅段落,句子和單詞。
句法分析(解析)
它涉及分析句子中的單詞,語法和安排單詞的方式,以顯示單詞之間的關係。「The school goes to boy」等句子被英語句法分析器拒絕。
語義分析
它從文本中提取確切含義或字典含義。 文本被檢查是否有意義。 它經過映射任務域中的語法結構和對象來完成。語義分析器忽視諸如「熱冰淇淋」之類的句子。
話語整合
任何句子的含義都取決於在它以前的句子的含義。 此外,它也帶來了緊接着的後續句子的含義。
語用分析
在此期間,所說的從新解釋了它的實際意義。 它涉及推導須要真實世界知識的語言方面。

塊化
import nltk

sentence=[("a","DT"),("clever","JJ"),("fox","NN"),("was","VBP"), ("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]
grammar = "NP:{<DT>?<JJ>*<NN>}"

parser_chunking = nltk.RegexpParser(grammar)#定義解析器解析語法
parser_chunking.parse(sentence).draw()#解析句子並繪樹狀圖





預測給定句子類別
from sklearn.datasets import fetch_20newsgroups
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer

#定義分類圖
category_map = {'talk.religion.misc':'Religion','rec.autos':'Autos' , 'rec.sport.hockey':'Hockey',
'sci.electronics':'Electronics', 'sci.space': 'Space'}

#建立訓練集
training_data = fetch_20newsgroups(subset = 'train',categories = category_map.keys(), shuffle = True, random_state = 5)

#建立向量計數器並提取術語計數
vectorizer_count = CountVectorizer()
train_tc = vectorizer_count.fit_transform(training_data.data)
print("\nDimensions of training data:", train_tc.shape)

#建立tf-idf轉換器
tfidf = TfidfTransformer()
train_tfidf = tfidf.fit_transform(train_tc)

#建立測試數據
input_data = [
   'Discovery was a space shuttle',
   'Hindu, Christian, Sikh all are religions',
   'We must have to drive safely',
   'Puck is a disk made of rubber',
   'Television, Microwave, Refrigrated all uses electricity'
]

classifier = MultinomialNB().fit(train_tfidf, training_data.target)#訓練一個Multinomial樸素貝葉斯分類器
input_tc = vectorizer_count.transform(input_data)#向量計數器轉轉輸入數據
input_tfidf = tfidf.transform(input_tc)#tf-idf轉換器轉換矢量化數據
predictions = classifier.predict(input_tfidf)

for sent, category in zip(input_data, predictions):
     print('\nInput Data:', sent, '\n Category:', \
           category_map[training_data.target_names[category]])

result
Dimensions of training data: (2755, 39297)

Input Data: Discovery was a space shuttle 
 Category: Space

Input Data: Hindu, Christian, Sikh all are religions 
 Category: Religion

Input Data: We must have to drive safely 
 Category: Autos

Input Data: Puck is a disk made of rubber 
 Category: Hockey

Input Data: Television, Microwave, Refrigrated all uses electricity 
 Category: Electronics



口語詞的識別
import speech_recognition as sr

recording = sr.Recognizer()

with sr.Microphone() as source:
    recording.adjust_for_ambient_noise(source)
    print("please say something")
    audio = recording.listen(source)

try:
    print("you said:\n" + recording.recognize_google(audio))
except Exception as e:
    print(e)
相關文章
相關標籤/搜索