在nlp中常用的算法都有哪些

词向量方面有有word2vec,tf-idf,glove等序列标注方面有hmm,crf等常用的算法,也可和神经网络结合使用,可用于解决分词,词性识别,命名实体识别,关键词识别等问题!关键词提取方面可以用textrank,lda等分类方面(包括意图识别和情感识别等)传统的机器学习算法和神经网络都是可以的。

工业界中NLP(自然语言处理)算法工程师的核心竞争力是什么

问题的解决能力问题的解决能力大部分入门的算法都容易把精力集中在模型上,无论是理论还是实践,但是却背离了算法本身所依托的背景。作为工程师而非科研人员,其核心价值在于解决问题而非研究模型,当一个问题能使用简单的规则策略去解决的时候,我们并不应该使用训练时间长、结果不可控、效果风险不明确的模型作为解决方案。

举例子,客服机器人大家都知道,对于算法而言可能就会开始看文本生成、对话机器人的知识了,但是实质上,一个“触发词-回答”的词典就能达到初版上线要求。命名实体识别在很多场景其实没有标注数据,模型根本无用武之地,语言模板规则、词典最大逆向匹配都是很好的方法,不必纠结于模型。另一方面,解决问题的能力还要体现在逆境上,数据不全、数据质量不高、缺乏训练数据的时候,你要提出你的解决方案,尤其是在新项目下,这种场景很常见,能开天辟地的往往是高手,你具备这些能力才能够进一步进阶,除了研究模型本身,多想想类似“万一有XXX情况,这个方法还是否可行,不可行怎么办。

记住,用户对实现方法的高端低端是没有任何感知的,老板也是。模型的优化能力算法工程师的工作看着很简单,问题一来加模型调结构上线。但问题是,如果模型效果不好,你该怎么办?换一个模型,调参?基本也是差不多的效果,大家看论文其实可以看到,在论文里模型的提升基本不会超过10个点对吧,所以换模型只能存在于微调中。

那你就没辙了?这就是体现算法工程师优势的能力所在。你可以:看看数据质量、数据量怎么样要不要提升。看看特征是否足够表征个体。标注是否正确。模型特性是否符合问题(例如RNN和CNN的适用场景)等等。尤其是在NLP领域,整体非常黑盒,整个模型的流程相对固定,基本没有什么干预措施,所以你的选择会变得更少,如何能进一步提升结果,(新增人工特征、优化数据集、优化模型等)这个需要的是你的智慧和经验了。

顺风局谁都会打,逆风局如何化腐朽为神奇才是高手该体现的能力。工程能力这个概念有点模糊,简单举几个例子吧:* 你的算法耗时多少,是否具备多线程的能力。(例如一般而言RNN系列模型的耗时都偏长)* 算法如何部署,在线部分特征怎么构建和传入。* 你写的算法复杂度多少,有没有优化空间。(例如用Trie树代替便利词表实现检索功能)模型的更新是热更新还是需要重启服务,生效时长等。


文章TAG:算法  nlp  
没有了