某公司自然语言处理算法笔试题
2018-04-02 本文已影响287人
海天一树X
1 请列出几种文本特征提取算法
答:文档频率、信息增益、互信息、X^2统计、TF-IDF
2 简述几种自然语言处理开源工具包
答:LingPipe、FudanNLP、OpenNLP、CRF++、Standord CoreNLP、IKAnalyzer
3 简述无监督和有监督算法的区别
答:
(1)有监督学习:对具有概念标记(分类)的训练样本进行学习,以尽可能对训练样本集外的数据进行标记(分类)预测。这里,所有的标记(分类)是已知的。因此,训练样本的岐义性低。
无监督学习:对没有概念标记(分类)的训练样本进行学习,以发现训练样本集中的结构性知识。这里,所有的标记(分类)是未知的。因此,训练样本的岐义性高。聚类就是典型的无监督学习
(2)有监督学习的样本全部带标记,无监督学习的样本全部不带标记。
PS:部分带标记的是半监督学习
(3)训练集有输入有输出是有监督,包括所有的回归算法分类算法,比如线性回归、决策树、神经网络、KNN、SVM等;训练集只有输入没有输出是无监督,包括所有的聚类算法,比如k-means 、PCA、 GMM等
4 请简述几种熟悉的分类算法
答:kNN,kMeans,决策树,随机森林等
5 以下代码是Java实现中文分词,请简述分词过程
public class SplitChineseCharacter {
public static void main(String[] args) {
String input = "太好了,今天是星期六啊";
new Split(input).start();
}
}
class Split {
private String[] dictionary = {"今天", "是", "星期", "星期六"};
private String input = null;
public Split(String input) {
this.input = input;
}
public void start() {
String temp = null;
System.out.println(this.input.length());
for(int i = 0; i < this.input.length(); i++) {
temp = this.input.substring(i);
if(this.isInDictionay(temp)) {
System.out.println(temp);
this.input = this.input.replace(temp, "");
i = - 1;
}
}
if(null != this.input && !"".equals(this.input)) {
this.input = this.input.substring(0, this.input.length() - 1);
this.start();
}
}
public boolean isInDictionay(String temp) {
for(int i = 0; i < this.dictionary.length; i++) {
if(temp.equals(this.dictionary[i])) {
return true;
}
}
return false;
}
}
运行结果:
星期六
是
今天
更多内容请关注微信公众号
feicuisenlin_12x12.jpg