1. NLP工程师的职责和工作内容
注:以下五个问题难度递增
- 分类问题:文本分类、情感分析(二分类和多分类);
- 匹配问题:检索与某句话类似的话,或者与它相关的回答。如kaggle的quora question pairs比赛;
- 翻译问题:文本翻译;
- 结构化预测:将一段文本转化为结构化的输出序列,如将文本中的词进行词性标注,语法树生成;
- 人机对话:建模为马尔科夫决策过程,当前要采取的动作和上一个状态和动作有关,代表性的系统是多轮人机对话系统,如何根据当前用户的话和最近的上下文信息进行回复。(PNN、人机对话)
2. NLP工程师的技能树
- 机器学习常用算法(必须):
- 深度学习(必须):搞清楚原理,如RNN及其变种
- 词向量表示方式:one-hot、BoW、n-gram、TF-IDF、word2vec、sentence2vector
- 文本分析:包括分词tokenize、停用词stopwords、关键词提取、意图识别、词性标注POS-Taging(标注名词、动词、形容词等)、命名实体识别named entity rocignition(标注人名、地名、时间、机构名等)、依存句法分析(找主谓宾,构造依赖树)。可以参考jieba,NLTK,gensim
- 多轮对话:如何实现?
- 首先对用户的输入进行分类(专业话题or闲聊话题),根据分类结果不同匹配不同的库,然后向用户返回不同的结果,根据MDP实现多轮对话,见rasa项目
- 知识图谱:用于搜索、闲聊
3. NLP面试常见问题
- 机器学习问题
LR、SVM(推导及原理)、树模型(xgboost推导及原理)、集成学习(原理和区别) - 深度学习(重点)
CNN、RNN、LSTM、GRU、过拟合、dropout原理、梯度消失梯度爆炸、BN、SGD、Adam - 其他(重点)
- word2vec:两种训练方式(skip-gram和cbow)(重点)
- 为什么用哈夫曼树做优化
- textrank(用户关键词提取)
- LDA(用于关键词提取)
- 余弦相似度(用于文本匹配,精确度较高)
- simhash(更加适合于文本比较长的匹配)
- elasticsearch(搜索引擎数据库,可以加快搜索匹配过程)