斯坦福的nlp学习

Stanford NLP tools提供了处理中文的三个工具,分别是分词、Parser

具体参考:

http://nlp.stanford.edu/software/parser-faq.shtml#o

1.中文分词

这个包比较大,运行时候需要的内存也多,因而如果用eclipse运行的时候需要修改虚拟内存空间大小:

运行-》自变量-》VM自变量-》-Xmx800m (最大内存空间800m)

demo

2.依存句法分析

可以参考http://nlp.stanford.edu/software/parser-faq.shtml#o

http://blog.csdn.NET/leeharry/archive/2008/03/06/2153583.aspx

根据输入的训练库不同,可以处理英文,也可以处理中文。输入是分词好的句子,输出词性、句子的语法树(依赖关系)

英文demo(下载的压缩文件中有):

  1. LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz");
  2. lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});
  3. String[] sent = { "This", "is", "an", "easy", "sentence", "." };
  4. Tree parse = (Tree) lp.apply(Arrays.asList(sent));
  5. parse.pennPrint();
  6. System.out.println();
  7. TreebankLanguagePack tlp = new PennTreebankLanguagePack();
  8. GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
  9. GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
  10. Collection tdl = gs.typedDependenciesCollapsed();
  11. System.out.println(tdl);
  12. System.out.println();
  13. TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");
  14. tp.printTree(parse);

中文有些不同:

  1. //LexicalizedParser lp = new LexicalizedParser("englishPCFG.ser.gz");
  2. LexicalizedParser lp = new LexicalizedParser("xinhuaFactored.ser.gz");
  3. //lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});
  4. //    String[] sent = { "This", "is", "an", "easy", "sentence", "." };
  5. String[] sent = { "他", "和", "我", "在",  "学校", "里", "常", "打", "桌球", "。" };
  6. String sentence = "他和我在学校里常打台球。";
  7. Tree parse = (Tree) lp.apply(Arrays.asList(sent));
  8. //Tree parse = (Tree) lp.apply(sentence);
  9. parse.pennPrint();
  10. System.out.println();
  11. /*
  12. TreebankLanguagePack tlp = new PennTreebankLanguagePack();
  13. GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
  14. GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
  15. Collection tdl = gs.typedDependenciesCollapsed();
  16. System.out.println(tdl);
  17. System.out.println();
  18. */
  19. //only for English
  20. //TreePrint tp = new TreePrint("penn,typedDependenciesCollapsed");
  21. //chinese
  22. TreePrint tp = new TreePrint("wordsAndTags,penn,typedDependenciesCollapsed",new ChineseTreebankLanguagePack());
  23. tp.printTree(parse);

然而有些时候我们不是光只要打印出来的语法依赖关系,而是希望得到关于语法树(图),则需要采用如下的程序:

  1. String[] sent = { "他", "和", "我", "在",  "学校", "里", "常", "打", "桌球", "。" };
  2. ParserSentence ps = new ParserSentence();
  3. Tree parse = ps.parserSentence(sent);
  4. parse.pennPrint();
  5. TreebankLanguagePack tlp = new ChineseTreebankLanguagePack();
  6. GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
  7. GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
  8. Collection tdl = gs.typedDependenciesCollapsed();
  9. System.out.println(tdl);
  10. System.out.println();
  11. for(int i = 0;i < tdl.size();i ++)
  12. {
  13. //TypedDependency(GrammaticalRelation reln, TreeGraphNode gov, TreeGraphNode dep)
  14. TypedDependency td = (TypedDependency)tdl.toArray()[i];
  15. System.out.println(td.toString());
  16. }

//采用GrammaticalStructure的方法getGrammaticalRelation(TreeGraphNode gov, TreeGraphNode dep)可以获得两个词的语法依赖关系

时间: 2024-10-08 08:33:49

斯坦福的nlp学习的相关文章

斯坦福大学深度学习与自然语言处理第一讲

我学习自然语言是从Christopher D.Manning的统计自然语言处理基础这本书开始的,很多文本分析也是应用统计方法,或者机器学习的方法,而近年来深度学习逐渐渗入各个领域,其在自然语言处理领域中也取得了令人惊叹的效果,这成功的引起了我的重视,决定学习一下.何其所幸,让我找到了斯坦福大学深度学习与自然语言的课程,深得我心啊,所以打算好好学习一下,鉴于我爱自然语言处理中有相关课程的slides,我就直接复制粘贴了,接下来打算做的工作是对该课程中推荐阅读的部分论文做一些笔记.本人才疏学浅,专业

斯坦福大学深度学习与自然语言处理第二讲

第二讲:简单的词向量表示:word2vec, Glove(Simple Word Vector representations: word2vec, GloVe) 转载请注明出处及保留链接“我爱自然语言处理”:http://www.52nlp.cn 本文链接地址:斯坦福大学深度学习与自然语言处理第二讲:词向量 推荐阅读材料: Paper1:[Distributed Representations of Words and Phrases and their Compositionality]]

Deep Learning 十_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)

前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab2015b,16G内存,2T机械硬盘 实验内容:Exercise:Convolution and Pooling.从2000张64*64的RGB图片(它是the STL10 Dataset的一个子集)中提取特征作为训练数据集,训练softmax分类器,然后从3200张64*64的RGB图片(它是th

Deep Learning九之深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)

前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取彩色特征,这些特征会被用于下一节的练习 理论知识:线性解码器和http://www.cnblogs.com/tornadomeet/archive/2013/04/08/3007435.html 实验基础说明: 1.为什么要用线性解码器,而不用前面用过的栈式自编码器等?即:线性解码器的作用? 这一点,Ng

Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)

前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep learning:二十九(Sparse coding练习) 实验环境:win7, matlab2015b,16G内存,2T机械硬盘 本节实验比较不好理解也不好做,我看很多人最后也没得出好的结果,所以得花时间仔细理解才行. 实验内容:Exercise:Sparse Coding.从10张512*51

Deep Learning 十一_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一步!如果说原始数据的获得,是深度学习中最重要的一步,那么获得原始数据之后对它的预处理更是重要的一部分. 1.数据预处理的方法: ①数据归一化: 简单缩放:对数据的每一个维度的值进行重新调节,使其在 [0,1]或[ − 1,1] 的区间内 逐样本均值消减:在每个样本上减去数据的统计平均值,用于平稳的数

斯坦福大学深度学习与自然语言处理第一讲:引言

斯坦福大学在三月份开设了一门"深度学习与自然语言处理"的课程:CS224d: Deep Learning for Natural Language Processing ,授课老师是青年才俊Richard Socher,他本人是德国人,大学期间涉足自然语言处理,在德国读研时又专攻计算机视觉,之后在斯坦福大学攻读博士学位,拜师NLP领域的巨牛 Chris Manning和Deep Learning 领域的巨牛 Andrew Ng ,其博士论文是< Recursive Deep Le

N-grams模型、停顿词(stopwords)和标准化处理 - NLP学习(2)

在上一节<Tokenization - NLP(1)>的学习中,我们主要学习了如何将一串字符串分割成单独的字符,并且形成一个词汇集(vocabulary),之后我们将形成的词汇集合转换成计算机可以处理的数字信息,以方便我们做进一步文本分析.这篇博客的主题还是我们如何将文本转成成更有用的成分,让我们能从文本当中提取到更多的信息以便作为特征输入到模型中训练,首先会介绍一下N-grams算法,之后会提到停顿词及英文文本常见的标准化处理手段,如大小写的改变.词干提取等(文章中的某些例子会涉及到正则表达

斯坦福CS231n—深度学习与计算机视觉----学习笔记 课时26&amp;&amp;27

课时26 图像分割与注意力模型(上) 语义分割:我们有输入图像和固定的几个图像分类,任务是我们想要输入一个图像,然后我们要标记每个像素所属的标签为固定数据类中的一个 使用卷积神经,网络为每个小区块进行分类,对在区块的中间打上标签,对图像的全部区块分类完毕,我们就可以得到每个像素所对应的标签,这个操作实际上非常耗时,因为一张图片将会被分割非常多的小块. 如果这些神经网络具有相关的结构,通过这个图像金字塔方法的话,这些图像的输出将会有不同的感受野. 语义分割的迭代精化 我们有一个输入图像,他们被分割