ML:自然语言处理NLP面试题
自然语言处理的三个里程碑:
http://blog.csdn.net/sddamoke/article/details/1419973
两个事实分别为:
一、短语结构语法不能有效地描写自然语言。
二、短语结构规则的覆盖有限。Chomsky 曾提出过这样的假设,认为对一种自然语言来说,其语法规则的数目是有限的,而据此生成的句子数目是无限的。
文中提到的三个里程碑式的进展为:
一、复杂特征集。复杂特征集又叫多重属性描写。
二、词汇主义。语言学界认为,不划分词类就无法将语法结构,即语法“不可能”根据个别的词来写规则;但是人们也注意到任何归类都会丢失个体的某些重要信息。
三、统计语言模型。这也就是语料库方法。
总结:
复杂特征集、合一语法以及词汇主义方法都是在原先理性主义框架(产生式或逻辑推理)框架下做出的重大贡献。尤其词汇主义方法的发展越来越得到语料库和统计学方法的支持,这也是经验主义和理性主义方法的相互融合。他们将成为自然语言处理技术的主流。
自然语言处理:
10k以上 北京 经验1年以下
硕士及以上 全职
职位诱惑 : 绩效奖金多 晋升空间大 优秀团队 半年调薪
-
职位描述
职位描述:
1、承担自然语言处理技术在对话、通用问答、意图理解、知识库加工管理等方向上的应用研究;
2、按照研究与项目计划,与项目组其他成员协同工作,在保证质量的前提下,按时完成研究开发任务。
任职资格:
1.学历要求:毕业于211或985院校、统招硕士以上学历,博士优先;英语4级以上。
2.工作经验: -
1年以上相关领域工作经验,熟悉自然语言处理的各项技术,有对话、通用问答、意图理解研究经验
熟悉C/C++/Python,有算法研究背景经验
英文良好,知识面广、研究能力强,熟悉并掌握自然语言处理在智能人机交互技术领域中的应用。
3.能力要求:
具有强烈的研究兴趣与学习意愿,具备较好的学习能力、问题分析能力、以及问题解决能力;
良好的沟通协调能力和团队合作意识,能够主动总结和分享自己的开发经验。
4.素质要求:
工作踏实,态度积极,能够承受工作压力,能适应严格项目管理;
责任心强,正直诚实,值得信赖。
面试笔试题:
百度校园招聘-自然语言处理工程师
原文链接:http://bishi.cnrencai.com/jingyan/1775.html一、简答题(本题共30分)
1.简述数据库以及线程死锁产生的原理及必要条件,简述如何避免死锁。(10分)
2.请列举面向对象设计的三个基本要素及五种主要设计原则。(10分)
3.多线程如何同步。(10分)
二、算法与程序设计(本题共45分)
1.一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个,即排在偶数的灯泡都被关掉。第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。以此类推,第100轮结束的时候,还有几盏灯泡亮着。编写代码实现。(15分)
2.有一个百万级的字符串集合(worddic),worddict中每个字符串的长度为2~5个汉字。对任意一个查询串(query),定义该query对worddic模糊匹配的条件为:该query内部移除最多6个连续汉字后,与worddic中某个词完全匹配。例如:worddic中有"百度公司"这个字符串,query"北京百度网络技术有限公司",该query即可通过移除6个连续字符('网络技术有限')来匹配"百度公司";
现在需要你设计一个算法来实现这样的功能:
/**@brief: query match function
*@param worddcit:字符串集合,可以在这儿自定义词典的数据结构worddic;
*@param query: query;
*@param querylen: query的长度;
*@param return: 1表示该query可以模糊匹配词典中某个字符串,-1表示其它;
*/
int check_query(const dict *worddict, const char *query, const int querylen);
要求:给出数据结构dict的设计并完成check_query函数(20分)
三、系统设计题(本题共35分)
1.拼写纠错是搜索引擎具备的一个功能,指的是自动分析用户输入的查询(query),检查是否有拼写错误,如果有,则给出正确的拼写建议。例如:把"联想手机"输错为"联想手机"。这时候搜索引擎一般会给出提示"您要找的是不是:联想手机"。
一般来说,拼写纠错主要包括了两个重要的步骤:一是识别用户输入的错误的词语;二是把错误的词语修改成正确的词语。
问题:1)在中文中,常见的错误输入是同音不同字:例如,"苹果"输错为"平果";在英文中,常见的错误输入时拼写错误,如"latest"错输为"latst"。针对以上两种在中文和英文输入中的错误,请分别给出一种解决方案。
2)用户输入的查询,常常还包含一些上下文的信息(如,"平果手机什么时候发布"),如何利用这些上下文改进纠错的效果?
百度2015校园招聘 自然语言处理工程师笔试
原文链接:http://blog.csdn.net/shymi1991/article/details/39432775
一、简答
1. new 和 malloc的区别。
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。
4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存
2. hash 冲突及解决办法。
关键字值不同的元素可能会映象到哈希表的同一地址上就会发生哈希冲突。解决办法:
1)开放定址法:当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地查找,直到找到给定
的关键字,或者碰到一个开放的地址(即该地址单元为空)为止(若要插入,在探查到开放的地址,则可将待插入的新结点存人该地址单元)。查找时探查到开放的 地址则表明表中无待查的关键字,即查找失败。
2) 再哈希法:同时构造多个不同的哈希函数。
3)链地址法:将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。
4)建立公共溢出区:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一律填入溢出表。
二、编程
1. 实现归并排序。
2. 二叉树的S型遍历。
第一层从左到右,第二层从左到右,第三层从左到右……
3. 20亿url的存在一个文本中,一个url占一行,其中有重复,统计出url的频率。
三、系统设计
1.自然语言处理中的前向匹配常被用于分词。如
遥远的古巴比伦
前向匹配分词结果为
遥远的|古巴|比伦
前向匹配分词结果为:
遥|远的|古|巴比伦
要求写出前向匹配的接口及实现方法。
- 总结:
- 就摘抄这么多了,反正也做不完!