-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
579 lines (401 loc) · 46 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>竹杖芒鞋轻胜马,谁怕?</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="From Zero to One">
<meta property="og:type" content="website">
<meta property="og:title" content="竹杖芒鞋轻胜马,谁怕?">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="竹杖芒鞋轻胜马,谁怕?">
<meta property="og:description" content="From Zero to One">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="Zou Jiali">
<meta name="twitter:card" content="summary">
<link rel="alternate" href="/atom.xml" title="竹杖芒鞋轻胜马,谁怕?" type="application/atom+xml">
<link rel="icon" href="/favicon.png">
<link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="/css/style.css">
<meta name="generator" content="Hexo 4.2.0"></head>
<body>
<div id="container">
<div id="wrap">
<header id="header">
<div id="banner"></div>
<div id="header-outer" class="outer">
<div id="header-title" class="inner">
<h1 id="logo-wrap">
<a href="/" id="logo">竹杖芒鞋轻胜马,谁怕?</a>
</h1>
<h2 id="subtitle-wrap">
<a href="/" id="subtitle">一蓑烟雨任平生</a>
</h2>
</div>
<div id="header-inner" class="inner">
<nav id="main-nav">
<a id="main-nav-toggle" class="nav-icon"></a>
<a class="main-nav-link" href="/">Home</a>
<a class="main-nav-link" href="/archives">Archives</a>
</nav>
<nav id="sub-nav">
<a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
<a id="nav-search-btn" class="nav-icon" title="搜索"></a>
</nav>
<div id="search-form-wrap">
<form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit"></button><input type="hidden" name="sitesearch" value="http://yoursite.com"></form>
</div>
</div>
</div>
</header>
<div class="outer">
<section id="main">
<article id="post-NLP:hero2zero" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2020/05/24/NLP%EF%BC%9Ahero2zero/" class="article-date">
<time datetime="2020-05-24T13:36:10.000Z" itemprop="datePublished">2020-05-24</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2020/05/24/NLP%EF%BC%9Ahero2zero/">NLP:zero2hero</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h1 id="Natural-Languge-Processing-zero-to-hero"><a href="#Natural-Languge-Processing-zero-to-hero" class="headerlink" title="Natural Languge Processing: zero to hero"></a>Natural Languge Processing: zero to hero</h1><ul>
<li>NLP系列课程,持更</li>
<li><a href="https://github.com/ZJL0111/one2hero_youtube/tree/master" target="_blank" rel="noopener">项目地址</a></li>
<li>项目包括:<strong>代码注释</strong>和<strong>学习小结</strong></li>
</ul>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2020/05/24/NLP%EF%BC%9Ahero2zero/" data-id="ckal3z5e40000hout02k0ag12" class="article-share-link">Share</a>
<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/NLP%E8%AF%BE%E7%A8%8B/" rel="tag">NLP课程</a></li></ul>
</footer>
</div>
</article>
<article id="post-如何解决90%的NLP问题:分步指南" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2020/05/23/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B390%EF%BC%85%E7%9A%84NLP%E9%97%AE%E9%A2%98%EF%BC%9A%E5%88%86%E6%AD%A5%E6%8C%87%E5%8D%97/" class="article-date">
<time datetime="2020-05-23T09:31:54.000Z" itemprop="datePublished">2020-05-23</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2020/05/23/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B390%EF%BC%85%E7%9A%84NLP%E9%97%AE%E9%A2%98%EF%BC%9A%E5%88%86%E6%AD%A5%E6%8C%87%E5%8D%97/">如何解决90%的NLP问题:分步指南</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h2 id="使用机器学习来理解和利用文本"><a href="#使用机器学习来理解和利用文本" class="headerlink" title="使用机器学习来理解和利用文本"></a>使用机器学习来理解和利用文本</h2><p><em><a href="https://blog.insightdatascience.com/how-to-solve-90-of-nlp-problems-a-step-by-step-guide-fda605278e4e" target="_blank" rel="noopener">点击查看原文</a></em><br><em>翻译校对:邹佳丽</em><br><em>插图没放</em></p>
<h2 id="文字数据无处不在"><a href="#文字数据无处不在" class="headerlink" title="文字数据无处不在"></a>文字数据无处不在</h2><p>无论是一家老牌公司,还是致力于推出一项新服务,都可以利用文本数据来验证、改进和扩展产品的功能。从文本数据中提取含义和学习的科学是被称为自然语言处理(NLP)。</p>
<p>NLP领域每天都有很多新的激动人心的结果出来,且NLP涵盖了非常大的领域。但与数百家公司合作之后,Insight团队发现一些关键的实际应用比其他任何应用要更频繁出现:</p>
<ul>
<li>识别不同的用户/客户群组(例如预测客户流失,生命周期价值,产品偏好)</li>
<li>准确地检测和提取不同类别的反馈(正面和负面评论/意见,提及特定属性,例如衣服的尺寸/合身性……)</li>
<li>根据意图对文本进行分类(例如,请求基本帮助,紧急问题)</li>
</ul>
<p>尽管线上存在许多NLP论文和教程,但我们发现很难找到有关<strong>如何从头开始有效解决这些问题的指南和技巧</strong>。</p>
<h2 id="本文内容"><a href="#本文内容" class="headerlink" title="本文内容"></a>本文内容</h2><p>在每年领导数百个项目并获得全美高层团队的建议之后,我们写了这篇文章来解释如何构建机器学习解决方案来解决上述问题。我们将从<strong>可行的最简单方法</strong>开始,然后转向更细微的解决方案,例如特征工程,词向量和深度学习。阅读本文后,您将知道如何:</p>
<ul>
<li>收集、准备和检查数据</li>
<li>从建立简单的模型开始,并在必要时过渡到深度学习</li>
<li>解释和理解模型,以确保模型实际捕获的是信息而不是噪音</li>
</ul>
<p>这篇文章是一个循序渐进的指南。也可以用作有效标准方法的高级概述。这篇文章还附有一个<a href="https://github.com/hundredblocks/concrete_NLP_tutorial/blob/master/NLP_notebook.ipynb" target="_blank" rel="noopener">交互式笔记本</a>,展示并应用了所有这些技术。请随意运行代码并继续学习!</p>
<h2 id="第一步-收集数据"><a href="#第一步-收集数据" class="headerlink" title="第一步:收集数据"></a>第一步:收集数据</h2><h3 id="示例数据源"><a href="#示例数据源" class="headerlink" title="示例数据源"></a>示例数据源</h3><p>每个机器学习问题都始于数据,例如电子邮件,帖子或推文列表。文本信息的常见来源包括:</p>
<ul>
<li>产品评论(在Amazon,Yelp和各种App Store上)</li>
<li>用户生成的内容(推文,Facebook帖子,StackOverflow问题)</li>
<li>故障排除(客户请求,支持通知单,聊天记录)</li>
</ul>
<h3 id="“社交媒体的灾难”数据集"><a href="#“社交媒体的灾难”数据集" class="headerlink" title="“社交媒体的灾难”数据集"></a>“社交媒体的灾难”数据集</h3><p>在本文中我们将使用<a href="https://appen.com/resources/datasets/" target="_blank" rel="noopener">“社交媒体的灾难”数据集</a>。其中:</p>
<p><em>投稿人查看了10,000多个推文,这些推文通过各种搜索(例如“大火”,“隔离”和“ 隔离”)被筛选出来,然后标记该推文是否指的是真实的灾难事件(而不是带有相关词语的笑话或者电影评论等非灾难性的东西)</em></p>
<p>我们的任务是检测哪些推文与灾难性事件相关,而不是与不相关的主题(例如电影)有关。为什么要做这个?一种潜在的应用是专门将紧急情况通知执法人员,而无视最新的电影评论。这项任务面临的一个特殊挑战是,<strong>两个类都包含用于查找推文的相同搜索词</strong>,因此我们将不得不使用微妙的差异来区分它们。</p>
<p>在本文的其余部分,我们将与灾难有关的推文称为“ 灾难 ”,而将其他任何事物的推文称为“无关”。</p>
<h3 id="标签"><a href="#标签" class="headerlink" title="标签"></a>标签</h3><p>我们已经标记了数据,因此我们知道哪些推文属于哪些类别。正如理查德·索歇(Richard Socher)在概述的那样,相较于尝试优化复杂的无监督方法,查找和标记足够的数据以训练模型通常更快,更简单且更便宜。</p>
<h2 id="第二步-清洗数据"><a href="#第二步-清洗数据" class="headerlink" title="第二步:清洗数据"></a>第二步:清洗数据</h2><p>我们遵循的首要规则是:“你的模型将永远和你的数据一样好。”</p>
<p>数据科学家的一项关键技能就是知道下一步应该对模型还是对数据进行分析。一个好的经验是先查看数据,再进行清洗。干净的数据集将使模型学习有意义的特征,而不会因无关的噪声而过度拟合。</p>
<p>以下是用于数据清洗的列表:(有关更多详细信息,请参见<a href="https://github.com/hundredblocks/concrete_NLP_tutorial/blob/master/NLP_notebook.ipynb" target="_blank" rel="noopener">代码</a>):</p>
<ul>
<li>删除所有不相关的字符,例如任何非字母的数字字符</li>
<li>通过将文本分割成单个的单词,令牌化(<strong>tokenization</strong>)文本</li>
<li>删除不相关的词,例如“@” 或各种网址</li>
<li>将所有字符都转换为小写,以便将“ hello”,“ Hello”和“ HELLO”之类的词视为相同的词</li>
<li>考虑将拼写错误或替代拼写的单词统一为单个表示形式(例如“ cool” /“ kewl” /“ cooool”)</li>
<li>考虑去词缀化(将诸如“ am”,“ are”和“ is”之类的词减少为诸如“ be”之类的通用形式)</li>
</ul>
<p>完成这些步骤并检查其他错误之后,我们就可以开始使用带有标签的干净数据来训练模型了!</p>
<h2 id="第三步-找到良好的数据表示"><a href="#第三步-找到良好的数据表示" class="headerlink" title="第三步: 找到良好的数据表示"></a>第三步: 找到良好的数据表示</h2><p>机器学习模型将数值作为输入。例如,处理图像的模型采用代表每个颜色通道中每个像素强度的矩阵作为输入。</p>
<p>NLP任务的数据集是一个句子列表,因此为了使算法从数据中提取出规律,首先需要找到一种算法可以理解的表示文本的方式,即将句子转为一个数值列表。</p>
<h3 id="独热编码-词袋模型"><a href="#独热编码-词袋模型" class="headerlink" title="独热编码 (词袋模型)"></a>独热编码 (词袋模型)</h3><p>对计算机来说,代表文本的一种自然方法是将每个字符分别编码为数字(例如ASCII)。如果将这种简单的表示形式提供给分类器,则分类器必须仅根据数据从头开始学习单词的结构,这对于大多数数据集是不可能的。故,我们需要使用更高级的方法。</p>
<p>例如,我们可以为数据集中的所有唯一单词构建词汇表,并将唯一索引与词汇表中的每个单词相关联。然后,将每个句子表示为一个列表,该列表与我们词汇表中不同单词的数量一样长。在此列表的每个索引处,我们标记给定单词在所有句子中出现的次数。这被称为<strong>“词袋”模型</strong>,因为它是一种完全忽略了句子中单词顺序的表示形式。<strong>如下图所示</strong></p>
<h3 id="可视化词嵌入"><a href="#可视化词嵌入" class="headerlink" title="可视化词嵌入"></a>可视化词嵌入</h3><p>在“社交媒体的灾难”示例中,词汇表中大约有20,000个单词,这意味着每个句子将被表示为长度为20,000的向量。向量将主要包含0,因为每个句子仅包含我们全部 词汇的很小一部分。</p>
<p>为了查看词嵌入是否能捕获与问题相关的信息(即,这些推文是否与灾难有关),最好将它们可视化并查看类是否分离良好。由于词汇量通常很大,并且无法在20,000个维度上做可视化,因此<strong>PCA</strong>等技术将有助于将数据投影到二维。<strong>如图所示</strong>。</p>
<p>可见这两个类看起来并没有很好地分开,这可能是嵌入的特征,或者仅仅是降维后的特征。为了查看词袋特征是否有用,可以基于它们训练分类器。</p>
<h2 id="第四步-分类"><a href="#第四步-分类" class="headerlink" title="第四步:分类"></a>第四步:分类</h2><p>第一次解决问题时,通常最佳做法是<strong>从可以解决问题的最简单工具开始</strong>。每当涉及到数据分类时,<a href="https://en.wikipedia.org/wiki/Logistic_regression" target="_blank" rel="noopener">Logistic回归</a>因其多功能性和可解释性而广受欢迎。其训练非常简单,结果也可以解释,因为可以直接从模型中提取最重要的系数。</p>
<p>将数据分为用于拟合模型的<strong>训练集</strong>和用于评估其泛化能力的<strong>测试集</strong>。经过训练,分类器的<strong>准确率为75.4%</strong>。不是太寒酸!猜测(“无关”)的类只有57%。但是,即使是75%的精度已能满足需求,<strong>也不应该在不理解模型的情况下发布模型</strong>。</p>
<h2 id="第五步-检查模型"><a href="#第五步-检查模型" class="headerlink" title="第五步: 检查模型"></a>第五步: 检查模型</h2><h3 id="混淆矩阵"><a href="#混淆矩阵" class="headerlink" title="混淆矩阵"></a>混淆矩阵</h3><p>检查模型的第一步是了解模型产生的<strong>错误类型</strong>,以及哪种错误是最不想要的。在示例中,<strong>假阳</strong>是将不相关的推文归类为灾难,<strong>假阴</strong>是将灾难归为不相关的推文。如果优先考虑对每个潜在事件进行响应,则希望降低假阴率;但如果受限于资源,则可以优先考虑较低的假阳率,以减少误报。可视化此信息的一种好方法是使用<strong>Confusion Matrix</strong>,它可以将模型所做的预测与真实标签进行比较。理想情况下,矩阵应该是从左上角到右下角的对角线(模型预测与事实完全吻合)</p>
<p><strong>由图可知</strong>, 分类器产生的假阴要比假阳多(按比例)。换句话说,模型最常见的错误是将灾难归类为不相关。如果假阳会对执法带来高昂的成本,那么这可能是分类器的好的偏差。</p>
<h3 id="解释和理解模型"><a href="#解释和理解模型" class="headerlink" title="解释和理解模型"></a>解释和理解模型</h3><p>为了验证模型并解释其预测,重要的是要选择使用哪个词来做出决策。如果数据有偏差,分类器将在样本数据中做出准确的预测,但模型在现实世界将无法很好地泛化。在此,为灾难和无关的两个类都画出其<strong>最重要的单词</strong>。使用词袋和逻辑回归可以很容易地绘制<strong>单词重要性</strong>,因为排序模型的预测系数即可。</p>
<p><strong>由图可知</strong>分类器正确地选择了某些模式(广岛,屠杀),但在某些毫无意义的词语上出现了<strong>过拟合</strong>(heyoo,x1392)。模型所使用的“词袋”模型处理大量不同的单词,并<strong>平等对待所有单词</strong>。但其中<strong>一些单词非常频繁且只会对预测贡献噪音</strong>。接下来,尝试一种可以体现单词出现频率的表示句子的方法,看一下是否可以从数据中获取更多信号。</p>
<h2 id="第六步-体现词汇结构"><a href="#第六步-体现词汇结构" class="headerlink" title="第六步: 体现词汇结构"></a>第六步: 体现词汇结构</h2><h3 id="TF-IDF"><a href="#TF-IDF" class="headerlink" title="TF-IDF"></a><strong>TF-IDF</strong></h3><p>为了帮助模型更多地关注有意义的单词,可以在“词袋”模型的顶部使用TF-IDF分数(词频,文档逆序频率)。TF-IDF会根据单词在数据集中的稀有程度对单词进行权衡,<strong>过滤掉高频且会增加噪音的单词</strong>。新的词嵌入的PCA投影<strong>如下图所示</strong>。</p>
<p>可以在看到两种颜色之间有了更清晰的区别。这应该会使分类器更容易分离两个组。再让我们看看这是否会带来更好的模型性能。在新的词嵌入上训练另一个Logistic回归,得到<strong>76.2%的准确率</strong>。</p>
<p>略有改善。那么模型是否已开始选择更重要的单词?如果在防止模型“作弊”的同时获得了更好的结果,那可以将此模型视为升级版。</p>
<p>它所选择的单词看起来更加相关!尽管在测试集上的指标仅略有增加,但是我们对模型所使用的词语更有信心了,因此在将模型部署到与客户互动的系统中时会感到更加自在。</p>
<h2 id="第七步-利用语义信息"><a href="#第七步-利用语义信息" class="headerlink" title="第七步:利用语义信息"></a>第七步:利用语义信息</h2><h3 id="Word2Vec"><a href="#Word2Vec" class="headerlink" title="Word2Vec"></a><strong>Word2Vec</strong></h3><p>最新模型设法获得强信号词。但如果真正的部署此模型,则很有可能会遇到以前在训练集中没有的单词。即使上一个模型 (tf-idf) <strong>在训练时遇到过非常相似的单词</strong>,但也将无法准确地对这些推文进行分类。</p>
<p>为解决这个问题,需要捕获<strong>单词的语义含义</strong>,这意味着需要理解诸如“ good”和“ positive”之类的单词比“ apricot”和“ continent”更接近。用来捕获单词含义的工具称为 <strong>Word2Vec</strong>。</p>
<p><strong>使用预训练的词向量</strong><a href="https://arxiv.org/abs/1301.3781" target="_blank" rel="noopener">Word2Vec</a>是一种于获得单词的连续嵌入的技术。它通过阅读大量文本并记住<strong>哪些单词倾向于出现在相似的上下文</strong>中来学习。在足够的数据上训练后,它会为词汇表中的每个单词生成一个300维的向量,意思相似的单词(在向量空间)会离得更近。</p>
<p>该论文的作者公开了一个在非常大的语料库上预训练的模型,我们可以将该模型的一些语义含义用在自己的模型中。与此帖子相关的预训练的词向量可以在<a href="https://github.com/hundredblocks/concrete_NLP_tutorial" target="_blank" rel="noopener">这里</a>找到。</p>
<h3 id="句子级别表示"><a href="#句子级别表示" class="headerlink" title="句子级别表示"></a>句子级别表示</h3><p>为分类器得到一个句子嵌入的快速方法是对句子中所有单词的 Word2Vec 分数求平均。像之前一样,这是一个“词袋”方法,但这次是<strong>丢失掉一些句子的句法信息,同时保留些语义信息</strong>。</p>
<p><strong>下图</strong>是使用先前技术的新嵌入的可视化:</p>
<p>这两组颜色看起来更加分离,看来新嵌入应有助于分类器更好的区分两个类。在第三次训练相同的模型后(逻辑回归),获得了<strong>77.7%的准确性得分</strong>,这是迄今为止最好的结果!是时候检查模型了。</p>
<h3 id="权衡-复杂性和可解释性"><a href="#权衡-复杂性和可解释性" class="headerlink" title="权衡 复杂性和可解释性"></a>权衡 复杂性和可解释性</h3><p>由于嵌入不像之前的模型那样表示为每个单词是一维向量,因此很难确定哪个单词与分类最相关。虽然仍然可以使用Logistic回归的系数,但它们与嵌入的300个维度有关,而不是与每个单词的索引有关。</p>
<p>为了如此低的准确性,失去所有可解释性似乎是一个艰难的权衡。对于更为复杂的模型,可以利用<strong>黑匣子解释器如<a href="https://arxiv.org/abs/1602.04938" target="_blank" rel="noopener">LIME</a></strong>,以获得一些关于分类器是如何工作的洞察。</p>
<h3 id="LIME"><a href="#LIME" class="headerlink" title="LIME"></a>LIME</h3><p>LIME可通过开源软件包在<a href="https://github.com/marcotcr/lime" target="_blank" rel="noopener">Github</a>上使用。黑匣子解释器使用户可以通过扰乱输入(在本例中为从句子中删除单词)并查看预测的变化, 来解释任何分类器<strong>在一个特定样本上</strong>的决策。</p>
<p><strong>上图</strong>是数据集中一些句子的解释。但我们没有时间探索数据集中的数千个样本。我们要做的是在<strong>一个有代表性的测试用例样本上运行LIME</strong>,然后看看哪些词始终是较强的贡献者。使用这种方法,可以像以前的模型那样获得单词的重要性评分,并验证模型的预测。</p>
<p>由<strong>上图</strong>可知, 看起来该模型选择了高度相关的词语,这表明它似乎在做出易于理解的决策。这些词似乎是所有先前模型中最相关的一些词,因此我们更愿意将这个模型部署到生产中。</p>
<h2 id="第八步-使用端到端的方法来利用句法"><a href="#第八步-使用端到端的方法来利用句法" class="headerlink" title="第八步: 使用端到端的方法来利用句法"></a>第八步: 使用端到端的方法来利用句法</h2><p>已经介绍了生成密集句子嵌入的快速有效方法。但通过省略单词的顺序,将丢弃句子的所有句法信息。如果这些方法不能提供足够有效的结果,则可以利用更复杂的模型: <strong>将整个句子作为输入并去预测标签</strong>,而无需构建中间表示。要做到这一点的常用方法是把一个句子视为一个个单独的词向量构成的序列,其中词向量可由 Word2Vec 或最近的 <a href="https://nlp.stanford.edu/projects/glove/" target="_blank" rel="noopener">GloVe</a>和<a href="https://arxiv.org/abs/1708.00107" target="_blank" rel="noopener">CoVe</a> 生成。</p>
<p><a href="https://arxiv.org/abs/1408.5882" target="_blank" rel="noopener">用于句子分类的卷积神经网络</a>训练非常迅速,并且可以作为入门级深度学习架构很好地发挥作用。虽然卷积神经网络(CNN)主要以其在图像数据上的性能而闻名,但它们在与文本有关的任务上也有出色的结果,并且通常比大多数复杂的NLP方法(例如<a href="http://colah.github.io/posts/2015-08-Understanding-LSTMs/" target="_blank" rel="noopener">LSTM</a>和<a href="https://www.tensorflow.org/tutorials" target="_blank" rel="noopener">编码器/解码器体系结构</a>)训练起来要快得多。该模型保留了单词的顺序,并学习到哪些相关单词序列可以用来预测目标类别。与以前的模型相反,它可以区分“亚历克斯吃植物”和“植物吃亚历克斯”之间的区别。</p>
<p>训练该模型不需要比以前的方法做更多的工作(有关详细信息,请参见<a href="https://github.com/hundredblocks/concrete_NLP_tutorial/blob/master/NLP_notebook.ipynb" target="_blank" rel="noopener">代码</a>),并且该模型提供了一个比以前模型好得多的结果,<strong>获得了79.5%的准确性</strong>!与上述模型一样,下一步应该是探索和解释预测,以验证它确实是部署给用户的最佳模型。现在,您应该可以自行解决此问题。</p>
<h3 id="最后说明"><a href="#最后说明" class="headerlink" title="最后说明"></a>最后说明</h3><p>这是我们已经成功使用的方法的简要概述:</p>
<ul>
<li>从快速简单的模型开始</li>
<li>解释其预测</li>
<li>了解它正在犯的那种错误</li>
<li>使用上一步得到的信息来告知下一步,是去处理数据还是尝试更复杂的模型。</li>
</ul>
<p>这些方法被用于理解和利用诸如tweet之类的短文本,但这些思想广泛应用于各种问题。希望对您有所帮助,我们很乐意听到您的评论和问题!请在下面发表评论,或在此处或在<a href="https://twitter.com/EmmanuelAmeisen" target="_blank" rel="noopener">Twitter</a>上与<a href="https://medium.com/@EmmanuelAmeisen" target="_blank" rel="noopener">@EmmanuelAmeisen</a>联系。</p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2020/05/23/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B390%EF%BC%85%E7%9A%84NLP%E9%97%AE%E9%A2%98%EF%BC%9A%E5%88%86%E6%AD%A5%E6%8C%87%E5%8D%97/" data-id="ckal3z5eh0001hout27mof7o1" class="article-share-link">Share</a>
<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/NLP/" rel="tag">NLP</a></li></ul>
</footer>
</div>
</article>
<article id="post-NLP之命名实体识别综述" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2020/05/17/NLP%E4%B9%8B%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93%E8%AF%86%E5%88%AB%E7%BB%BC%E8%BF%B0/" class="article-date">
<time datetime="2020-05-17T07:24:28.000Z" itemprop="datePublished">2020-05-17</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2020/05/17/NLP%E4%B9%8B%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93%E8%AF%86%E5%88%AB%E7%BB%BC%E8%BF%B0/">NLP之命名实体识别简介</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p><em>作者:徐国海</em></p>
<h1 id="1-NER定义"><a href="#1-NER定义" class="headerlink" title="1 NER定义"></a>1 NER定义</h1><p>NER是自然语言处理领域中信息抽取的一个子任务,主要研究<strong>从非结构化文本中识别出特殊含义的词汇或是专有名词</strong>,如人名、地名、机构名等,一般统称为实体 </p>
<h1 id="2-NER分类"><a href="#2-NER分类" class="headerlink" title="2 NER分类"></a>2 NER分类</h1><p>一类是开放域的实体识别,一类是垂直领域的实体识别</p>
<h1 id="3-应用"><a href="#3-应用" class="headerlink" title="3 应用"></a>3 应用</h1><p>信息抽取、基于知识图谱的问答、信息检索等</p>
<h1 id="4-研究过程"><a href="#4-研究过程" class="headerlink" title="4 研究过程"></a>4 研究过程</h1><h2 id="4-1-基于规则和词典(1991-1998)"><a href="#4-1-基于规则和词典(1991-1998)" class="headerlink" title="4.1 基于规则和词典(1991-1998)"></a>4.1 基于规则和词典(1991-1998)</h2><p>手工设计规则并结合词典和知识库完成命名实体识别, 不足:</p>
<ul>
<li>成本高,依赖语言学专家书写规则</li>
<li>可移植性差,若不同领域存在差异难以复用</li>
</ul>
<h2 id="4-2-基于统计机器学习方法(1998-2004)"><a href="#4-2-基于统计机器学习方法(1998-2004)" class="headerlink" title="4.2 基于统计机器学习方法(1998-2004)"></a>4.2 基于统计机器学习方法(1998-2004)</h2><p>主要以有监督的学习方法为主,手工抽取特征后,基于机器学习分类模型比如最大熵模型、支持向量机、条件随机场馆得到识别模型。不足:</p>
<ul>
<li>人工成本高,依赖人工标注语料</li>
<li>依赖手工特征工程,往往费时费力</li>
</ul>
<h2 id="4-3-基于神经网络方法(2015-至今)"><a href="#4-3-基于神经网络方法(2015-至今)" class="headerlink" title="4.3 基于神经网络方法(2015-至今)"></a>4.3 基于神经网络方法(2015-至今)</h2><p>在没有或少量特征工程的前提下,通过神经网络模型自动学习特征,并以端到端的形式训练模型。<a href="https://arxiv.org/abs/1812.09449" target="_blank" rel="noopener">综述文章看这里</a>。不足:</p>
<ul>
<li>人工成本高,依赖人工标注语料(因为<strong>预训练语言模型</strong>得以缓解)</li>
</ul>
<h2 id="5-统一框架"><a href="#5-统一框架" class="headerlink" title="5 统一框架"></a>5 统一框架</h2><p>序列标注任务的统一解决框架</p>
<ul>
<li>输入表示层:<strong>word(Word2Vec,ELmo,BERT), char(CNN-based,RNN-based)</strong></li>
<li>上下文编码层: <strong>CNN, RNN(LSTM), Transformer, attention</strong></li>
<li>输出编码层: <strong>MLP+softmax, CRF</strong></li>
</ul>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2020/05/17/NLP%E4%B9%8B%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93%E8%AF%86%E5%88%AB%E7%BB%BC%E8%BF%B0/" data-id="ckaav5bhc0000vsuthlxl4xr1" class="article-share-link">Share</a>
<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/NER/" rel="tag">NER</a></li></ul>
</footer>
</div>
</article>
<article id="post-为什么nlp没有像c四小龙一样的创业公司" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2020/05/17/%E4%B8%BA%E4%BB%80%E4%B9%88nlp%E6%B2%A1%E6%9C%89%E5%83%8Fc%E5%9B%9B%E5%B0%8F%E9%BE%99%E4%B8%80%E6%A0%B7%E7%9A%84%E5%88%9B%E4%B8%9A%E5%85%AC%E5%8F%B8/" class="article-date">
<time datetime="2020-05-17T02:54:16.000Z" itemprop="datePublished">2020-05-17</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2020/05/17/%E4%B8%BA%E4%BB%80%E4%B9%88nlp%E6%B2%A1%E6%9C%89%E5%83%8Fc%E5%9B%9B%E5%B0%8F%E9%BE%99%E4%B8%80%E6%A0%B7%E7%9A%84%E5%88%9B%E4%B8%9A%E5%85%AC%E5%8F%B8/">为什么nlp没有像cv四小龙一样的创业公司?</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p><em><a href="https://www.zhihu.com/question/353060902" target="_blank" rel="noopener">摘抄自-北冥乘海生</a></em></p>
<p>原因很简单,这两个问题目前解决的程度根本不在一个水平上。目前所有的人工智能方法,都是 <strong>弱人工智能</strong> 方法。换句话说,是给定大量标注的数据,用模型去拟合这些数据,也就是 <strong>凑答案</strong> 。但是对NLP领域来说,这种凑答案的方法,效果大打折扣。为什么呢?</p>
<p>乍看起来,人类的知识来源于6岁以后的学校教育。实际上你想想,一个大学生跟一个文盲也可以顺畅地沟通,这说明他们的 <em>*概念逻辑</em> *在相似的水平上。换句话说,人类大多数用于自然语言理解和推理的概念、逻辑都是来源于学校教育以前某种神奇而潜移默化的积累。</p>
<p>举个例子,有下面两句话,第一句是“爸爸抱不动儿子了,因为他太胖了”,第二句是“爸爸抱不动儿子了,因为他太瘦了”。显然这两句里的他指代对象不同。但是,靠 <strong>字面的逻辑</strong> 是无法分辨出这种区别的,这要靠背后一个庞大的 <strong>常识网络体系</strong>来支撑。然而,由于这些常识太基础了,大家都并不把它当知识看待,也就不会有任何书面的材料,明确地去整理和描述这些常识,所以在自然语言处理所要学习的问题面前,这部分 <strong>常识数据的缺失</strong> 造成了巨大的黑洞。</p>
<p>既然数据都没有,那么根据模型凑答案的方法,从原理上来说是根本行不通的。其实,对于越复杂和专业的领域,比如说医疗,有效的领域语料也就越多,自然语言处理反而越简单。而对于日常聊天骂街这些内容,自然语言处理的困难是极大的,可以说,离我们想象中的图灵测试还有十万八千里。</p>
<p>在NLP领域的问题里,看似困难,实则没有那么困难的是机器翻译。因为机器翻译并不需要深入理解语言内容,大致上只是把词变成另一种语言,然后把语序排对了就行了。因此翻译的应用,比人机对话、文本理解乃至文本生成都要成熟得多。所以,以后遇上声称通过了图灵测试的AI,不要让他背唐诗,也不要让他作微积分,就问他几个家常里短的弱智问题,它十有八九是回答不出来的。</p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2020/05/17/%E4%B8%BA%E4%BB%80%E4%B9%88nlp%E6%B2%A1%E6%9C%89%E5%83%8Fc%E5%9B%9B%E5%B0%8F%E9%BE%99%E4%B8%80%E6%A0%B7%E7%9A%84%E5%88%9B%E4%B8%9A%E5%85%AC%E5%8F%B8/" data-id="ckaah2v2p000008utcez0abs3" class="article-share-link">Share</a>
<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E7%A7%91%E6%99%AE/" rel="tag">科普</a></li></ul>
</footer>
</div>
</article>
<article id="post-NLP工程师做什么?" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2020/05/13/NLP%E5%B7%A5%E7%A8%8B%E5%B8%88%E5%81%9A%E4%BB%80%E4%B9%88%EF%BC%9F/" class="article-date">
<time datetime="2020-05-13T12:37:44.000Z" itemprop="datePublished">2020-05-13</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2020/05/13/NLP%E5%B7%A5%E7%A8%8B%E5%B8%88%E5%81%9A%E4%BB%80%E4%B9%88%EF%BC%9F/">NLP工程师每天做什么?</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p><em><a href="https://www.freelancermap.com/blog/what-does-nlp-engineer-do/" target="_blank" rel="noopener">点击查看原文</a></em><br><em>翻译校对:邹佳丽</em></p>
<p>NLP工程师的职责是帮助计算机处理和分析人类的自然语言。那么,NLP工程师的日常工作有哪些呢?</p>
<h2 id="全文概览"><a href="#全文概览" class="headerlink" title="全文概览"></a>全文概览</h2><ul>
<li>NLP是什么?</li>
<li>工作职责</li>
<li>所需技能</li>
<li>如何成为NLP工程师?</li>
</ul>
<h2 id="1-NLP是什么?"><a href="#1-NLP是什么?" class="headerlink" title="1 NLP是什么?"></a>1 NLP是什么?</h2><p>自然语言处理(NLP)来自计算机科学,信息科学,人工智能和语言学的融合。NLP专注于计算机和人类语言之间的交互。计算机更擅长处理结构化数据集,所以在涉及具有数百种不同语言和方言的人类语言时,就需要一点帮助。这些人类语言都具有自己的一套语法规则、俚语、术语和语法。</p>
<p>你有没有想过Google或Alexa是如何理解你的意思的?就是NLP在发挥作用!因此,NLP工程师要做的就是开发能够处理和分析自然语言的技术。</p>
<h2 id="2NLP工程师的职责有哪些?"><a href="#2NLP工程师的职责有哪些?" class="headerlink" title="2NLP工程师的职责有哪些?"></a>2NLP工程师的职责有哪些?</h2><p>根据所从事的行业类型的不同,担任NLP工程师的职责会有所不同。但,一般来说,NLP工程师主要负责语言理解系统的开发和设计以及有效地使用文本表示技术等。这可能涉及处理语音模式,AI语音识别,自然语言理解和自然语言生成等等。此外,他们使用脚本来分析和处理文本数据,同时测量语言理解的准确性。</p>
<h3 id="自然语言处理工程师的职责:"><a href="#自然语言处理工程师的职责:" class="headerlink" title="自然语言处理工程师的职责:"></a>自然语言处理工程师的职责:</h3><ul>
<li>设计和开发自然语言处理系统</li>
<li>定义用于语言学习的合适数据集</li>
<li>使用有效的文本表示形式将自然语言转换为有用的特征</li>
<li>根据需求开发NLP系统</li>
<li>训练开发的模型并运行评估实验</li>
<li>查找并实施用于具体NLP任务的正确算法和工具</li>
<li>对结果进行统计分析并完善模型</li>
<li>在机器学习领域跟进最新成果</li>
<li>维护NLP库和框架</li>
<li>根据需要实施更改以及分析错误</li>
</ul>
<h2 id="3-NLP工程师需要掌握的技能有?"><a href="#3-NLP工程师需要掌握的技能有?" class="headerlink" title="3 NLP工程师需要掌握的技能有?"></a>3 NLP工程师需要掌握的技能有?</h2><p>对NLP工程师来说,在文本表示、语义提取技术、数据结构和建模等方面对NLP技术有深入的了解是至关重要的。还必须能够有效地设计软件架构。此外,编写健壮且可测试的代码的能力将极大地点亮作为NLP工程师的履历。</p>
<h3 id="NLP工程师必需的技能:"><a href="#NLP工程师必需的技能:" class="headerlink" title="NLP工程师必需的技能:"></a>NLP工程师必需的技能:</h3><ul>
<li>了解文本表示技术,算法基础,统计学基础</li>
<li>机器翻译经验和编译经验</li>
<li>了解机器学习所用的框架和库</li>
<li>熟悉大数据框架– Spark,Hadoop</li>
<li>文本分类和聚类技巧</li>
<li>编程技巧– Python,Java和/或R</li>
<li>强大的解决问题能力</li>
<li>句法和语义解析</li>
<li>了解CI / CD piipelines</li>
<li>较强的沟通能力</li>
</ul>
<h2 id="4-如何成为NLP工程师?"><a href="#4-如何成为NLP工程师?" class="headerlink" title="4 如何成为NLP工程师?"></a>4 如何成为NLP工程师?</h2><p>大量的NLP工程师拥有学术背景。为了成为NLP工程师,建议获得计算机科学,数学,科学,物理学或类似专业的学士学位。确切的入职要求因公司内部角色的性质而异。但是,除了一些软件工程经验之外,还必须具有行业经验并有在大型数据集上进行统计分析的经验。</p>
<p>认证也是在该领域站稳脚跟的好方法。在学习自然语言处理时,以下是一些不错的在线选择:</p>
<ul>
<li><a href="https://online.stanford.edu/courses/cs224n-natural-language-processing-deep-learning" target="_blank" rel="noopener">Standford Online Learning – NLP</a></li>
<li><a href="https://www.pce.uw.edu/certificates/natural-language-technology" target="_blank" rel="noopener">Udacity NLP Nanodegree</a></li>
<li><a href="https://www.udacity.com/course/natural-language-processing-nanodegree--nd892" target="_blank" rel="noopener">PCE Natural Learning Technology Certificate</a></li>
</ul>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2020/05/13/NLP%E5%B7%A5%E7%A8%8B%E5%B8%88%E5%81%9A%E4%BB%80%E4%B9%88%EF%BC%9F/" data-id="cka5fb87i00002sutf7hxcitl" class="article-share-link">Share</a>
<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E7%A7%91%E6%99%AE/" rel="tag">科普</a></li></ul>
</footer>
</div>
</article>
<article id="post-hello-world" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2020/05/13/hello-world/" class="article-date">
<time datetime="2020-05-13T11:46:30.161Z" itemprop="datePublished">2020-05-13</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2020/05/13/hello-world/">Hello World</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="noopener">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="noopener">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="noopener">GitHub</a>.</p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="noopener">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="noopener">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="noopener">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/one-command-deployment.html" target="_blank" rel="noopener">Deployment</a></p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2020/05/13/hello-world/" data-id="cka5airhv0000m0ut37r46xai" class="article-share-link">Share</a>
</footer>
</div>
</article>
</section>
<aside id="sidebar">
<div class="widget-wrap">
<h3 class="widget-title">标签</h3>
<div class="widget">
<ul class="tag-list" itemprop="keywords"><li class="tag-list-item"><a class="tag-list-link" href="/tags/NER/" rel="tag">NER</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/NLP/" rel="tag">NLP</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/NLP%E8%AF%BE%E7%A8%8B/" rel="tag">NLP课程</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/%E7%A7%91%E6%99%AE/" rel="tag">科普</a></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">标签云</h3>
<div class="widget tagcloud">
<a href="/tags/NER/" style="font-size: 10px;">NER</a> <a href="/tags/NLP/" style="font-size: 10px;">NLP</a> <a href="/tags/NLP%E8%AF%BE%E7%A8%8B/" style="font-size: 10px;">NLP课程</a> <a href="/tags/%E7%A7%91%E6%99%AE/" style="font-size: 20px;">科普</a>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">归档</h3>
<div class="widget">
<ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2020/05/">五月 2020</a></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">最新文章</h3>
<div class="widget">
<ul>
<li>
<a href="/2020/05/24/NLP%EF%BC%9Ahero2zero/">NLP:zero2hero</a>
</li>
<li>
<a href="/2020/05/23/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B390%EF%BC%85%E7%9A%84NLP%E9%97%AE%E9%A2%98%EF%BC%9A%E5%88%86%E6%AD%A5%E6%8C%87%E5%8D%97/">如何解决90%的NLP问题:分步指南</a>
</li>
<li>
<a href="/2020/05/17/NLP%E4%B9%8B%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93%E8%AF%86%E5%88%AB%E7%BB%BC%E8%BF%B0/">NLP之命名实体识别简介</a>
</li>
<li>
<a href="/2020/05/17/%E4%B8%BA%E4%BB%80%E4%B9%88nlp%E6%B2%A1%E6%9C%89%E5%83%8Fc%E5%9B%9B%E5%B0%8F%E9%BE%99%E4%B8%80%E6%A0%B7%E7%9A%84%E5%88%9B%E4%B8%9A%E5%85%AC%E5%8F%B8/">为什么nlp没有像cv四小龙一样的创业公司?</a>
</li>
<li>
<a href="/2020/05/13/NLP%E5%B7%A5%E7%A8%8B%E5%B8%88%E5%81%9A%E4%BB%80%E4%B9%88%EF%BC%9F/">NLP工程师每天做什么?</a>
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer id="footer">
<div class="outer">
<div id="footer-info" class="inner">
© 2020 Zou Jiali<br>
Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
</div>
</div>
</footer>
</div>
<nav id="mobile-nav">
<a href="/" class="mobile-nav-link">Home</a>
<a href="/archives" class="mobile-nav-link">Archives</a>
</nav>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script src="/js/script.js"></script>
</div>
</body>
</html>