天然语言处理的三个里程碑:
html
http://blog.csdn.net/sddamoke/article/details/1419973面试
1、短语结构语法不能有效地描写天然语言。
算法
2、短语结构规则的覆盖有限。Chomsky 曾提出过这样的假设,认为对一种天然语言来讲,其语法规则的数目是有限的,而据今生成的句子数目是无限的。数据库
1、复杂特征集。复杂特征集又叫多重属性描写。
编程
2、词汇主义。语言学界认为,不划分词类就没法将语法结构,即语法“不可能”根据个别的词来写规则;可是人们也注意到任何归类都会丢失个体的某些重要信息。
网络
3、统计语言模型。这也就是语料库方法。数据结构
总结:
多线程
复杂特征集、合一语法以及词汇主义方法都是在原先理性主义框架(产生式或逻辑推理)框架下作出的重大贡献。尤为词汇主义方法的发展愈来愈获得语料库和统计学方法的支持,这也是经验主义和理性主义方法的相互融合。他们将成为天然语言处理技术的主流。
框架
天然语言处理:
函数
10k以上 北京 经验1年如下 硕士及以上 全职
职位诱惑 : 绩效奖金多 晋升空间大 优秀团队 半年调薪
职位描述:
一、承担天然语言处理技术在对话、通用问答、意图理解、知识库加工管理等方向上的应用研究;
二、按照研究与项目计划,与项目组其余成员协同工做,在保证质量的前提下,按时完成研究开发任务。
任职资格:
1.学历要求:毕业于211或985院校、统招硕士以上学历,博士优先;英语4级以上。
2.工做经验:
1年以上相关领域工做经验,熟悉天然语言处理的各项技术,有对话、通用问答、意图理解研究经验
熟悉C/C++/Python,有算法研究背景经验
英文良好,知识面广、研究能力强,熟悉并掌握天然语言处理在智能人机交互技术领域中的应用。
3.能力要求:
具备强烈的研究兴趣与学习意愿,具有较好的学习能力、问题分析能力、以及问题解决能力;
良好的沟通协调能力和团队合做意识,可以主动总结和分享本身的开发经验。
4.素质要求:
工做踏实,态度积极,可以承受工做压力,能适应严格项目管理;
责任心强,正直诚实,值得信赖。
面试笔试题:
1、简答题(本题共30分)
1.简述数据库以及线程死锁产生的原理及必要条件,简述如何避免死锁。(10分)
2.请列举面向对象设计的三个基本要素及五种主要设计原则。(10分)
3.多线程如何同步。(10分)
2、算法与程序设计(本题共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分)
3、系统设计题(本题共35分)
1.拼写纠错是搜索引擎具有的一个功能,指的是自动分析用户输入的查询(query),检查是否有拼写错误,若是有,则给出正确的拼写建议。例如:把"联想手机"输错为"联想手机"。这时候搜索引擎通常会给出提示"您要找的是否是:联想手机"。
通常来讲,拼写纠错主要包括了两个重要的步骤:一是识别用户输入的错误的词语;二是把错误的词语修改为正确的词语。
问题:1)在中文中,常见的错误输入是同音不一样字:例如,"苹果"输错为"平果";在英文中,常见的错误输入时拼写错误,如"latest"错输为"latst"。针对以上两种在中文和英文输入中的错误,请分别给出一种解决方案。
2)用户输入的查询,经常还包含一些上下文的信息(如,"平果手机何时发布"),如何利用这些上下文改进纠错的效果?
原文连接:http://blog.csdn.net/shymi1991/article/details/39432775
1、简答
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)创建公共溢出区:将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的元素,一概填入溢出表。
2、编程
1. 实现归并排序。
2. 二叉树的S型遍历。
第一层从左到右,第二层从左到右,第三层从左到右……
3. 20亿url的存在一个文本中,一个url占一行,其中有重复,统计出url的频率。
3、系统设计
1.天然语言处理中的前向匹配常被用于分词。如
遥远的古巴比伦
前向匹配分词结果为
遥远的|古巴|比伦
前向匹配分词结果为:
遥|远的|古|巴比伦
要求写出前向匹配的接口及实现方法。