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)