@@ -11,13 +11,17 @@ tags: []
1111# 自然语言处理简介
1212
1313现在,让我们先从介绍自然语言处理(NLP)开始吧。众所周知,语言是人们日常生 活的核心部分,任何与语言问题相关的工作都会显得非常有意思。希望这本书能带你领略 到 NLP 的风采,并引起学习 NLP 的兴趣。首先,我们需要来了解一下该领域中的一些令 人惊叹的概念,并在工作中实际尝试一些具有挑战性的 NLP 应用。
14+
1415在英语环境中,语言处理研究这一领域通常被简称为 NLP。对语言有深入研究的人通 常被叫作语言学家,而“计算机语言学家”这个专用名词则指的是将计算机科学应用于语 言处理领域的人。因此从本质上来说,一个计算机语言学家应该既有足够的语言理解能力, 同时还可以用其计算机技能来模拟出语言的不同方面。虽然计算机语言学家主要研究的是 语言处理理论,但 NLP 无疑是对计算机语言学的具体应用。
16+
1517NLP 多数情况下指的是计算机上各种大同小异的语言处理应用,以及用 NLP 技术所构 建的实际应用程序。在实践中,NLP 与教孩子学语言的过程非常类似。其大多数任务(如 对单词、语句的理解,形成语法和结构都正确的语句等)对于人类而言都是非常自然的能 力。但对于 NLP 来说,其中有一些任务就必须要转向标识化处理、语块分解、词性标注、 语法解析、机器翻译及语音识别等这些领域的一部分,且这些任务有一大部分还仍是当前 计算机领域中非常棘手的挑战。在本书中,我们将更侧重于讨论 NLP 的实用方面,因此我 们会假设读者在 NLP 上已经有了一些背景知识。所以,读者最好在最低限度上对编程语言 有一点了解,并对 NLP 和语言学有一定的兴趣。
1618
1719目前,NLP 已被认为是业界最为稀缺的技能之一。自大数据 的概念问世之后,我们所面对的主要挑战是——业界需要越来越多不仅能处理结构化数据, 同时也能处理半结构化或非结构化数据的人才。对于我们所生产出来的那些博客、微博、 Facebook 订阅、聊天信息、E-mail 以及网络评论等,各公司都在致力于收集所有不同种类 的数据,以便建立更好的客户针对性,形成有意义的见解。而要想处理所有的这些非结构 化数据源,我们就需要掌握一些 NLP 技能的人员。
20+
1821身处信息时代,我们甚至不能想象生活中没有 Google 会是什么样子。我们会因一些最基本的事情而用到 Siri;我们会需要用垃圾过滤器来过滤垃圾邮件;我们会需要在自己的 Word 文档中用到拼写检查器等。在现实世界中所要用到的 NLP 应用数不胜数。
1922
2023在这里,我们可以再列举一些令人惊叹的 NLP 应用实例。虽然你很可能已经用过它们,
24+
2125但未必知道这些应用是基于 NLP 技术的。
2226
2327• 拼写校正(MS Word/其他编辑器)
@@ -205,7 +209,7 @@ SVM 属于非概率分类器。SVM 会在无限维空间中构造出一组超平
205209
206210事实上,它比较适 合用于在各种数据集的子样本上构建多决策树型的分类器。另外,该森林中的每个树结构都建立 在一个随机的最佳特征子集上。最后,启用这些树结构的动作也找出了所有随机特征子集中的最 佳子集。总而言之,随机森林是当前众多分类算法中表现最佳的算法之一
207211
208- # 示例 饭店评论
212+ # 示例 分析 饭店评论
209213
210214
211215``` python
@@ -233,10 +237,6 @@ dataset.head()
233237 dtypes: int64(1), object(1)
234238 memory usage: 15.7+ KB
235239
236-
237-
238-
239-
240240<div >
241241<style scoped >
242242 .dataframe tbody tr th :only-of-type {
@@ -324,15 +324,10 @@ for i in range(0, 1000):
324324 [nltk_data] /Users/iosdevlog/nltk_data...
325325 [nltk_data] Package stopwords is already up-to-date!
326326
327-
328-
329327``` python
330328corpus[:10 ]
331329```
332330
333-
334-
335-
336331 ['wow love place',
337332 'crust good',
338333 'tasti textur nasti',
@@ -344,9 +339,6 @@ corpus[:10]
344339 'fri great',
345340 'great touch']
346341
347-
348-
349-
350342``` python
351343# Creating the Bag of Words model
352344from sklearn.feature_extraction.text import CountVectorizer
@@ -357,52 +349,34 @@ y = dataset.iloc[:, 1].values
357349X[:5 ]
358350```
359351
360-
361-
362-
363352 array([[0, 0, 0, ..., 0, 0, 0],
364353 [0, 0, 0, ..., 0, 0, 0],
365354 [0, 0, 0, ..., 0, 0, 0],
366355 [0, 0, 0, ..., 0, 0, 0],
367356 [0, 0, 0, ..., 0, 0, 0]], dtype=int64)
368357
369-
370-
371-
372358``` python
373359# Splitting the dataset into the Training set and Test set
374360from sklearn.model_selection import train_test_split
375361X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20 , random_state = 0 )
376362X_train[:5 ]
377363```
378364
379-
380-
381-
382365 array([[0, 0, 0, ..., 0, 0, 0],
383366 [0, 0, 0, ..., 0, 0, 0],
384367 [0, 0, 0, ..., 0, 0, 0],
385368 [0, 0, 0, ..., 0, 0, 0],
386369 [0, 0, 0, ..., 0, 0, 0]], dtype=int64)
387370
388-
389-
390-
391371``` python
392372# Fitting Naive Bayes to the Training set
393373from sklearn.naive_bayes import GaussianNB
394374classifier = GaussianNB()
395375classifier.fit(X_train, y_train)
396376```
397377
398-
399-
400-
401378 GaussianNB(priors=None, var_smoothing=1e-09)
402379
403-
404-
405-
406380``` python
407381# Predicting the Test set results
408382# Looking at first 5 testing data, we can see we predicted the first 3 incorrectly as positive reviews, and last 2 correctly as negative review
@@ -417,26 +391,14 @@ print(cv.inverse_transform(X_test[:5]))
417391 [0 0 0 0 0]
418392 [array(['aw', 'food', 'present'], dtype='<U17'), array(['food', 'servic', 'worst'], dtype='<U17'), array(['dine', 'never', 'place'], dtype='<U17'), array(['disgrac', 'guess', 'mayb', 'night', 'went'], dtype='<U17'), array(['avoid', 'lover', 'mean', 'place', 'sushi'], dtype='<U17')]
419393
420-
421-
422394``` python
423395# Making the Confusion Matrix
424396from sklearn.metrics import confusion_matrix
425397cm = confusion_matrix(y_test, y_pred)
426398cm
427399```
428400
429-
430-
431-
432401 array([[55, 42],
433402 [12, 91]])
434403
435-
436-
437404> 参考资料:《NLTK基础教程》,《机器学习 A-Z》
438-
439-
440- ``` python
441-
442- ```
0 commit comments