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)

 

上一篇:对采集的游记进行数据分析


下一篇:中文文本预处理之结巴分词及特征化