日记大全

日记大全 > 句子大全

如何开始学习自然语言处理

句子大全 2018-07-04 15:49:40
相关推荐

这篇文章我将分享我自己学习NLP的经验,没有接触过任何CS相关的正式培训。我所有的正规教育都是在电气工程方面。所以,我们开始吧。

在字符串算法方面有一个坚实的基础。这一步甚至在任何真正的NLP开始之前。你可以选择任何语言,但Python是很好的入门工具。

这里列出了一些需要了解的好的字符串算法。a) 字符串操作--反转、切分、双指针操作,如反转字符串中的所有元音b) 检查重合体、变形体等--充分掌握哈希表,了解常数查询的作用。c) 寻找另一个字符串中的子字符串--例如,寻找DNA序列中重复出现的10个遗传核苷酸。哈希表在这里再次发挥了作用。这些Leetcode问题对我很有帮助。学习正则表达式。它们很难入门,而且看起来很奇怪。但是一旦开始学习,就非常容易上手。它们遵循一个我喜欢的逻辑结构。上边课程关于正则表达式的课程对我很有帮助。

在这里要学习的东西有:向前看,向后看,替换一个字符,在一个词的字符之间创建空格,寻找模式等。是时候进行NLP了! 符号化、词干化、POS标记、词法化等等。这里有很多概念,但标记化是开始任何NLP任务的关键。现在你想把标记化为单字、大字还是更多?这是要根据你所构建的内容来考虑的问题。大多数问题是将句子标记为单字(unigrams)。Python有很好的API来完成这些任务。ML的时间--ML的基础知识可以从Andrew Ng的Coursera课程中挑选。对于Python来说,scikit-learn和nltk是被普遍推荐的。nltk原生支持Naive Bayes,但性能并不出色。对我来说,真正有用的是使用SklearnClassifier类,它将scikit-learn的算法,如Logistic Regression和SVC等,包装到nltk中。这是一个很好的入门教程。他对ML的其他方面也有很好的教程。我开始使用Naive Bayes进行一些文本分类,然后转到更好的Logistic SGD。

学习评估指标——非常重要,但经常被忽视。混淆矩阵、精确度、召回率、F分数、ROC曲线、真阳性率和假阳性率之间的权衡。如果你正在使用ML--使用交叉验证和学习曲线的评估管道。过度拟合、欠拟合、偏差与方差的权衡都适用于此。Andrew Ng在他的Coursera课程的第6周中再次对此做了很好的说明。是时候进行深度学习了吗?在所有的步骤之后,如果你认为你的分类器有非常高的偏差,而且你需要更多的复杂性--这时你需要DL。如果你发现你有高的方差,你也许应该寻找更多的训练数据,而不是直接尝试DL。DL对于需要高度非线性特征空间的非常具体的任务来说是非常有用的,Keras在这方面真的很好。递归神经网络在基于文本的深度学习中特别常见。对于大多数情况,基于scikit-learn的正常算法应该是不错的。

主题建模、词嵌入、使用LSTM、GRU等进行翻译。这是最近得到大量关注的领域。对逻辑回归和我们为什么需要非线性激活函数有很好的理解,梯度消失的问题,ReLU如何帮助解决这些问题都是这个领域的先决条件。在这一领域仍然非常新--有很多东西需要学习!互联网上的内容数量可能非常多,让人吃不消--随着文章不断谈论复杂方程的高级深度学习,似乎很难真正知道发生了什么。但通过这些步骤,我意识到基础知识非常重要。简单的真正理解ML实际如何工作的第一原则。一个模型实际上是如何建模的。为什么我们需要sigmoid等等,这些都很有帮助。

这是个漫长的旅程,但很值得。

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新